summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore7
-rw-r--r--COPYRIGHT.txt35
-rw-r--r--ISSUE_TEMPLATE.md2
-rw-r--r--SConstruct45
-rw-r--r--compat.py31
-rw-r--r--core/SCsub4
-rw-r--r--core/allocators.h2
-rw-r--r--core/array.cpp2
-rw-r--r--core/array.h2
-rw-r--r--core/bind/core_bind.cpp153
-rw-r--r--core/bind/core_bind.h24
-rw-r--r--core/class_db.cpp107
-rw-r--r--core/class_db.h192
-rw-r--r--core/color.cpp2
-rw-r--r--core/color.h2
-rw-r--r--core/command_queue_mt.cpp4
-rw-r--r--core/command_queue_mt.h65
-rw-r--r--core/compressed_translation.cpp2
-rw-r--r--core/compressed_translation.h2
-rw-r--r--core/core_string_names.cpp2
-rw-r--r--core/core_string_names.h2
-rw-r--r--core/dictionary.cpp14
-rw-r--r--core/dictionary.h2
-rw-r--r--core/dvector.cpp2
-rw-r--r--core/dvector.h2
-rw-r--r--core/engine.cpp3
-rw-r--r--core/engine.h16
-rw-r--r--core/error_list.h2
-rw-r--r--core/error_macros.cpp2
-rw-r--r--core/error_macros.h2
-rw-r--r--core/event_queue.cpp2
-rw-r--r--core/event_queue.h2
-rw-r--r--core/func_ref.cpp2
-rw-r--r--core/func_ref.h2
-rw-r--r--core/global_constants.cpp1013
-rw-r--r--core/global_constants.h5
-rw-r--r--core/hash_map.h2
-rw-r--r--core/hashfuncs.h2
-rw-r--r--core/helper/math_fieldwise.cpp2
-rw-r--r--core/helper/math_fieldwise.h2
-rw-r--r--core/helper/value_evaluator.h2
-rw-r--r--core/image.cpp126
-rw-r--r--core/image.h3
-rw-r--r--core/input_map.cpp2
-rw-r--r--core/input_map.h2
-rw-r--r--core/int_types.h2
-rw-r--r--core/io/compression.cpp2
-rw-r--r--core/io/compression.h2
-rw-r--r--core/io/config_file.cpp2
-rw-r--r--core/io/config_file.h2
-rw-r--r--core/io/file_access_buffered.cpp14
-rw-r--r--core/io/file_access_buffered.h4
-rw-r--r--core/io/file_access_buffered_fa.h2
-rw-r--r--core/io/file_access_compressed.cpp23
-rw-r--r--core/io/file_access_compressed.h2
-rw-r--r--core/io/file_access_encrypted.cpp2
-rw-r--r--core/io/file_access_encrypted.h2
-rw-r--r--core/io/file_access_memory.cpp2
-rw-r--r--core/io/file_access_memory.h4
-rw-r--r--core/io/file_access_network.cpp2
-rw-r--r--core/io/file_access_network.h2
-rw-r--r--core/io/file_access_pack.cpp2
-rw-r--r--core/io/file_access_pack.h2
-rw-r--r--core/io/file_access_zip.cpp14
-rw-r--r--core/io/file_access_zip.h2
-rw-r--r--core/io/http_client.cpp142
-rw-r--r--core/io/http_client.h3
-rw-r--r--core/io/image_loader.cpp6
-rw-r--r--core/io/image_loader.h6
-rw-r--r--core/io/ip.cpp18
-rw-r--r--core/io/ip.h2
-rw-r--r--core/io/ip_address.cpp2
-rw-r--r--core/io/ip_address.h4
-rw-r--r--core/io/json.cpp62
-rw-r--r--core/io/json.h2
-rw-r--r--core/io/marshalls.cpp215
-rw-r--r--core/io/marshalls.h23
-rw-r--r--core/io/networked_multiplayer_peer.cpp14
-rw-r--r--core/io/networked_multiplayer_peer.h2
-rw-r--r--core/io/packet_peer.cpp22
-rw-r--r--core/io/packet_peer.h4
-rw-r--r--core/io/packet_peer_udp.cpp2
-rw-r--r--core/io/packet_peer_udp.h4
-rw-r--r--core/io/pck_packer.cpp2
-rw-r--r--core/io/pck_packer.h2
-rw-r--r--core/io/resource_format_binary.cpp73
-rw-r--r--core/io/resource_format_binary.h2
-rw-r--r--core/io/resource_import.cpp72
-rw-r--r--core/io/resource_import.h6
-rw-r--r--core/io/resource_loader.cpp27
-rw-r--r--core/io/resource_loader.h4
-rw-r--r--core/io/resource_saver.cpp2
-rw-r--r--core/io/resource_saver.h2
-rw-r--r--core/io/stream_peer.cpp4
-rw-r--r--core/io/stream_peer.h2
-rw-r--r--core/io/stream_peer_ssl.cpp11
-rw-r--r--core/io/stream_peer_ssl.h2
-rw-r--r--core/io/stream_peer_tcp.cpp10
-rw-r--r--core/io/stream_peer_tcp.h2
-rw-r--r--core/io/tcp_server.cpp2
-rw-r--r--core/io/tcp_server.h4
-rw-r--r--core/io/translation_loader_po.cpp2
-rw-r--r--core/io/translation_loader_po.h2
-rw-r--r--core/io/xml_parser.cpp16
-rw-r--r--core/io/xml_parser.h2
-rw-r--r--core/io/zip_io.h2
-rw-r--r--core/list.h2
-rw-r--r--core/make_binders.py24
-rw-r--r--core/map.h2
-rw-r--r--core/math/a_star.cpp2
-rw-r--r--core/math/a_star.h2
-rw-r--r--core/math/audio_frame.cpp2
-rw-r--r--core/math/audio_frame.h2
-rw-r--r--core/math/bsp_tree.cpp2
-rw-r--r--core/math/bsp_tree.h2
-rw-r--r--core/math/camera_matrix.cpp16
-rw-r--r--core/math/camera_matrix.h2
-rw-r--r--core/math/face3.cpp2
-rw-r--r--core/math/face3.h2
-rw-r--r--core/math/geometry.cpp6
-rw-r--r--core/math/geometry.h31
-rw-r--r--core/math/math_2d.cpp45
-rw-r--r--core/math/math_2d.h43
-rw-r--r--core/math/math_defs.h2
-rw-r--r--core/math/math_funcs.cpp7
-rw-r--r--core/math/math_funcs.h12
-rw-r--r--core/math/matrix3.cpp52
-rw-r--r--core/math/matrix3.h6
-rw-r--r--core/math/octree.h37
-rw-r--r--core/math/plane.cpp6
-rw-r--r--core/math/plane.h6
-rw-r--r--core/math/quat.cpp92
-rw-r--r--core/math/quat.h2
-rw-r--r--core/math/quick_hull.cpp2
-rw-r--r--core/math/quick_hull.h2
-rw-r--r--core/math/rect3.cpp2
-rw-r--r--core/math/rect3.h86
-rw-r--r--core/math/transform.cpp2
-rw-r--r--core/math/transform.h32
-rw-r--r--core/math/triangle_mesh.cpp2
-rw-r--r--core/math/triangle_mesh.h2
-rw-r--r--core/math/triangulate.cpp2
-rw-r--r--core/math/triangulate.h2
-rw-r--r--core/math/vector3.cpp47
-rw-r--r--core/math/vector3.h24
-rw-r--r--core/message_queue.cpp43
-rw-r--r--core/message_queue.h4
-rw-r--r--core/method_bind.cpp48
-rw-r--r--core/method_bind.h104
-rw-r--r--core/method_ptrcall.h59
-rw-r--r--core/node_path.cpp2
-rw-r--r--core/node_path.h2
-rw-r--r--core/object.cpp286
-rw-r--r--core/object.h78
-rw-r--r--core/os/copymem.h2
-rw-r--r--core/os/dir_access.cpp2
-rw-r--r--core/os/dir_access.h2
-rw-r--r--core/os/file_access.cpp6
-rw-r--r--core/os/file_access.h4
-rw-r--r--core/os/input.cpp10
-rw-r--r--core/os/input.h2
-rw-r--r--core/os/input_event.cpp102
-rw-r--r--core/os/input_event.h9
-rw-r--r--core/os/keyboard.cpp2
-rw-r--r--core/os/keyboard.h4
-rw-r--r--core/os/main_loop.cpp4
-rw-r--r--core/os/main_loop.h8
-rw-r--r--core/os/memory.cpp2
-rw-r--r--core/os/memory.h2
-rw-r--r--core/os/mutex.cpp2
-rw-r--r--core/os/mutex.h2
-rw-r--r--core/os/os.cpp4
-rw-r--r--core/os/os.h8
-rw-r--r--core/os/power.h2
-rw-r--r--core/os/rw_lock.cpp2
-rw-r--r--core/os/rw_lock.h2
-rw-r--r--core/os/semaphore.cpp2
-rw-r--r--core/os/semaphore.h2
-rw-r--r--core/os/shell.cpp2
-rw-r--r--core/os/shell.h2
-rw-r--r--core/os/thread.cpp2
-rw-r--r--core/os/thread.h2
-rw-r--r--core/os/thread_dummy.cpp2
-rw-r--r--core/os/thread_dummy.h2
-rw-r--r--core/os/thread_safe.cpp2
-rw-r--r--core/os/thread_safe.h2
-rw-r--r--core/packed_data_container.cpp2
-rw-r--r--core/packed_data_container.h2
-rw-r--r--core/pair.h4
-rw-r--r--core/path_remap.cpp2
-rw-r--r--core/path_remap.h2
-rw-r--r--core/pool_allocator.cpp2
-rw-r--r--core/pool_allocator.h2
-rw-r--r--core/print_string.cpp2
-rw-r--r--core/print_string.h2
-rw-r--r--core/project_settings.cpp42
-rw-r--r--core/project_settings.h4
-rw-r--r--core/ref_ptr.cpp4
-rw-r--r--core/ref_ptr.h2
-rw-r--r--core/reference.cpp45
-rw-r--r--core/reference.h54
-rw-r--r--core/register_core_types.cpp9
-rw-r--r--core/register_core_types.h2
-rw-r--r--core/resource.cpp2
-rw-r--r--core/resource.h4
-rw-r--r--core/rid.cpp2
-rw-r--r--core/rid.h2
-rw-r--r--core/ring_buffer.h2
-rw-r--r--core/safe_refcount.cpp2
-rw-r--r--core/safe_refcount.h2
-rw-r--r--core/script_debugger_local.cpp2
-rw-r--r--core/script_debugger_local.h2
-rw-r--r--core/script_debugger_remote.cpp100
-rw-r--r--core/script_debugger_remote.h4
-rw-r--r--core/script_language.cpp8
-rw-r--r--core/script_language.h4
-rw-r--r--core/self_list.h2
-rw-r--r--core/set.h2
-rw-r--r--core/simple_type.h76
-rw-r--r--core/sort.h2
-rw-r--r--core/string_db.cpp2
-rw-r--r--core/string_db.h2
-rw-r--r--core/translation.cpp2
-rw-r--r--core/translation.h2
-rw-r--r--core/type_info.h145
-rw-r--r--core/typedefs.h23
-rw-r--r--core/ucaps.h2
-rw-r--r--core/undo_redo.cpp36
-rw-r--r--core/undo_redo.h2
-rw-r--r--core/ustring.cpp341
-rw-r--r--core/ustring.h10
-rw-r--r--core/variant.cpp6
-rw-r--r--core/variant.h2
-rw-r--r--core/variant_call.cpp12
-rw-r--r--core/variant_construct_string.cpp64
-rw-r--r--core/variant_op.cpp2
-rw-r--r--core/variant_parser.cpp8
-rw-r--r--core/variant_parser.h2
-rw-r--r--core/vector.h14
-rw-r--r--core/version.h2
-rw-r--r--core/vmap.h2
-rw-r--r--core/vset.h2
-rw-r--r--doc/base/classes.xml96
-rw-r--r--drivers/SCsub1
-rw-r--r--drivers/alsa/audio_driver_alsa.cpp4
-rw-r--r--drivers/alsa/audio_driver_alsa.h2
-rw-r--r--drivers/convex_decomp/b2d_decompose.cpp2
-rw-r--r--drivers/convex_decomp/b2d_decompose.h2
-rw-r--r--drivers/gl_context/context_gl.cpp2
-rw-r--r--drivers/gl_context/context_gl.h2
-rw-r--r--drivers/gles2/SCsub9
-rw-r--r--drivers/gles2/rasterizer_gles2.cpp10767
-rw-r--r--drivers/gles2/rasterizer_gles2.h1686
-rw-r--r--drivers/gles2/rasterizer_instance_gles2.cpp40
-rw-r--r--drivers/gles2/rasterizer_instance_gles2.h41
-rw-r--r--drivers/gles2/shader_compiler_gles2.cpp939
-rw-r--r--drivers/gles2/shader_compiler_gles2.h134
-rw-r--r--drivers/gles2/shader_gles2.cpp736
-rw-r--r--drivers/gles2/shader_gles2.h359
-rw-r--r--drivers/gles2/shaders/SCsub12
-rw-r--r--drivers/gles2/shaders/blur.glsl51
-rw-r--r--drivers/gles2/shaders/canvas.glsl391
-rw-r--r--drivers/gles2/shaders/canvas_shadow.glsl62
-rw-r--r--drivers/gles2/shaders/copy.glsl557
-rw-r--r--drivers/gles2/shaders/material.glsl1326
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.cpp9
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.h2
-rw-r--r--drivers/gles3/rasterizer_gles3.cpp7
-rw-r--r--drivers/gles3/rasterizer_gles3.h2
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp109
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h21
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp110
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h29
-rw-r--r--drivers/gles3/shader_compiler_gles3.cpp8
-rw-r--r--drivers/gles3/shader_compiler_gles3.h2
-rw-r--r--drivers/gles3/shader_gles3.cpp10
-rw-r--r--drivers/gles3/shader_gles3.h10
-rw-r--r--drivers/gles3/shaders/SCsub2
-rw-r--r--drivers/gles3/shaders/scene.glsl25
-rw-r--r--drivers/gles3/shaders/ssao.glsl5
-rw-r--r--drivers/gles3/shaders/ssao_blur.glsl7
-rw-r--r--drivers/gles3/shaders/subsurf_scattering.glsl145
-rw-r--r--drivers/gles3/shaders/tonemap.glsl2
-rw-r--r--drivers/png/image_loader_png.cpp4
-rw-r--r--drivers/png/image_loader_png.h4
-rw-r--r--drivers/png/resource_saver_png.cpp4
-rw-r--r--drivers/png/resource_saver_png.h2
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.cpp4
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.h2
-rw-r--r--drivers/register_driver_types.cpp2
-rw-r--r--drivers/register_driver_types.h2
-rw-r--r--drivers/rtaudio/audio_driver_rtaudio.cpp78
-rw-r--r--drivers/rtaudio/audio_driver_rtaudio.h2
-rw-r--r--drivers/unix/SCsub2
-rw-r--r--drivers/unix/dir_access_unix.cpp14
-rw-r--r--drivers/unix/dir_access_unix.h6
-rw-r--r--drivers/unix/file_access_unix.cpp2
-rw-r--r--drivers/unix/file_access_unix.h2
-rw-r--r--drivers/unix/ip_unix.cpp2
-rw-r--r--drivers/unix/ip_unix.h2
-rw-r--r--drivers/unix/mutex_posix.cpp2
-rw-r--r--drivers/unix/mutex_posix.h2
-rw-r--r--drivers/unix/os_unix.cpp6
-rw-r--r--drivers/unix/os_unix.h4
-rw-r--r--drivers/unix/packet_peer_udp_posix.cpp10
-rw-r--r--drivers/unix/packet_peer_udp_posix.h4
-rw-r--r--drivers/unix/rw_lock_posix.cpp2
-rw-r--r--drivers/unix/rw_lock_posix.h2
-rw-r--r--drivers/unix/semaphore_posix.cpp2
-rw-r--r--drivers/unix/semaphore_posix.h2
-rw-r--r--drivers/unix/socket_helpers.h2
-rw-r--r--drivers/unix/stream_peer_tcp_posix.cpp2
-rw-r--r--drivers/unix/stream_peer_tcp_posix.h2
-rw-r--r--drivers/unix/tcp_server_posix.cpp4
-rw-r--r--drivers/unix/tcp_server_posix.h4
-rw-r--r--drivers/unix/thread_posix.cpp17
-rw-r--r--drivers/unix/thread_posix.h5
-rw-r--r--drivers/wasapi/SCsub8
-rw-r--r--drivers/wasapi/audio_driver_wasapi.cpp351
-rw-r--r--drivers/wasapi/audio_driver_wasapi.h89
-rw-r--r--drivers/windows/dir_access_windows.cpp2
-rw-r--r--drivers/windows/dir_access_windows.h6
-rw-r--r--drivers/windows/file_access_windows.cpp6
-rw-r--r--drivers/windows/file_access_windows.h2
-rw-r--r--drivers/windows/mutex_windows.cpp2
-rw-r--r--drivers/windows/mutex_windows.h2
-rw-r--r--drivers/windows/rw_lock_windows.cpp2
-rw-r--r--drivers/windows/rw_lock_windows.h2
-rw-r--r--drivers/windows/semaphore_windows.cpp2
-rw-r--r--drivers/windows/semaphore_windows.h2
-rw-r--r--drivers/windows/shell_windows.cpp2
-rw-r--r--drivers/windows/shell_windows.h2
-rw-r--r--drivers/windows/thread_windows.cpp2
-rw-r--r--drivers/windows/thread_windows.h2
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.cpp4
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.h2
-rw-r--r--editor/SCsub40
-rw-r--r--editor/animation_editor.cpp26
-rw-r--r--editor/animation_editor.h4
-rw-r--r--editor/array_property_edit.cpp8
-rw-r--r--editor/array_property_edit.h2
-rw-r--r--editor/asset_library_editor_plugin.cpp1473
-rw-r--r--editor/asset_library_editor_plugin.h324
-rw-r--r--editor/call_dialog.cpp342
-rw-r--r--editor/call_dialog.h86
-rw-r--r--editor/code_editor.cpp37
-rw-r--r--editor/code_editor.h4
-rw-r--r--editor/collada/collada.cpp16
-rw-r--r--editor/collada/collada.h4
-rw-r--r--editor/connections_dialog.cpp32
-rw-r--r--editor/connections_dialog.h5
-rw-r--r--editor/create_dialog.cpp2
-rw-r--r--editor/create_dialog.h2
-rw-r--r--editor/dependency_editor.cpp6
-rw-r--r--editor/dependency_editor.h4
-rw-r--r--editor/doc/doc_data.cpp274
-rw-r--r--editor/doc/doc_data.h6
-rw-r--r--editor/doc/doc_dump.cpp2
-rw-r--r--editor/doc/doc_dump.h2
-rw-r--r--editor/doc_code_font.h2
-rw-r--r--editor/doc_font.h2
-rw-r--r--editor/doc_title_font.h2
-rw-r--r--editor/editor_about.cpp2
-rw-r--r--editor/editor_about.h2
-rw-r--r--editor/editor_asset_installer.cpp16
-rw-r--r--editor/editor_asset_installer.h2
-rw-r--r--editor/editor_audio_buses.cpp72
-rw-r--r--editor/editor_audio_buses.h6
-rw-r--r--editor/editor_autoload_settings.cpp6
-rw-r--r--editor/editor_autoload_settings.h10
-rw-r--r--editor/editor_data.cpp12
-rw-r--r--editor/editor_data.h7
-rw-r--r--editor/editor_dir_dialog.cpp14
-rw-r--r--editor/editor_dir_dialog.h2
-rw-r--r--editor/editor_export.cpp2289
-rw-r--r--editor/editor_export.h8
-rw-r--r--editor/editor_file_dialog.cpp28
-rw-r--r--editor/editor_file_dialog.h2
-rw-r--r--editor/editor_file_system.cpp136
-rw-r--r--editor/editor_file_system.h14
-rw-r--r--editor/editor_fonts.cpp2
-rw-r--r--editor/editor_fonts.h2
-rw-r--r--editor/editor_help.cpp291
-rw-r--r--editor/editor_help.h10
-rw-r--r--editor/editor_icons.h37
-rw-r--r--editor/editor_initialize_ssl.cpp2
-rw-r--r--editor/editor_initialize_ssl.h2
-rw-r--r--editor/editor_log.cpp2
-rw-r--r--editor/editor_log.h2
-rw-r--r--editor/editor_name_dialog.cpp4
-rw-r--r--editor/editor_name_dialog.h2
-rw-r--r--editor/editor_node.cpp1335
-rw-r--r--editor/editor_node.h103
-rw-r--r--editor/editor_path.cpp14
-rw-r--r--editor/editor_path.h2
-rw-r--r--editor/editor_plugin.cpp368
-rw-r--r--editor/editor_plugin.h62
-rw-r--r--editor/editor_plugin_settings.cpp2
-rw-r--r--editor/editor_plugin_settings.h2
-rw-r--r--editor/editor_profiler.cpp2
-rw-r--r--editor/editor_profiler.h2
-rw-r--r--editor/editor_reimport_dialog.cpp149
-rw-r--r--editor/editor_reimport_dialog.h54
-rw-r--r--editor/editor_resource_preview.cpp16
-rw-r--r--editor/editor_resource_preview.h6
-rw-r--r--editor/editor_run.cpp46
-rw-r--r--editor/editor_run.h2
-rw-r--r--editor/editor_run_native.cpp6
-rw-r--r--editor/editor_run_native.h2
-rw-r--r--editor/editor_run_script.cpp8
-rw-r--r--editor/editor_run_script.h6
-rw-r--r--editor/editor_scale.cpp2
-rw-r--r--editor/editor_scale.h2
-rw-r--r--editor/editor_settings.cpp75
-rw-r--r--editor/editor_settings.h9
-rw-r--r--editor/editor_sub_scene.cpp2
-rw-r--r--editor/editor_sub_scene.h2
-rw-r--r--editor/editor_themes.cpp220
-rw-r--r--editor/editor_themes.h4
-rw-r--r--editor/export_template_manager.cpp81
-rw-r--r--editor/export_template_manager.h2
-rw-r--r--editor/file_type_cache.cpp2
-rw-r--r--editor/file_type_cache.h2
-rw-r--r--editor/fileserver/editor_file_server.cpp2
-rw-r--r--editor/fileserver/editor_file_server.h2
-rw-r--r--editor/filesystem_dock.cpp49
-rw-r--r--editor/filesystem_dock.h5
-rw-r--r--editor/groups_editor.cpp4
-rw-r--r--editor/groups_editor.h2
-rw-r--r--editor/icons/2x/icon_2_d.pngbin366 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_3_d.pngbin571 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_checked.pngbin516 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_dropdown.pngbin198 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_hslider_bg.pngbin124 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_hsplitter.pngbin190 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_mini_tab_menu.pngbin206 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_option_arrow.pngbin304 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_play_button_group.pngbin886 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_progress_bar.pngbin289 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_progress_fill.pngbin196 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_radio_checked.pngbin946 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_radio_unchecked.pngbin799 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_scroll_bg.pngbin99 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_scroll_grabber.pngbin193 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_scroll_grabber_hl.pngbin297 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_slider_grabber.pngbin260 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_slider_grabber_hl.pngbin1040 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_spinbox_updown.pngbin516 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_tab_menu.pngbin221 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_toggle_off.pngbin2606 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_toggle_on.pngbin2178 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_tree_arrow_down.pngbin256 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_tree_arrow_right.pngbin263 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_unchecked.pngbin369 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_vslider_bg.pngbin131 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_vsplit_bg.pngbin104 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_GUI_vsplitter.pngbin168 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_accept_dialog.pngbin581 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_add.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_add_track.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_anchor.pngbin828 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_animated_sprite.pngbin1212 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_animated_sprite_3d.pngbin1125 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_animation.pngbin912 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_animation_player.pngbin173 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_animation_tree.pngbin264 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_animation_tree_player.pngbin264 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_area.pngbin209 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_area_2d.pngbin211 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_arrow_left.pngbin354 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_arrow_right.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_arrow_up.pngbin382 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_asset_lib.pngbin367 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_atlas_texture.pngbin382 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_bus_bypass.pngbin368 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_bus_layout.pngbin565 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_bus_mute.pngbin527 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_bus_solo.pngbin479 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_effect_amplify.pngbin462 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_stream_gibberish.pngbin437 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_stream_player.pngbin769 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_stream_player_2_d.pngbin782 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_stream_player_3_d.pngbin763 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_audio_stream_sample.pngbin712 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_auto_play.pngbin699 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_back.pngbin410 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_back_buffer_copy.pngbin190 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bake.pngbin267 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_baked_light.pngbin264 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_baked_light_instance.pngbin264 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_baked_light_sampler.pngbin391 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bit_map.pngbin152 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bitmap_font.pngbin191 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_blend.pngbin1091 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bone.pngbin597 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bone_attachment.pngbin576 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bone_track.pngbin565 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bool.pngbin422 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_box_shape.pngbin597 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bus_vu_db.pngbin7645 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bus_vu_empty.pngbin2241 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bus_vu_frozen.pngbin1945 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_bus_vu_full.pngbin1839 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_button.pngbin456 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_button_group.pngbin529 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_camera.pngbin352 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_camera_2d.pngbin364 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_canvas_item.pngbin709 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_canvas_item_material.pngbin640 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_canvas_item_shader.pngbin716 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_canvas_item_shader_graph.pngbin707 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_canvas_layer.pngbin860 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_canvas_modulate.pngbin273 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_capsule_mesh.pngbin767 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_capsule_shape.pngbin372 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_capsule_shape_2d.pngbin552 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_center_container.pngbin478 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_check_box.pngbin565 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_check_button.pngbin528 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_checked.pngbin534 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_circle_shape_2d.pngbin838 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_class_list.pngbin192 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_close.pngbin461 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_collapse.pngbin383 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_collision_2d.pngbin407 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_collision_polygon.pngbin397 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_collision_polygon_2d.pngbin407 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_collision_shape.pngbin439 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_collision_shape_2d.pngbin235 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_color.pngbin1406 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_color_pick.pngbin822 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_color_picker.pngbin837 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_color_picker_button.pngbin942 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_color_ramp.pngbin342 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_color_rect.pngbin285 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_concave_polygon_shape.pngbin709 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_concave_polygon_shape_2d.pngbin436 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_cone_twist_joint.pngbin906 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_confirmation_dialog.pngbin614 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_connect.pngbin876 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_connection_and_groups.pngbin397 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_container.pngbin319 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control.pngbin825 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_bottom_center.pngbin156 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_bottom_left.pngbin154 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_bottom_right.pngbin155 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_bottom_wide.pngbin160 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_center.pngbin171 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_center_left.pngbin130 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_center_right.pngbin127 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_left_center.pngbin169 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_left_wide.pngbin143 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_right_center.pngbin171 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_right_wide.pngbin144 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_top_center.pngbin165 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_top_left.pngbin159 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_top_right.pngbin167 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_top_wide.pngbin160 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_align_wide.pngbin145 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_hcenter_wide.pngbin169 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_control_vcenter_wide.pngbin148 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_convex_polygon_shape.pngbin648 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_convex_polygon_shape_2d.pngbin373 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_copy_node_path.pngbin358 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_create_new_scene_from.pngbin639 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_cube_map.pngbin159 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_cube_mesh.pngbin681 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve.pngbin607 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_2d.pngbin591 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_3d.pngbin522 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_close.pngbin610 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_constant.pngbin162 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_create.pngbin698 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_curve.pngbin744 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_delete.pngbin926 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_edit.pngbin954 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_in.pngbin449 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_in_out.pngbin494 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_linear.pngbin283 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_out.pngbin459 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_out_in.pngbin489 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_curve_texture.pngbin728 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_cylinder_mesh.pngbin650 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_damped_spring_joint_2d.pngbin496 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_debug.pngbin900 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_debug_continue.pngbin525 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_debug_next.pngbin284 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_debug_step.pngbin317 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dependency_changed.pngbin731 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dependency_changed_hl.pngbin601 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dependency_local_changed.pngbin1104 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dependency_local_changed_hl.pngbin926 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dependency_ok.pngbin1015 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dependency_ok_hl.pngbin836 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_directional_light.pngbin756 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_distraction_free.pngbin575 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dropdown.pngbin327 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_duplicate.pngbin225 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dynamic_font.pngbin383 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_dynamic_font_data.pngbin379 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_edit.pngbin525 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_edit_key.pngbin641 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_edit_pivot.pngbin595 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_edit_resource.pngbin311 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_editor_3d_handle.pngbin705 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_editor_handle.pngbin427 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_editor_pivot.pngbin198 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_editor_plugin.pngbin469 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_enum.pngbin137 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_environment.pngbin1193 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_error.pngbin346 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_error_sign.pngbin441 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_event_player.pngbin167 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_favorites.pngbin702 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_file.pngbin242 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_file_big.pngbin934 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_file_dialog.pngbin397 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_file_list.pngbin137 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_file_server.pngbin172 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_file_server_active.pngbin173 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_file_thumbnail.pngbin137 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_filesystem.pngbin192 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_fixed_material.pngbin736 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_fixed_spatial_material.pngbin768 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_folder.pngbin228 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_folder_big.pngbin991 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_font.pngbin369 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_forward.pngbin410 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_g_d_native_library.pngbin677 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_g_d_native_script.pngbin698 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_g_d_script.pngbin759 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_g_i_probe.pngbin680 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_g_i_probe_data.pngbin662 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_generic_6_d_o_f_joint.pngbin535 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gizmo_directional_light.pngbin8264 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gizmo_light.pngbin6282 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gizmo_listener.pngbin7636 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gizmo_spatial_sample_player.pngbin2831 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gizmo_spatial_stream_player.pngbin3649 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_godot.pngbin1743 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_godot_docs.pngbin1840 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gradient.pngbin249 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gradient_texture.pngbin330 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_color_ramp.pngbin342 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_comment.pngbin152 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_cube_uniform.pngbin795 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_curve_map.pngbin587 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_default_texture.pngbin254 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_edit.pngbin815 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_input.pngbin521 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_node.pngbin710 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_rgb.pngbin951 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_rgb_op.pngbin219 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_rgb_uniform.pngbin696 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_scalar.pngbin461 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_scalar_interp.pngbin307 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_scalar_op.pngbin390 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_scalar_uniform.pngbin570 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_scalars_to_vec.pngbin565 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_texscreen.pngbin217 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_texture_uniform.pngbin394 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_time.pngbin819 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vec_dp.pngbin482 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vec_interp.pngbin307 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vec_length.pngbin513 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vec_op.pngbin387 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vec_scalar_op.pngbin431 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vec_to_scalars.pngbin575 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vecs_to_xform.pngbin549 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vector.pngbin620 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_vector_uniform.pngbin718 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform.pngbin380 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform_mult.pngbin321 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform_scalar_func.pngbin467 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform_to_vecs.pngbin560 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform_uniform.pngbin526 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform_vec_func.pngbin476 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform_vec_imult.pngbin601 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_graph_xform_vec_mult.pngbin600 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_grid.pngbin194 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_grid_container.pngbin329 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_grid_map.pngbin378 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_groove_joint_2d.pngbin179 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_group.pngbin207 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_groups.pngbin353 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gui_close_dark.pngbin371 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_gui_close_light.pngbin366 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_h_box_container.pngbin307 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_h_button_array.pngbin470 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_h_scroll_bar.pngbin688 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_h_separator.pngbin148 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_h_slider.pngbin424 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_h_split_container.pngbin399 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_h_t_t_p_request.pngbin425 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_headphones.pngbin620 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_help.pngbin654 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_help_search.pngbin881 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_hidden.pngbin640 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_hinge_joint.pngbin663 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_history.pngbin814 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_hsize.pngbin247 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_hslider_bg.pngbin233 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_image.pngbin404 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_image_sky_box.pngbin904 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_image_texture.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_immediate_geometry.pngbin706 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_import_check.pngbin386 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_import_fail.pngbin464 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_instance.pngbin817 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_instance_options.pngbin708 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_integer.pngbin147 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_interp_cubic.pngbin483 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_interp_linear.pngbin398 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_interp_raw.pngbin221 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_interp_wrap_clamp.pngbin348 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_interp_wrap_loop.pngbin548 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_interpolated_camera.pngbin454 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_invalid_key.pngbin385 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_inverse_kinematics.pngbin459 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_item_list.pngbin338 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_joy_axis.pngbin425 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_joy_button.pngbin499 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_joypad.pngbin380 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_key.pngbin572 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_key_hover.pngbin191 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_key_invalid.pngbin385 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_key_next.pngbin579 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_key_selected.pngbin255 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_key_value.pngbin244 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_key_xform.pngbin261 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_keyboard.pngbin486 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_kinematic_body.pngbin197 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_kinematic_body_2d.pngbin204 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_label.pngbin370 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_large_texture.pngbin211 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_light_2d.pngbin669 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_light_occluder_2d.pngbin175 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_line_2d.pngbin739 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_line_edit.pngbin223 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_line_shape_2d.pngbin597 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_link_button.pngbin774 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_list_select.pngbin653 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_listener.pngbin885 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_load.pngbin523 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_lock.pngbin441 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_loop.pngbin806 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_loop_interpolation.pngbin709 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_main_play.pngbin359 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_main_stop.pngbin197 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_margin_container.pngbin365 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_cube.pngbin562 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_cube_off.pngbin598 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_light_1.pngbin724 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_light_1_off.pngbin596 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_light_2.pngbin740 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_light_2_off.pngbin843 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_sphere.pngbin704 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_preview_sphere_off.pngbin518 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_shader.pngbin342 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_material_shader_graph.pngbin707 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_matrix.pngbin185 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_menu_button.pngbin296 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mesh.pngbin582 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mesh_instance.pngbin563 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mesh_library.pngbin631 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_aabb.pngbin695 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_array.pngbin326 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_basis.pngbin472 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_boolean.pngbin434 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_color.pngbin411 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_color_array.pngbin445 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_dictionary.pngbin371 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_float.pngbin355 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_float_array.pngbin451 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_image.pngbin450 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_input.pngbin409 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_int_array.pngbin384 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_integer.pngbin367 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_matrix3.pngbin472 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_matrix32.pngbin573 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_object.pngbin507 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_path.pngbin435 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_plane.pngbin424 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_quat.pngbin509 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_raw_array.pngbin382 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_rect2.pngbin431 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_rid.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_string.pngbin437 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_string_array.pngbin479 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_transform.pngbin539 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_transform2D.pngbin602 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_variant.pngbin405 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_vector2.pngbin541 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_vector2_array.pngbin485 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_vector3.pngbin509 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mini_vector3_array.pngbin416 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mirror_x.pngbin361 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mirror_y.pngbin406 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_mouse.pngbin476 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_move_down.pngbin553 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_move_point.pngbin1205 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_move_up.pngbin505 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_multi_edit.pngbin558 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_multi_line.pngbin166 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_multi_mesh.pngbin591 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_multi_mesh_instance.pngbin653 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_multi_node_edit.pngbin558 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_multi_script.pngbin586 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_native_script.pngbin698 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_navigation.pngbin534 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_navigation_2d.pngbin558 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_navigation_mesh.pngbin806 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_navigation_mesh_instance.pngbin867 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_navigation_polygon.pngbin640 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_navigation_polygon_instance.pngbin712 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_new.pngbin242 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_nine_patch_rect.pngbin163 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_node.pngbin788 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_node_2d.pngbin864 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_node_warning.pngbin443 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_non_favorite.pngbin946 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_object.pngbin500 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_occluder_polygon_2d.pngbin384 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_omni_light.pngbin659 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_open.pngbin523 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_option_arrow.pngbin360 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_option_button.pngbin527 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_override.pngbin488 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_p_hash_translation.pngbin285 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_packed_data_container.pngbin253 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_packed_scene.pngbin569 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panel.pngbin277 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panel_container.pngbin309 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panels_1.pngbin117 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panels_2.pngbin127 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panels_2_alt.pngbin134 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panels_3.pngbin141 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panels_3_alt.pngbin152 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panels_4.pngbin136 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_panorama_sky.pngbin661 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_parallax_background.pngbin335 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_parallax_layer.pngbin469 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_particle_attractor_2d.pngbin1578 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_particles.pngbin686 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_particles_2d.pngbin728 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_particles_material.pngbin657 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_particles_shader.pngbin657 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_patch_9_rect.pngbin162 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_path.pngbin666 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_path_2d.pngbin687 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_path_follow.pngbin725 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_path_follow_2d.pngbin725 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_pause.pngbin194 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_pin.pngbin322 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_pin_joint.pngbin686 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_pin_joint_2d.pngbin719 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_pin_pressed.pngbin322 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_plane.pngbin306 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_plane_mesh.pngbin535 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_plane_shape.pngbin316 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_play.pngbin395 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_play_backwards.pngbin424 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_play_button_group.pngbin942 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_play_custom.pngbin572 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_play_scene.pngbin686 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_play_start.pngbin463 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_play_start_backwards.pngbin497 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_polygon_2d.pngbin407 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_polygon_path_finder.pngbin491 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_popup.pngbin329 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_popup_dialog.pngbin347 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_popup_menu.pngbin301 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_popup_panel.pngbin279 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_portal.pngbin855 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_position_2d.pngbin152 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_position_3d.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_prism_mesh.pngbin612 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_procedural_sky.pngbin639 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_1.pngbin781 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_2.pngbin785 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_3.pngbin800 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_4.pngbin808 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_5.pngbin807 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_6.pngbin793 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_7.pngbin815 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_8.pngbin791 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_progress_bar.pngbin328 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_proximity_group.pngbin326 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_quad.pngbin289 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_quad_mesh.pngbin291 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_quat.pngbin668 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_range.pngbin177 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rating_no_star.pngbin1077 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rating_star.pngbin696 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_ray_cast.pngbin308 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_ray_cast_2d.pngbin337 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_ray_shape.pngbin541 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_ray_shape_2d.pngbin330 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rayito.pngbin449 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_real.pngbin423 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rectangle_shape_2d.pngbin213 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_reference_rect.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_reflection_probe.pngbin533 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_region_edit.pngbin158 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_reload.pngbin786 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_reload_small.pngbin756 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_remote.pngbin824 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_remote_transform.pngbin1003 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_remote_transform_2d.pngbin1044 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_remove.pngbin271 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rename.pngbin215 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_reparent.pngbin741 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_resource_preloader.pngbin609 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rich_text_label.pngbin313 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rigid_body.pngbin1139 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rigid_body_2d.pngbin1206 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_room.pngbin567 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_room_bounds.pngbin631 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rotate_0.pngbin878 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rotate_180.pngbin713 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rotate_270.pngbin666 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_rotate_90.pngbin805 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sample.pngbin197 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sample_library.pngbin568 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sample_player.pngbin345 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sample_player_2d.pngbin376 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_save.pngbin466 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_script.pngbin465 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_script_create.pngbin491 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_script_remove.pngbin787 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_scroll_bar.pngbin324 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_scroll_container.pngbin483 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_search.pngbin762 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_segment_shape_2d.pngbin320 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_shader.pngbin342 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_shader_material.pngbin342 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_short_cut.pngbin473 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_signal.pngbin327 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_skeleton.pngbin649 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_slider_grabber.pngbin686 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_slider_grabber_hl.pngbin672 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_slider_joint.pngbin393 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_slot.pngbin342 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_snap.pngbin424 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sound_room_params.pngbin375 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spatial.pngbin835 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spatial_material.pngbin704 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spatial_sample_player.pngbin353 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spatial_shader.pngbin704 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spatial_stream_player.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sphere_mesh.pngbin979 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sphere_shape.pngbin712 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spin_box.pngbin436 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spinbox_updown.pngbin562 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_spot_light.pngbin669 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sprite.pngbin841 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sprite_3d.pngbin838 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_sprite_frames.pngbin691 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_static_body.pngbin397 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_static_body_2d.pngbin417 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_stream_player.pngbin263 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_stream_texture.pngbin247 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_string.pngbin217 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_style_box_empty.pngbin555 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_style_box_flat.pngbin695 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_style_box_texture.pngbin693 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tab_container.pngbin334 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tab_menu.pngbin277 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tabs.pngbin366 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_test_cube.pngbin596 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_text_edit.pngbin329 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_texture.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_texture_button.pngbin190 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_texture_progress.pngbin344 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_texture_rect.pngbin203 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_theme.pngbin809 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tile_map.pngbin139 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tile_set.pngbin242 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_timer.pngbin765 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tool_button.pngbin753 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tool_move.pngbin353 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tool_pan.pngbin479 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tool_rotate.pngbin786 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tool_scale.pngbin562 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tool_select.pngbin659 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tools.pngbin544 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_touch_screen_button.pngbin511 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_track_add_key.pngbin127 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_track_add_key_hl.pngbin128 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_track_continuous.pngbin434 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_track_discrete.pngbin196 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_track_trigger.pngbin214 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_translation.pngbin285 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_transparent.pngbin177 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_transpose.pngbin210 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tree.pngbin211 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tree_arrow_down.pngbin312 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tree_arrow_right.pngbin319 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_tween.pngbin320 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_unbone.pngbin661 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_unchecked.pngbin404 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_ungroup.pngbin202 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_uninstance.pngbin883 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_unlock.pngbin388 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_uv.pngbin502 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_v_box_container.pngbin327 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_v_button_array.pngbin461 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_v_scroll_bar.pngbin791 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_v_separator.pngbin154 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_v_slider.pngbin442 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_v_split_container.pngbin425 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_variant.pngbin398 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_vector.pngbin270 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_vector2.pngbin141 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_vehicle_body.pngbin410 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_vehicle_wheel.pngbin1269 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_video_player.pngbin380 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_viewport.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_viewport_container.pngbin528 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_viewport_sprite.pngbin403 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_viewport_texture.pngbin404 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_visibility_enabler.pngbin1106 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_visibility_enabler_2d.pngbin1114 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_visibility_notifier.pngbin832 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_visibility_notifier_2d.pngbin844 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_visible.pngbin994 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_visual_script.pngbin728 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_visual_shader_port.pngbin338 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_vslider_bg.pngbin236 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_vu_empty.pngbin452 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_vu_full.pngbin350 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_warning.pngbin350 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_window_dialog.pngbin311 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_world.pngbin502 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_world_2d.pngbin584 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_world_environment.pngbin1297 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_y_sort.pngbin293 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_zoom.pngbin718 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_zoom_less.pngbin162 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_zoom_more.pngbin290 -> 0 bytes
-rw-r--r--editor/icons/2x/icon_zoom_reset.pngbin689 -> 0 bytes
-rw-r--r--editor/icons/README.md12
-rw-r--r--editor/icons/SCsub140
-rw-r--r--editor/icons/dark/icon_2_d.svg5
-rw-r--r--editor/icons/dark/icon_3_d.svg5
-rw-r--r--editor/icons/dark/icon_GUI_checked.svg5
-rw-r--r--editor/icons/dark/icon_GUI_dropdown.svg7
-rw-r--r--editor/icons/dark/icon_GUI_hslider_bg.svg5
-rw-r--r--editor/icons/dark/icon_GUI_hsplitter.svg5
-rw-r--r--editor/icons/dark/icon_GUI_mini_tab_menu.svg7
-rw-r--r--editor/icons/dark/icon_GUI_option_arrow.svg5
-rw-r--r--editor/icons/dark/icon_GUI_play_button_group.svg5
-rw-r--r--editor/icons/dark/icon_GUI_progress_bar.svg5
-rw-r--r--editor/icons/dark/icon_GUI_progress_fill.svg5
-rw-r--r--editor/icons/dark/icon_GUI_radio_checked.svg6
-rw-r--r--editor/icons/dark/icon_GUI_radio_unchecked.svg5
-rw-r--r--editor/icons/dark/icon_GUI_scroll_bg.svg1
-rw-r--r--editor/icons/dark/icon_GUI_scroll_grabber.svg5
-rw-r--r--editor/icons/dark/icon_GUI_scroll_grabber_hl.svg5
-rw-r--r--editor/icons/dark/icon_GUI_scroll_grabber_pressed.svg5
-rw-r--r--editor/icons/dark/icon_GUI_slider_grabber.svg5
-rw-r--r--editor/icons/dark/icon_GUI_slider_grabber_hl.svg6
-rw-r--r--editor/icons/dark/icon_GUI_spinbox_updown.svg5
-rw-r--r--editor/icons/dark/icon_GUI_tab_menu.svg7
-rw-r--r--editor/icons/dark/icon_GUI_toggle_off.svg5
-rw-r--r--editor/icons/dark/icon_GUI_toggle_on.svg5
-rw-r--r--editor/icons/dark/icon_GUI_tree_arrow_down.svg5
-rw-r--r--editor/icons/dark/icon_GUI_tree_arrow_right.svg5
-rw-r--r--editor/icons/dark/icon_GUI_unchecked.svg5
-rw-r--r--editor/icons/dark/icon_GUI_vslider_bg.svg5
-rw-r--r--editor/icons/dark/icon_GUI_vsplit_bg.svg5
-rw-r--r--editor/icons/dark/icon_GUI_vsplitter.svg5
-rw-r--r--editor/icons/dark/icon_accept_dialog.svg5
-rw-r--r--editor/icons/dark/icon_add.svg5
-rw-r--r--editor/icons/dark/icon_anchor.svg5
-rw-r--r--editor/icons/dark/icon_animated_sprite.svg7
-rw-r--r--editor/icons/dark/icon_animated_sprite_3d.svg7
-rw-r--r--editor/icons/dark/icon_animation.svg5
-rw-r--r--editor/icons/dark/icon_animation_player.svg5
-rw-r--r--editor/icons/dark/icon_animation_tree_player.svg5
-rw-r--r--editor/icons/dark/icon_area.svg5
-rw-r--r--editor/icons/dark/icon_area_2d.svg5
-rw-r--r--editor/icons/dark/icon_array_mesh.svg5
-rw-r--r--editor/icons/dark/icon_arrow_left.svg5
-rw-r--r--editor/icons/dark/icon_arrow_right.svg5
-rw-r--r--editor/icons/dark/icon_arrow_up.svg5
-rw-r--r--editor/icons/dark/icon_asset_lib.svg5
-rw-r--r--editor/icons/dark/icon_atlas_texture.svg5
-rw-r--r--editor/icons/dark/icon_audio_bus_bypass.svg5
-rw-r--r--editor/icons/dark/icon_audio_bus_layout.svg12
-rw-r--r--editor/icons/dark/icon_audio_bus_mute.svg5
-rw-r--r--editor/icons/dark/icon_audio_bus_solo.svg5
-rw-r--r--editor/icons/dark/icon_audio_effect_amplify.svg12
-rw-r--r--editor/icons/dark/icon_audio_stream_gibberish.svg5
-rw-r--r--editor/icons/dark/icon_audio_stream_player.svg13
-rw-r--r--editor/icons/dark/icon_audio_stream_player_2_d.svg13
-rw-r--r--editor/icons/dark/icon_audio_stream_player_3_d.svg13
-rw-r--r--editor/icons/dark/icon_audio_stream_sample.svg12
-rw-r--r--editor/icons/dark/icon_auto_play.svg5
-rw-r--r--editor/icons/dark/icon_back.svg5
-rw-r--r--editor/icons/dark/icon_back_buffer_copy.svg5
-rw-r--r--editor/icons/dark/icon_bake.svg5
-rw-r--r--editor/icons/dark/icon_baked_light.svg5
-rw-r--r--editor/icons/dark/icon_baked_light_instance.svg5
-rw-r--r--editor/icons/dark/icon_baked_light_sampler.svg5
-rw-r--r--editor/icons/dark/icon_bit_map.svg5
-rw-r--r--editor/icons/dark/icon_bitmap_font.svg5
-rw-r--r--editor/icons/dark/icon_blend.svg5
-rw-r--r--editor/icons/dark/icon_bone.svg5
-rw-r--r--editor/icons/dark/icon_bone_attachment.svg5
-rw-r--r--editor/icons/dark/icon_bone_track.svg5
-rw-r--r--editor/icons/dark/icon_bool.svg5
-rw-r--r--editor/icons/dark/icon_box_shape.svg7
-rw-r--r--editor/icons/dark/icon_bus_vu_db.svg12
-rw-r--r--editor/icons/dark/icon_bus_vu_empty.svg13
-rw-r--r--editor/icons/dark/icon_bus_vu_frozen.svg12
-rw-r--r--editor/icons/dark/icon_bus_vu_full.svg12
-rw-r--r--editor/icons/dark/icon_button.svg5
-rw-r--r--editor/icons/dark/icon_button_group.svg5
-rw-r--r--editor/icons/dark/icon_camera.svg5
-rw-r--r--editor/icons/dark/icon_camera_2d.svg5
-rw-r--r--editor/icons/dark/icon_canvas_item.svg5
-rw-r--r--editor/icons/dark/icon_canvas_item_material.svg11
-rw-r--r--editor/icons/dark/icon_canvas_item_shader.svg11
-rw-r--r--editor/icons/dark/icon_canvas_item_shader_graph.svg19
-rw-r--r--editor/icons/dark/icon_canvas_layer.svg5
-rw-r--r--editor/icons/dark/icon_canvas_modulate.svg8
-rw-r--r--editor/icons/dark/icon_capsule_mesh.svg5
-rw-r--r--editor/icons/dark/icon_capsule_shape.svg6
-rw-r--r--editor/icons/dark/icon_capsule_shape_2d.svg5
-rw-r--r--editor/icons/dark/icon_center_container.svg5
-rw-r--r--editor/icons/dark/icon_check_box.svg5
-rw-r--r--editor/icons/dark/icon_check_button.svg5
-rw-r--r--editor/icons/dark/icon_checkerboard.svg6
-rw-r--r--editor/icons/dark/icon_circle_shape_2d.svg5
-rw-r--r--editor/icons/dark/icon_class_list.svg11
-rw-r--r--editor/icons/dark/icon_clear.svg5
-rw-r--r--editor/icons/dark/icon_close.svg5
-rw-r--r--editor/icons/dark/icon_collapse.svg5
-rw-r--r--editor/icons/dark/icon_collision_polygon.svg5
-rw-r--r--editor/icons/dark/icon_collision_polygon_2d.svg5
-rw-r--r--editor/icons/dark/icon_collision_shape.svg7
-rw-r--r--editor/icons/dark/icon_collision_shape_2d.svg5
-rw-r--r--editor/icons/dark/icon_color.svg24
-rw-r--r--editor/icons/dark/icon_color_pick.svg5
-rw-r--r--editor/icons/dark/icon_color_picker.svg5
-rw-r--r--editor/icons/dark/icon_color_picker_button.svg7
-rw-r--r--editor/icons/dark/icon_color_ramp.svg11
-rw-r--r--editor/icons/dark/icon_color_rect.svg11
-rw-r--r--editor/icons/dark/icon_concave_polygon_shape.svg12
-rw-r--r--editor/icons/dark/icon_concave_polygon_shape_2d.svg5
-rw-r--r--editor/icons/dark/icon_cone_twist_joint.svg7
-rw-r--r--editor/icons/dark/icon_confirmation_dialog.svg5
-rw-r--r--editor/icons/dark/icon_connect.svg7
-rw-r--r--editor/icons/dark/icon_connection_and_groups.svg5
-rw-r--r--editor/icons/dark/icon_container.svg5
-rw-r--r--editor/icons/dark/icon_control.svg5
-rw-r--r--editor/icons/dark/icon_control_align_bottom_center.svg7
-rw-r--r--editor/icons/dark/icon_control_align_bottom_left.svg7
-rw-r--r--editor/icons/dark/icon_control_align_bottom_right.svg7
-rw-r--r--editor/icons/dark/icon_control_align_bottom_wide.svg7
-rw-r--r--editor/icons/dark/icon_control_align_center.svg7
-rw-r--r--editor/icons/dark/icon_control_align_center_left.svg5
-rw-r--r--editor/icons/dark/icon_control_align_center_right.svg5
-rw-r--r--editor/icons/dark/icon_control_align_left_center.svg7
-rw-r--r--editor/icons/dark/icon_control_align_left_wide.svg7
-rw-r--r--editor/icons/dark/icon_control_align_right_center.svg7
-rw-r--r--editor/icons/dark/icon_control_align_right_wide.svg7
-rw-r--r--editor/icons/dark/icon_control_align_top_center.svg7
-rw-r--r--editor/icons/dark/icon_control_align_top_left.svg7
-rw-r--r--editor/icons/dark/icon_control_align_top_right.svg7
-rw-r--r--editor/icons/dark/icon_control_align_top_wide.svg7
-rw-r--r--editor/icons/dark/icon_control_align_wide.svg7
-rw-r--r--editor/icons/dark/icon_control_hcenter_wide.svg7
-rw-r--r--editor/icons/dark/icon_control_vcenter_wide.svg7
-rw-r--r--editor/icons/dark/icon_convex_polygon_shape.svg9
-rw-r--r--editor/icons/dark/icon_convex_polygon_shape_2d.svg5
-rw-r--r--editor/icons/dark/icon_copy_node_path.svg6
-rw-r--r--editor/icons/dark/icon_create_new_scene_from.svg8
-rw-r--r--editor/icons/dark/icon_cube_map.svg10
-rw-r--r--editor/icons/dark/icon_cube_mesh.svg5
-rw-r--r--editor/icons/dark/icon_curve.svg6
-rw-r--r--editor/icons/dark/icon_curve_2d.svg5
-rw-r--r--editor/icons/dark/icon_curve_3d.svg5
-rw-r--r--editor/icons/dark/icon_curve_close.svg11
-rw-r--r--editor/icons/dark/icon_curve_constant.svg5
-rw-r--r--editor/icons/dark/icon_curve_create.svg10
-rw-r--r--editor/icons/dark/icon_curve_curve.svg9
-rw-r--r--editor/icons/dark/icon_curve_delete.svg9
-rw-r--r--editor/icons/dark/icon_curve_edit.svg9
-rw-r--r--editor/icons/dark/icon_curve_in.svg5
-rw-r--r--editor/icons/dark/icon_curve_in_out.svg5
-rw-r--r--editor/icons/dark/icon_curve_linear.svg5
-rw-r--r--editor/icons/dark/icon_curve_out.svg5
-rw-r--r--editor/icons/dark/icon_curve_out_in.svg5
-rw-r--r--editor/icons/dark/icon_curve_texture.svg5
-rw-r--r--editor/icons/dark/icon_cylinder_mesh.svg5
-rw-r--r--editor/icons/dark/icon_damped_spring_joint_2d.svg6
-rw-r--r--editor/icons/dark/icon_debug.svg14
-rw-r--r--editor/icons/dark/icon_debug_continue.svg9
-rw-r--r--editor/icons/dark/icon_debug_next.svg12
-rw-r--r--editor/icons/dark/icon_debug_step.svg13
-rw-r--r--editor/icons/dark/icon_default_project_icon.svg33
-rw-r--r--editor/icons/dark/icon_dependency_changed.svg6
-rw-r--r--editor/icons/dark/icon_dependency_changed_hl.svg5
-rw-r--r--editor/icons/dark/icon_dependency_local_changed.svg6
-rw-r--r--editor/icons/dark/icon_dependency_local_changed_hl.svg5
-rw-r--r--editor/icons/dark/icon_dependency_ok.svg6
-rw-r--r--editor/icons/dark/icon_dependency_ok_hl.svg5
-rw-r--r--editor/icons/dark/icon_directional_light.svg5
-rw-r--r--editor/icons/dark/icon_distraction_free.svg9
-rw-r--r--editor/icons/dark/icon_duplicate.svg5
-rw-r--r--editor/icons/dark/icon_dynamic_font.svg6
-rw-r--r--editor/icons/dark/icon_dynamic_font_data.svg6
-rw-r--r--editor/icons/dark/icon_edit.svg5
-rw-r--r--editor/icons/dark/icon_edit_key.svg6
-rw-r--r--editor/icons/dark/icon_edit_pivot.svg5
-rw-r--r--editor/icons/dark/icon_edit_resource.svg5
-rw-r--r--editor/icons/dark/icon_editor_3d_handle.svg6
-rw-r--r--editor/icons/dark/icon_editor_control_anchor.svg8
-rw-r--r--editor/icons/dark/icon_editor_handle.svg6
-rw-r--r--editor/icons/dark/icon_editor_pivot.svg6
-rw-r--r--editor/icons/dark/icon_editor_plugin.svg9
-rw-r--r--editor/icons/dark/icon_environment.svg8
-rw-r--r--editor/icons/dark/icon_error.svg5
-rw-r--r--editor/icons/dark/icon_error_sign.svg7
-rw-r--r--editor/icons/dark/icon_event_player.svg8
-rw-r--r--editor/icons/dark/icon_favorites.svg5
-rw-r--r--editor/icons/dark/icon_file_big.svg7
-rw-r--r--editor/icons/dark/icon_file_big_broken.svg7
-rw-r--r--editor/icons/dark/icon_file_big_dead.svg7
-rw-r--r--editor/icons/dark/icon_file_broken.svg7
-rw-r--r--editor/icons/dark/icon_file_dialog.svg5
-rw-r--r--editor/icons/dark/icon_file_list.svg5
-rw-r--r--editor/icons/dark/icon_file_server.svg7
-rw-r--r--editor/icons/dark/icon_file_server_active.svg7
-rw-r--r--editor/icons/dark/icon_file_thumbnail.svg5
-rw-r--r--editor/icons/dark/icon_fixed_material.svg5
-rw-r--r--editor/icons/dark/icon_fixed_spatial_material.svg11
-rw-r--r--editor/icons/dark/icon_folder.svg5
-rw-r--r--editor/icons/dark/icon_folder_big.svg5
-rw-r--r--editor/icons/dark/icon_font.svg13
-rw-r--r--editor/icons/dark/icon_forward.svg5
-rw-r--r--editor/icons/dark/icon_g_d_native_library.svg5
-rw-r--r--editor/icons/dark/icon_g_d_script.svg5
-rw-r--r--editor/icons/dark/icon_g_i_probe.svg5
-rw-r--r--editor/icons/dark/icon_g_i_probe_data.svg5
-rw-r--r--editor/icons/dark/icon_generic_6_d_o_f_joint.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_camera.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_directional_light.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_g_i_probe.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_light.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_listener.svg7
-rw-r--r--editor/icons/dark/icon_gizmo_particles.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_reflection_probe.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_spatial_sample_player.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_spatial_stream_player.svg5
-rw-r--r--editor/icons/dark/icon_gizmo_spot_light.svg5
-rw-r--r--editor/icons/dark/icon_godot.svg33
-rw-r--r--editor/icons/dark/icon_gradient.svg11
-rw-r--r--editor/icons/dark/icon_gradient_texture.svg19
-rw-r--r--editor/icons/dark/icon_graph_comment.svg5
-rw-r--r--editor/icons/dark/icon_graph_cube_uniform.svg5
-rw-r--r--editor/icons/dark/icon_graph_curve_map.svg6
-rw-r--r--editor/icons/dark/icon_graph_default_texture.svg5
-rw-r--r--editor/icons/dark/icon_graph_edit.svg6
-rw-r--r--editor/icons/dark/icon_graph_input.svg5
-rw-r--r--editor/icons/dark/icon_graph_node.svg6
-rw-r--r--editor/icons/dark/icon_graph_rgb.svg12
-rw-r--r--editor/icons/dark/icon_graph_rgb_op.svg11
-rw-r--r--editor/icons/dark/icon_graph_rgb_uniform.svg12
-rw-r--r--editor/icons/dark/icon_graph_scalar.svg5
-rw-r--r--editor/icons/dark/icon_graph_scalar_interp.svg5
-rw-r--r--editor/icons/dark/icon_graph_scalar_op.svg8
-rw-r--r--editor/icons/dark/icon_graph_scalar_uniform.svg5
-rw-r--r--editor/icons/dark/icon_graph_scalars_to_vec.svg11
-rw-r--r--editor/icons/dark/icon_graph_texscreen.svg6
-rw-r--r--editor/icons/dark/icon_graph_texture_uniform.svg5
-rw-r--r--editor/icons/dark/icon_graph_time.svg7
-rw-r--r--editor/icons/dark/icon_graph_vec_dp.svg7
-rw-r--r--editor/icons/dark/icon_graph_vec_interp.svg5
-rw-r--r--editor/icons/dark/icon_graph_vec_length.svg7
-rw-r--r--editor/icons/dark/icon_graph_vec_op.svg5
-rw-r--r--editor/icons/dark/icon_graph_vec_scalar_op.svg6
-rw-r--r--editor/icons/dark/icon_graph_vec_to_scalars.svg11
-rw-r--r--editor/icons/dark/icon_graph_vecs_to_xform.svg11
-rw-r--r--editor/icons/dark/icon_graph_vector.svg5
-rw-r--r--editor/icons/dark/icon_graph_vector_uniform.svg6
-rw-r--r--editor/icons/dark/icon_graph_xform.svg11
-rw-r--r--editor/icons/dark/icon_graph_xform_mult.svg7
-rw-r--r--editor/icons/dark/icon_graph_xform_scalar_func.svg10
-rw-r--r--editor/icons/dark/icon_graph_xform_to_vecs.svg11
-rw-r--r--editor/icons/dark/icon_graph_xform_uniform.svg5
-rw-r--r--editor/icons/dark/icon_graph_xform_vec_func.svg10
-rw-r--r--editor/icons/dark/icon_graph_xform_vec_imult.svg7
-rw-r--r--editor/icons/dark/icon_graph_xform_vec_mult.svg7
-rw-r--r--editor/icons/dark/icon_grid.svg5
-rw-r--r--editor/icons/dark/icon_grid_container.svg5
-rw-r--r--editor/icons/dark/icon_grid_map.svg5
-rw-r--r--editor/icons/dark/icon_groove_joint_2d.svg5
-rw-r--r--editor/icons/dark/icon_group.svg6
-rw-r--r--editor/icons/dark/icon_groups.svg7
-rw-r--r--editor/icons/dark/icon_gui_close.svg5
-rw-r--r--editor/icons/dark/icon_h_box_container.svg7
-rw-r--r--editor/icons/dark/icon_h_button_array.svg5
-rw-r--r--editor/icons/dark/icon_h_scroll_bar.svg5
-rw-r--r--editor/icons/dark/icon_h_separator.svg7
-rw-r--r--editor/icons/dark/icon_h_slider.svg5
-rw-r--r--editor/icons/dark/icon_h_split_container.svg8
-rw-r--r--editor/icons/dark/icon_h_t_t_p_request.svg6
-rw-r--r--editor/icons/dark/icon_headphones.svg11
-rw-r--r--editor/icons/dark/icon_help.svg5
-rw-r--r--editor/icons/dark/icon_help_search.svg7
-rw-r--r--editor/icons/dark/icon_hidden.svg5
-rw-r--r--editor/icons/dark/icon_hinge_joint.svg5
-rw-r--r--editor/icons/dark/icon_history.svg8
-rw-r--r--editor/icons/dark/icon_hsize.svg5
-rw-r--r--editor/icons/dark/icon_image.svg5
-rw-r--r--editor/icons/dark/icon_image_texture.svg5
-rw-r--r--editor/icons/dark/icon_immediate_geometry.svg5
-rw-r--r--editor/icons/dark/icon_import_check.svg5
-rw-r--r--editor/icons/dark/icon_import_fail.svg5
-rw-r--r--editor/icons/dark/icon_instance.svg6
-rw-r--r--editor/icons/dark/icon_instance_options.svg6
-rw-r--r--editor/icons/dark/icon_integer.svg7
-rw-r--r--editor/icons/dark/icon_interp_cubic.svg5
-rw-r--r--editor/icons/dark/icon_interp_linear.svg5
-rw-r--r--editor/icons/dark/icon_interp_raw.svg5
-rw-r--r--editor/icons/dark/icon_interp_wrap_clamp.svg9
-rw-r--r--editor/icons/dark/icon_interp_wrap_loop.svg10
-rw-r--r--editor/icons/dark/icon_interpolated_camera.svg5
-rw-r--r--editor/icons/dark/icon_invalid_key.svg5
-rw-r--r--editor/icons/dark/icon_inverse_kinematics.svg12
-rw-r--r--editor/icons/dark/icon_item_list.svg14
-rw-r--r--editor/icons/dark/icon_joy_axis.svg7
-rw-r--r--editor/icons/dark/icon_joy_button.svg6
-rw-r--r--editor/icons/dark/icon_joypad.svg5
-rw-r--r--editor/icons/dark/icon_key.svg7
-rw-r--r--editor/icons/dark/icon_key_hover.svg5
-rw-r--r--editor/icons/dark/icon_key_invalid.svg5
-rw-r--r--editor/icons/dark/icon_key_next.svg6
-rw-r--r--editor/icons/dark/icon_key_selected.svg5
-rw-r--r--editor/icons/dark/icon_key_value.svg5
-rw-r--r--editor/icons/dark/icon_key_xform.svg5
-rw-r--r--editor/icons/dark/icon_keyboard.svg7
-rw-r--r--editor/icons/dark/icon_kinematic_body.svg5
-rw-r--r--editor/icons/dark/icon_kinematic_body_2d.svg5
-rw-r--r--editor/icons/dark/icon_label.svg5
-rw-r--r--editor/icons/dark/icon_large_texture.svg5
-rw-r--r--editor/icons/dark/icon_light_2d.svg5
-rw-r--r--editor/icons/dark/icon_light_occluder_2d.svg11
-rw-r--r--editor/icons/dark/icon_line_2d.svg5
-rw-r--r--editor/icons/dark/icon_line_edit.svg6
-rw-r--r--editor/icons/dark/icon_line_shape_2d.svg7
-rw-r--r--editor/icons/dark/icon_link_button.svg6
-rw-r--r--editor/icons/dark/icon_list_select.svg6
-rw-r--r--editor/icons/dark/icon_listener.svg8
-rw-r--r--editor/icons/dark/icon_load.svg5
-rw-r--r--editor/icons/dark/icon_lock.svg8
-rw-r--r--editor/icons/dark/icon_loop.svg5
-rw-r--r--editor/icons/dark/icon_loop_interpolation.svg10
-rw-r--r--editor/icons/dark/icon_main_play.svg5
-rw-r--r--editor/icons/dark/icon_margin_container.svg6
-rw-r--r--editor/icons/dark/icon_material_preview_cube.svg8
-rw-r--r--editor/icons/dark/icon_material_preview_cube_off.svg9
-rw-r--r--editor/icons/dark/icon_material_preview_light_1.svg5
-rw-r--r--editor/icons/dark/icon_material_preview_light_1_off.svg5
-rw-r--r--editor/icons/dark/icon_material_preview_light_2.svg5
-rw-r--r--editor/icons/dark/icon_material_preview_light_2_off.svg6
-rw-r--r--editor/icons/dark/icon_material_preview_sphere.svg5
-rw-r--r--editor/icons/dark/icon_material_preview_sphere_off.svg5
-rw-r--r--editor/icons/dark/icon_matrix.svg19
-rw-r--r--editor/icons/dark/icon_menu_button.svg6
-rw-r--r--editor/icons/dark/icon_mesh.svg5
-rw-r--r--editor/icons/dark/icon_mesh_instance.svg13
-rw-r--r--editor/icons/dark/icon_mesh_library.svg5
-rw-r--r--editor/icons/dark/icon_mini_aabb.svg10
-rw-r--r--editor/icons/dark/icon_mini_array.svg13
-rw-r--r--editor/icons/dark/icon_mini_basis.svg19
-rw-r--r--editor/icons/dark/icon_mini_boolean.svg13
-rw-r--r--editor/icons/dark/icon_mini_color.svg7
-rw-r--r--editor/icons/dark/icon_mini_color_array.svg14
-rw-r--r--editor/icons/dark/icon_mini_dictionary.svg16
-rw-r--r--editor/icons/dark/icon_mini_float.svg15
-rw-r--r--editor/icons/dark/icon_mini_float_array.svg13
-rw-r--r--editor/icons/dark/icon_mini_image.svg17
-rw-r--r--editor/icons/dark/icon_mini_input.svg15
-rw-r--r--editor/icons/dark/icon_mini_int_array.svg8
-rw-r--r--editor/icons/dark/icon_mini_integer.svg14
-rw-r--r--editor/icons/dark/icon_mini_matrix3.svg19
-rw-r--r--editor/icons/dark/icon_mini_object.svg11
-rw-r--r--editor/icons/dark/icon_mini_path.svg14
-rw-r--r--editor/icons/dark/icon_mini_plane.svg12
-rw-r--r--editor/icons/dark/icon_mini_quat.svg12
-rw-r--r--editor/icons/dark/icon_mini_raw_array.svg9
-rw-r--r--editor/icons/dark/icon_mini_rect2.svg19
-rw-r--r--editor/icons/dark/icon_mini_rid.svg14
-rw-r--r--editor/icons/dark/icon_mini_string.svg12
-rw-r--r--editor/icons/dark/icon_mini_string_array.svg10
-rw-r--r--editor/icons/dark/icon_mini_transform.svg7
-rw-r--r--editor/icons/dark/icon_mini_transform2D.svg10
-rw-r--r--editor/icons/dark/icon_mini_variant.svg14
-rw-r--r--editor/icons/dark/icon_mini_vector2.svg15
-rw-r--r--editor/icons/dark/icon_mini_vector2_array.svg12
-rw-r--r--editor/icons/dark/icon_mini_vector3.svg15
-rw-r--r--editor/icons/dark/icon_mini_vector3_array.svg12
-rw-r--r--editor/icons/dark/icon_mirror_x.svg7
-rw-r--r--editor/icons/dark/icon_mirror_y.svg5
-rw-r--r--editor/icons/dark/icon_mouse.svg5
-rw-r--r--editor/icons/dark/icon_move_down.svg5
-rw-r--r--editor/icons/dark/icon_move_point.svg7
-rw-r--r--editor/icons/dark/icon_move_up.svg5
-rw-r--r--editor/icons/dark/icon_multi_edit.svg8
-rw-r--r--editor/icons/dark/icon_multi_line.svg10
-rw-r--r--editor/icons/dark/icon_multi_mesh.svg5
-rw-r--r--editor/icons/dark/icon_multi_mesh_instance.svg5
-rw-r--r--editor/icons/dark/icon_multi_script.svg6
-rw-r--r--editor/icons/dark/icon_native_script.svg5
-rw-r--r--editor/icons/dark/icon_navigation.svg5
-rw-r--r--editor/icons/dark/icon_navigation_2d.svg5
-rw-r--r--editor/icons/dark/icon_navigation_mesh.svg5
-rw-r--r--editor/icons/dark/icon_navigation_mesh_instance.svg7
-rw-r--r--editor/icons/dark/icon_navigation_polygon.svg8
-rw-r--r--editor/icons/dark/icon_navigation_polygon_instance.svg6
-rw-r--r--editor/icons/dark/icon_new.svg8
-rw-r--r--editor/icons/dark/icon_nine_patch_rect.svg12
-rw-r--r--editor/icons/dark/icon_node.svg5
-rw-r--r--editor/icons/dark/icon_node_2d.svg5
-rw-r--r--editor/icons/dark/icon_node_warning.svg7
-rw-r--r--editor/icons/dark/icon_non_favorite.svg5
-rw-r--r--editor/icons/dark/icon_object.svg6
-rw-r--r--editor/icons/dark/icon_occluder_polygon_2d.svg6
-rw-r--r--editor/icons/dark/icon_omni_light.svg5
-rw-r--r--editor/icons/dark/icon_option_button.svg6
-rw-r--r--editor/icons/dark/icon_override.svg6
-rw-r--r--editor/icons/dark/icon_packed_data_container.svg5
-rw-r--r--editor/icons/dark/icon_packed_scene.svg8
-rw-r--r--editor/icons/dark/icon_panel.svg5
-rw-r--r--editor/icons/dark/icon_panel_container.svg5
-rw-r--r--editor/icons/dark/icon_panels_1.svg5
-rw-r--r--editor/icons/dark/icon_panels_2.svg6
-rw-r--r--editor/icons/dark/icon_panels_2_alt.svg6
-rw-r--r--editor/icons/dark/icon_panels_3.svg7
-rw-r--r--editor/icons/dark/icon_panels_3_alt.svg7
-rw-r--r--editor/icons/dark/icon_panels_4.svg8
-rw-r--r--editor/icons/dark/icon_panorama_sky.svg14
-rw-r--r--editor/icons/dark/icon_parallax_background.svg15
-rw-r--r--editor/icons/dark/icon_parallax_layer.svg8
-rw-r--r--editor/icons/dark/icon_particle_attractor_2d.svg5
-rw-r--r--editor/icons/dark/icon_particles.svg5
-rw-r--r--editor/icons/dark/icon_particles_2d.svg5
-rw-r--r--editor/icons/dark/icon_particles_material.svg11
-rw-r--r--editor/icons/dark/icon_path.svg7
-rw-r--r--editor/icons/dark/icon_path_2d.svg7
-rw-r--r--editor/icons/dark/icon_path_follow.svg7
-rw-r--r--editor/icons/dark/icon_path_follow_2d.svg7
-rw-r--r--editor/icons/dark/icon_pause.svg5
-rw-r--r--editor/icons/dark/icon_pin.svg8
-rw-r--r--editor/icons/dark/icon_pin_joint.svg8
-rw-r--r--editor/icons/dark/icon_pin_joint_2d.svg5
-rw-r--r--editor/icons/dark/icon_pin_pressed.svg8
-rw-r--r--editor/icons/dark/icon_plane.svg5
-rw-r--r--editor/icons/dark/icon_plane_mesh.svg5
-rw-r--r--editor/icons/dark/icon_plane_shape.svg5
-rw-r--r--editor/icons/dark/icon_play.svg5
-rw-r--r--editor/icons/dark/icon_play_backwards.svg5
-rw-r--r--editor/icons/dark/icon_play_custom.svg6
-rw-r--r--editor/icons/dark/icon_play_scene.svg8
-rw-r--r--editor/icons/dark/icon_play_start.svg8
-rw-r--r--editor/icons/dark/icon_play_start_backwards.svg8
-rw-r--r--editor/icons/dark/icon_polygon_2_d.svg5
-rw-r--r--editor/icons/dark/icon_polygon_path_finder.svg5
-rw-r--r--editor/icons/dark/icon_popup.svg5
-rw-r--r--editor/icons/dark/icon_popup_dialog.svg5
-rw-r--r--editor/icons/dark/icon_popup_menu.svg6
-rw-r--r--editor/icons/dark/icon_popup_panel.svg6
-rw-r--r--editor/icons/dark/icon_portal.svg5
-rw-r--r--editor/icons/dark/icon_position_2d.svg5
-rw-r--r--editor/icons/dark/icon_position_3d.svg5
-rw-r--r--editor/icons/dark/icon_prism_mesh.svg5
-rw-r--r--editor/icons/dark/icon_procedural_sky.svg14
-rw-r--r--editor/icons/dark/icon_progress_1.svg12
-rw-r--r--editor/icons/dark/icon_progress_2.svg12
-rw-r--r--editor/icons/dark/icon_progress_3.svg12
-rw-r--r--editor/icons/dark/icon_progress_4.svg12
-rw-r--r--editor/icons/dark/icon_progress_5.svg12
-rw-r--r--editor/icons/dark/icon_progress_6.svg12
-rw-r--r--editor/icons/dark/icon_progress_7.svg12
-rw-r--r--editor/icons/dark/icon_progress_8.svg12
-rw-r--r--editor/icons/dark/icon_progress_bar.svg8
-rw-r--r--editor/icons/dark/icon_proximity_group.svg11
-rw-r--r--editor/icons/dark/icon_quad.svg5
-rw-r--r--editor/icons/dark/icon_quad_mesh.svg5
-rw-r--r--editor/icons/dark/icon_quat.svg6
-rw-r--r--editor/icons/dark/icon_range.svg9
-rw-r--r--editor/icons/dark/icon_rating_no_star.svg7
-rw-r--r--editor/icons/dark/icon_rating_star.svg5
-rw-r--r--editor/icons/dark/icon_ray_cast.svg6
-rw-r--r--editor/icons/dark/icon_ray_cast_2d.svg5
-rw-r--r--editor/icons/dark/icon_ray_shape.svg9
-rw-r--r--editor/icons/dark/icon_ray_shape_2d.svg6
-rw-r--r--editor/icons/dark/icon_rayito.svg6
-rw-r--r--editor/icons/dark/icon_real.svg11
-rw-r--r--editor/icons/dark/icon_rectangle_shape_2d.svg5
-rw-r--r--editor/icons/dark/icon_reference_rect.svg12
-rw-r--r--editor/icons/dark/icon_reflection_probe.svg7
-rw-r--r--editor/icons/dark/icon_region_edit.svg13
-rw-r--r--editor/icons/dark/icon_reload.svg6
-rw-r--r--editor/icons/dark/icon_reload_small.svg6
-rw-r--r--editor/icons/dark/icon_remote.svg7
-rw-r--r--editor/icons/dark/icon_remote_transform.svg8
-rw-r--r--editor/icons/dark/icon_remote_transform_2d.svg8
-rw-r--r--editor/icons/dark/icon_remove.svg7
-rw-r--r--editor/icons/dark/icon_rename.svg5
-rw-r--r--editor/icons/dark/icon_reparent.svg6
-rw-r--r--editor/icons/dark/icon_resource_preloader.svg8
-rw-r--r--editor/icons/dark/icon_rich_text_label.svg11
-rw-r--r--editor/icons/dark/icon_rigid_body.svg6
-rw-r--r--editor/icons/dark/icon_rigid_body_2d.svg13
-rw-r--r--editor/icons/dark/icon_room.svg5
-rw-r--r--editor/icons/dark/icon_room_bounds.svg5
-rw-r--r--editor/icons/dark/icon_rotate_0.svg6
-rw-r--r--editor/icons/dark/icon_rotate_180.svg9
-rw-r--r--editor/icons/dark/icon_rotate_270.svg10
-rw-r--r--editor/icons/dark/icon_rotate_90.svg8
-rw-r--r--editor/icons/dark/icon_sample_library.svg6
-rw-r--r--editor/icons/dark/icon_save.svg7
-rw-r--r--editor/icons/dark/icon_script.svg7
-rw-r--r--editor/icons/dark/icon_script_create.svg8
-rw-r--r--editor/icons/dark/icon_script_remove.svg8
-rw-r--r--editor/icons/dark/icon_scroll_bar.svg7
-rw-r--r--editor/icons/dark/icon_scroll_container.svg9
-rw-r--r--editor/icons/dark/icon_search.svg6
-rw-r--r--editor/icons/dark/icon_segment_shape_2d.svg5
-rw-r--r--editor/icons/dark/icon_shader.svg11
-rw-r--r--editor/icons/dark/icon_short_cut.svg6
-rw-r--r--editor/icons/dark/icon_signal.svg9
-rw-r--r--editor/icons/dark/icon_skeleton.svg8
-rw-r--r--editor/icons/dark/icon_slider_joint.svg10
-rw-r--r--editor/icons/dark/icon_slot.svg7
-rw-r--r--editor/icons/dark/icon_snap.svg10
-rw-r--r--editor/icons/dark/icon_sort.svg5
-rw-r--r--editor/icons/dark/icon_sound_room_params.svg9
-rw-r--r--editor/icons/dark/icon_spatial.svg5
-rw-r--r--editor/icons/dark/icon_spatial_material.svg11
-rw-r--r--editor/icons/dark/icon_spatial_sample_player.svg5
-rw-r--r--editor/icons/dark/icon_spatial_stream_player.svg5
-rw-r--r--editor/icons/dark/icon_sphere_mesh.svg5
-rw-r--r--editor/icons/dark/icon_sphere_shape.svg6
-rw-r--r--editor/icons/dark/icon_spin_box.svg8
-rw-r--r--editor/icons/dark/icon_spot_light.svg5
-rw-r--r--editor/icons/dark/icon_sprite.svg5
-rw-r--r--editor/icons/dark/icon_sprite_3d.svg5
-rw-r--r--editor/icons/dark/icon_sprite_frames.svg5
-rw-r--r--editor/icons/dark/icon_static_body.svg5
-rw-r--r--editor/icons/dark/icon_static_body_2d.svg6
-rw-r--r--editor/icons/dark/icon_stop.svg5
-rw-r--r--editor/icons/dark/icon_stream_player.svg5
-rw-r--r--editor/icons/dark/icon_stream_texture.svg5
-rw-r--r--editor/icons/dark/icon_string.svg5
-rw-r--r--editor/icons/dark/icon_style_box_empty.svg10
-rw-r--r--editor/icons/dark/icon_style_box_flat.svg11
-rw-r--r--editor/icons/dark/icon_style_box_texture.svg11
-rw-r--r--editor/icons/dark/icon_tab_container.svg5
-rw-r--r--editor/icons/dark/icon_tabs.svg5
-rw-r--r--editor/icons/dark/icon_test_cube.svg7
-rw-r--r--editor/icons/dark/icon_text_edit.svg6
-rw-r--r--editor/icons/dark/icon_texture_button.svg7
-rw-r--r--editor/icons/dark/icon_texture_progress.svg8
-rw-r--r--editor/icons/dark/icon_texture_rect.svg6
-rw-r--r--editor/icons/dark/icon_theme.svg11
-rw-r--r--editor/icons/dark/icon_thumbnail_wait.svg5
-rw-r--r--editor/icons/dark/icon_tile_map.svg5
-rw-r--r--editor/icons/dark/icon_tile_set.svg5
-rw-r--r--editor/icons/dark/icon_timer.svg8
-rw-r--r--editor/icons/dark/icon_tool_button.svg5
-rw-r--r--editor/icons/dark/icon_tool_move.svg5
-rw-r--r--editor/icons/dark/icon_tool_pan.svg13
-rw-r--r--editor/icons/dark/icon_tool_rotate.svg5
-rw-r--r--editor/icons/dark/icon_tool_scale.svg5
-rw-r--r--editor/icons/dark/icon_tool_select.svg7
-rw-r--r--editor/icons/dark/icon_tools.svg5
-rw-r--r--editor/icons/dark/icon_touch_screen_button.svg5
-rw-r--r--editor/icons/dark/icon_track_add_key.svg5
-rw-r--r--editor/icons/dark/icon_track_add_key_hl.svg6
-rw-r--r--editor/icons/dark/icon_track_continuous.svg5
-rw-r--r--editor/icons/dark/icon_track_discrete.svg7
-rw-r--r--editor/icons/dark/icon_track_trigger.svg9
-rw-r--r--editor/icons/dark/icon_translation.svg5
-rw-r--r--editor/icons/dark/icon_transpose.svg5
-rw-r--r--editor/icons/dark/icon_tree.svg6
-rw-r--r--editor/icons/dark/icon_tween.svg5
-rw-r--r--editor/icons/dark/icon_unbone.svg5
-rw-r--r--editor/icons/dark/icon_ungroup.svg6
-rw-r--r--editor/icons/dark/icon_unlock.svg7
-rw-r--r--editor/icons/dark/icon_uv.svg5
-rw-r--r--editor/icons/dark/icon_v_box_container.svg5
-rw-r--r--editor/icons/dark/icon_v_button_array.svg6
-rw-r--r--editor/icons/dark/icon_v_scroll_bar.svg5
-rw-r--r--editor/icons/dark/icon_v_separator.svg5
-rw-r--r--editor/icons/dark/icon_v_slider.svg5
-rw-r--r--editor/icons/dark/icon_v_split_container.svg5
-rw-r--r--editor/icons/dark/icon_variant.svg16
-rw-r--r--editor/icons/dark/icon_vector.svg6
-rw-r--r--editor/icons/dark/icon_vector2.svg5
-rw-r--r--editor/icons/dark/icon_vehicle_body.svg5
-rw-r--r--editor/icons/dark/icon_vehicle_wheel.svg6
-rw-r--r--editor/icons/dark/icon_video_player.svg7
-rw-r--r--editor/icons/dark/icon_viewport.svg5
-rw-r--r--editor/icons/dark/icon_viewport_container.svg5
-rw-r--r--editor/icons/dark/icon_viewport_sprite.svg7
-rw-r--r--editor/icons/dark/icon_viewport_texture.svg5
-rw-r--r--editor/icons/dark/icon_visibility_enabler.svg5
-rw-r--r--editor/icons/dark/icon_visibility_enabler_2d.svg5
-rw-r--r--editor/icons/dark/icon_visibility_notifier.svg5
-rw-r--r--editor/icons/dark/icon_visibility_notifier_2d.svg5
-rw-r--r--editor/icons/dark/icon_visible.svg5
-rw-r--r--editor/icons/dark/icon_visual_script.svg6
-rw-r--r--editor/icons/dark/icon_visual_shader_port.svg5
-rw-r--r--editor/icons/dark/icon_vu_empty.svg13
-rw-r--r--editor/icons/dark/icon_vu_full.svg12
-rw-r--r--editor/icons/dark/icon_warning.svg5
-rw-r--r--editor/icons/dark/icon_window_dialog.svg5
-rw-r--r--editor/icons/dark/icon_world.svg6
-rw-r--r--editor/icons/dark/icon_world_2d.svg5
-rw-r--r--editor/icons/dark/icon_world_environment.svg6
-rw-r--r--editor/icons/dark/icon_y_sort.svg5
-rw-r--r--editor/icons/dark/icon_zoom.svg5
-rw-r--r--editor/icons/dark/icon_zoom_less.svg5
-rw-r--r--editor/icons/dark/icon_zoom_more.svg12
-rw-r--r--editor/icons/dark/icon_zoom_reset.svg10
-rw-r--r--editor/icons/icon_2_d.pngbin252 -> 0 bytes
-rw-r--r--editor/icons/icon_2_d.svg5
-rw-r--r--editor/icons/icon_3_d.pngbin363 -> 0 bytes
-rw-r--r--editor/icons/icon_3_d.svg5
-rw-r--r--editor/icons/icon_GUI_checked.pngbin341 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_checked.svg5
-rw-r--r--editor/icons/icon_GUI_dropdown.pngbin136 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_dropdown.svg7
-rw-r--r--editor/icons/icon_GUI_hslider_bg.pngbin105 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_hslider_bg.svg5
-rw-r--r--editor/icons/icon_GUI_hsplitter.pngbin132 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_hsplitter.svg5
-rw-r--r--editor/icons/icon_GUI_mini_tab_menu.pngbin139 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_mini_tab_menu.svg7
-rw-r--r--editor/icons/icon_GUI_option_arrow.pngbin205 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_option_arrow.svg5
-rw-r--r--editor/icons/icon_GUI_play_button_group.pngbin427 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_play_button_group.svg5
-rw-r--r--editor/icons/icon_GUI_progress_bar.pngbin183 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_progress_bar.svg5
-rw-r--r--editor/icons/icon_GUI_progress_fill.pngbin139 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_progress_fill.svg5
-rw-r--r--editor/icons/icon_GUI_radio_checked.pngbin457 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_radio_checked.svg6
-rw-r--r--editor/icons/icon_GUI_radio_unchecked.pngbin420 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_radio_unchecked.svg5
-rw-r--r--editor/icons/icon_GUI_scroll_bg.pngbin90 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_scroll_bg.svg1
-rw-r--r--editor/icons/icon_GUI_scroll_grabber.pngbin147 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_scroll_grabber.svg5
-rw-r--r--editor/icons/icon_GUI_scroll_grabber_hl.pngbin176 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_scroll_grabber_hl.svg5
-rw-r--r--editor/icons/icon_GUI_scroll_grabber_pressed.svg5
-rw-r--r--editor/icons/icon_GUI_slider_grabber.pngbin168 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_slider_grabber.svg5
-rw-r--r--editor/icons/icon_GUI_slider_grabber_hl.pngbin477 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_slider_grabber_hl.svg6
-rw-r--r--editor/icons/icon_GUI_spinbox_updown.pngbin345 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_spinbox_updown.svg5
-rw-r--r--editor/icons/icon_GUI_tab_menu.pngbin146 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_tab_menu.svg7
-rw-r--r--editor/icons/icon_GUI_toggle_off.pngbin1143 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_toggle_off.svg5
-rw-r--r--editor/icons/icon_GUI_toggle_on.pngbin1030 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_toggle_on.svg5
-rw-r--r--editor/icons/icon_GUI_tree_arrow_down.pngbin170 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_tree_arrow_down.svg5
-rw-r--r--editor/icons/icon_GUI_tree_arrow_right.pngbin189 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_tree_arrow_right.svg5
-rw-r--r--editor/icons/icon_GUI_unchecked.pngbin231 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_unchecked.svg5
-rw-r--r--editor/icons/icon_GUI_vslider_bg.pngbin108 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_vslider_bg.svg5
-rw-r--r--editor/icons/icon_GUI_vsplit_bg.pngbin96 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_vsplit_bg.svg5
-rw-r--r--editor/icons/icon_GUI_vsplitter.pngbin122 -> 0 bytes
-rw-r--r--editor/icons/icon_GUI_vsplitter.svg5
-rw-r--r--editor/icons/icon_accept_dialog.pngbin338 -> 0 bytes
-rw-r--r--editor/icons/icon_accept_dialog.svg5
-rw-r--r--editor/icons/icon_add.pngbin129 -> 0 bytes
-rw-r--r--editor/icons/icon_add.svg5
-rw-r--r--editor/icons/icon_add_track.pngbin129 -> 0 bytes
-rw-r--r--editor/icons/icon_anchor.pngbin451 -> 0 bytes
-rw-r--r--editor/icons/icon_anchor.svg5
-rw-r--r--editor/icons/icon_anim_export.pngbin552 -> 0 bytes
-rw-r--r--editor/icons/icon_anim_export_all.pngbin566 -> 0 bytes
-rw-r--r--editor/icons/icon_anim_get.pngbin276 -> 0 bytes
-rw-r--r--editor/icons/icon_anim_get_hl.pngbin270 -> 0 bytes
-rw-r--r--editor/icons/icon_anim_import.pngbin572 -> 0 bytes
-rw-r--r--editor/icons/icon_anim_import_all.pngbin586 -> 0 bytes
-rw-r--r--editor/icons/icon_anim_set.pngbin287 -> 0 bytes
-rw-r--r--editor/icons/icon_anim_set_hl.pngbin268 -> 0 bytes
-rw-r--r--editor/icons/icon_animated_sprite.pngbin584 -> 0 bytes
-rw-r--r--editor/icons/icon_animated_sprite.svg7
-rw-r--r--editor/icons/icon_animated_sprite_3d.pngbin552 -> 0 bytes
-rw-r--r--editor/icons/icon_animated_sprite_3d.svg7
-rw-r--r--editor/icons/icon_animation.pngbin399 -> 0 bytes
-rw-r--r--editor/icons/icon_animation.svg5
-rw-r--r--editor/icons/icon_animation_node.pngbin261 -> 0 bytes
-rw-r--r--editor/icons/icon_animation_play.pngbin593 -> 0 bytes
-rw-r--r--editor/icons/icon_animation_player.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/icon_animation_player.svg5
-rw-r--r--editor/icons/icon_animation_set.pngbin529 -> 0 bytes
-rw-r--r--editor/icons/icon_animation_tree.pngbin218 -> 0 bytes
-rw-r--r--editor/icons/icon_animation_tree_player.pngbin218 -> 0 bytes
-rw-r--r--editor/icons/icon_animation_tree_player.svg5
-rw-r--r--editor/icons/icon_area.pngbin176 -> 0 bytes
-rw-r--r--editor/icons/icon_area.svg5
-rw-r--r--editor/icons/icon_area_2d.pngbin182 -> 0 bytes
-rw-r--r--editor/icons/icon_area_2d.svg5
-rw-r--r--editor/icons/icon_array_data.pngbin176 -> 0 bytes
-rw-r--r--editor/icons/icon_array_float.pngbin177 -> 0 bytes
-rw-r--r--editor/icons/icon_array_int.pngbin172 -> 0 bytes
-rw-r--r--editor/icons/icon_array_mesh.svg5
-rw-r--r--editor/icons/icon_array_string.pngbin178 -> 0 bytes
-rw-r--r--editor/icons/icon_array_variant.pngbin172 -> 0 bytes
-rw-r--r--editor/icons/icon_arrow_left.pngbin269 -> 0 bytes
-rw-r--r--editor/icons/icon_arrow_left.svg5
-rw-r--r--editor/icons/icon_arrow_left_disabled.pngbin244 -> 0 bytes
-rw-r--r--editor/icons/icon_arrow_right.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/icon_arrow_right.svg5
-rw-r--r--editor/icons/icon_arrow_right_disabled.pngbin252 -> 0 bytes
-rw-r--r--editor/icons/icon_arrow_up.pngbin259 -> 0 bytes
-rw-r--r--editor/icons/icon_arrow_up.svg5
-rw-r--r--editor/icons/icon_arrow_up_disabled.pngbin275 -> 0 bytes
-rw-r--r--editor/icons/icon_asset_lib.pngbin224 -> 0 bytes
-rw-r--r--editor/icons/icon_asset_lib.svg5
-rw-r--r--editor/icons/icon_atlas_texture.pngbin286 -> 0 bytes
-rw-r--r--editor/icons/icon_atlas_texture.svg5
-rw-r--r--editor/icons/icon_audio_bus_bypass.pngbin242 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_bus_bypass.svg5
-rw-r--r--editor/icons/icon_audio_bus_layout.pngbin319 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_bus_layout.svg12
-rw-r--r--editor/icons/icon_audio_bus_mute.pngbin292 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_bus_mute.svg5
-rw-r--r--editor/icons/icon_audio_bus_solo.pngbin309 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_bus_solo.svg5
-rw-r--r--editor/icons/icon_audio_effect_amplify.pngbin300 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_effect_amplify.svg12
-rw-r--r--editor/icons/icon_audio_stream_gibberish.pngbin250 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_gibberish.svg5
-rw-r--r--editor/icons/icon_audio_stream_m_p_c.pngbin832 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_o_g_g_vorbis.pngbin774 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_opus.pngbin559 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_player.pngbin443 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_player.svg13
-rw-r--r--editor/icons/icon_audio_stream_player_2_d.pngbin445 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_player_2_d.svg13
-rw-r--r--editor/icons/icon_audio_stream_player_3_d.pngbin433 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_player_3_d.svg13
-rw-r--r--editor/icons/icon_audio_stream_sample.pngbin425 -> 0 bytes
-rw-r--r--editor/icons/icon_audio_stream_sample.svg12
-rw-r--r--editor/icons/icon_audio_stream_speex.pngbin1080 -> 0 bytes
-rw-r--r--editor/icons/icon_auto_play.pngbin370 -> 0 bytes
-rw-r--r--editor/icons/icon_auto_play.svg5
-rw-r--r--editor/icons/icon_b_c_s_f_x.pngbin451 -> 0 bytes
-rw-r--r--editor/icons/icon_b_g_color_f_x.pngbin367 -> 0 bytes
-rw-r--r--editor/icons/icon_b_g_image_f_x.pngbin753 -> 0 bytes
-rw-r--r--editor/icons/icon_back.pngbin290 -> 0 bytes
-rw-r--r--editor/icons/icon_back.svg5
-rw-r--r--editor/icons/icon_back_buffer_copy.pngbin158 -> 0 bytes
-rw-r--r--editor/icons/icon_back_buffer_copy.svg5
-rw-r--r--editor/icons/icon_back_disabled.pngbin175 -> 0 bytes
-rw-r--r--editor/icons/icon_back_no.pngbin213 -> 0 bytes
-rw-r--r--editor/icons/icon_bake.pngbin180 -> 0 bytes
-rw-r--r--editor/icons/icon_bake.svg5
-rw-r--r--editor/icons/icon_baked_light.pngbin179 -> 0 bytes
-rw-r--r--editor/icons/icon_baked_light.svg5
-rw-r--r--editor/icons/icon_baked_light_instance.pngbin179 -> 0 bytes
-rw-r--r--editor/icons/icon_baked_light_instance.svg5
-rw-r--r--editor/icons/icon_baked_light_sampler.pngbin230 -> 0 bytes
-rw-r--r--editor/icons/icon_baked_light_sampler.svg5
-rw-r--r--editor/icons/icon_bit_map.pngbin119 -> 0 bytes
-rw-r--r--editor/icons/icon_bit_map.svg5
-rw-r--r--editor/icons/icon_bitmap_font.pngbin160 -> 0 bytes
-rw-r--r--editor/icons/icon_bitmap_font.svg5
-rw-r--r--editor/icons/icon_blend.pngbin578 -> 0 bytes
-rw-r--r--editor/icons/icon_blend.svg5
-rw-r--r--editor/icons/icon_bone.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/icon_bone.svg5
-rw-r--r--editor/icons/icon_bone_attachment.pngbin333 -> 0 bytes
-rw-r--r--editor/icons/icon_bone_attachment.svg5
-rw-r--r--editor/icons/icon_bone_track.pngbin343 -> 0 bytes
-rw-r--r--editor/icons/icon_bone_track.svg5
-rw-r--r--editor/icons/icon_bool.pngbin250 -> 0 bytes
-rw-r--r--editor/icons/icon_bool.svg5
-rw-r--r--editor/icons/icon_box_shape.pngbin392 -> 0 bytes
-rw-r--r--editor/icons/icon_box_shape.svg7
-rw-r--r--editor/icons/icon_bus_vu_db.pngbin3410 -> 0 bytes
-rw-r--r--editor/icons/icon_bus_vu_db.svg12
-rw-r--r--editor/icons/icon_bus_vu_empty.pngbin938 -> 0 bytes
-rw-r--r--editor/icons/icon_bus_vu_empty.svg13
-rw-r--r--editor/icons/icon_bus_vu_frozen.pngbin925 -> 0 bytes
-rw-r--r--editor/icons/icon_bus_vu_frozen.svg12
-rw-r--r--editor/icons/icon_bus_vu_full.pngbin894 -> 0 bytes
-rw-r--r--editor/icons/icon_bus_vu_full.svg12
-rw-r--r--editor/icons/icon_button.pngbin274 -> 0 bytes
-rw-r--r--editor/icons/icon_button.svg5
-rw-r--r--editor/icons/icon_button_group.pngbin283 -> 0 bytes
-rw-r--r--editor/icons/icon_button_group.svg5
-rw-r--r--editor/icons/icon_camera.pngbin225 -> 0 bytes
-rw-r--r--editor/icons/icon_camera.svg5
-rw-r--r--editor/icons/icon_camera_2d.pngbin229 -> 0 bytes
-rw-r--r--editor/icons/icon_camera_2d.svg5
-rw-r--r--editor/icons/icon_canvas_item.pngbin411 -> 0 bytes
-rw-r--r--editor/icons/icon_canvas_item.svg5
-rw-r--r--editor/icons/icon_canvas_item_material.pngbin350 -> 0 bytes
-rw-r--r--editor/icons/icon_canvas_item_material.svg11
-rw-r--r--editor/icons/icon_canvas_item_shader.pngbin416 -> 0 bytes
-rw-r--r--editor/icons/icon_canvas_item_shader.svg11
-rw-r--r--editor/icons/icon_canvas_item_shader_graph.pngbin440 -> 0 bytes
-rw-r--r--editor/icons/icon_canvas_item_shader_graph.svg19
-rw-r--r--editor/icons/icon_canvas_layer.pngbin474 -> 0 bytes
-rw-r--r--editor/icons/icon_canvas_layer.svg5
-rw-r--r--editor/icons/icon_canvas_modulate.pngbin213 -> 0 bytes
-rw-r--r--editor/icons/icon_canvas_modulate.svg8
-rw-r--r--editor/icons/icon_capsule_mesh.pngbin408 -> 0 bytes
-rw-r--r--editor/icons/icon_capsule_mesh.svg5
-rw-r--r--editor/icons/icon_capsule_shape.pngbin225 -> 0 bytes
-rw-r--r--editor/icons/icon_capsule_shape.svg6
-rw-r--r--editor/icons/icon_capsule_shape_2d.pngbin309 -> 0 bytes
-rw-r--r--editor/icons/icon_capsule_shape_2d.svg5
-rw-r--r--editor/icons/icon_center_container.pngbin294 -> 0 bytes
-rw-r--r--editor/icons/icon_center_container.svg5
-rw-r--r--editor/icons/icon_character_body.pngbin559 -> 0 bytes
-rw-r--r--editor/icons/icon_character_camera.pngbin477 -> 0 bytes
-rw-r--r--editor/icons/icon_check_box.pngbin404 -> 0 bytes
-rw-r--r--editor/icons/icon_check_box.svg5
-rw-r--r--editor/icons/icon_check_button.pngbin283 -> 0 bytes
-rw-r--r--editor/icons/icon_check_button.svg5
-rw-r--r--editor/icons/icon_checked.pngbin377 -> 0 bytes
-rw-r--r--editor/icons/icon_checkerboard.pngbin253 -> 0 bytes
-rw-r--r--editor/icons/icon_checkerboard.svg6
-rw-r--r--editor/icons/icon_circle_shape_2d.pngbin425 -> 0 bytes
-rw-r--r--editor/icons/icon_circle_shape_2d.svg5
-rw-r--r--editor/icons/icon_class_list.pngbin157 -> 0 bytes
-rw-r--r--editor/icons/icon_class_list.svg11
-rw-r--r--editor/icons/icon_clear.svg5
-rw-r--r--editor/icons/icon_click2edit.pngbin294 -> 0 bytes
-rw-r--r--editor/icons/icon_close.pngbin325 -> 0 bytes
-rw-r--r--editor/icons/icon_close.svg5
-rw-r--r--editor/icons/icon_close_hover.pngbin391 -> 0 bytes
-rw-r--r--editor/icons/icon_collapse.pngbin230 -> 0 bytes
-rw-r--r--editor/icons/icon_collapse.svg5
-rw-r--r--editor/icons/icon_collapse_hl.pngbin338 -> 0 bytes
-rw-r--r--editor/icons/icon_collision.pngbin320 -> 0 bytes
-rw-r--r--editor/icons/icon_collision_2d.pngbin281 -> 0 bytes
-rw-r--r--editor/icons/icon_collision_polygon.pngbin287 -> 0 bytes
-rw-r--r--editor/icons/icon_collision_polygon.svg5
-rw-r--r--editor/icons/icon_collision_polygon_2d.pngbin281 -> 0 bytes
-rw-r--r--editor/icons/icon_collision_polygon_2d.svg5
-rw-r--r--editor/icons/icon_collision_shape.pngbin278 -> 0 bytes
-rw-r--r--editor/icons/icon_collision_shape.svg7
-rw-r--r--editor/icons/icon_collision_shape_2d.pngbin164 -> 0 bytes
-rw-r--r--editor/icons/icon_collision_shape_2d.svg5
-rw-r--r--editor/icons/icon_color.pngbin582 -> 0 bytes
-rw-r--r--editor/icons/icon_color.svg24
-rw-r--r--editor/icons/icon_color_pick.pngbin416 -> 0 bytes
-rw-r--r--editor/icons/icon_color_pick.svg5
-rw-r--r--editor/icons/icon_color_picker.pngbin432 -> 0 bytes
-rw-r--r--editor/icons/icon_color_picker.svg5
-rw-r--r--editor/icons/icon_color_picker_button.pngbin548 -> 0 bytes
-rw-r--r--editor/icons/icon_color_picker_button.svg7
-rw-r--r--editor/icons/icon_color_ramp.pngbin222 -> 0 bytes
-rw-r--r--editor/icons/icon_color_ramp.svg11
-rw-r--r--editor/icons/icon_color_rect.pngbin232 -> 0 bytes
-rw-r--r--editor/icons/icon_color_rect.svg11
-rw-r--r--editor/icons/icon_concave_polygon_shape.pngbin449 -> 0 bytes
-rw-r--r--editor/icons/icon_concave_polygon_shape.svg12
-rw-r--r--editor/icons/icon_concave_polygon_shape_2d.pngbin321 -> 0 bytes
-rw-r--r--editor/icons/icon_concave_polygon_shape_2d.svg5
-rw-r--r--editor/icons/icon_cone_twist_joint.pngbin497 -> 0 bytes
-rw-r--r--editor/icons/icon_cone_twist_joint.svg7
-rw-r--r--editor/icons/icon_confirmation_dialog.pngbin343 -> 0 bytes
-rw-r--r--editor/icons/icon_confirmation_dialog.svg5
-rw-r--r--editor/icons/icon_connect.pngbin445 -> 0 bytes
-rw-r--r--editor/icons/icon_connect.svg7
-rw-r--r--editor/icons/icon_connection_and_groups.pngbin228 -> 0 bytes
-rw-r--r--editor/icons/icon_connection_and_groups.svg5
-rw-r--r--editor/icons/icon_console.pngbin640 -> 0 bytes
-rw-r--r--editor/icons/icon_container.pngbin188 -> 0 bytes
-rw-r--r--editor/icons/icon_container.svg5
-rw-r--r--editor/icons/icon_control.pngbin414 -> 0 bytes
-rw-r--r--editor/icons/icon_control.svg5
-rw-r--r--editor/icons/icon_control_align_bottom_center.pngbin134 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_bottom_center.svg7
-rw-r--r--editor/icons/icon_control_align_bottom_left.pngbin134 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_bottom_left.svg7
-rw-r--r--editor/icons/icon_control_align_bottom_right.pngbin134 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_bottom_right.svg7
-rw-r--r--editor/icons/icon_control_align_bottom_wide.pngbin135 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_bottom_wide.svg7
-rw-r--r--editor/icons/icon_control_align_center.pngbin142 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_center.svg7
-rw-r--r--editor/icons/icon_control_align_center_left.pngbin116 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_center_left.svg5
-rw-r--r--editor/icons/icon_control_align_center_right.pngbin117 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_center_right.svg5
-rw-r--r--editor/icons/icon_control_align_left_center.pngbin141 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_left_center.svg7
-rw-r--r--editor/icons/icon_control_align_left_wide.pngbin123 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_left_wide.svg7
-rw-r--r--editor/icons/icon_control_align_right_center.pngbin142 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_right_center.svg7
-rw-r--r--editor/icons/icon_control_align_right_wide.pngbin124 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_right_wide.svg7
-rw-r--r--editor/icons/icon_control_align_top_center.pngbin141 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_top_center.svg7
-rw-r--r--editor/icons/icon_control_align_top_left.pngbin136 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_top_left.svg7
-rw-r--r--editor/icons/icon_control_align_top_right.pngbin141 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_top_right.svg7
-rw-r--r--editor/icons/icon_control_align_top_wide.pngbin136 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_top_wide.svg7
-rw-r--r--editor/icons/icon_control_align_wide.pngbin123 -> 0 bytes
-rw-r--r--editor/icons/icon_control_align_wide.svg7
-rw-r--r--editor/icons/icon_control_hcenter_wide.pngbin142 -> 0 bytes
-rw-r--r--editor/icons/icon_control_hcenter_wide.svg7
-rw-r--r--editor/icons/icon_control_vcenter_wide.pngbin128 -> 0 bytes
-rw-r--r--editor/icons/icon_control_vcenter_wide.svg7
-rw-r--r--editor/icons/icon_convex_polygon_shape.pngbin404 -> 0 bytes
-rw-r--r--editor/icons/icon_convex_polygon_shape.svg9
-rw-r--r--editor/icons/icon_convex_polygon_shape_2d.pngbin297 -> 0 bytes
-rw-r--r--editor/icons/icon_convex_polygon_shape_2d.svg5
-rw-r--r--editor/icons/icon_copy_node_path.pngbin241 -> 0 bytes
-rw-r--r--editor/icons/icon_copy_node_path.svg6
-rw-r--r--editor/icons/icon_create_new_scene_from.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/icon_create_new_scene_from.svg8
-rw-r--r--editor/icons/icon_cube_grid_map.pngbin607 -> 0 bytes
-rw-r--r--editor/icons/icon_cube_map.pngbin134 -> 0 bytes
-rw-r--r--editor/icons/icon_cube_map.svg10
-rw-r--r--editor/icons/icon_cube_mesh.pngbin447 -> 0 bytes
-rw-r--r--editor/icons/icon_cube_mesh.svg5
-rw-r--r--editor/icons/icon_curve.pngbin339 -> 0 bytes
-rw-r--r--editor/icons/icon_curve.svg6
-rw-r--r--editor/icons/icon_curve_2d.pngbin342 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_2d.svg5
-rw-r--r--editor/icons/icon_curve_3d.pngbin336 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_3d.svg5
-rw-r--r--editor/icons/icon_curve_close.pngbin351 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_close.svg11
-rw-r--r--editor/icons/icon_curve_constant.pngbin114 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_constant.svg5
-rw-r--r--editor/icons/icon_curve_create.pngbin375 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_create.svg10
-rw-r--r--editor/icons/icon_curve_curve.pngbin412 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_curve.svg9
-rw-r--r--editor/icons/icon_curve_delete.pngbin457 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_delete.svg9
-rw-r--r--editor/icons/icon_curve_edit.pngbin488 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_edit.svg9
-rw-r--r--editor/icons/icon_curve_in.pngbin257 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_in.svg5
-rw-r--r--editor/icons/icon_curve_in_out.pngbin282 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_in_out.svg5
-rw-r--r--editor/icons/icon_curve_linear.pngbin219 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_linear.svg5
-rw-r--r--editor/icons/icon_curve_out.pngbin263 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_out.svg5
-rw-r--r--editor/icons/icon_curve_out_in.pngbin288 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_out_in.svg5
-rw-r--r--editor/icons/icon_curve_texture.pngbin391 -> 0 bytes
-rw-r--r--editor/icons/icon_curve_texture.svg5
-rw-r--r--editor/icons/icon_cylinder_mesh.pngbin364 -> 0 bytes
-rw-r--r--editor/icons/icon_cylinder_mesh.svg5
-rw-r--r--editor/icons/icon_cylinder_shape.pngbin673 -> 0 bytes
-rw-r--r--editor/icons/icon_d_o_f_blur_f_x.pngbin796 -> 0 bytes
-rw-r--r--editor/icons/icon_damped_spring_joint_2d.pngbin316 -> 0 bytes
-rw-r--r--editor/icons/icon_damped_spring_joint_2d.svg6
-rw-r--r--editor/icons/icon_debug.pngbin455 -> 0 bytes
-rw-r--r--editor/icons/icon_debug.svg14
-rw-r--r--editor/icons/icon_debug_continue.pngbin302 -> 0 bytes
-rw-r--r--editor/icons/icon_debug_continue.svg9
-rw-r--r--editor/icons/icon_debug_next.pngbin220 -> 0 bytes
-rw-r--r--editor/icons/icon_debug_next.svg12
-rw-r--r--editor/icons/icon_debug_step.pngbin219 -> 0 bytes
-rw-r--r--editor/icons/icon_debug_step.svg13
-rw-r--r--editor/icons/icon_default_project_icon.pngbin3480 -> 0 bytes
-rw-r--r--editor/icons/icon_default_project_icon.svg33
-rw-r--r--editor/icons/icon_del.pngbin398 -> 0 bytes
-rw-r--r--editor/icons/icon_dependency_changed.pngbin392 -> 0 bytes
-rw-r--r--editor/icons/icon_dependency_changed.svg6
-rw-r--r--editor/icons/icon_dependency_changed_hl.pngbin330 -> 0 bytes
-rw-r--r--editor/icons/icon_dependency_changed_hl.svg5
-rw-r--r--editor/icons/icon_dependency_local_changed.pngbin571 -> 0 bytes
-rw-r--r--editor/icons/icon_dependency_local_changed.svg6
-rw-r--r--editor/icons/icon_dependency_local_changed_hl.pngbin460 -> 0 bytes
-rw-r--r--editor/icons/icon_dependency_local_changed_hl.svg5
-rw-r--r--editor/icons/icon_dependency_ok.pngbin518 -> 0 bytes
-rw-r--r--editor/icons/icon_dependency_ok.svg6
-rw-r--r--editor/icons/icon_dependency_ok_hl.pngbin413 -> 0 bytes
-rw-r--r--editor/icons/icon_dependency_ok_hl.svg5
-rw-r--r--editor/icons/icon_directional_light.pngbin426 -> 0 bytes
-rw-r--r--editor/icons/icon_directional_light.svg5
-rw-r--r--editor/icons/icon_distraction_free.pngbin397 -> 0 bytes
-rw-r--r--editor/icons/icon_distraction_free.svg9
-rw-r--r--editor/icons/icon_doc_code_font.pngbin8123 -> 0 bytes
-rw-r--r--editor/icons/icon_doc_font.pngbin8213 -> 0 bytes
-rw-r--r--editor/icons/icon_doc_title_font.pngbin10222 -> 0 bytes
-rw-r--r--editor/icons/icon_down.pngbin186 -> 0 bytes
-rw-r--r--editor/icons/icon_dropdown.pngbin179 -> 0 bytes
-rw-r--r--editor/icons/icon_dummy.pngbin217 -> 0 bytes
-rw-r--r--editor/icons/icon_duplicate.pngbin167 -> 0 bytes
-rw-r--r--editor/icons/icon_duplicate.svg5
-rw-r--r--editor/icons/icon_dynamic_character_body.pngbin559 -> 0 bytes
-rw-r--r--editor/icons/icon_dynamic_custom_body.pngbin556 -> 0 bytes
-rw-r--r--editor/icons/icon_dynamic_font.pngbin239 -> 0 bytes
-rw-r--r--editor/icons/icon_dynamic_font.svg6
-rw-r--r--editor/icons/icon_dynamic_font_data.pngbin246 -> 0 bytes
-rw-r--r--editor/icons/icon_dynamic_font_data.svg6
-rw-r--r--editor/icons/icon_dynamic_rigid_body.pngbin546 -> 0 bytes
-rw-r--r--editor/icons/icon_edit.pngbin346 -> 0 bytes
-rw-r--r--editor/icons/icon_edit.svg5
-rw-r--r--editor/icons/icon_edit_key.pngbin405 -> 0 bytes
-rw-r--r--editor/icons/icon_edit_key.svg6
-rw-r--r--editor/icons/icon_edit_pivot.pngbin327 -> 0 bytes
-rw-r--r--editor/icons/icon_edit_pivot.svg5
-rw-r--r--editor/icons/icon_edit_resource.pngbin202 -> 0 bytes
-rw-r--r--editor/icons/icon_edit_resource.svg5
-rw-r--r--editor/icons/icon_edit_small.pngbin365 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_2d.pngbin197 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_3d_handle.pngbin350 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_3d_handle.svg6
-rw-r--r--editor/icons/icon_editor_control_anchor.svg8
-rw-r--r--editor/icons/icon_editor_focus.pngbin629 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_handle.pngbin214 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_handle.svg6
-rw-r--r--editor/icons/icon_editor_node.pngbin311 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_pivot.pngbin177 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_pivot.svg6
-rw-r--r--editor/icons/icon_editor_plugin.pngbin248 -> 0 bytes
-rw-r--r--editor/icons/icon_editor_plugin.svg9
-rw-r--r--editor/icons/icon_editor_rect_2d.pngbin222 -> 0 bytes
-rw-r--r--editor/icons/icon_empty_control.pngbin233 -> 0 bytes
-rw-r--r--editor/icons/icon_enum.pngbin123 -> 0 bytes
-rw-r--r--editor/icons/icon_environment.pngbin506 -> 0 bytes
-rw-r--r--editor/icons/icon_environment.svg8
-rw-r--r--editor/icons/icon_error.pngbin195 -> 0 bytes
-rw-r--r--editor/icons/icon_error.svg5
-rw-r--r--editor/icons/icon_error_sign.pngbin255 -> 0 bytes
-rw-r--r--editor/icons/icon_error_sign.svg7
-rw-r--r--editor/icons/icon_event_player.pngbin142 -> 0 bytes
-rw-r--r--editor/icons/icon_event_player.svg8
-rw-r--r--editor/icons/icon_expand.pngbin322 -> 0 bytes
-rw-r--r--editor/icons/icon_expand_hl.pngbin320 -> 0 bytes
-rw-r--r--editor/icons/icon_favorites.pngbin385 -> 0 bytes
-rw-r--r--editor/icons/icon_favorites.svg5
-rw-r--r--editor/icons/icon_file.pngbin203 -> 0 bytes
-rw-r--r--editor/icons/icon_file_big.pngbin509 -> 0 bytes
-rw-r--r--editor/icons/icon_file_big.svg7
-rw-r--r--editor/icons/icon_file_big_broken.svg7
-rw-r--r--editor/icons/icon_file_big_dead.svg7
-rw-r--r--editor/icons/icon_file_broken.svg7
-rw-r--r--editor/icons/icon_file_dialog.pngbin241 -> 0 bytes
-rw-r--r--editor/icons/icon_file_dialog.svg5
-rw-r--r--editor/icons/icon_file_list.pngbin123 -> 0 bytes
-rw-r--r--editor/icons/icon_file_list.svg5
-rw-r--r--editor/icons/icon_file_server.pngbin145 -> 0 bytes
-rw-r--r--editor/icons/icon_file_server.svg7
-rw-r--r--editor/icons/icon_file_server_active.pngbin145 -> 0 bytes
-rw-r--r--editor/icons/icon_file_server_active.svg7
-rw-r--r--editor/icons/icon_file_thumbnail.pngbin116 -> 0 bytes
-rw-r--r--editor/icons/icon_file_thumbnail.svg5
-rw-r--r--editor/icons/icon_filesystem.pngbin157 -> 0 bytes
-rw-r--r--editor/icons/icon_fixed_material.pngbin377 -> 0 bytes
-rw-r--r--editor/icons/icon_fixed_material.svg5
-rw-r--r--editor/icons/icon_fixed_spatial_material.pngbin409 -> 0 bytes
-rw-r--r--editor/icons/icon_fixed_spatial_material.svg11
-rw-r--r--editor/icons/icon_fog_f_x.pngbin540 -> 0 bytes
-rw-r--r--editor/icons/icon_folder.pngbin170 -> 0 bytes
-rw-r--r--editor/icons/icon_folder.svg5
-rw-r--r--editor/icons/icon_folder_big.pngbin482 -> 0 bytes
-rw-r--r--editor/icons/icon_folder_big.svg5
-rw-r--r--editor/icons/icon_folder_scene.pngbin644 -> 0 bytes
-rw-r--r--editor/icons/icon_font.pngbin215 -> 0 bytes
-rw-r--r--editor/icons/icon_font.svg13
-rw-r--r--editor/icons/icon_forward.pngbin292 -> 0 bytes
-rw-r--r--editor/icons/icon_forward.svg5
-rw-r--r--editor/icons/icon_forward_no.pngbin217 -> 0 bytes
-rw-r--r--editor/icons/icon_func.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/icon_g_d_native_library.pngbin360 -> 0 bytes
-rw-r--r--editor/icons/icon_g_d_native_library.svg5
-rw-r--r--editor/icons/icon_g_d_native_script.pngbin392 -> 0 bytes
-rw-r--r--editor/icons/icon_g_d_script.pngbin392 -> 0 bytes
-rw-r--r--editor/icons/icon_g_d_script.svg5
-rw-r--r--editor/icons/icon_g_i_probe.pngbin341 -> 0 bytes
-rw-r--r--editor/icons/icon_g_i_probe.svg5
-rw-r--r--editor/icons/icon_g_i_probe_data.pngbin350 -> 0 bytes
-rw-r--r--editor/icons/icon_g_i_probe_data.svg5
-rw-r--r--editor/icons/icon_gamma_f_x.pngbin461 -> 0 bytes
-rw-r--r--editor/icons/icon_generic_6_d_o_f_joint.pngbin390 -> 0 bytes
-rw-r--r--editor/icons/icon_generic_6_d_o_f_joint.svg5
-rw-r--r--editor/icons/icon_gizmo_camera.svg5
-rw-r--r--editor/icons/icon_gizmo_directional_light.pngbin3628 -> 0 bytes
-rw-r--r--editor/icons/icon_gizmo_directional_light.svg5
-rw-r--r--editor/icons/icon_gizmo_g_i_probe.svg5
-rw-r--r--editor/icons/icon_gizmo_light.pngbin3064 -> 0 bytes
-rw-r--r--editor/icons/icon_gizmo_light.svg5
-rw-r--r--editor/icons/icon_gizmo_listener.pngbin3613 -> 0 bytes
-rw-r--r--editor/icons/icon_gizmo_listener.svg7
-rw-r--r--editor/icons/icon_gizmo_particles.svg5
-rw-r--r--editor/icons/icon_gizmo_reflection_probe.svg5
-rw-r--r--editor/icons/icon_gizmo_spatial_sample_player.pngbin1297 -> 0 bytes
-rw-r--r--editor/icons/icon_gizmo_spatial_sample_player.svg5
-rw-r--r--editor/icons/icon_gizmo_spatial_stream_player.pngbin1720 -> 0 bytes
-rw-r--r--editor/icons/icon_gizmo_spatial_stream_player.svg5
-rw-r--r--editor/icons/icon_gizmo_spot_light.svg5
-rw-r--r--editor/icons/icon_glow_f_x.pngbin676 -> 0 bytes
-rw-r--r--editor/icons/icon_godot.pngbin739 -> 0 bytes
-rw-r--r--editor/icons/icon_godot.svg33
-rw-r--r--editor/icons/icon_godot_asset_default.pngbin4167 -> 0 bytes
-rw-r--r--editor/icons/icon_godot_docs.pngbin722 -> 0 bytes
-rw-r--r--editor/icons/icon_gradient.pngbin180 -> 0 bytes
-rw-r--r--editor/icons/icon_gradient.svg11
-rw-r--r--editor/icons/icon_gradient_texture.pngbin250 -> 0 bytes
-rw-r--r--editor/icons/icon_gradient_texture.svg19
-rw-r--r--editor/icons/icon_graph_color_ramp.pngbin222 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_comment.pngbin125 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_comment.svg5
-rw-r--r--editor/icons/icon_graph_cube_uniform.pngbin445 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_cube_uniform.svg5
-rw-r--r--editor/icons/icon_graph_curve_map.pngbin330 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_curve_map.svg6
-rw-r--r--editor/icons/icon_graph_default_texture.pngbin196 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_default_texture.svg5
-rw-r--r--editor/icons/icon_graph_edit.pngbin467 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_edit.svg6
-rw-r--r--editor/icons/icon_graph_input.pngbin268 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_input.svg5
-rw-r--r--editor/icons/icon_graph_node.pngbin397 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_node.svg6
-rw-r--r--editor/icons/icon_graph_rgb.pngbin443 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_rgb.svg12
-rw-r--r--editor/icons/icon_graph_rgb_op.pngbin165 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_rgb_op.svg11
-rw-r--r--editor/icons/icon_graph_rgb_uniform.pngbin346 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_rgb_uniform.svg12
-rw-r--r--editor/icons/icon_graph_scalar.pngbin269 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_scalar.svg5
-rw-r--r--editor/icons/icon_graph_scalar_interp.pngbin236 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_scalar_interp.svg5
-rw-r--r--editor/icons/icon_graph_scalar_op.pngbin266 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_scalar_op.svg8
-rw-r--r--editor/icons/icon_graph_scalar_uniform.pngbin307 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_scalar_uniform.svg5
-rw-r--r--editor/icons/icon_graph_scalars_to_vec.pngbin355 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_scalars_to_vec.svg11
-rw-r--r--editor/icons/icon_graph_texscreen.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_texscreen.svg6
-rw-r--r--editor/icons/icon_graph_texture_uniform.pngbin237 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_texture_uniform.svg5
-rw-r--r--editor/icons/icon_graph_time.pngbin398 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_time.svg7
-rw-r--r--editor/icons/icon_graph_vec_dp.pngbin258 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vec_dp.svg7
-rw-r--r--editor/icons/icon_graph_vec_interp.pngbin229 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vec_interp.svg5
-rw-r--r--editor/icons/icon_graph_vec_length.pngbin305 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vec_length.svg7
-rw-r--r--editor/icons/icon_graph_vec_op.pngbin266 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vec_op.svg5
-rw-r--r--editor/icons/icon_graph_vec_scalar_op.pngbin299 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vec_scalar_op.svg6
-rw-r--r--editor/icons/icon_graph_vec_to_scalars.pngbin358 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vec_to_scalars.svg11
-rw-r--r--editor/icons/icon_graph_vecs_to_xform.pngbin347 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vecs_to_xform.svg11
-rw-r--r--editor/icons/icon_graph_vector.pngbin345 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vector.svg5
-rw-r--r--editor/icons/icon_graph_vector_uniform.pngbin390 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_vector_uniform.svg6
-rw-r--r--editor/icons/icon_graph_xform.pngbin241 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform.svg11
-rw-r--r--editor/icons/icon_graph_xform_mult.pngbin223 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform_mult.svg7
-rw-r--r--editor/icons/icon_graph_xform_scalar_func.pngbin275 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform_scalar_func.svg10
-rw-r--r--editor/icons/icon_graph_xform_to_vecs.pngbin352 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform_to_vecs.svg11
-rw-r--r--editor/icons/icon_graph_xform_uniform.pngbin310 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform_uniform.svg5
-rw-r--r--editor/icons/icon_graph_xform_vec_func.pngbin277 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform_vec_func.svg10
-rw-r--r--editor/icons/icon_graph_xform_vec_imult.pngbin327 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform_vec_imult.svg7
-rw-r--r--editor/icons/icon_graph_xform_vec_mult.pngbin336 -> 0 bytes
-rw-r--r--editor/icons/icon_graph_xform_vec_mult.svg7
-rw-r--r--editor/icons/icon_grid.pngbin165 -> 0 bytes
-rw-r--r--editor/icons/icon_grid.svg5
-rw-r--r--editor/icons/icon_grid_container.pngbin216 -> 0 bytes
-rw-r--r--editor/icons/icon_grid_container.svg5
-rw-r--r--editor/icons/icon_grid_map.pngbin268 -> 0 bytes
-rw-r--r--editor/icons/icon_grid_map.svg5
-rw-r--r--editor/icons/icon_grid_map_floor.pngbin169 -> 0 bytes
-rw-r--r--editor/icons/icon_groove_joint_2d.pngbin150 -> 0 bytes
-rw-r--r--editor/icons/icon_groove_joint_2d.svg5
-rw-r--r--editor/icons/icon_group.pngbin177 -> 0 bytes
-rw-r--r--editor/icons/icon_group.svg6
-rw-r--r--editor/icons/icon_groups.pngbin194 -> 0 bytes
-rw-r--r--editor/icons/icon_groups.svg7
-rw-r--r--editor/icons/icon_gui_close.svg5
-rw-r--r--editor/icons/icon_gui_close_dark.pngbin171 -> 0 bytes
-rw-r--r--editor/icons/icon_gui_close_light.pngbin216 -> 0 bytes
-rw-r--r--editor/icons/icon_h_box_container.pngbin201 -> 0 bytes
-rw-r--r--editor/icons/icon_h_box_container.svg7
-rw-r--r--editor/icons/icon_h_button_array.pngbin298 -> 0 bytes
-rw-r--r--editor/icons/icon_h_button_array.svg5
-rw-r--r--editor/icons/icon_h_scroll_bar.pngbin381 -> 0 bytes
-rw-r--r--editor/icons/icon_h_scroll_bar.svg5
-rw-r--r--editor/icons/icon_h_separator.pngbin131 -> 0 bytes
-rw-r--r--editor/icons/icon_h_separator.svg7
-rw-r--r--editor/icons/icon_h_slider.pngbin224 -> 0 bytes
-rw-r--r--editor/icons/icon_h_slider.svg5
-rw-r--r--editor/icons/icon_h_split_container.pngbin259 -> 0 bytes
-rw-r--r--editor/icons/icon_h_split_container.svg8
-rw-r--r--editor/icons/icon_h_t_t_p_request.pngbin301 -> 0 bytes
-rw-r--r--editor/icons/icon_h_t_t_p_request.svg6
-rw-r--r--editor/icons/icon_headphones.pngbin350 -> 0 bytes
-rw-r--r--editor/icons/icon_headphones.svg11
-rw-r--r--editor/icons/icon_help.pngbin353 -> 0 bytes
-rw-r--r--editor/icons/icon_help.svg5
-rw-r--r--editor/icons/icon_help_search.pngbin431 -> 0 bytes
-rw-r--r--editor/icons/icon_help_search.svg7
-rw-r--r--editor/icons/icon_hidden.pngbin345 -> 0 bytes
-rw-r--r--editor/icons/icon_hidden.svg5
-rw-r--r--editor/icons/icon_hinge_joint.pngbin353 -> 0 bytes
-rw-r--r--editor/icons/icon_hinge_joint.svg5
-rw-r--r--editor/icons/icon_history.pngbin437 -> 0 bytes
-rw-r--r--editor/icons/icon_history.svg8
-rw-r--r--editor/icons/icon_hsize.pngbin166 -> 0 bytes
-rw-r--r--editor/icons/icon_hsize.svg5
-rw-r--r--editor/icons/icon_hslider_bg.pngbin233 -> 0 bytes
-rw-r--r--editor/icons/icon_hsplit_bg.pngbin96 -> 0 bytes
-rw-r--r--editor/icons/icon_hsplitter.pngbin132 -> 0 bytes
-rw-r--r--editor/icons/icon_iapi.pngbin277 -> 0 bytes
-rw-r--r--editor/icons/icon_image.pngbin263 -> 0 bytes
-rw-r--r--editor/icons/icon_image.svg5
-rw-r--r--editor/icons/icon_image_sky_box.pngbin434 -> 0 bytes
-rw-r--r--editor/icons/icon_image_texture.pngbin200 -> 0 bytes
-rw-r--r--editor/icons/icon_image_texture.svg5
-rw-r--r--editor/icons/icon_immediate_geometry.pngbin411 -> 0 bytes
-rw-r--r--editor/icons/icon_immediate_geometry.svg5
-rw-r--r--editor/icons/icon_import_check.pngbin266 -> 0 bytes
-rw-r--r--editor/icons/icon_import_check.svg5
-rw-r--r--editor/icons/icon_import_fail.pngbin346 -> 0 bytes
-rw-r--r--editor/icons/icon_import_fail.svg5
-rw-r--r--editor/icons/icon_influence_zone.pngbin303 -> 0 bytes
-rw-r--r--editor/icons/icon_instance.pngbin442 -> 0 bytes
-rw-r--r--editor/icons/icon_instance.svg6
-rw-r--r--editor/icons/icon_instance_options.pngbin365 -> 0 bytes
-rw-r--r--editor/icons/icon_instance_options.svg6
-rw-r--r--editor/icons/icon_integer.pngbin126 -> 0 bytes
-rw-r--r--editor/icons/icon_integer.svg7
-rw-r--r--editor/icons/icon_interp_cubic.pngbin281 -> 0 bytes
-rw-r--r--editor/icons/icon_interp_cubic.svg5
-rw-r--r--editor/icons/icon_interp_linear.pngbin271 -> 0 bytes
-rw-r--r--editor/icons/icon_interp_linear.svg5
-rw-r--r--editor/icons/icon_interp_raw.pngbin156 -> 0 bytes
-rw-r--r--editor/icons/icon_interp_raw.svg5
-rw-r--r--editor/icons/icon_interp_wrap_clamp.pngbin233 -> 0 bytes
-rw-r--r--editor/icons/icon_interp_wrap_clamp.svg9
-rw-r--r--editor/icons/icon_interp_wrap_loop.pngbin309 -> 0 bytes
-rw-r--r--editor/icons/icon_interp_wrap_loop.svg10
-rw-r--r--editor/icons/icon_interpolated_camera.pngbin279 -> 0 bytes
-rw-r--r--editor/icons/icon_interpolated_camera.svg5
-rw-r--r--editor/icons/icon_invalid_key.pngbin205 -> 0 bytes
-rw-r--r--editor/icons/icon_invalid_key.svg5
-rw-r--r--editor/icons/icon_inverse_kinematics.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/icon_inverse_kinematics.svg12
-rw-r--r--editor/icons/icon_item_list.pngbin216 -> 0 bytes
-rw-r--r--editor/icons/icon_item_list.svg14
-rw-r--r--editor/icons/icon_joy_axis.pngbin260 -> 0 bytes
-rw-r--r--editor/icons/icon_joy_axis.svg7
-rw-r--r--editor/icons/icon_joy_button.pngbin272 -> 0 bytes
-rw-r--r--editor/icons/icon_joy_button.svg6
-rw-r--r--editor/icons/icon_joypad.pngbin239 -> 0 bytes
-rw-r--r--editor/icons/icon_joypad.svg5
-rw-r--r--editor/icons/icon_key.pngbin285 -> 0 bytes
-rw-r--r--editor/icons/icon_key.svg7
-rw-r--r--editor/icons/icon_key_call.pngbin265 -> 0 bytes
-rw-r--r--editor/icons/icon_key_hover.pngbin138 -> 0 bytes
-rw-r--r--editor/icons/icon_key_hover.svg5
-rw-r--r--editor/icons/icon_key_invalid.pngbin205 -> 0 bytes
-rw-r--r--editor/icons/icon_key_invalid.svg5
-rw-r--r--editor/icons/icon_key_invalid_hover.pngbin239 -> 0 bytes
-rw-r--r--editor/icons/icon_key_next.pngbin321 -> 0 bytes
-rw-r--r--editor/icons/icon_key_next.svg6
-rw-r--r--editor/icons/icon_key_selected.pngbin181 -> 0 bytes
-rw-r--r--editor/icons/icon_key_selected.svg5
-rw-r--r--editor/icons/icon_key_value.pngbin182 -> 0 bytes
-rw-r--r--editor/icons/icon_key_value.svg5
-rw-r--r--editor/icons/icon_key_xform.pngbin192 -> 0 bytes
-rw-r--r--editor/icons/icon_key_xform.svg5
-rw-r--r--editor/icons/icon_keyboard.pngbin299 -> 0 bytes
-rw-r--r--editor/icons/icon_keyboard.svg7
-rw-r--r--editor/icons/icon_keying.pngbin1603 -> 0 bytes
-rw-r--r--editor/icons/icon_kinematic_body.pngbin145 -> 0 bytes
-rw-r--r--editor/icons/icon_kinematic_body.svg5
-rw-r--r--editor/icons/icon_kinematic_body_2d.pngbin147 -> 0 bytes
-rw-r--r--editor/icons/icon_kinematic_body_2d.svg5
-rw-r--r--editor/icons/icon_label.pngbin240 -> 0 bytes
-rw-r--r--editor/icons/icon_label.svg5
-rw-r--r--editor/icons/icon_large_texture.pngbin156 -> 0 bytes
-rw-r--r--editor/icons/icon_large_texture.svg5
-rw-r--r--editor/icons/icon_light_2d.pngbin362 -> 0 bytes
-rw-r--r--editor/icons/icon_light_2d.svg5
-rw-r--r--editor/icons/icon_light_map.pngbin406 -> 0 bytes
-rw-r--r--editor/icons/icon_light_occluder_2d.pngbin146 -> 0 bytes
-rw-r--r--editor/icons/icon_light_occluder_2d.svg11
-rw-r--r--editor/icons/icon_lightr.pngbin272 -> 0 bytes
-rw-r--r--editor/icons/icon_line_2d.pngbin418 -> 0 bytes
-rw-r--r--editor/icons/icon_line_2d.svg5
-rw-r--r--editor/icons/icon_line_edit.pngbin152 -> 0 bytes
-rw-r--r--editor/icons/icon_line_edit.svg6
-rw-r--r--editor/icons/icon_line_shape_2d.pngbin379 -> 0 bytes
-rw-r--r--editor/icons/icon_line_shape_2d.svg7
-rw-r--r--editor/icons/icon_link_button.pngbin409 -> 0 bytes
-rw-r--r--editor/icons/icon_link_button.svg6
-rw-r--r--editor/icons/icon_list_select.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/icon_list_select.svg6
-rw-r--r--editor/icons/icon_listener.pngbin448 -> 0 bytes
-rw-r--r--editor/icons/icon_listener.svg8
-rw-r--r--editor/icons/icon_live_debug.pngbin583 -> 0 bytes
-rw-r--r--editor/icons/icon_load.pngbin271 -> 0 bytes
-rw-r--r--editor/icons/icon_load.svg5
-rw-r--r--editor/icons/icon_lock.pngbin271 -> 0 bytes
-rw-r--r--editor/icons/icon_lock.svg8
-rw-r--r--editor/icons/icon_logo.pngbin11594 -> 0 bytes
-rw-r--r--editor/icons/icon_logo_small.pngbin1465 -> 0 bytes
-rw-r--r--editor/icons/icon_loop.pngbin412 -> 0 bytes
-rw-r--r--editor/icons/icon_loop.svg5
-rw-r--r--editor/icons/icon_loop_interpolation.pngbin374 -> 0 bytes
-rw-r--r--editor/icons/icon_loop_interpolation.svg10
-rw-r--r--editor/icons/icon_main_play.pngbin234 -> 0 bytes
-rw-r--r--editor/icons/icon_main_play.svg5
-rw-r--r--editor/icons/icon_main_stop.pngbin144 -> 0 bytes
-rw-r--r--editor/icons/icon_margin_container.pngbin233 -> 0 bytes
-rw-r--r--editor/icons/icon_margin_container.svg6
-rw-r--r--editor/icons/icon_material_preview_cube.pngbin374 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_cube.svg8
-rw-r--r--editor/icons/icon_material_preview_cube_off.pngbin401 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_cube_off.svg9
-rw-r--r--editor/icons/icon_material_preview_light_1.pngbin359 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_light_1.svg5
-rw-r--r--editor/icons/icon_material_preview_light_1_off.pngbin305 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_light_1_off.svg5
-rw-r--r--editor/icons/icon_material_preview_light_2.pngbin354 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_light_2.svg5
-rw-r--r--editor/icons/icon_material_preview_light_2_off.pngbin443 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_light_2_off.svg6
-rw-r--r--editor/icons/icon_material_preview_sphere.pngbin359 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_sphere.svg5
-rw-r--r--editor/icons/icon_material_preview_sphere_off.pngbin283 -> 0 bytes
-rw-r--r--editor/icons/icon_material_preview_sphere_off.svg5
-rw-r--r--editor/icons/icon_material_shader.pngbin254 -> 0 bytes
-rw-r--r--editor/icons/icon_material_shader_graph.pngbin440 -> 0 bytes
-rw-r--r--editor/icons/icon_matrix.pngbin138 -> 0 bytes
-rw-r--r--editor/icons/icon_matrix.svg19
-rw-r--r--editor/icons/icon_menu_button.pngbin213 -> 0 bytes
-rw-r--r--editor/icons/icon_menu_button.svg6
-rw-r--r--editor/icons/icon_mesh.pngbin343 -> 0 bytes
-rw-r--r--editor/icons/icon_mesh.svg5
-rw-r--r--editor/icons/icon_mesh_instance.pngbin314 -> 0 bytes
-rw-r--r--editor/icons/icon_mesh_instance.svg13
-rw-r--r--editor/icons/icon_mesh_library.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/icon_mesh_library.svg5
-rw-r--r--editor/icons/icon_mesh_old.pngbin615 -> 0 bytes
-rw-r--r--editor/icons/icon_meshr.pngbin744 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_aabb.pngbin360 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_aabb.svg10
-rw-r--r--editor/icons/icon_mini_array.pngbin210 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_array.svg13
-rw-r--r--editor/icons/icon_mini_basis.pngbin270 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_basis.svg19
-rw-r--r--editor/icons/icon_mini_boolean.pngbin256 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_boolean.svg13
-rw-r--r--editor/icons/icon_mini_color.pngbin253 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_color.svg7
-rw-r--r--editor/icons/icon_mini_color_array.pngbin337 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_color_array.svg14
-rw-r--r--editor/icons/icon_mini_dictionary.pngbin230 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_dictionary.svg16
-rw-r--r--editor/icons/icon_mini_float.pngbin233 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_float.svg15
-rw-r--r--editor/icons/icon_mini_float_array.pngbin275 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_float_array.svg13
-rw-r--r--editor/icons/icon_mini_image.pngbin257 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_image.svg17
-rw-r--r--editor/icons/icon_mini_input.pngbin236 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_input.svg15
-rw-r--r--editor/icons/icon_mini_int_array.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_int_array.svg8
-rw-r--r--editor/icons/icon_mini_integer.pngbin228 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_integer.svg14
-rw-r--r--editor/icons/icon_mini_matrix3.pngbin270 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_matrix3.svg19
-rw-r--r--editor/icons/icon_mini_matrix32.pngbin320 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_object.pngbin289 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_object.svg11
-rw-r--r--editor/icons/icon_mini_path.pngbin254 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_path.svg14
-rw-r--r--editor/icons/icon_mini_plane.pngbin249 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_plane.svg12
-rw-r--r--editor/icons/icon_mini_quat.pngbin309 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_quat.svg12
-rw-r--r--editor/icons/icon_mini_raw_array.pngbin248 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_raw_array.svg9
-rw-r--r--editor/icons/icon_mini_rect2.pngbin267 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_rect2.svg19
-rw-r--r--editor/icons/icon_mini_rid.pngbin222 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_rid.svg14
-rw-r--r--editor/icons/icon_mini_string.pngbin258 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_string.svg12
-rw-r--r--editor/icons/icon_mini_string_array.pngbin296 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_string_array.svg10
-rw-r--r--editor/icons/icon_mini_transform.pngbin321 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_transform.svg7
-rw-r--r--editor/icons/icon_mini_transform2D.pngbin330 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_transform2D.svg10
-rw-r--r--editor/icons/icon_mini_variant.pngbin240 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_variant.svg14
-rw-r--r--editor/icons/icon_mini_vector2.pngbin301 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_vector2.svg15
-rw-r--r--editor/icons/icon_mini_vector2_array.pngbin284 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_vector2_array.svg12
-rw-r--r--editor/icons/icon_mini_vector3.pngbin285 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_vector3.svg15
-rw-r--r--editor/icons/icon_mini_vector3_array.pngbin264 -> 0 bytes
-rw-r--r--editor/icons/icon_mini_vector3_array.svg12
-rw-r--r--editor/icons/icon_mirror_x.pngbin247 -> 0 bytes
-rw-r--r--editor/icons/icon_mirror_x.svg7
-rw-r--r--editor/icons/icon_mirror_y.pngbin277 -> 0 bytes
-rw-r--r--editor/icons/icon_mirror_y.svg5
-rw-r--r--editor/icons/icon_mouse.pngbin256 -> 0 bytes
-rw-r--r--editor/icons/icon_mouse.svg5
-rw-r--r--editor/icons/icon_move_down.pngbin309 -> 0 bytes
-rw-r--r--editor/icons/icon_move_down.svg5
-rw-r--r--editor/icons/icon_move_down_hl.pngbin234 -> 0 bytes
-rw-r--r--editor/icons/icon_move_point.pngbin542 -> 0 bytes
-rw-r--r--editor/icons/icon_move_point.svg7
-rw-r--r--editor/icons/icon_move_up.pngbin296 -> 0 bytes
-rw-r--r--editor/icons/icon_move_up.svg5
-rw-r--r--editor/icons/icon_move_up_hl.pngbin224 -> 0 bytes
-rw-r--r--editor/icons/icon_multi_edit.pngbin358 -> 0 bytes
-rw-r--r--editor/icons/icon_multi_edit.svg8
-rw-r--r--editor/icons/icon_multi_line.pngbin140 -> 0 bytes
-rw-r--r--editor/icons/icon_multi_line.svg10
-rw-r--r--editor/icons/icon_multi_mesh.pngbin347 -> 0 bytes
-rw-r--r--editor/icons/icon_multi_mesh.svg5
-rw-r--r--editor/icons/icon_multi_mesh_instance.pngbin376 -> 0 bytes
-rw-r--r--editor/icons/icon_multi_mesh_instance.svg5
-rw-r--r--editor/icons/icon_multi_node_edit.pngbin358 -> 0 bytes
-rw-r--r--editor/icons/icon_multi_script.pngbin318 -> 0 bytes
-rw-r--r--editor/icons/icon_multi_script.svg6
-rw-r--r--editor/icons/icon_native_script.pngbin392 -> 0 bytes
-rw-r--r--editor/icons/icon_native_script.svg5
-rw-r--r--editor/icons/icon_navigation.pngbin344 -> 0 bytes
-rw-r--r--editor/icons/icon_navigation.svg5
-rw-r--r--editor/icons/icon_navigation_2d.pngbin363 -> 0 bytes
-rw-r--r--editor/icons/icon_navigation_2d.svg5
-rw-r--r--editor/icons/icon_navigation_mesh.pngbin450 -> 0 bytes
-rw-r--r--editor/icons/icon_navigation_mesh.svg5
-rw-r--r--editor/icons/icon_navigation_mesh_instance.pngbin480 -> 0 bytes
-rw-r--r--editor/icons/icon_navigation_mesh_instance.svg7
-rw-r--r--editor/icons/icon_navigation_polygon.pngbin384 -> 0 bytes
-rw-r--r--editor/icons/icon_navigation_polygon.svg8
-rw-r--r--editor/icons/icon_navigation_polygon_instance.pngbin409 -> 0 bytes
-rw-r--r--editor/icons/icon_navigation_polygon_instance.svg6
-rw-r--r--editor/icons/icon_new.pngbin203 -> 0 bytes
-rw-r--r--editor/icons/icon_new.svg8
-rw-r--r--editor/icons/icon_nine_patch_rect.pngbin142 -> 0 bytes
-rw-r--r--editor/icons/icon_nine_patch_rect.svg12
-rw-r--r--editor/icons/icon_node.pngbin403 -> 0 bytes
-rw-r--r--editor/icons/icon_node.svg5
-rw-r--r--editor/icons/icon_node_2d.pngbin427 -> 0 bytes
-rw-r--r--editor/icons/icon_node_2d.svg5
-rw-r--r--editor/icons/icon_node_real_slot.pngbin239 -> 0 bytes
-rw-r--r--editor/icons/icon_node_vec_slot.pngbin240 -> 0 bytes
-rw-r--r--editor/icons/icon_node_warning.pngbin320 -> 0 bytes
-rw-r--r--editor/icons/icon_node_warning.svg7
-rw-r--r--editor/icons/icon_non_favorite.pngbin475 -> 0 bytes
-rw-r--r--editor/icons/icon_non_favorite.svg5
-rw-r--r--editor/icons/icon_object.pngbin354 -> 0 bytes
-rw-r--r--editor/icons/icon_object.svg6
-rw-r--r--editor/icons/icon_occluder_polygon_2d.pngbin274 -> 0 bytes
-rw-r--r--editor/icons/icon_occluder_polygon_2d.svg6
-rw-r--r--editor/icons/icon_omni_light.pngbin347 -> 0 bytes
-rw-r--r--editor/icons/icon_omni_light.svg5
-rw-r--r--editor/icons/icon_open.pngbin271 -> 0 bytes
-rw-r--r--editor/icons/icon_option_arrow.pngbin205 -> 0 bytes
-rw-r--r--editor/icons/icon_option_button.pngbin324 -> 0 bytes
-rw-r--r--editor/icons/icon_option_button.svg6
-rw-r--r--editor/icons/icon_override.pngbin281 -> 0 bytes
-rw-r--r--editor/icons/icon_override.svg6
-rw-r--r--editor/icons/icon_p_hash_translation.pngbin194 -> 0 bytes
-rw-r--r--editor/icons/icon_packed_data_container.pngbin176 -> 0 bytes
-rw-r--r--editor/icons/icon_packed_data_container.svg5
-rw-r--r--editor/icons/icon_packed_scene.pngbin289 -> 0 bytes
-rw-r--r--editor/icons/icon_packed_scene.svg8
-rw-r--r--editor/icons/icon_pane_drag.pngbin620 -> 0 bytes
-rw-r--r--editor/icons/icon_pane_drag_hover.pngbin637 -> 0 bytes
-rw-r--r--editor/icons/icon_panel.pngbin175 -> 0 bytes
-rw-r--r--editor/icons/icon_panel.svg5
-rw-r--r--editor/icons/icon_panel_container.pngbin198 -> 0 bytes
-rw-r--r--editor/icons/icon_panel_container.svg5
-rw-r--r--editor/icons/icon_panel_top.pngbin195 -> 0 bytes
-rw-r--r--editor/icons/icon_panels_1.pngbin100 -> 0 bytes
-rw-r--r--editor/icons/icon_panels_1.svg5
-rw-r--r--editor/icons/icon_panels_2.pngbin108 -> 0 bytes
-rw-r--r--editor/icons/icon_panels_2.svg6
-rw-r--r--editor/icons/icon_panels_2_alt.pngbin116 -> 0 bytes
-rw-r--r--editor/icons/icon_panels_2_alt.svg6
-rw-r--r--editor/icons/icon_panels_3.pngbin123 -> 0 bytes
-rw-r--r--editor/icons/icon_panels_3.svg7
-rw-r--r--editor/icons/icon_panels_3_alt.pngbin130 -> 0 bytes
-rw-r--r--editor/icons/icon_panels_3_alt.svg7
-rw-r--r--editor/icons/icon_panels_4.pngbin120 -> 0 bytes
-rw-r--r--editor/icons/icon_panels_4.svg8
-rw-r--r--editor/icons/icon_panorama_sky.pngbin354 -> 0 bytes
-rw-r--r--editor/icons/icon_panorama_sky.svg14
-rw-r--r--editor/icons/icon_parallax_background.pngbin218 -> 0 bytes
-rw-r--r--editor/icons/icon_parallax_background.svg15
-rw-r--r--editor/icons/icon_parallax_layer.pngbin282 -> 0 bytes
-rw-r--r--editor/icons/icon_parallax_layer.svg8
-rw-r--r--editor/icons/icon_particle_attractor_2d.pngbin629 -> 0 bytes
-rw-r--r--editor/icons/icon_particle_attractor_2d.svg5
-rw-r--r--editor/icons/icon_particles.pngbin370 -> 0 bytes
-rw-r--r--editor/icons/icon_particles.svg5
-rw-r--r--editor/icons/icon_particles_2d.pngbin391 -> 0 bytes
-rw-r--r--editor/icons/icon_particles_2d.svg5
-rw-r--r--editor/icons/icon_particles_frame.pngbin254 -> 0 bytes
-rw-r--r--editor/icons/icon_particles_material.pngbin367 -> 0 bytes
-rw-r--r--editor/icons/icon_particles_material.svg11
-rw-r--r--editor/icons/icon_particles_shader.pngbin367 -> 0 bytes
-rw-r--r--editor/icons/icon_patch_9_rect.pngbin128 -> 0 bytes
-rw-r--r--editor/icons/icon_path.pngbin353 -> 0 bytes
-rw-r--r--editor/icons/icon_path.svg7
-rw-r--r--editor/icons/icon_path_2d.pngbin359 -> 0 bytes
-rw-r--r--editor/icons/icon_path_2d.svg7
-rw-r--r--editor/icons/icon_path_follow.pngbin387 -> 0 bytes
-rw-r--r--editor/icons/icon_path_follow.svg7
-rw-r--r--editor/icons/icon_path_follow_2d.pngbin392 -> 0 bytes
-rw-r--r--editor/icons/icon_path_follow_2d.svg7
-rw-r--r--editor/icons/icon_pause.pngbin147 -> 0 bytes
-rw-r--r--editor/icons/icon_pause.svg5
-rw-r--r--editor/icons/icon_pe_edit.pngbin403 -> 0 bytes
-rw-r--r--editor/icons/icon_physics_joint_pin.pngbin454 -> 0 bytes
-rw-r--r--editor/icons/icon_pin.pngbin227 -> 0 bytes
-rw-r--r--editor/icons/icon_pin.svg8
-rw-r--r--editor/icons/icon_pin_joint.pngbin418 -> 0 bytes
-rw-r--r--editor/icons/icon_pin_joint.svg8
-rw-r--r--editor/icons/icon_pin_joint_2d.pngbin428 -> 0 bytes
-rw-r--r--editor/icons/icon_pin_joint_2d.svg5
-rw-r--r--editor/icons/icon_pin_pressed.pngbin227 -> 0 bytes
-rw-r--r--editor/icons/icon_pin_pressed.svg8
-rw-r--r--editor/icons/icon_plane.pngbin235 -> 0 bytes
-rw-r--r--editor/icons/icon_plane.svg5
-rw-r--r--editor/icons/icon_plane_mesh.pngbin328 -> 0 bytes
-rw-r--r--editor/icons/icon_plane_mesh.svg5
-rw-r--r--editor/icons/icon_plane_shape.pngbin229 -> 0 bytes
-rw-r--r--editor/icons/icon_plane_shape.svg5
-rw-r--r--editor/icons/icon_play.pngbin237 -> 0 bytes
-rw-r--r--editor/icons/icon_play.svg5
-rw-r--r--editor/icons/icon_play_backwards.pngbin245 -> 0 bytes
-rw-r--r--editor/icons/icon_play_backwards.svg5
-rw-r--r--editor/icons/icon_play_button_group.pngbin427 -> 0 bytes
-rw-r--r--editor/icons/icon_play_custom.pngbin282 -> 0 bytes
-rw-r--r--editor/icons/icon_play_custom.svg6
-rw-r--r--editor/icons/icon_play_scene.pngbin350 -> 0 bytes
-rw-r--r--editor/icons/icon_play_scene.svg8
-rw-r--r--editor/icons/icon_play_start.pngbin269 -> 0 bytes
-rw-r--r--editor/icons/icon_play_start.svg8
-rw-r--r--editor/icons/icon_play_start_backwards.pngbin279 -> 0 bytes
-rw-r--r--editor/icons/icon_play_start_backwards.svg8
-rw-r--r--editor/icons/icon_polygon_2_d.svg5
-rw-r--r--editor/icons/icon_polygon_2d.pngbin281 -> 0 bytes
-rw-r--r--editor/icons/icon_polygon_path_finder.pngbin307 -> 0 bytes
-rw-r--r--editor/icons/icon_polygon_path_finder.svg5
-rw-r--r--editor/icons/icon_popup.pngbin210 -> 0 bytes
-rw-r--r--editor/icons/icon_popup.svg5
-rw-r--r--editor/icons/icon_popup_dialog.pngbin221 -> 0 bytes
-rw-r--r--editor/icons/icon_popup_dialog.svg5
-rw-r--r--editor/icons/icon_popup_menu.pngbin216 -> 0 bytes
-rw-r--r--editor/icons/icon_popup_menu.svg6
-rw-r--r--editor/icons/icon_popup_panel.pngbin198 -> 0 bytes
-rw-r--r--editor/icons/icon_popup_panel.svg6
-rw-r--r--editor/icons/icon_portal.pngbin452 -> 0 bytes
-rw-r--r--editor/icons/icon_portal.svg5
-rw-r--r--editor/icons/icon_position_2d.pngbin132 -> 0 bytes
-rw-r--r--editor/icons/icon_position_2d.svg5
-rw-r--r--editor/icons/icon_position_3d.pngbin131 -> 0 bytes
-rw-r--r--editor/icons/icon_position_3d.svg5
-rw-r--r--editor/icons/icon_prev_scene.pngbin229 -> 0 bytes
-rw-r--r--editor/icons/icon_prism_mesh.pngbin448 -> 0 bytes
-rw-r--r--editor/icons/icon_prism_mesh.svg5
-rw-r--r--editor/icons/icon_procedural_sky.pngbin339 -> 0 bytes
-rw-r--r--editor/icons/icon_procedural_sky.svg14
-rw-r--r--editor/icons/icon_progress_1.pngbin468 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_1.svg12
-rw-r--r--editor/icons/icon_progress_2.pngbin455 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_2.svg12
-rw-r--r--editor/icons/icon_progress_3.pngbin462 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_3.svg12
-rw-r--r--editor/icons/icon_progress_4.pngbin475 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_4.svg12
-rw-r--r--editor/icons/icon_progress_5.pngbin454 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_5.svg12
-rw-r--r--editor/icons/icon_progress_6.pngbin465 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_6.svg12
-rw-r--r--editor/icons/icon_progress_7.pngbin461 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_7.svg12
-rw-r--r--editor/icons/icon_progress_8.pngbin463 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_8.svg12
-rw-r--r--editor/icons/icon_progress_bar.pngbin208 -> 0 bytes
-rw-r--r--editor/icons/icon_progress_bar.svg8
-rw-r--r--editor/icons/icon_property_editor.pngbin248 -> 0 bytes
-rw-r--r--editor/icons/icon_proximity_group.pngbin223 -> 0 bytes
-rw-r--r--editor/icons/icon_proximity_group.svg11
-rw-r--r--editor/icons/icon_quad.pngbin251 -> 0 bytes
-rw-r--r--editor/icons/icon_quad.svg5
-rw-r--r--editor/icons/icon_quad_mesh.pngbin244 -> 0 bytes
-rw-r--r--editor/icons/icon_quad_mesh.svg5
-rw-r--r--editor/icons/icon_quat.pngbin341 -> 0 bytes
-rw-r--r--editor/icons/icon_quat.svg6
-rw-r--r--editor/icons/icon_range.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/icon_range.svg9
-rw-r--r--editor/icons/icon_rating_no_star.pngbin515 -> 0 bytes
-rw-r--r--editor/icons/icon_rating_no_star.svg7
-rw-r--r--editor/icons/icon_rating_star.pngbin383 -> 0 bytes
-rw-r--r--editor/icons/icon_rating_star.svg5
-rw-r--r--editor/icons/icon_ray_cast.pngbin216 -> 0 bytes
-rw-r--r--editor/icons/icon_ray_cast.svg6
-rw-r--r--editor/icons/icon_ray_cast_2d.pngbin214 -> 0 bytes
-rw-r--r--editor/icons/icon_ray_cast_2d.svg5
-rw-r--r--editor/icons/icon_ray_shape.pngbin363 -> 0 bytes
-rw-r--r--editor/icons/icon_ray_shape.svg9
-rw-r--r--editor/icons/icon_ray_shape_2d.pngbin233 -> 0 bytes
-rw-r--r--editor/icons/icon_ray_shape_2d.svg6
-rw-r--r--editor/icons/icon_rayito.pngbin300 -> 0 bytes
-rw-r--r--editor/icons/icon_rayito.svg6
-rw-r--r--editor/icons/icon_real.pngbin265 -> 0 bytes
-rw-r--r--editor/icons/icon_real.svg11
-rw-r--r--editor/icons/icon_rect2.pngbin193 -> 0 bytes
-rw-r--r--editor/icons/icon_rect3.pngbin202 -> 0 bytes
-rw-r--r--editor/icons/icon_rectangle_shape_2d.pngbin159 -> 0 bytes
-rw-r--r--editor/icons/icon_rectangle_shape_2d.svg5
-rw-r--r--editor/icons/icon_reference_rect.pngbin141 -> 0 bytes
-rw-r--r--editor/icons/icon_reference_rect.svg12
-rw-r--r--editor/icons/icon_reflection_probe.pngbin370 -> 0 bytes
-rw-r--r--editor/icons/icon_reflection_probe.svg7
-rw-r--r--editor/icons/icon_region_edit.pngbin141 -> 0 bytes
-rw-r--r--editor/icons/icon_region_edit.svg13
-rw-r--r--editor/icons/icon_reload.pngbin420 -> 0 bytes
-rw-r--r--editor/icons/icon_reload.svg6
-rw-r--r--editor/icons/icon_reload_empty.pngbin251 -> 0 bytes
-rw-r--r--editor/icons/icon_reload_small.pngbin409 -> 0 bytes
-rw-r--r--editor/icons/icon_reload_small.svg6
-rw-r--r--editor/icons/icon_remote.pngbin394 -> 0 bytes
-rw-r--r--editor/icons/icon_remote.svg7
-rw-r--r--editor/icons/icon_remote_transform.pngbin506 -> 0 bytes
-rw-r--r--editor/icons/icon_remote_transform.svg8
-rw-r--r--editor/icons/icon_remote_transform_2d.pngbin542 -> 0 bytes
-rw-r--r--editor/icons/icon_remote_transform_2d.svg8
-rw-r--r--editor/icons/icon_remove.pngbin184 -> 0 bytes
-rw-r--r--editor/icons/icon_remove.svg7
-rw-r--r--editor/icons/icon_remove_hl.pngbin385 -> 0 bytes
-rw-r--r--editor/icons/icon_remove_small.pngbin297 -> 0 bytes
-rw-r--r--editor/icons/icon_rename.pngbin160 -> 0 bytes
-rw-r--r--editor/icons/icon_rename.svg5
-rw-r--r--editor/icons/icon_reparent.pngbin390 -> 0 bytes
-rw-r--r--editor/icons/icon_reparent.svg6
-rw-r--r--editor/icons/icon_replace.pngbin435 -> 0 bytes
-rw-r--r--editor/icons/icon_resource_preloader.pngbin391 -> 0 bytes
-rw-r--r--editor/icons/icon_resource_preloader.svg8
-rw-r--r--editor/icons/icon_rich_text_label.pngbin236 -> 0 bytes
-rw-r--r--editor/icons/icon_rich_text_label.svg11
-rw-r--r--editor/icons/icon_rid.pngbin468 -> 0 bytes
-rw-r--r--editor/icons/icon_rigid_body.pngbin531 -> 0 bytes
-rw-r--r--editor/icons/icon_rigid_body.svg6
-rw-r--r--editor/icons/icon_rigid_body_2_d.pngbin501 -> 0 bytes
-rw-r--r--editor/icons/icon_rigid_body_2d.pngbin559 -> 0 bytes
-rw-r--r--editor/icons/icon_rigid_body_2d.svg13
-rw-r--r--editor/icons/icon_room.pngbin375 -> 0 bytes
-rw-r--r--editor/icons/icon_room.svg5
-rw-r--r--editor/icons/icon_room_bounds.pngbin363 -> 0 bytes
-rw-r--r--editor/icons/icon_room_bounds.svg5
-rw-r--r--editor/icons/icon_room_instance.pngbin392 -> 0 bytes
-rw-r--r--editor/icons/icon_rotate_0.pngbin436 -> 0 bytes
-rw-r--r--editor/icons/icon_rotate_0.svg6
-rw-r--r--editor/icons/icon_rotate_180.pngbin376 -> 0 bytes
-rw-r--r--editor/icons/icon_rotate_180.svg9
-rw-r--r--editor/icons/icon_rotate_270.pngbin357 -> 0 bytes
-rw-r--r--editor/icons/icon_rotate_270.svg10
-rw-r--r--editor/icons/icon_rotate_90.pngbin412 -> 0 bytes
-rw-r--r--editor/icons/icon_rotate_90.svg8
-rw-r--r--editor/icons/icon_run.pngbin800 -> 0 bytes
-rw-r--r--editor/icons/icon_s_s_a_o_f_x.pngbin564 -> 0 bytes
-rw-r--r--editor/icons/icon_sample.pngbin152 -> 0 bytes
-rw-r--r--editor/icons/icon_sample_library.pngbin333 -> 0 bytes
-rw-r--r--editor/icons/icon_sample_library.svg6
-rw-r--r--editor/icons/icon_sample_player.pngbin234 -> 0 bytes
-rw-r--r--editor/icons/icon_sample_player_2d.pngbin252 -> 0 bytes
-rw-r--r--editor/icons/icon_save.pngbin252 -> 0 bytes
-rw-r--r--editor/icons/icon_save.svg7
-rw-r--r--editor/icons/icon_scene.pngbin476 -> 0 bytes
-rw-r--r--editor/icons/icon_scene_instance.pngbin488 -> 0 bytes
-rw-r--r--editor/icons/icon_scene_tree_editor.pngbin294 -> 0 bytes
-rw-r--r--editor/icons/icon_script.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/icon_script.svg7
-rw-r--r--editor/icons/icon_script_control.pngbin452 -> 0 bytes
-rw-r--r--editor/icons/icon_script_create.pngbin288 -> 0 bytes
-rw-r--r--editor/icons/icon_script_create.svg8
-rw-r--r--editor/icons/icon_script_error.pngbin220 -> 0 bytes
-rw-r--r--editor/icons/icon_script_list.pngbin213 -> 0 bytes
-rw-r--r--editor/icons/icon_script_node.pngbin455 -> 0 bytes
-rw-r--r--editor/icons/icon_script_remove.pngbin411 -> 0 bytes
-rw-r--r--editor/icons/icon_script_remove.svg8
-rw-r--r--editor/icons/icon_scroll_bar.pngbin205 -> 0 bytes
-rw-r--r--editor/icons/icon_scroll_bar.svg7
-rw-r--r--editor/icons/icon_scroll_bg.pngbin90 -> 0 bytes
-rw-r--r--editor/icons/icon_scroll_container.pngbin304 -> 0 bytes
-rw-r--r--editor/icons/icon_scroll_container.svg9
-rw-r--r--editor/icons/icon_scroll_grabber.pngbin147 -> 0 bytes
-rw-r--r--editor/icons/icon_scroll_grabber_hl.pngbin268 -> 0 bytes
-rw-r--r--editor/icons/icon_search.pngbin404 -> 0 bytes
-rw-r--r--editor/icons/icon_search.svg6
-rw-r--r--editor/icons/icon_segment_shape_2d.pngbin241 -> 0 bytes
-rw-r--r--editor/icons/icon_segment_shape_2d.svg5
-rw-r--r--editor/icons/icon_shader.pngbin254 -> 0 bytes
-rw-r--r--editor/icons/icon_shader.svg11
-rw-r--r--editor/icons/icon_shader_material.pngbin254 -> 0 bytes
-rw-r--r--editor/icons/icon_short_cut.pngbin272 -> 0 bytes
-rw-r--r--editor/icons/icon_short_cut.svg6
-rw-r--r--editor/icons/icon_signal.pngbin246 -> 0 bytes
-rw-r--r--editor/icons/icon_signal.svg9
-rw-r--r--editor/icons/icon_skeleton.pngbin346 -> 0 bytes
-rw-r--r--editor/icons/icon_skeleton.svg8
-rw-r--r--editor/icons/icon_skeletonr.pngbin362 -> 0 bytes
-rw-r--r--editor/icons/icon_sky_box_f_x.pngbin740 -> 0 bytes
-rw-r--r--editor/icons/icon_slider_grabber.pngbin384 -> 0 bytes
-rw-r--r--editor/icons/icon_slider_grabber_hl.pngbin354 -> 0 bytes
-rw-r--r--editor/icons/icon_slider_joint.pngbin247 -> 0 bytes
-rw-r--r--editor/icons/icon_slider_joint.svg10
-rw-r--r--editor/icons/icon_slot.pngbin246 -> 0 bytes
-rw-r--r--editor/icons/icon_slot.svg7
-rw-r--r--editor/icons/icon_small_next.pngbin191 -> 0 bytes
-rw-r--r--editor/icons/icon_snap.pngbin269 -> 0 bytes
-rw-r--r--editor/icons/icon_snap.svg10
-rw-r--r--editor/icons/icon_sort.svg5
-rw-r--r--editor/icons/icon_sound_room_params.pngbin248 -> 0 bytes
-rw-r--r--editor/icons/icon_sound_room_params.svg9
-rw-r--r--editor/icons/icon_spatial.pngbin419 -> 0 bytes
-rw-r--r--editor/icons/icon_spatial.svg5
-rw-r--r--editor/icons/icon_spatial_add.pngbin429 -> 0 bytes
-rw-r--r--editor/icons/icon_spatial_material.pngbin483 -> 0 bytes
-rw-r--r--editor/icons/icon_spatial_material.svg11
-rw-r--r--editor/icons/icon_spatial_sample_player.pngbin239 -> 0 bytes
-rw-r--r--editor/icons/icon_spatial_sample_player.svg5
-rw-r--r--editor/icons/icon_spatial_shader.pngbin483 -> 0 bytes
-rw-r--r--editor/icons/icon_spatial_stream_player.pngbin183 -> 0 bytes
-rw-r--r--editor/icons/icon_spatial_stream_player.svg5
-rw-r--r--editor/icons/icon_sphere_mesh.pngbin495 -> 0 bytes
-rw-r--r--editor/icons/icon_sphere_mesh.svg5
-rw-r--r--editor/icons/icon_sphere_shape.pngbin362 -> 0 bytes
-rw-r--r--editor/icons/icon_sphere_shape.svg6
-rw-r--r--editor/icons/icon_spin_box.pngbin289 -> 0 bytes
-rw-r--r--editor/icons/icon_spin_box.svg8
-rw-r--r--editor/icons/icon_spinbox_updown.pngbin345 -> 0 bytes
-rw-r--r--editor/icons/icon_spline.pngbin244 -> 0 bytes
-rw-r--r--editor/icons/icon_spot_light.pngbin341 -> 0 bytes
-rw-r--r--editor/icons/icon_spot_light.svg5
-rw-r--r--editor/icons/icon_sprite.pngbin419 -> 0 bytes
-rw-r--r--editor/icons/icon_sprite.svg5
-rw-r--r--editor/icons/icon_sprite_3d.pngbin408 -> 0 bytes
-rw-r--r--editor/icons/icon_sprite_3d.svg5
-rw-r--r--editor/icons/icon_sprite_frames.pngbin332 -> 0 bytes
-rw-r--r--editor/icons/icon_sprite_frames.svg5
-rw-r--r--editor/icons/icon_squirrel_script.pngbin283 -> 0 bytes
-rw-r--r--editor/icons/icon_static_body.pngbin229 -> 0 bytes
-rw-r--r--editor/icons/icon_static_body.svg5
-rw-r--r--editor/icons/icon_static_body_2_d.pngbin368 -> 0 bytes
-rw-r--r--editor/icons/icon_static_body_2d.pngbin237 -> 0 bytes
-rw-r--r--editor/icons/icon_static_body_2d.svg6
-rw-r--r--editor/icons/icon_stop.pngbin236 -> 0 bytes
-rw-r--r--editor/icons/icon_stop.svg5
-rw-r--r--editor/icons/icon_stream_player.pngbin183 -> 0 bytes
-rw-r--r--editor/icons/icon_stream_player.svg5
-rw-r--r--editor/icons/icon_stream_texture.pngbin180 -> 0 bytes
-rw-r--r--editor/icons/icon_stream_texture.svg5
-rw-r--r--editor/icons/icon_string.pngbin160 -> 0 bytes
-rw-r--r--editor/icons/icon_string.svg5
-rw-r--r--editor/icons/icon_style_box_empty.pngbin333 -> 0 bytes
-rw-r--r--editor/icons/icon_style_box_empty.svg10
-rw-r--r--editor/icons/icon_style_box_flat.pngbin398 -> 0 bytes
-rw-r--r--editor/icons/icon_style_box_flat.svg11
-rw-r--r--editor/icons/icon_style_box_texture.pngbin411 -> 0 bytes
-rw-r--r--editor/icons/icon_style_box_texture.svg11
-rw-r--r--editor/icons/icon_surface.pngbin212 -> 0 bytes
-rw-r--r--editor/icons/icon_tab_container.pngbin214 -> 0 bytes
-rw-r--r--editor/icons/icon_tab_container.svg5
-rw-r--r--editor/icons/icon_tab_menu.pngbin146 -> 0 bytes
-rw-r--r--editor/icons/icon_tabs.pngbin232 -> 0 bytes
-rw-r--r--editor/icons/icon_tabs.svg5
-rw-r--r--editor/icons/icon_test_cube.pngbin435 -> 0 bytes
-rw-r--r--editor/icons/icon_test_cube.svg7
-rw-r--r--editor/icons/icon_text_edit.pngbin207 -> 0 bytes
-rw-r--r--editor/icons/icon_text_edit.svg6
-rw-r--r--editor/icons/icon_texture.pngbin200 -> 0 bytes
-rw-r--r--editor/icons/icon_texture_button.pngbin159 -> 0 bytes
-rw-r--r--editor/icons/icon_texture_button.svg7
-rw-r--r--editor/icons/icon_texture_progress.pngbin213 -> 0 bytes
-rw-r--r--editor/icons/icon_texture_progress.svg8
-rw-r--r--editor/icons/icon_texture_rect.pngbin166 -> 0 bytes
-rw-r--r--editor/icons/icon_texture_rect.svg6
-rw-r--r--editor/icons/icon_theme.pngbin451 -> 0 bytes
-rw-r--r--editor/icons/icon_theme.svg11
-rw-r--r--editor/icons/icon_thumbnail_wait.pngbin2616 -> 0 bytes
-rw-r--r--editor/icons/icon_thumbnail_wait.svg5
-rw-r--r--editor/icons/icon_tile_map.pngbin113 -> 0 bytes
-rw-r--r--editor/icons/icon_tile_map.svg5
-rw-r--r--editor/icons/icon_tile_set.pngbin174 -> 0 bytes
-rw-r--r--editor/icons/icon_tile_set.svg5
-rw-r--r--editor/icons/icon_time.pngbin557 -> 0 bytes
-rw-r--r--editor/icons/icon_timer.pngbin378 -> 0 bytes
-rw-r--r--editor/icons/icon_timer.svg8
-rw-r--r--editor/icons/icon_tool_button.pngbin400 -> 0 bytes
-rw-r--r--editor/icons/icon_tool_button.svg5
-rw-r--r--editor/icons/icon_tool_move.pngbin217 -> 0 bytes
-rw-r--r--editor/icons/icon_tool_move.svg5
-rw-r--r--editor/icons/icon_tool_pan.pngbin281 -> 0 bytes
-rw-r--r--editor/icons/icon_tool_pan.svg13
-rw-r--r--editor/icons/icon_tool_rotate.pngbin420 -> 0 bytes
-rw-r--r--editor/icons/icon_tool_rotate.svg5
-rw-r--r--editor/icons/icon_tool_scale.pngbin349 -> 0 bytes
-rw-r--r--editor/icons/icon_tool_scale.svg5
-rw-r--r--editor/icons/icon_tool_select.pngbin376 -> 0 bytes
-rw-r--r--editor/icons/icon_tool_select.svg7
-rw-r--r--editor/icons/icon_tools.pngbin298 -> 0 bytes
-rw-r--r--editor/icons/icon_tools.svg5
-rw-r--r--editor/icons/icon_touch_screen_button.pngbin313 -> 0 bytes
-rw-r--r--editor/icons/icon_touch_screen_button.svg5
-rw-r--r--editor/icons/icon_track_add_key.pngbin113 -> 0 bytes
-rw-r--r--editor/icons/icon_track_add_key.svg5
-rw-r--r--editor/icons/icon_track_add_key_hl.pngbin113 -> 0 bytes
-rw-r--r--editor/icons/icon_track_add_key_hl.svg6
-rw-r--r--editor/icons/icon_track_continuous.pngbin265 -> 0 bytes
-rw-r--r--editor/icons/icon_track_continuous.svg5
-rw-r--r--editor/icons/icon_track_discrete.pngbin125 -> 0 bytes
-rw-r--r--editor/icons/icon_track_discrete.svg7
-rw-r--r--editor/icons/icon_track_method.pngbin283 -> 0 bytes
-rw-r--r--editor/icons/icon_track_prop.pngbin285 -> 0 bytes
-rw-r--r--editor/icons/icon_track_trigger.pngbin158 -> 0 bytes
-rw-r--r--editor/icons/icon_track_trigger.svg9
-rw-r--r--editor/icons/icon_track_value.pngbin300 -> 0 bytes
-rw-r--r--editor/icons/icon_translation.pngbin194 -> 0 bytes
-rw-r--r--editor/icons/icon_translation.svg5
-rw-r--r--editor/icons/icon_transparent.pngbin158 -> 0 bytes
-rw-r--r--editor/icons/icon_transpose.pngbin165 -> 0 bytes
-rw-r--r--editor/icons/icon_transpose.svg5
-rw-r--r--editor/icons/icon_tree.pngbin151 -> 0 bytes
-rw-r--r--editor/icons/icon_tree.svg6
-rw-r--r--editor/icons/icon_tree_arrow_down.pngbin170 -> 0 bytes
-rw-r--r--editor/icons/icon_tree_arrow_right.pngbin189 -> 0 bytes
-rw-r--r--editor/icons/icon_tween.pngbin247 -> 0 bytes
-rw-r--r--editor/icons/icon_tween.svg5
-rw-r--r--editor/icons/icon_unbone.pngbin383 -> 0 bytes
-rw-r--r--editor/icons/icon_unbone.svg5
-rw-r--r--editor/icons/icon_unchecked.pngbin267 -> 0 bytes
-rw-r--r--editor/icons/icon_ungroup.pngbin170 -> 0 bytes
-rw-r--r--editor/icons/icon_ungroup.svg6
-rw-r--r--editor/icons/icon_uninstance.pngbin525 -> 0 bytes
-rw-r--r--editor/icons/icon_unlock.pngbin262 -> 0 bytes
-rw-r--r--editor/icons/icon_unlock.svg7
-rw-r--r--editor/icons/icon_up.pngbin185 -> 0 bytes
-rw-r--r--editor/icons/icon_updown.pngbin180 -> 0 bytes
-rw-r--r--editor/icons/icon_uv.pngbin282 -> 0 bytes
-rw-r--r--editor/icons/icon_uv.svg5
-rw-r--r--editor/icons/icon_v_box_container.pngbin207 -> 0 bytes
-rw-r--r--editor/icons/icon_v_box_container.svg5
-rw-r--r--editor/icons/icon_v_button_array.pngbin278 -> 0 bytes
-rw-r--r--editor/icons/icon_v_button_array.svg6
-rw-r--r--editor/icons/icon_v_scroll_bar.pngbin416 -> 0 bytes
-rw-r--r--editor/icons/icon_v_scroll_bar.svg5
-rw-r--r--editor/icons/icon_v_separator.pngbin130 -> 0 bytes
-rw-r--r--editor/icons/icon_v_separator.svg5
-rw-r--r--editor/icons/icon_v_slider.pngbin244 -> 0 bytes
-rw-r--r--editor/icons/icon_v_slider.svg5
-rw-r--r--editor/icons/icon_v_split_container.pngbin277 -> 0 bytes
-rw-r--r--editor/icons/icon_v_split_container.svg5
-rw-r--r--editor/icons/icon_variant.pngbin237 -> 0 bytes
-rw-r--r--editor/icons/icon_variant.svg16
-rw-r--r--editor/icons/icon_vector.pngbin208 -> 0 bytes
-rw-r--r--editor/icons/icon_vector.svg6
-rw-r--r--editor/icons/icon_vector2.pngbin122 -> 0 bytes
-rw-r--r--editor/icons/icon_vector2.svg5
-rw-r--r--editor/icons/icon_vehicle_body.pngbin236 -> 0 bytes
-rw-r--r--editor/icons/icon_vehicle_body.svg5
-rw-r--r--editor/icons/icon_vehicle_wheel.pngbin537 -> 0 bytes
-rw-r--r--editor/icons/icon_vehicle_wheel.svg6
-rw-r--r--editor/icons/icon_video_player.pngbin241 -> 0 bytes
-rw-r--r--editor/icons/icon_video_player.svg7
-rw-r--r--editor/icons/icon_video_stream_theora.pngbin925 -> 0 bytes
-rw-r--r--editor/icons/icon_view.pngbin386 -> 0 bytes
-rw-r--r--editor/icons/icon_viewport.pngbin198 -> 0 bytes
-rw-r--r--editor/icons/icon_viewport.svg5
-rw-r--r--editor/icons/icon_viewport_container.pngbin284 -> 0 bytes
-rw-r--r--editor/icons/icon_viewport_container.svg5
-rw-r--r--editor/icons/icon_viewport_sprite.pngbin239 -> 0 bytes
-rw-r--r--editor/icons/icon_viewport_sprite.svg7
-rw-r--r--editor/icons/icon_viewport_texture.pngbin227 -> 0 bytes
-rw-r--r--editor/icons/icon_viewport_texture.svg5
-rw-r--r--editor/icons/icon_visibility_area.pngbin422 -> 0 bytes
-rw-r--r--editor/icons/icon_visibility_enabler.pngbin549 -> 0 bytes
-rw-r--r--editor/icons/icon_visibility_enabler.svg5
-rw-r--r--editor/icons/icon_visibility_enabler_2d.pngbin550 -> 0 bytes
-rw-r--r--editor/icons/icon_visibility_enabler_2d.svg5
-rw-r--r--editor/icons/icon_visibility_notifier.pngbin427 -> 0 bytes
-rw-r--r--editor/icons/icon_visibility_notifier.svg5
-rw-r--r--editor/icons/icon_visibility_notifier_2d.pngbin431 -> 0 bytes
-rw-r--r--editor/icons/icon_visibility_notifier_2d.svg5
-rw-r--r--editor/icons/icon_visible.pngbin497 -> 0 bytes
-rw-r--r--editor/icons/icon_visible.svg5
-rw-r--r--editor/icons/icon_visual_script.pngbin386 -> 0 bytes
-rw-r--r--editor/icons/icon_visual_script.svg6
-rw-r--r--editor/icons/icon_visual_shader_port.pngbin255 -> 0 bytes
-rw-r--r--editor/icons/icon_visual_shader_port.svg5
-rw-r--r--editor/icons/icon_volume.pngbin295 -> 0 bytes
-rw-r--r--editor/icons/icon_vslider_bg.pngbin236 -> 0 bytes
-rw-r--r--editor/icons/icon_vsplit_bg.pngbin96 -> 0 bytes
-rw-r--r--editor/icons/icon_vsplitter.pngbin122 -> 0 bytes
-rw-r--r--editor/icons/icon_vu_db.pngbin1015 -> 0 bytes
-rw-r--r--editor/icons/icon_vu_empty.pngbin283 -> 0 bytes
-rw-r--r--editor/icons/icon_vu_empty.svg13
-rw-r--r--editor/icons/icon_vu_full.pngbin224 -> 0 bytes
-rw-r--r--editor/icons/icon_vu_full.svg12
-rw-r--r--editor/icons/icon_wait_no_preview.pngbin1041 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_1.pngbin1208 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_2.pngbin1270 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_3.pngbin1190 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_4.pngbin1269 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_5.pngbin1191 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_6.pngbin1278 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_7.pngbin1192 -> 0 bytes
-rw-r--r--editor/icons/icon_wait_preview_8.pngbin1341 -> 0 bytes
-rw-r--r--editor/icons/icon_warning.pngbin204 -> 0 bytes
-rw-r--r--editor/icons/icon_warning.svg5
-rw-r--r--editor/icons/icon_window_dialog.pngbin200 -> 0 bytes
-rw-r--r--editor/icons/icon_window_dialog.svg5
-rw-r--r--editor/icons/icon_world.pngbin254 -> 0 bytes
-rw-r--r--editor/icons/icon_world.svg6
-rw-r--r--editor/icons/icon_world_2d.pngbin328 -> 0 bytes
-rw-r--r--editor/icons/icon_world_2d.svg5
-rw-r--r--editor/icons/icon_world_environment.pngbin534 -> 0 bytes
-rw-r--r--editor/icons/icon_world_environment.svg6
-rw-r--r--editor/icons/icon_y_sort.pngbin230 -> 0 bytes
-rw-r--r--editor/icons/icon_y_sort.svg5
-rw-r--r--editor/icons/icon_zoom.pngbin410 -> 0 bytes
-rw-r--r--editor/icons/icon_zoom.svg5
-rw-r--r--editor/icons/icon_zoom_less.pngbin149 -> 0 bytes
-rw-r--r--editor/icons/icon_zoom_less.svg5
-rw-r--r--editor/icons/icon_zoom_more.pngbin232 -> 0 bytes
-rw-r--r--editor/icons/icon_zoom_more.svg12
-rw-r--r--editor/icons/icon_zoom_reset.pngbin430 -> 0 bytes
-rw-r--r--editor/icons/icon_zoom_reset.svg10
-rw-r--r--editor/icons/source/icon_2_d.svg93
-rw-r--r--editor/icons/source/icon_3_d.svg105
-rw-r--r--editor/icons/source/icon_GUI_checked.svg79
-rw-r--r--editor/icons/source/icon_GUI_dropdown.svg93
-rw-r--r--editor/icons/source/icon_GUI_hslider_bg.svg83
-rw-r--r--editor/icons/source/icon_GUI_hsplitter.svg79
-rw-r--r--editor/icons/source/icon_GUI_mini_tab_menu.svg93
-rw-r--r--editor/icons/source/icon_GUI_option_arrow.svg80
-rw-r--r--editor/icons/source/icon_GUI_play_button_group.svg78
-rw-r--r--editor/icons/source/icon_GUI_progress_bar.svg81
-rw-r--r--editor/icons/source/icon_GUI_progress_fill.svg83
-rw-r--r--editor/icons/source/icon_GUI_radio_checked.svg87
-rw-r--r--editor/icons/source/icon_GUI_radio_unchecked.svg81
-rw-r--r--editor/icons/source/icon_GUI_scroll_bg.svg71
-rw-r--r--editor/icons/source/icon_GUI_scroll_grabber.svg78
-rw-r--r--editor/icons/source/icon_GUI_scroll_grabber_hl.svg82
-rw-r--r--editor/icons/source/icon_GUI_slider_grabber.svg81
-rw-r--r--editor/icons/source/icon_GUI_slider_grabber_hl.svg86
-rw-r--r--editor/icons/source/icon_GUI_spinbox_updown.svg83
-rw-r--r--editor/icons/source/icon_GUI_tab_menu.svg92
-rw-r--r--editor/icons/source/icon_GUI_toggle_off.svg80
-rw-r--r--editor/icons/source/icon_GUI_toggle_on.svg80
-rw-r--r--editor/icons/source/icon_GUI_tree_arrow_down.svg80
-rw-r--r--editor/icons/source/icon_GUI_tree_arrow_right.svg80
-rw-r--r--editor/icons/source/icon_GUI_unchecked.svg77
-rw-r--r--editor/icons/source/icon_GUI_vslider_bg.svg83
-rw-r--r--editor/icons/source/icon_GUI_vsplit_bg.svg79
-rw-r--r--editor/icons/source/icon_GUI_vsplitter.svg79
-rw-r--r--editor/icons/source/icon_accept_dialog.svg79
-rw-r--r--editor/icons/source/icon_add_track.svg77
-rw-r--r--editor/icons/source/icon_anchor.svg77
-rw-r--r--editor/icons/source/icon_animated_sprite.svg87
-rw-r--r--editor/icons/source/icon_animated_sprite_3d.svg87
-rw-r--r--editor/icons/source/icon_animation.svg77
-rw-r--r--editor/icons/source/icon_animation_player.svg78
-rw-r--r--editor/icons/source/icon_animation_tree_player.svg77
-rw-r--r--editor/icons/source/icon_area.svg77
-rw-r--r--editor/icons/source/icon_area_2d.svg77
-rw-r--r--editor/icons/source/icon_arrow_left.svg84
-rw-r--r--editor/icons/source/icon_arrow_right.svg84
-rw-r--r--editor/icons/source/icon_arrow_up.svg77
-rw-r--r--editor/icons/source/icon_asset_lib.svg80
-rw-r--r--editor/icons/source/icon_atlas_texture.svg82
-rw-r--r--editor/icons/source/icon_audio_bus_bypass.svg295
-rw-r--r--editor/icons/source/icon_audio_bus_layout.svg107
-rw-r--r--editor/icons/source/icon_audio_bus_mute.svg301
-rw-r--r--editor/icons/source/icon_audio_bus_solo.svg315
-rw-r--r--editor/icons/source/icon_audio_effect_amplify.svg110
-rw-r--r--editor/icons/source/icon_audio_stream_gibberish.svg83
-rw-r--r--editor/icons/source/icon_audio_stream_player.svg113
-rw-r--r--editor/icons/source/icon_audio_stream_player_2_d.svg114
-rw-r--r--editor/icons/source/icon_audio_stream_player_3_d.svg114
-rw-r--r--editor/icons/source/icon_audio_stream_sample.svg108
-rw-r--r--editor/icons/source/icon_auto_play.svg78
-rw-r--r--editor/icons/source/icon_back.svg78
-rw-r--r--editor/icons/source/icon_back_buffer_copy.svg77
-rw-r--r--editor/icons/source/icon_bake.svg78
-rw-r--r--editor/icons/source/icon_baked_light.svg78
-rw-r--r--editor/icons/source/icon_baked_light_instance.svg78
-rw-r--r--editor/icons/source/icon_baked_light_sampler.svg78
-rw-r--r--editor/icons/source/icon_bit_map.svg82
-rw-r--r--editor/icons/source/icon_bitmap_font.svg78
-rw-r--r--editor/icons/source/icon_blend.svg81
-rw-r--r--editor/icons/source/icon_bone.svg78
-rw-r--r--editor/icons/source/icon_bone_attachment.svg78
-rw-r--r--editor/icons/source/icon_bone_track.svg78
-rw-r--r--editor/icons/source/icon_bool.svg135
-rw-r--r--editor/icons/source/icon_box_shape.svg99
-rw-r--r--editor/icons/source/icon_bus_vu_db.svg111
-rw-r--r--editor/icons/source/icon_bus_vu_empty.svg115
-rw-r--r--editor/icons/source/icon_bus_vu_frozen.svg111
-rw-r--r--editor/icons/source/icon_bus_vu_full.svg110
-rw-r--r--editor/icons/source/icon_button.svg108
-rw-r--r--editor/icons/source/icon_button_group.svg78
-rw-r--r--editor/icons/source/icon_camera.svg119
-rw-r--r--editor/icons/source/icon_camera_2d.svg119
-rw-r--r--editor/icons/source/icon_canvas_item.svg83
-rw-r--r--editor/icons/source/icon_canvas_item_material.svg150
-rw-r--r--editor/icons/source/icon_canvas_item_shader.svg143
-rw-r--r--editor/icons/source/icon_canvas_item_shader_graph.svg143
-rw-r--r--editor/icons/source/icon_canvas_layer.svg82
-rw-r--r--editor/icons/source/icon_canvas_modulate.svg137
-rw-r--r--editor/icons/source/icon_capsule_mesh.svg93
-rw-r--r--editor/icons/source/icon_capsule_shape.svg101
-rw-r--r--editor/icons/source/icon_capsule_shape_2d.svg81
-rw-r--r--editor/icons/source/icon_center_container.svg85
-rw-r--r--editor/icons/source/icon_check_box.svg84
-rw-r--r--editor/icons/source/icon_check_button.svg84
-rw-r--r--editor/icons/source/icon_circle_shape_2d.svg82
-rw-r--r--editor/icons/source/icon_class_list.svg121
-rw-r--r--editor/icons/source/icon_close.svg93
-rw-r--r--editor/icons/source/icon_collapse.svg77
-rw-r--r--editor/icons/source/icon_collision_2d.svg78
-rw-r--r--editor/icons/source/icon_collision_polygon.svg78
-rw-r--r--editor/icons/source/icon_collision_shape.svg89
-rw-r--r--editor/icons/source/icon_collision_shape_2d.svg77
-rw-r--r--editor/icons/source/icon_color.svg268
-rw-r--r--editor/icons/source/icon_color_pick.svg77
-rw-r--r--editor/icons/source/icon_color_picker.svg77
-rw-r--r--editor/icons/source/icon_color_picker_button.svg92
-rw-r--r--editor/icons/source/icon_color_ramp.svg102
-rw-r--r--editor/icons/source/icon_color_rect.svg156
-rw-r--r--editor/icons/source/icon_concave_polygon_shape.svg122
-rw-r--r--editor/icons/source/icon_concave_polygon_shape_2d.svg83
-rw-r--r--editor/icons/source/icon_cone_twist_joint.svg93
-rw-r--r--editor/icons/source/icon_confirmation_dialog.svg77
-rw-r--r--editor/icons/source/icon_connect.svg105
-rw-r--r--editor/icons/source/icon_connection_and_groups.svg77
-rw-r--r--editor/icons/source/icon_container.svg77
-rw-r--r--editor/icons/source/icon_control.svg78
-rw-r--r--editor/icons/source/icon_control_align_bottom_center.svg94
-rw-r--r--editor/icons/source/icon_control_align_bottom_left.svg94
-rw-r--r--editor/icons/source/icon_control_align_bottom_right.svg94
-rw-r--r--editor/icons/source/icon_control_align_bottom_wide.svg94
-rw-r--r--editor/icons/source/icon_control_align_center.svg94
-rw-r--r--editor/icons/source/icon_control_align_center_left.svg80
-rw-r--r--editor/icons/source/icon_control_align_center_right.svg80
-rw-r--r--editor/icons/source/icon_control_align_left_center.svg94
-rw-r--r--editor/icons/source/icon_control_align_left_wide.svg94
-rw-r--r--editor/icons/source/icon_control_align_right_center.svg94
-rw-r--r--editor/icons/source/icon_control_align_right_wide.svg94
-rw-r--r--editor/icons/source/icon_control_align_top_center.svg94
-rw-r--r--editor/icons/source/icon_control_align_top_left.svg94
-rw-r--r--editor/icons/source/icon_control_align_top_right.svg94
-rw-r--r--editor/icons/source/icon_control_align_top_wide.svg94
-rw-r--r--editor/icons/source/icon_control_align_wide.svg94
-rw-r--r--editor/icons/source/icon_control_hcenter_wide.svg94
-rw-r--r--editor/icons/source/icon_control_vcenter_wide.svg95
-rw-r--r--editor/icons/source/icon_convex_polygon_shape.svg98
-rw-r--r--editor/icons/source/icon_convex_polygon_shape_2d.svg83
-rw-r--r--editor/icons/source/icon_copy_node_path.svg98
-rw-r--r--editor/icons/source/icon_create_new_scene_from.svg101
-rw-r--r--editor/icons/source/icon_cube_map.svg120
-rw-r--r--editor/icons/source/icon_cube_mesh.svg87
-rw-r--r--editor/icons/source/icon_curve.svg85
-rw-r--r--editor/icons/source/icon_curve_2d.svg82
-rw-r--r--editor/icons/source/icon_curve_3d.svg82
-rw-r--r--editor/icons/source/icon_curve_close.svg123
-rw-r--r--editor/icons/source/icon_curve_constant.svg81
-rw-r--r--editor/icons/source/icon_curve_create.svg117
-rw-r--r--editor/icons/source/icon_curve_curve.svg107
-rw-r--r--editor/icons/source/icon_curve_delete.svg107
-rw-r--r--editor/icons/source/icon_curve_edit.svg108
-rw-r--r--editor/icons/source/icon_curve_in.svg79
-rw-r--r--editor/icons/source/icon_curve_in_out.svg79
-rw-r--r--editor/icons/source/icon_curve_linear.svg79
-rw-r--r--editor/icons/source/icon_curve_out.svg79
-rw-r--r--editor/icons/source/icon_curve_out_in.svg79
-rw-r--r--editor/icons/source/icon_curve_texture.svg81
-rw-r--r--editor/icons/source/icon_cylinder_mesh.svg89
-rw-r--r--editor/icons/source/icon_damped_spring_joint_2d.svg86
-rw-r--r--editor/icons/source/icon_debug.svg143
-rw-r--r--editor/icons/source/icon_debug_continue.svg109
-rw-r--r--editor/icons/source/icon_debug_next.svg132
-rw-r--r--editor/icons/source/icon_debug_step.svg140
-rw-r--r--editor/icons/source/icon_dependency_changed.svg82
-rw-r--r--editor/icons/source/icon_dependency_changed_hl.svg92
-rw-r--r--editor/icons/source/icon_dependency_local_changed.svg82
-rw-r--r--editor/icons/source/icon_dependency_local_changed_hl.svg77
-rw-r--r--editor/icons/source/icon_dependency_ok.svg82
-rw-r--r--editor/icons/source/icon_dependency_ok_hl.svg77
-rw-r--r--editor/icons/source/icon_directional_light.svg157
-rw-r--r--editor/icons/source/icon_distraction_free.svg104
-rw-r--r--editor/icons/source/icon_duplicate.svg104
-rw-r--r--editor/icons/source/icon_dynamic_font.svg82
-rw-r--r--editor/icons/source/icon_dynamic_font_data.svg82
-rw-r--r--editor/icons/source/icon_edit.svg78
-rw-r--r--editor/icons/source/icon_edit_key.svg85
-rw-r--r--editor/icons/source/icon_edit_pivot.svg89
-rw-r--r--editor/icons/source/icon_edit_resource.svg81
-rw-r--r--editor/icons/source/icon_editor_3d_handle.svg84
-rw-r--r--editor/icons/source/icon_editor_handle.svg86
-rw-r--r--editor/icons/source/icon_editor_pivot.svg82
-rw-r--r--editor/icons/source/icon_editor_plugin.svg109
-rw-r--r--editor/icons/source/icon_environment.svg101
-rw-r--r--editor/icons/source/icon_error.svg81
-rw-r--r--editor/icons/source/icon_error_sign.svg92
-rw-r--r--editor/icons/source/icon_event_player.svg96
-rw-r--r--editor/icons/source/icon_favorites.svg82
-rw-r--r--editor/icons/source/icon_file_big.svg87
-rw-r--r--editor/icons/source/icon_file_dialog.svg79
-rw-r--r--editor/icons/source/icon_file_list.svg114
-rw-r--r--editor/icons/source/icon_file_server.svg91
-rw-r--r--editor/icons/source/icon_file_server_active.svg91
-rw-r--r--editor/icons/source/icon_file_thumbnail.svg100
-rw-r--r--editor/icons/source/icon_fixed_material.svg92
-rw-r--r--editor/icons/source/icon_fixed_spatial_material.svg169
-rw-r--r--editor/icons/source/icon_folder.svg114
-rw-r--r--editor/icons/source/icon_folder_big.svg147
-rw-r--r--editor/icons/source/icon_font.svg130
-rw-r--r--editor/icons/source/icon_forward.svg78
-rw-r--r--editor/icons/source/icon_g_d_native_library.svg83
-rw-r--r--editor/icons/source/icon_g_d_script.svg77
-rw-r--r--editor/icons/source/icon_g_i_probe.svg110
-rw-r--r--editor/icons/source/icon_g_i_probe_data.svg108
-rw-r--r--editor/icons/source/icon_generic_6_d_o_f_joint.svg92
-rw-r--r--editor/icons/source/icon_gizmo_directional_light.svg132
-rw-r--r--editor/icons/source/icon_gizmo_light.svg90
-rw-r--r--editor/icons/source/icon_gizmo_listener.svg100
-rw-r--r--editor/icons/source/icon_gizmo_spatial_sample_player.svg120
-rw-r--r--editor/icons/source/icon_gizmo_spatial_stream_player.svg81
-rw-r--r--editor/icons/source/icon_godot.svg176
-rw-r--r--editor/icons/source/icon_gradient.svg107
-rw-r--r--editor/icons/source/icon_gradient_texture.svg160
-rw-r--r--editor/icons/source/icon_graph_comment.svg100
-rw-r--r--editor/icons/source/icon_graph_cube_uniform.svg77
-rw-r--r--editor/icons/source/icon_graph_curve_map.svg86
-rw-r--r--editor/icons/source/icon_graph_default_texture.svg80
-rw-r--r--editor/icons/source/icon_graph_edit.svg95
-rw-r--r--editor/icons/source/icon_graph_input.svg81
-rw-r--r--editor/icons/source/icon_graph_node.svg89
-rw-r--r--editor/icons/source/icon_graph_rgb.svg118
-rw-r--r--editor/icons/source/icon_graph_rgb_op.svg119
-rw-r--r--editor/icons/source/icon_graph_rgb_uniform.svg119
-rw-r--r--editor/icons/source/icon_graph_scalar.svg78
-rw-r--r--editor/icons/source/icon_graph_scalar_interp.svg78
-rw-r--r--editor/icons/source/icon_graph_scalar_op.svg103
-rw-r--r--editor/icons/source/icon_graph_scalar_uniform.svg78
-rw-r--r--editor/icons/source/icon_graph_scalars_to_vec.svg104
-rw-r--r--editor/icons/source/icon_graph_texscreen.svg86
-rw-r--r--editor/icons/source/icon_graph_texture_uniform.svg80
-rw-r--r--editor/icons/source/icon_graph_time.svg96
-rw-r--r--editor/icons/source/icon_graph_vec_dp.svg94
-rw-r--r--editor/icons/source/icon_graph_vec_interp.svg78
-rw-r--r--editor/icons/source/icon_graph_vec_length.svg96
-rw-r--r--editor/icons/source/icon_graph_vec_op.svg80
-rw-r--r--editor/icons/source/icon_graph_vec_scalar_op.svg85
-rw-r--r--editor/icons/source/icon_graph_vec_to_scalars.svg105
-rw-r--r--editor/icons/source/icon_graph_vecs_to_xform.svg105
-rw-r--r--editor/icons/source/icon_graph_vector.svg82
-rw-r--r--editor/icons/source/icon_graph_vector_uniform.svg90
-rw-r--r--editor/icons/source/icon_graph_xform.svg123
-rw-r--r--editor/icons/source/icon_graph_xform_mult.svg93
-rw-r--r--editor/icons/source/icon_graph_xform_scalar_func.svg112
-rw-r--r--editor/icons/source/icon_graph_xform_to_vecs.svg105
-rw-r--r--editor/icons/source/icon_graph_xform_uniform.svg80
-rw-r--r--editor/icons/source/icon_graph_xform_vec_func.svg112
-rw-r--r--editor/icons/source/icon_graph_xform_vec_imult.svg94
-rw-r--r--editor/icons/source/icon_graph_xform_vec_mult.svg94
-rw-r--r--editor/icons/source/icon_grid.svg134
-rw-r--r--editor/icons/source/icon_grid_container.svg107
-rw-r--r--editor/icons/source/icon_grid_map.svg77
-rw-r--r--editor/icons/source/icon_groove_joint_2d.svg77
-rw-r--r--editor/icons/source/icon_group.svg118
-rw-r--r--editor/icons/source/icon_groups.svg93
-rw-r--r--editor/icons/source/icon_gui_close_dark.svg79
-rw-r--r--editor/icons/source/icon_gui_close_light.svg79
-rw-r--r--editor/icons/source/icon_h_box_container.svg93
-rw-r--r--editor/icons/source/icon_h_button_array.svg93
-rw-r--r--editor/icons/source/icon_h_scroll_bar.svg81
-rw-r--r--editor/icons/source/icon_h_separator.svg94
-rw-r--r--editor/icons/source/icon_h_slider.svg110
-rw-r--r--editor/icons/source/icon_h_split_container.svg96
-rw-r--r--editor/icons/source/icon_h_t_t_p_request.svg173
-rw-r--r--editor/icons/source/icon_headphones.svg119
-rw-r--r--editor/icons/source/icon_help.svg78
-rw-r--r--editor/icons/source/icon_help_search.svg91
-rw-r--r--editor/icons/source/icon_hidden.svg109
-rw-r--r--editor/icons/source/icon_hinge_joint.svg91
-rw-r--r--editor/icons/source/icon_history.svg109
-rw-r--r--editor/icons/source/icon_hsize.svg79
-rw-r--r--editor/icons/source/icon_image.svg86
-rw-r--r--editor/icons/source/icon_image_texture.svg137
-rw-r--r--editor/icons/source/icon_immediate_geometry.svg83
-rw-r--r--editor/icons/source/icon_import_check.svg82
-rw-r--r--editor/icons/source/icon_import_fail.svg81
-rw-r--r--editor/icons/source/icon_instance.svg84
-rw-r--r--editor/icons/source/icon_instance_options.svg84
-rw-r--r--editor/icons/source/icon_integer.svg94
-rw-r--r--editor/icons/source/icon_interp_cubic.svg83
-rw-r--r--editor/icons/source/icon_interp_linear.svg83
-rw-r--r--editor/icons/source/icon_interp_raw.svg83
-rw-r--r--editor/icons/source/icon_interp_wrap_clamp.svg110
-rw-r--r--editor/icons/source/icon_interp_wrap_loop.svg121
-rw-r--r--editor/icons/source/icon_interpolated_camera.svg259
-rw-r--r--editor/icons/source/icon_invalid_key.svg78
-rw-r--r--editor/icons/source/icon_inverse_kinematics.svg123
-rw-r--r--editor/icons/source/icon_item_list.svg142
-rw-r--r--editor/icons/source/icon_joy_axis.svg94
-rw-r--r--editor/icons/source/icon_joy_button.svg88
-rw-r--r--editor/icons/source/icon_joypad.svg81
-rw-r--r--editor/icons/source/icon_key.svg91
-rw-r--r--editor/icons/source/icon_key_hover.svg81
-rw-r--r--editor/icons/source/icon_key_invalid.svg78
-rw-r--r--editor/icons/source/icon_key_next.svg82
-rw-r--r--editor/icons/source/icon_key_selected.svg81
-rw-r--r--editor/icons/source/icon_key_value.svg81
-rw-r--r--editor/icons/source/icon_key_xform.svg81
-rw-r--r--editor/icons/source/icon_keyboard.svg93
-rw-r--r--editor/icons/source/icon_kinematic_body.svg77
-rw-r--r--editor/icons/source/icon_kinematic_body_2d.svg77
-rw-r--r--editor/icons/source/icon_label.svg81
-rw-r--r--editor/icons/source/icon_large_texture.svg80
-rw-r--r--editor/icons/source/icon_light_2d.svg78
-rw-r--r--editor/icons/source/icon_light_occluder_2d.svg122
-rw-r--r--editor/icons/source/icon_line_2d.svg82
-rw-r--r--editor/icons/source/icon_line_edit.svg88
-rw-r--r--editor/icons/source/icon_line_shape_2d.svg95
-rw-r--r--editor/icons/source/icon_link_button.svg86
-rw-r--r--editor/icons/source/icon_list_select.svg88
-rw-r--r--editor/icons/source/icon_listener.svg101
-rw-r--r--editor/icons/source/icon_load.svg147
-rw-r--r--editor/icons/source/icon_lock.svg102
-rw-r--r--editor/icons/source/icon_loop.svg81
-rw-r--r--editor/icons/source/icon_loop_interpolation.svg111
-rw-r--r--editor/icons/source/icon_main_play.svg81
-rw-r--r--editor/icons/source/icon_main_stop.svg81
-rw-r--r--editor/icons/source/icon_margin_container.svg85
-rw-r--r--editor/icons/source/icon_material_preview_cube.svg99
-rw-r--r--editor/icons/source/icon_material_preview_cube_off.svg104
-rw-r--r--editor/icons/source/icon_material_preview_light_1.svg82
-rw-r--r--editor/icons/source/icon_material_preview_light_1_off.svg82
-rw-r--r--editor/icons/source/icon_material_preview_light_2.svg82
-rw-r--r--editor/icons/source/icon_material_preview_light_2_off.svg87
-rw-r--r--editor/icons/source/icon_material_preview_sphere.svg82
-rw-r--r--editor/icons/source/icon_material_preview_sphere_off.svg82
-rw-r--r--editor/icons/source/icon_matrix.svg180
-rw-r--r--editor/icons/source/icon_menu_button.svg83
-rw-r--r--editor/icons/source/icon_mesh.svg78
-rw-r--r--editor/icons/source/icon_mesh_instance.svg132
-rw-r--r--editor/icons/source/icon_mesh_library.svg78
-rw-r--r--editor/icons/source/icon_mini_aabb.svg107
-rw-r--r--editor/icons/source/icon_mini_array.svg130
-rw-r--r--editor/icons/source/icon_mini_basis.svg204
-rw-r--r--editor/icons/source/icon_mini_boolean.svg131
-rw-r--r--editor/icons/source/icon_mini_color.svg126
-rw-r--r--editor/icons/source/icon_mini_color_array.svg250
-rw-r--r--editor/icons/source/icon_mini_dictionary.svg150
-rw-r--r--editor/icons/source/icon_mini_float.svg147
-rw-r--r--editor/icons/source/icon_mini_float_array.svg133
-rw-r--r--editor/icons/source/icon_mini_image.svg156
-rw-r--r--editor/icons/source/icon_mini_input.svg146
-rw-r--r--editor/icons/source/icon_mini_int_array.svg94
-rw-r--r--editor/icons/source/icon_mini_integer.svg143
-rw-r--r--editor/icons/source/icon_mini_matrix3.svg204
-rw-r--r--editor/icons/source/icon_mini_object.svg111
-rw-r--r--editor/icons/source/icon_mini_path.svg142
-rw-r--r--editor/icons/source/icon_mini_plane.svg124
-rw-r--r--editor/icons/source/icon_mini_quat.svg123
-rw-r--r--editor/icons/source/icon_mini_raw_array.svg103
-rw-r--r--editor/icons/source/icon_mini_rect2.svg170
-rw-r--r--editor/icons/source/icon_mini_rid.svg140
-rw-r--r--editor/icons/source/icon_mini_string.svg236
-rw-r--r--editor/icons/source/icon_mini_string_array.svg289
-rw-r--r--editor/icons/source/icon_mini_transform.svg90
-rw-r--r--editor/icons/source/icon_mini_transform2D.svg117
-rw-r--r--editor/icons/source/icon_mini_variant.svg138
-rw-r--r--editor/icons/source/icon_mini_vector2.svg149
-rw-r--r--editor/icons/source/icon_mini_vector2_array.svg129
-rw-r--r--editor/icons/source/icon_mini_vector3.svg142
-rw-r--r--editor/icons/source/icon_mini_vector3_array.svg129
-rw-r--r--editor/icons/source/icon_mirror_x.svg89
-rw-r--r--editor/icons/source/icon_mirror_y.svg77
-rw-r--r--editor/icons/source/icon_mouse.svg77
-rw-r--r--editor/icons/source/icon_move_down.svg85
-rw-r--r--editor/icons/source/icon_move_point.svg94
-rw-r--r--editor/icons/source/icon_move_up.svg85
-rw-r--r--editor/icons/source/icon_multi_edit.svg99
-rw-r--r--editor/icons/source/icon_multi_line.svg115
-rw-r--r--editor/icons/source/icon_multi_mesh.svg78
-rw-r--r--editor/icons/source/icon_multi_mesh_instance.svg83
-rw-r--r--editor/icons/source/icon_multi_script.svg83
-rw-r--r--editor/icons/source/icon_native_script.svg77
-rw-r--r--editor/icons/source/icon_navigation.svg78
-rw-r--r--editor/icons/source/icon_navigation_2d.svg78
-rw-r--r--editor/icons/source/icon_navigation_mesh.svg78
-rw-r--r--editor/icons/source/icon_navigation_mesh_instance.svg97
-rw-r--r--editor/icons/source/icon_navigation_polygon.svg88
-rw-r--r--editor/icons/source/icon_navigation_polygon_instance.svg82
-rw-r--r--editor/icons/source/icon_new.svg92
-rw-r--r--editor/icons/source/icon_nine_patch_rect.svg130
-rw-r--r--editor/icons/source/icon_node.svg78
-rw-r--r--editor/icons/source/icon_node_2d.svg78
-rw-r--r--editor/icons/source/icon_node_warning.svg86
-rw-r--r--editor/icons/source/icon_non_favorite.svg82
-rw-r--r--editor/icons/source/icon_object.svg87
-rw-r--r--editor/icons/source/icon_occluder_polygon_2d.svg87
-rw-r--r--editor/icons/source/icon_omni_light.svg78
-rw-r--r--editor/icons/source/icon_option_button.svg88
-rw-r--r--editor/icons/source/icon_override.svg91
-rw-r--r--editor/icons/source/icon_packed_data_container.svg138
-rw-r--r--editor/icons/source/icon_packed_scene.svg96
-rw-r--r--editor/icons/source/icon_panel.svg79
-rw-r--r--editor/icons/source/icon_panel_container.svg79
-rw-r--r--editor/icons/source/icon_panels_1.svg80
-rw-r--r--editor/icons/source/icon_panels_2.svg87
-rw-r--r--editor/icons/source/icon_panels_2_alt.svg87
-rw-r--r--editor/icons/source/icon_panels_3.svg94
-rw-r--r--editor/icons/source/icon_panels_3_alt.svg94
-rw-r--r--editor/icons/source/icon_panels_4.svg101
-rw-r--r--editor/icons/source/icon_panorama_sky.svg131
-rw-r--r--editor/icons/source/icon_parallax_background.svg167
-rw-r--r--editor/icons/source/icon_parallax_layer.svg99
-rw-r--r--editor/icons/source/icon_particle_attractor_2d.svg103
-rw-r--r--editor/icons/source/icon_particles.svg120
-rw-r--r--editor/icons/source/icon_particles_2d.svg120
-rw-r--r--editor/icons/source/icon_particles_material.svg159
-rw-r--r--editor/icons/source/icon_path.svg91
-rw-r--r--editor/icons/source/icon_path_2d.svg90
-rw-r--r--editor/icons/source/icon_path_follow.svg89
-rw-r--r--editor/icons/source/icon_path_follow_2d.svg89
-rw-r--r--editor/icons/source/icon_pause.svg104
-rw-r--r--editor/icons/source/icon_pin.svg99
-rw-r--r--editor/icons/source/icon_pin_joint.svg100
-rw-r--r--editor/icons/source/icon_pin_joint_2d.svg100
-rw-r--r--editor/icons/source/icon_pin_pressed.svg99
-rw-r--r--editor/icons/source/icon_plane.svg82
-rw-r--r--editor/icons/source/icon_plane_mesh.svg79
-rw-r--r--editor/icons/source/icon_plane_shape.svg82
-rw-r--r--editor/icons/source/icon_play.svg81
-rw-r--r--editor/icons/source/icon_play_backwards.svg81
-rw-r--r--editor/icons/source/icon_play_custom.svg87
-rw-r--r--editor/icons/source/icon_play_scene.svg99
-rw-r--r--editor/icons/source/icon_play_start.svg101
-rw-r--r--editor/icons/source/icon_play_start_backwards.svg99
-rw-r--r--editor/icons/source/icon_polygon_path_finder.svg77
-rw-r--r--editor/icons/source/icon_popup.svg77
-rw-r--r--editor/icons/source/icon_popup_dialog.svg77
-rw-r--r--editor/icons/source/icon_popup_menu.svg83
-rw-r--r--editor/icons/source/icon_popup_panel.svg85
-rw-r--r--editor/icons/source/icon_portal.svg78
-rw-r--r--editor/icons/source/icon_position_2d.svg101
-rw-r--r--editor/icons/source/icon_position_3d.svg78
-rw-r--r--editor/icons/source/icon_prism_mesh.svg79
-rw-r--r--editor/icons/source/icon_procedural_sky.svg129
-rw-r--r--editor/icons/source/icon_progress_1.svg104
-rw-r--r--editor/icons/source/icon_progress_2.svg104
-rw-r--r--editor/icons/source/icon_progress_3.svg104
-rw-r--r--editor/icons/source/icon_progress_4.svg104
-rw-r--r--editor/icons/source/icon_progress_5.svg104
-rw-r--r--editor/icons/source/icon_progress_6.svg104
-rw-r--r--editor/icons/source/icon_progress_7.svg104
-rw-r--r--editor/icons/source/icon_progress_8.svg104
-rw-r--r--editor/icons/source/icon_progress_bar.svg104
-rw-r--r--editor/icons/source/icon_proximity_group.svg121
-rw-r--r--editor/icons/source/icon_quad.svg78
-rw-r--r--editor/icons/source/icon_quad_mesh.svg79
-rw-r--r--editor/icons/source/icon_quat.svg82
-rw-r--r--editor/icons/source/icon_range.svg107
-rw-r--r--editor/icons/source/icon_rating_no_star.svg88
-rw-r--r--editor/icons/source/icon_rating_star.svg82
-rw-r--r--editor/icons/source/icon_ray_cast.svg85
-rw-r--r--editor/icons/source/icon_ray_cast_2d.svg85
-rw-r--r--editor/icons/source/icon_ray_shape.svg107
-rw-r--r--editor/icons/source/icon_ray_shape_2d.svg89
-rw-r--r--editor/icons/source/icon_rayito.svg90
-rw-r--r--editor/icons/source/icon_real.svg120
-rw-r--r--editor/icons/source/icon_rectangle_shape_2d.svg86
-rw-r--r--editor/icons/source/icon_reference_rect.svg130
-rw-r--r--editor/icons/source/icon_reflection_probe.svg82
-rw-r--r--editor/icons/source/icon_region_edit.svg135
-rw-r--r--editor/icons/source/icon_reload_small.svg95
-rw-r--r--editor/icons/source/icon_remote.svg93
-rw-r--r--editor/icons/source/icon_remote_transform.svg126
-rw-r--r--editor/icons/source/icon_remote_transform_2d.svg120
-rw-r--r--editor/icons/source/icon_remove.svg91
-rw-r--r--editor/icons/source/icon_rename.svg77
-rw-r--r--editor/icons/source/icon_reparent.svg85
-rw-r--r--editor/icons/source/icon_resource_preloader.svg89
-rw-r--r--editor/icons/source/icon_rich_text_label.svg120
-rw-r--r--editor/icons/source/icon_rigid_body.svg87
-rw-r--r--editor/icons/source/icon_rigid_body_2d.svg124
-rw-r--r--editor/icons/source/icon_room.svg78
-rw-r--r--editor/icons/source/icon_room_bounds.svg78
-rw-r--r--editor/icons/source/icon_rotate_0.svg84
-rw-r--r--editor/icons/source/icon_rotate_180.svg106
-rw-r--r--editor/icons/source/icon_rotate_270.svg113
-rw-r--r--editor/icons/source/icon_rotate_90.svg99
-rw-r--r--editor/icons/source/icon_sample_library.svg87
-rw-r--r--editor/icons/source/icon_save.svg94
-rw-r--r--editor/icons/source/icon_script.svg90
-rw-r--r--editor/icons/source/icon_script_create.svg99
-rw-r--r--editor/icons/source/icon_script_remove.svg99
-rw-r--r--editor/icons/source/icon_scroll_bar.svg97
-rw-r--r--editor/icons/source/icon_scroll_container.svg103
-rw-r--r--editor/icons/source/icon_search.svg87
-rw-r--r--editor/icons/source/icon_segment_shape_2d.svg82
-rw-r--r--editor/icons/source/icon_shader.svg152
-rw-r--r--editor/icons/source/icon_short_cut.svg89
-rw-r--r--editor/icons/source/icon_signal.svg118
-rw-r--r--editor/icons/source/icon_skeleton.svg105
-rw-r--r--editor/icons/source/icon_slider_joint.svg104
-rw-r--r--editor/icons/source/icon_slot.svg102
-rw-r--r--editor/icons/source/icon_snap.svg111
-rw-r--r--editor/icons/source/icon_sound_room_params.svg100
-rw-r--r--editor/icons/source/icon_spatial.svg78
-rw-r--r--editor/icons/source/icon_spatial_material.svg165
-rw-r--r--editor/icons/source/icon_spatial_sample_player.svg78
-rw-r--r--editor/icons/source/icon_spatial_stream_player.svg83
-rw-r--r--editor/icons/source/icon_sphere_mesh.svg79
-rw-r--r--editor/icons/source/icon_sphere_shape.svg89
-rw-r--r--editor/icons/source/icon_spin_box.svg100
-rw-r--r--editor/icons/source/icon_spot_light.svg78
-rw-r--r--editor/icons/source/icon_sprite.svg77
-rw-r--r--editor/icons/source/icon_sprite_3d.svg77
-rw-r--r--editor/icons/source/icon_sprite_frames.svg119
-rw-r--r--editor/icons/source/icon_static_body.svg80
-rw-r--r--editor/icons/source/icon_static_body_2d.svg87
-rw-r--r--editor/icons/source/icon_stream_player.svg83
-rw-r--r--editor/icons/source/icon_stream_texture.svg81
-rw-r--r--editor/icons/source/icon_string.svg77
-rw-r--r--editor/icons/source/icon_style_box_empty.svg140
-rw-r--r--editor/icons/source/icon_style_box_flat.svg149
-rw-r--r--editor/icons/source/icon_style_box_texture.svg140
-rw-r--r--editor/icons/source/icon_tab_container.svg80
-rw-r--r--editor/icons/source/icon_tabs.svg80
-rw-r--r--editor/icons/source/icon_test_cube.svg88
-rw-r--r--editor/icons/source/icon_text_edit.svg87
-rw-r--r--editor/icons/source/icon_texture_button.svg94
-rw-r--r--editor/icons/source/icon_texture_progress.svg104
-rw-r--r--editor/icons/source/icon_texture_rect.svg84
-rw-r--r--editor/icons/source/icon_theme.svg144
-rw-r--r--editor/icons/source/icon_tile_map.svg250
-rw-r--r--editor/icons/source/icon_tile_set.svg80
-rw-r--r--editor/icons/source/icon_timer.svg103
-rw-r--r--editor/icons/source/icon_tool_button.svg112
-rw-r--r--editor/icons/source/icon_tool_move.svg77
-rw-r--r--editor/icons/source/icon_tool_pan.svg136
-rw-r--r--editor/icons/source/icon_tool_rotate.svg95
-rw-r--r--editor/icons/source/icon_tool_scale.svg77
-rw-r--r--editor/icons/source/icon_tool_select.svg88
-rw-r--r--editor/icons/source/icon_tools.svg77
-rw-r--r--editor/icons/source/icon_touch_screen_button.svg174
-rw-r--r--editor/icons/source/icon_track_add_key.svg77
-rw-r--r--editor/icons/source/icon_track_add_key_hl.svg82
-rw-r--r--editor/icons/source/icon_track_continuous.svg83
-rw-r--r--editor/icons/source/icon_track_discrete.svg95
-rw-r--r--editor/icons/source/icon_track_trigger.svg109
-rw-r--r--editor/icons/source/icon_translation.svg78
-rw-r--r--editor/icons/source/icon_transpose.svg127
-rw-r--r--editor/icons/source/icon_tree.svg132
-rw-r--r--editor/icons/source/icon_tween.svg95
-rw-r--r--editor/icons/source/icon_unbone.svg78
-rw-r--r--editor/icons/source/icon_ungroup.svg141
-rw-r--r--editor/icons/source/icon_unlock.svg97
-rw-r--r--editor/icons/source/icon_uv.svg80
-rw-r--r--editor/icons/source/icon_v_box_container.svg77
-rw-r--r--editor/icons/source/icon_v_button_array.svg91
-rw-r--r--editor/icons/source/icon_v_scroll_bar.svg81
-rw-r--r--editor/icons/source/icon_v_separator.svg77
-rw-r--r--editor/icons/source/icon_v_slider.svg111
-rw-r--r--editor/icons/source/icon_v_split_container.svg97
-rw-r--r--editor/icons/source/icon_variant.svg146
-rw-r--r--editor/icons/source/icon_vector.svg87
-rw-r--r--editor/icons/source/icon_vector2.svg81
-rw-r--r--editor/icons/source/icon_vehicle_body.svg90
-rw-r--r--editor/icons/source/icon_vehicle_wheel.svg83
-rw-r--r--editor/icons/source/icon_video_player.svg97
-rw-r--r--editor/icons/source/icon_viewport.svg82
-rw-r--r--editor/icons/source/icon_viewport_container.svg82
-rw-r--r--editor/icons/source/icon_viewport_sprite.svg117
-rw-r--r--editor/icons/source/icon_viewport_texture.svg80
-rw-r--r--editor/icons/source/icon_visibility_enabler.svg99
-rw-r--r--editor/icons/source/icon_visibility_enabler_2d.svg99
-rw-r--r--editor/icons/source/icon_visibility_notifier.svg96
-rw-r--r--editor/icons/source/icon_visibility_notifier_2d.svg96
-rw-r--r--editor/icons/source/icon_visible.svg87
-rw-r--r--editor/icons/source/icon_visual_script.svg85
-rw-r--r--editor/icons/source/icon_visual_shader_port.svg80
-rw-r--r--editor/icons/source/icon_vu_empty.svg115
-rw-r--r--editor/icons/source/icon_vu_full.svg110
-rw-r--r--editor/icons/source/icon_warning.svg81
-rw-r--r--editor/icons/source/icon_window_dialog.svg77
-rw-r--r--editor/icons/source/icon_world.svg89
-rw-r--r--editor/icons/source/icon_world_2d.svg82
-rw-r--r--editor/icons/source/icon_world_environment.svg101
-rw-r--r--editor/icons/source/icon_y_sort.svg99
-rw-r--r--editor/icons/source/icon_zoom.svg77
-rw-r--r--editor/icons/source/icon_zoom_less.svg79
-rw-r--r--editor/icons/source/icon_zoom_more.svg104
-rw-r--r--editor/icons/source/icon_zoom_reset.svg112
-rwxr-xr-xeditor/icons/xpmfix.sh2
-rw-r--r--editor/import/editor_import_collada.cpp475
-rw-r--r--editor/import/editor_import_collada.h2
-rw-r--r--editor/import/editor_import_plugin.cpp2
-rw-r--r--editor/import/editor_import_plugin.h2
-rw-r--r--editor/import/editor_scene_importer_gltf.cpp3
-rw-r--r--editor/import/resource_importer_csv_translation.cpp26
-rw-r--r--editor/import/resource_importer_csv_translation.h2
-rw-r--r--editor/import/resource_importer_obj.cpp2
-rw-r--r--editor/import/resource_importer_obj.h2
-rw-r--r--editor/import/resource_importer_scene.cpp278
-rw-r--r--editor/import/resource_importer_scene.h4
-rw-r--r--editor/import/resource_importer_texture.cpp15
-rw-r--r--editor/import/resource_importer_texture.h2
-rw-r--r--editor/import/resource_importer_wav.cpp2
-rw-r--r--editor/import/resource_importer_wav.h2
-rw-r--r--editor/import_dock.cpp2
-rw-r--r--editor/import_dock.h2
-rw-r--r--editor/inspector_dock.cpp51
-rw-r--r--editor/inspector_dock.h63
-rw-r--r--editor/io_plugins/SCsub5
-rw-r--r--editor/io_plugins/editor_atlas.cpp153
-rw-r--r--editor/io_plugins/editor_atlas.h41
-rw-r--r--editor/io_plugins/editor_bitmask_import_plugin.cpp388
-rw-r--r--editor/io_plugins/editor_bitmask_import_plugin.h71
-rw-r--r--editor/io_plugins/editor_export_scene.cpp143
-rw-r--r--editor/io_plugins/editor_export_scene.h45
-rw-r--r--editor/io_plugins/editor_font_import_plugin.cpp1705
-rw-r--r--editor/io_plugins/editor_font_import_plugin.h59
-rw-r--r--editor/io_plugins/editor_mesh_import_plugin.cpp594
-rw-r--r--editor/io_plugins/editor_mesh_import_plugin.h60
-rw-r--r--editor/io_plugins/editor_sample_import_plugin.cpp930
-rw-r--r--editor/io_plugins/editor_sample_import_plugin.h75
-rw-r--r--editor/io_plugins/editor_scene_import_plugin.cpp2998
-rw-r--r--editor/io_plugins/editor_scene_import_plugin.h201
-rw-r--r--editor/io_plugins/editor_scene_importer_fbxconv.cpp1137
-rw-r--r--editor/io_plugins/editor_scene_importer_fbxconv.h112
-rw-r--r--editor/io_plugins/editor_texture_import_plugin.cpp1896
-rw-r--r--editor/io_plugins/editor_texture_import_plugin.h175
-rw-r--r--editor/io_plugins/editor_translation_import_plugin.cpp480
-rw-r--r--editor/io_plugins/editor_translation_import_plugin.h57
-rw-r--r--editor/multi_node_edit.cpp2
-rw-r--r--editor/multi_node_edit.h2
-rw-r--r--editor/node_dock.cpp7
-rw-r--r--editor/node_dock.h4
-rw-r--r--editor/output_strings.cpp8
-rw-r--r--editor/output_strings.h2
-rw-r--r--editor/pane_drag.cpp2
-rw-r--r--editor/pane_drag.h2
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp85
-rw-r--r--editor/plugins/animation_player_editor_plugin.h8
-rw-r--r--editor/plugins/animation_tree_editor_plugin.cpp69
-rw-r--r--editor/plugins/animation_tree_editor_plugin.h8
-rw-r--r--editor/plugins/asset_library_editor_plugin.cpp1486
-rw-r--r--editor/plugins/asset_library_editor_plugin.h328
-rw-r--r--editor/plugins/baked_light_baker.cpp2732
-rw-r--r--editor/plugins/baked_light_baker.h382
-rw-r--r--editor/plugins/baked_light_baker_cmpxchg.cpp105
-rw-r--r--editor/plugins/baked_light_editor_plugin.cpp377
-rw-r--r--editor/plugins/baked_light_editor_plugin.h118
-rw-r--r--editor/plugins/camera_editor_plugin.cpp10
-rw-r--r--editor/plugins/camera_editor_plugin.h6
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp842
-rw-r--r--editor/plugins/canvas_item_editor_plugin.h44
-rw-r--r--editor/plugins/collision_polygon_2d_editor_plugin.cpp23
-rw-r--r--editor/plugins/collision_polygon_2d_editor_plugin.h6
-rw-r--r--editor/plugins/collision_polygon_editor_plugin.cpp24
-rw-r--r--editor/plugins/collision_polygon_editor_plugin.h6
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.cpp30
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.h2
-rw-r--r--editor/plugins/cube_grid_theme_editor_plugin.cpp130
-rw-r--r--editor/plugins/cube_grid_theme_editor_plugin.h2
-rw-r--r--editor/plugins/curve_editor_plugin.cpp18
-rw-r--r--editor/plugins/curve_editor_plugin.h2
-rw-r--r--editor/plugins/editor_preview_plugins.cpp20
-rw-r--r--editor/plugins/editor_preview_plugins.h5
-rw-r--r--editor/plugins/gi_probe_editor_plugin.cpp4
-rw-r--r--editor/plugins/gi_probe_editor_plugin.h6
-rw-r--r--editor/plugins/gradient_editor_plugin.cpp4
-rw-r--r--editor/plugins/gradient_editor_plugin.h6
-rw-r--r--editor/plugins/item_list_editor_plugin.cpp12
-rw-r--r--editor/plugins/item_list_editor_plugin.h6
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.cpp19
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.h6
-rw-r--r--editor/plugins/line_2d_editor_plugin.cpp10
-rw-r--r--editor/plugins/line_2d_editor_plugin.h6
-rw-r--r--editor/plugins/material_editor_plugin.cpp10
-rw-r--r--editor/plugins/material_editor_plugin.h9
-rw-r--r--editor/plugins/mesh_editor_plugin.cpp4
-rw-r--r--editor/plugins/mesh_editor_plugin.h6
-rw-r--r--editor/plugins/mesh_instance_editor_plugin.cpp6
-rw-r--r--editor/plugins/mesh_instance_editor_plugin.h6
-rw-r--r--editor/plugins/multimesh_editor_plugin.cpp25
-rw-r--r--editor/plugins/multimesh_editor_plugin.h6
-rw-r--r--editor/plugins/navigation_polygon_editor_plugin.cpp23
-rw-r--r--editor/plugins/navigation_polygon_editor_plugin.h6
-rw-r--r--editor/plugins/particles_2d_editor_plugin.cpp11
-rw-r--r--editor/plugins/particles_2d_editor_plugin.h6
-rw-r--r--editor/plugins/particles_editor_plugin.cpp14
-rw-r--r--editor/plugins/particles_editor_plugin.h6
-rw-r--r--editor/plugins/path_2d_editor_plugin.cpp223
-rw-r--r--editor/plugins/path_2d_editor_plugin.h6
-rw-r--r--editor/plugins/path_editor_plugin.cpp28
-rw-r--r--editor/plugins/path_editor_plugin.h6
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.cpp43
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.h6
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.cpp7
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.h6
-rw-r--r--editor/plugins/rich_text_editor_plugin.cpp151
-rw-r--r--editor/plugins/rich_text_editor_plugin.h90
-rw-r--r--editor/plugins/sample_editor_plugin.cpp452
-rw-r--r--editor/plugins/sample_editor_plugin.h93
-rw-r--r--editor/plugins/sample_library_editor_plugin.cpp547
-rw-r--r--editor/plugins/sample_library_editor_plugin.h108
-rw-r--r--editor/plugins/sample_player_editor_plugin.cpp202
-rw-r--r--editor/plugins/sample_player_editor_plugin.h91
-rw-r--r--editor/plugins/script_editor_plugin.cpp362
-rw-r--r--editor/plugins/script_editor_plugin.h24
-rw-r--r--editor/plugins/script_text_editor.cpp52
-rw-r--r--editor/plugins/script_text_editor.h7
-rw-r--r--editor/plugins/shader_editor_plugin.cpp130
-rw-r--r--editor/plugins/shader_editor_plugin.h17
-rw-r--r--editor/plugins/shader_graph_editor_plugin.cpp57
-rw-r--r--editor/plugins/shader_graph_editor_plugin.h11
-rw-r--r--editor/plugins/spatial_editor_plugin.cpp432
-rw-r--r--editor/plugins/spatial_editor_plugin.h17
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp82
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.h8
-rw-r--r--editor/plugins/stream_editor_plugin.cpp150
-rw-r--r--editor/plugins/stream_editor_plugin.h85
-rw-r--r--editor/plugins/style_box_editor_plugin.cpp6
-rw-r--r--editor/plugins/style_box_editor_plugin.h2
-rw-r--r--editor/plugins/texture_editor_plugin.cpp14
-rw-r--r--editor/plugins/texture_editor_plugin.h6
-rw-r--r--editor/plugins/texture_region_editor_plugin.cpp24
-rw-r--r--editor/plugins/texture_region_editor_plugin.h6
-rw-r--r--editor/plugins/theme_editor_plugin.cpp12
-rw-r--r--editor/plugins/theme_editor_plugin.h2
-rw-r--r--editor/plugins/tile_map_editor_plugin.cpp37
-rw-r--r--editor/plugins/tile_map_editor_plugin.h7
-rw-r--r--editor/plugins/tile_set_editor_plugin.cpp27
-rw-r--r--editor/plugins/tile_set_editor_plugin.h2
-rw-r--r--editor/progress_dialog.cpp9
-rw-r--r--editor/progress_dialog.h2
-rw-r--r--editor/project_export.cpp7
-rw-r--r--editor/project_export.h2
-rw-r--r--editor/project_manager.cpp47
-rw-r--r--editor/project_manager.h4
-rw-r--r--editor/project_settings_editor.cpp97
-rw-r--r--editor/project_settings_editor.h16
-rw-r--r--editor/property_editor.cpp461
-rw-r--r--editor/property_editor.h17
-rw-r--r--editor/property_selector.cpp10
-rw-r--r--editor/property_selector.h2
-rw-r--r--editor/pvrtc_compress.cpp2
-rw-r--r--editor/pvrtc_compress.h2
-rw-r--r--editor/quick_open.cpp2
-rw-r--r--editor/quick_open.h2
-rw-r--r--editor/register_exporters.h2
-rw-r--r--editor/reparent_dialog.cpp2
-rw-r--r--editor/reparent_dialog.h2
-rw-r--r--editor/resources_dock.cpp378
-rw-r--r--editor/resources_dock.h99
-rw-r--r--editor/run_settings_dialog.cpp5
-rw-r--r--editor/run_settings_dialog.h2
-rw-r--r--editor/scene_tree_dock.cpp194
-rw-r--r--editor/scene_tree_dock.h23
-rw-r--r--editor/scene_tree_editor.cpp18
-rw-r--r--editor/scene_tree_editor.h4
-rw-r--r--editor/script_create_dialog.cpp30
-rw-r--r--editor/script_create_dialog.h4
-rw-r--r--editor/script_editor_debugger.cpp59
-rw-r--r--editor/script_editor_debugger.h9
-rw-r--r--editor/settings_config_dialog.cpp4
-rw-r--r--editor/settings_config_dialog.h2
-rw-r--r--editor/spatial_editor_gizmos.cpp687
-rw-r--r--editor/spatial_editor_gizmos.h74
-rw-r--r--editor/translations/ar.po1313
-rw-r--r--editor/translations/bg.po1538
-rw-r--r--editor/translations/bn.po1575
-rw-r--r--editor/translations/ca.po1538
-rw-r--r--editor/translations/cs.po1466
-rw-r--r--editor/translations/da.po1405
-rw-r--r--editor/translations/de.po2040
-rw-r--r--editor/translations/de_CH.po1385
-rw-r--r--editor/translations/editor.pot1305
-rw-r--r--editor/translations/el.po1893
-rw-r--r--editor/translations/es.po1705
-rw-r--r--editor/translations/es_AR.po1901
-rw-r--r--editor/translations/fa.po1417
-rw-r--r--editor/translations/fi.po1473
-rw-r--r--editor/translations/fr.po1764
-rw-r--r--editor/translations/hu.po1305
-rw-r--r--editor/translations/id.po1445
-rw-r--r--editor/translations/it.po1929
-rw-r--r--editor/translations/ja.po5123
-rw-r--r--editor/translations/ko.po1567
-rw-r--r--editor/translations/nb.po1338
-rw-r--r--editor/translations/nl.po1500
-rw-r--r--editor/translations/pl.po1548
-rw-r--r--editor/translations/pr.po1417
-rw-r--r--editor/translations/pt_BR.po1687
-rw-r--r--editor/translations/pt_PT.po1342
-rw-r--r--editor/translations/ru.po1867
-rw-r--r--editor/translations/sk.po1335
-rw-r--r--editor/translations/sl.po1342
-rw-r--r--editor/translations/th.po2018
-rw-r--r--editor/translations/tr.po1613
-rw-r--r--editor/translations/ur_PK.po1321
-rw-r--r--editor/translations/zh_CN.po1807
-rw-r--r--editor/translations/zh_HK.po1705
-rw-r--r--editor/translations/zh_TW.po1384
-rw-r--r--main/SCsub11
-rw-r--r--main/input_default.cpp57
-rw-r--r--main/input_default.h4
-rw-r--r--main/main.cpp390
-rw-r--r--main/main.h5
-rw-r--r--main/performance.cpp64
-rw-r--r--main/performance.h2
-rw-r--r--main/tests/test_containers.cpp92
-rw-r--r--main/tests/test_containers.h43
-rw-r--r--main/tests/test_gdscript.cpp24
-rw-r--r--main/tests/test_gdscript.h2
-rw-r--r--main/tests/test_gui.cpp108
-rw-r--r--main/tests/test_gui.h2
-rw-r--r--main/tests/test_image.cpp2
-rw-r--r--main/tests/test_image.h2
-rw-r--r--main/tests/test_io.cpp62
-rw-r--r--main/tests/test_io.h2
-rw-r--r--main/tests/test_main.cpp23
-rw-r--r--main/tests/test_main.h2
-rw-r--r--main/tests/test_math.cpp151
-rw-r--r--main/tests/test_math.h2
-rw-r--r--main/tests/test_physics.cpp157
-rw-r--r--main/tests/test_physics.h2
-rw-r--r--main/tests/test_physics_2d.cpp2
-rw-r--r--main/tests/test_physics_2d.h2
-rw-r--r--main/tests/test_render.cpp2
-rw-r--r--main/tests/test_render.h2
-rw-r--r--main/tests/test_shader_lang.cpp10
-rw-r--r--main/tests/test_shader_lang.h2
-rw-r--r--main/tests/test_sound.cpp99
-rw-r--r--main/tests/test_sound.h40
-rw-r--r--main/tests/test_string.cpp5
-rw-r--r--main/tests/test_string.h2
-rw-r--r--methods.py112
-rw-r--r--misc/dist/ios_xcode/godot_ios/main.m2
-rw-r--r--misc/scripts/addheader.py2
-rw-r--r--modules/dds/register_types.cpp2
-rw-r--r--modules/dds/register_types.h2
-rw-r--r--modules/dds/texture_loader_dds.cpp2
-rw-r--r--modules/dds/texture_loader_dds.h2
-rw-r--r--modules/enet/networked_multiplayer_enet.cpp12
-rw-r--r--modules/enet/networked_multiplayer_enet.h4
-rw-r--r--modules/enet/register_types.cpp2
-rw-r--r--modules/enet/register_types.h2
-rw-r--r--modules/etc/SCsub4
-rw-r--r--modules/etc/image_etc.cpp4
-rw-r--r--modules/etc/image_etc.h2
-rw-r--r--modules/etc/register_types.cpp2
-rw-r--r--modules/etc/register_types.h2
-rw-r--r--modules/etc/texture_loader_pkm.cpp2
-rw-r--r--modules/etc/texture_loader_pkm.h2
-rw-r--r--modules/freetype/SCsub3
-rw-r--r--modules/freetype/register_types.cpp2
-rw-r--r--modules/freetype/register_types.h2
-rw-r--r--modules/freetype/uwpdef.h2
-rw-r--r--modules/gdnative/gdnative.cpp9
-rw-r--r--modules/gdnative/gdnative.h4
-rw-r--r--modules/gdnative/godot/array.cpp2
-rw-r--r--modules/gdnative/godot/array.h2
-rw-r--r--modules/gdnative/godot/basis.cpp20
-rw-r--r--modules/gdnative/godot/basis.h8
-rw-r--r--modules/gdnative/godot/color.cpp2
-rw-r--r--modules/gdnative/godot/color.h2
-rw-r--r--modules/gdnative/godot/dictionary.cpp4
-rw-r--r--modules/gdnative/godot/dictionary.h2
-rw-r--r--modules/gdnative/godot/gdnative.cpp2
-rw-r--r--modules/gdnative/godot/gdnative.h2
-rw-r--r--modules/gdnative/godot/node_path.cpp2
-rw-r--r--modules/gdnative/godot/node_path.h2
-rw-r--r--modules/gdnative/godot/plane.cpp2
-rw-r--r--modules/gdnative/godot/plane.h2
-rw-r--r--modules/gdnative/godot/pool_arrays.cpp2
-rw-r--r--modules/gdnative/godot/pool_arrays.h2
-rw-r--r--modules/gdnative/godot/quat.cpp2
-rw-r--r--modules/gdnative/godot/quat.h2
-rw-r--r--modules/gdnative/godot/rect2.cpp2
-rw-r--r--modules/gdnative/godot/rect2.h2
-rw-r--r--modules/gdnative/godot/rect3.cpp2
-rw-r--r--modules/gdnative/godot/rect3.h2
-rw-r--r--modules/gdnative/godot/rid.cpp4
-rw-r--r--modules/gdnative/godot/rid.h2
-rw-r--r--modules/gdnative/godot/string.cpp14
-rw-r--r--modules/gdnative/godot/string.h8
-rw-r--r--modules/gdnative/godot/transform.cpp2
-rw-r--r--modules/gdnative/godot/transform.h2
-rw-r--r--modules/gdnative/godot/transform2d.cpp2
-rw-r--r--modules/gdnative/godot/transform2d.h2
-rw-r--r--modules/gdnative/godot/variant.cpp2
-rw-r--r--modules/gdnative/godot/variant.h2
-rw-r--r--modules/gdnative/godot/vector2.cpp2
-rw-r--r--modules/gdnative/godot/vector2.h2
-rw-r--r--modules/gdnative/godot/vector3.cpp2
-rw-r--r--modules/gdnative/godot/vector3.h2
-rw-r--r--modules/gdnative/register_types.cpp2
-rw-r--r--modules/gdnative/register_types.h2
-rw-r--r--modules/gdscript/gd_compiler.cpp8
-rw-r--r--modules/gdscript/gd_compiler.h15
-rw-r--r--modules/gdscript/gd_editor.cpp491
-rw-r--r--modules/gdscript/gd_function.cpp32
-rw-r--r--modules/gdscript/gd_function.h5
-rw-r--r--modules/gdscript/gd_functions.cpp66
-rw-r--r--modules/gdscript/gd_functions.h4
-rw-r--r--modules/gdscript/gd_parser.cpp65
-rw-r--r--modules/gdscript/gd_parser.h6
-rw-r--r--modules/gdscript/gd_script.cpp125
-rw-r--r--modules/gdscript/gd_script.h4
-rw-r--r--modules/gdscript/gd_tokenizer.cpp56
-rw-r--r--modules/gdscript/gd_tokenizer.h2
-rw-r--r--modules/gdscript/register_types.cpp105
-rw-r--r--modules/gdscript/register_types.h2
-rw-r--r--modules/gridmap/grid_map.cpp940
-rw-r--r--modules/gridmap/grid_map.h91
-rw-r--r--modules/gridmap/grid_map_editor_plugin.cpp526
-rw-r--r--modules/gridmap/grid_map_editor_plugin.h24
-rw-r--r--modules/gridmap/register_types.cpp2
-rw-r--r--modules/gridmap/register_types.h2
-rw-r--r--modules/hdr/image_loader_hdr.cpp4
-rw-r--r--modules/hdr/image_loader_hdr.h4
-rw-r--r--modules/hdr/register_types.cpp2
-rw-r--r--modules/hdr/register_types.h2
-rw-r--r--modules/jpg/image_loader_jpegd.cpp4
-rw-r--r--modules/jpg/image_loader_jpegd.h4
-rw-r--r--modules/jpg/register_types.cpp2
-rw-r--r--modules/jpg/register_types.h2
-rw-r--r--modules/nativescript/api_generator.cpp87
-rw-r--r--modules/nativescript/api_generator.h2
-rw-r--r--modules/nativescript/godot_nativescript.cpp2
-rw-r--r--modules/nativescript/godot_nativescript.h2
-rw-r--r--modules/nativescript/nativescript.cpp8
-rw-r--r--modules/nativescript/nativescript.h4
-rw-r--r--modules/nativescript/register_types.cpp2
-rw-r--r--modules/nativescript/register_types.h2
-rw-r--r--modules/ogg/register_types.cpp2
-rw-r--r--modules/ogg/register_types.h2
-rw-r--r--modules/openssl/register_types.cpp2
-rw-r--r--modules/openssl/register_types.h2
-rw-r--r--modules/openssl/stream_peer_openssl.cpp34
-rw-r--r--modules/openssl/stream_peer_openssl.h2
-rw-r--r--modules/opus/audio_stream_opus.cpp2
-rw-r--r--modules/opus/audio_stream_opus.h2
-rw-r--r--modules/opus/register_types.cpp2
-rw-r--r--modules/opus/register_types.h2
-rw-r--r--modules/pbm/bitmap_loader_pbm.cpp5
-rw-r--r--modules/pbm/bitmap_loader_pbm.h2
-rw-r--r--modules/pbm/register_types.cpp2
-rw-r--r--modules/pbm/register_types.h2
-rw-r--r--modules/pvr/register_types.cpp2
-rw-r--r--modules/pvr/register_types.h2
-rw-r--r--modules/pvr/texture_loader_pvr.cpp2
-rw-r--r--modules/pvr/texture_loader_pvr.h2
-rw-r--r--modules/regex/regex.cpp2
-rw-r--r--modules/regex/regex.h2
-rw-r--r--modules/regex/register_types.cpp2
-rw-r--r--modules/regex/register_types.h2
-rw-r--r--modules/register_module_types.h2
-rw-r--r--modules/squish/image_compress_squish.cpp2
-rw-r--r--modules/squish/image_compress_squish.h2
-rw-r--r--modules/squish/register_types.cpp2
-rw-r--r--modules/squish/register_types.h2
-rw-r--r--modules/stb_vorbis/audio_stream_ogg_vorbis.cpp17
-rw-r--r--modules/stb_vorbis/audio_stream_ogg_vorbis.h6
-rw-r--r--modules/stb_vorbis/register_types.cpp2
-rw-r--r--modules/stb_vorbis/register_types.h2
-rw-r--r--modules/stb_vorbis/resource_importer_ogg_vorbis.cpp5
-rw-r--r--modules/stb_vorbis/resource_importer_ogg_vorbis.h2
-rw-r--r--modules/svg/SCsub35
-rw-r--r--modules/svg/config.py7
-rw-r--r--modules/svg/image_loader_svg.cpp111
-rw-r--r--modules/svg/image_loader_svg.h67
-rw-r--r--modules/svg/register_types.cpp45
-rw-r--r--modules/svg/register_types.h31
-rw-r--r--modules/tga/image_loader_tga.cpp4
-rw-r--r--modules/tga/image_loader_tga.h4
-rw-r--r--modules/tga/register_types.cpp2
-rw-r--r--modules/tga/register_types.h2
-rw-r--r--modules/theora/register_types.cpp2
-rw-r--r--modules/theora/register_types.h2
-rw-r--r--modules/theora/video_stream_theora.cpp154
-rw-r--r--modules/theora/video_stream_theora.h2
-rw-r--r--modules/tinyexr/image_loader_tinyexr.cpp4
-rw-r--r--modules/tinyexr/image_loader_tinyexr.h4
-rw-r--r--modules/tinyexr/register_types.cpp2
-rw-r--r--modules/tinyexr/register_types.h2
-rw-r--r--modules/visual_script/register_types.cpp2
-rw-r--r--modules/visual_script/register_types.h2
-rw-r--r--modules/visual_script/visual_script.cpp35
-rw-r--r--modules/visual_script/visual_script.h6
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.cpp4
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.h2
-rw-r--r--modules/visual_script/visual_script_editor.cpp137
-rw-r--r--modules/visual_script/visual_script_editor.h3
-rw-r--r--modules/visual_script/visual_script_expression.cpp3
-rw-r--r--modules/visual_script/visual_script_expression.h2
-rw-r--r--modules/visual_script/visual_script_flow_control.cpp2
-rw-r--r--modules/visual_script/visual_script_flow_control.h2
-rw-r--r--modules/visual_script/visual_script_func_nodes.cpp62
-rw-r--r--modules/visual_script/visual_script_func_nodes.h4
-rw-r--r--modules/visual_script/visual_script_nodes.cpp34
-rw-r--r--modules/visual_script/visual_script_nodes.h10
-rw-r--r--modules/visual_script/visual_script_yield_nodes.cpp25
-rw-r--r--modules/visual_script/visual_script_yield_nodes.h2
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.cpp2
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.h2
-rw-r--r--modules/vorbis/register_types.cpp2
-rw-r--r--modules/vorbis/register_types.h2
-rw-r--r--modules/webm/register_types.cpp2
-rw-r--r--modules/webm/register_types.h2
-rw-r--r--modules/webm/video_stream_webm.cpp2
-rw-r--r--modules/webm/video_stream_webm.h2
-rw-r--r--modules/webp/image_loader_webp.cpp4
-rw-r--r--modules/webp/image_loader_webp.h4
-rw-r--r--modules/webp/register_types.cpp2
-rw-r--r--modules/webp/register_types.h2
-rw-r--r--platform/android/SCsub11
-rw-r--r--platform/android/audio_driver_jandroid.cpp5
-rw-r--r--platform/android/audio_driver_jandroid.h4
-rw-r--r--platform/android/audio_driver_opensl.cpp127
-rw-r--r--platform/android/audio_driver_opensl.h2
-rw-r--r--platform/android/detect.py24
-rw-r--r--platform/android/dir_access_android.cpp2
-rw-r--r--platform/android/dir_access_android.h2
-rw-r--r--platform/android/dir_access_jandroid.cpp2
-rw-r--r--platform/android/dir_access_jandroid.h4
-rw-r--r--platform/android/export/export.cpp1932
-rw-r--r--platform/android/export/export.h2
-rw-r--r--platform/android/file_access_android.cpp2
-rw-r--r--platform/android/file_access_android.h2
-rw-r--r--platform/android/file_access_jandroid.cpp2
-rw-r--r--platform/android/file_access_jandroid.h4
-rw-r--r--platform/android/globals/global_defaults.cpp2
-rw-r--r--platform/android/globals/global_defaults.h2
-rw-r--r--platform/android/godot_android.cpp59
-rw-r--r--platform/android/java/src/org/godotengine/godot/Dictionary.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/Godot.java14
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotIO.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotLib.java4
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotView.java4
-rw-r--r--platform/android/java/src/org/godotengine/godot/input/GodotEditText.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/Crypt.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java2
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/RequestParams.java2
-rw-r--r--platform/android/java_class_wrapper.cpp4
-rw-r--r--platform/android/java_class_wrapper.h2
-rw-r--r--platform/android/java_glue.cpp14
-rw-r--r--platform/android/java_glue.h8
-rw-r--r--platform/android/os_android.cpp40
-rw-r--r--platform/android/os_android.h7
-rw-r--r--platform/android/platform_config.h2
-rw-r--r--platform/android/power_android.cpp2
-rw-r--r--platform/android/power_android.h2
-rw-r--r--platform/android/thread_jandroid.cpp17
-rw-r--r--platform/android/thread_jandroid.h5
-rw-r--r--platform/haiku/audio_driver_media_kit.cpp4
-rw-r--r--platform/haiku/audio_driver_media_kit.h2
-rw-r--r--platform/haiku/context_gl_haiku.cpp2
-rw-r--r--platform/haiku/context_gl_haiku.h2
-rw-r--r--platform/haiku/godot_haiku.cpp2
-rw-r--r--platform/haiku/haiku_application.cpp2
-rw-r--r--platform/haiku/haiku_application.h2
-rw-r--r--platform/haiku/haiku_direct_window.cpp2
-rw-r--r--platform/haiku/haiku_direct_window.h2
-rw-r--r--platform/haiku/haiku_gl_view.cpp2
-rw-r--r--platform/haiku/haiku_gl_view.h2
-rw-r--r--platform/haiku/key_mapping_haiku.cpp2
-rw-r--r--platform/haiku/key_mapping_haiku.h2
-rw-r--r--platform/haiku/os_haiku.cpp11
-rw-r--r--platform/haiku/os_haiku.h6
-rw-r--r--platform/haiku/platform_config.h2
-rw-r--r--platform/haiku/power_haiku.cpp2
-rw-r--r--platform/haiku/power_haiku.h2
-rw-r--r--platform/iphone/app_delegate.h2
-rw-r--r--platform/iphone/app_delegate.mm2
-rw-r--r--platform/iphone/audio_driver_iphone.cpp8
-rw-r--r--platform/iphone/audio_driver_iphone.h2
-rw-r--r--platform/iphone/detect.py8
-rw-r--r--platform/iphone/export/export.cpp2
-rw-r--r--platform/iphone/export/export.h2
-rw-r--r--platform/iphone/game_center.h2
-rw-r--r--platform/iphone/game_center.mm2
-rw-r--r--platform/iphone/gl_view.h2
-rw-r--r--platform/iphone/gl_view.mm2
-rw-r--r--platform/iphone/globals/global_defaults.cpp2
-rw-r--r--platform/iphone/globals/global_defaults.h2
-rw-r--r--platform/iphone/godot_iphone.cpp2
-rw-r--r--platform/iphone/icloud.h2
-rw-r--r--platform/iphone/icloud.mm2
-rw-r--r--platform/iphone/in_app_store.h2
-rw-r--r--platform/iphone/in_app_store.mm2
-rw-r--r--platform/iphone/ios.h2
-rw-r--r--platform/iphone/ios.mm2
-rw-r--r--platform/iphone/main.m2
-rw-r--r--platform/iphone/os_iphone.cpp2
-rw-r--r--platform/iphone/os_iphone.h6
-rw-r--r--platform/iphone/platform_config.h2
-rw-r--r--platform/iphone/platform_refcount.h2
-rw-r--r--platform/iphone/power_iphone.cpp2
-rw-r--r--platform/iphone/power_iphone.h2
-rw-r--r--platform/iphone/sem_iphone.cpp2
-rw-r--r--platform/iphone/sem_iphone.h2
-rw-r--r--platform/iphone/view_controller.h2
-rw-r--r--platform/iphone/view_controller.mm4
-rw-r--r--platform/javascript/audio_driver_javascript.cpp2
-rw-r--r--platform/javascript/audio_driver_javascript.h2
-rw-r--r--platform/javascript/audio_server_javascript.cpp4
-rw-r--r--platform/javascript/audio_server_javascript.h4
-rw-r--r--platform/javascript/detect.py2
-rw-r--r--platform/javascript/dom_keys.h2
-rw-r--r--platform/javascript/export/export.cpp2
-rw-r--r--platform/javascript/export/export.h2
-rw-r--r--platform/javascript/javascript_eval.cpp2
-rw-r--r--platform/javascript/javascript_eval.h2
-rw-r--r--platform/javascript/javascript_main.cpp2
-rw-r--r--platform/javascript/os_javascript.cpp4
-rw-r--r--platform/javascript/os_javascript.h4
-rw-r--r--platform/javascript/platform_config.h2
-rw-r--r--platform/javascript/power_javascript.cpp2
-rw-r--r--platform/javascript/power_javascript.h2
-rw-r--r--platform/osx/audio_driver_osx.cpp104
-rw-r--r--platform/osx/audio_driver_osx.h6
-rw-r--r--platform/osx/detect.py10
-rw-r--r--platform/osx/dir_access_osx.h2
-rw-r--r--platform/osx/dir_access_osx.mm2
-rw-r--r--platform/osx/export/export.cpp2
-rw-r--r--platform/osx/export/export.h2
-rw-r--r--platform/osx/godot_main_osx.mm2
-rw-r--r--platform/osx/joypad_osx.cpp12
-rw-r--r--platform/osx/joypad_osx.h2
-rw-r--r--platform/osx/os_osx.h8
-rw-r--r--platform/osx/os_osx.mm32
-rw-r--r--platform/osx/platform_config.h2
-rw-r--r--platform/osx/power_osx.cpp2
-rw-r--r--platform/osx/power_osx.h2
-rw-r--r--platform/osx/sem_osx.cpp2
-rw-r--r--platform/osx/sem_osx.h2
-rw-r--r--platform/server/godot_server.cpp2
-rw-r--r--platform/server/os_server.cpp2
-rw-r--r--platform/server/os_server.h2
-rw-r--r--platform/server/platform_config.h2
-rw-r--r--platform/uwp/app.cpp4
-rw-r--r--platform/uwp/app.h2
-rw-r--r--platform/uwp/detect.py4
-rw-r--r--platform/uwp/export/export.cpp36
-rw-r--r--platform/uwp/export/export.h2
-rw-r--r--platform/uwp/gl_context_egl.cpp2
-rw-r--r--platform/uwp/gl_context_egl.h2
-rw-r--r--platform/uwp/joypad_uwp.cpp8
-rw-r--r--platform/uwp/joypad_uwp.h2
-rw-r--r--platform/uwp/os_uwp.cpp2
-rw-r--r--platform/uwp/os_uwp.h2
-rw-r--r--platform/uwp/platform_config.h2
-rw-r--r--platform/uwp/power_uwp.cpp2
-rw-r--r--platform/uwp/power_uwp.h2
-rw-r--r--platform/uwp/thread_uwp.cpp2
-rw-r--r--platform/uwp/thread_uwp.h2
-rw-r--r--platform/windows/context_gl_win.cpp2
-rw-r--r--platform/windows/context_gl_win.h2
-rw-r--r--platform/windows/ctxgl_procaddr.cpp2
-rw-r--r--platform/windows/ctxgl_procaddr.h2
-rw-r--r--platform/windows/detect.py65
-rw-r--r--platform/windows/export/export.cpp2
-rw-r--r--platform/windows/export/export.h2
-rw-r--r--platform/windows/godot_win.cpp9
-rw-r--r--platform/windows/joypad.cpp10
-rw-r--r--platform/windows/joypad.h2
-rw-r--r--platform/windows/key_mapping_win.cpp2
-rw-r--r--platform/windows/key_mapping_win.h2
-rw-r--r--platform/windows/lang_table.h2
-rw-r--r--platform/windows/os_windows.cpp150
-rw-r--r--platform/windows/os_windows.h22
-rw-r--r--platform/windows/packet_peer_udp_winsock.cpp4
-rw-r--r--platform/windows/packet_peer_udp_winsock.h4
-rw-r--r--platform/windows/platform_config.h2
-rw-r--r--platform/windows/power_windows.cpp2
-rw-r--r--platform/windows/power_windows.h2
-rw-r--r--platform/windows/stream_peer_winsock.cpp2
-rw-r--r--platform/windows/stream_peer_winsock.h2
-rw-r--r--platform/windows/tcp_server_winsock.cpp4
-rw-r--r--platform/windows/tcp_server_winsock.h4
-rw-r--r--platform/x11/context_gl_x11.cpp20
-rw-r--r--platform/x11/context_gl_x11.h2
-rw-r--r--platform/x11/detect.py4
-rw-r--r--platform/x11/export/export.cpp22
-rw-r--r--platform/x11/export/export.h2
-rw-r--r--platform/x11/godot_x11.cpp6
-rw-r--r--platform/x11/joypad_linux.cpp2
-rw-r--r--platform/x11/joypad_linux.h12
-rw-r--r--platform/x11/key_mapping_x11.cpp2
-rw-r--r--platform/x11/key_mapping_x11.h2
-rw-r--r--platform/x11/os_x11.cpp60
-rw-r--r--platform/x11/os_x11.h8
-rw-r--r--platform/x11/platform_config.h2
-rw-r--r--platform/x11/power_x11.cpp15
-rw-r--r--platform/x11/power_x11.h2
-rw-r--r--scene/2d/animated_sprite.cpp2
-rw-r--r--scene/2d/animated_sprite.h2
-rw-r--r--scene/2d/area_2d.cpp18
-rw-r--r--scene/2d/area_2d.h2
-rw-r--r--scene/2d/audio_stream_player_2d.cpp13
-rw-r--r--scene/2d/back_buffer_copy.cpp8
-rw-r--r--scene/2d/back_buffer_copy.h2
-rw-r--r--scene/2d/camera_2d.cpp28
-rw-r--r--scene/2d/camera_2d.h2
-rw-r--r--scene/2d/canvas_item.cpp67
-rw-r--r--scene/2d/canvas_item.h8
-rw-r--r--scene/2d/canvas_modulate.cpp2
-rw-r--r--scene/2d/canvas_modulate.h2
-rw-r--r--scene/2d/collision_object_2d.cpp2
-rw-r--r--scene/2d/collision_object_2d.h2
-rw-r--r--scene/2d/collision_polygon_2d.cpp18
-rw-r--r--scene/2d/collision_polygon_2d.h2
-rw-r--r--scene/2d/collision_shape_2d.cpp12
-rw-r--r--scene/2d/collision_shape_2d.h2
-rw-r--r--scene/2d/joints_2d.cpp22
-rw-r--r--scene/2d/joints_2d.h4
-rw-r--r--scene/2d/light_2d.cpp16
-rw-r--r--scene/2d/light_2d.h2
-rw-r--r--scene/2d/light_occluder_2d.cpp12
-rw-r--r--scene/2d/light_occluder_2d.h2
-rw-r--r--scene/2d/line_2d.cpp18
-rw-r--r--scene/2d/line_2d.h2
-rw-r--r--scene/2d/line_builder.cpp2
-rw-r--r--scene/2d/line_builder.h2
-rw-r--r--scene/2d/navigation2d.cpp65
-rw-r--r--scene/2d/navigation2d.h6
-rw-r--r--scene/2d/navigation_polygon.cpp17
-rw-r--r--scene/2d/navigation_polygon.h2
-rw-r--r--scene/2d/node_2d.cpp4
-rw-r--r--scene/2d/node_2d.h4
-rw-r--r--scene/2d/parallax_background.cpp4
-rw-r--r--scene/2d/parallax_background.h4
-rw-r--r--scene/2d/parallax_layer.cpp21
-rw-r--r--scene/2d/parallax_layer.h6
-rw-r--r--scene/2d/particles_2d.cpp9
-rw-r--r--scene/2d/particles_2d.h4
-rw-r--r--scene/2d/path_2d.cpp19
-rw-r--r--scene/2d/path_2d.h4
-rw-r--r--scene/2d/path_texture.cpp2
-rw-r--r--scene/2d/path_texture.h2
-rw-r--r--scene/2d/physics_body_2d.cpp69
-rw-r--r--scene/2d/physics_body_2d.h2
-rw-r--r--scene/2d/polygon_2d.cpp26
-rw-r--r--scene/2d/polygon_2d.h10
-rw-r--r--scene/2d/position_2d.cpp6
-rw-r--r--scene/2d/position_2d.h2
-rw-r--r--scene/2d/ray_cast_2d.cpp28
-rw-r--r--scene/2d/ray_cast_2d.h2
-rw-r--r--scene/2d/remote_transform_2d.cpp10
-rw-r--r--scene/2d/remote_transform_2d.h2
-rw-r--r--scene/2d/screen_button.cpp16
-rw-r--r--scene/2d/screen_button.h4
-rw-r--r--scene/2d/sprite.cpp10
-rw-r--r--scene/2d/sprite.h2
-rw-r--r--scene/2d/tile_map.cpp41
-rw-r--r--scene/2d/tile_map.h2
-rw-r--r--scene/2d/visibility_notifier_2d.cpp46
-rw-r--r--scene/2d/visibility_notifier_2d.h2
-rw-r--r--scene/2d/y_sort.cpp2
-rw-r--r--scene/2d/y_sort.h2
-rw-r--r--scene/3d/area.cpp18
-rw-r--r--scene/3d/area.h2
-rw-r--r--scene/3d/arvr_nodes.cpp14
-rw-r--r--scene/3d/arvr_nodes.h2
-rw-r--r--scene/3d/audio_stream_player_3d.cpp23
-rw-r--r--scene/3d/bone_attachment.cpp14
-rw-r--r--scene/3d/bone_attachment.h2
-rw-r--r--scene/3d/camera.cpp31
-rw-r--r--scene/3d/camera.h8
-rw-r--r--scene/3d/character_camera.cpp718
-rw-r--r--scene/3d/character_camera.h167
-rw-r--r--scene/3d/collision_object.cpp3
-rw-r--r--scene/3d/collision_object.h2
-rw-r--r--scene/3d/collision_polygon.cpp6
-rw-r--r--scene/3d/collision_polygon.h2
-rw-r--r--scene/3d/collision_shape.cpp16
-rw-r--r--scene/3d/collision_shape.h2
-rw-r--r--scene/3d/gi_probe.cpp15
-rw-r--r--scene/3d/gi_probe.h2
-rw-r--r--scene/3d/immediate_geometry.cpp2
-rw-r--r--scene/3d/immediate_geometry.h6
-rw-r--r--scene/3d/interpolated_camera.cpp16
-rw-r--r--scene/3d/interpolated_camera.h2
-rw-r--r--scene/3d/light.cpp61
-rw-r--r--scene/3d/light.h9
-rw-r--r--scene/3d/listener.cpp2
-rw-r--r--scene/3d/listener.h2
-rw-r--r--scene/3d/mesh_instance.cpp12
-rw-r--r--scene/3d/mesh_instance.h2
-rw-r--r--scene/3d/multimesh_instance.cpp2
-rw-r--r--scene/3d/multimesh_instance.h2
-rw-r--r--scene/3d/navigation.cpp4
-rw-r--r--scene/3d/navigation.h2
-rw-r--r--scene/3d/navigation_mesh.cpp14
-rw-r--r--scene/3d/navigation_mesh.h2
-rw-r--r--scene/3d/particles.cpp74
-rw-r--r--scene/3d/particles.h4
-rw-r--r--scene/3d/path.cpp35
-rw-r--r--scene/3d/path.h2
-rw-r--r--scene/3d/physics_body.cpp32
-rw-r--r--scene/3d/physics_body.h2
-rw-r--r--scene/3d/physics_joint.cpp436
-rw-r--r--scene/3d/physics_joint.h71
-rw-r--r--scene/3d/portal.cpp5
-rw-r--r--scene/3d/portal.h6
-rw-r--r--scene/3d/position_3d.cpp2
-rw-r--r--scene/3d/position_3d.h2
-rw-r--r--scene/3d/proximity_group.cpp6
-rw-r--r--scene/3d/proximity_group.h2
-rw-r--r--scene/3d/ray_cast.cpp14
-rw-r--r--scene/3d/ray_cast.h2
-rw-r--r--scene/3d/reflection_probe.cpp6
-rw-r--r--scene/3d/reflection_probe.h2
-rw-r--r--scene/3d/remote_transform.cpp10
-rw-r--r--scene/3d/remote_transform.h2
-rw-r--r--scene/3d/room_instance.cpp9
-rw-r--r--scene/3d/room_instance.h7
-rw-r--r--scene/3d/scenario_fx.cpp2
-rw-r--r--scene/3d/scenario_fx.h2
-rw-r--r--scene/3d/skeleton.cpp12
-rw-r--r--scene/3d/skeleton.h8
-rw-r--r--scene/3d/spatial.cpp67
-rw-r--r--scene/3d/spatial.h3
-rw-r--r--scene/3d/spatial_indexer.cpp166
-rw-r--r--scene/3d/spatial_indexer.h84
-rw-r--r--scene/3d/spatial_velocity_tracker.h2
-rw-r--r--scene/3d/sprite_3d.cpp296
-rw-r--r--scene/3d/sprite_3d.h35
-rw-r--r--scene/3d/vehicle_body.cpp21
-rw-r--r--scene/3d/vehicle_body.h4
-rw-r--r--scene/3d/visibility_notifier.cpp22
-rw-r--r--scene/3d/visibility_notifier.h2
-rw-r--r--scene/3d/visual_instance.cpp50
-rw-r--r--scene/3d/visual_instance.h6
-rw-r--r--scene/SCsub1
-rw-r--r--scene/animation/animation_cache.cpp6
-rw-r--r--scene/animation/animation_cache.h2
-rw-r--r--scene/animation/animation_player.cpp39
-rw-r--r--scene/animation/animation_player.h4
-rw-r--r--scene/animation/animation_tree_player.cpp32
-rw-r--r--scene/animation/animation_tree_player.h10
-rw-r--r--scene/animation/tween.cpp64
-rw-r--r--scene/animation/tween.h24
-rw-r--r--scene/animation/tween_interpolaters.cpp2
-rw-r--r--scene/audio/audio_player.cpp19
-rw-r--r--scene/audio/audio_player.h2
-rw-r--r--scene/gui/base_button.cpp15
-rw-r--r--scene/gui/base_button.h2
-rw-r--r--scene/gui/box_container.cpp16
-rw-r--r--scene/gui/box_container.h2
-rw-r--r--scene/gui/button.cpp12
-rw-r--r--scene/gui/button.h2
-rw-r--r--scene/gui/button_group.cpp4
-rw-r--r--scene/gui/button_group.h2
-rw-r--r--scene/gui/center_container.cpp6
-rw-r--r--scene/gui/center_container.h2
-rw-r--r--scene/gui/check_box.cpp2
-rw-r--r--scene/gui/check_box.h2
-rw-r--r--scene/gui/check_button.cpp2
-rw-r--r--scene/gui/check_button.h2
-rw-r--r--scene/gui/color_picker.cpp37
-rw-r--r--scene/gui/color_picker.h10
-rw-r--r--scene/gui/color_rect.cpp2
-rw-r--r--scene/gui/color_rect.h2
-rw-r--r--scene/gui/container.cpp8
-rw-r--r--scene/gui/container.h2
-rw-r--r--scene/gui/control.cpp408
-rw-r--r--scene/gui/control.h49
-rw-r--r--scene/gui/dialogs.cpp28
-rw-r--r--scene/gui/dialogs.h2
-rw-r--r--scene/gui/file_dialog.cpp21
-rw-r--r--scene/gui/file_dialog.h2
-rw-r--r--scene/gui/gradient_edit.cpp2
-rw-r--r--scene/gui/gradient_edit.h2
-rw-r--r--scene/gui/graph_edit.cpp170
-rw-r--r--scene/gui/graph_edit.h2
-rw-r--r--scene/gui/graph_node.cpp18
-rw-r--r--scene/gui/graph_node.h2
-rw-r--r--scene/gui/grid_container.cpp8
-rw-r--r--scene/gui/grid_container.h2
-rw-r--r--scene/gui/input_action.cpp131
-rw-r--r--scene/gui/input_action.h56
-rw-r--r--scene/gui/item_list.cpp19
-rw-r--r--scene/gui/item_list.h6
-rw-r--r--scene/gui/label.cpp27
-rw-r--r--scene/gui/label.h2
-rw-r--r--scene/gui/line_edit.cpp30
-rw-r--r--scene/gui/line_edit.h5
-rw-r--r--scene/gui/link_button.cpp8
-rw-r--r--scene/gui/link_button.h2
-rw-r--r--scene/gui/margin_container.cpp6
-rw-r--r--scene/gui/margin_container.h2
-rw-r--r--scene/gui/menu_button.cpp4
-rw-r--r--scene/gui/menu_button.h2
-rw-r--r--scene/gui/option_button.cpp14
-rw-r--r--scene/gui/option_button.h2
-rw-r--r--scene/gui/panel.cpp2
-rw-r--r--scene/gui/panel.h2
-rw-r--r--scene/gui/panel_container.cpp6
-rw-r--r--scene/gui/panel_container.h2
-rw-r--r--scene/gui/patch_9_rect.cpp8
-rw-r--r--scene/gui/patch_9_rect.h4
-rw-r--r--scene/gui/popup.cpp57
-rw-r--r--scene/gui/popup.h2
-rw-r--r--scene/gui/popup_menu.cpp26
-rw-r--r--scene/gui/popup_menu.h4
-rw-r--r--scene/gui/progress_bar.cpp2
-rw-r--r--scene/gui/progress_bar.h2
-rw-r--r--scene/gui/range.cpp4
-rw-r--r--scene/gui/range.h2
-rw-r--r--scene/gui/reference_rect.cpp6
-rw-r--r--scene/gui/reference_rect.h2
-rw-r--r--scene/gui/rich_text_label.cpp44
-rw-r--r--scene/gui/rich_text_label.h4
-rw-r--r--scene/gui/scroll_bar.cpp204
-rw-r--r--scene/gui/scroll_bar.h9
-rw-r--r--scene/gui/scroll_container.cpp12
-rw-r--r--scene/gui/scroll_container.h2
-rw-r--r--scene/gui/separator.cpp2
-rw-r--r--scene/gui/separator.h2
-rw-r--r--scene/gui/shortcut.cpp77
-rw-r--r--scene/gui/shortcut.h56
-rw-r--r--scene/gui/slider.cpp2
-rw-r--r--scene/gui/slider.h2
-rw-r--r--scene/gui/spin_box.cpp4
-rw-r--r--scene/gui/spin_box.h2
-rw-r--r--scene/gui/split_container.cpp10
-rw-r--r--scene/gui/split_container.h2
-rw-r--r--scene/gui/tab_container.cpp32
-rw-r--r--scene/gui/tab_container.h4
-rw-r--r--scene/gui/tabs.cpp18
-rw-r--r--scene/gui/tabs.h2
-rw-r--r--scene/gui/text_edit.cpp244
-rw-r--r--scene/gui/text_edit.h32
-rw-r--r--scene/gui/texture_button.cpp20
-rw-r--r--scene/gui/texture_button.h6
-rw-r--r--scene/gui/texture_progress.cpp275
-rw-r--r--scene/gui/texture_progress.h13
-rw-r--r--scene/gui/texture_rect.cpp18
-rw-r--r--scene/gui/texture_rect.h2
-rw-r--r--scene/gui/tool_button.cpp2
-rw-r--r--scene/gui/tool_button.h2
-rw-r--r--scene/gui/tree.cpp121
-rw-r--r--scene/gui/tree.h34
-rw-r--r--scene/gui/video_player.cpp50
-rw-r--r--scene/gui/video_player.h17
-rw-r--r--scene/gui/viewport_container.cpp10
-rw-r--r--scene/gui/viewport_container.h2
-rw-r--r--scene/io/SCsub7
-rw-r--r--scene/io/resource_format_image.cpp266
-rw-r--r--scene/io/resource_format_image.h55
-rw-r--r--scene/io/resource_format_wav.cpp277
-rw-r--r--scene/io/resource_format_wav.h46
-rw-r--r--scene/main/canvas_layer.cpp4
-rw-r--r--scene/main/canvas_layer.h4
-rw-r--r--scene/main/http_request.cpp28
-rw-r--r--scene/main/http_request.h4
-rw-r--r--scene/main/instance_placeholder.cpp2
-rw-r--r--scene/main/instance_placeholder.h2
-rwxr-xr-xscene/main/node.cpp174
-rw-r--r--scene/main/node.h16
-rw-r--r--scene/main/resource_preloader.cpp2
-rw-r--r--scene/main/resource_preloader.h2
-rw-r--r--scene/main/scene_tree.cpp221
-rw-r--r--scene/main/scene_tree.h15
-rwxr-xr-xscene/main/timer.cpp10
-rwxr-xr-xscene/main/timer.h2
-rw-r--r--scene/main/viewport.cpp253
-rw-r--r--scene/main/viewport.h2
-rw-r--r--scene/register_scene_types.cpp231
-rw-r--r--scene/register_scene_types.h2
-rw-r--r--scene/resources/animation.cpp79
-rw-r--r--scene/resources/animation.h4
-rw-r--r--scene/resources/audio_stream_resampled.cpp388
-rw-r--r--scene/resources/audio_stream_resampled.h166
-rw-r--r--scene/resources/audio_stream_sample.cpp2
-rw-r--r--scene/resources/audio_stream_sample.h2
-rw-r--r--scene/resources/bit_mask.cpp2
-rw-r--r--scene/resources/bit_mask.h2
-rw-r--r--scene/resources/bounds.cpp2
-rw-r--r--scene/resources/bounds.h2
-rw-r--r--scene/resources/box_shape.cpp2
-rw-r--r--scene/resources/box_shape.h2
-rw-r--r--scene/resources/canvas.cpp2
-rw-r--r--scene/resources/canvas.h2
-rw-r--r--scene/resources/capsule_shape.cpp2
-rw-r--r--scene/resources/capsule_shape.h2
-rw-r--r--scene/resources/capsule_shape_2d.cpp2
-rw-r--r--scene/resources/capsule_shape_2d.h2
-rw-r--r--scene/resources/circle_shape_2d.cpp2
-rw-r--r--scene/resources/circle_shape_2d.h2
-rw-r--r--scene/resources/color_ramp.cpp6
-rw-r--r--scene/resources/color_ramp.h8
-rw-r--r--scene/resources/concave_polygon_shape.cpp2
-rw-r--r--scene/resources/concave_polygon_shape.h2
-rw-r--r--scene/resources/concave_polygon_shape_2d.cpp2
-rw-r--r--scene/resources/concave_polygon_shape_2d.h2
-rw-r--r--scene/resources/convex_polygon_shape.cpp2
-rw-r--r--scene/resources/convex_polygon_shape.h2
-rw-r--r--scene/resources/convex_polygon_shape_2d.cpp2
-rw-r--r--scene/resources/convex_polygon_shape_2d.h2
-rw-r--r--scene/resources/curve.cpp341
-rw-r--r--scene/resources/curve.h58
-rw-r--r--scene/resources/default_theme/default_theme.cpp822
-rw-r--r--scene/resources/default_theme/default_theme.h2
-rw-r--r--scene/resources/default_theme/scroll_grabber_pressed.pngbin0 -> 233 bytes
-rw-r--r--scene/resources/default_theme/theme_data.h4
-rw-r--r--scene/resources/dynamic_font.cpp22
-rw-r--r--scene/resources/dynamic_font.h6
-rw-r--r--scene/resources/dynamic_font_stb.cpp4
-rw-r--r--scene/resources/dynamic_font_stb.h2
-rw-r--r--scene/resources/environment.cpp51
-rw-r--r--scene/resources/environment.h6
-rw-r--r--scene/resources/font.cpp10
-rw-r--r--scene/resources/font.h2
-rw-r--r--scene/resources/gibberish_stream.cpp337
-rw-r--r--scene/resources/gibberish_stream.h118
-rw-r--r--scene/resources/material.cpp170
-rw-r--r--scene/resources/material.h4
-rw-r--r--scene/resources/mesh.cpp55
-rw-r--r--scene/resources/mesh.h5
-rw-r--r--scene/resources/mesh_data_tool.cpp2
-rw-r--r--scene/resources/mesh_data_tool.h2
-rw-r--r--scene/resources/mesh_library.cpp65
-rw-r--r--scene/resources/mesh_library.h16
-rw-r--r--scene/resources/multimesh.cpp13
-rw-r--r--scene/resources/multimesh.h2
-rw-r--r--scene/resources/packed_scene.cpp161
-rw-r--r--scene/resources/packed_scene.h2
-rw-r--r--scene/resources/plane_shape.cpp2
-rw-r--r--scene/resources/plane_shape.h2
-rw-r--r--scene/resources/polygon_path_finder.cpp2
-rw-r--r--scene/resources/polygon_path_finder.h2
-rw-r--r--scene/resources/primitive_meshes.cpp32
-rw-r--r--scene/resources/primitive_meshes.h2
-rw-r--r--scene/resources/ray_shape.cpp2
-rw-r--r--scene/resources/ray_shape.h2
-rw-r--r--scene/resources/rectangle_shape_2d.cpp2
-rw-r--r--scene/resources/rectangle_shape_2d.h2
-rw-r--r--scene/resources/room.cpp5
-rw-r--r--scene/resources/room.h8
-rw-r--r--scene/resources/scene_format_text.cpp10
-rw-r--r--scene/resources/scene_format_text.h2
-rw-r--r--scene/resources/segment_shape_2d.cpp2
-rw-r--r--scene/resources/segment_shape_2d.h2
-rw-r--r--scene/resources/shader.cpp8
-rw-r--r--scene/resources/shader.h2
-rw-r--r--scene/resources/shader_graph.cpp323
-rw-r--r--scene/resources/shader_graph.h3
-rw-r--r--scene/resources/shape.cpp4
-rw-r--r--scene/resources/shape.h2
-rw-r--r--scene/resources/shape_2d.cpp2
-rw-r--r--scene/resources/shape_2d.h6
-rw-r--r--scene/resources/shape_line_2d.cpp2
-rw-r--r--scene/resources/shape_line_2d.h2
-rw-r--r--scene/resources/sky_box.cpp93
-rw-r--r--scene/resources/sky_box.h13
-rw-r--r--scene/resources/space_2d.cpp2
-rw-r--r--scene/resources/space_2d.h2
-rw-r--r--scene/resources/sphere_shape.cpp2
-rw-r--r--scene/resources/sphere_shape.h2
-rw-r--r--scene/resources/style_box.cpp587
-rw-r--r--scene/resources/style_box.h100
-rw-r--r--scene/resources/surface_tool.cpp37
-rw-r--r--scene/resources/surface_tool.h8
-rw-r--r--scene/resources/texture.cpp67
-rw-r--r--scene/resources/texture.h2
-rw-r--r--scene/resources/theme.cpp17
-rw-r--r--scene/resources/theme.h8
-rw-r--r--scene/resources/tile_set.cpp2
-rw-r--r--scene/resources/tile_set.h6
-rw-r--r--scene/resources/video_stream.cpp2
-rw-r--r--scene/resources/video_stream.h3
-rw-r--r--scene/resources/world.cpp4
-rw-r--r--scene/resources/world.h2
-rw-r--r--scene/resources/world_2d.cpp2
-rw-r--r--scene/resources/world_2d.h2
-rw-r--r--scene/scene_string_names.cpp2
-rw-r--r--scene/scene_string_names.h2
-rw-r--r--servers/arvr/arvr_interface.cpp8
-rw-r--r--servers/arvr/arvr_interface.h2
-rw-r--r--servers/arvr/arvr_positional_tracker.cpp2
-rw-r--r--servers/arvr/arvr_positional_tracker.h2
-rw-r--r--servers/arvr_server.cpp14
-rw-r--r--servers/arvr_server.h16
-rw-r--r--servers/audio/audio_driver_dummy.cpp4
-rw-r--r--servers/audio/audio_driver_dummy.h2
-rw-r--r--servers/audio/audio_effect.cpp2
-rw-r--r--servers/audio/audio_effect.h2
-rw-r--r--servers/audio/audio_filter_sw.cpp2
-rw-r--r--servers/audio/audio_filter_sw.h18
-rw-r--r--servers/audio/audio_rb_resampler.cpp58
-rw-r--r--servers/audio/audio_rb_resampler.h2
-rw-r--r--servers/audio/audio_stream.cpp2
-rw-r--r--servers/audio/audio_stream.h6
-rw-r--r--servers/audio/effects/audio_effect_amplify.cpp2
-rw-r--r--servers/audio/effects/audio_effect_amplify.h2
-rw-r--r--servers/audio/effects/audio_effect_chorus.cpp2
-rw-r--r--servers/audio/effects/audio_effect_chorus.h2
-rw-r--r--servers/audio/effects/audio_effect_compressor.cpp2
-rw-r--r--servers/audio/effects/audio_effect_compressor.h2
-rw-r--r--servers/audio/effects/audio_effect_delay.cpp2
-rw-r--r--servers/audio/effects/audio_effect_delay.h2
-rw-r--r--servers/audio/effects/audio_effect_distortion.cpp2
-rw-r--r--servers/audio/effects/audio_effect_distortion.h10
-rw-r--r--servers/audio/effects/audio_effect_eq.cpp2
-rw-r--r--servers/audio/effects/audio_effect_eq.h2
-rw-r--r--servers/audio/effects/audio_effect_filter.cpp2
-rw-r--r--servers/audio/effects/audio_effect_filter.h2
-rw-r--r--servers/audio/effects/audio_effect_limiter.cpp2
-rw-r--r--servers/audio/effects/audio_effect_limiter.h2
-rw-r--r--servers/audio/effects/audio_effect_panner.cpp2
-rw-r--r--servers/audio/effects/audio_effect_panner.h4
-rw-r--r--servers/audio/effects/audio_effect_phaser.cpp2
-rw-r--r--servers/audio/effects/audio_effect_phaser.h2
-rw-r--r--servers/audio/effects/audio_effect_pitch_shift.cpp2
-rw-r--r--servers/audio/effects/audio_effect_pitch_shift.h2
-rw-r--r--servers/audio/effects/audio_effect_reverb.cpp2
-rw-r--r--servers/audio/effects/audio_effect_reverb.h2
-rw-r--r--servers/audio/effects/audio_effect_stereo_enhance.cpp2
-rw-r--r--servers/audio/effects/audio_effect_stereo_enhance.h2
-rw-r--r--servers/audio/effects/eq.cpp2
-rw-r--r--servers/audio/effects/eq.h2
-rw-r--r--servers/audio/effects/reverb.cpp2
-rw-r--r--servers/audio/effects/reverb.h2
-rw-r--r--servers/audio/reverb_sw.cpp2
-rw-r--r--servers/audio/reverb_sw.h2
-rw-r--r--servers/audio/voice_rb_sw.h2
-rw-r--r--servers/audio_server.cpp80
-rw-r--r--servers/audio_server.h4
-rw-r--r--servers/physics/area_pair_sw.cpp2
-rw-r--r--servers/physics/area_pair_sw.h2
-rw-r--r--servers/physics/area_sw.cpp2
-rw-r--r--servers/physics/area_sw.h2
-rw-r--r--servers/physics/body_pair_sw.cpp26
-rw-r--r--servers/physics/body_pair_sw.h2
-rw-r--r--servers/physics/body_sw.cpp2
-rw-r--r--servers/physics/body_sw.h2
-rw-r--r--servers/physics/broad_phase_basic.cpp15
-rw-r--r--servers/physics/broad_phase_basic.h2
-rw-r--r--servers/physics/broad_phase_octree.cpp5
-rw-r--r--servers/physics/broad_phase_octree.h4
-rw-r--r--servers/physics/broad_phase_sw.cpp2
-rw-r--r--servers/physics/broad_phase_sw.h2
-rw-r--r--servers/physics/collision_object_sw.cpp2
-rw-r--r--servers/physics/collision_object_sw.h4
-rw-r--r--servers/physics/collision_solver_sat.cpp2
-rw-r--r--servers/physics/collision_solver_sat.h2
-rw-r--r--servers/physics/collision_solver_sw.cpp2
-rw-r--r--servers/physics/collision_solver_sw.h2
-rw-r--r--servers/physics/constraint_sw.h2
-rw-r--r--servers/physics/gjk_epa.cpp2
-rw-r--r--servers/physics/gjk_epa.h2
-rw-r--r--servers/physics/joints/cone_twist_joint_sw.cpp12
-rw-r--r--servers/physics/joints/cone_twist_joint_sw.h6
-rw-r--r--servers/physics/joints/generic_6dof_joint_sw.cpp8
-rw-r--r--servers/physics/joints/generic_6dof_joint_sw.h6
-rw-r--r--servers/physics/joints/hinge_joint_sw.cpp2
-rw-r--r--servers/physics/joints/hinge_joint_sw.h2
-rw-r--r--servers/physics/joints/jacobian_entry_sw.h2
-rw-r--r--servers/physics/joints/pin_joint_sw.cpp2
-rw-r--r--servers/physics/joints/pin_joint_sw.h2
-rw-r--r--servers/physics/joints/slider_joint_sw.cpp2
-rw-r--r--servers/physics/joints/slider_joint_sw.h2
-rw-r--r--servers/physics/joints_sw.h2
-rw-r--r--servers/physics/physics_server_sw.cpp114
-rw-r--r--servers/physics/physics_server_sw.h16
-rw-r--r--servers/physics/shape_sw.cpp119
-rw-r--r--servers/physics/shape_sw.h4
-rw-r--r--servers/physics/space_sw.cpp37
-rw-r--r--servers/physics/space_sw.h2
-rw-r--r--servers/physics/step_sw.cpp2
-rw-r--r--servers/physics/step_sw.h2
-rw-r--r--servers/physics_2d/area_2d_sw.cpp2
-rw-r--r--servers/physics_2d/area_2d_sw.h2
-rw-r--r--servers/physics_2d/area_pair_2d_sw.cpp2
-rw-r--r--servers/physics_2d/area_pair_2d_sw.h2
-rw-r--r--servers/physics_2d/body_2d_sw.cpp2
-rw-r--r--servers/physics_2d/body_2d_sw.h2
-rw-r--r--servers/physics_2d/body_pair_2d_sw.cpp2
-rw-r--r--servers/physics_2d/body_pair_2d_sw.h2
-rw-r--r--servers/physics_2d/broad_phase_2d_basic.cpp6
-rw-r--r--servers/physics_2d/broad_phase_2d_basic.h2
-rw-r--r--servers/physics_2d/broad_phase_2d_hash_grid.cpp2
-rw-r--r--servers/physics_2d/broad_phase_2d_hash_grid.h4
-rw-r--r--servers/physics_2d/broad_phase_2d_sw.cpp2
-rw-r--r--servers/physics_2d/broad_phase_2d_sw.h2
-rw-r--r--servers/physics_2d/collision_object_2d_sw.cpp2
-rw-r--r--servers/physics_2d/collision_object_2d_sw.h4
-rw-r--r--servers/physics_2d/collision_solver_2d_sat.cpp187
-rw-r--r--servers/physics_2d/collision_solver_2d_sat.h2
-rw-r--r--servers/physics_2d/collision_solver_2d_sw.cpp2
-rw-r--r--servers/physics_2d/collision_solver_2d_sw.h2
-rw-r--r--servers/physics_2d/constraint_2d_sw.h2
-rw-r--r--servers/physics_2d/joints_2d_sw.cpp126
-rw-r--r--servers/physics_2d/joints_2d_sw.h43
-rw-r--r--servers/physics_2d/physics_2d_server_sw.cpp10
-rw-r--r--servers/physics_2d/physics_2d_server_sw.h10
-rw-r--r--servers/physics_2d/physics_2d_server_wrap_mt.cpp2
-rw-r--r--servers/physics_2d/physics_2d_server_wrap_mt.h2
-rw-r--r--servers/physics_2d/shape_2d_sw.cpp3
-rw-r--r--servers/physics_2d/shape_2d_sw.h2
-rw-r--r--servers/physics_2d/space_2d_sw.cpp55
-rw-r--r--servers/physics_2d/space_2d_sw.h2
-rw-r--r--servers/physics_2d/step_2d_sw.cpp2
-rw-r--r--servers/physics_2d/step_2d_sw.h2
-rw-r--r--servers/physics_2d_server.cpp176
-rw-r--r--servers/physics_2d_server.h4
-rw-r--r--servers/physics_server.cpp277
-rw-r--r--servers/physics_server.h39
-rw-r--r--servers/register_server_types.cpp2
-rw-r--r--servers/register_server_types.h2
-rw-r--r--servers/server_wrap_mt_common.h2
-rw-r--r--servers/visual/rasterizer.cpp614
-rw-r--r--servers/visual/rasterizer.h1050
-rw-r--r--servers/visual/shader_language.cpp63
-rw-r--r--servers/visual/shader_language.h19
-rw-r--r--servers/visual/shader_types.cpp257
-rw-r--r--servers/visual/shader_types.h6
-rw-r--r--servers/visual/visual_server_canvas.cpp43
-rw-r--r--servers/visual/visual_server_canvas.h6
-rw-r--r--servers/visual/visual_server_global.cpp2
-rw-r--r--servers/visual/visual_server_global.h2
-rw-r--r--servers/visual/visual_server_light_baker.cpp2
-rw-r--r--servers/visual/visual_server_light_baker.h2
-rw-r--r--servers/visual/visual_server_raster.cpp7743
-rw-r--r--servers/visual/visual_server_raster.h24
-rw-r--r--servers/visual/visual_server_scene.cpp654
-rw-r--r--servers/visual/visual_server_scene.h48
-rw-r--r--servers/visual/visual_server_viewport.cpp33
-rw-r--r--servers/visual/visual_server_viewport.h2
-rw-r--r--servers/visual/visual_server_wrap_mt.cpp2
-rw-r--r--servers/visual/visual_server_wrap_mt.h23
-rw-r--r--servers/visual_server.cpp55
-rw-r--r--servers/visual_server.h29
-rw-r--r--thirdparty/README.md56
-rw-r--r--thirdparty/enet/enet/godot.h2
-rw-r--r--thirdparty/enet/godot.cpp2
-rw-r--r--thirdparty/libpng/arm/filter_neon.S2
-rw-r--r--thirdparty/libpng/png.c22
-rw-r--r--thirdparty/libpng/png.h33
-rw-r--r--thirdparty/libpng/pngconf.h2
-rw-r--r--thirdparty/libpng/pngerror.c2
-rw-r--r--thirdparty/libpng/pngget.c15
-rw-r--r--thirdparty/libpng/pnginfo.h5
-rw-r--r--thirdparty/libpng/pnglibconf.h4
-rw-r--r--thirdparty/libpng/pngpread.c5
-rw-r--r--thirdparty/libpng/pngpriv.h14
-rw-r--r--thirdparty/libpng/pngread.c13
-rw-r--r--thirdparty/libpng/pngrtran.c2
-rw-r--r--thirdparty/libpng/pngrutil.c147
-rw-r--r--thirdparty/libpng/pngset.c23
-rw-r--r--thirdparty/libpng/pngstruct.h5
-rw-r--r--thirdparty/libpng/pngwrite.c13
-rw-r--r--thirdparty/libpng/pngwutil.c17
-rw-r--r--thirdparty/minizip/LICENSE-InfoZip.txt60
-rw-r--r--thirdparty/minizip/LICENSE-MiniZip.txt32
-rw-r--r--thirdparty/minizip/MiniZip_info.txt74
-rw-r--r--thirdparty/minizip/godot-zlib-1.2.4-minizip-seek.patch295
-rw-r--r--thirdparty/minizip/godot-zlib-1.2.4-minizip-unbreak-gentoo.patch27
-rw-r--r--thirdparty/minizip/ioapi.c10
-rw-r--r--thirdparty/minizip/ioapi.h65
-rw-r--r--thirdparty/minizip/unzip.c241
-rw-r--r--thirdparty/minizip/unzip.h85
-rw-r--r--thirdparty/minizip/zip.c33
-rw-r--r--thirdparty/minizip/zip.h71
-rw-r--r--thirdparty/misc/stb_truetype.h1485
-rw-r--r--thirdparty/misc/stb_vorbis.c114
-rw-r--r--thirdparty/nanosvg/LICENSE.txt18
-rw-r--r--thirdparty/nanosvg/nanosvg.cc8
-rw-r--r--thirdparty/nanosvg/nanosvg.h2925
-rw-r--r--thirdparty/nanosvg/nanosvgrast.h1447
-rw-r--r--thirdparty/zstd/PATENTS33
-rw-r--r--thirdparty/zstd/README.md153
-rw-r--r--thirdparty/zstd/common/bitstream.h81
-rw-r--r--thirdparty/zstd/common/compiler.h85
-rw-r--r--thirdparty/zstd/common/error_private.c18
-rw-r--r--thirdparty/zstd/common/error_private.h8
-rw-r--r--thirdparty/zstd/common/fse.h16
-rw-r--r--thirdparty/zstd/common/fse_decompress.c25
-rw-r--r--thirdparty/zstd/common/huf.h11
-rw-r--r--thirdparty/zstd/common/mem.h12
-rw-r--r--thirdparty/zstd/common/pool.c88
-rw-r--r--thirdparty/zstd/common/pool.h20
-rw-r--r--thirdparty/zstd/common/threading.h11
-rw-r--r--thirdparty/zstd/common/xxhash.c50
-rw-r--r--thirdparty/zstd/common/zstd_common.c8
-rw-r--r--thirdparty/zstd/common/zstd_errors.h62
-rw-r--r--thirdparty/zstd/common/zstd_internal.h107
-rw-r--r--thirdparty/zstd/compress/fse_compress.c26
-rw-r--r--thirdparty/zstd/compress/huf_compress.c7
-rw-r--r--thirdparty/zstd/compress/zstd_compress.c618
-rw-r--r--thirdparty/zstd/compress/zstd_opt.h234
-rw-r--r--thirdparty/zstd/compress/zstdmt_compress.c379
-rw-r--r--thirdparty/zstd/compress/zstdmt_compress.h19
-rw-r--r--thirdparty/zstd/decompress/huf_decompress.c32
-rw-r--r--thirdparty/zstd/decompress/zstd_decompress.c203
-rw-r--r--thirdparty/zstd/zstd.h30
4767 files changed, 75664 insertions, 148451 deletions
diff --git a/.gitignore b/.gitignore
index 497d8b50d2..0cccfa97a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,9 @@ platform/android/java/assets
.deps/*
.dirstamp
+# Gprof output
+gmon.out
+
# Vim temp files
*.swo
*.swp
@@ -44,6 +47,10 @@ platform/android/java/assets
*.files
*.includes
+# Eclipse CDT files
+.cproject
+.settings/
+
# Misc
.DS_Store
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index b36f2b1134..92e68060c6 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -43,7 +43,7 @@ Source: https://github.com/godotengine/godot
Files: *
Comment: Godot Engine
Copyright: 2007-2017, Juan Linietsky, Ariel Manzur.
- 2014-2017, Godot Engine contributors (cf. AUTHORS.md)
+ 2014-2017, Godot Engine contributors.
License: Expat
Files: ./icon.png
@@ -51,7 +51,7 @@ Files: ./icon.png
./logo.png
./logo.svg
Comment: Godot Engine logo
-Copyright: Andrea Calabró
+Copyright: 2017, Andrea Calabró
License: CC-BY-3.0
Files: ./platform/android/android_native_app_glue.c
@@ -92,7 +92,7 @@ Files: ./platform/android/power_android.cpp
Comment: Simple DirectMedia Layer
Copyright: 1997-2017, Sam Lantinga
2007-2017, Juan Linietsky, Ariel Manzur.
- 2014-2017, Godot Engine contributors (cf. AUTHORS.md)
+ 2014-2017, Godot Engine contributors.
License: Expat and Zlib
Files: ./servers/physics/gjk_epa.cpp
@@ -108,7 +108,7 @@ Files: ./servers/physics/gjk_epa.cpp
Comment: Bullet Continuous Collision Detection and Physics Library
Copyright: 2003-2008, Erwin Coumans
2007-2017, Juan Linietsky, Ariel Manzur.
- 2014-2017, Godot Engine contributors (cf. AUTHORS.md)
+ 2014-2017, Godot Engine contributors.
License: Expat and Zlib
Files: ./servers/physics/joints/cone_twist_joint_sw.cpp
@@ -116,7 +116,7 @@ Files: ./servers/physics/joints/cone_twist_joint_sw.cpp
Comment: Bullet Continuous Collision Detection and Physics Library
Copyright: 2007, Starbreeze Studios
2007-2017, Juan Linietsky, Ariel Manzur.
- 2014-2017, Godot Engine contributors (cf. AUTHORS.md)
+ 2014-2017, Godot Engine contributors.
License: Expat and Zlib
Files: ./thirdparty/b2d_convexdecomp/
@@ -135,6 +135,11 @@ Comment: ENet
Copyright: 2002-2016, Lee Salzman
License: Expat
+Files: ./thirdparty/etc2comp/
+Comment: Etc2Comp
+Copyright: 2015, Etc2Comp Authors
+License: Apache-2.0
+
Files: ./thirdparty/fonts/DroidSans*.ttf
Comment: DroidSans font
Copyright: 2008, The Android Open Source Project
@@ -147,7 +152,7 @@ License: OFL-1.1
Files: ./thirdparty/freetype/
Comment: The FreeType Project
-Copyright: 1996-2016, David Turner, Robert Wilhelm, and Werner Lemberg.
+Copyright: 1996-2017, David Turner, Robert Wilhelm, and Werner Lemberg.
License: FTL
Files: ./thirdparty/glad/
@@ -268,7 +273,7 @@ License: BSD-3-clause
Files: ./thirdparty/misc/stb_truetype.h
./thirdparty/misc/stb_vorbis.c
Comment: stb libraries
-Copyright: 2007-2015, Sean Barrett
+Copyright: 2007-2017, Sean Barrett
License: public-domain
Files: ./thirdparty/misc/triangulator.cpp
@@ -295,6 +300,11 @@ Copyright: 2001-2011, Xiph.Org, Skype Limited, Octasic,
Erik de Castro Lopo
License: BSD-3-clause
+Files: ./thirdparty/nanosvg/
+Comment: NanoSVG
+Copyright: 2013-2014, Mikko Mononen
+License: Zlib
+
Files: ./thirdparty/pvrtccompressor/
Comment: PvrTcCompressor
Copyright: 2014, Jeffrey Lim.
@@ -321,6 +331,11 @@ Comment: zlib
Copyright: 1995-2017, Jean-loup Gailly and Mark Adler
License: Zlib
+Files: ./thirdparty/zstd/
+Comment: Zstandard
+Copyright: 2016-2017, Facebook, Inc.
+License: BSD-3-Clause
+
License: Apache-2.0
@@ -372,9 +387,9 @@ License: BSD-3-clause
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
.
- 3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
+ 3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index ef9894bcdb..2a3c298633 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -1,4 +1,4 @@
-**Operating system or device - Godot version:**
+**Operating system or device, Godot version, GPU Model and driver (if graphics related):**
**Issue description:**
diff --git a/SConstruct b/SConstruct
index 45765976cd..c5071e9861 100644
--- a/SConstruct
+++ b/SConstruct
@@ -265,17 +265,17 @@ if selected_platform in platform_list:
CCFLAGS = env.get('CCFLAGS', '')
env['CCFLAGS'] = ''
- env.Append(CCFLAGS=string.split(str(CCFLAGS)))
+ env.Append(CCFLAGS=str(CCFLAGS).split())
CFLAGS = env.get('CFLAGS', '')
env['CFLAGS'] = ''
- env.Append(CFLAGS=string.split(str(CFLAGS)))
+ env.Append(CFLAGS=str(CFLAGS).split())
LINKFLAGS = env.get('LINKFLAGS', '')
env['LINKFLAGS'] = ''
- env.Append(LINKFLAGS=string.split(str(LINKFLAGS)))
+ env.Append(LINKFLAGS=str(LINKFLAGS).split())
flag_list = platform_flags[selected_platform]
for f in flag_list:
@@ -409,44 +409,7 @@ if selected_platform in platform_list:
# Microsoft Visual Studio Project Generation
if (env['vsproj']) == "yes":
-
- AddToVSProject(env.core_sources)
- AddToVSProject(env.main_sources)
- AddToVSProject(env.modules_sources)
- AddToVSProject(env.scene_sources)
- AddToVSProject(env.servers_sources)
- AddToVSProject(env.editor_sources)
-
- # this env flag won't work, it needs to be set in env_base=Environment(MSVC_VERSION='9.0')
- # Even then, SCons still seems to ignore it and builds with the latest MSVC...
- # That said, it's not needed to be set so far but I'm leaving it here so that this comment
- # has a purpose.
- # env['MSVS_VERSION']='9.0'
-
- # Calls a CMD with /C(lose) and /V(delayed environment variable expansion) options.
- # And runs vcvarsall bat for the proper architecture and scons for proper configuration
- env['MSVSBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! -j2'
- env['MSVSREBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) & call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j2'
- env['MSVSCLEANCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons --clean platform=windows target=$(Configuration) tools=!tools! -j2'
-
- # This version information (Win32, x64, Debug, Release, Release_Debug seems to be
- # required for Visual Studio to understand that it needs to generate an NMAKE
- # project. Do not modify without knowing what you are doing.
- debug_variants = ['debug|Win32'] + ['debug|x64']
- release_variants = ['release|Win32'] + ['release|x64']
- release_debug_variants = ['release_debug|Win32'] + ['release_debug|x64']
- variants = debug_variants + release_variants + release_debug_variants
- debug_targets = ['bin\\godot.windows.tools.32.exe'] + ['bin\\godot.windows.tools.64.exe']
- release_targets = ['bin\\godot.windows.opt.32.exe'] + ['bin\\godot.windows.opt.64.exe']
- release_debug_targets = ['bin\\godot.windows.opt.tools.32.exe'] + ['bin\\godot.windows.opt.tools.64.exe']
- targets = debug_targets + release_targets + release_debug_targets
- msvproj = env.MSVSProject(target=['#godot' + env['MSVSPROJECTSUFFIX']],
- incs=env.vs_incs,
- srcs=env.vs_srcs,
- runfile=targets,
- buildtarget=targets,
- auto_build_solution=1,
- variant=variants)
+ methods.generate_vs_project(env, GetOption("num_jobs"))
else:
diff --git a/compat.py b/compat.py
new file mode 100644
index 0000000000..7338c479fb
--- /dev/null
+++ b/compat.py
@@ -0,0 +1,31 @@
+import sys
+
+if sys.version_info < (3,):
+ def isbasestring(s):
+ return isinstance(s, basestring)
+ def open_utf8(filename, mode):
+ return open(filename, mode)
+ def byte_to_str(x):
+ return str(ord(x))
+ import cStringIO
+ def StringIO():
+ return cStringIO.StringIO()
+ def encode_utf8(x):
+ return x
+ def iteritems(d):
+ return d.iteritems()
+else:
+ def isbasestring(s):
+ return isinstance(s, (str, bytes))
+ def open_utf8(filename, mode):
+ return open(filename, mode, encoding="utf-8")
+ def byte_to_str(x):
+ return str(x)
+ import io
+ def StringIO():
+ return io.StringIO()
+ import codecs
+ def encode_utf8(x):
+ return codecs.utf_8_encode(x)[0]
+ def iteritems(d):
+ return iter(d.items())
diff --git a/core/SCsub b/core/SCsub
index 4c541d7269..c1e57f6840 100644
--- a/core/SCsub
+++ b/core/SCsub
@@ -18,7 +18,7 @@ gd_cpp = '#include "project_settings.h"\n'
gd_cpp += gd_inc
gd_cpp += "void ProjectSettings::register_global_defaults() {\n" + gd_call + "\n}\n"
-f = open("global_defaults.gen.cpp", "wb")
+f = open("global_defaults.gen.cpp", "w")
f.write(gd_cpp)
f.close()
@@ -47,7 +47,7 @@ if ("SCRIPT_AES256_ENCRYPTION_KEY" in os.environ):
txt = "0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0"
print("Invalid AES256 encryption key, not 64 bits hex: " + e)
-f = open("script_encryption_key.gen.cpp", "wb")
+f = open("script_encryption_key.gen.cpp", "w")
f.write("#include \"project_settings.h\"\nuint8_t script_encryption_key[32]={" + txt + "};\n")
f.close()
diff --git a/core/allocators.h b/core/allocators.h
index 3735a7746e..0b891b76a9 100644
--- a/core/allocators.h
+++ b/core/allocators.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/array.cpp b/core/array.cpp
index 21dab2ba90..c35bf5bf0c 100644
--- a/core/array.cpp
+++ b/core/array.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/array.h b/core/array.h
index 589d52886f..777116ab56 100644
--- a/core/array.h
+++ b/core/array.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index 273ef78669..abe8b9b715 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -151,12 +151,12 @@ void _ResourceSaver::_bind_methods() {
ClassDB::bind_method(D_METHOD("save", "path", "resource", "flags"), &_ResourceSaver::save, DEFVAL(0));
ClassDB::bind_method(D_METHOD("get_recognized_extensions", "type"), &_ResourceSaver::get_recognized_extensions);
- BIND_CONSTANT(FLAG_RELATIVE_PATHS);
- BIND_CONSTANT(FLAG_BUNDLE_RESOURCES);
- BIND_CONSTANT(FLAG_CHANGE_PATH);
- BIND_CONSTANT(FLAG_OMIT_EDITOR_PROPERTIES);
- BIND_CONSTANT(FLAG_SAVE_BIG_ENDIAN);
- BIND_CONSTANT(FLAG_COMPRESS);
+ BIND_ENUM_CONSTANT(FLAG_RELATIVE_PATHS);
+ BIND_ENUM_CONSTANT(FLAG_BUNDLE_RESOURCES);
+ BIND_ENUM_CONSTANT(FLAG_CHANGE_PATH);
+ BIND_ENUM_CONSTANT(FLAG_OMIT_EDITOR_PROPERTIES);
+ BIND_ENUM_CONSTANT(FLAG_SAVE_BIG_ENDIAN);
+ BIND_ENUM_CONSTANT(FLAG_COMPRESS);
}
_ResourceSaver::_ResourceSaver() {
@@ -978,9 +978,9 @@ void _OS::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_screen_count"), &_OS::get_screen_count);
ClassDB::bind_method(D_METHOD("get_current_screen"), &_OS::get_current_screen);
ClassDB::bind_method(D_METHOD("set_current_screen", "screen"), &_OS::set_current_screen);
- ClassDB::bind_method(D_METHOD("get_screen_position", "screen"), &_OS::get_screen_position, DEFVAL(0));
- ClassDB::bind_method(D_METHOD("get_screen_size", "screen"), &_OS::get_screen_size, DEFVAL(0));
- ClassDB::bind_method(D_METHOD("get_screen_dpi", "screen"), &_OS::get_screen_dpi, DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("get_screen_position", "screen"), &_OS::get_screen_position, DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("get_screen_size", "screen"), &_OS::get_screen_size, DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("get_screen_dpi", "screen"), &_OS::get_screen_dpi, DEFVAL(-1));
ClassDB::bind_method(D_METHOD("get_window_position"), &_OS::get_window_position);
ClassDB::bind_method(D_METHOD("set_window_position", "position"), &_OS::set_window_position);
ClassDB::bind_method(D_METHOD("get_window_size"), &_OS::get_window_size);
@@ -1104,49 +1104,49 @@ void _OS::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_power_seconds_left"), &_OS::get_power_seconds_left);
ClassDB::bind_method(D_METHOD("get_power_percent_left"), &_OS::get_power_percent_left);
- BIND_CONSTANT(DAY_SUNDAY);
- BIND_CONSTANT(DAY_MONDAY);
- BIND_CONSTANT(DAY_TUESDAY);
- BIND_CONSTANT(DAY_WEDNESDAY);
- BIND_CONSTANT(DAY_THURSDAY);
- BIND_CONSTANT(DAY_FRIDAY);
- BIND_CONSTANT(DAY_SATURDAY);
-
- BIND_CONSTANT(MONTH_JANUARY);
- BIND_CONSTANT(MONTH_FEBRUARY);
- BIND_CONSTANT(MONTH_MARCH);
- BIND_CONSTANT(MONTH_APRIL);
- BIND_CONSTANT(MONTH_MAY);
- BIND_CONSTANT(MONTH_JUNE);
- BIND_CONSTANT(MONTH_JULY);
- BIND_CONSTANT(MONTH_AUGUST);
- BIND_CONSTANT(MONTH_SEPTEMBER);
- BIND_CONSTANT(MONTH_OCTOBER);
- BIND_CONSTANT(MONTH_NOVEMBER);
- BIND_CONSTANT(MONTH_DECEMBER);
-
- BIND_CONSTANT(SCREEN_ORIENTATION_LANDSCAPE);
- BIND_CONSTANT(SCREEN_ORIENTATION_PORTRAIT);
- BIND_CONSTANT(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
- BIND_CONSTANT(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
- BIND_CONSTANT(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
- BIND_CONSTANT(SCREEN_ORIENTATION_SENSOR_PORTRAIT);
- BIND_CONSTANT(SCREEN_ORIENTATION_SENSOR);
-
- BIND_CONSTANT(SYSTEM_DIR_DESKTOP);
- BIND_CONSTANT(SYSTEM_DIR_DCIM);
- BIND_CONSTANT(SYSTEM_DIR_DOCUMENTS);
- BIND_CONSTANT(SYSTEM_DIR_DOWNLOADS);
- BIND_CONSTANT(SYSTEM_DIR_MOVIES);
- BIND_CONSTANT(SYSTEM_DIR_MUSIC);
- BIND_CONSTANT(SYSTEM_DIR_PICTURES);
- BIND_CONSTANT(SYSTEM_DIR_RINGTONES);
-
- BIND_CONSTANT(POWERSTATE_UNKNOWN);
- BIND_CONSTANT(POWERSTATE_ON_BATTERY);
- BIND_CONSTANT(POWERSTATE_NO_BATTERY);
- BIND_CONSTANT(POWERSTATE_CHARGING);
- BIND_CONSTANT(POWERSTATE_CHARGED);
+ BIND_ENUM_CONSTANT(DAY_SUNDAY);
+ BIND_ENUM_CONSTANT(DAY_MONDAY);
+ BIND_ENUM_CONSTANT(DAY_TUESDAY);
+ BIND_ENUM_CONSTANT(DAY_WEDNESDAY);
+ BIND_ENUM_CONSTANT(DAY_THURSDAY);
+ BIND_ENUM_CONSTANT(DAY_FRIDAY);
+ BIND_ENUM_CONSTANT(DAY_SATURDAY);
+
+ BIND_ENUM_CONSTANT(MONTH_JANUARY);
+ BIND_ENUM_CONSTANT(MONTH_FEBRUARY);
+ BIND_ENUM_CONSTANT(MONTH_MARCH);
+ BIND_ENUM_CONSTANT(MONTH_APRIL);
+ BIND_ENUM_CONSTANT(MONTH_MAY);
+ BIND_ENUM_CONSTANT(MONTH_JUNE);
+ BIND_ENUM_CONSTANT(MONTH_JULY);
+ BIND_ENUM_CONSTANT(MONTH_AUGUST);
+ BIND_ENUM_CONSTANT(MONTH_SEPTEMBER);
+ BIND_ENUM_CONSTANT(MONTH_OCTOBER);
+ BIND_ENUM_CONSTANT(MONTH_NOVEMBER);
+ BIND_ENUM_CONSTANT(MONTH_DECEMBER);
+
+ BIND_ENUM_CONSTANT(SCREEN_ORIENTATION_LANDSCAPE);
+ BIND_ENUM_CONSTANT(SCREEN_ORIENTATION_PORTRAIT);
+ BIND_ENUM_CONSTANT(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
+ BIND_ENUM_CONSTANT(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
+ BIND_ENUM_CONSTANT(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
+ BIND_ENUM_CONSTANT(SCREEN_ORIENTATION_SENSOR_PORTRAIT);
+ BIND_ENUM_CONSTANT(SCREEN_ORIENTATION_SENSOR);
+
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_DESKTOP);
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_DCIM);
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_DOCUMENTS);
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_DOWNLOADS);
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_MOVIES);
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_MUSIC);
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_PICTURES);
+ BIND_ENUM_CONSTANT(SYSTEM_DIR_RINGTONES);
+
+ BIND_ENUM_CONSTANT(POWERSTATE_UNKNOWN);
+ BIND_ENUM_CONSTANT(POWERSTATE_ON_BATTERY);
+ BIND_ENUM_CONSTANT(POWERSTATE_NO_BATTERY);
+ BIND_ENUM_CONSTANT(POWERSTATE_CHARGING);
+ BIND_ENUM_CONSTANT(POWERSTATE_CHARGED);
}
_OS::_OS() {
@@ -1406,11 +1406,10 @@ Error _File::open_encrypted_pass(const String &p_path, int p_mode_flags, const S
Error _File::open_compressed(const String &p_path, int p_mode_flags, int p_compress_mode) {
FileAccessCompressed *fac = memnew(FileAccessCompressed);
- Error err = OK;
fac->configure("GCPF", (Compression::Mode)p_compress_mode);
- err = fac->_open(p_path, p_mode_flags);
+ Error err = fac->_open(p_path, p_mode_flags);
if (err) {
memdelete(fac);
@@ -1772,15 +1771,15 @@ void _File::_bind_methods() {
ClassDB::bind_method(D_METHOD("file_exists", "path"), &_File::file_exists);
ClassDB::bind_method(D_METHOD("get_modified_time", "file"), &_File::get_modified_time);
- BIND_CONSTANT(READ);
- BIND_CONSTANT(WRITE);
- BIND_CONSTANT(READ_WRITE);
- BIND_CONSTANT(WRITE_READ);
+ BIND_ENUM_CONSTANT(READ);
+ BIND_ENUM_CONSTANT(WRITE);
+ BIND_ENUM_CONSTANT(READ_WRITE);
+ BIND_ENUM_CONSTANT(WRITE_READ);
- BIND_CONSTANT(COMPRESSION_FASTLZ);
- BIND_CONSTANT(COMPRESSION_DEFLATE);
- BIND_CONSTANT(COMPRESSION_ZSTD);
- BIND_CONSTANT(COMPRESSION_GZIP);
+ BIND_ENUM_CONSTANT(COMPRESSION_FASTLZ);
+ BIND_ENUM_CONSTANT(COMPRESSION_DEFLATE);
+ BIND_ENUM_CONSTANT(COMPRESSION_ZSTD);
+ BIND_ENUM_CONSTANT(COMPRESSION_GZIP);
}
_File::_File() {
@@ -2285,9 +2284,9 @@ void _Thread::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_active"), &_Thread::is_active);
ClassDB::bind_method(D_METHOD("wait_to_finish"), &_Thread::wait_to_finish);
- BIND_CONSTANT(PRIORITY_LOW);
- BIND_CONSTANT(PRIORITY_NORMAL);
- BIND_CONSTANT(PRIORITY_HIGH);
+ BIND_ENUM_CONSTANT(PRIORITY_LOW);
+ BIND_ENUM_CONSTANT(PRIORITY_NORMAL);
+ BIND_ENUM_CONSTANT(PRIORITY_HIGH);
}
_Thread::_Thread() {
@@ -2355,7 +2354,7 @@ Variant _ClassDB::instance(const StringName &p_class) const {
if (!obj)
return Variant();
- Reference *r = obj->cast_to<Reference>();
+ Reference *r = Object::cast_to<Reference>(obj);
if (r) {
return REF(r);
} else {
@@ -2534,11 +2533,6 @@ float _Engine::get_frames_per_second() const {
return Engine::get_singleton()->get_frames_per_second();
}
-String _Engine::get_custom_level() const {
-
- return Engine::get_singleton()->get_custom_level();
-}
-
void _Engine::set_time_scale(float p_scale) {
Engine::get_singleton()->set_time_scale(p_scale);
}
@@ -2568,6 +2562,16 @@ bool _Engine::is_in_fixed_frame() const {
return Engine::get_singleton()->is_in_fixed_frame();
}
+void _Engine::set_editor_hint(bool p_enabled) {
+
+ Engine::get_singleton()->set_editor_hint(p_enabled);
+}
+
+bool _Engine::is_editor_hint() const {
+
+ return Engine::get_singleton()->is_editor_hint();
+}
+
void _Engine::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_iterations_per_second", "iterations_per_second"), &_Engine::set_iterations_per_second);
@@ -2578,8 +2582,6 @@ void _Engine::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_time_scale", "time_scale"), &_Engine::set_time_scale);
ClassDB::bind_method(D_METHOD("get_time_scale"), &_Engine::get_time_scale);
- ClassDB::bind_method(D_METHOD("get_custom_level"), &_Engine::get_custom_level);
-
ClassDB::bind_method(D_METHOD("get_frames_drawn"), &_Engine::get_frames_drawn);
ClassDB::bind_method(D_METHOD("get_frames_per_second"), &_Engine::get_frames_per_second);
@@ -2588,6 +2590,9 @@ void _Engine::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_version_info"), &_Engine::get_version_info);
ClassDB::bind_method(D_METHOD("is_in_fixed_frame"), &_Engine::is_in_fixed_frame);
+
+ ClassDB::bind_method(D_METHOD("set_editor_hint", "enabled"), &_Engine::set_editor_hint);
+ ClassDB::bind_method(D_METHOD("is_editor_hint"), &_Engine::is_editor_hint);
}
_Engine *_Engine::singleton = NULL;
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index e18d663d85..1a3782c471 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -85,6 +85,8 @@ public:
_ResourceSaver();
};
+VARIANT_ENUM_CAST(_ResourceSaver::SaverFlags);
+
class MainLoop;
class _OS : public Object {
@@ -138,9 +140,9 @@ public:
virtual int get_screen_count() const;
virtual int get_current_screen() const;
virtual void set_current_screen(int p_screen);
- virtual Point2 get_screen_position(int p_screen = 0) const;
- virtual Size2 get_screen_size(int p_screen = 0) const;
- virtual int get_screen_dpi(int p_screen = 0) const;
+ virtual Point2 get_screen_position(int p_screen = -1) const;
+ virtual Size2 get_screen_size(int p_screen = -1) const;
+ virtual int get_screen_dpi(int p_screen = -1) const;
virtual Point2 get_window_position() const;
virtual void set_window_position(const Point2 &p_position);
virtual Size2 get_window_size() const;
@@ -310,6 +312,8 @@ public:
_OS();
};
+VARIANT_ENUM_CAST(_OS::Weekday);
+VARIANT_ENUM_CAST(_OS::Month);
VARIANT_ENUM_CAST(_OS::SystemDir);
VARIANT_ENUM_CAST(_OS::ScreenOrientation);
@@ -447,6 +451,9 @@ public:
virtual ~_File();
};
+VARIANT_ENUM_CAST(_File::ModeFlags);
+VARIANT_ENUM_CAST(_File::CompressionMode);
+
class _Directory : public Reference {
GDCLASS(_Directory, Reference);
@@ -458,7 +465,7 @@ protected:
public:
Error open(const String &p_path);
- Error list_dir_begin(bool p_skip_internal = false, bool p_skip_hidden = false); ///< This starts dir listing
+ Error list_dir_begin(bool p_skip_navigational = false, bool p_skip_hidden = false); ///< This starts dir listing
String get_next();
bool current_is_dir() const;
@@ -578,6 +585,8 @@ public:
~_Thread();
};
+VARIANT_ENUM_CAST(_Thread::Priority);
+
class _ClassDB : public Object {
GDCLASS(_ClassDB, Object)
@@ -639,14 +648,15 @@ public:
void set_time_scale(float p_scale);
float get_time_scale();
- String get_custom_level() const;
-
MainLoop *get_main_loop() const;
Dictionary get_version_info() const;
bool is_in_fixed_frame() const;
+ void set_editor_hint(bool p_enabled);
+ bool is_editor_hint() const;
+
_Engine();
};
diff --git a/core/class_db.cpp b/core/class_db.cpp
index 0503f7c6fc..1cb287a143 100644
--- a/core/class_db.cpp
+++ b/core/class_db.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -46,11 +46,6 @@
#ifdef DEBUG_METHODS_ENABLED
-ParamDef::ParamDef(const Variant &p_variant)
- : used(true),
- val(p_variant) {
-}
-
MethodDefinition D_METHOD(const char *p_name) {
MethodDefinition md;
@@ -538,11 +533,10 @@ void ClassDB::get_method_list(StringName p_class, List<MethodInfo> *p_methods, b
minfo.arguments.push_back(method->get_argument_info(i));
}
- if (method->get_argument_type(-1) != Variant::NIL) {
- minfo.return_val = method->get_argument_info(-1);
- }
-
+ minfo.return_val = method->get_return_info();
minfo.flags = method->get_hint_flags();
+ minfo.default_arguments = method->get_default_arguments();
+
p_methods->push_back(minfo);
}
@@ -583,7 +577,7 @@ MethodBind *ClassDB::get_method(StringName p_class, StringName p_name) {
return NULL;
}
-void ClassDB::bind_integer_constant(const StringName &p_class, const StringName &p_name, int p_constant) {
+void ClassDB::bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int p_constant) {
OBJTYPE_WLOCK;
@@ -600,6 +594,24 @@ void ClassDB::bind_integer_constant(const StringName &p_class, const StringName
type->constant_map[p_name] = p_constant;
#ifdef DEBUG_METHODS_ENABLED
+
+ String enum_name = p_enum;
+ if (enum_name != String()) {
+ if (enum_name.find(".") != -1) {
+ enum_name = enum_name.get_slicec('.', 1);
+ }
+
+ List<StringName> *constants_list = type->enum_map.getptr(enum_name);
+
+ if (constants_list) {
+ constants_list->push_back(p_name);
+ } else {
+ List<StringName> new_list;
+ new_list.push_back(p_name);
+ type->enum_map[enum_name] = new_list;
+ }
+ }
+
type->constant_order.push_back(p_name);
#endif
}
@@ -655,6 +667,77 @@ int ClassDB::get_integer_constant(const StringName &p_class, const StringName &p
return 0;
}
+#ifdef DEBUG_METHODS_ENABLED
+StringName ClassDB::get_integer_constant_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance) {
+
+ OBJTYPE_RLOCK;
+
+ ClassInfo *type = classes.getptr(p_class);
+
+ while (type) {
+
+ const StringName *k = NULL;
+ while ((k = type->enum_map.next(k))) {
+
+ List<StringName> &constants_list = type->enum_map.get(*k);
+ const List<StringName>::Element *found = constants_list.find(p_name);
+ if (found)
+ return *k;
+ }
+
+ if (p_no_inheritance)
+ break;
+
+ type = type->inherits_ptr;
+ }
+
+ return StringName();
+}
+
+void ClassDB::get_enum_list(const StringName &p_class, List<StringName> *p_enums, bool p_no_inheritance) {
+
+ OBJTYPE_RLOCK;
+
+ ClassInfo *type = classes.getptr(p_class);
+
+ while (type) {
+
+ const StringName *k = NULL;
+ while ((k = type->enum_map.next(k))) {
+ p_enums->push_back(*k);
+ }
+
+ if (p_no_inheritance)
+ break;
+
+ type = type->inherits_ptr;
+ }
+}
+
+void ClassDB::get_enum_constants(const StringName &p_class, const StringName &p_enum, List<StringName> *p_constants, bool p_no_inheritance) {
+
+ OBJTYPE_RLOCK;
+
+ ClassInfo *type = classes.getptr(p_class);
+
+ while (type) {
+
+ const List<StringName> *constants = type->enum_map.getptr(p_enum);
+
+ if (constants) {
+ for (const List<StringName>::Element *E = constants->front(); E; E = E->next()) {
+ p_constants->push_back(E->get());
+ }
+ }
+
+ if (p_no_inheritance)
+ break;
+
+ type = type->inherits_ptr;
+ }
+}
+#endif
+
void ClassDB::add_signal(StringName p_class, const MethodInfo &p_signal) {
OBJTYPE_WLOCK;
@@ -777,7 +860,7 @@ void ClassDB::add_property(StringName p_class, const PropertyInfo &p_pinfo, cons
MethodBind *mb_get = NULL;
if (p_getter) {
- MethodBind *mb_get = get_method(p_class, p_getter);
+ mb_get = get_method(p_class, p_getter);
#ifdef DEBUG_METHODS_ENABLED
if (!mb_get) {
diff --git a/core/class_db.h b/core/class_db.h
index f73e082c52..f6b97748b0 100644
--- a/core/class_db.h
+++ b/core/class_db.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,29 +38,6 @@
@author Juan Linietsky <reduzio@gmail.com>
*/
-struct ParamHint {
-
- String name;
- PropertyHint hint;
- String hint_text;
- Variant default_val;
-
- ParamHint(const String &p_name = "", PropertyHint p_hint = PROPERTY_HINT_NONE, const String &p_hint_text = "", Variant p_default_val = Variant())
- : name(p_name),
- hint(p_hint),
- hint_text(p_hint_text),
- default_val(p_default_val) {
- }
-};
-
-struct ParamDef {
- bool used;
- Variant val;
- _FORCE_INLINE_ ParamDef() { used = false; }
- ParamDef(const Variant &p_variant);
-};
-
-//#define DEFVAL( m_defval ) ParamDef(m_defval)
#define DEFVAL(m_defval) (m_defval)
//#define SIMPLE_METHODDEF
@@ -138,6 +115,7 @@ public:
HashMap<StringName, MethodInfo, StringNameHasher> signal_map;
List<PropertyInfo> property_list;
#ifdef DEBUG_METHODS_ENABLED
+ HashMap<StringName, List<StringName> > enum_map;
List<StringName> constant_order;
List<StringName> method_order;
Set<StringName> methods_in_properties;
@@ -180,27 +158,6 @@ public:
static void _add_class() {
_add_class2(T::get_class_static(), T::get_parent_class_static());
-#if 0
- GLOBAL_LOCK_FUNCTION;
-
- StringName name = T::get_class_static();
-
- ERR_FAIL_COND(types.has(name));
-
- types[name]=TypeInfo();
- TypeInfo &ti=types[name];
- ti.name=name;
- ti.inherits=T::get_parent_class_static();
-
- if (ti.inherits) {
-
- ERR_FAIL_COND( !types.has(ti.inherits) ); //it MUST be registered.
- ti.inherits_ptr = &types[ti.inherits];
-
- } else {
- ti.inherits_ptr=NULL;
- }
-#endif
}
template <class T>
@@ -251,102 +208,6 @@ public:
static uint64_t get_api_hash(APIType p_api);
-#if 0
- template<class N, class M>
- static MethodBind* bind_method(N p_method_name, M p_method,
- //default arguments
- ParamDef d1=ParamDef(),
- ParamDef d2=ParamDef(),
- ParamDef d3=ParamDef(),
- ParamDef d4=ParamDef(),
- ParamDef d5=ParamDef()
- ) {
-
- return bind_methodf(METHOD_FLAGS_DEFAULT,p_method_name, p_method, d1,d2,d3,d4,d5);
- }
-
-
-
- template<class N, class M>
- static MethodBind* bind_methodf(uint32_t p_flags, N p_method_name, M p_method,
-
-
- //default arguments
- const ParamDef &d1=ParamDef(),
- const ParamDef &d2=ParamDef(),
- const ParamDef &d3=ParamDef(),
- const ParamDef &d4=ParamDef(),
- const ParamDef &d5=ParamDef()
- ) {
-
- GLOBAL_LOCK_FUNCTION;
-
- MethodDefinition method_name=p_method_name;
-
- MethodBind *bind = create_method_bind(p_method);
- bind->set_name(method_name.name);
- ERR_FAIL_COND_V(!bind,NULL);
-
- String instance_type=bind->get_instance_type();
-
- TypeInfo *type=types.getptr(instance_type);
- if (!type) {
- memdelete(bind);
- ERR_FAIL_COND_V(!type,NULL);
- }
-
- if (type->method_map.has(method_name.name)) {
- memdelete(bind);
- // overloading not supported
- ERR_EXPLAIN("Method already bound: "+instance_type+"::"+method_name.name);
- ERR_FAIL_V(NULL);
- }
- bind->set_argument_names(method_name.args);
- type->method_map[method_name.name]=bind;
-
- Vector<Variant> defvals;
-
-#define PARSE_DEFVAL(m_defval) \
- if (d##m_defval.used) \
- defvals.insert(0, d##m_defval.val); \
- else \
- goto set_defvals;
-
-
- PARSE_DEFVAL(1);
- PARSE_DEFVAL(2);
- PARSE_DEFVAL(3);
- PARSE_DEFVAL(4);
- PARSE_DEFVAL(5);
- set_defvals:
-
- bind->set_default_arguments(defvals);
- bind->set_hint_flags(p_flags);
-
- return bind;
-#undef PARSE_DEFVAL
- }
-#else
-
-#if 0
- template<class N, class M>
- static MethodBind* bind_method(N p_method_name, M p_method,
- //default arguments
- const ParamDef &d1=ParamDef(),
- const ParamDef &d2=ParamDef(),
- const ParamDef &d3=ParamDef(),
- const ParamDef &d4=ParamDef(),
- const ParamDef &d5=ParamDef()
- ) {
-
- MethodDefinition method_name=p_method_name;
-
- MethodBind *bind = create_method_bind(p_method);
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT,bind,method_name,d1,d2,d3,d4,d5); //use static function, much smaller binary usage
- }
-#endif
-
template <class N, class M>
static MethodBind *bind_method(N p_method_name, M p_method) {
@@ -409,26 +270,6 @@ public:
return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 6);
}
-#if 0
- template<class N, class M>
- static MethodBind* bind_methodf(uint32_t p_flags, N p_method_name, M p_method,
-
- const ParamDef& d1=ParamDef(),
- const ParamDef& d2=ParamDef(),
- const ParamDef& d3=ParamDef(),
- const ParamDef& d4=ParamDef(),
- const ParamDef& d5=ParamDef()
- ) {
-
- MethodDefinition method_name=p_method_name;
-
- MethodBind *bind = create_method_bind(p_method);
-
- return bind_methodfi(p_flags,bind,method_name,d1,d2,d3,d4,d5); //use static function, much smaller binary usage
- }
-#endif
-
-#endif
template <class M>
static MethodBind *bind_vararg_method(uint32_t p_flags, StringName p_name, M p_method, const MethodInfo &p_info = MethodInfo(), const Vector<Variant> &p_default_args = Vector<Variant>()) {
@@ -456,7 +297,8 @@ public:
}
type->method_map[p_name] = bind;
#ifdef DEBUG_METHODS_ENABLED
- bind->set_return_type("Variant");
+ // FIXME: <reduz> set_return_type is no longer in MethodBind, so I guess it should be moved to vararg method bind
+ //bind->set_return_type("Variant");
type->method_order.push_back(p_name);
#endif
@@ -488,9 +330,16 @@ public:
static void add_virtual_method(const StringName &p_class, const MethodInfo &p_method, bool p_virtual = true);
static void get_virtual_methods(const StringName &p_class, List<MethodInfo> *p_methods, bool p_no_inheritance = false);
- static void bind_integer_constant(const StringName &p_class, const StringName &p_name, int p_constant);
+ static void bind_integer_constant(const StringName &p_class, const StringName &p_enum, const StringName &p_name, int p_constant);
static void get_integer_constant_list(const StringName &p_class, List<String> *p_constants, bool p_no_inheritance = false);
static int get_integer_constant(const StringName &p_class, const StringName &p_name, bool *p_success = NULL);
+
+#ifdef DEBUG_METHODS_ENABLED
+ static StringName get_integer_constant_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false);
+ static void get_enum_list(const StringName &p_class, List<StringName> *p_enums, bool p_no_inheritance = false);
+ static void get_enum_constants(const StringName &p_class, const StringName &p_enum, List<StringName> *p_constants, bool p_no_inheritance = false);
+#endif
+
static StringName get_category(const StringName &p_node);
static bool get_setter_and_type_for_property(const StringName &p_class, const StringName &p_prop, StringName &r_class, StringName &r_setter);
@@ -509,8 +358,23 @@ public:
static void cleanup();
};
+#ifdef DEBUG_METHODS_ENABLED
+
#define BIND_CONSTANT(m_constant) \
- ClassDB::bind_integer_constant(get_class_static(), #m_constant, m_constant);
+ ClassDB::bind_integer_constant(get_class_static(), StringName(), #m_constant, m_constant);
+
+#define BIND_ENUM_CONSTANT(m_constant) \
+ ClassDB::bind_integer_constant(get_class_static(), __constant_get_enum_name(m_constant, #m_constant), #m_constant, m_constant);
+
+#else
+
+#define BIND_CONSTANT(m_constant) \
+ ClassDB::bind_integer_constant(get_class_static(), StringName(), #m_constant, m_constant);
+
+#define BIND_ENUM_CONSTANT(m_constant) \
+ ClassDB::bind_integer_constant(get_class_static(), StringName(), #m_constant, m_constant);
+
+#endif
#ifdef TOOLS_ENABLED
diff --git a/core/color.cpp b/core/color.cpp
index 22a5504431..356e8c168c 100644
--- a/core/color.cpp
+++ b/core/color.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/color.h b/core/color.h
index 9074a0e6d6..6df114f2f2 100644
--- a/core/color.h
+++ b/core/color.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/command_queue_mt.cpp b/core/command_queue_mt.cpp
index 823494ff67..8e2aa24c22 100644
--- a/core/command_queue_mt.cpp
+++ b/core/command_queue_mt.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -55,6 +55,7 @@ CommandQueueMT::SyncSemaphore *CommandQueueMT::_alloc_sync_sem() {
while (true) {
+ lock();
for (int i = 0; i < SYNC_SEMAPHORES; i++) {
if (!sync_sems[i].in_use) {
@@ -63,6 +64,7 @@ CommandQueueMT::SyncSemaphore *CommandQueueMT::_alloc_sync_sem() {
break;
}
}
+ unlock();
if (idx == -1) {
wait_for_flush();
diff --git a/core/command_queue_mt.h b/core/command_queue_mt.h
index 2e0c478108..f99e16da15 100644
--- a/core/command_queue_mt.h
+++ b/core/command_queue_mt.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -911,12 +911,14 @@ public:
template <class T, class M, class R>
void push_and_ret(T *p_instance, M p_method, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet0<T, M, R> *cmd = allocate_and_lock<CommandRet0<T, M, R> >();
cmd->instance = p_instance;
cmd->method = p_method;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -928,13 +930,15 @@ public:
template <class T, class M, class P1, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet1<T, M, P1, R> *cmd = allocate_and_lock<CommandRet1<T, M, P1, R> >();
cmd->instance = p_instance;
cmd->method = p_method;
cmd->p1 = p1;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -946,6 +950,8 @@ public:
template <class T, class M, class P1, class P2, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, P2 p2, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet2<T, M, P1, P2, R> *cmd = allocate_and_lock<CommandRet2<T, M, P1, P2, R> >();
cmd->instance = p_instance;
@@ -953,7 +959,7 @@ public:
cmd->p1 = p1;
cmd->p2 = p2;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -965,6 +971,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet3<T, M, P1, P2, P3, R> *cmd = allocate_and_lock<CommandRet3<T, M, P1, P2, P3, R> >();
cmd->instance = p_instance;
@@ -973,7 +981,7 @@ public:
cmd->p2 = p2;
cmd->p3 = p3;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -985,6 +993,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet4<T, M, P1, P2, P3, P4, R> *cmd = allocate_and_lock<CommandRet4<T, M, P1, P2, P3, P4, R> >();
cmd->instance = p_instance;
@@ -994,7 +1004,7 @@ public:
cmd->p3 = p3;
cmd->p4 = p4;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -1006,6 +1016,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet5<T, M, P1, P2, P3, P4, P5, R> *cmd = allocate_and_lock<CommandRet5<T, M, P1, P2, P3, P4, P5, R> >();
cmd->instance = p_instance;
@@ -1016,7 +1028,7 @@ public:
cmd->p4 = p4;
cmd->p5 = p5;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -1028,6 +1040,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet6<T, M, P1, P2, P3, P4, P5, P6, R> *cmd = allocate_and_lock<CommandRet6<T, M, P1, P2, P3, P4, P5, P6, R> >();
cmd->instance = p_instance;
@@ -1039,7 +1053,7 @@ public:
cmd->p5 = p5;
cmd->p6 = p6;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -1051,6 +1065,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet7<T, M, P1, P2, P3, P4, P5, P6, P7, R> *cmd = allocate_and_lock<CommandRet7<T, M, P1, P2, P3, P4, P5, P6, P7, R> >();
cmd->instance = p_instance;
@@ -1063,7 +1079,7 @@ public:
cmd->p6 = p6;
cmd->p7 = p7;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -1075,6 +1091,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class R>
void push_and_ret(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, R *r_ret) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandRet8<T, M, P1, P2, P3, P4, P5, P6, P7, P8, R> *cmd = allocate_and_lock<CommandRet8<T, M, P1, P2, P3, P4, P5, P6, P7, P8, R> >();
cmd->instance = p_instance;
@@ -1088,7 +1106,7 @@ public:
cmd->p7 = p7;
cmd->p8 = p8;
cmd->ret = r_ret;
- SyncSemaphore *ss = _alloc_sync_sem();
+
cmd->sync = ss;
unlock();
@@ -1100,12 +1118,13 @@ public:
template <class T, class M>
void push_and_sync(T *p_instance, M p_method) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync0<T, M> *cmd = allocate_and_lock<CommandSync0<T, M> >();
cmd->instance = p_instance;
cmd->method = p_method;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1117,13 +1136,14 @@ public:
template <class T, class M, class P1>
void push_and_sync(T *p_instance, M p_method, P1 p1) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync1<T, M, P1> *cmd = allocate_and_lock<CommandSync1<T, M, P1> >();
cmd->instance = p_instance;
cmd->method = p_method;
cmd->p1 = p1;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1135,6 +1155,8 @@ public:
template <class T, class M, class P1, class P2>
void push_and_sync(T *p_instance, M p_method, P1 p1, P2 p2) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync2<T, M, P1, P2> *cmd = allocate_and_lock<CommandSync2<T, M, P1, P2> >();
cmd->instance = p_instance;
@@ -1142,7 +1164,6 @@ public:
cmd->p1 = p1;
cmd->p2 = p2;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1154,6 +1175,8 @@ public:
template <class T, class M, class P1, class P2, class P3>
void push_and_sync(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync3<T, M, P1, P2, P3> *cmd = allocate_and_lock<CommandSync3<T, M, P1, P2, P3> >();
cmd->instance = p_instance;
@@ -1162,7 +1185,6 @@ public:
cmd->p2 = p2;
cmd->p3 = p3;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1174,6 +1196,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4>
void push_and_sync(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync4<T, M, P1, P2, P3, P4> *cmd = allocate_and_lock<CommandSync4<T, M, P1, P2, P3, P4> >();
cmd->instance = p_instance;
@@ -1183,7 +1207,6 @@ public:
cmd->p3 = p3;
cmd->p4 = p4;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1195,6 +1218,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5>
void push_and_sync(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync5<T, M, P1, P2, P3, P4, P5> *cmd = allocate_and_lock<CommandSync5<T, M, P1, P2, P3, P4, P5> >();
cmd->instance = p_instance;
@@ -1205,7 +1230,6 @@ public:
cmd->p4 = p4;
cmd->p5 = p5;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1217,6 +1241,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6>
void push_and_sync(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync6<T, M, P1, P2, P3, P4, P5, P6> *cmd = allocate_and_lock<CommandSync6<T, M, P1, P2, P3, P4, P5, P6> >();
cmd->instance = p_instance;
@@ -1228,7 +1254,6 @@ public:
cmd->p5 = p5;
cmd->p6 = p6;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1240,6 +1265,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7>
void push_and_sync(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync7<T, M, P1, P2, P3, P4, P5, P6, P7> *cmd = allocate_and_lock<CommandSync7<T, M, P1, P2, P3, P4, P5, P6, P7> >();
cmd->instance = p_instance;
@@ -1252,7 +1279,6 @@ public:
cmd->p6 = p6;
cmd->p7 = p7;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
@@ -1264,6 +1290,8 @@ public:
template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8>
void push_and_sync(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) {
+ SyncSemaphore *ss = _alloc_sync_sem();
+
CommandSync8<T, M, P1, P2, P3, P4, P5, P6, P7, P8> *cmd = allocate_and_lock<CommandSync8<T, M, P1, P2, P3, P4, P5, P6, P7, P8> >();
cmd->instance = p_instance;
@@ -1277,7 +1305,6 @@ public:
cmd->p7 = p7;
cmd->p8 = p8;
- SyncSemaphore *ss = _alloc_sync_sem();
cmd->sync = ss;
unlock();
diff --git a/core/compressed_translation.cpp b/core/compressed_translation.cpp
index 172249c5d7..74565d2e32 100644
--- a/core/compressed_translation.cpp
+++ b/core/compressed_translation.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/compressed_translation.h b/core/compressed_translation.h
index c010491b3a..acccf95743 100644
--- a/core/compressed_translation.h
+++ b/core/compressed_translation.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/core_string_names.cpp b/core/core_string_names.cpp
index 2f5a684373..ef9346253f 100644
--- a/core/core_string_names.cpp
+++ b/core/core_string_names.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/core_string_names.h b/core/core_string_names.h
index 40f76aa9c0..2eb2b703ae 100644
--- a/core/core_string_names.h
+++ b/core/core_string_names.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/dictionary.cpp b/core/dictionary.cpp
index 1fe45aff94..bb2e892951 100644
--- a/core/dictionary.cpp
+++ b/core/dictionary.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -200,17 +200,6 @@ uint32_t Dictionary::hash() const {
Array Dictionary::keys() const {
-#if 0
- Array karr;
- karr.resize(size());
- const Variant *K = NULL;
- int idx = 0;
- while ((K = next(K))) {
- karr[idx++] = (*K);
- }
- return karr;
-#else
-
Array varr;
varr.resize(size());
if (_p->variant_map.empty())
@@ -228,7 +217,6 @@ Array Dictionary::keys() const {
}
return varr;
-#endif
}
Array Dictionary::values() const {
diff --git a/core/dictionary.h b/core/dictionary.h
index 27caba916f..c8177d5648 100644
--- a/core/dictionary.h
+++ b/core/dictionary.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/dvector.cpp b/core/dvector.cpp
index 4bbe1aafd9..185cecd531 100644
--- a/core/dvector.cpp
+++ b/core/dvector.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/dvector.h b/core/dvector.h
index 66af42f7e2..1b81ceec5e 100644
--- a/core/dvector.h
+++ b/core/dvector.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/engine.cpp b/core/engine.cpp
index c16a2903d3..d73693dc12 100644
--- a/core/engine.cpp
+++ b/core/engine.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -121,4 +121,5 @@ Engine::Engine() {
_in_fixed = false;
_frame_ticks = 0;
_frame_step = 0;
+ editor_hint = false;
}
diff --git a/core/engine.h b/core/engine.h
index 16dfb77593..6f46ec8923 100644
--- a/core/engine.h
+++ b/core/engine.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -39,7 +39,6 @@ class Engine {
friend class Main;
- String _custom_level;
uint64_t frames_drawn;
uint32_t _frame_delay;
uint64_t _frame_ticks;
@@ -51,9 +50,12 @@ class Engine {
float _time_scale;
bool _pixel_snap;
uint64_t _fixed_frames;
+
uint64_t _idle_frames;
bool _in_fixed;
+ bool editor_hint;
+
static Engine *singleton;
public:
@@ -67,8 +69,6 @@ public:
virtual float get_frames_per_second() const { return _fps; }
- String get_custom_level() const { return _custom_level; }
-
uint64_t get_frames_drawn();
uint64_t get_fixed_frames() const { return _fixed_frames; }
@@ -85,6 +85,14 @@ public:
_FORCE_INLINE_ bool get_use_pixel_snap() const { return _pixel_snap; }
+#ifdef TOOLS_ENABLED
+ _FORCE_INLINE_ void set_editor_hint(bool p_enabled) { editor_hint = p_enabled; }
+ _FORCE_INLINE_ bool is_editor_hint() const { return editor_hint; }
+#else
+ _FORCE_INLINE_ void set_editor_hint(bool p_enabled) {}
+ _FORCE_INLINE_ bool is_editor_hint() const { return false; }
+#endif
+
Dictionary get_version_info() const;
Engine();
diff --git a/core/error_list.h b/core/error_list.h
index 14ef7bbc18..bc65ad0ee4 100644
--- a/core/error_list.h
+++ b/core/error_list.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/error_macros.cpp b/core/error_macros.cpp
index afbff6c52d..5919d38375 100644
--- a/core/error_macros.cpp
+++ b/core/error_macros.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/error_macros.h b/core/error_macros.h
index 6c803951a1..005b0e32a3 100644
--- a/core/error_macros.h
+++ b/core/error_macros.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/event_queue.cpp b/core/event_queue.cpp
index c5257d5f6b..12f9942a07 100644
--- a/core/event_queue.cpp
+++ b/core/event_queue.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/event_queue.h b/core/event_queue.h
index a6c436909d..af1a760945 100644
--- a/core/event_queue.h
+++ b/core/event_queue.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/func_ref.cpp b/core/func_ref.cpp
index 5622a03665..d9a8f6bcdb 100644
--- a/core/func_ref.cpp
+++ b/core/func_ref.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/func_ref.h b/core/func_ref.h
index e60d5bd771..b9b1988ede 100644
--- a/core/func_ref.h
+++ b/core/func_ref.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/global_constants.cpp b/core/global_constants.cpp
index 9e745ecb98..224ee0e0aa 100644
--- a/core/global_constants.cpp
+++ b/core/global_constants.cpp
@@ -3,14 +3,14 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 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 */
+/* "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 */
@@ -36,504 +36,563 @@
struct _GlobalConstant {
+#ifdef DEBUG_METHODS_ENABLED
+ StringName enum_name;
+#endif
const char *name;
int value;
+
+ _GlobalConstant() {}
+
+#ifdef DEBUG_METHODS_ENABLED
+ _GlobalConstant(const StringName &p_enum_name, const char *p_name, int p_value)
+ : enum_name(p_enum_name),
+ name(p_name),
+ value(p_value) {
+ }
+#else
+ _GlobalConstant(const char *p_name, int p_value)
+ : name(p_name),
+ value(p_value) {
+ }
+#endif
};
+static Vector<_GlobalConstant> _global_constants;
+
+#ifdef DEBUG_METHODS_ENABLED
+
+#define BIND_GLOBAL_CONSTANT(m_constant) \
+ _global_constants.push_back(_GlobalConstant(StringName(), #m_constant, m_constant));
+
+#define BIND_GLOBAL_ENUM_CONSTANT(m_constant) \
+ _global_constants.push_back(_GlobalConstant(__constant_get_enum_name(m_constant, #m_constant), #m_constant, m_constant));
+
+#define BIND_GLOBAL_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
+ _global_constants.push_back(_GlobalConstant(__constant_get_enum_name(m_constant, #m_constant), m_custom_name, m_constant));
+
+#else
+
#define BIND_GLOBAL_CONSTANT(m_constant) \
- { #m_constant, m_constant }
+ _global_constants.push_back(_GlobalConstant(#m_constant, m_constant));
+
+#define BIND_GLOBAL_ENUM_CONSTANT(m_constant) \
+ _global_constants.push_back(_GlobalConstant(#m_constant, m_constant));
+
+#define BIND_GLOBAL_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
+ _global_constants.push_back(_GlobalConstant(m_custom_name, m_constant));
+
+#endif
+
+VARIANT_ENUM_CAST(KeyList);
+VARIANT_ENUM_CAST(KeyModifierMask);
-static _GlobalConstant _global_constants[] = {
+void register_global_constants() {
//{ KEY_BACKSPACE, VK_BACK },// (0x08) // backspace
- BIND_GLOBAL_CONSTANT(MARGIN_LEFT),
- BIND_GLOBAL_CONSTANT(MARGIN_TOP),
- BIND_GLOBAL_CONSTANT(MARGIN_RIGHT),
- BIND_GLOBAL_CONSTANT(MARGIN_BOTTOM),
- BIND_GLOBAL_CONSTANT(VERTICAL),
- BIND_GLOBAL_CONSTANT(HORIZONTAL),
- BIND_GLOBAL_CONSTANT(HALIGN_LEFT),
- BIND_GLOBAL_CONSTANT(HALIGN_CENTER),
- BIND_GLOBAL_CONSTANT(HALIGN_RIGHT),
- BIND_GLOBAL_CONSTANT(VALIGN_TOP),
- BIND_GLOBAL_CONSTANT(VALIGN_CENTER),
- BIND_GLOBAL_CONSTANT(VALIGN_BOTTOM),
+ BIND_GLOBAL_ENUM_CONSTANT(MARGIN_LEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(MARGIN_TOP);
+ BIND_GLOBAL_ENUM_CONSTANT(MARGIN_RIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(MARGIN_BOTTOM);
+
+ BIND_GLOBAL_ENUM_CONSTANT(VERTICAL);
+ BIND_GLOBAL_ENUM_CONSTANT(HORIZONTAL);
+
+ BIND_GLOBAL_ENUM_CONSTANT(HALIGN_LEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(HALIGN_CENTER);
+ BIND_GLOBAL_ENUM_CONSTANT(HALIGN_RIGHT);
+
+ BIND_GLOBAL_ENUM_CONSTANT(VALIGN_TOP);
+ BIND_GLOBAL_ENUM_CONSTANT(VALIGN_CENTER);
+ BIND_GLOBAL_ENUM_CONSTANT(VALIGN_BOTTOM);
// hueg list of keys
- BIND_GLOBAL_CONSTANT(SPKEY),
-
- BIND_GLOBAL_CONSTANT(KEY_ESCAPE),
- BIND_GLOBAL_CONSTANT(KEY_TAB),
- BIND_GLOBAL_CONSTANT(KEY_BACKTAB),
- BIND_GLOBAL_CONSTANT(KEY_BACKSPACE),
- BIND_GLOBAL_CONSTANT(KEY_ENTER),
- BIND_GLOBAL_CONSTANT(KEY_KP_ENTER),
- BIND_GLOBAL_CONSTANT(KEY_INSERT),
- BIND_GLOBAL_CONSTANT(KEY_DELETE),
- BIND_GLOBAL_CONSTANT(KEY_PAUSE),
- BIND_GLOBAL_CONSTANT(KEY_PRINT),
- BIND_GLOBAL_CONSTANT(KEY_SYSREQ),
- BIND_GLOBAL_CONSTANT(KEY_CLEAR),
- BIND_GLOBAL_CONSTANT(KEY_HOME),
- BIND_GLOBAL_CONSTANT(KEY_END),
- BIND_GLOBAL_CONSTANT(KEY_LEFT),
- BIND_GLOBAL_CONSTANT(KEY_UP),
- BIND_GLOBAL_CONSTANT(KEY_RIGHT),
- BIND_GLOBAL_CONSTANT(KEY_DOWN),
- BIND_GLOBAL_CONSTANT(KEY_PAGEUP),
- BIND_GLOBAL_CONSTANT(KEY_PAGEDOWN),
- BIND_GLOBAL_CONSTANT(KEY_SHIFT),
- BIND_GLOBAL_CONSTANT(KEY_CONTROL),
- BIND_GLOBAL_CONSTANT(KEY_META),
- BIND_GLOBAL_CONSTANT(KEY_ALT),
- BIND_GLOBAL_CONSTANT(KEY_CAPSLOCK),
- BIND_GLOBAL_CONSTANT(KEY_NUMLOCK),
- BIND_GLOBAL_CONSTANT(KEY_SCROLLLOCK),
- BIND_GLOBAL_CONSTANT(KEY_F1),
- BIND_GLOBAL_CONSTANT(KEY_F2),
- BIND_GLOBAL_CONSTANT(KEY_F3),
- BIND_GLOBAL_CONSTANT(KEY_F4),
- BIND_GLOBAL_CONSTANT(KEY_F5),
- BIND_GLOBAL_CONSTANT(KEY_F6),
- BIND_GLOBAL_CONSTANT(KEY_F7),
- BIND_GLOBAL_CONSTANT(KEY_F8),
- BIND_GLOBAL_CONSTANT(KEY_F9),
- BIND_GLOBAL_CONSTANT(KEY_F10),
- BIND_GLOBAL_CONSTANT(KEY_F11),
- BIND_GLOBAL_CONSTANT(KEY_F12),
- BIND_GLOBAL_CONSTANT(KEY_F13),
- BIND_GLOBAL_CONSTANT(KEY_F14),
- BIND_GLOBAL_CONSTANT(KEY_F15),
- BIND_GLOBAL_CONSTANT(KEY_F16),
- BIND_GLOBAL_CONSTANT(KEY_KP_MULTIPLY),
- BIND_GLOBAL_CONSTANT(KEY_KP_DIVIDE),
- BIND_GLOBAL_CONSTANT(KEY_KP_SUBTRACT),
- BIND_GLOBAL_CONSTANT(KEY_KP_PERIOD),
- BIND_GLOBAL_CONSTANT(KEY_KP_ADD),
- BIND_GLOBAL_CONSTANT(KEY_KP_0),
- BIND_GLOBAL_CONSTANT(KEY_KP_1),
- BIND_GLOBAL_CONSTANT(KEY_KP_2),
- BIND_GLOBAL_CONSTANT(KEY_KP_3),
- BIND_GLOBAL_CONSTANT(KEY_KP_4),
- BIND_GLOBAL_CONSTANT(KEY_KP_5),
- BIND_GLOBAL_CONSTANT(KEY_KP_6),
- BIND_GLOBAL_CONSTANT(KEY_KP_7),
- BIND_GLOBAL_CONSTANT(KEY_KP_8),
- BIND_GLOBAL_CONSTANT(KEY_KP_9),
- BIND_GLOBAL_CONSTANT(KEY_SUPER_L),
- BIND_GLOBAL_CONSTANT(KEY_SUPER_R),
- BIND_GLOBAL_CONSTANT(KEY_MENU),
- BIND_GLOBAL_CONSTANT(KEY_HYPER_L),
- BIND_GLOBAL_CONSTANT(KEY_HYPER_R),
- BIND_GLOBAL_CONSTANT(KEY_HELP),
- BIND_GLOBAL_CONSTANT(KEY_DIRECTION_L),
- BIND_GLOBAL_CONSTANT(KEY_DIRECTION_R),
- BIND_GLOBAL_CONSTANT(KEY_BACK),
- BIND_GLOBAL_CONSTANT(KEY_FORWARD),
- BIND_GLOBAL_CONSTANT(KEY_STOP),
- BIND_GLOBAL_CONSTANT(KEY_REFRESH),
- BIND_GLOBAL_CONSTANT(KEY_VOLUMEDOWN),
- BIND_GLOBAL_CONSTANT(KEY_VOLUMEMUTE),
- BIND_GLOBAL_CONSTANT(KEY_VOLUMEUP),
- BIND_GLOBAL_CONSTANT(KEY_BASSBOOST),
- BIND_GLOBAL_CONSTANT(KEY_BASSUP),
- BIND_GLOBAL_CONSTANT(KEY_BASSDOWN),
- BIND_GLOBAL_CONSTANT(KEY_TREBLEUP),
- BIND_GLOBAL_CONSTANT(KEY_TREBLEDOWN),
- BIND_GLOBAL_CONSTANT(KEY_MEDIAPLAY),
- BIND_GLOBAL_CONSTANT(KEY_MEDIASTOP),
- BIND_GLOBAL_CONSTANT(KEY_MEDIAPREVIOUS),
- BIND_GLOBAL_CONSTANT(KEY_MEDIANEXT),
- BIND_GLOBAL_CONSTANT(KEY_MEDIARECORD),
- BIND_GLOBAL_CONSTANT(KEY_HOMEPAGE),
- BIND_GLOBAL_CONSTANT(KEY_FAVORITES),
- BIND_GLOBAL_CONSTANT(KEY_SEARCH),
- BIND_GLOBAL_CONSTANT(KEY_STANDBY),
- BIND_GLOBAL_CONSTANT(KEY_OPENURL),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHMAIL),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHMEDIA),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH0),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH1),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH2),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH3),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH4),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH5),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH6),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH7),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH8),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCH9),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHA),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHB),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHC),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHD),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHE),
- BIND_GLOBAL_CONSTANT(KEY_LAUNCHF),
-
- BIND_GLOBAL_CONSTANT(KEY_UNKNOWN),
- BIND_GLOBAL_CONSTANT(KEY_SPACE),
- BIND_GLOBAL_CONSTANT(KEY_EXCLAM),
- BIND_GLOBAL_CONSTANT(KEY_QUOTEDBL),
- BIND_GLOBAL_CONSTANT(KEY_NUMBERSIGN),
- BIND_GLOBAL_CONSTANT(KEY_DOLLAR),
- BIND_GLOBAL_CONSTANT(KEY_PERCENT),
- BIND_GLOBAL_CONSTANT(KEY_AMPERSAND),
- BIND_GLOBAL_CONSTANT(KEY_APOSTROPHE),
- BIND_GLOBAL_CONSTANT(KEY_PARENLEFT),
- BIND_GLOBAL_CONSTANT(KEY_PARENRIGHT),
- BIND_GLOBAL_CONSTANT(KEY_ASTERISK),
- BIND_GLOBAL_CONSTANT(KEY_PLUS),
- BIND_GLOBAL_CONSTANT(KEY_COMMA),
- BIND_GLOBAL_CONSTANT(KEY_MINUS),
- BIND_GLOBAL_CONSTANT(KEY_PERIOD),
- BIND_GLOBAL_CONSTANT(KEY_SLASH),
- BIND_GLOBAL_CONSTANT(KEY_0),
- BIND_GLOBAL_CONSTANT(KEY_1),
- BIND_GLOBAL_CONSTANT(KEY_2),
- BIND_GLOBAL_CONSTANT(KEY_3),
- BIND_GLOBAL_CONSTANT(KEY_4),
- BIND_GLOBAL_CONSTANT(KEY_5),
- BIND_GLOBAL_CONSTANT(KEY_6),
- BIND_GLOBAL_CONSTANT(KEY_7),
- BIND_GLOBAL_CONSTANT(KEY_8),
- BIND_GLOBAL_CONSTANT(KEY_9),
- BIND_GLOBAL_CONSTANT(KEY_COLON),
- BIND_GLOBAL_CONSTANT(KEY_SEMICOLON),
- BIND_GLOBAL_CONSTANT(KEY_LESS),
- BIND_GLOBAL_CONSTANT(KEY_EQUAL),
- BIND_GLOBAL_CONSTANT(KEY_GREATER),
- BIND_GLOBAL_CONSTANT(KEY_QUESTION),
- BIND_GLOBAL_CONSTANT(KEY_AT),
- BIND_GLOBAL_CONSTANT(KEY_A),
- BIND_GLOBAL_CONSTANT(KEY_B),
- BIND_GLOBAL_CONSTANT(KEY_C),
- BIND_GLOBAL_CONSTANT(KEY_D),
- BIND_GLOBAL_CONSTANT(KEY_E),
- BIND_GLOBAL_CONSTANT(KEY_F),
- BIND_GLOBAL_CONSTANT(KEY_G),
- BIND_GLOBAL_CONSTANT(KEY_H),
- BIND_GLOBAL_CONSTANT(KEY_I),
- BIND_GLOBAL_CONSTANT(KEY_J),
- BIND_GLOBAL_CONSTANT(KEY_K),
- BIND_GLOBAL_CONSTANT(KEY_L),
- BIND_GLOBAL_CONSTANT(KEY_M),
- BIND_GLOBAL_CONSTANT(KEY_N),
- BIND_GLOBAL_CONSTANT(KEY_O),
- BIND_GLOBAL_CONSTANT(KEY_P),
- BIND_GLOBAL_CONSTANT(KEY_Q),
- BIND_GLOBAL_CONSTANT(KEY_R),
- BIND_GLOBAL_CONSTANT(KEY_S),
- BIND_GLOBAL_CONSTANT(KEY_T),
- BIND_GLOBAL_CONSTANT(KEY_U),
- BIND_GLOBAL_CONSTANT(KEY_V),
- BIND_GLOBAL_CONSTANT(KEY_W),
- BIND_GLOBAL_CONSTANT(KEY_X),
- BIND_GLOBAL_CONSTANT(KEY_Y),
- BIND_GLOBAL_CONSTANT(KEY_Z),
- BIND_GLOBAL_CONSTANT(KEY_BRACKETLEFT),
- BIND_GLOBAL_CONSTANT(KEY_BACKSLASH),
- BIND_GLOBAL_CONSTANT(KEY_BRACKETRIGHT),
- BIND_GLOBAL_CONSTANT(KEY_ASCIICIRCUM),
- BIND_GLOBAL_CONSTANT(KEY_UNDERSCORE),
- BIND_GLOBAL_CONSTANT(KEY_QUOTELEFT),
- BIND_GLOBAL_CONSTANT(KEY_BRACELEFT),
- BIND_GLOBAL_CONSTANT(KEY_BAR),
- BIND_GLOBAL_CONSTANT(KEY_BRACERIGHT),
- BIND_GLOBAL_CONSTANT(KEY_ASCIITILDE),
- BIND_GLOBAL_CONSTANT(KEY_NOBREAKSPACE),
- BIND_GLOBAL_CONSTANT(KEY_EXCLAMDOWN),
- BIND_GLOBAL_CONSTANT(KEY_CENT),
- BIND_GLOBAL_CONSTANT(KEY_STERLING),
- BIND_GLOBAL_CONSTANT(KEY_CURRENCY),
- BIND_GLOBAL_CONSTANT(KEY_YEN),
- BIND_GLOBAL_CONSTANT(KEY_BROKENBAR),
- BIND_GLOBAL_CONSTANT(KEY_SECTION),
- BIND_GLOBAL_CONSTANT(KEY_DIAERESIS),
- BIND_GLOBAL_CONSTANT(KEY_COPYRIGHT),
- BIND_GLOBAL_CONSTANT(KEY_ORDFEMININE),
- BIND_GLOBAL_CONSTANT(KEY_GUILLEMOTLEFT),
- BIND_GLOBAL_CONSTANT(KEY_NOTSIGN),
- BIND_GLOBAL_CONSTANT(KEY_HYPHEN),
- BIND_GLOBAL_CONSTANT(KEY_REGISTERED),
- BIND_GLOBAL_CONSTANT(KEY_MACRON),
- BIND_GLOBAL_CONSTANT(KEY_DEGREE),
- BIND_GLOBAL_CONSTANT(KEY_PLUSMINUS),
- BIND_GLOBAL_CONSTANT(KEY_TWOSUPERIOR),
- BIND_GLOBAL_CONSTANT(KEY_THREESUPERIOR),
- BIND_GLOBAL_CONSTANT(KEY_ACUTE),
- BIND_GLOBAL_CONSTANT(KEY_MU),
- BIND_GLOBAL_CONSTANT(KEY_PARAGRAPH),
- BIND_GLOBAL_CONSTANT(KEY_PERIODCENTERED),
- BIND_GLOBAL_CONSTANT(KEY_CEDILLA),
- BIND_GLOBAL_CONSTANT(KEY_ONESUPERIOR),
- BIND_GLOBAL_CONSTANT(KEY_MASCULINE),
- BIND_GLOBAL_CONSTANT(KEY_GUILLEMOTRIGHT),
- BIND_GLOBAL_CONSTANT(KEY_ONEQUARTER),
- BIND_GLOBAL_CONSTANT(KEY_ONEHALF),
- BIND_GLOBAL_CONSTANT(KEY_THREEQUARTERS),
- BIND_GLOBAL_CONSTANT(KEY_QUESTIONDOWN),
- BIND_GLOBAL_CONSTANT(KEY_AGRAVE),
- BIND_GLOBAL_CONSTANT(KEY_AACUTE),
- BIND_GLOBAL_CONSTANT(KEY_ACIRCUMFLEX),
- BIND_GLOBAL_CONSTANT(KEY_ATILDE),
- BIND_GLOBAL_CONSTANT(KEY_ADIAERESIS),
- BIND_GLOBAL_CONSTANT(KEY_ARING),
- BIND_GLOBAL_CONSTANT(KEY_AE),
- BIND_GLOBAL_CONSTANT(KEY_CCEDILLA),
- BIND_GLOBAL_CONSTANT(KEY_EGRAVE),
- BIND_GLOBAL_CONSTANT(KEY_EACUTE),
- BIND_GLOBAL_CONSTANT(KEY_ECIRCUMFLEX),
- BIND_GLOBAL_CONSTANT(KEY_EDIAERESIS),
- BIND_GLOBAL_CONSTANT(KEY_IGRAVE),
- BIND_GLOBAL_CONSTANT(KEY_IACUTE),
- BIND_GLOBAL_CONSTANT(KEY_ICIRCUMFLEX),
- BIND_GLOBAL_CONSTANT(KEY_IDIAERESIS),
- BIND_GLOBAL_CONSTANT(KEY_ETH),
- BIND_GLOBAL_CONSTANT(KEY_NTILDE),
- BIND_GLOBAL_CONSTANT(KEY_OGRAVE),
- BIND_GLOBAL_CONSTANT(KEY_OACUTE),
- BIND_GLOBAL_CONSTANT(KEY_OCIRCUMFLEX),
- BIND_GLOBAL_CONSTANT(KEY_OTILDE),
- BIND_GLOBAL_CONSTANT(KEY_ODIAERESIS),
- BIND_GLOBAL_CONSTANT(KEY_MULTIPLY),
- BIND_GLOBAL_CONSTANT(KEY_OOBLIQUE),
- BIND_GLOBAL_CONSTANT(KEY_UGRAVE),
- BIND_GLOBAL_CONSTANT(KEY_UACUTE),
- BIND_GLOBAL_CONSTANT(KEY_UCIRCUMFLEX),
- BIND_GLOBAL_CONSTANT(KEY_UDIAERESIS),
- BIND_GLOBAL_CONSTANT(KEY_YACUTE),
- BIND_GLOBAL_CONSTANT(KEY_THORN),
- BIND_GLOBAL_CONSTANT(KEY_SSHARP),
-
- BIND_GLOBAL_CONSTANT(KEY_DIVISION),
- BIND_GLOBAL_CONSTANT(KEY_YDIAERESIS),
-
- BIND_GLOBAL_CONSTANT(KEY_CODE_MASK),
- BIND_GLOBAL_CONSTANT(KEY_MODIFIER_MASK),
-
- BIND_GLOBAL_CONSTANT(KEY_MASK_SHIFT),
- BIND_GLOBAL_CONSTANT(KEY_MASK_ALT),
- BIND_GLOBAL_CONSTANT(KEY_MASK_META),
- BIND_GLOBAL_CONSTANT(KEY_MASK_CTRL),
- BIND_GLOBAL_CONSTANT(KEY_MASK_CMD),
- BIND_GLOBAL_CONSTANT(KEY_MASK_KPAD),
- BIND_GLOBAL_CONSTANT(KEY_MASK_GROUP_SWITCH),
+ BIND_GLOBAL_CONSTANT(SPKEY);
+
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ESCAPE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_TAB);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BACKTAB);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BACKSPACE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ENTER);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_ENTER);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_INSERT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DELETE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PAUSE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PRINT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SYSREQ);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CLEAR);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_HOME);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_END);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_UP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_RIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PAGEUP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PAGEDOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SHIFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CONTROL);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_META);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ALT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CAPSLOCK);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_NUMLOCK);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SCROLLLOCK);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F1);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F2);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F3);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F4);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F5);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F6);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F7);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F8);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F9);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F10);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F11);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F12);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F13);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F14);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F15);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F16);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_MULTIPLY);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_DIVIDE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_SUBTRACT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_PERIOD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_ADD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_0);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_1);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_2);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_3);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_4);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_5);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_6);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_7);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_8);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_9);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SUPER_L);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SUPER_R);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MENU);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_HYPER_L);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_HYPER_R);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_HELP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DIRECTION_L);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DIRECTION_R);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BACK);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_FORWARD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_STOP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_REFRESH);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_VOLUMEDOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_VOLUMEMUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_VOLUMEUP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BASSBOOST);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BASSUP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BASSDOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_TREBLEUP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_TREBLEDOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIAPLAY);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIASTOP);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIAPREVIOUS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIANEXT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIARECORD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_HOMEPAGE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_FAVORITES);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SEARCH);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_STANDBY);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_OPENURL);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHMAIL);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHMEDIA);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH0);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH1);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH2);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH3);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH4);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH5);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH6);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH7);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH8);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH9);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHA);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHB);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHC);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHF);
+
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_UNKNOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SPACE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_EXCLAM);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_QUOTEDBL);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_NUMBERSIGN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DOLLAR);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PERCENT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_AMPERSAND);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_APOSTROPHE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PARENLEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PARENRIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ASTERISK);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PLUS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_COMMA);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MINUS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PERIOD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SLASH);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_0);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_1);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_2);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_3);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_4);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_5);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_6);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_7);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_8);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_9);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_COLON);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SEMICOLON);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_LESS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_EQUAL);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_GREATER);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_QUESTION);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_AT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_A);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_B);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_C);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_D);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_E);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_F);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_G);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_H);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_I);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_J);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_K);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_L);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_M);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_N);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_O);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_P);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_Q);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_R);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_S);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_T);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_U);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_V);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_W);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_X);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_Y);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_Z);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACKETLEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BACKSLASH);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACKETRIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ASCIICIRCUM);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_UNDERSCORE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_QUOTELEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACELEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BAR);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACERIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ASCIITILDE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_NOBREAKSPACE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_EXCLAMDOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CENT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_STERLING);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CURRENCY);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_YEN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_BROKENBAR);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SECTION);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DIAERESIS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_COPYRIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ORDFEMININE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_GUILLEMOTLEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_NOTSIGN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_HYPHEN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_REGISTERED);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MACRON);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DEGREE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PLUSMINUS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_TWOSUPERIOR);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_THREESUPERIOR);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ACUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MU);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PARAGRAPH);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_PERIODCENTERED);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CEDILLA);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ONESUPERIOR);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASCULINE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_GUILLEMOTRIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ONEQUARTER);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ONEHALF);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_THREEQUARTERS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_QUESTIONDOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_AGRAVE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_AACUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ACIRCUMFLEX);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ATILDE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ADIAERESIS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ARING);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_AE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CCEDILLA);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_EGRAVE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_EACUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ECIRCUMFLEX);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_EDIAERESIS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_IGRAVE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_IACUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ICIRCUMFLEX);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_IDIAERESIS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ETH);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_NTILDE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_OGRAVE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_OACUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_OCIRCUMFLEX);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_OTILDE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_ODIAERESIS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MULTIPLY);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_OOBLIQUE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_UGRAVE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_UACUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_UCIRCUMFLEX);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_UDIAERESIS);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_YACUTE);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_THORN);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_SSHARP);
+
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_DIVISION);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_YDIAERESIS);
+
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_CODE_MASK);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MODIFIER_MASK);
+
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_SHIFT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_ALT);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_META);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_CTRL);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_CMD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_KPAD);
+ BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_GROUP_SWITCH);
// mouse
- BIND_GLOBAL_CONSTANT(BUTTON_LEFT),
- BIND_GLOBAL_CONSTANT(BUTTON_RIGHT),
- BIND_GLOBAL_CONSTANT(BUTTON_MIDDLE),
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_UP),
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_DOWN),
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_LEFT),
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_RIGHT),
- BIND_GLOBAL_CONSTANT(BUTTON_MASK_LEFT),
- BIND_GLOBAL_CONSTANT(BUTTON_MASK_RIGHT),
- BIND_GLOBAL_CONSTANT(BUTTON_MASK_MIDDLE),
+ BIND_GLOBAL_CONSTANT(BUTTON_LEFT);
+ BIND_GLOBAL_CONSTANT(BUTTON_RIGHT);
+ BIND_GLOBAL_CONSTANT(BUTTON_MIDDLE);
+ BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_UP);
+ BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_DOWN);
+ BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_LEFT);
+ BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_RIGHT);
+ BIND_GLOBAL_CONSTANT(BUTTON_MASK_LEFT);
+ BIND_GLOBAL_CONSTANT(BUTTON_MASK_RIGHT);
+ BIND_GLOBAL_CONSTANT(BUTTON_MASK_MIDDLE);
//joypads
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_0),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_1),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_2),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_3),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_4),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_5),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_6),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_7),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_8),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_9),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_10),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_11),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_12),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_13),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_14),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_15),
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_MAX),
-
- BIND_GLOBAL_CONSTANT(JOY_SONY_CIRCLE),
- BIND_GLOBAL_CONSTANT(JOY_SONY_X),
- BIND_GLOBAL_CONSTANT(JOY_SONY_SQUARE),
- BIND_GLOBAL_CONSTANT(JOY_SONY_TRIANGLE),
-
- BIND_GLOBAL_CONSTANT(JOY_XBOX_B),
- BIND_GLOBAL_CONSTANT(JOY_XBOX_A),
- BIND_GLOBAL_CONSTANT(JOY_XBOX_X),
- BIND_GLOBAL_CONSTANT(JOY_XBOX_Y),
-
- BIND_GLOBAL_CONSTANT(JOY_DS_A),
- BIND_GLOBAL_CONSTANT(JOY_DS_B),
- BIND_GLOBAL_CONSTANT(JOY_DS_X),
- BIND_GLOBAL_CONSTANT(JOY_DS_Y),
-
- BIND_GLOBAL_CONSTANT(JOY_SELECT),
- BIND_GLOBAL_CONSTANT(JOY_START),
- BIND_GLOBAL_CONSTANT(JOY_DPAD_UP),
- BIND_GLOBAL_CONSTANT(JOY_DPAD_DOWN),
- BIND_GLOBAL_CONSTANT(JOY_DPAD_LEFT),
- BIND_GLOBAL_CONSTANT(JOY_DPAD_RIGHT),
- BIND_GLOBAL_CONSTANT(JOY_L),
- BIND_GLOBAL_CONSTANT(JOY_L2),
- BIND_GLOBAL_CONSTANT(JOY_L3),
- BIND_GLOBAL_CONSTANT(JOY_R),
- BIND_GLOBAL_CONSTANT(JOY_R2),
- BIND_GLOBAL_CONSTANT(JOY_R3),
-
- BIND_GLOBAL_CONSTANT(JOY_AXIS_0),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_1),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_2),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_3),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_4),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_5),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_6),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_7),
- BIND_GLOBAL_CONSTANT(JOY_AXIS_MAX),
-
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_LX),
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_LY),
-
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_RX),
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_RY),
-
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_L2),
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_R2),
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_0);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_1);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_2);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_3);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_4);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_5);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_6);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_7);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_8);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_9);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_10);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_11);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_12);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_13);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_14);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_15);
+ BIND_GLOBAL_CONSTANT(JOY_BUTTON_MAX);
+
+ BIND_GLOBAL_CONSTANT(JOY_SONY_CIRCLE);
+ BIND_GLOBAL_CONSTANT(JOY_SONY_X);
+ BIND_GLOBAL_CONSTANT(JOY_SONY_SQUARE);
+ BIND_GLOBAL_CONSTANT(JOY_SONY_TRIANGLE);
+
+ BIND_GLOBAL_CONSTANT(JOY_XBOX_B);
+ BIND_GLOBAL_CONSTANT(JOY_XBOX_A);
+ BIND_GLOBAL_CONSTANT(JOY_XBOX_X);
+ BIND_GLOBAL_CONSTANT(JOY_XBOX_Y);
+
+ BIND_GLOBAL_CONSTANT(JOY_DS_A);
+ BIND_GLOBAL_CONSTANT(JOY_DS_B);
+ BIND_GLOBAL_CONSTANT(JOY_DS_X);
+ BIND_GLOBAL_CONSTANT(JOY_DS_Y);
+
+ BIND_GLOBAL_CONSTANT(JOY_SELECT);
+ BIND_GLOBAL_CONSTANT(JOY_START);
+ BIND_GLOBAL_CONSTANT(JOY_DPAD_UP);
+ BIND_GLOBAL_CONSTANT(JOY_DPAD_DOWN);
+ BIND_GLOBAL_CONSTANT(JOY_DPAD_LEFT);
+ BIND_GLOBAL_CONSTANT(JOY_DPAD_RIGHT);
+ BIND_GLOBAL_CONSTANT(JOY_L);
+ BIND_GLOBAL_CONSTANT(JOY_L2);
+ BIND_GLOBAL_CONSTANT(JOY_L3);
+ BIND_GLOBAL_CONSTANT(JOY_R);
+ BIND_GLOBAL_CONSTANT(JOY_R2);
+ BIND_GLOBAL_CONSTANT(JOY_R3);
+
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_0);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_1);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_2);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_3);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_4);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_5);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_6);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_7);
+ BIND_GLOBAL_CONSTANT(JOY_AXIS_MAX);
+
+ BIND_GLOBAL_CONSTANT(JOY_ANALOG_LX);
+ BIND_GLOBAL_CONSTANT(JOY_ANALOG_LY);
+
+ BIND_GLOBAL_CONSTANT(JOY_ANALOG_RX);
+ BIND_GLOBAL_CONSTANT(JOY_ANALOG_RY);
+
+ BIND_GLOBAL_CONSTANT(JOY_ANALOG_L2);
+ BIND_GLOBAL_CONSTANT(JOY_ANALOG_R2);
// error list
- BIND_GLOBAL_CONSTANT(OK),
- BIND_GLOBAL_CONSTANT(FAILED), ///< Generic fail error
- BIND_GLOBAL_CONSTANT(ERR_UNAVAILABLE), ///< What is requested is unsupported/unavailable
- BIND_GLOBAL_CONSTANT(ERR_UNCONFIGURED), ///< The object being used hasn't been properly set up yet
- BIND_GLOBAL_CONSTANT(ERR_UNAUTHORIZED), ///< Missing credentials for requested resource
- BIND_GLOBAL_CONSTANT(ERR_PARAMETER_RANGE_ERROR), ///< Parameter given out of range
- BIND_GLOBAL_CONSTANT(ERR_OUT_OF_MEMORY), ///< Out of memory
- BIND_GLOBAL_CONSTANT(ERR_FILE_NOT_FOUND),
- BIND_GLOBAL_CONSTANT(ERR_FILE_BAD_DRIVE),
- BIND_GLOBAL_CONSTANT(ERR_FILE_BAD_PATH),
- BIND_GLOBAL_CONSTANT(ERR_FILE_NO_PERMISSION),
- BIND_GLOBAL_CONSTANT(ERR_FILE_ALREADY_IN_USE),
- BIND_GLOBAL_CONSTANT(ERR_FILE_CANT_OPEN),
- BIND_GLOBAL_CONSTANT(ERR_FILE_CANT_WRITE),
- BIND_GLOBAL_CONSTANT(ERR_FILE_CANT_READ),
- BIND_GLOBAL_CONSTANT(ERR_FILE_UNRECOGNIZED),
- BIND_GLOBAL_CONSTANT(ERR_FILE_CORRUPT),
- BIND_GLOBAL_CONSTANT(ERR_FILE_MISSING_DEPENDENCIES),
- BIND_GLOBAL_CONSTANT(ERR_FILE_EOF),
- BIND_GLOBAL_CONSTANT(ERR_CANT_OPEN), ///< Can't open a resource/socket/file
- BIND_GLOBAL_CONSTANT(ERR_CANT_CREATE),
- BIND_GLOBAL_CONSTANT(ERR_PARSE_ERROR),
- BIND_GLOBAL_CONSTANT(ERR_QUERY_FAILED),
- BIND_GLOBAL_CONSTANT(ERR_ALREADY_IN_USE),
- BIND_GLOBAL_CONSTANT(ERR_LOCKED), ///< resource is locked
- BIND_GLOBAL_CONSTANT(ERR_TIMEOUT),
- BIND_GLOBAL_CONSTANT(ERR_CANT_AQUIRE_RESOURCE),
- BIND_GLOBAL_CONSTANT(ERR_INVALID_DATA), ///< Data passed is invalid
- BIND_GLOBAL_CONSTANT(ERR_INVALID_PARAMETER), ///< Parameter passed is invalid
- BIND_GLOBAL_CONSTANT(ERR_ALREADY_EXISTS), ///< When adding ), item already exists
- BIND_GLOBAL_CONSTANT(ERR_DOES_NOT_EXIST), ///< When retrieving/erasing ), it item does not exist
- BIND_GLOBAL_CONSTANT(ERR_DATABASE_CANT_READ), ///< database is full
- BIND_GLOBAL_CONSTANT(ERR_DATABASE_CANT_WRITE), ///< database is full
- BIND_GLOBAL_CONSTANT(ERR_COMPILATION_FAILED),
- BIND_GLOBAL_CONSTANT(ERR_METHOD_NOT_FOUND),
- BIND_GLOBAL_CONSTANT(ERR_LINK_FAILED),
- BIND_GLOBAL_CONSTANT(ERR_SCRIPT_FAILED),
- BIND_GLOBAL_CONSTANT(ERR_CYCLIC_LINK),
- BIND_GLOBAL_CONSTANT(ERR_BUSY),
- BIND_GLOBAL_CONSTANT(ERR_HELP), ///< user requested help!!
- BIND_GLOBAL_CONSTANT(ERR_BUG), ///< a bug in the software certainly happened ), due to a double check failing or unexpected behavior.
- BIND_GLOBAL_CONSTANT(ERR_WTF),
-
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_NONE),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_RANGE),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_EXP_RANGE),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_ENUM),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_EXP_EASING),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_LENGTH),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_KEY_ACCEL),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_FLAGS),
-
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_LAYERS_2D_RENDER),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_LAYERS_2D_PHYSICS),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_LAYERS_3D_RENDER),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_LAYERS_3D_PHYSICS),
-
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_FILE),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_DIR),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_GLOBAL_FILE),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_GLOBAL_DIR),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_RESOURCE_TYPE),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_MULTILINE_TEXT),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_COLOR_NO_ALPHA),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSY),
- BIND_GLOBAL_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS),
-
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_STORAGE),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_EDITOR),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_NETWORK),
-
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_EDITOR_HELPER),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_CHECKABLE),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_CHECKED),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_INTERNATIONALIZED),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_GROUP),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_CATEGORY),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_STORE_IF_NONZERO),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_STORE_IF_NONONE),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_NO_INSTANCE_STATE),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_RESTART_IF_CHANGED),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_SCRIPT_VARIABLE),
-
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_DEFAULT),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_DEFAULT_INTL),
- BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_NOEDITOR),
-
- BIND_GLOBAL_CONSTANT(METHOD_FLAG_NORMAL),
- BIND_GLOBAL_CONSTANT(METHOD_FLAG_EDITOR),
- BIND_GLOBAL_CONSTANT(METHOD_FLAG_NOSCRIPT),
- BIND_GLOBAL_CONSTANT(METHOD_FLAG_CONST),
- BIND_GLOBAL_CONSTANT(METHOD_FLAG_REVERSE),
- BIND_GLOBAL_CONSTANT(METHOD_FLAG_VIRTUAL),
- BIND_GLOBAL_CONSTANT(METHOD_FLAG_FROM_SCRIPT),
- BIND_GLOBAL_CONSTANT(METHOD_FLAGS_DEFAULT),
-
- { "TYPE_NIL", Variant::NIL },
- { "TYPE_BOOL", Variant::BOOL },
- { "TYPE_INT", Variant::INT },
- { "TYPE_REAL", Variant::REAL },
- { "TYPE_STRING", Variant::STRING },
- { "TYPE_VECTOR2", Variant::VECTOR2 }, // 5
- { "TYPE_RECT2", Variant::RECT2 },
- { "TYPE_VECTOR3", Variant::VECTOR3 },
- { "TYPE_TRANSFORM2D", Variant::TRANSFORM2D },
- { "TYPE_PLANE", Variant::PLANE },
- { "TYPE_QUAT", Variant::QUAT }, // 10
- { "TYPE_RECT3", Variant::RECT3 },
- { "TYPE_BASIS", Variant::BASIS },
- { "TYPE_TRANSFORM", Variant::TRANSFORM },
- { "TYPE_COLOR", Variant::COLOR },
- { "TYPE_NODE_PATH", Variant::NODE_PATH }, // 15
- { "TYPE_RID", Variant::_RID },
- { "TYPE_OBJECT", Variant::OBJECT },
- { "TYPE_DICTIONARY", Variant::DICTIONARY }, // 20
- { "TYPE_ARRAY", Variant::ARRAY },
- { "TYPE_RAW_ARRAY", Variant::POOL_BYTE_ARRAY },
- { "TYPE_INT_ARRAY", Variant::POOL_INT_ARRAY },
- { "TYPE_REAL_ARRAY", Variant::POOL_REAL_ARRAY },
- { "TYPE_STRING_ARRAY", Variant::POOL_STRING_ARRAY },
- { "TYPE_VECTOR2_ARRAY", Variant::POOL_VECTOR2_ARRAY }, // 25
- { "TYPE_VECTOR3_ARRAY", Variant::POOL_VECTOR3_ARRAY },
- { "TYPE_COLOR_ARRAY", Variant::POOL_COLOR_ARRAY },
- { "TYPE_MAX", Variant::VARIANT_MAX },
- { NULL, 0 }
+ BIND_GLOBAL_ENUM_CONSTANT(OK);
+ BIND_GLOBAL_ENUM_CONSTANT(FAILED); ///< Generic fail error
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_UNAVAILABLE); ///< What is requested is unsupported/unavailable
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_UNCONFIGURED); ///< The object being used hasn't been properly set up yet
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_UNAUTHORIZED); ///< Missing credentials for requested resource
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_PARAMETER_RANGE_ERROR); ///< Parameter given out of range
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_OUT_OF_MEMORY); ///< Out of memory
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_NOT_FOUND);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_BAD_DRIVE);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_BAD_PATH);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_NO_PERMISSION);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_ALREADY_IN_USE);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CANT_OPEN);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CANT_WRITE);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CANT_READ);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_UNRECOGNIZED);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CORRUPT);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_MISSING_DEPENDENCIES);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_EOF);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_OPEN); ///< Can't open a resource/socket/file
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_CREATE);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_PARSE_ERROR);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_QUERY_FAILED);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_ALREADY_IN_USE);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_LOCKED); ///< resource is locked
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_TIMEOUT);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_AQUIRE_RESOURCE);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_INVALID_DATA); ///< Data passed is invalid
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_INVALID_PARAMETER); ///< Parameter passed is invalid
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_ALREADY_EXISTS); ///< When adding ), item already exists
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_DOES_NOT_EXIST); ///< When retrieving/erasing ), it item does not exist
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_DATABASE_CANT_READ); ///< database is full
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_DATABASE_CANT_WRITE); ///< database is full
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_COMPILATION_FAILED);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_METHOD_NOT_FOUND);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_LINK_FAILED);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_SCRIPT_FAILED);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_CYCLIC_LINK);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_BUSY);
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_HELP); ///< user requested help!!
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_BUG); ///< a bug in the software certainly happened ), due to a double check failing or unexpected behavior.
+ BIND_GLOBAL_ENUM_CONSTANT(ERR_WTF);
+
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_NONE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_RANGE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_EXP_RANGE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_ENUM);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_EXP_EASING);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LENGTH);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_KEY_ACCEL);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_FLAGS);
+
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_2D_RENDER);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_2D_PHYSICS);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_3D_RENDER);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_3D_PHYSICS);
+
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_FILE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_DIR);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_GLOBAL_FILE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_GLOBAL_DIR);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_RESOURCE_TYPE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_MULTILINE_TEXT);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_COLOR_NO_ALPHA);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSY);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS);
+
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_STORAGE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_EDITOR);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_NETWORK);
+
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_EDITOR_HELPER);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_CHECKABLE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_CHECKED);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_INTERNATIONALIZED);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_GROUP);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_CATEGORY);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_STORE_IF_NONZERO);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_STORE_IF_NONONE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_NO_INSTANCE_STATE);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_RESTART_IF_CHANGED);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_SCRIPT_VARIABLE);
+
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_DEFAULT);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_DEFAULT_INTL);
+ BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_NOEDITOR);
+
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_NORMAL);
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_EDITOR);
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_NOSCRIPT);
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_CONST);
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_REVERSE);
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_VIRTUAL);
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_FROM_SCRIPT);
+ BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAGS_DEFAULT);
+
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_NIL", Variant::NIL);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_BOOL", Variant::BOOL);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_INT", Variant::INT);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_REAL", Variant::REAL);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING", Variant::STRING);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2", Variant::VECTOR2); // 5
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RECT2", Variant::RECT2);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR3", Variant::VECTOR3);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_TRANSFORM2D", Variant::TRANSFORM2D);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_PLANE", Variant::PLANE);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_QUAT", Variant::QUAT); // 10
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RECT3", Variant::RECT3);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_BASIS", Variant::BASIS);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_TRANSFORM", Variant::TRANSFORM);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_COLOR", Variant::COLOR);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_NODE_PATH", Variant::NODE_PATH); // 15
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RID", Variant::_RID);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_OBJECT", Variant::OBJECT);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_DICTIONARY", Variant::DICTIONARY); // 20
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_ARRAY", Variant::ARRAY);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RAW_ARRAY", Variant::POOL_BYTE_ARRAY);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_INT_ARRAY", Variant::POOL_INT_ARRAY);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_REAL_ARRAY", Variant::POOL_REAL_ARRAY);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING_ARRAY", Variant::POOL_STRING_ARRAY);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2_ARRAY", Variant::POOL_VECTOR2_ARRAY); // 25
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR3_ARRAY", Variant::POOL_VECTOR3_ARRAY);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_COLOR_ARRAY", Variant::POOL_COLOR_ARRAY);
+ BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_MAX", Variant::VARIANT_MAX);
+}
-};
+void unregister_global_constants() {
+
+ _global_constants.clear();
+}
int GlobalConstants::get_global_constant_count() {
- int i = 0;
- while (_global_constants[i].name)
- i++;
- return i;
+ return _global_constants.size();
+}
+
+#ifdef DEBUG_METHODS_ENABLED
+StringName GlobalConstants::get_global_constant_enum(int p_idx) {
+
+ return _global_constants[p_idx].enum_name;
+}
+#else
+StringName GlobalConstants::get_global_constant_enum(int p_idx) {
+
+ return StringName();
}
+#endif
const char *GlobalConstants::get_global_constant_name(int p_idx) {
diff --git a/core/global_constants.h b/core/global_constants.h
index f298fc31c7..350018e336 100644
--- a/core/global_constants.h
+++ b/core/global_constants.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,9 +30,12 @@
#ifndef GLOBAL_CONSTANTS_H
#define GLOBAL_CONSTANTS_H
+#include "string_db.h"
+
class GlobalConstants {
public:
static int get_global_constant_count();
+ static StringName get_global_constant_enum(int p_idx);
static const char *get_global_constant_name(int p_idx);
static int get_global_constant_value(int p_idx);
};
diff --git a/core/hash_map.h b/core/hash_map.h
index 2d7249e2fc..b22c6378b0 100644
--- a/core/hash_map.h
+++ b/core/hash_map.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/hashfuncs.h b/core/hashfuncs.h
index 8392984565..56d40f1dd7 100644
--- a/core/hashfuncs.h
+++ b/core/hashfuncs.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/helper/math_fieldwise.cpp b/core/helper/math_fieldwise.cpp
index 5545c2d642..2ce2a70866 100644
--- a/core/helper/math_fieldwise.cpp
+++ b/core/helper/math_fieldwise.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/helper/math_fieldwise.h b/core/helper/math_fieldwise.h
index 58489fd3bb..4671703f41 100644
--- a/core/helper/math_fieldwise.h
+++ b/core/helper/math_fieldwise.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/helper/value_evaluator.h b/core/helper/value_evaluator.h
index e32697ca95..bb234de989 100644
--- a/core/helper/value_evaluator.h
+++ b/core/helper/value_evaluator.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/image.cpp b/core/image.cpp
index 2db9cb1571..bb1ce2cee3 100644
--- a/core/image.cpp
+++ b/core/image.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -343,6 +343,11 @@ int Image::get_height() const {
return height;
}
+Vector2 Image::get_size() const {
+
+ return Vector2(width, height);
+}
+
bool Image::has_mipmaps() const {
return mipmaps;
@@ -676,8 +681,8 @@ void Image::resize_to_po2(bool p_square) {
ERR_FAIL();
}
- int w = nearest_power_of_2(width);
- int h = nearest_power_of_2(height);
+ int w = next_power_of_2(width);
+ int h = next_power_of_2(height);
if (w == width && h == height) {
@@ -1060,7 +1065,7 @@ Error Image::generate_mipmaps() {
PoolVector<uint8_t>::Write wp = data.write();
- if (nearest_power_of_2(width) == uint32_t(width) && nearest_power_of_2(height) == uint32_t(height)) {
+ if (next_power_of_2(width) == uint32_t(width) && next_power_of_2(height) == uint32_t(height)) {
//use fast code for powers of 2
int prev_ofs = 0;
int prev_h = height;
@@ -2215,6 +2220,7 @@ void Image::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_width"), &Image::get_width);
ClassDB::bind_method(D_METHOD("get_height"), &Image::get_height);
+ ClassDB::bind_method(D_METHOD("get_size"), &Image::get_size);
ClassDB::bind_method(D_METHOD("has_mipmaps"), &Image::has_mipmaps);
ClassDB::bind_method(D_METHOD("get_format"), &Image::get_format);
ClassDB::bind_method(D_METHOD("get_data"), &Image::get_data);
@@ -2275,62 +2281,62 @@ void Image::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "_set_data", "_get_data");
- BIND_CONSTANT(FORMAT_L8); //luminance
- BIND_CONSTANT(FORMAT_LA8); //luminance-alpha
- BIND_CONSTANT(FORMAT_R8);
- BIND_CONSTANT(FORMAT_RG8);
- BIND_CONSTANT(FORMAT_RGB8);
- BIND_CONSTANT(FORMAT_RGBA8);
- BIND_CONSTANT(FORMAT_RGBA4444);
- BIND_CONSTANT(FORMAT_RGBA5551);
- BIND_CONSTANT(FORMAT_RF); //float
- BIND_CONSTANT(FORMAT_RGF);
- BIND_CONSTANT(FORMAT_RGBF);
- BIND_CONSTANT(FORMAT_RGBAF);
- BIND_CONSTANT(FORMAT_RH); //half float
- BIND_CONSTANT(FORMAT_RGH);
- BIND_CONSTANT(FORMAT_RGBH);
- BIND_CONSTANT(FORMAT_RGBAH);
- BIND_CONSTANT(FORMAT_RGBE9995);
- BIND_CONSTANT(FORMAT_DXT1); //s3tc bc1
- BIND_CONSTANT(FORMAT_DXT3); //bc2
- BIND_CONSTANT(FORMAT_DXT5); //bc3
- BIND_CONSTANT(FORMAT_RGTC_R);
- BIND_CONSTANT(FORMAT_RGTC_RG);
- BIND_CONSTANT(FORMAT_BPTC_RGBA); //btpc bc6h
- BIND_CONSTANT(FORMAT_BPTC_RGBF); //float /
- BIND_CONSTANT(FORMAT_BPTC_RGBFU); //unsigned float
- BIND_CONSTANT(FORMAT_PVRTC2); //pvrtc
- BIND_CONSTANT(FORMAT_PVRTC2A);
- BIND_CONSTANT(FORMAT_PVRTC4);
- BIND_CONSTANT(FORMAT_PVRTC4A);
- BIND_CONSTANT(FORMAT_ETC); //etc1
- BIND_CONSTANT(FORMAT_ETC2_R11); //etc2
- BIND_CONSTANT(FORMAT_ETC2_R11S); //signed ); NOT srgb.
- BIND_CONSTANT(FORMAT_ETC2_RG11);
- BIND_CONSTANT(FORMAT_ETC2_RG11S);
- BIND_CONSTANT(FORMAT_ETC2_RGB8);
- BIND_CONSTANT(FORMAT_ETC2_RGBA8);
- BIND_CONSTANT(FORMAT_ETC2_RGB8A1);
- BIND_CONSTANT(FORMAT_MAX);
-
- BIND_CONSTANT(INTERPOLATE_NEAREST);
- BIND_CONSTANT(INTERPOLATE_BILINEAR);
- BIND_CONSTANT(INTERPOLATE_CUBIC);
-
- BIND_CONSTANT(ALPHA_NONE);
- BIND_CONSTANT(ALPHA_BIT);
- BIND_CONSTANT(ALPHA_BLEND);
-
- BIND_CONSTANT(COMPRESS_S3TC);
- BIND_CONSTANT(COMPRESS_PVRTC2);
- BIND_CONSTANT(COMPRESS_PVRTC4);
- BIND_CONSTANT(COMPRESS_ETC);
- BIND_CONSTANT(COMPRESS_ETC2);
-
- BIND_CONSTANT(COMPRESS_SOURCE_GENERIC);
- BIND_CONSTANT(COMPRESS_SOURCE_SRGB);
- BIND_CONSTANT(COMPRESS_SOURCE_NORMAL);
+ BIND_ENUM_CONSTANT(FORMAT_L8); //luminance
+ BIND_ENUM_CONSTANT(FORMAT_LA8); //luminance-alpha
+ BIND_ENUM_CONSTANT(FORMAT_R8);
+ BIND_ENUM_CONSTANT(FORMAT_RG8);
+ BIND_ENUM_CONSTANT(FORMAT_RGB8);
+ BIND_ENUM_CONSTANT(FORMAT_RGBA8);
+ BIND_ENUM_CONSTANT(FORMAT_RGBA4444);
+ BIND_ENUM_CONSTANT(FORMAT_RGBA5551);
+ BIND_ENUM_CONSTANT(FORMAT_RF); //float
+ BIND_ENUM_CONSTANT(FORMAT_RGF);
+ BIND_ENUM_CONSTANT(FORMAT_RGBF);
+ BIND_ENUM_CONSTANT(FORMAT_RGBAF);
+ BIND_ENUM_CONSTANT(FORMAT_RH); //half float
+ BIND_ENUM_CONSTANT(FORMAT_RGH);
+ BIND_ENUM_CONSTANT(FORMAT_RGBH);
+ BIND_ENUM_CONSTANT(FORMAT_RGBAH);
+ BIND_ENUM_CONSTANT(FORMAT_RGBE9995);
+ BIND_ENUM_CONSTANT(FORMAT_DXT1); //s3tc bc1
+ BIND_ENUM_CONSTANT(FORMAT_DXT3); //bc2
+ BIND_ENUM_CONSTANT(FORMAT_DXT5); //bc3
+ BIND_ENUM_CONSTANT(FORMAT_RGTC_R);
+ BIND_ENUM_CONSTANT(FORMAT_RGTC_RG);
+ BIND_ENUM_CONSTANT(FORMAT_BPTC_RGBA); //btpc bc6h
+ BIND_ENUM_CONSTANT(FORMAT_BPTC_RGBF); //float /
+ BIND_ENUM_CONSTANT(FORMAT_BPTC_RGBFU); //unsigned float
+ BIND_ENUM_CONSTANT(FORMAT_PVRTC2); //pvrtc
+ BIND_ENUM_CONSTANT(FORMAT_PVRTC2A);
+ BIND_ENUM_CONSTANT(FORMAT_PVRTC4);
+ BIND_ENUM_CONSTANT(FORMAT_PVRTC4A);
+ BIND_ENUM_CONSTANT(FORMAT_ETC); //etc1
+ BIND_ENUM_CONSTANT(FORMAT_ETC2_R11); //etc2
+ BIND_ENUM_CONSTANT(FORMAT_ETC2_R11S); //signed ); NOT srgb.
+ BIND_ENUM_CONSTANT(FORMAT_ETC2_RG11);
+ BIND_ENUM_CONSTANT(FORMAT_ETC2_RG11S);
+ BIND_ENUM_CONSTANT(FORMAT_ETC2_RGB8);
+ BIND_ENUM_CONSTANT(FORMAT_ETC2_RGBA8);
+ BIND_ENUM_CONSTANT(FORMAT_ETC2_RGB8A1);
+ BIND_ENUM_CONSTANT(FORMAT_MAX);
+
+ BIND_ENUM_CONSTANT(INTERPOLATE_NEAREST);
+ BIND_ENUM_CONSTANT(INTERPOLATE_BILINEAR);
+ BIND_ENUM_CONSTANT(INTERPOLATE_CUBIC);
+
+ BIND_ENUM_CONSTANT(ALPHA_NONE);
+ BIND_ENUM_CONSTANT(ALPHA_BIT);
+ BIND_ENUM_CONSTANT(ALPHA_BLEND);
+
+ BIND_ENUM_CONSTANT(COMPRESS_S3TC);
+ BIND_ENUM_CONSTANT(COMPRESS_PVRTC2);
+ BIND_ENUM_CONSTANT(COMPRESS_PVRTC4);
+ BIND_ENUM_CONSTANT(COMPRESS_ETC);
+ BIND_ENUM_CONSTANT(COMPRESS_ETC2);
+
+ BIND_ENUM_CONSTANT(COMPRESS_SOURCE_GENERIC);
+ BIND_ENUM_CONSTANT(COMPRESS_SOURCE_SRGB);
+ BIND_ENUM_CONSTANT(COMPRESS_SOURCE_NORMAL);
}
void Image::set_compress_bc_func(void (*p_compress_func)(Image *, CompressSource)) {
diff --git a/core/image.h b/core/image.h
index 7acc4744e9..27df65a898 100644
--- a/core/image.h
+++ b/core/image.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -177,6 +177,7 @@ private:
public:
int get_width() const; ///< Get image width
int get_height() const; ///< Get image height
+ Vector2 get_size() const;
bool has_mipmaps() const;
int get_mipmap_count() const;
diff --git a/core/input_map.cpp b/core/input_map.cpp
index 8435882325..82a2eaddae 100644
--- a/core/input_map.cpp
+++ b/core/input_map.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/input_map.h b/core/input_map.h
index ba93e61f5f..18e6b04d4e 100644
--- a/core/input_map.h
+++ b/core/input_map.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/int_types.h b/core/int_types.h
index 973e0c749d..e9bcc88ee8 100644
--- a/core/int_types.h
+++ b/core/int_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/compression.cpp b/core/io/compression.cpp
index 139383710c..44fa65e11d 100644
--- a/core/io/compression.cpp
+++ b/core/io/compression.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/compression.h b/core/io/compression.h
index 5eb7806d7b..22d8109d4f 100644
--- a/core/io/compression.h
+++ b/core/io/compression.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/config_file.cpp b/core/io/config_file.cpp
index edd090adf2..daa6b01d6e 100644
--- a/core/io/config_file.cpp
+++ b/core/io/config_file.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/config_file.h b/core/io/config_file.h
index 75a3a519a6..8ed8a069e4 100644
--- a/core/io/config_file.h
+++ b/core/io/config_file.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_buffered.cpp b/core/io/file_access_buffered.cpp
index 81adbbbaf7..859f2e3f8c 100644
--- a/core/io/file_access_buffered.cpp
+++ b/core/io/file_access_buffered.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -106,11 +106,11 @@ uint8_t FileAccessBuffered::get_8() const {
return byte;
};
-int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_elements) const {
+int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_length) const {
ERR_FAIL_COND_V(!file.open, -1);
- if (p_elements > cache_size) {
+ if (p_length > cache_size) {
int total_read = 0;
@@ -122,12 +122,12 @@ int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_elements) const {
//memcpy(p_dest, read.ptr() + (file.offset - cache.offset), size);
memcpy(p_dest, cache.buffer.ptr() + (file.offset - cache.offset), size);
p_dest += size;
- p_elements -= size;
+ p_length -= size;
file.offset += size;
total_read += size;
};
- int err = read_data_block(file.offset, p_elements, p_dest);
+ int err = read_data_block(file.offset, p_length, p_dest);
if (err >= 0) {
total_read += err;
file.offset += err;
@@ -136,7 +136,7 @@ int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_elements) const {
return total_read;
};
- int to_read = p_elements;
+ int to_read = p_length;
int total_read = 0;
while (to_read > 0) {
@@ -161,7 +161,7 @@ int FileAccessBuffered::get_buffer(uint8_t *p_dest, int p_elements) const {
to_read -= r;
};
- return p_elements;
+ return p_length;
};
bool FileAccessBuffered::is_open() const {
diff --git a/core/io/file_access_buffered.h b/core/io/file_access_buffered.h
index c5bf120890..d3137058fb 100644
--- a/core/io/file_access_buffered.h
+++ b/core/io/file_access_buffered.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -81,7 +81,7 @@ public:
virtual bool eof_reached() const;
virtual uint8_t get_8() const;
- virtual int get_buffer(uint8_t *p_dst, int p_length) const; ///< get an array of bytes
+ virtual int get_buffer(uint8_t *p_dest, int p_length) const; ///< get an array of bytes
virtual bool is_open() const;
diff --git a/core/io/file_access_buffered_fa.h b/core/io/file_access_buffered_fa.h
index 362589adf1..9e41834561 100644
--- a/core/io/file_access_buffered_fa.h
+++ b/core/io/file_access_buffered_fa.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_compressed.cpp b/core/io/file_access_compressed.cpp
index 4e802579c6..70430ca5d3 100644
--- a/core/io/file_access_compressed.cpp
+++ b/core/io/file_access_compressed.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,16 +43,16 @@ void FileAccessCompressed::configure(const String &p_magic, Compression::Mode p_
block_size = p_block_size;
}
-#define WRITE_FIT(m_bytes) \
- { \
- if (write_pos + (m_bytes) > write_max) { \
- write_max = write_pos + (m_bytes); \
- } \
- if (write_max > write_buffer_size) { \
- write_buffer_size = nearest_power_of_2(write_max); \
- buffer.resize(write_buffer_size); \
- write_ptr = buffer.ptr(); \
- } \
+#define WRITE_FIT(m_bytes) \
+ { \
+ if (write_pos + (m_bytes) > write_max) { \
+ write_max = write_pos + (m_bytes); \
+ } \
+ if (write_max > write_buffer_size) { \
+ write_buffer_size = next_power_of_2(write_max); \
+ buffer.resize(write_buffer_size); \
+ write_ptr = buffer.ptr(); \
+ } \
}
Error FileAccessCompressed::open_after_magic(FileAccess *p_base) {
@@ -368,7 +368,6 @@ FileAccessCompressed::FileAccessCompressed() {
f = NULL;
magic = "GCMP";
- block_size = 16384;
cmode = Compression::MODE_ZSTD;
writing = false;
write_ptr = 0;
diff --git a/core/io/file_access_compressed.h b/core/io/file_access_compressed.h
index 340c298a0f..2fe1428752 100644
--- a/core/io/file_access_compressed.h
+++ b/core/io/file_access_compressed.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp
index f2b33a01bb..cf82d04ac5 100644
--- a/core/io/file_access_encrypted.cpp
+++ b/core/io/file_access_encrypted.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_encrypted.h b/core/io/file_access_encrypted.h
index 2bd3c52661..3df2806a7a 100644
--- a/core/io/file_access_encrypted.h
+++ b/core/io/file_access_encrypted.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_memory.cpp b/core/io/file_access_memory.cpp
index 8e719568e5..5b186b7798 100644
--- a/core/io/file_access_memory.cpp
+++ b/core/io/file_access_memory.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_memory.h b/core/io/file_access_memory.h
index 8b6abe7e81..7feb16461b 100644
--- a/core/io/file_access_memory.h
+++ b/core/io/file_access_memory.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -62,7 +62,7 @@ public:
virtual Error get_error() const; ///< get last error
- virtual void store_8(uint8_t p_dest); ///< store a byte
+ virtual void store_8(uint8_t p_byte); ///< store a byte
virtual void store_buffer(const uint8_t *p_src, int p_length); ///< store an array of bytes
virtual bool file_exists(const String &p_name); ///< return true if a file exists
diff --git a/core/io/file_access_network.cpp b/core/io/file_access_network.cpp
index aa67479d7e..be31076557 100644
--- a/core/io/file_access_network.cpp
+++ b/core/io/file_access_network.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_network.h b/core/io/file_access_network.h
index 1e85756122..d6010cdbac 100644
--- a/core/io/file_access_network.h
+++ b/core/io/file_access_network.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_pack.cpp b/core/io/file_access_pack.cpp
index c3bcfc840b..e36ff28220 100644
--- a/core/io/file_access_pack.cpp
+++ b/core/io/file_access_pack.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h
index 25473131d6..758e9afa8e 100644
--- a/core/io/file_access_pack.h
+++ b/core/io/file_access_pack.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/file_access_zip.cpp b/core/io/file_access_zip.cpp
index a92014000d..8c99ef2983 100644
--- a/core/io/file_access_zip.cpp
+++ b/core/io/file_access_zip.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -159,15 +159,15 @@ unzFile ZipArchive::get_file_handle(String p_file) const {
return pkg;
};
-bool ZipArchive::try_open_pack(const String &p_name) {
+bool ZipArchive::try_open_pack(const String &p_path) {
//printf("opening zip pack %ls, %i, %i\n", p_name.c_str(), p_name.extension().nocasecmp_to("zip"), p_name.extension().nocasecmp_to("pcz"));
- if (p_name.get_extension().nocasecmp_to("zip") != 0 && p_name.get_extension().nocasecmp_to("pcz") != 0)
+ if (p_path.get_extension().nocasecmp_to("zip") != 0 && p_path.get_extension().nocasecmp_to("pcz") != 0)
return false;
zlib_filefunc_def io;
- FileAccess *f = FileAccess::open(p_name, FileAccess::READ);
+ FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
if (!f)
return false;
io.opaque = f;
@@ -180,7 +180,7 @@ bool ZipArchive::try_open_pack(const String &p_name) {
io.zclose_file = godot_close;
io.zerror_file = godot_testerror;
- unzFile zfile = unzOpen2(p_name.utf8().get_data(), &io);
+ unzFile zfile = unzOpen2(p_path.utf8().get_data(), &io);
ERR_FAIL_COND_V(!zfile, false);
unz_global_info64 gi;
@@ -188,7 +188,7 @@ bool ZipArchive::try_open_pack(const String &p_name) {
ERR_FAIL_COND_V(err != UNZ_OK, false);
Package pkg;
- pkg.filename = p_name;
+ pkg.filename = p_path;
pkg.zfile = zfile;
packages.push_back(pkg);
int pkg_num = packages.size() - 1;
@@ -209,7 +209,7 @@ bool ZipArchive::try_open_pack(const String &p_name) {
files[fname] = f;
uint8_t md5[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- PackedData::get_singleton()->add_path(p_name, fname, 1, 0, md5, this);
+ PackedData::get_singleton()->add_path(p_path, fname, 1, 0, md5, this);
//printf("packed data add path %ls, %ls\n", p_name.c_str(), fname.c_str());
if ((i + 1) < gi.number_entry) {
diff --git a/core/io/file_access_zip.h b/core/io/file_access_zip.h
index c9cc2dac79..2a8ec3fca5 100644
--- a/core/io/file_access_zip.h
+++ b/core/io/file_access_zip.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp
index 4d5b88cfa1..dd56db9bf9 100644
--- a/core/io/http_client.cpp
+++ b/core/io/http_client.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -650,84 +650,84 @@ void HTTPClient::_bind_methods() {
ClassDB::bind_method(D_METHOD("query_string_from_dict", "fields"), &HTTPClient::query_string_from_dict);
- BIND_CONSTANT(METHOD_GET);
- BIND_CONSTANT(METHOD_HEAD);
- BIND_CONSTANT(METHOD_POST);
- BIND_CONSTANT(METHOD_PUT);
- BIND_CONSTANT(METHOD_DELETE);
- BIND_CONSTANT(METHOD_OPTIONS);
- BIND_CONSTANT(METHOD_TRACE);
- BIND_CONSTANT(METHOD_CONNECT);
- BIND_CONSTANT(METHOD_MAX);
-
- BIND_CONSTANT(STATUS_DISCONNECTED);
- BIND_CONSTANT(STATUS_RESOLVING); //resolving hostname (if passed a hostname)
- BIND_CONSTANT(STATUS_CANT_RESOLVE);
- BIND_CONSTANT(STATUS_CONNECTING); //connecting to ip
- BIND_CONSTANT(STATUS_CANT_CONNECT);
- BIND_CONSTANT(STATUS_CONNECTED); //connected ); requests only accepted here
- BIND_CONSTANT(STATUS_REQUESTING); // request in progress
- BIND_CONSTANT(STATUS_BODY); // request resulted in body ); which must be read
- BIND_CONSTANT(STATUS_CONNECTION_ERROR);
- BIND_CONSTANT(STATUS_SSL_HANDSHAKE_ERROR);
-
- BIND_CONSTANT(RESPONSE_CONTINUE);
- BIND_CONSTANT(RESPONSE_SWITCHING_PROTOCOLS);
- BIND_CONSTANT(RESPONSE_PROCESSING);
+ BIND_ENUM_CONSTANT(METHOD_GET);
+ BIND_ENUM_CONSTANT(METHOD_HEAD);
+ BIND_ENUM_CONSTANT(METHOD_POST);
+ BIND_ENUM_CONSTANT(METHOD_PUT);
+ BIND_ENUM_CONSTANT(METHOD_DELETE);
+ BIND_ENUM_CONSTANT(METHOD_OPTIONS);
+ BIND_ENUM_CONSTANT(METHOD_TRACE);
+ BIND_ENUM_CONSTANT(METHOD_CONNECT);
+ BIND_ENUM_CONSTANT(METHOD_MAX);
+
+ BIND_ENUM_CONSTANT(STATUS_DISCONNECTED);
+ BIND_ENUM_CONSTANT(STATUS_RESOLVING); //resolving hostname (if passed a hostname)
+ BIND_ENUM_CONSTANT(STATUS_CANT_RESOLVE);
+ BIND_ENUM_CONSTANT(STATUS_CONNECTING); //connecting to ip
+ BIND_ENUM_CONSTANT(STATUS_CANT_CONNECT);
+ BIND_ENUM_CONSTANT(STATUS_CONNECTED); //connected ); requests only accepted here
+ BIND_ENUM_CONSTANT(STATUS_REQUESTING); // request in progress
+ BIND_ENUM_CONSTANT(STATUS_BODY); // request resulted in body ); which must be read
+ BIND_ENUM_CONSTANT(STATUS_CONNECTION_ERROR);
+ BIND_ENUM_CONSTANT(STATUS_SSL_HANDSHAKE_ERROR);
+
+ BIND_ENUM_CONSTANT(RESPONSE_CONTINUE);
+ BIND_ENUM_CONSTANT(RESPONSE_SWITCHING_PROTOCOLS);
+ BIND_ENUM_CONSTANT(RESPONSE_PROCESSING);
// 2xx successful
- BIND_CONSTANT(RESPONSE_OK);
- BIND_CONSTANT(RESPONSE_CREATED);
- BIND_CONSTANT(RESPONSE_ACCEPTED);
- BIND_CONSTANT(RESPONSE_NON_AUTHORITATIVE_INFORMATION);
- BIND_CONSTANT(RESPONSE_NO_CONTENT);
- BIND_CONSTANT(RESPONSE_RESET_CONTENT);
- BIND_CONSTANT(RESPONSE_PARTIAL_CONTENT);
- BIND_CONSTANT(RESPONSE_MULTI_STATUS);
- BIND_CONSTANT(RESPONSE_IM_USED);
+ BIND_ENUM_CONSTANT(RESPONSE_OK);
+ BIND_ENUM_CONSTANT(RESPONSE_CREATED);
+ BIND_ENUM_CONSTANT(RESPONSE_ACCEPTED);
+ BIND_ENUM_CONSTANT(RESPONSE_NON_AUTHORITATIVE_INFORMATION);
+ BIND_ENUM_CONSTANT(RESPONSE_NO_CONTENT);
+ BIND_ENUM_CONSTANT(RESPONSE_RESET_CONTENT);
+ BIND_ENUM_CONSTANT(RESPONSE_PARTIAL_CONTENT);
+ BIND_ENUM_CONSTANT(RESPONSE_MULTI_STATUS);
+ BIND_ENUM_CONSTANT(RESPONSE_IM_USED);
// 3xx redirection
- BIND_CONSTANT(RESPONSE_MULTIPLE_CHOICES);
- BIND_CONSTANT(RESPONSE_MOVED_PERMANENTLY);
- BIND_CONSTANT(RESPONSE_FOUND);
- BIND_CONSTANT(RESPONSE_SEE_OTHER);
- BIND_CONSTANT(RESPONSE_NOT_MODIFIED);
- BIND_CONSTANT(RESPONSE_USE_PROXY);
- BIND_CONSTANT(RESPONSE_TEMPORARY_REDIRECT);
+ BIND_ENUM_CONSTANT(RESPONSE_MULTIPLE_CHOICES);
+ BIND_ENUM_CONSTANT(RESPONSE_MOVED_PERMANENTLY);
+ BIND_ENUM_CONSTANT(RESPONSE_FOUND);
+ BIND_ENUM_CONSTANT(RESPONSE_SEE_OTHER);
+ BIND_ENUM_CONSTANT(RESPONSE_NOT_MODIFIED);
+ BIND_ENUM_CONSTANT(RESPONSE_USE_PROXY);
+ BIND_ENUM_CONSTANT(RESPONSE_TEMPORARY_REDIRECT);
// 4xx client error
- BIND_CONSTANT(RESPONSE_BAD_REQUEST);
- BIND_CONSTANT(RESPONSE_UNAUTHORIZED);
- BIND_CONSTANT(RESPONSE_PAYMENT_REQUIRED);
- BIND_CONSTANT(RESPONSE_FORBIDDEN);
- BIND_CONSTANT(RESPONSE_NOT_FOUND);
- BIND_CONSTANT(RESPONSE_METHOD_NOT_ALLOWED);
- BIND_CONSTANT(RESPONSE_NOT_ACCEPTABLE);
- BIND_CONSTANT(RESPONSE_PROXY_AUTHENTICATION_REQUIRED);
- BIND_CONSTANT(RESPONSE_REQUEST_TIMEOUT);
- BIND_CONSTANT(RESPONSE_CONFLICT);
- BIND_CONSTANT(RESPONSE_GONE);
- BIND_CONSTANT(RESPONSE_LENGTH_REQUIRED);
- BIND_CONSTANT(RESPONSE_PRECONDITION_FAILED);
- BIND_CONSTANT(RESPONSE_REQUEST_ENTITY_TOO_LARGE);
- BIND_CONSTANT(RESPONSE_REQUEST_URI_TOO_LONG);
- BIND_CONSTANT(RESPONSE_UNSUPPORTED_MEDIA_TYPE);
- BIND_CONSTANT(RESPONSE_REQUESTED_RANGE_NOT_SATISFIABLE);
- BIND_CONSTANT(RESPONSE_EXPECTATION_FAILED);
- BIND_CONSTANT(RESPONSE_UNPROCESSABLE_ENTITY);
- BIND_CONSTANT(RESPONSE_LOCKED);
- BIND_CONSTANT(RESPONSE_FAILED_DEPENDENCY);
- BIND_CONSTANT(RESPONSE_UPGRADE_REQUIRED);
+ BIND_ENUM_CONSTANT(RESPONSE_BAD_REQUEST);
+ BIND_ENUM_CONSTANT(RESPONSE_UNAUTHORIZED);
+ BIND_ENUM_CONSTANT(RESPONSE_PAYMENT_REQUIRED);
+ BIND_ENUM_CONSTANT(RESPONSE_FORBIDDEN);
+ BIND_ENUM_CONSTANT(RESPONSE_NOT_FOUND);
+ BIND_ENUM_CONSTANT(RESPONSE_METHOD_NOT_ALLOWED);
+ BIND_ENUM_CONSTANT(RESPONSE_NOT_ACCEPTABLE);
+ BIND_ENUM_CONSTANT(RESPONSE_PROXY_AUTHENTICATION_REQUIRED);
+ BIND_ENUM_CONSTANT(RESPONSE_REQUEST_TIMEOUT);
+ BIND_ENUM_CONSTANT(RESPONSE_CONFLICT);
+ BIND_ENUM_CONSTANT(RESPONSE_GONE);
+ BIND_ENUM_CONSTANT(RESPONSE_LENGTH_REQUIRED);
+ BIND_ENUM_CONSTANT(RESPONSE_PRECONDITION_FAILED);
+ BIND_ENUM_CONSTANT(RESPONSE_REQUEST_ENTITY_TOO_LARGE);
+ BIND_ENUM_CONSTANT(RESPONSE_REQUEST_URI_TOO_LONG);
+ BIND_ENUM_CONSTANT(RESPONSE_UNSUPPORTED_MEDIA_TYPE);
+ BIND_ENUM_CONSTANT(RESPONSE_REQUESTED_RANGE_NOT_SATISFIABLE);
+ BIND_ENUM_CONSTANT(RESPONSE_EXPECTATION_FAILED);
+ BIND_ENUM_CONSTANT(RESPONSE_UNPROCESSABLE_ENTITY);
+ BIND_ENUM_CONSTANT(RESPONSE_LOCKED);
+ BIND_ENUM_CONSTANT(RESPONSE_FAILED_DEPENDENCY);
+ BIND_ENUM_CONSTANT(RESPONSE_UPGRADE_REQUIRED);
// 5xx server error
- BIND_CONSTANT(RESPONSE_INTERNAL_SERVER_ERROR);
- BIND_CONSTANT(RESPONSE_NOT_IMPLEMENTED);
- BIND_CONSTANT(RESPONSE_BAD_GATEWAY);
- BIND_CONSTANT(RESPONSE_SERVICE_UNAVAILABLE);
- BIND_CONSTANT(RESPONSE_GATEWAY_TIMEOUT);
- BIND_CONSTANT(RESPONSE_HTTP_VERSION_NOT_SUPPORTED);
- BIND_CONSTANT(RESPONSE_INSUFFICIENT_STORAGE);
- BIND_CONSTANT(RESPONSE_NOT_EXTENDED);
+ BIND_ENUM_CONSTANT(RESPONSE_INTERNAL_SERVER_ERROR);
+ BIND_ENUM_CONSTANT(RESPONSE_NOT_IMPLEMENTED);
+ BIND_ENUM_CONSTANT(RESPONSE_BAD_GATEWAY);
+ BIND_ENUM_CONSTANT(RESPONSE_SERVICE_UNAVAILABLE);
+ BIND_ENUM_CONSTANT(RESPONSE_GATEWAY_TIMEOUT);
+ BIND_ENUM_CONSTANT(RESPONSE_HTTP_VERSION_NOT_SUPPORTED);
+ BIND_ENUM_CONSTANT(RESPONSE_INSUFFICIENT_STORAGE);
+ BIND_ENUM_CONSTANT(RESPONSE_NOT_EXTENDED);
}
void HTTPClient::set_read_chunk_size(int p_size) {
diff --git a/core/io/http_client.h b/core/io/http_client.h
index 3cee1e0c6b..023370ae81 100644
--- a/core/io/http_client.h
+++ b/core/io/http_client.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -197,6 +197,7 @@ public:
~HTTPClient();
};
+VARIANT_ENUM_CAST(HTTPClient::ResponseCode)
VARIANT_ENUM_CAST(HTTPClient::Method);
VARIANT_ENUM_CAST(HTTPClient::Status);
diff --git a/core/io/image_loader.cpp b/core/io/image_loader.cpp
index 23719940be..637b95ccf8 100644
--- a/core/io/image_loader.cpp
+++ b/core/io/image_loader.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,7 +43,7 @@ bool ImageFormatLoader::recognize(const String &p_extension) const {
return false;
}
-Error ImageLoader::load_image(String p_file, Ref<Image> p_image, FileAccess *p_custom, bool p_force_linear) {
+Error ImageLoader::load_image(String p_file, Ref<Image> p_image, FileAccess *p_custom, bool p_force_linear, float p_scale) {
ERR_FAIL_COND_V(p_image.is_null(), ERR_INVALID_PARAMETER);
FileAccess *f = p_custom;
@@ -62,7 +62,7 @@ Error ImageLoader::load_image(String p_file, Ref<Image> p_image, FileAccess *p_c
if (!loader[i]->recognize(extension))
continue;
- Error err = loader[i]->load_image(p_image, f, p_force_linear);
+ Error err = loader[i]->load_image(p_image, f, p_force_linear, p_scale);
if (err != ERR_FILE_UNRECOGNIZED) {
diff --git a/core/io/image_loader.h b/core/io/image_loader.h
index e528d1423b..17a89603fa 100644
--- a/core/io/image_loader.h
+++ b/core/io/image_loader.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -56,7 +56,7 @@ class ImageFormatLoader {
friend class ImageLoader;
protected:
- virtual Error load_image(Ref<Image> p_image, FileAccess *p_fileaccess, bool p_force_linear) = 0;
+ virtual Error load_image(Ref<Image> p_image, FileAccess *p_fileaccess, bool p_force_linear, float p_scale) = 0;
virtual void get_recognized_extensions(List<String> *p_extensions) const = 0;
bool recognize(const String &p_extension) const;
@@ -75,7 +75,7 @@ class ImageLoader {
protected:
public:
- static Error load_image(String p_file, Ref<Image> p_image, FileAccess *p_custom = NULL, bool p_force_linear = false);
+ static Error load_image(String p_file, Ref<Image> p_image, FileAccess *p_custom = NULL, bool p_force_linear = false, float p_scale = 1.0);
static void get_recognized_extensions(List<String> *p_extensions);
static bool recognize(const String &p_extension);
diff --git a/core/io/ip.cpp b/core/io/ip.cpp
index c869bdad9b..60a44b2128 100644
--- a/core/io/ip.cpp
+++ b/core/io/ip.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -242,18 +242,18 @@ void IP::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_local_addresses"), &IP::_get_local_addresses);
ClassDB::bind_method(D_METHOD("clear_cache", "hostname"), &IP::clear_cache, DEFVAL(""));
- BIND_CONSTANT(RESOLVER_STATUS_NONE);
- BIND_CONSTANT(RESOLVER_STATUS_WAITING);
- BIND_CONSTANT(RESOLVER_STATUS_DONE);
- BIND_CONSTANT(RESOLVER_STATUS_ERROR);
+ BIND_ENUM_CONSTANT(RESOLVER_STATUS_NONE);
+ BIND_ENUM_CONSTANT(RESOLVER_STATUS_WAITING);
+ BIND_ENUM_CONSTANT(RESOLVER_STATUS_DONE);
+ BIND_ENUM_CONSTANT(RESOLVER_STATUS_ERROR);
BIND_CONSTANT(RESOLVER_MAX_QUERIES);
BIND_CONSTANT(RESOLVER_INVALID_ID);
- BIND_CONSTANT(TYPE_NONE);
- BIND_CONSTANT(TYPE_IPV4);
- BIND_CONSTANT(TYPE_IPV6);
- BIND_CONSTANT(TYPE_ANY);
+ BIND_ENUM_CONSTANT(TYPE_NONE);
+ BIND_ENUM_CONSTANT(TYPE_IPV4);
+ BIND_ENUM_CONSTANT(TYPE_IPV6);
+ BIND_ENUM_CONSTANT(TYPE_ANY);
}
IP *IP::singleton = NULL;
diff --git a/core/io/ip.h b/core/io/ip.h
index 66a4a48da2..04c6811792 100644
--- a/core/io/ip.h
+++ b/core/io/ip.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/ip_address.cpp b/core/io/ip_address.cpp
index ea3041945c..da74f6c116 100644
--- a/core/io/ip_address.cpp
+++ b/core/io/ip_address.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/ip_address.h b/core/io/ip_address.h
index ac58283605..205efd9a0e 100644
--- a/core/io/ip_address.h
+++ b/core/io/ip_address.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,7 +75,7 @@ public:
void set_ipv4(const uint8_t *p_ip);
const uint8_t *get_ipv6() const;
- void set_ipv6(const uint8_t *buf);
+ void set_ipv6(const uint8_t *p_buf);
operator String() const;
IP_Address(const String &p_string);
diff --git a/core/io/json.cpp b/core/io/json.cpp
index 10fd60abf7..2e9170bc34 100644
--- a/core/io/json.cpp
+++ b/core/io/json.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -94,15 +94,15 @@ String JSON::print(const Variant &p_var) {
return _print_var(p_var);
}
-Error JSON::_get_token(const CharType *p_str, int &idx, int p_len, Token &r_token, int &line, String &r_err_str) {
+Error JSON::_get_token(const CharType *p_str, int &index, int p_len, Token &r_token, int &line, String &r_err_str) {
while (p_len > 0) {
- switch (p_str[idx]) {
+ switch (p_str[index]) {
case '\n': {
line++;
- idx++;
+ index++;
break;
};
case 0: {
@@ -112,54 +112,54 @@ Error JSON::_get_token(const CharType *p_str, int &idx, int p_len, Token &r_toke
case '{': {
r_token.type = TK_CURLY_BRACKET_OPEN;
- idx++;
+ index++;
return OK;
};
case '}': {
r_token.type = TK_CURLY_BRACKET_CLOSE;
- idx++;
+ index++;
return OK;
};
case '[': {
r_token.type = TK_BRACKET_OPEN;
- idx++;
+ index++;
return OK;
};
case ']': {
r_token.type = TK_BRACKET_CLOSE;
- idx++;
+ index++;
return OK;
};
case ':': {
r_token.type = TK_COLON;
- idx++;
+ index++;
return OK;
};
case ',': {
r_token.type = TK_COMMA;
- idx++;
+ index++;
return OK;
};
case '"': {
- idx++;
+ index++;
String str;
while (true) {
- if (p_str[idx] == 0) {
+ if (p_str[index] == 0) {
r_err_str = "Unterminated String";
return ERR_PARSE_ERROR;
- } else if (p_str[idx] == '"') {
- idx++;
+ } else if (p_str[index] == '"') {
+ index++;
break;
- } else if (p_str[idx] == '\\') {
+ } else if (p_str[index] == '\\') {
//escaped characters...
- idx++;
- CharType next = p_str[idx];
+ index++;
+ CharType next = p_str[index];
if (next == 0) {
r_err_str = "Unterminated String";
return ERR_PARSE_ERROR;
@@ -177,7 +177,7 @@ Error JSON::_get_token(const CharType *p_str, int &idx, int p_len, Token &r_toke
//hexnumbarh - oct is deprecated
for (int j = 0; j < 4; j++) {
- CharType c = p_str[idx + j + 1];
+ CharType c = p_str[index + j + 1];
if (c == 0) {
r_err_str = "Unterminated String";
return ERR_PARSE_ERROR;
@@ -204,7 +204,7 @@ Error JSON::_get_token(const CharType *p_str, int &idx, int p_len, Token &r_toke
res <<= 4;
res |= v;
}
- idx += 4; //will add at the end anyway
+ index += 4; //will add at the end anyway
} break;
//case '\"': res='\"'; break;
@@ -220,11 +220,11 @@ Error JSON::_get_token(const CharType *p_str, int &idx, int p_len, Token &r_toke
str += res;
} else {
- if (p_str[idx] == '\n')
+ if (p_str[index] == '\n')
line++;
- str += p_str[idx];
+ str += p_str[index];
}
- idx++;
+ index++;
}
r_token.type = TK_STRING;
@@ -234,28 +234,28 @@ Error JSON::_get_token(const CharType *p_str, int &idx, int p_len, Token &r_toke
} break;
default: {
- if (p_str[idx] <= 32) {
- idx++;
+ if (p_str[index] <= 32) {
+ index++;
break;
}
- if (p_str[idx] == '-' || (p_str[idx] >= '0' && p_str[idx] <= '9')) {
+ if (p_str[index] == '-' || (p_str[index] >= '0' && p_str[index] <= '9')) {
//a number
const CharType *rptr;
- double number = String::to_double(&p_str[idx], &rptr);
- idx += (rptr - &p_str[idx]);
+ double number = String::to_double(&p_str[index], &rptr);
+ index += (rptr - &p_str[index]);
r_token.type = TK_NUMBER;
r_token.value = number;
return OK;
- } else if ((p_str[idx] >= 'A' && p_str[idx] <= 'Z') || (p_str[idx] >= 'a' && p_str[idx] <= 'z')) {
+ } else if ((p_str[index] >= 'A' && p_str[index] <= 'Z') || (p_str[index] >= 'a' && p_str[index] <= 'z')) {
String id;
- while ((p_str[idx] >= 'A' && p_str[idx] <= 'Z') || (p_str[idx] >= 'a' && p_str[idx] <= 'z')) {
+ while ((p_str[index] >= 'A' && p_str[index] <= 'Z') || (p_str[index] >= 'a' && p_str[index] <= 'z')) {
- id += p_str[idx];
- idx++;
+ id += p_str[index];
+ index++;
}
r_token.type = TK_IDENTIFIER;
diff --git a/core/io/json.h b/core/io/json.h
index 75df15a077..893a88e264 100644
--- a/core/io/json.h
+++ b/core/io/json.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp
index 8eb40b61d7..af7db904e9 100644
--- a/core/io/marshalls.cpp
+++ b/core/io/marshalls.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,8 +33,28 @@
#include "reference.h"
#include <stdio.h>
+void EncodedObjectAsID::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_object_id", "id"), &EncodedObjectAsID::set_object_id);
+ ClassDB::bind_method(D_METHOD("get_object_id"), &EncodedObjectAsID::get_object_id);
+}
+
+void EncodedObjectAsID::set_object_id(ObjectID p_id) {
+ id = p_id;
+}
+
+ObjectID EncodedObjectAsID::get_object_id() const {
+
+ return id;
+}
+
+EncodedObjectAsID::EncodedObjectAsID() {
+
+ id = 0;
+}
+
#define ENCODE_MASK 0xFF
#define ENCODE_FLAG_64 1 << 16
+#define ENCODE_FLAG_OBJECT_AS_ID 1 << 16
static Error _decode_string(const uint8_t *&buf, int &len, int *r_len, String &r_string) {
ERR_FAIL_COND_V(len < 4, ERR_INVALID_DATA);
@@ -381,56 +401,74 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
} break;
case Variant::OBJECT: {
- ERR_FAIL_COND_V(!p_allow_objects, ERR_UNAUTHORIZED);
-
- String str;
- Error err = _decode_string(buf, len, r_len, str);
- if (err)
- return err;
+ if (type & ENCODE_FLAG_OBJECT_AS_ID) {
+ //this _is_ allowed
+ ObjectID val = decode_uint64(buf);
+ if (r_len)
+ (*r_len) += 8;
- if (str == String()) {
- r_variant = (Object *)NULL;
- } else {
+ if (val == 0) {
+ r_variant = (Object *)NULL;
+ } else {
+ Ref<EncodedObjectAsID> obj_as_id;
+ obj_as_id.instance();
+ obj_as_id->set_object_id(val);
- Object *obj = ClassDB::instance(str);
+ r_variant = obj_as_id;
+ }
- ERR_FAIL_COND_V(!obj, ERR_UNAVAILABLE);
- ERR_FAIL_COND_V(len < 4, ERR_INVALID_DATA);
+ } else {
+ ERR_FAIL_COND_V(!p_allow_objects, ERR_UNAUTHORIZED);
- int32_t count = decode_uint32(buf);
- buf += 4;
- len -= 4;
- if (r_len) {
- (*r_len) += 4;
- }
+ String str;
+ Error err = _decode_string(buf, len, r_len, str);
+ if (err)
+ return err;
- for (int i = 0; i < count; i++) {
+ if (str == String()) {
+ r_variant = (Object *)NULL;
+ } else {
- str = String();
- err = _decode_string(buf, len, r_len, str);
- if (err)
- return err;
+ Object *obj = ClassDB::instance(str);
- Variant value;
- int used;
- err = decode_variant(value, buf, len, &used, p_allow_objects);
- if (err)
- return err;
+ ERR_FAIL_COND_V(!obj, ERR_UNAVAILABLE);
+ ERR_FAIL_COND_V(len < 4, ERR_INVALID_DATA);
- buf += used;
- len -= used;
+ int32_t count = decode_uint32(buf);
+ buf += 4;
+ len -= 4;
if (r_len) {
- (*r_len) += used;
+ (*r_len) += 4;
}
- obj->set(str, value);
- }
+ for (int i = 0; i < count; i++) {
- if (obj->cast_to<Reference>()) {
- REF ref = REF(obj->cast_to<Reference>());
- r_variant = ref;
- } else {
- r_variant = obj;
+ str = String();
+ err = _decode_string(buf, len, r_len, str);
+ if (err)
+ return err;
+
+ Variant value;
+ int used;
+ err = decode_variant(value, buf, len, &used, p_allow_objects);
+ if (err)
+ return err;
+
+ buf += used;
+ len -= used;
+ if (r_len) {
+ (*r_len) += used;
+ }
+
+ obj->set(str, value);
+ }
+
+ if (Object::cast_to<Reference>(obj)) {
+ REF ref = REF(Object::cast_to<Reference>(obj));
+ r_variant = ref;
+ } else {
+ r_variant = obj;
+ }
}
}
@@ -769,14 +807,19 @@ static void _encode_string(const String &p_string, uint8_t *&buf, int &r_len) {
encode_uint32(utf8.length(), buf);
buf += 4;
copymem(buf, utf8.get_data(), utf8.length());
+ buf += utf8.length();
}
r_len += 4 + utf8.length();
- while (r_len % 4)
+ while (r_len % 4) {
r_len++; //pad
+ if (buf) {
+ buf++;
+ }
+ }
}
-Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len) {
+Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_object_as_id) {
uint8_t *buf = r_buffer;
@@ -800,6 +843,11 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len) {
flags |= ENCODE_FLAG_64; //always encode real as double
}
} break;
+ case Variant::OBJECT: {
+ if (p_object_as_id) {
+ flags |= ENCODE_FLAG_OBJECT_AS_ID;
+ }
+ } break;
}
if (buf) {
@@ -1071,49 +1119,66 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len) {
} break;
case Variant::OBJECT: {
- Object *obj = p_variant;
- if (!obj) {
+ if (p_object_as_id) {
+
if (buf) {
- encode_uint32(0, buf);
- buf += 4;
- r_len += 4;
+
+ Object *obj = p_variant;
+ ObjectID id = 0;
+ if (obj && ObjectDB::instance_validate(obj)) {
+ id = obj->get_instance_id();
+ }
+
+ encode_uint64(id, buf);
}
+
+ r_len += 8;
+
} else {
- _encode_string(obj->get_class(), buf, r_len);
+ Object *obj = p_variant;
+ if (!obj) {
+ if (buf) {
+ encode_uint32(0, buf);
+ buf += 4;
+ r_len += 4;
+ }
+ } else {
+ _encode_string(obj->get_class(), buf, r_len);
- List<PropertyInfo> props;
- obj->get_property_list(&props);
+ List<PropertyInfo> props;
+ obj->get_property_list(&props);
- int pc = 0;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
+ int pc = 0;
+ for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE))
- continue;
- pc++;
- }
+ if (!(E->get().usage & PROPERTY_USAGE_STORAGE))
+ continue;
+ pc++;
+ }
- if (buf) {
- encode_uint32(pc, buf);
- buf += 4;
- }
+ if (buf) {
+ encode_uint32(pc, buf);
+ buf += 4;
+ }
- r_len += 4;
+ r_len += 4;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
+ for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE))
- continue;
+ if (!(E->get().usage & PROPERTY_USAGE_STORAGE))
+ continue;
- _encode_string(E->get().name, buf, r_len);
+ _encode_string(E->get().name, buf, r_len);
- int len;
- Error err = encode_variant(obj->get(E->get().name), buf, len);
- if (err)
- return err;
- ERR_FAIL_COND_V(len % 4, ERR_BUG);
- r_len += len;
- if (buf)
- buf += len;
+ int len;
+ Error err = encode_variant(obj->get(E->get().name), buf, len, p_object_as_id);
+ if (err)
+ return err;
+ ERR_FAIL_COND_V(len % 4, ERR_BUG);
+ r_len += len;
+ if (buf)
+ buf += len;
+ }
}
}
@@ -1147,12 +1212,12 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len) {
r_len++; //pad
*/
int len;
- encode_variant(E->get(), buf, len);
+ encode_variant(E->get(), buf, len, p_object_as_id);
ERR_FAIL_COND_V(len % 4, ERR_BUG);
r_len += len;
if (buf)
buf += len;
- encode_variant(d[E->get()], buf, len);
+ encode_variant(d[E->get()], buf, len, p_object_as_id);
ERR_FAIL_COND_V(len % 4, ERR_BUG);
r_len += len;
if (buf)
@@ -1174,7 +1239,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len) {
for (int i = 0; i < v.size(); i++) {
int len;
- encode_variant(v.get(i), buf, len);
+ encode_variant(v.get(i), buf, len, p_object_as_id);
ERR_FAIL_COND_V(len % 4, ERR_BUG);
r_len += len;
if (buf)
diff --git a/core/io/marshalls.h b/core/io/marshalls.h
index a6cc72b691..5541e52a89 100644
--- a/core/io/marshalls.h
+++ b/core/io/marshalls.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,8 +32,8 @@
#include "typedefs.h"
+#include "reference.h"
#include "variant.h"
-
/**
* Miscellaneous helpers for marshalling data types, and encoding
* in an endian independent way
@@ -183,7 +183,22 @@ static inline double decode_double(const uint8_t *p_arr) {
return md.d;
}
-Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int *r_len = NULL, bool p_allow_objects=true);
-Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len);
+class EncodedObjectAsID : public Reference {
+ GDCLASS(EncodedObjectAsID, Reference);
+
+ ObjectID id;
+
+protected:
+ static void _bind_methods();
+
+public:
+ void set_object_id(ObjectID p_id);
+ ObjectID get_object_id() const;
+
+ EncodedObjectAsID();
+};
+
+Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int *r_len = NULL, bool p_allow_objects = true);
+Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_object_as_id = false);
#endif
diff --git a/core/io/networked_multiplayer_peer.cpp b/core/io/networked_multiplayer_peer.cpp
index 105b8dce44..dea6fab350 100644
--- a/core/io/networked_multiplayer_peer.cpp
+++ b/core/io/networked_multiplayer_peer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -44,13 +44,13 @@ void NetworkedMultiplayerPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_refuse_new_connections", "enable"), &NetworkedMultiplayerPeer::set_refuse_new_connections);
ClassDB::bind_method(D_METHOD("is_refusing_new_connections"), &NetworkedMultiplayerPeer::is_refusing_new_connections);
- BIND_CONSTANT(TRANSFER_MODE_UNRELIABLE);
- BIND_CONSTANT(TRANSFER_MODE_UNRELIABLE_ORDERED);
- BIND_CONSTANT(TRANSFER_MODE_RELIABLE);
+ BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE);
+ BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE_ORDERED);
+ BIND_ENUM_CONSTANT(TRANSFER_MODE_RELIABLE);
- BIND_CONSTANT(CONNECTION_DISCONNECTED);
- BIND_CONSTANT(CONNECTION_CONNECTING);
- BIND_CONSTANT(CONNECTION_CONNECTED);
+ BIND_ENUM_CONSTANT(CONNECTION_DISCONNECTED);
+ BIND_ENUM_CONSTANT(CONNECTION_CONNECTING);
+ BIND_ENUM_CONSTANT(CONNECTION_CONNECTED);
BIND_CONSTANT(TARGET_PEER_BROADCAST);
BIND_CONSTANT(TARGET_PEER_SERVER);
diff --git a/core/io/networked_multiplayer_peer.h b/core/io/networked_multiplayer_peer.h
index bd951912f9..efaea46b84 100644
--- a/core/io/networked_multiplayer_peer.h
+++ b/core/io/networked_multiplayer_peer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp
index f62ffd7183..16c73c26e7 100644
--- a/core/io/packet_peer.cpp
+++ b/core/io/packet_peer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -92,7 +92,7 @@ Error PacketPeer::get_var(Variant &r_variant) const {
Error PacketPeer::put_var(const Variant &p_packet) {
int len;
- Error err = encode_variant(p_packet, NULL, len); // compute len first
+ Error err = encode_variant(p_packet, NULL, len, !allow_object_decoding); // compute len first
if (err)
return err;
@@ -101,7 +101,7 @@ Error PacketPeer::put_var(const Variant &p_packet) {
uint8_t *buf = (uint8_t *)alloca(len);
ERR_FAIL_COND_V(!buf, ERR_OUT_OF_MEMORY);
- err = encode_variant(p_packet, buf, len);
+ err = encode_variant(p_packet, buf, len, !allow_object_decoding);
ERR_FAIL_COND_V(err, err);
return put_packet(buf, len);
@@ -155,6 +155,8 @@ void PacketPeerStream::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stream_peer", "peer"), &PacketPeerStream::_set_stream_peer);
ClassDB::bind_method(D_METHOD("set_input_buffer_max_size", "max_size_bytes"), &PacketPeerStream::set_input_buffer_max_size);
ClassDB::bind_method(D_METHOD("set_output_buffer_max_size", "max_size_bytes"), &PacketPeerStream::set_output_buffer_max_size);
+ ClassDB::bind_method(D_METHOD("get_input_buffer_max_size"), &PacketPeerStream::get_input_buffer_max_size);
+ ClassDB::bind_method(D_METHOD("get_output_buffer_max_size"), &PacketPeerStream::get_output_buffer_max_size);
}
Error PacketPeerStream::_poll_buffer() const {
@@ -265,12 +267,22 @@ void PacketPeerStream::set_input_buffer_max_size(int p_max_size) {
ERR_EXPLAIN("Buffer in use, resizing would cause loss of data");
ERR_FAIL_COND(ring_buffer.data_left());
ring_buffer.resize(nearest_shift(p_max_size + 4));
- input_buffer.resize(nearest_power_of_2(p_max_size + 4));
+ input_buffer.resize(next_power_of_2(p_max_size + 4));
+}
+
+int PacketPeerStream::get_input_buffer_max_size() const {
+
+ return input_buffer.size() - 4;
}
void PacketPeerStream::set_output_buffer_max_size(int p_max_size) {
- output_buffer.resize(nearest_power_of_2(p_max_size + 4));
+ output_buffer.resize(next_power_of_2(p_max_size + 4));
+}
+
+int PacketPeerStream::get_output_buffer_max_size() const {
+
+ return output_buffer.size() - 4;
}
PacketPeerStream::PacketPeerStream() {
diff --git a/core/io/packet_peer.h b/core/io/packet_peer.h
index 3bd6876aa7..b08d44ad8a 100644
--- a/core/io/packet_peer.h
+++ b/core/io/packet_peer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -98,7 +98,9 @@ public:
void set_stream_peer(const Ref<StreamPeer> &p_peer);
void set_input_buffer_max_size(int p_max_size);
+ int get_input_buffer_max_size() const;
void set_output_buffer_max_size(int p_max_size);
+ int get_output_buffer_max_size() const;
PacketPeerStream();
};
diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp
index d1729819a8..2773d2a5a3 100644
--- a/core/io/packet_peer_udp.cpp
+++ b/core/io/packet_peer_udp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/packet_peer_udp.h b/core/io/packet_peer_udp.h
index a39eb6bcfd..5a2b54774f 100644
--- a/core/io/packet_peer_udp.h
+++ b/core/io/packet_peer_udp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -49,7 +49,7 @@ protected:
public:
void set_blocking_mode(bool p_enable);
- virtual Error listen(int p_port, IP_Address p_bind_address = IP_Address("*"), int p_recv_buffer_size = 65536) = 0;
+ virtual Error listen(int p_port, const IP_Address &p_bind_address = IP_Address("*"), int p_recv_buffer_size = 65536) = 0;
virtual void close() = 0;
virtual Error wait() = 0;
virtual bool is_listening() const = 0;
diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp
index 28382ab419..f1f5b6f538 100644
--- a/core/io/pck_packer.cpp
+++ b/core/io/pck_packer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/pck_packer.h b/core/io/pck_packer.h
index ddfa093a6b..c0a6acd859 100644
--- a/core/io/pck_packer.h
+++ b/core/io/pck_packer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index fd8928b8a0..965d11e414 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,12 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "resource_format_binary.h"
-#include "image.h"
-#include "io/file_access_compressed.h"
-#include "io/marshalls.h"
-#include "os/dir_access.h"
-#include "project_settings.h"
-#include "version.h"
+
+#include "core/image.h"
+#include "core/io/file_access_compressed.h"
+#include "core/io/marshalls.h"
+#include "core/os/dir_access.h"
+#include "core/project_settings.h"
+#include "core/version.h"
+
//#define print_bl(m_what) print_line(m_what)
#define print_bl(m_what)
@@ -713,7 +715,7 @@ Error ResourceInteractiveLoaderBinary::poll() {
}
ERR_FAIL_COND_V(!obj, ERR_FILE_CORRUPT);
- Resource *r = obj->cast_to<Resource>();
+ Resource *r = Object::cast_to<Resource>(obj);
if (!r) {
error = ERR_FILE_CORRUPT;
memdelete(obj); //bye
@@ -1715,54 +1717,6 @@ void ResourceFormatSaverBinaryInstance::_find_resources(const Variant &p_variant
default: {}
}
}
-#if 0
-Error ResourceFormatSaverBinary::_save_obj(const Object *p_object,SavedObject *so) {
-
- //use classic way
- List<PropertyInfo> property_list;
- p_object->get_property_list( &property_list );
-
- for(List<PropertyInfo>::Element *E=property_list.front();E;E=E->next()) {
-
- if (skip_editor && E->get().name.begins_with("__editor"))
- continue;
- if (E->get().usage&PROPERTY_USAGE_STORAGE || (bundle_resources && E->get().usage&PROPERTY_USAGE_BUNDLE)) {
-
- SavedObject::SavedProperty sp;
- sp.name_idx=get_string_index(E->get().name);
- sp.value = p_object->get(E->get().name);
- _find_resources(sp.value);
- so->properties.push_back(sp);
- }
- }
-
- return OK;
-
-}
-
-
-
-Error ResourceFormatSaverBinary::save(const Object *p_object,const Variant &p_meta) {
-
- ERR_FAIL_COND_V(!f,ERR_UNCONFIGURED);
- ERR_EXPLAIN("write_object should supply either an object, a meta, or both");
- ERR_FAIL_COND_V(!p_object && p_meta.get_type()==Variant::NIL, ERR_INVALID_PARAMETER);
-
- SavedObject *so = memnew( SavedObject );
-
- if (p_object)
- so->type=p_object->get_type();
-
- _find_resources(p_meta);
- so->meta=p_meta;
- Error err = _save_obj(p_object,so);
- ERR_FAIL_COND_V( err, ERR_INVALID_DATA );
-
- saved_objects.push_back(so);
-
- return OK;
-}
-#endif
void ResourceFormatSaverBinaryInstance::save_unicode_string(const String &p_string) {
@@ -1798,7 +1752,6 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
}
ERR_FAIL_COND_V(err, err);
- FileAccessRef _fref(f);
relative_paths = p_flags & ResourceSaver::FLAG_RELATIVE_PATHS;
skip_editor = p_flags & ResourceSaver::FLAG_OMIT_EDITOR_PROPERTIES;
@@ -1810,7 +1763,6 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
takeover_paths = false;
local_path = p_path.get_base_dir();
- //bin_meta_idx = get_string_index("__bin_meta__"); //is often used, so create
_find_resources(p_resource, true);
@@ -1836,7 +1788,6 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
return ERR_CANT_CREATE;
}
- //f->store_32(saved_resources.size()+external_resources.size()); // load steps -not needed
save_unicode_string(p_resource->get_class());
uint64_t md_at = f->get_pos();
f->store_64(0); //offset to impoty metadata
@@ -1875,7 +1826,6 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
f->store_32(strings.size()); //string table size
for (int i = 0; i < strings.size(); i++) {
- //print_bl("saving string: "+strings[i]);
save_unicode_string(strings[i]);
}
@@ -1944,9 +1894,8 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
}
Vector<uint64_t> ofs_table;
- //int saved_idx=0;
- //now actually save the resources
+ //now actually save the resources
for (List<ResourceData>::Element *E = resources.front(); E; E = E->next()) {
ResourceData &rd = E->get();
diff --git a/core/io/resource_format_binary.h b/core/io/resource_format_binary.h
index 1c66344e3e..1bd0d333c6 100644
--- a/core/io/resource_format_binary.h
+++ b/core/io/resource_format_binary.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/resource_import.cpp b/core/io/resource_import.cpp
index 61da4f3350..69ff791a3a 100644
--- a/core/io/resource_import.cpp
+++ b/core/io/resource_import.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,13 +32,17 @@
#include "os/os.h"
#include "variant_parser.h"
-Error ResourceFormatImporter::_get_path_and_type(const String &p_path, PathAndType &r_path_and_type) const {
+Error ResourceFormatImporter::_get_path_and_type(const String &p_path, PathAndType &r_path_and_type, bool *r_valid) const {
Error err;
FileAccess *f = FileAccess::open(p_path + ".import", FileAccess::READ, &err);
- if (!f)
+ if (!f) {
+ if (r_valid) {
+ *r_valid = false;
+ }
return err;
+ }
VariantParser::StreamFile stream;
stream.f = f;
@@ -47,6 +51,10 @@ Error ResourceFormatImporter::_get_path_and_type(const String &p_path, PathAndTy
Variant value;
VariantParser::Tag next_tag;
+ if (r_valid) {
+ *r_valid = true;
+ }
+
int lines = 0;
String error_text;
bool path_found = false; //first match must have priority
@@ -79,6 +87,10 @@ Error ResourceFormatImporter::_get_path_and_type(const String &p_path, PathAndTy
path_found = true; //first match must have priority
} else if (assign == "type") {
r_path_and_type.type = value;
+ } else if (assign == "valid") {
+ if (r_valid) {
+ *r_valid = value;
+ }
}
} else if (next_tag.name != "remap") {
@@ -199,6 +211,60 @@ String ResourceFormatImporter::get_internal_resource_path(const String &p_path)
return pat.path;
}
+void ResourceFormatImporter::get_internal_resource_path_list(const String &p_path, List<String> *r_paths) {
+
+ Error err;
+ FileAccess *f = FileAccess::open(p_path + ".import", FileAccess::READ, &err);
+
+ if (!f)
+ return;
+
+ VariantParser::StreamFile stream;
+ stream.f = f;
+
+ String assign;
+ Variant value;
+ VariantParser::Tag next_tag;
+
+ int lines = 0;
+ String error_text;
+ while (true) {
+
+ assign = Variant();
+ next_tag.fields.clear();
+ next_tag.name = String();
+
+ err = VariantParser::parse_tag_assign_eof(&stream, lines, error_text, next_tag, assign, value, NULL, true);
+ if (err == ERR_FILE_EOF) {
+ memdelete(f);
+ return;
+ } else if (err != OK) {
+ ERR_PRINTS("ResourceFormatImporter::get_internal_resource_path_list - " + p_path + ".import:" + itos(lines) + " error: " + error_text);
+ memdelete(f);
+ return;
+ }
+
+ if (assign != String()) {
+ if (assign.begins_with("path.")) {
+ r_paths->push_back(value);
+ } else if (assign == "path") {
+ r_paths->push_back(value);
+ }
+ } else if (next_tag.name != "remap") {
+ break;
+ }
+ }
+ memdelete(f);
+}
+
+bool ResourceFormatImporter::is_import_valid(const String &p_path) const {
+
+ bool valid = true;
+ PathAndType pat;
+ _get_path_and_type(p_path, pat, &valid);
+ return valid;
+}
+
String ResourceFormatImporter::get_resource_type(const String &p_path) const {
PathAndType pat;
diff --git a/core/io/resource_import.h b/core/io/resource_import.h
index d3f98cbc07..b10255fbab 100644
--- a/core/io/resource_import.h
+++ b/core/io/resource_import.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,7 +40,7 @@ class ResourceFormatImporter : public ResourceFormatLoader {
String type;
};
- Error _get_path_and_type(const String &p_path, PathAndType &r_path_and_type) const;
+ Error _get_path_and_type(const String &p_path, PathAndType &r_path_and_type, bool *r_valid = NULL) const;
static ResourceFormatImporter *singleton;
@@ -54,11 +54,13 @@ public:
virtual bool recognize_path(const String &p_path, const String &p_for_type = String()) const;
virtual bool handles_type(const String &p_type) const;
virtual String get_resource_type(const String &p_path) const;
+ virtual bool is_import_valid(const String &p_path) const;
virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
virtual bool can_be_imported(const String &p_path) const;
String get_internal_resource_path(const String &p_path) const;
+ void get_internal_resource_path_list(const String &p_path, List<String> *r_paths);
void add_importer(const Ref<ResourceImporter> &p_importer) { importers.insert(p_importer); }
void remove_importer(const Ref<ResourceImporter> &p_importer) { importers.erase(p_importer); }
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp
index 5347cd6ee1..30ae9f5681 100644
--- a/core/io/resource_loader.cpp
+++ b/core/io/resource_loader.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -296,6 +296,31 @@ void ResourceLoader::add_resource_format_loader(ResourceFormatLoader *p_format_l
}
}
+bool ResourceLoader::is_import_valid(const String &p_path) {
+
+ String path = _path_remap(p_path);
+
+ String local_path;
+ if (path.is_rel_path())
+ local_path = "res://" + path;
+ else
+ local_path = ProjectSettings::get_singleton()->localize_path(path);
+
+ for (int i = 0; i < loader_count; i++) {
+
+ if (!loader[i]->recognize_path(local_path))
+ continue;
+ /*
+ if (p_type_hint!="" && !loader[i]->handles_type(p_type_hint))
+ continue;
+ */
+
+ return loader[i]->is_import_valid(p_path);
+ }
+
+ return false; //not found
+}
+
void ResourceLoader::get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types) {
String path = _path_remap(p_path);
diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h
index e6687800d7..91f0c939bf 100644
--- a/core/io/resource_loader.h
+++ b/core/io/resource_loader.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -66,6 +66,7 @@ public:
virtual String get_resource_type(const String &p_path) const = 0;
virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
virtual Error rename_dependencies(const String &p_path, const Map<String, String> &p_map) { return OK; }
+ virtual bool is_import_valid(const String &p_path) const { return true; }
virtual ~ResourceFormatLoader() {}
};
@@ -104,6 +105,7 @@ public:
static String get_resource_type(const String &p_path);
static void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
static Error rename_dependencies(const String &p_path, const Map<String, String> &p_map);
+ static bool is_import_valid(const String &p_path);
static void set_timestamp_on_load(bool p_timestamp) { timestamp_on_load = p_timestamp; }
diff --git a/core/io/resource_saver.cpp b/core/io/resource_saver.cpp
index 314259b2e9..e6187c9e3c 100644
--- a/core/io/resource_saver.cpp
+++ b/core/io/resource_saver.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h
index f7fbcc1fb8..3fdd00133a 100644
--- a/core/io/resource_saver.h
+++ b/core/io/resource_saver.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/stream_peer.cpp b/core/io/stream_peer.cpp
index faf0700edf..1006158003 100644
--- a/core/io/stream_peer.cpp
+++ b/core/io/stream_peer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -210,7 +210,7 @@ void StreamPeer::put_double(double p_val) {
void StreamPeer::put_utf8_string(const String &p_string) {
CharString cs = p_string.utf8();
- put_u32(p_string.length());
+ put_u32(cs.length());
put_data((const uint8_t *)cs.get_data(), cs.length());
}
void StreamPeer::put_var(const Variant &p_variant) {
diff --git a/core/io/stream_peer.h b/core/io/stream_peer.h
index d0748a8c9e..1ee997c123 100644
--- a/core/io/stream_peer.h
+++ b/core/io/stream_peer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/stream_peer_ssl.cpp b/core/io/stream_peer_ssl.cpp
index ef3c264375..d1fe214343 100644
--- a/core/io/stream_peer_ssl.cpp
+++ b/core/io/stream_peer_ssl.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -55,10 +55,11 @@ void StreamPeerSSL::_bind_methods() {
ClassDB::bind_method(D_METHOD("connect_to_stream", "stream", "validate_certs", "for_hostname"), &StreamPeerSSL::connect_to_stream, DEFVAL(false), DEFVAL(String()));
ClassDB::bind_method(D_METHOD("get_status"), &StreamPeerSSL::get_status);
ClassDB::bind_method(D_METHOD("disconnect_from_stream"), &StreamPeerSSL::disconnect_from_stream);
- BIND_CONSTANT(STATUS_DISCONNECTED);
- BIND_CONSTANT(STATUS_CONNECTED);
- BIND_CONSTANT(STATUS_ERROR_NO_CERTIFICATE);
- BIND_CONSTANT(STATUS_ERROR_HOSTNAME_MISMATCH);
+
+ BIND_ENUM_CONSTANT(STATUS_DISCONNECTED);
+ BIND_ENUM_CONSTANT(STATUS_CONNECTED);
+ BIND_ENUM_CONSTANT(STATUS_ERROR_NO_CERTIFICATE);
+ BIND_ENUM_CONSTANT(STATUS_ERROR_HOSTNAME_MISMATCH);
}
StreamPeerSSL::StreamPeerSSL() {
diff --git a/core/io/stream_peer_ssl.h b/core/io/stream_peer_ssl.h
index a81ae24e4a..bcbbeb0d48 100644
--- a/core/io/stream_peer_ssl.h
+++ b/core/io/stream_peer_ssl.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp
index 5c859ea7c0..0e047a8f32 100644
--- a/core/io/stream_peer_tcp.cpp
+++ b/core/io/stream_peer_tcp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -55,10 +55,10 @@ void StreamPeerTCP::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_connected_port"), &StreamPeerTCP::get_connected_port);
ClassDB::bind_method(D_METHOD("disconnect_from_host"), &StreamPeerTCP::disconnect_from_host);
- BIND_CONSTANT(STATUS_NONE);
- BIND_CONSTANT(STATUS_CONNECTING);
- BIND_CONSTANT(STATUS_CONNECTED);
- BIND_CONSTANT(STATUS_ERROR);
+ BIND_ENUM_CONSTANT(STATUS_NONE);
+ BIND_ENUM_CONSTANT(STATUS_CONNECTING);
+ BIND_ENUM_CONSTANT(STATUS_CONNECTED);
+ BIND_ENUM_CONSTANT(STATUS_ERROR);
}
Ref<StreamPeerTCP> StreamPeerTCP::create_ref() {
diff --git a/core/io/stream_peer_tcp.h b/core/io/stream_peer_tcp.h
index 53c21a93fd..45c93c2d36 100644
--- a/core/io/stream_peer_tcp.h
+++ b/core/io/stream_peer_tcp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/tcp_server.cpp b/core/io/tcp_server.cpp
index 29a80ecc19..a4364fa17c 100644
--- a/core/io/tcp_server.cpp
+++ b/core/io/tcp_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/tcp_server.h b/core/io/tcp_server.h
index 4e7fa7cf3e..a7276401e4 100644
--- a/core/io/tcp_server.h
+++ b/core/io/tcp_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -45,7 +45,7 @@ protected:
static void _bind_methods();
public:
- virtual Error listen(uint16_t p_port, const IP_Address p_bind_address = IP_Address("*")) = 0;
+ virtual Error listen(uint16_t p_port, const IP_Address &p_bind_address = IP_Address("*")) = 0;
virtual bool is_connection_available() const = 0;
virtual Ref<StreamPeerTCP> take_connection() = 0;
diff --git a/core/io/translation_loader_po.cpp b/core/io/translation_loader_po.cpp
index 1a670b0ab0..353eabea45 100644
--- a/core/io/translation_loader_po.cpp
+++ b/core/io/translation_loader_po.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/translation_loader_po.h b/core/io/translation_loader_po.h
index a731e4e0d6..a14238f1df 100644
--- a/core/io/translation_loader_po.h
+++ b/core/io/translation_loader_po.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp
index e5f4433b8f..62110bfe24 100644
--- a/core/io/xml_parser.cpp
+++ b/core/io/xml_parser.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -373,13 +373,13 @@ void XMLParser::_bind_methods() {
ClassDB::bind_method(D_METHOD("open", "file"), &XMLParser::open);
ClassDB::bind_method(D_METHOD("open_buffer", "buffer"), &XMLParser::open_buffer);
- BIND_CONSTANT(NODE_NONE);
- BIND_CONSTANT(NODE_ELEMENT);
- BIND_CONSTANT(NODE_ELEMENT_END);
- BIND_CONSTANT(NODE_TEXT);
- BIND_CONSTANT(NODE_COMMENT);
- BIND_CONSTANT(NODE_CDATA);
- BIND_CONSTANT(NODE_UNKNOWN);
+ BIND_ENUM_CONSTANT(NODE_NONE);
+ BIND_ENUM_CONSTANT(NODE_ELEMENT);
+ BIND_ENUM_CONSTANT(NODE_ELEMENT_END);
+ BIND_ENUM_CONSTANT(NODE_TEXT);
+ BIND_ENUM_CONSTANT(NODE_COMMENT);
+ BIND_ENUM_CONSTANT(NODE_CDATA);
+ BIND_ENUM_CONSTANT(NODE_UNKNOWN);
};
Error XMLParser::read() {
diff --git a/core/io/xml_parser.h b/core/io/xml_parser.h
index 297211ecc6..28c57b567f 100644
--- a/core/io/xml_parser.h
+++ b/core/io/xml_parser.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/io/zip_io.h b/core/io/zip_io.h
index 88e680c0e0..8cf971ee08 100644
--- a/core/io/zip_io.h
+++ b/core/io/zip_io.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/list.h b/core/list.h
index df69b1dc40..0cad6038ff 100644
--- a/core/list.h
+++ b/core/list.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/make_binders.py b/core/make_binders.py
index a5cdb78443..6468c029f0 100644
--- a/core/make_binders.py
+++ b/core/make_binders.py
@@ -16,12 +16,11 @@ public:
$
return Variant::NIL;
}
- virtual StringName _gen_argument_type_name(int p_arg) const { return _gen_argument_type_hint(p_arg); }
- StringName _gen_argument_type_hint(int p_argument) const {
- $ifret if (p_argument==-1) return GetTypeInfo<R>::get_class_name();$
- $arg if (p_argument==(@-1)) return GetTypeInfo<P@>::get_class_name();
+ virtual PropertyInfo _gen_argument_type_info(int p_argument) const {
+ $ifret if (p_argument==-1) return GetTypeInfo<R>::get_class_info();$
+ $arg if (p_argument==(@-1)) return GetTypeInfo<P@>::get_class_info();
$
- return StringName();
+ return PropertyInfo();
}
#endif
virtual String get_instance_class() const {
@@ -30,7 +29,7 @@ public:
virtual Variant call(Object* p_object,const Variant** p_args,int p_arg_count, Variant::CallError& r_error) {
- T *instance=p_object->cast_to<T>();
+ T *instance=Object::cast_to<T>(p_object);
r_error.error=Variant::CallError::CALL_OK;
#ifdef DEBUG_METHODS_ENABLED
@@ -58,7 +57,7 @@ public:
#ifdef PTRCALL_ENABLED
virtual void ptrcall(Object*p_object,const void** p_args,void *r_ret) {
- T *instance=p_object->cast_to<T>();
+ T *instance=Object::cast_to<T>(p_object);
$ifret PtrToArg<R>::encode( $ (instance->*method)($arg, PtrToArg<P@>::convert(p_args[@-1])$) $ifret ,r_ret)$ ;
}
#endif
@@ -104,14 +103,13 @@ public:
return Variant::NIL;
}
- virtual StringName _gen_argument_type_name(int p_arg) const { return _gen_argument_type_hint(p_arg); }
-
- StringName _gen_argument_type_hint(int p_argument) const {
- $ifret if (p_argument==-1) return GetTypeInfo<R>::get_class_name();$
- $arg if (p_argument==(@-1)) return GetTypeInfo<P@>::get_class_name();
+ virtual PropertyInfo _gen_argument_type_info(int p_argument) const {
+ $ifret if (p_argument==-1) return GetTypeInfo<R>::get_class_info();$
+ $arg if (p_argument==(@-1)) return GetTypeInfo<P@>::get_class_info();
$
- return StringName();
+ return PropertyInfo();
}
+
#endif
virtual String get_instance_class() const {
return type_name;
diff --git a/core/map.h b/core/map.h
index ef0f75fc9b..75a38a3440 100644
--- a/core/map.h
+++ b/core/map.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index 04e4383f03..21516ac768 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/a_star.h b/core/math/a_star.h
index ebf1407c17..d2d2166719 100644
--- a/core/math/a_star.h
+++ b/core/math/a_star.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/audio_frame.cpp b/core/math/audio_frame.cpp
index 30a50c8add..555d3536df 100644
--- a/core/math/audio_frame.cpp
+++ b/core/math/audio_frame.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/audio_frame.h b/core/math/audio_frame.h
index d54f622197..cfc7331767 100644
--- a/core/math/audio_frame.h
+++ b/core/math/audio_frame.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/bsp_tree.cpp b/core/math/bsp_tree.cpp
index e22bc2b05e..be950568cf 100644
--- a/core/math/bsp_tree.cpp
+++ b/core/math/bsp_tree.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/bsp_tree.h b/core/math/bsp_tree.h
index 8296e57943..2e762ba4de 100644
--- a/core/math/bsp_tree.h
+++ b/core/math/bsp_tree.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/camera_matrix.cpp b/core/math/camera_matrix.cpp
index a1666ccd8b..0512cdd798 100644
--- a/core/math/camera_matrix.cpp
+++ b/core/math/camera_matrix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -180,19 +180,7 @@ void CameraMatrix::set_orthogonal(real_t p_size, real_t p_aspect, real_t p_znear
}
void CameraMatrix::set_frustum(real_t p_left, real_t p_right, real_t p_bottom, real_t p_top, real_t p_near, real_t p_far) {
-#if 0
- ///@TODO, give a check to this. I'm not sure if it's working.
- set_identity();
- matrix[0][0]=(2*p_near) / (p_right-p_left);
- matrix[0][2]=(p_right+p_left) / (p_right-p_left);
- matrix[1][1]=(2*p_near) / (p_top-p_bottom);
- matrix[1][2]=(p_top+p_bottom) / (p_top-p_bottom);
- matrix[2][2]=-(p_far+p_near) / ( p_far-p_near);
- matrix[2][3]=-(2*p_far*p_near) / (p_far-p_near);
- matrix[3][2]=-1;
- matrix[3][3]=0;
-#else
real_t *te = &matrix[0][0];
real_t x = 2 * p_near / (p_right - p_left);
real_t y = 2 * p_near / (p_top - p_bottom);
@@ -218,8 +206,6 @@ void CameraMatrix::set_frustum(real_t p_left, real_t p_right, real_t p_bottom, r
te[13] = 0;
te[14] = d;
te[15] = 0;
-
-#endif
}
real_t CameraMatrix::get_z_far() const {
diff --git a/core/math/camera_matrix.h b/core/math/camera_matrix.h
index 4be8ffab8c..175d0cdb1b 100644
--- a/core/math/camera_matrix.h
+++ b/core/math/camera_matrix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/face3.cpp b/core/math/face3.cpp
index 0e292500bf..748faad28f 100644
--- a/core/math/face3.cpp
+++ b/core/math/face3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/face3.h b/core/math/face3.h
index 3d02ae4014..8e4a25fb7a 100644
--- a/core/math/face3.h
+++ b/core/math/face3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/geometry.cpp b/core/math/geometry.cpp
index 2bea514d37..7c8fb6f17d 100644
--- a/core/math/geometry.cpp
+++ b/core/math/geometry.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -1076,8 +1076,8 @@ void Geometry::make_atlas(const Vector<Size2i> &p_rects, Vector<Point2i> &r_resu
for (int i = 0; i < results.size(); i++) {
- real_t h = nearest_power_of_2(results[i].max_h);
- real_t w = nearest_power_of_2(results[i].max_w);
+ real_t h = next_power_of_2(results[i].max_h);
+ real_t w = next_power_of_2(results[i].max_w);
real_t aspect = h > w ? h / w : w / h;
if (aspect < best_aspect) {
best = i;
diff --git a/core/math/geometry.h b/core/math/geometry.h
index 909d8164c3..cd069bd7a3 100644
--- a/core/math/geometry.h
+++ b/core/math/geometry.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -105,7 +105,7 @@ public:
}
static void get_closest_points_between_segments(const Vector3 &p1, const Vector3 &p2, const Vector3 &q1, const Vector3 &q2, Vector3 &c1, Vector3 &c2) {
-#if 1
+
//do the function 'd' as defined by pb. I think is is dot product of some sort
#define d_of(m, n, o, p) ((m.x - n.x) * (o.x - p.x) + (m.y - n.y) * (o.y - p.y) + (m.z - n.z) * (o.z - p.z))
@@ -120,33 +120,6 @@ public:
if (mub > 1) mub = 1;
c1 = p1.linear_interpolate(p2, mua);
c2 = q1.linear_interpolate(q2, mub);
-#else
- //this is broken do not use
- Vector3 u = p2 - p1;
- Vector3 v = q2 - q1;
- Vector3 w = p1 - q1;
- float a = u.dot(u);
- float b = u.dot(v);
- float c = v.dot(v); // always >= 0
- float d = u.dot(w);
- float e = v.dot(w);
- float D = a * c - b * b; // always >= 0
- float sc, tc;
-
- // compute the line parameters of the two closest points
- if (D < CMP_EPSILON) { // the lines are almost parallel
- sc = 0.0;
- tc = (b > c ? d / b : e / c); // use the largest denominator
- } else {
- sc = (b * e - c * d) / D;
- tc = (a * e - b * d) / D;
- }
-
- c1 = w + sc * u;
- c2 = w + tc * v;
-// get the difference of the two closest points
-//Vector dP = w + (sc * u) - (tc * v); // = L1(sc) - L2(tc)
-#endif
}
static real_t get_closest_distance_between_segments(const Vector3 &p_from_a, const Vector3 &p_to_a, const Vector3 &p_from_b, const Vector3 &p_to_b) {
diff --git a/core/math/math_2d.cpp b/core/math/math_2d.cpp
index 52e240ed47..c77fe96ff2 100644
--- a/core/math/math_2d.cpp
+++ b/core/math/math_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -205,33 +205,6 @@ Vector2 Vector2::clamped(real_t p_len) const {
return v;
}
-Vector2 Vector2::cubic_interpolate_soft(const Vector2 &p_b, const Vector2 &p_pre_a, const Vector2 &p_post_b, real_t p_t) const {
-#if 0
- k[0] = ((*this) (vi[0] + 1, vi[1], vi[2])) - ((*this) (vi[0],
- vi[1],vi[2])); //fk = a0
- k[1] = (((*this) (vi[0] + 1, vi[1], vi[2])) - ((*this) ((int) (v(0) -
- 1), vi[1],vi[2])))*0.5; //dk = a1
- k[2] = (((*this) ((int) (v(0) + 2), vi[1], vi[2])) - ((*this) (vi[0],
- vi[1],vi[2])))*0.5; //dk+1
- k[3] = k[0]*3 - k[1]*2 - k[2];//a2
- k[4] = k[1] + k[2] - k[0]*2;//a3
-
- //ip = a3(t-tk)³ + a2(t-tk)² + a1(t-tk) + a0
- //
- //a3 = dk + dk+1 - Dk
- //a2 = 3Dk - 2dk - dk+1
- //a1 = dk
- //a0 = fk
- //
- //dk = (fk+1 - fk-1)*0.5
- //Dk = (fk+1 - fk)
-
- real_t dk =
-#endif
-
- return Vector2();
-}
-
Vector2 Vector2::cubic_interpolate(const Vector2 &p_b, const Vector2 &p_pre_a, const Vector2 &p_post_b, real_t p_t) const {
Vector2 p0 = p_pre_a;
@@ -281,22 +254,22 @@ Vector2 Vector2::cubic_interpolate(const Vector2 &p_b, const Vector2 &p_pre_a, c
}
// slide returns the component of the vector along the given plane, specified by its normal vector.
-Vector2 Vector2::slide(const Vector2 &p_n) const {
+Vector2 Vector2::slide(const Vector2 &p_normal) const {
#ifdef MATH_CHECKS
- ERR_FAIL_COND_V(p_n.is_normalized() == false, Vector2());
+ ERR_FAIL_COND_V(p_normal.is_normalized() == false, Vector2());
#endif
- return *this - p_n * this->dot(p_n);
+ return *this - p_normal * this->dot(p_normal);
}
-Vector2 Vector2::bounce(const Vector2 &p_n) const {
- return -reflect(p_n);
+Vector2 Vector2::bounce(const Vector2 &p_normal) const {
+ return -reflect(p_normal);
}
-Vector2 Vector2::reflect(const Vector2 &p_n) const {
+Vector2 Vector2::reflect(const Vector2 &p_normal) const {
#ifdef MATH_CHECKS
- ERR_FAIL_COND_V(p_n.is_normalized() == false, Vector2());
+ ERR_FAIL_COND_V(p_normal.is_normalized() == false, Vector2());
#endif
- return 2.0 * p_n * this->dot(p_n) - *this;
+ return 2.0 * p_normal * this->dot(p_normal) - *this;
}
bool Rect2::intersects_segment(const Point2 &p_from, const Point2 &p_to, Point2 *r_pos, Point2 *r_normal) const {
diff --git a/core/math/math_2d.h b/core/math/math_2d.h
index b679371e03..d215df8a43 100644
--- a/core/math/math_2d.h
+++ b/core/math/math_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,6 +43,14 @@ enum Margin {
MARGIN_BOTTOM
};
+enum Corner {
+
+ CORNER_TOP_LEFT,
+ CORNER_TOP_RIGHT,
+ CORNER_BOTTOM_RIGHT,
+ CORNER_BOTTOM_LEFT
+};
+
enum Orientation {
HORIZONTAL,
@@ -105,11 +113,10 @@ struct Vector2 {
_FORCE_INLINE_ static Vector2 linear_interpolate(const Vector2 &p_a, const Vector2 &p_b, real_t p_t);
_FORCE_INLINE_ Vector2 linear_interpolate(const Vector2 &p_b, real_t p_t) const;
Vector2 cubic_interpolate(const Vector2 &p_b, const Vector2 &p_pre_a, const Vector2 &p_post_b, real_t p_t) const;
- Vector2 cubic_interpolate_soft(const Vector2 &p_b, const Vector2 &p_pre_a, const Vector2 &p_post_b, real_t p_t) const;
- Vector2 slide(const Vector2 &p_vec) const;
- Vector2 bounce(const Vector2 &p_vec) const;
- Vector2 reflect(const Vector2 &p_vec) const;
+ Vector2 slide(const Vector2 &p_normal) const;
+ Vector2 bounce(const Vector2 &p_normal) const;
+ Vector2 reflect(const Vector2 &p_normal) const;
Vector2 operator+(const Vector2 &p_v) const;
void operator+=(const Vector2 &p_v);
@@ -621,9 +628,9 @@ struct Transform2D {
void affine_invert();
Transform2D affine_inverse() const;
- void set_rotation(real_t p_phi);
+ void set_rotation(real_t p_rot);
real_t get_rotation() const;
- _FORCE_INLINE_ void set_rotation_and_scale(real_t p_phi, const Size2 &p_scale);
+ _FORCE_INLINE_ void set_rotation_and_scale(real_t p_rot, const Size2 &p_scale);
void rotate(real_t p_phi);
void scale(const Size2 &p_scale);
@@ -660,8 +667,8 @@ struct Transform2D {
_FORCE_INLINE_ Vector2 basis_xform_inv(const Vector2 &p_vec) const;
_FORCE_INLINE_ Vector2 xform(const Vector2 &p_vec) const;
_FORCE_INLINE_ Vector2 xform_inv(const Vector2 &p_vec) const;
- _FORCE_INLINE_ Rect2 xform(const Rect2 &p_vec) const;
- _FORCE_INLINE_ Rect2 xform_inv(const Rect2 &p_vec) const;
+ _FORCE_INLINE_ Rect2 xform(const Rect2 &p_rect) const;
+ _FORCE_INLINE_ Rect2 xform_inv(const Rect2 &p_rect) const;
operator String() const;
@@ -833,25 +840,25 @@ next4:
return true;
}
-Vector2 Transform2D::basis_xform(const Vector2 &v) const {
+Vector2 Transform2D::basis_xform(const Vector2 &p_vec) const {
return Vector2(
- tdotx(v),
- tdoty(v));
+ tdotx(p_vec),
+ tdoty(p_vec));
}
-Vector2 Transform2D::basis_xform_inv(const Vector2 &v) const {
+Vector2 Transform2D::basis_xform_inv(const Vector2 &p_vec) const {
return Vector2(
- elements[0].dot(v),
- elements[1].dot(v));
+ elements[0].dot(p_vec),
+ elements[1].dot(p_vec));
}
-Vector2 Transform2D::xform(const Vector2 &v) const {
+Vector2 Transform2D::xform(const Vector2 &p_vec) const {
return Vector2(
- tdotx(v),
- tdoty(v)) +
+ tdotx(p_vec),
+ tdoty(p_vec)) +
elements[2];
}
Vector2 Transform2D::xform_inv(const Vector2 &p_vec) const {
diff --git a/core/math/math_defs.h b/core/math/math_defs.h
index 3d9eb63e11..904cbc1abc 100644
--- a/core/math/math_defs.h
+++ b/core/math/math_defs.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/math_funcs.cpp b/core/math/math_funcs.cpp
index 9f5a9c193a..6fb688f16b 100644
--- a/core/math/math_funcs.cpp
+++ b/core/math/math_funcs.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,16 +28,13 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "math_funcs.h"
+
#include "core/os/os.h"
pcg32_random_t Math::default_pcg = { 12047754176567800795ULL, PCG_DEFAULT_INC_64 };
#define PHI 0x9e3779b9
-#if 0
-static uint32_t Q[4096];
-#endif
-
// TODO: we should eventually expose pcg.inc too
uint32_t Math::rand_from_seed(uint64_t *seed) {
pcg32_random_t pcg = { *seed, PCG_DEFAULT_INC_64 };
diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h
index 45509a0808..9651e37f3e 100644
--- a/core/math/math_funcs.h
+++ b/core/math/math_funcs.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -153,8 +153,14 @@ public:
static _ALWAYS_INLINE_ double rad2deg(double p_y) { return p_y * 180.0 / Math_PI; }
static _ALWAYS_INLINE_ float rad2deg(float p_y) { return p_y * 180.0 / Math_PI; }
- static _ALWAYS_INLINE_ double lerp(double a, double b, double c) { return a + (b - a) * c; }
- static _ALWAYS_INLINE_ float lerp(float a, float b, float c) { return a + (b - a) * c; }
+ static _ALWAYS_INLINE_ double lerp(double p_from, double p_to, double p_weight) { return p_from + (p_to - p_from) * p_weight; }
+ static _ALWAYS_INLINE_ float lerp(float p_from, float p_to, float p_weight) { return p_from + (p_to - p_from) * p_weight; }
+
+ static _ALWAYS_INLINE_ double inverse_lerp(double p_from, double p_to, double p_value) { return (p_value - p_from) / (p_to - p_from); }
+ static _ALWAYS_INLINE_ float inverse_lerp(float p_from, float p_to, float p_value) { return (p_value - p_from) / (p_to - p_from); }
+
+ static _ALWAYS_INLINE_ double range_lerp(double p_value, double p_istart, double p_istop, double p_ostart, double p_ostop) { return Math::lerp(p_ostart, p_ostop, Math::inverse_lerp(p_istart, p_istop, p_value)); }
+ static _ALWAYS_INLINE_ float range_lerp(float p_value, float p_istart, float p_istop, float p_ostart, float p_ostop) { return Math::lerp(p_ostart, p_ostop, Math::inverse_lerp(p_istart, p_istop, p_value)); }
static _ALWAYS_INLINE_ double linear2db(double p_linear) { return Math::log(p_linear) * 8.6858896380650365530225783783321; }
static _ALWAYS_INLINE_ float linear2db(float p_linear) { return Math::log(p_linear) * 8.6858896380650365530225783783321; }
diff --git a/core/math/matrix3.cpp b/core/math/matrix3.cpp
index f2f6ff93cf..57555bbb2a 100644
--- a/core/math/matrix3.cpp
+++ b/core/math/matrix3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -254,17 +254,6 @@ Vector3 Basis::get_scale() const {
Vector3(elements[0][2], elements[1][2], elements[2][2]).length());
}
-// Sets scaling while preserving rotation.
-// This requires some care when working with matrices with negative determinant,
-// since we're using a particular convention for "polar" decomposition in get_scale and get_rotation.
-// For details, see the explanation in get_scale.
-void Basis::set_scale(const Vector3 &p_scale) {
- Vector3 e = get_euler();
- Basis(); // reset to identity
- scale(p_scale);
- rotate(e);
-}
-
// Multiplies the matrix from left by the rotation matrix: M -> R.M
// Note that this does *not* rotate the matrix itself.
//
@@ -316,28 +305,6 @@ void Basis::get_rotation_axis_angle(Vector3 &p_axis, real_t &p_angle) const {
m.get_axis_angle(p_axis, p_angle);
}
-// Sets rotation while preserving scaling.
-// This requires some care when working with matrices with negative determinant,
-// since we're using a particular convention for "polar" decomposition in get_scale and get_rotation.
-// For details, see the explanation in get_scale.
-void Basis::set_rotation_euler(const Vector3 &p_euler) {
- Vector3 s = get_scale();
- Basis(); // reset to identity
- scale(s);
- rotate(p_euler);
-}
-
-// Sets rotation while preserving scaling.
-// This requires some care when working with matrices with negative determinant,
-// since we're using a particular convention for "polar" decomposition in get_scale and get_rotation.
-// For details, see the explanation in get_scale.
-void Basis::set_rotation_axis_angle(const Vector3 &p_axis, real_t p_angle) {
- Vector3 s = get_scale();
- Basis(); // reset to identity
- scale(s);
- rotate(p_axis, p_angle);
-}
-
// get_euler_xyz returns a vector containing the Euler angles in the format
// (a1,a2,a3), where a3 is the angle of the first rotation, and a1 is the last
// (following the convention they are commonly defined in the literature).
@@ -365,14 +332,10 @@ Vector3 Basis::get_euler_xyz() const {
if (euler.y < Math_PI * 0.5) {
if (euler.y > -Math_PI * 0.5) {
//if rotation is Y-only, return a proper -pi,pi range like in x or z for the same case.
- if (elements[1][0] == 0.0 && elements[0][1] == 0.0 && elements[0][0] < 0.0) {
+ if (elements[1][0] == 0.0 && elements[0][1] == 0.0 && elements[1][2] == 0 && elements[2][1] == 0 && elements[1][1] == 1) {
euler.x = 0;
+ euler.y = atan2(elements[0][2], elements[0][0]);
euler.z = 0;
-
- if (euler.y > 0.0)
- euler.y = Math_PI - euler.y;
- else
- euler.y = -(Math_PI + euler.y);
} else {
euler.x = Math::atan2(-elements[1][2], elements[2][2]);
euler.z = Math::atan2(-elements[0][1], elements[0][0]);
@@ -436,15 +399,10 @@ Vector3 Basis::get_euler_yxz() const {
if (m12 < 1) {
if (m12 > -1) {
- if (elements[1][0] == 0 && elements[0][1] == 0 && elements[2][2] < 0) { // use pure x rotation
- real_t x = asin(-m12);
+ if (elements[1][0] == 0 && elements[0][1] == 0 && elements[0][2] == 0 && elements[2][0] == 0 && elements[0][0] == 1) { // use pure x rotation
+ euler.x = atan2(-m12, elements[1][1]);
euler.y = 0;
euler.z = 0;
-
- if (x > 0.0)
- euler.x = Math_PI - x;
- else
- euler.x = -(Math_PI + x);
} else {
euler.x = asin(-m12);
euler.y = atan2(elements[0][2], elements[2][2]);
diff --git a/core/math/matrix3.h b/core/math/matrix3.h
index 74e6564578..be8de2e1c4 100644
--- a/core/math/matrix3.h
+++ b/core/math/matrix3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -81,9 +81,6 @@ public:
Vector3 get_rotation() const;
void get_rotation_axis_angle(Vector3 &p_axis, real_t &p_angle) const;
- void set_rotation_euler(const Vector3 &p_euler);
- void set_rotation_axis_angle(const Vector3 &p_axis, real_t p_angle);
-
Vector3 get_euler_xyz() const;
void set_euler_xyz(const Vector3 &p_euler);
Vector3 get_euler_yxz() const;
@@ -99,7 +96,6 @@ public:
Basis scaled(const Vector3 &p_scale) const;
Vector3 get_scale() const;
- void set_scale(const Vector3 &p_scale);
// transposed dot products
_FORCE_INLINE_ real_t tdotx(const Vector3 &v) const {
diff --git a/core/math/octree.h b/core/math/octree.h
index 010c1b18f7..95a67943fd 100644
--- a/core/math/octree.h
+++ b/core/math/octree.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -351,7 +351,7 @@ private:
};
void _cull_convex(Octant *p_octant, _CullConvexData *p_cull);
- void _cull_AABB(Octant *p_octant, const Rect3 &p_aabb, T **p_result_array, int *p_result_idx, int p_result_max, int *p_subindex_array, uint32_t p_mask);
+ void _cull_aabb(Octant *p_octant, const Rect3 &p_aabb, T **p_result_array, int *p_result_idx, int p_result_max, int *p_subindex_array, uint32_t p_mask);
void _cull_segment(Octant *p_octant, const Vector3 &p_from, const Vector3 &p_to, T **p_result_array, int *p_result_idx, int p_result_max, int *p_subindex_array, uint32_t p_mask);
void _cull_point(Octant *p_octant, const Vector3 &p_point, T **p_result_array, int *p_result_idx, int p_result_max, int *p_subindex_array, uint32_t p_mask);
@@ -380,7 +380,7 @@ public:
int get_subindex(OctreeElementID p_id) const;
int cull_convex(const Vector<Plane> &p_convex, T **p_result_array, int p_result_max, uint32_t p_mask = 0xFFFFFFFF);
- int cull_AABB(const Rect3 &p_aabb, T **p_result_array, int p_result_max, int *p_subindex_array = NULL, uint32_t p_mask = 0xFFFFFFFF);
+ int cull_aabb(const Rect3 &p_aabb, T **p_result_array, int p_result_max, int *p_subindex_array = NULL, uint32_t p_mask = 0xFFFFFFFF);
int cull_segment(const Vector3 &p_from, const Vector3 &p_to, T **p_result_array, int p_result_max, int *p_subindex_array = NULL, uint32_t p_mask = 0xFFFFFFFF);
int cull_point(const Vector3 &p_point, T **p_result_array, int p_result_max, int *p_subindex_array = NULL, uint32_t p_mask = 0xFFFFFFFF);
@@ -851,28 +851,6 @@ void Octree<T, use_pairs, AL>::move(OctreeElementID p_id, const Rect3 &p_aabb) {
ERR_FAIL_COND(!E);
Element &e = E->get();
-#if 0
-
- pass++;
- if (!e.aabb.has_no_surface()) {
- _remove_element(&e);
- }
-
- e.aabb=p_aabb;
-
- if (!e.aabb.has_no_surface()) {
- _ensure_valid_root(p_aabb);
-
- _insert_element(&e,root);
- if (use_pairs)
- _element_check_pairs(&e);
-
- }
-
- _optimize();
-
-#else
-
bool old_has_surf = !e.aabb.has_no_surface();
bool new_has_surf = !p_aabb.has_no_surface();
@@ -979,7 +957,6 @@ void Octree<T, use_pairs, AL>::move(OctreeElementID p_id, const Rect3 &p_aabb) {
}
_optimize();
-#endif
}
template <class T, bool use_pairs, class AL>
@@ -1095,7 +1072,7 @@ void Octree<T, use_pairs, AL>::_cull_convex(Octant *p_octant, _CullConvexData *p
}
template <class T, bool use_pairs, class AL>
-void Octree<T, use_pairs, AL>::_cull_AABB(Octant *p_octant, const Rect3 &p_aabb, T **p_result_array, int *p_result_idx, int p_result_max, int *p_subindex_array, uint32_t p_mask) {
+void Octree<T, use_pairs, AL>::_cull_aabb(Octant *p_octant, const Rect3 &p_aabb, T **p_result_array, int *p_result_idx, int p_result_max, int *p_subindex_array, uint32_t p_mask) {
if (*p_result_idx == p_result_max)
return; //pointless
@@ -1160,7 +1137,7 @@ void Octree<T, use_pairs, AL>::_cull_AABB(Octant *p_octant, const Rect3 &p_aabb,
for (int i = 0; i < 8; i++) {
if (p_octant->children[i] && p_octant->children[i]->aabb.intersects_inclusive(p_aabb)) {
- _cull_AABB(p_octant->children[i], p_aabb, p_result_array, p_result_idx, p_result_max, p_subindex_array, p_mask);
+ _cull_aabb(p_octant->children[i], p_aabb, p_result_array, p_result_idx, p_result_max, p_subindex_array, p_mask);
}
}
}
@@ -1336,14 +1313,14 @@ int Octree<T, use_pairs, AL>::cull_convex(const Vector<Plane> &p_convex, T **p_r
}
template <class T, bool use_pairs, class AL>
-int Octree<T, use_pairs, AL>::cull_AABB(const Rect3 &p_aabb, T **p_result_array, int p_result_max, int *p_subindex_array, uint32_t p_mask) {
+int Octree<T, use_pairs, AL>::cull_aabb(const Rect3 &p_aabb, T **p_result_array, int p_result_max, int *p_subindex_array, uint32_t p_mask) {
if (!root)
return 0;
int result_count = 0;
pass++;
- _cull_AABB(root, p_aabb, p_result_array, &result_count, p_result_max, p_subindex_array, p_mask);
+ _cull_aabb(root, p_aabb, p_result_array, &result_count, p_result_max, p_subindex_array, p_mask);
return result_count;
}
diff --git a/core/math/plane.cpp b/core/math/plane.cpp
index f5e92866c4..08395ed07b 100644
--- a/core/math/plane.cpp
+++ b/core/math/plane.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -103,7 +103,7 @@ bool Plane::intersect_3(const Plane &p_plane1, const Plane &p_plane2, Vector3 *r
return true;
}
-bool Plane::intersects_ray(Vector3 p_from, Vector3 p_dir, Vector3 *p_intersection) const {
+bool Plane::intersects_ray(const Vector3 &p_from, const Vector3 &p_dir, Vector3 *p_intersection) const {
Vector3 segment = p_dir;
real_t den = normal.dot(segment);
@@ -128,7 +128,7 @@ bool Plane::intersects_ray(Vector3 p_from, Vector3 p_dir, Vector3 *p_intersectio
return true;
}
-bool Plane::intersects_segment(Vector3 p_begin, Vector3 p_end, Vector3 *p_intersection) const {
+bool Plane::intersects_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 *p_intersection) const {
Vector3 segment = p_begin - p_end;
real_t den = normal.dot(segment);
diff --git a/core/math/plane.h b/core/math/plane.h
index 92ebcd8024..559a735817 100644
--- a/core/math/plane.h
+++ b/core/math/plane.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -56,8 +56,8 @@ public:
/* intersections */
bool intersect_3(const Plane &p_plane1, const Plane &p_plane2, Vector3 *r_result = 0) const;
- bool intersects_ray(Vector3 p_from, Vector3 p_dir, Vector3 *p_intersection) const;
- bool intersects_segment(Vector3 p_begin, Vector3 p_end, Vector3 *p_intersection) const;
+ bool intersects_ray(const Vector3 &p_from, const Vector3 &p_dir, Vector3 *p_intersection) const;
+ bool intersects_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 *p_intersection) const;
_FORCE_INLINE_ Vector3 project(const Vector3 &p_point) const {
diff --git a/core/math/quat.cpp b/core/math/quat.cpp
index 5984cdf657..cebc5b9522 100644
--- a/core/math/quat.cpp
+++ b/core/math/quat.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -139,48 +139,6 @@ Quat Quat::inverse() const {
Quat Quat::slerp(const Quat &q, const real_t &t) const {
-#if 0
-
-
- Quat dst=q;
- Quat src=*this;
-
- src.normalize();
- dst.normalize();
-
- real_t cosine = dst.dot(src);
-
- if (cosine < 0 && true) {
- cosine = -cosine;
- dst = -dst;
- } else {
- dst = dst;
- }
-
- if (Math::abs(cosine) < 1 - CMP_EPSILON) {
- // Standard case (slerp)
- real_t sine = Math::sqrt(1 - cosine*cosine);
- real_t angle = Math::atan2(sine, cosine);
- real_t inv_sine = 1.0 / sine;
- real_t coeff_0 = Math::sin((1.0 - t) * angle) * inv_sine;
- real_t coeff_1 = Math::sin(t * angle) * inv_sine;
- Quat ret= src * coeff_0 + dst * coeff_1;
-
- return ret;
- } else {
- // There are two situations:
- // 1. "rkP" and "q" are very close (cosine ~= +1), so we can do a linear
- // interpolation safely.
- // 2. "rkP" and "q" are almost invedste of each other (cosine ~= -1), there
- // are an infinite number of possibilities interpolation. but we haven't
- // have method to fix this case, so just use linear interpolation here.
- Quat ret = src * (1.0 - t) + dst *t;
- // taking the complement requires renormalisation
- ret.normalize();
- return ret;
- }
-#else
-
Quat to1;
real_t omega, cosom, sinom, scale0, scale1;
@@ -221,7 +179,6 @@ Quat Quat::slerp(const Quat &q, const real_t &t) const {
scale0 * y + scale1 * to1.y,
scale0 * z + scale1 * to1.z,
scale0 * w + scale1 * to1.w);
-#endif
}
Quat Quat::slerpni(const Quat &q, const real_t &t) const {
@@ -241,53 +198,6 @@ Quat Quat::slerpni(const Quat &q, const real_t &t) const {
invFactor * from.y + newFactor * q.y,
invFactor * from.z + newFactor * q.z,
invFactor * from.w + newFactor * q.w);
-
-#if 0
- real_t to1[4];
- real_t omega, cosom, sinom, scale0, scale1;
-
-
- // calc cosine
- cosom = x * q.x + y * q.y + z * q.z
- + w * q.w;
-
-
- // adjust signs (if necessary)
- if ( cosom <0.0 && false) {
- cosom = -cosom;to1[0] = - q.x;
- to1[1] = - q.y;
- to1[2] = - q.z;
- to1[3] = - q.w;
- } else {
- to1[0] = q.x;
- to1[1] = q.y;
- to1[2] = q.z;
- to1[3] = q.w;
- }
-
-
- // calculate coefficients
-
- if ( (1.0 - cosom) > CMP_EPSILON ) {
- // standard case (slerp)
- omega = Math::acos(cosom);
- sinom = Math::sin(omega);
- scale0 = Math::sin((1.0 - t) * omega) / sinom;
- scale1 = Math::sin(t * omega) / sinom;
- } else {
- // "from" and "to" quaternions are very close
- // ... so we can do a linear interpolation
- scale0 = 1.0 - t;
- scale1 = t;
- }
- // calculate final values
- return Quat(
- scale0 * x + scale1 * to1[0],
- scale0 * y + scale1 * to1[1],
- scale0 * z + scale1 * to1[2],
- scale0 * w + scale1 * to1[3]
- );
-#endif
}
Quat Quat::cubic_slerp(const Quat &q, const Quat &prep, const Quat &postq, const real_t &t) const {
diff --git a/core/math/quat.h b/core/math/quat.h
index 0e378eb4e4..9668f8c7a3 100644
--- a/core/math/quat.h
+++ b/core/math/quat.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/quick_hull.cpp b/core/math/quick_hull.cpp
index 54b97ac38c..e9a383df40 100644
--- a/core/math/quick_hull.cpp
+++ b/core/math/quick_hull.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/quick_hull.h b/core/math/quick_hull.h
index 49600649e3..47ed22615b 100644
--- a/core/math/quick_hull.h
+++ b/core/math/quick_hull.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/rect3.cpp b/core/math/rect3.cpp
index 973607f565..6f01000f61 100644
--- a/core/math/rect3.cpp
+++ b/core/math/rect3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/rect3.h b/core/math/rect3.h
index e5d7462009..c3a2f5fbfb 100644
--- a/core/math/rect3.h
+++ b/core/math/rect3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -47,12 +47,12 @@ public:
real_t get_area() const; /// get area
_FORCE_INLINE_ bool has_no_area() const {
- return (size.x <= CMP_EPSILON || size.y <= CMP_EPSILON || size.z <= CMP_EPSILON);
+ return (size.x <= 0 || size.y <= 0 || size.z <= 0);
}
_FORCE_INLINE_ bool has_no_surface() const {
- return (size.x <= CMP_EPSILON && size.y <= CMP_EPSILON && size.z <= CMP_EPSILON);
+ return (size.x <= 0 && size.y <= 0 && size.z <= 0);
}
const Vector3 &get_position() const { return position; }
@@ -72,9 +72,9 @@ public:
Rect3 intersection(const Rect3 &p_aabb) const; ///get box where two intersect, empty if no intersection occurs
bool intersects_segment(const Vector3 &p_from, const Vector3 &p_to, Vector3 *r_clip = NULL, Vector3 *r_normal = NULL) const;
bool intersects_ray(const Vector3 &p_from, const Vector3 &p_dir, Vector3 *r_clip = NULL, Vector3 *r_normal = NULL) const;
- _FORCE_INLINE_ bool smits_intersect_ray(const Vector3 &from, const Vector3 &p_dir, real_t t0, real_t t1) const;
+ _FORCE_INLINE_ bool smits_intersect_ray(const Vector3 &p_from, const Vector3 &p_dir, real_t t0, real_t t1) const;
- _FORCE_INLINE_ bool intersects_convex_shape(const Plane *p_plane, int p_plane_count) const;
+ _FORCE_INLINE_ bool intersects_convex_shape(const Plane *p_planes, int p_plane_count) const;
bool intersects_plane(const Plane &p_plane) const;
_FORCE_INLINE_ bool has_point(const Vector3 &p_point) const;
@@ -189,8 +189,6 @@ Vector3 Rect3::get_endpoint(int p_point) const {
bool Rect3::intersects_convex_shape(const Plane *p_planes, int p_plane_count) const {
-#if 1
-
Vector3 half_extents = size * 0.5;
Vector3 ofs = position + half_extents;
@@ -206,42 +204,6 @@ bool Rect3::intersects_convex_shape(const Plane *p_planes, int p_plane_count) co
}
return true;
-#else
- //cache all points to check against!
- // #warning should be easy to optimize, just use the same as when taking the support and use only that point
- Vector3 points[8] = {
- Vector3(position.x, position.y, position.z),
- Vector3(position.x, position.y, position.z + size.z),
- Vector3(position.x, position.y + size.y, position.z),
- Vector3(position.x, position.y + size.y, position.z + size.z),
- Vector3(position.x + size.x, position.y, position.z),
- Vector3(position.x + size.x, position.y, position.z + size.z),
- Vector3(position.x + size.x, position.y + size.y, position.z),
- Vector3(position.x + size.x, position.y + size.y, position.z + size.z),
- };
-
- for (int i = 0; i < p_plane_count; i++) { //for each plane
-
- const Plane &plane = p_planes[i];
- bool all_points_over = true;
- //test if it has all points over!
-
- for (int j = 0; j < 8; j++) {
-
- if (!plane.is_point_over(points[j])) {
-
- all_points_over = false;
- break;
- }
- }
-
- if (all_points_over) {
-
- return false;
- }
- }
- return true;
-#endif
}
bool Rect3::has_point(const Vector3 &p_point) const {
@@ -326,27 +288,27 @@ inline real_t Rect3::get_shortest_axis_size() const {
return max_size;
}
-bool Rect3::smits_intersect_ray(const Vector3 &from, const Vector3 &dir, real_t t0, real_t t1) const {
+bool Rect3::smits_intersect_ray(const Vector3 &p_from, const Vector3 &p_dir, real_t t0, real_t t1) const {
- real_t divx = 1.0 / dir.x;
- real_t divy = 1.0 / dir.y;
- real_t divz = 1.0 / dir.z;
+ real_t divx = 1.0 / p_dir.x;
+ real_t divy = 1.0 / p_dir.y;
+ real_t divz = 1.0 / p_dir.z;
Vector3 upbound = position + size;
real_t tmin, tmax, tymin, tymax, tzmin, tzmax;
- if (dir.x >= 0) {
- tmin = (position.x - from.x) * divx;
- tmax = (upbound.x - from.x) * divx;
+ if (p_dir.x >= 0) {
+ tmin = (position.x - p_from.x) * divx;
+ tmax = (upbound.x - p_from.x) * divx;
} else {
- tmin = (upbound.x - from.x) * divx;
- tmax = (position.x - from.x) * divx;
+ tmin = (upbound.x - p_from.x) * divx;
+ tmax = (position.x - p_from.x) * divx;
}
- if (dir.y >= 0) {
- tymin = (position.y - from.y) * divy;
- tymax = (upbound.y - from.y) * divy;
+ if (p_dir.y >= 0) {
+ tymin = (position.y - p_from.y) * divy;
+ tymax = (upbound.y - p_from.y) * divy;
} else {
- tymin = (upbound.y - from.y) * divy;
- tymax = (position.y - from.y) * divy;
+ tymin = (upbound.y - p_from.y) * divy;
+ tymax = (position.y - p_from.y) * divy;
}
if ((tmin > tymax) || (tymin > tmax))
return false;
@@ -354,12 +316,12 @@ bool Rect3::smits_intersect_ray(const Vector3 &from, const Vector3 &dir, real_t
tmin = tymin;
if (tymax < tmax)
tmax = tymax;
- if (dir.z >= 0) {
- tzmin = (position.z - from.z) * divz;
- tzmax = (upbound.z - from.z) * divz;
+ if (p_dir.z >= 0) {
+ tzmin = (position.z - p_from.z) * divz;
+ tzmax = (upbound.z - p_from.z) * divz;
} else {
- tzmin = (upbound.z - from.z) * divz;
- tzmax = (position.z - from.z) * divz;
+ tzmin = (upbound.z - p_from.z) * divz;
+ tzmax = (position.z - p_from.z) * divz;
}
if ((tmin > tzmax) || (tzmin > tmax))
return false;
diff --git a/core/math/transform.cpp b/core/math/transform.cpp
index 3a86fbfc6c..60df69a509 100644
--- a/core/math/transform.cpp
+++ b/core/math/transform.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/transform.h b/core/math/transform.h
index 48467f2ed7..566bf482a9 100644
--- a/core/math/transform.h
+++ b/core/math/transform.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -154,8 +154,7 @@ _FORCE_INLINE_ Plane Transform::xform_inv(const Plane &p_plane) const {
}
_FORCE_INLINE_ Rect3 Transform::xform(const Rect3 &p_aabb) const {
-/* define vertices */
-#if 1
+ /* define vertices */
Vector3 x = basis.get_axis(0) * p_aabb.size.x;
Vector3 y = basis.get_axis(1) * p_aabb.size.y;
Vector3 z = basis.get_axis(2) * p_aabb.size.z;
@@ -171,31 +170,8 @@ _FORCE_INLINE_ Rect3 Transform::xform(const Rect3 &p_aabb) const {
new_aabb.expand_to(pos + y + z);
new_aabb.expand_to(pos + x + y + z);
return new_aabb;
-#else
-
- Vector3 vertices[8] = {
- Vector3(p_aabb.position.x + p_aabb.size.x, p_aabb.position.y + p_aabb.size.y, p_aabb.position.z + p_aabb.size.z),
- Vector3(p_aabb.position.x + p_aabb.size.x, p_aabb.position.y + p_aabb.size.y, p_aabb.position.z),
- Vector3(p_aabb.position.x + p_aabb.size.x, p_aabb.position.y, p_aabb.position.z + p_aabb.size.z),
- Vector3(p_aabb.position.x + p_aabb.size.x, p_aabb.position.y, p_aabb.position.z),
- Vector3(p_aabb.position.x, p_aabb.position.y + p_aabb.size.y, p_aabb.position.z + p_aabb.size.z),
- Vector3(p_aabb.position.x, p_aabb.position.y + p_aabb.size.y, p_aabb.position.z),
- Vector3(p_aabb.position.x, p_aabb.position.y, p_aabb.position.z + p_aabb.size.z),
- Vector3(p_aabb.position.x, p_aabb.position.y, p_aabb.position.z)
- };
-
- AABB ret;
-
- ret.pos = xform(vertices[0]);
-
- for (int i = 1; i < 8; i++) {
-
- ret.expand_to(xform(vertices[i]));
- }
-
- return ret;
-#endif
}
+
_FORCE_INLINE_ Rect3 Transform::xform_inv(const Rect3 &p_aabb) const {
/* define vertices */
@@ -222,4 +198,4 @@ _FORCE_INLINE_ Rect3 Transform::xform_inv(const Rect3 &p_aabb) const {
return ret;
}
-#endif
+#endif // TRANSFORM_H
diff --git a/core/math/triangle_mesh.cpp b/core/math/triangle_mesh.cpp
index 1df3c8c298..614104f698 100644
--- a/core/math/triangle_mesh.cpp
+++ b/core/math/triangle_mesh.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/triangle_mesh.h b/core/math/triangle_mesh.h
index 166f10c577..2bf67fffcb 100644
--- a/core/math/triangle_mesh.h
+++ b/core/math/triangle_mesh.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/triangulate.cpp b/core/math/triangulate.cpp
index 4a5d0a078e..b20f2e06d5 100644
--- a/core/math/triangulate.cpp
+++ b/core/math/triangulate.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/triangulate.h b/core/math/triangulate.h
index 3f0ad00033..21e148249e 100644
--- a/core/math/triangulate.h
+++ b/core/math/triangulate.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/math/vector3.cpp b/core/math/vector3.cpp
index efffacb36e..144234f4d1 100644
--- a/core/math/vector3.cpp
+++ b/core/math/vector3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -125,51 +125,6 @@ Vector3 Vector3::cubic_interpolate(const Vector3 &p_b, const Vector3 &p_pre_a, c
return out;
}
-#if 0
-Vector3 Vector3::cubic_interpolate(const Vector3& p_b,const Vector3& p_pre_a, const Vector3& p_post_b,real_t p_t) const {
-
- Vector3 p0=p_pre_a;
- Vector3 p1=*this;
- Vector3 p2=p_b;
- Vector3 p3=p_post_b;
-
- if (true) {
-
- real_t ab = p0.distance_to(p1);
- real_t bc = p1.distance_to(p2);
- real_t cd = p2.distance_to(p3);
-
- //if (ab>bc) {
- if (ab>0)
- p0 = p1+(p0-p1)*(bc/ab);
- //}
-
- //if (cd>bc) {
- if (cd>0)
- p3 = p2+(p3-p2)*(bc/cd);
- //}
- }
-
- real_t t = p_t;
- real_t t2 = t * t;
- real_t t3 = t2 * t;
-
- Vector3 out;
- out.x = 0.5 * ( ( 2.0 * p1.x ) +
- ( -p0.x + p2.x ) * t +
- ( 2.0 * p0.x - 5.0 * p1.x + 4 * p2.x - p3.x ) * t2 +
- ( -p0.x + 3.0 * p1.x - 3.0 * p2.x + p3.x ) * t3 );
- out.y = 0.5 * ( ( 2.0 * p1.y ) +
- ( -p0.y + p2.y ) * t +
- ( 2.0 * p0.y - 5.0 * p1.y + 4 * p2.y - p3.y ) * t2 +
- ( -p0.y + 3.0 * p1.y - 3.0 * p2.y + p3.y ) * t3 );
- out.z = 0.5 * ( ( 2.0 * p1.z ) +
- ( -p0.z + p2.z ) * t +
- ( 2.0 * p0.z - 5.0 * p1.z + 4 * p2.z - p3.z ) * t2 +
- ( -p0.z + 3.0 * p1.z - 3.0 * p2.z + p3.z ) * t3 );
- return out;
-}
-#endif
Vector3::operator String() const {
return (rtos(x) + ", " + rtos(y) + ", " + rtos(z));
diff --git a/core/math/vector3.h b/core/math/vector3.h
index 6a7974681e..74c822fcd7 100644
--- a/core/math/vector3.h
+++ b/core/math/vector3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -108,9 +108,9 @@ struct Vector3 {
_FORCE_INLINE_ real_t angle_to(const Vector3 &p_b) const;
- _FORCE_INLINE_ Vector3 slide(const Vector3 &p_vec) const;
- _FORCE_INLINE_ Vector3 bounce(const Vector3 &p_vec) const;
- _FORCE_INLINE_ Vector3 reflect(const Vector3 &p_vec) const;
+ _FORCE_INLINE_ Vector3 slide(const Vector3 &p_normal) const;
+ _FORCE_INLINE_ Vector3 bounce(const Vector3 &p_normal) const;
+ _FORCE_INLINE_ Vector3 reflect(const Vector3 &p_normal) const;
/* Operators */
@@ -410,22 +410,22 @@ void Vector3::zero() {
}
// slide returns the component of the vector along the given plane, specified by its normal vector.
-Vector3 Vector3::slide(const Vector3 &p_n) const {
+Vector3 Vector3::slide(const Vector3 &p_normal) const {
#ifdef MATH_CHECKS
- ERR_FAIL_COND_V(p_n.is_normalized() == false, Vector3());
+ ERR_FAIL_COND_V(p_normal.is_normalized() == false, Vector3());
#endif
- return *this - p_n * this->dot(p_n);
+ return *this - p_normal * this->dot(p_normal);
}
-Vector3 Vector3::bounce(const Vector3 &p_n) const {
- return -reflect(p_n);
+Vector3 Vector3::bounce(const Vector3 &p_normal) const {
+ return -reflect(p_normal);
}
-Vector3 Vector3::reflect(const Vector3 &p_n) const {
+Vector3 Vector3::reflect(const Vector3 &p_normal) const {
#ifdef MATH_CHECKS
- ERR_FAIL_COND_V(p_n.is_normalized() == false, Vector3());
+ ERR_FAIL_COND_V(p_normal.is_normalized() == false, Vector3());
#endif
- return 2.0 * p_n * this->dot(p_n) - *this;
+ return 2.0 * p_normal * this->dot(p_normal) - *this;
}
#endif
diff --git a/core/message_queue.cpp b/core/message_queue.cpp
index 564069d8bb..040fb69805 100644
--- a/core/message_queue.cpp
+++ b/core/message_queue.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -240,47 +240,6 @@ void MessageQueue::statistics() {
}
}
-bool MessageQueue::print() {
-#if 0
- uint32_t read_pos=0;
- while (read_pos < buffer_end ) {
- Message *message = (Message*)&buffer[ read_pos ];
-
- Object *target = ObjectDB::get_instance(message->instance_ID);
- String cname;
- String cfunc;
-
- if (target==NULL) {
- //object was deleted
- //WARN_PRINT("Object was deleted while awaiting a callback")
- //should it print a warning?
- } else if (message->notification>=0) {
-
- // messages don't expect a return value
- cfunc="notification # "+itos(message->notification);
- cname=target->get_type();
-
- } else if (!message->target.empty()) {
-
- cfunc="property: "+message->target;
- cname=target->get_type();
-
-
- } else if (message->target) {
-
- cfunc=String(message->target)+"()";
- cname=target->get_type();
- }
-
-
- read_pos+=sizeof(Message);
- if (message->type!=TYPE_NOTIFICATION)
- read_pos+=sizeof(Variant)*message->args;
- }
-#endif
- return false;
-}
-
int MessageQueue::get_max_buffer_usage() const {
return buffer_max_used;
diff --git a/core/message_queue.h b/core/message_queue.h
index 843ab17d94..193d2b6907 100644
--- a/core/message_queue.h
+++ b/core/message_queue.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,6 +33,7 @@
#include "object.h"
#include "os/mutex.h"
#include "os/thread_safe.h"
+
class MessageQueue {
_THREAD_SAFE_CLASS_
@@ -85,7 +86,6 @@ public:
Error push_notification(Object *p_object, int p_notification);
Error push_set(Object *p_object, const StringName &p_prop, const Variant &p_value);
- bool print();
void statistics();
void flush();
diff --git a/core/method_bind.cpp b/core/method_bind.cpp
index 6792b62703..8cace0bbaa 100644
--- a/core/method_bind.cpp
+++ b/core/method_bind.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -36,31 +36,16 @@
#ifdef DEBUG_METHODS_ENABLED
PropertyInfo MethodBind::get_argument_info(int p_argument) const {
- if (p_argument >= 0) {
+ ERR_FAIL_INDEX_V(p_argument, get_argument_count(), PropertyInfo());
- String name = p_argument < arg_names.size() ? String(arg_names[p_argument]) : String("arg" + itos(p_argument));
- PropertyInfo pi(get_argument_type(p_argument), name);
-
- if (!is_vararg() && pi.type == Variant::OBJECT) {
- StringName type_hint = arg_type_hints[p_argument];
-
- if (type_hint != StringName()) {
- pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
- pi.hint_string = type_hint.operator String();
- }
- }
- return pi;
+ PropertyInfo info = _gen_argument_type_info(p_argument);
+ info.name = p_argument < arg_names.size() ? String(arg_names[p_argument]) : String("arg" + itos(p_argument));
+ return info;
+}
- } else {
+PropertyInfo MethodBind::get_return_info() const {
- Variant::Type at = get_argument_type(-1);
- if (at == Variant::OBJECT && ret_type)
- return PropertyInfo(at, "ret", PROPERTY_HINT_RESOURCE_TYPE, ret_type);
- else
- return PropertyInfo(at, "ret");
- }
-
- return PropertyInfo();
+ return _gen_argument_type_info(-1);
}
#endif
@@ -91,16 +76,6 @@ Vector<StringName> MethodBind::get_argument_names() const {
return arg_names;
}
-void MethodBind::set_argument_type_hints(const Vector<StringName> &p_type_hints) {
-
- arg_type_hints = p_type_hints;
-}
-
-Vector<StringName> MethodBind::get_argument_type_hints() const {
-
- return arg_type_hints;
-}
-
#endif
void MethodBind::set_default_arguments(const Vector<Variant> &p_defargs) {
@@ -114,18 +89,13 @@ void MethodBind::_generate_argument_types(int p_count) {
set_argument_count(p_count);
Variant::Type *argt = memnew_arr(Variant::Type, p_count + 1);
-
- arg_type_hints.resize(p_count);
-
argt[0] = _gen_argument_type(-1); // return type
- set_return_type(_gen_argument_type_hint(-1));
for (int i = 0; i < p_count; i++) {
argt[i + 1] = _gen_argument_type(i);
- arg_type_hints[i] = _gen_argument_type_hint(i);
}
- set_argument_types(argt);
+ argument_types = argt;
}
#endif
diff --git a/core/method_bind.h b/core/method_bind.h
index 3b4ff96a19..75f09b2cd9 100644
--- a/core/method_bind.h
+++ b/core/method_bind.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -124,6 +124,9 @@ struct VariantCaster<const T &> {
#endif
+// Object enum casts must go here
+VARIANT_ENUM_CAST(Object::ConnectFlags);
+
#define CHECK_ARG(m_arg) \
if ((m_arg - 1) < p_arg_count) { \
Variant::Type argtype = get_argument_type(m_arg - 1); \
@@ -148,13 +151,35 @@ struct VariantCaster<const T &> {
VARIANT_ENUM_CAST(Vector3::Axis);
VARIANT_ENUM_CAST(Error);
-VARIANT_ENUM_CAST(wchar_t);
VARIANT_ENUM_CAST(Margin);
+VARIANT_ENUM_CAST(Corner);
VARIANT_ENUM_CAST(Orientation);
VARIANT_ENUM_CAST(HAlign);
+VARIANT_ENUM_CAST(VAlign);
+VARIANT_ENUM_CAST(PropertyHint);
+VARIANT_ENUM_CAST(PropertyUsageFlags);
+VARIANT_ENUM_CAST(MethodFlags);
VARIANT_ENUM_CAST(Variant::Type);
VARIANT_ENUM_CAST(Variant::Operator);
+template <>
+struct VariantCaster<wchar_t> {
+ static _FORCE_INLINE_ wchar_t cast(const Variant &p_variant) {
+ return (wchar_t)p_variant.operator int();
+ }
+};
+#ifdef PTRCALL_ENABLED
+template <>
+struct PtrToArg<wchar_t> {
+ _FORCE_INLINE_ static wchar_t convert(const void *p_ptr) {
+ return wchar_t(*reinterpret_cast<const int *>(p_ptr));
+ }
+ _FORCE_INLINE_ static void encode(wchar_t p_val, const void *p_ptr) {
+ *(int *)p_ptr = p_val;
+ }
+};
+#endif
+
class MethodBind {
int method_id;
@@ -163,23 +188,22 @@ class MethodBind {
Vector<Variant> default_arguments;
int default_argument_count;
int argument_count;
-#ifdef DEBUG_METHODS_ENABLED
- Vector<StringName> arg_names;
- Vector<StringName> arg_type_hints;
- Variant::Type *argument_types;
- StringName ret_type;
-#endif
+
bool _const;
bool _returns;
protected:
+#ifdef DEBUG_METHODS_ENABLED
+ Variant::Type *argument_types;
+ Vector<StringName> arg_names;
+#endif
void _set_const(bool p_const);
void _set_returns(bool p_returns);
#ifdef DEBUG_METHODS_ENABLED
virtual Variant::Type _gen_argument_type(int p_arg) const = 0;
- virtual StringName _gen_argument_type_hint(int p_arg) const = 0;
+ virtual PropertyInfo _gen_argument_type_info(int p_arg) const = 0;
void _generate_argument_types(int p_count);
- void set_argument_types(Variant::Type *p_types) { argument_types = p_types; }
+
#endif
void set_argument_count(int p_count) { argument_count = p_count; }
@@ -209,9 +233,6 @@ public:
#ifdef DEBUG_METHODS_ENABLED
- _FORCE_INLINE_ void set_return_type(const StringName &p_type) { ret_type = p_type; }
- _FORCE_INLINE_ StringName get_return_type() const { return ret_type; }
-
_FORCE_INLINE_ Variant::Type get_argument_type(int p_argument) const {
ERR_FAIL_COND_V(p_argument < -1 || p_argument > argument_count, Variant::NIL);
@@ -219,12 +240,11 @@ public:
}
PropertyInfo get_argument_info(int p_argument) const;
+ PropertyInfo get_return_info() const;
- void set_argument_names(const Vector<StringName> &p_names);
+ void set_argument_names(const Vector<StringName> &p_names); //set by class, db, cant be inferred otherwise
Vector<StringName> get_argument_names() const;
- void set_argument_type_hints(const Vector<StringName> &p_type_hints);
- Vector<StringName> get_argument_type_hints() const;
#endif
void set_hint_flags(uint32_t p_hint) { hint_flags = p_hint; }
uint32_t get_hint_flags() const { return hint_flags | (is_const() ? METHOD_FLAG_CONST : 0) | (is_vararg() ? METHOD_FLAG_VARARG : 0); }
@@ -232,28 +252,6 @@ public:
_FORCE_INLINE_ int get_argument_count() const { return argument_count; };
-#if 0
- _FORCE_INLINE_ Variant call_safe(const Variant** p_args,int p_arg_count, Variant::CallError& r_error) {
-
- r_error.error=Variant::CallError::CALL_OK;
- check_call( p_args, &errorarg );
- if (!err)
- return call(p_object, VARIANT_ARG_PASS );
-
- VARIANT_ARGPTRS
- String errstr;
- String methodname = get_instance_type()+"::"+name;
- if (err==CALL_ERROR_ARGUMENT_TYPE) {
- errstr="Invalid Argument to call: '"+methodname+"'. Cannot convert argument "+itos(errorarg+1)+" from "+Variant::get_type_name(get_argument_type(errorarg))+" to "+Variant::get_type_name(argptr[errorarg]->get_type())+".";
- }
- if (err==CALL_ERROR_EXTRA_ARGUMENT) {
- errstr="Invalid call. Member function '"+methodname+"' takes "+itos(get_argument_count())+" argument, but argument "+itos(errorarg+1)+" was received.";
- }
-
- ERR_PRINT(errstr.ascii().get_data());
- return Variant();
- }
-#endif
virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Variant::CallError &r_error) = 0;
#ifdef PTRCALL_ENABLED
@@ -280,18 +278,36 @@ public:
protected:
NativeCall call_method;
+#ifdef DEBUG_METHODS_ENABLED
+
+ MethodInfo arguments;
+#endif
public:
- virtual Variant::Type _gen_argument_type(int p_arg) const {
+#ifdef DEBUG_METHODS_ENABLED
- return Variant::NIL;
+ virtual PropertyInfo _gen_argument_type_info(int p_arg) const {
+
+ if (p_arg < 0) {
+ return arguments.return_val;
+ } else if (p_arg < arguments.arguments.size()) {
+ return arguments.arguments[p_arg];
+ } else {
+ return PropertyInfo(Variant::NIL, "arg_" + itos(p_arg), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_NIL_IS_VARIANT);
+ }
+ }
+
+ virtual Variant::Type _gen_argument_type(int p_arg) const {
+ return _gen_argument_type_info(p_arg).type;
}
- virtual StringName _gen_argument_type_hint(int p_arg) const {
+#else
- return "Variant";
+ virtual Variant::Type _gen_argument_type(int p_arg) const {
+ return Variant::NIL;
}
+#endif
virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Variant::CallError &r_error) {
T *instance = static_cast<T *>(p_object);
@@ -316,7 +332,9 @@ public:
set_argument_names(names);
}
- set_argument_types(at);
+ argument_types = at;
+ arguments = p_info;
+ arguments.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
#endif
}
diff --git a/core/method_ptrcall.h b/core/method_ptrcall.h
index ead58c23c8..2875eb912f 100644
--- a/core/method_ptrcall.h
+++ b/core/method_ptrcall.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -80,6 +80,26 @@ struct PtrToArg {
} \
}
+#define MAKE_PTRARG_BY_REFERENCE(m_type) \
+ template <> \
+ struct PtrToArg<m_type> { \
+ _FORCE_INLINE_ static m_type convert(const void *p_ptr) { \
+ return *reinterpret_cast<const m_type *>(p_ptr); \
+ } \
+ _FORCE_INLINE_ static void encode(const m_type &p_val, void *p_ptr) { \
+ *((m_type *)p_ptr) = p_val; \
+ } \
+ }; \
+ template <> \
+ struct PtrToArg<const m_type &> { \
+ _FORCE_INLINE_ static m_type convert(const void *p_ptr) { \
+ return *reinterpret_cast<const m_type *>(p_ptr); \
+ } \
+ _FORCE_INLINE_ static void encode(const m_type &p_val, void *p_ptr) { \
+ *((m_type *)p_ptr) = p_val; \
+ } \
+ }
+
MAKE_PTRARG(bool);
MAKE_PTRARGCONV(uint8_t, int64_t);
MAKE_PTRARGCONV(int8_t, int64_t);
@@ -95,14 +115,14 @@ MAKE_PTRARG(double);
MAKE_PTRARG(String);
MAKE_PTRARG(Vector2);
MAKE_PTRARG(Rect2);
-MAKE_PTRARG(Vector3);
+MAKE_PTRARG_BY_REFERENCE(Vector3);
MAKE_PTRARG(Transform2D);
-MAKE_PTRARG(Plane);
+MAKE_PTRARG_BY_REFERENCE(Plane);
MAKE_PTRARG(Quat);
-MAKE_PTRARG(Rect3);
-MAKE_PTRARG(Basis);
-MAKE_PTRARG(Transform);
-MAKE_PTRARG(Color);
+MAKE_PTRARG_BY_REFERENCE(Rect3);
+MAKE_PTRARG_BY_REFERENCE(Basis);
+MAKE_PTRARG_BY_REFERENCE(Transform);
+MAKE_PTRARG_BY_REFERENCE(Color);
MAKE_PTRARG(NodePath);
MAKE_PTRARG(RID);
MAKE_PTRARG(Dictionary);
@@ -114,7 +134,7 @@ MAKE_PTRARG(PoolStringArray);
MAKE_PTRARG(PoolVector2Array);
MAKE_PTRARG(PoolVector3Array);
MAKE_PTRARG(PoolColorArray);
-MAKE_PTRARG(Variant);
+MAKE_PTRARG_BY_REFERENCE(Variant);
//this is for Object
@@ -311,8 +331,29 @@ MAKE_DVECARR(Plane);
} \
}
+#define MAKE_STRINGCONV_BY_REFERENCE(m_type) \
+ template <> \
+ struct PtrToArg<m_type> { \
+ _FORCE_INLINE_ static m_type convert(const void *p_ptr) { \
+ m_type s = *reinterpret_cast<const String *>(p_ptr); \
+ return s; \
+ } \
+ _FORCE_INLINE_ static void encode(const m_type &p_vec, void *p_ptr) { \
+ String *arr = reinterpret_cast<String *>(p_ptr); \
+ *arr = p_vec; \
+ } \
+ }; \
+ \
+ template <> \
+ struct PtrToArg<const m_type &> { \
+ _FORCE_INLINE_ static m_type convert(const void *p_ptr) { \
+ m_type s = *reinterpret_cast<const String *>(p_ptr); \
+ return s; \
+ } \
+ }
+
MAKE_STRINGCONV(StringName);
-MAKE_STRINGCONV(IP_Address);
+MAKE_STRINGCONV_BY_REFERENCE(IP_Address);
template <>
struct PtrToArg<PoolVector<Face3> > {
diff --git a/core/node_path.cpp b/core/node_path.cpp
index ad2eae859d..15f950f605 100644
--- a/core/node_path.cpp
+++ b/core/node_path.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/node_path.h b/core/node_path.h
index 31446ab9b4..eb5b9eb6cf 100644
--- a/core/node_path.h
+++ b/core/node_path.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/object.cpp b/core/object.cpp
index 62b2b5d545..23e32a214a 100644
--- a/core/object.cpp
+++ b/core/object.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -65,6 +65,7 @@ PropertyInfo::operator Dictionary() const {
Dictionary d;
d["name"] = name;
+ d["class_name"] = class_name;
d["type"] = type;
d["hint"] = hint;
d["hint_string"] = hint_string;
@@ -82,6 +83,9 @@ PropertyInfo PropertyInfo::from_dict(const Dictionary &p_dict) {
if (p_dict.has("name"))
pi.name = p_dict["name"];
+ if (p_dict.has("class_name"))
+ pi.class_name = p_dict["class_name"];
+
if (p_dict.has("hint"))
pi.hint = PropertyHint(int(p_dict["hint"]));
@@ -270,6 +274,63 @@ MethodInfo::MethodInfo(Variant::Type ret, const String &p_name, const PropertyIn
arguments.push_back(p_param5);
}
+MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name)
+ : name(p_name),
+ flags(METHOD_FLAG_NORMAL),
+ id(0) {
+ return_val = p_ret;
+}
+
+MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1)
+ : name(p_name),
+ flags(METHOD_FLAG_NORMAL),
+ id(0) {
+ return_val = p_ret;
+ arguments.push_back(p_param1);
+}
+
+MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2)
+ : name(p_name),
+ flags(METHOD_FLAG_NORMAL),
+ id(0) {
+ return_val = p_ret;
+ arguments.push_back(p_param1);
+ arguments.push_back(p_param2);
+}
+
+MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3)
+ : name(p_name),
+ flags(METHOD_FLAG_NORMAL),
+ id(0) {
+ return_val = p_ret;
+ arguments.push_back(p_param1);
+ arguments.push_back(p_param2);
+ arguments.push_back(p_param3);
+}
+
+MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4)
+ : name(p_name),
+ flags(METHOD_FLAG_NORMAL),
+ id(0) {
+ return_val = p_ret;
+ arguments.push_back(p_param1);
+ arguments.push_back(p_param2);
+ arguments.push_back(p_param3);
+ arguments.push_back(p_param4);
+}
+
+MethodInfo::MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5)
+ : name(p_name),
+ flags(METHOD_FLAG_NORMAL),
+ id(0) {
+ return_val = p_ret;
+ arguments.push_back(p_param1);
+ arguments.push_back(p_param2);
+ arguments.push_back(p_param3);
+ arguments.push_back(p_param4);
+ arguments.push_back(p_param5);
+}
+
Object::Connection::operator Variant() const {
Dictionary d;
@@ -338,35 +399,6 @@ void Object::get_valid_parents_static(List<String> *p_parents) {
}
void Object::_get_valid_parents_static(List<String> *p_parents) {
}
-#if 0
-//old style set, deprecated
-
-void Object::set(const String& p_name, const Variant& p_value) {
-
- _setv(p_name,p_value);
-
- /*
- if (!_use_builtin_script())
- return;
- */
-
- bool success;
- ClassDB::set_property(this,p_name,p_value,success);
- if (success) {
- return;
- }
-
- if (p_name=="__meta__") {
- metadata=p_value;
- } else if (p_name=="script") {
- set_script(p_value);
- } else if (script_instance) {
- script_instance->set(p_name,p_value);
- }
-
-
-}
-#endif
void Object::set(const StringName &p_name, const Variant &p_value, bool *r_valid) {
@@ -485,34 +517,6 @@ Variant Object::get(const StringName &p_name, bool *r_valid) const {
}
}
-#if 0
-//old style get, deprecated
-Variant Object::get(const String& p_name) const {
-
- Variant ret=_getv(p_name);
- if (ret.get_type()!=Variant::NIL)
- return ret;
-
- bool success;
- ClassDB::get_property(const_cast<Object*>(this),p_name,ret,success);
- if (success) {
- return ret;
- }
-
- if (p_name=="__meta__")
- return metadata;
- else if (p_name=="script")
- return script;
-
- if (script_instance) {
- return script_instance->get(p_name);
- }
-
- return Variant();
-
-}
-#endif
-
void Object::get_property_list(List<PropertyInfo> *p_list, bool p_reversed) const {
if (script_instance && p_reversed) {
@@ -592,22 +596,6 @@ Variant Object::_call_deferred_bind(const Variant **p_args, int p_argcount, Vari
return Variant();
}
-#if 0
-Variant Object::_call_bind(const StringName& p_name, const Variant& p_arg1, const Variant& p_arg2, const Variant& p_arg3, const Variant& p_arg4) {
-
- ERR_FAIL_COND_V(p_argcount<1,Variant());
-
- return call(p_name, p_arg1, p_arg2, p_arg3, p_arg4);
-};
-
-
-
-
-void Object::_call_deferred_bind(const StringName& p_name, const Variant& p_arg1, const Variant& p_arg2, const Variant& p_arg3, const Variant& p_arg4) {
-
- call_deferred(p_name, p_arg1, p_arg2, p_arg3, p_arg4);
-};
-#endif
#ifdef DEBUG_ENABLED
static bool _test_call_error(const StringName &p_func, const Variant::CallError &error) {
@@ -650,7 +638,7 @@ void Object::call_multilevel(const StringName &p_method, const Variant **p_args,
if (p_method == CoreStringNames::get_singleton()->_free) {
#ifdef DEBUG_ENABLED
- if (cast_to<Reference>()) {
+ if (Object::cast_to<Reference>(this)) {
ERR_EXPLAIN("Can't 'free' a reference.");
ERR_FAIL();
return;
@@ -760,54 +748,6 @@ Variant Object::callv(const StringName &p_method, const Array &p_args) {
}
Variant Object::call(const StringName &p_name, VARIANT_ARG_DECLARE) {
-#if 0
- if (p_name==CoreStringNames::get_singleton()->_free) {
-#ifdef DEBUG_ENABLED
- if (cast_to<Reference>()) {
- ERR_EXPLAIN("Can't 'free' a reference.");
- ERR_FAIL_V(Variant());
- }
-#endif
- //must be here, must be before everything,
- memdelete(this);
- return Variant();
- }
-
- VARIANT_ARGPTRS;
-
- int argc=0;
- for(int i=0;i<VARIANT_ARG_MAX;i++) {
- if (argptr[i]->get_type()==Variant::NIL)
- break;
- argc++;
- }
-
- Variant::CallError error;
-
- Variant ret;
-
- if (script_instance) {
- ret = script_instance->call(p_name,argptr,argc,error);
- if (_test_call_error(p_name,error))
- return ret;
- }
-
- MethodBind *method=ClassDB::get_method(get_type_name(),p_name);
-
- if (method) {
-
-
- Variant ret = method->call(this,argptr,argc,error);
- if (_test_call_error(p_name,error))
- return ret;
-
- return ret;
- } else {
-
- }
-
- return Variant();
-#else
VARIANT_ARGPTRS;
@@ -822,52 +762,9 @@ Variant Object::call(const StringName &p_name, VARIANT_ARG_DECLARE) {
Variant ret = call(p_name, argptr, argc, error);
return ret;
-
-#endif
}
void Object::call_multilevel(const StringName &p_name, VARIANT_ARG_DECLARE) {
-#if 0
- if (p_name==CoreStringNames::get_singleton()->_free) {
-#ifdef DEBUG_ENABLED
- if (cast_to<Reference>()) {
- ERR_EXPLAIN("Can't 'free' a reference.");
- ERR_FAIL();
- return;
- }
-#endif
- //must be here, must be before everything,
- memdelete(this);
- return;
- }
-
- VARIANT_ARGPTRS;
-
- int argc=0;
- for(int i=0;i<VARIANT_ARG_MAX;i++) {
- if (argptr[i]->get_type()==Variant::NIL)
- break;
- argc++;
- }
-
- Variant::CallError error;
-
- if (script_instance) {
- script_instance->call(p_name,argptr,argc,error);
- _test_call_error(p_name,error);
-
- }
-
- MethodBind *method=ClassDB::get_method(get_type_name(),p_name);
-
- if (method) {
-
- method->call(this,argptr,argc,error);
- _test_call_error(p_name,error);
-
- }
-
-#else
VARIANT_ARGPTRS;
@@ -880,8 +777,6 @@ void Object::call_multilevel(const StringName &p_name, VARIANT_ARG_DECLARE) {
//Variant::CallError error;
call_multilevel(p_name, argptr, argc);
-
-#endif
}
Variant Object::call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
@@ -896,7 +791,7 @@ Variant Object::call(const StringName &p_method, const Variant **p_args, int p_a
r_error.error = Variant::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS;
return Variant();
}
- if (cast_to<Reference>()) {
+ if (Object::cast_to<Reference>(this)) {
r_error.argument = 0;
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
ERR_EXPLAIN("Can't 'free' a reference.");
@@ -1126,22 +1021,6 @@ struct _ObjectSignalDisconnectData {
StringName method;
};
-#if 0
-void Object::_emit_signal(const StringName& p_name,const Array& p_pargs){
-
- Variant args[VARIANT_ARG_MAX];
-
- int count = p_pargs.size();
-
- for(int i=0;i<count;i++) {
- args[i]=p_pargs[i];
- }
-
- emit_signal(p_name,VARIANT_ARGS_FROM_ARRAY(args));
-}
-
-#endif
-
Variant Object::_emit_signal(const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
r_error.error = Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
@@ -1310,21 +1189,7 @@ void Object::_add_user_signal(const String &p_name, const Array &p_args) {
add_user_signal(mi);
}
-#if 0
-void Object::_emit_signal(const StringName& p_name,const Array& p_pargs){
-
- Variant args[VARIANT_ARG_MAX];
-
- int count = p_pargs.size();
-
- for(int i=0;i<count;i++) {
- args[i]=p_pargs[i];
- }
-
- emit_signal(p_name,VARIANT_ARGS_FROM_ARRAY(args));
-}
-#endif
Array Object::_get_signal_list() const {
List<MethodInfo> signal_list;
@@ -1338,6 +1203,7 @@ Array Object::_get_signal_list() const {
return ret;
}
+
Array Object::_get_signal_connection_list(const String &p_signal) const {
List<Connection> conns;
@@ -1468,7 +1334,7 @@ Error Object::connect(const StringName &p_signal, Object *p_to_object, const Str
Signal::Target target(p_to_object->get_instance_id(), p_to_method);
if (s->slot_map.has(target)) {
- ERR_EXPLAIN("Signal '" + p_signal + "'' already connected to given method '" + p_to_method + "' in that object.");
+ ERR_EXPLAIN("Signal '" + p_signal + "' is already connected to given method '" + p_to_method + "' in that object.");
ERR_FAIL_COND_V(s->slot_map.has(target), ERR_INVALID_PARAMETER);
}
@@ -1560,7 +1426,7 @@ void Object::initialize_class() {
initialized = true;
}
-StringName Object::XL_MESSAGE(const StringName &p_message) const {
+StringName Object::tr(const StringName &p_message) const {
if (!_can_translate || !TranslationServer::get_singleton())
return p_message;
@@ -1568,11 +1434,6 @@ StringName Object::XL_MESSAGE(const StringName &p_message) const {
return TranslationServer::get_singleton()->translate(p_message);
}
-StringName Object::tr(const StringName &p_message) const {
-
- return XL_MESSAGE(p_message);
-}
-
void Object::_clear_internal_resource_paths(const Variant &p_var) {
switch (p_var.get_type()) {
@@ -1712,11 +1573,10 @@ void Object::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_block_signals", "enable"), &Object::set_block_signals);
ClassDB::bind_method(D_METHOD("is_blocking_signals"), &Object::is_blocking_signals);
- ClassDB::bind_method(D_METHOD("set_message_translation", "enable"), &Object::set_message_translation);
- ClassDB::bind_method(D_METHOD("can_translate_messages"), &Object::can_translate_messages);
ClassDB::bind_method(D_METHOD("property_list_changed_notify"), &Object::property_list_changed_notify);
- ClassDB::bind_method(D_METHOD("XL_MESSAGE", "message"), &Object::XL_MESSAGE);
+ ClassDB::bind_method(D_METHOD("set_message_translation", "enable"), &Object::set_message_translation);
+ ClassDB::bind_method(D_METHOD("can_translate_messages"), &Object::can_translate_messages);
ClassDB::bind_method(D_METHOD("tr", "message"), &Object::tr);
ClassDB::bind_method(D_METHOD("is_queued_for_deletion"), &Object::is_queued_for_deletion);
@@ -1726,7 +1586,7 @@ void Object::_bind_methods() {
ADD_SIGNAL(MethodInfo("script_changed"));
BIND_VMETHOD(MethodInfo("_notification", PropertyInfo(Variant::INT, "what")));
- BIND_VMETHOD(MethodInfo("_set:bool", PropertyInfo(Variant::STRING, "property"), PropertyInfo(Variant::NIL, "value")));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "_set", PropertyInfo(Variant::STRING, "property"), PropertyInfo(Variant::NIL, "value")));
#ifdef TOOLS_ENABLED
MethodInfo miget("_get", PropertyInfo(Variant::STRING, "property"));
miget.return_val.name = "Variant";
@@ -1743,9 +1603,9 @@ void Object::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_POSTINITIALIZE);
BIND_CONSTANT(NOTIFICATION_PREDELETE);
- BIND_CONSTANT(CONNECT_DEFERRED);
- BIND_CONSTANT(CONNECT_PERSIST);
- BIND_CONSTANT(CONNECT_ONESHOT);
+ BIND_ENUM_CONSTANT(CONNECT_DEFERRED);
+ BIND_ENUM_CONSTANT(CONNECT_PERSIST);
+ BIND_ENUM_CONSTANT(CONNECT_ONESHOT);
}
void Object::call_deferred(const StringName &p_method, VARIANT_ARG_DECLARE) {
diff --git a/core/object.h b/core/object.h
index 551c3c31b9..6e1ed4308e 100644
--- a/core/object.h
+++ b/core/object.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -83,6 +83,7 @@ enum PropertyHint {
PROPERTY_HINT_PROPERTY_OF_BASE_TYPE, ///< a property of a base type
PROPERTY_HINT_PROPERTY_OF_INSTANCE, ///< a property of an instance
PROPERTY_HINT_PROPERTY_OF_SCRIPT, ///< a property of a script & base
+ PROPERTY_HINT_OBJECT_TOO_BIG, ///< object is too big to send
PROPERTY_HINT_MAX,
};
@@ -106,6 +107,8 @@ enum PropertyUsageFlags {
PROPERTY_USAGE_ANIMATE_AS_TRIGGER = 32768,
PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED = 65536,
PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE = 1 << 17,
+ PROPERTY_USAGE_CLASS_IS_ENUM = 1 << 18,
+ PROPERTY_USAGE_NIL_IS_VARIANT = 1 << 19,
PROPERTY_USAGE_DEFAULT = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_NETWORK,
PROPERTY_USAGE_DEFAULT_INTL = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_NETWORK | PROPERTY_USAGE_INTERNATIONALIZED,
@@ -125,6 +128,7 @@ struct PropertyInfo {
Variant::Type type;
String name;
+ StringName class_name; //for classes
PropertyHint hint;
String hint_string;
uint32_t usage;
@@ -144,13 +148,27 @@ struct PropertyInfo {
hint(PROPERTY_HINT_NONE),
usage(PROPERTY_USAGE_DEFAULT) {
}
- PropertyInfo(Variant::Type p_type, const String p_name, PropertyHint p_hint = PROPERTY_HINT_NONE, const String &p_hint_string = "", uint32_t p_usage = PROPERTY_USAGE_DEFAULT)
+ PropertyInfo(Variant::Type p_type, const String p_name, PropertyHint p_hint = PROPERTY_HINT_NONE, const String &p_hint_string = "", uint32_t p_usage = PROPERTY_USAGE_DEFAULT, const StringName &p_class_name = StringName())
: type(p_type),
name(p_name),
hint(p_hint),
hint_string(p_hint_string),
usage(p_usage) {
+
+ if (hint == PROPERTY_HINT_RESOURCE_TYPE) {
+ class_name = hint_string;
+ } else {
+ class_name = p_class_name;
+ }
}
+ PropertyInfo(const StringName &p_class_name)
+ : type(Variant::OBJECT),
+ hint(PROPERTY_HINT_NONE),
+ usage(PROPERTY_USAGE_DEFAULT) {
+
+ class_name = p_class_name;
+ }
+
bool operator<(const PropertyInfo &p_info) const {
return name < p_info.name;
}
@@ -167,6 +185,7 @@ struct MethodInfo {
uint32_t flags;
int id;
+ inline bool operator==(const MethodInfo &p_method) const { return id == p_method.id; }
inline bool operator<(const MethodInfo &p_method) const { return id == p_method.id ? (name < p_method.name) : (id < p_method.id); }
operator Dictionary() const;
@@ -186,6 +205,12 @@ struct MethodInfo {
MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3);
MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4);
MethodInfo(Variant::Type ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5);
+ MethodInfo(const PropertyInfo &p_ret, const String &p_name);
+ MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1);
+ MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2);
+ MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3);
+ MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4);
+ MethodInfo(const PropertyInfo &p_ret, const String &p_name, const PropertyInfo &p_param1, const PropertyInfo &p_param2, const PropertyInfo &p_param3, const PropertyInfo &p_param4, const PropertyInfo &p_param5);
};
// old cast_to
@@ -443,7 +468,7 @@ private:
mutable StringName _class_name;
mutable const StringName *_class_ptr;
- void _add_user_signal(const String &p_name, const Array &p_pargs = Array());
+ void _add_user_signal(const String &p_name, const Array &p_args = Array());
bool _has_user_signal(const StringName &p_name) const;
Variant _emit_signal(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
Array _get_signal_list() const;
@@ -540,46 +565,46 @@ public:
void add_change_receptor(Object *p_receptor);
void remove_change_receptor(Object *p_receptor);
-// TODO: ensure 'this' is never NULL since it's UB, but by now, avoid warning flood
-#ifdef __clang__
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wundefined-bool-conversion"
-#endif
-
template <class T>
- T *cast_to() {
-
+ static T *cast_to(Object *p_object) {
+#ifdef DEBUG_ENABLED
+ // TODO there are some legitimate reasons to pass NULL as p_object.
+ // we need to figure out how to deal with that in debug mode.
+ // This code will return NULL for a NULL input in release mode also.
+ ERR_FAIL_COND_V(p_object == NULL, NULL);
+#endif
#ifndef NO_SAFE_CAST
- return SAFE_CAST<T *>(this);
+ return dynamic_cast<T *>(p_object);
#else
- if (!this)
+ if (!p_object)
return NULL;
- if (is_class_ptr(T::get_class_ptr_static()))
- return static_cast<T *>(this);
+ if (p_object->is_class_ptr(T::get_class_ptr_static()))
+ return static_cast<T *>(p_object);
else
return NULL;
#endif
}
template <class T>
- const T *cast_to() const {
-
+ static const T *cast_to(const Object *p_object) {
+#ifdef DEBUG_ENABLED
+ // TODO there are some legitimate reasons to pass NULL as p_object.
+ // we need to figure out how to deal with that in debug mode.
+ // This code will return NULL for a NULL input in release mode also.
+ ERR_FAIL_COND_V(p_object == NULL, NULL);
+#endif
#ifndef NO_SAFE_CAST
- return SAFE_CAST<const T *>(this);
+ return dynamic_cast<const T *>(p_object);
#else
- if (!this)
+ if (!p_object)
return NULL;
- if (is_class_ptr(T::get_class_ptr_static()))
- return static_cast<const T *>(this);
+ if (p_object->is_class_ptr(T::get_class_ptr_static()))
+ return static_cast<const T *>(p_object);
else
return NULL;
#endif
}
-#ifdef __clang__
-#pragma clang diagnostic pop
-#endif
-
enum {
NOTIFICATION_POSTINITIALIZE = 0,
@@ -678,8 +703,7 @@ public:
virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const;
- StringName XL_MESSAGE(const StringName &p_message) const; //translate message (internationalization)
- StringName tr(const StringName &p_message) const; //translate message (alternative)
+ StringName tr(const StringName &p_message) const; // translate message (internationalization)
bool _is_queued_for_deletion; // set to true by SceneTree::queue_delete()
bool is_queued_for_deletion() const;
diff --git a/core/os/copymem.h b/core/os/copymem.h
index 3ad2403f9c..789dce76e7 100644
--- a/core/os/copymem.h
+++ b/core/os/copymem.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/dir_access.cpp b/core/os/dir_access.cpp
index 391ae78c85..f24d6d16ca 100644
--- a/core/os/dir_access.cpp
+++ b/core/os/dir_access.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/dir_access.h b/core/os/dir_access.h
index 4bee229555..6ad8b4c49b 100644
--- a/core/os/dir_access.h
+++ b/core/os/dir_access.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp
index 3bd5ac3f41..b969b58bfb 100644
--- a/core/os/file_access.cpp
+++ b/core/os/file_access.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -475,9 +475,9 @@ void FileAccess::store_buffer(const uint8_t *p_src, int p_length) {
store_8(p_src[i]);
}
-Vector<uint8_t> FileAccess::get_file_as_array(const String &p_file) {
+Vector<uint8_t> FileAccess::get_file_as_array(const String &p_path) {
- FileAccess *f = FileAccess::open(p_file, READ);
+ FileAccess *f = FileAccess::open(p_path, READ);
ERR_FAIL_COND_V(!f, Vector<uint8_t>());
Vector<uint8_t> data;
data.resize(f->get_len());
diff --git a/core/os/file_access.h b/core/os/file_access.h
index 6d3e491167..8393f0530b 100644
--- a/core/os/file_access.h
+++ b/core/os/file_access.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -129,7 +129,7 @@ public:
virtual void store_real(real_t p_real);
virtual void store_string(const String &p_string);
- virtual void store_line(const String &p_string);
+ virtual void store_line(const String &p_line);
virtual void store_pascal_string(const String &p_string);
virtual String get_pascal_string();
diff --git a/core/os/input.cpp b/core/os/input.cpp
index c7b32b939a..65752662d7 100644
--- a/core/os/input.cpp
+++ b/core/os/input.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -86,10 +86,10 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(Vector2()));
ClassDB::bind_method(D_METHOD("parse_input_event", "event"), &Input::parse_input_event);
- BIND_CONSTANT(MOUSE_MODE_VISIBLE);
- BIND_CONSTANT(MOUSE_MODE_HIDDEN);
- BIND_CONSTANT(MOUSE_MODE_CAPTURED);
- BIND_CONSTANT(MOUSE_MODE_CONFINED);
+ BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE);
+ BIND_ENUM_CONSTANT(MOUSE_MODE_HIDDEN);
+ BIND_ENUM_CONSTANT(MOUSE_MODE_CAPTURED);
+ BIND_ENUM_CONSTANT(MOUSE_MODE_CONFINED);
ADD_SIGNAL(MethodInfo("joy_connection_changed", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::BOOL, "connected")));
}
diff --git a/core/os/input.h b/core/os/input.h
index 6759c624e3..f98b97e647 100644
--- a/core/os/input.h
+++ b/core/os/input.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp
index cb38eb67b6..88037859aa 100644
--- a/core/os/input_event.cpp
+++ b/core/os/input_event.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,11 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "input_event.h"
+
#include "input_map.h"
#include "os/keyboard.h"
-/**
- *
- */
void InputEvent::set_id(uint32_t p_id) {
id = p_id;
@@ -99,25 +97,6 @@ bool InputEvent::is_action_type() const {
return false;
}
-#if 0
-if (String(p_method) == "is_action" && p_argidx == 0) {
-
- List<PropertyInfo> pinfo;
- ProjectSettings::get_singleton()->get_property_list(&pinfo);
-
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- const PropertyInfo &pi = E->get();
-
- if (!pi.name.begins_with("input/"))
- continue;
-
- String name = pi.name.substr(pi.name.find("/") + 1, pi.name.length());
- result.insert("\"" + name + "\"");
- }
-
-} else
-#endif
-
void InputEvent::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_id", "id"), &InputEvent::set_id);
@@ -483,6 +462,38 @@ bool InputEventMouseButton::action_match(const Ref<InputEvent> &p_event) const {
return mb->button_index == button_index;
}
+String InputEventMouseButton::as_text() const {
+
+ String button_index_string = "";
+ switch (get_button_index()) {
+ case BUTTON_LEFT:
+ button_index_string = "BUTTON_LEFT";
+ break;
+ case BUTTON_RIGHT:
+ button_index_string = "BUTTON_RIGHT";
+ break;
+ case BUTTON_MIDDLE:
+ button_index_string = "BUTTON_MIDDLE";
+ break;
+ case BUTTON_WHEEL_UP:
+ button_index_string = "BUTTON_WHEEL_UP";
+ break;
+ case BUTTON_WHEEL_DOWN:
+ button_index_string = "BUTTON_WHEEL_DOWN";
+ break;
+ case BUTTON_WHEEL_LEFT:
+ button_index_string = "BUTTON_WHEEL_LEFT";
+ break;
+ case BUTTON_WHEEL_RIGHT:
+ button_index_string = "BUTTON_WHEEL_RIGHT";
+ break;
+ default:
+ button_index_string = itos(get_button_index());
+ break;
+ }
+ return "InputEventMouseButton : button_index=" + button_index_string + ", pressed=" + (pressed ? "true" : "false") + ", position=(" + String(get_position()) + "), button_mask=" + itos(get_button_mask()) + ", doubleclick=" + (doubleclick ? "true" : "false");
+}
+
void InputEventMouseButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_factor", "factor"), &InputEventMouseButton::set_factor);
@@ -559,6 +570,26 @@ Ref<InputEvent> InputEventMouseMotion::xformed_by(const Transform2D &p_xform, co
return mm;
}
+String InputEventMouseMotion::as_text() const {
+
+ String button_mask_string = "";
+ switch (get_button_mask()) {
+ case BUTTON_MASK_LEFT:
+ button_mask_string = "BUTTON_MASK_LEFT";
+ break;
+ case BUTTON_MASK_MIDDLE:
+ button_mask_string = "BUTTON_MASK_MIDDLE";
+ break;
+ case BUTTON_MASK_RIGHT:
+ button_mask_string = "BUTTON_MASK_RIGHT";
+ break;
+ default:
+ button_mask_string = itos(get_button_mask());
+ break;
+ }
+ return "InputEventMouseMotion : button_mask=" + button_mask_string + ", position=(" + String(get_position()) + "), relative=(" + String(get_relative()) + "), speed=(" + String(get_speed()) + ")";
+}
+
void InputEventMouseMotion::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_relative", "relative"), &InputEventMouseMotion::set_relative);
@@ -609,6 +640,11 @@ bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event) const
return (axis == jm->axis && (axis_value < 0) == (jm->axis_value < 0));
}
+String InputEventJoypadMotion::as_text() const {
+
+ return "InputEventJoypadMotion : axis=" + itos(axis) + ", axis_value=" + String(Variant(axis_value));
+}
+
void InputEventJoypadMotion::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_axis", "axis"), &InputEventJoypadMotion::set_axis);
@@ -665,6 +701,11 @@ bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event) const
return button_index == jb->button_index;
}
+String InputEventJoypadButton::as_text() const {
+
+ return "InputEventJoypadButton : button_index=" + itos(button_index) + ", pressed=" + (pressed ? "true" : "false") + ", pressure=" + String(Variant(pressure));
+}
+
void InputEventJoypadButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_button_index", "button_index"), &InputEventJoypadButton::set_button_index);
@@ -730,6 +771,11 @@ Ref<InputEvent> InputEventScreenTouch::xformed_by(const Transform2D &p_xform, co
return st;
}
+String InputEventScreenTouch::as_text() const {
+
+ return "InputEventScreenTouch : index=" + itos(index) + ", pressed=" + (pressed ? "true" : "false") + ", position=(" + String(get_position()) + ")";
+}
+
void InputEventScreenTouch::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_index", "index"), &InputEventScreenTouch::set_index);
@@ -808,6 +854,11 @@ Ref<InputEvent> InputEventScreenDrag::xformed_by(const Transform2D &p_xform, con
return sd;
}
+String InputEventScreenDrag::as_text() const {
+
+ return "InputEventScreenDrag : index=" + itos(index) + ", position=(" + String(get_position()) + "), relative=(" + String(get_relative()) + "), speed=(" + String(get_speed()) + ")";
+}
+
void InputEventScreenDrag::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_index", "index"), &InputEventScreenDrag::set_index);
@@ -857,6 +908,11 @@ bool InputEventAction::is_action(const StringName &p_action) const {
return action == p_action;
}
+String InputEventAction::as_text() const {
+
+ return "InputEventAction : action=" + action + ", pressed=(" + (pressed ? "true" : "false");
+}
+
void InputEventAction::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_action", "action"), &InputEventAction::set_action);
diff --git a/core/os/input_event.h b/core/os/input_event.h
index d1fd7cc90f..5dc0f91d5f 100644
--- a/core/os/input_event.h
+++ b/core/os/input_event.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -307,6 +307,7 @@ public:
virtual bool action_match(const Ref<InputEvent> &p_event) const;
virtual bool is_action_type() const { return true; }
+ virtual String as_text() const;
InputEventMouseButton();
};
@@ -328,6 +329,7 @@ public:
Vector2 get_speed() const;
virtual Ref<InputEvent> xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs = Vector2()) const;
+ virtual String as_text() const;
InputEventMouseMotion();
};
@@ -352,6 +354,7 @@ public:
virtual bool action_match(const Ref<InputEvent> &p_event) const;
virtual bool is_action_type() const { return true; }
+ virtual String as_text() const;
InputEventJoypadMotion();
};
@@ -378,6 +381,7 @@ public:
virtual bool action_match(const Ref<InputEvent> &p_event) const;
virtual bool is_action_type() const { return true; }
+ virtual String as_text() const;
InputEventJoypadButton();
};
@@ -402,6 +406,7 @@ public:
virtual bool is_pressed() const;
virtual Ref<InputEvent> xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs = Vector2()) const;
+ virtual String as_text() const;
InputEventScreenTouch();
};
@@ -431,6 +436,7 @@ public:
Vector2 get_speed() const;
virtual Ref<InputEvent> xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs = Vector2()) const;
+ virtual String as_text() const;
InputEventScreenDrag();
};
@@ -455,6 +461,7 @@ public:
virtual bool is_action(const StringName &p_action) const;
virtual bool is_action_type() const { return true; }
+ virtual String as_text() const;
InputEventAction();
};
diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp
index 9b3e376ea6..30e7d5e791 100644
--- a/core/os/keyboard.cpp
+++ b/core/os/keyboard.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/keyboard.h b/core/os/keyboard.h
index 1ed93e3540..509ff23a93 100644
--- a/core/os/keyboard.h
+++ b/core/os/keyboard.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -324,7 +324,7 @@ enum KeyModifierMask {
};
String keycode_get_string(uint32_t p_code);
-bool keycode_has_unicode(uint32_t p_unicode);
+bool keycode_has_unicode(uint32_t p_keycode);
int find_keycode(const String &p_code);
int keycode_get_count();
int keycode_get_value_by_index(int p_index);
diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp
index 248f5537c6..b146d370f1 100644
--- a/core/os/main_loop.cpp
+++ b/core/os/main_loop.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,6 +54,8 @@ void MainLoop::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_WM_QUIT_REQUEST);
BIND_CONSTANT(NOTIFICATION_WM_UNFOCUS_REQUEST);
BIND_CONSTANT(NOTIFICATION_OS_MEMORY_WARNING);
+ BIND_CONSTANT(NOTIFICATION_TRANSLATION_CHANGED);
+ BIND_CONSTANT(NOTIFICATION_WM_ABOUT);
};
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 23b352468e..fd76d8454f 100644
--- a/core/os/main_loop.h
+++ b/core/os/main_loop.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -56,7 +56,11 @@ public:
NOTIFICATION_WM_GO_BACK_REQUEST = 7,
NOTIFICATION_WM_UNFOCUS_REQUEST = 8,
NOTIFICATION_OS_MEMORY_WARNING = 9,
- NOTIFICATION_TRANSLATION_CHANGED = 10,
+ // Note: NOTIFICATION_TRANSLATION_CHANGED and NOTIFICATION_WM_ABOUT used to have id=10 and id=11 but these
+ // conflict with NOTIFICATION_ENTER_TREE (id=10) and NOTIFICATION_EXIT_TREE (id=11), so id=90 and id=91
+ // fixes this issue.
+ NOTIFICATION_TRANSLATION_CHANGED = 90,
+ NOTIFICATION_WM_ABOUT = 91,
};
virtual void input_event(const Ref<InputEvent> &p_event);
diff --git a/core/os/memory.cpp b/core/os/memory.cpp
index acc960acd9..74d5cbbea1 100644
--- a/core/os/memory.cpp
+++ b/core/os/memory.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/memory.h b/core/os/memory.h
index e1d7138ad5..f8b3da579b 100644
--- a/core/os/memory.h
+++ b/core/os/memory.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/mutex.cpp b/core/os/mutex.cpp
index 134d313bdf..d3edc2c423 100644
--- a/core/os/mutex.cpp
+++ b/core/os/mutex.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/mutex.h b/core/os/mutex.h
index 80a30b0b26..9e353df33d 100644
--- a/core/os/mutex.h
+++ b/core/os/mutex.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/os.cpp b/core/os/os.cpp
index 3a06a3fa8f..1292b7eeed 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -171,7 +171,7 @@ static FileAccess *_OSPRF = NULL;
static void _OS_printres(Object *p_obj) {
- Resource *res = p_obj->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(p_obj);
if (!res)
return;
diff --git a/core/os/os.h b/core/os/os.h
index 4d64e4a9f0..258708eea2 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -164,9 +164,9 @@ public:
virtual int get_screen_count() const { return 1; }
virtual int get_current_screen() const { return 0; }
virtual void set_current_screen(int p_screen) {}
- virtual Point2 get_screen_position(int p_screen = 0) const { return Point2(); }
- virtual Size2 get_screen_size(int p_screen = 0) const { return get_window_size(); }
- virtual int get_screen_dpi(int p_screen = 0) const { return 72; }
+ virtual Point2 get_screen_position(int p_screen = -1) const { return Point2(); }
+ virtual Size2 get_screen_size(int p_screen = -1) const { return get_window_size(); }
+ virtual int get_screen_dpi(int p_screen = -1) const { return 72; }
virtual Point2 get_window_position() const { return Vector2(); }
virtual void set_window_position(const Point2 &p_position) {}
virtual Size2 get_window_size() const = 0;
diff --git a/core/os/power.h b/core/os/power.h
index dbf4c75c59..59a091012e 100644
--- a/core/os/power.h
+++ b/core/os/power.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/rw_lock.cpp b/core/os/rw_lock.cpp
index 0427374de4..d0ad249afa 100644
--- a/core/os/rw_lock.cpp
+++ b/core/os/rw_lock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/rw_lock.h b/core/os/rw_lock.h
index 253bd260ee..c13eb8147c 100644
--- a/core/os/rw_lock.h
+++ b/core/os/rw_lock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/semaphore.cpp b/core/os/semaphore.cpp
index ce75186001..ea0a02ae22 100644
--- a/core/os/semaphore.cpp
+++ b/core/os/semaphore.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/semaphore.h b/core/os/semaphore.h
index f2be966979..c169e0212e 100644
--- a/core/os/semaphore.h
+++ b/core/os/semaphore.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/shell.cpp b/core/os/shell.cpp
index 9bf2d4466d..07e4924c38 100644
--- a/core/os/shell.cpp
+++ b/core/os/shell.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/shell.h b/core/os/shell.h
index 33044ee10e..7cb95dd5c8 100644
--- a/core/os/shell.h
+++ b/core/os/shell.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/thread.cpp b/core/os/thread.cpp
index bd565334c3..af8ae847dc 100644
--- a/core/os/thread.cpp
+++ b/core/os/thread.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/thread.h b/core/os/thread.h
index 1103f67ff2..697494708e 100644
--- a/core/os/thread.h
+++ b/core/os/thread.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/thread_dummy.cpp b/core/os/thread_dummy.cpp
index 88c111297d..39b5bdd9b8 100644
--- a/core/os/thread_dummy.cpp
+++ b/core/os/thread_dummy.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/thread_dummy.h b/core/os/thread_dummy.h
index 64941a71f8..56e7061eee 100644
--- a/core/os/thread_dummy.h
+++ b/core/os/thread_dummy.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/thread_safe.cpp b/core/os/thread_safe.cpp
index 486e072985..a49d412254 100644
--- a/core/os/thread_safe.cpp
+++ b/core/os/thread_safe.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/os/thread_safe.h b/core/os/thread_safe.h
index 0cecf33cc2..f9a1d0f62b 100644
--- a/core/os/thread_safe.h
+++ b/core/os/thread_safe.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/packed_data_container.cpp b/core/packed_data_container.cpp
index eb4aeb758a..4040680c6d 100644
--- a/core/packed_data_container.cpp
+++ b/core/packed_data_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/packed_data_container.h b/core/packed_data_container.h
index bab994fc94..e6a674d7ce 100644
--- a/core/packed_data_container.h
+++ b/core/packed_data_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/pair.h b/core/pair.h
index d4b1897537..f780c79c81 100644
--- a/core/pair.h
+++ b/core/pair.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -37,7 +37,7 @@ struct Pair {
S second;
Pair() {}
- Pair(F p_first, S p_second)
+ Pair(F p_first, const S &p_second)
: first(p_first),
second(p_second) {
}
diff --git a/core/path_remap.cpp b/core/path_remap.cpp
index c5961213e8..d8fa2748bc 100644
--- a/core/path_remap.cpp
+++ b/core/path_remap.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/path_remap.h b/core/path_remap.h
index 95249c6334..04da4c1510 100644
--- a/core/path_remap.h
+++ b/core/path_remap.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/pool_allocator.cpp b/core/pool_allocator.cpp
index d563925f3b..c122d21545 100644
--- a/core/pool_allocator.cpp
+++ b/core/pool_allocator.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/pool_allocator.h b/core/pool_allocator.h
index f62e410e66..12de4d58e8 100644
--- a/core/pool_allocator.h
+++ b/core/pool_allocator.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/print_string.cpp b/core/print_string.cpp
index 4a4c8093ca..92a04cbf0b 100644
--- a/core/print_string.cpp
+++ b/core/print_string.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/print_string.h b/core/print_string.h
index c4cd610856..9f8420c31a 100644
--- a/core/print_string.h
+++ b/core/print_string.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index 4a1b35ea4a..ce1d7918db 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -733,46 +733,6 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
}
return OK;
-
-#if 0
- Error err = file->open(dst_file,FileAccess::WRITE);
- if (err) {
- memdelete(file);
- ERR_EXPLAIN("Couldn't save project.godot");
- ERR_FAIL_COND_V(err,err)
- }
-
-
- for(Map<String,List<String> >::Element *E=props.front();E;E=E->next()) {
-
- if (E!=props.front())
- file->store_string("\n");
-
- if (E->key()!="")
- file->store_string("["+E->key()+"]\n\n");
- for(List<String>::Element *F=E->get().front();F;F=F->next()) {
-
- String key = F->get();
- if (E->key()!="")
- key=E->key()+"/"+key;
- Variant value;
-
- if (p_custom.has(key))
- value=p_custom[key];
- else
- value = get(key);
-
- file->store_string(F->get()+"="+_encode_variant(value)+"\n");
-
- }
- }
-
- file->close();
- memdelete(file);
-
-
- return OK;
-#endif
}
Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default) {
diff --git a/core/project_settings.h b/core/project_settings.h
index c64bb393d1..5c8907c74e 100644
--- a/core/project_settings.h
+++ b/core/project_settings.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -158,7 +158,7 @@ public:
bool is_using_datapack() const;
- void set_registering_order(bool p_registering);
+ void set_registering_order(bool p_enable);
ProjectSettings();
~ProjectSettings();
diff --git a/core/ref_ptr.cpp b/core/ref_ptr.cpp
index c2128fd45d..4a27b523fb 100644
--- a/core/ref_ptr.cpp
+++ b/core/ref_ptr.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -69,7 +69,7 @@ RID RefPtr::get_rid() const {
Ref<Reference> *ref = reinterpret_cast<Ref<Reference> *>(&data[0]);
if (ref->is_null())
return RID();
- Resource *res = (*ref)->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(ref->ptr());
if (res)
return res->get_rid();
return RID();
diff --git a/core/ref_ptr.h b/core/ref_ptr.h
index b76bbab7fa..bb98f0507a 100644
--- a/core/ref_ptr.h
+++ b/core/ref_ptr.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/reference.cpp b/core/reference.cpp
index e9629ee7c0..bb70628cbe 100644
--- a/core/reference.cpp
+++ b/core/reference.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -98,7 +98,7 @@ Variant WeakRef::get_ref() const {
Object *obj = ObjectDB::get_instance(ref);
if (!obj)
return Variant();
- Reference *r = obj->cast_to<Reference>();
+ Reference *r = cast_to<Reference>(obj);
if (r) {
return REF(r);
@@ -124,44 +124,3 @@ void WeakRef::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_ref"), &WeakRef::get_ref);
}
-#if 0
-
-Reference * RefBase::get_reference_from_ref(const RefBase &p_base) {
-
- return p_base.get_reference();
-}
-void RefBase::ref_inc(Reference *p_reference) {
-
- p_reference->refcount.ref();
-}
-bool RefBase::ref_dec(Reference *p_reference) {
-
- bool ref = p_reference->refcount.unref();
- return ref;
-}
-
-Reference *RefBase::first_ref(Reference *p_reference) {
-
- if (p_reference->refcount.ref()) {
-
- // this may fail in the scenario of two threads assigning the pointer for the FIRST TIME
- // at the same time, which is never likely to happen (would be crazy to do)
- // so don't do it.
-
- if (p_reference->refcount_init.get()>0) {
- p_reference->refcount_init.unref();
- p_reference->refcount.unref(); // first referencing is already 1, so compensate for the ref above
- }
-
- return p_reference;
- } else {
-
- return 0;
- }
-
-}
-char * RefBase::get_refptr_data(const RefPtr &p_refptr) const {
-
- return p_refptr.data;
-}
-#endif
diff --git a/core/reference.h b/core/reference.h
index 7f48f8323e..5fe8296314 100644
--- a/core/reference.h
+++ b/core/reference.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -59,21 +59,6 @@ public:
~Reference();
};
-#if 0
-class RefBase {
-protected:
- void ref_inc(Reference *p_reference);
- bool ref_dec(Reference *p_reference);
- Reference *first_ref(Reference *p_reference);
- Reference * get_reference_from_ref(const RefBase &p_base);
- virtual Reference * get_reference() const=0;
- char * get_refptr_data(const RefPtr &p_refptr) const;
-public:
-
- virtual ~RefBase() {}
-};
-#endif
-
template <class T>
class Ref {
@@ -151,20 +136,10 @@ public:
return refptr;
};
-#if 0
- // go to RefPtr
- operator RefPtr() const {
-
- return get_ref_ptr();
- }
-#endif
-
-#if 1
operator Variant() const {
return Variant(get_ref_ptr());
}
-#endif
void operator=(const Ref &p_from) {
@@ -180,7 +155,7 @@ public:
return;
}
Ref r;
- r.reference = refb->cast_to<T>();
+ r.reference = Object::cast_to<T>(refb);
ref(r);
r.reference = NULL;
}
@@ -194,7 +169,7 @@ public:
return;
}
Ref r;
- r.reference = refb->cast_to<T>();
+ r.reference = Object::cast_to<T>(refb);
ref(r);
r.reference = NULL;
}
@@ -209,7 +184,7 @@ public:
return;
}
Ref r;
- r.reference = refb->cast_to<T>();
+ r.reference = Object::cast_to<T>(refb);
ref(r);
r.reference = NULL;
}
@@ -230,7 +205,7 @@ public:
return;
}
Ref r;
- r.reference = refb->cast_to<T>();
+ r.reference = Object::cast_to<T>(refb);
ref(r);
r.reference = NULL;
}
@@ -254,7 +229,7 @@ public:
return;
}
Ref r;
- r.reference = refb->cast_to<T>();
+ r.reference = Object::cast_to<T>(refb);
ref(r);
r.reference = NULL;
}
@@ -269,7 +244,7 @@ public:
return;
}
Ref r;
- r.reference = refb->cast_to<T>();
+ r.reference = Object::cast_to<T>(refb);
ref(r);
r.reference = NULL;
}
@@ -374,12 +349,16 @@ struct PtrToArg<const RefPtr &> {
}
};
+#endif // PTRCALL_ENABLED
+
+#ifdef DEBUG_METHODS_ENABLED
+
template <class T>
struct GetTypeInfo<Ref<T> > {
enum { VARIANT_TYPE = Variant::OBJECT };
- static inline StringName get_class_name() {
- return T::get_class_static();
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, T::get_class_static());
}
};
@@ -387,10 +366,11 @@ template <class T>
struct GetTypeInfo<const Ref<T> &> {
enum { VARIANT_TYPE = Variant::OBJECT };
- static inline StringName get_class_name() {
- return T::get_class_static();
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, T::get_class_static());
}
};
-#endif
+#endif // DEBUG_METHODS_ENABLED
+
#endif // REFERENCE_H
diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp
index 43f781af55..27c31127a4 100644
--- a/core/register_core_types.cpp
+++ b/core/register_core_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -39,6 +39,7 @@
#include "input_map.h"
#include "io/config_file.h"
#include "io/http_client.h"
+#include "io/marshalls.h"
#include "io/packet_peer.h"
#include "io/packet_peer_udp.h"
#include "io/pck_packer.h"
@@ -56,7 +57,6 @@
#include "project_settings.h"
#include "translation.h"
#include "undo_redo.h"
-
static ResourceFormatSaverBinary *resource_saver_binary = NULL;
static ResourceFormatLoaderBinary *resource_loader_binary = NULL;
static ResourceFormatImporter *resource_format_importer = NULL;
@@ -75,6 +75,8 @@ static _Geometry *_geometry = NULL;
extern Mutex *_global_mutex;
+extern void register_global_constants();
+extern void unregister_global_constants();
extern void register_variant_methods();
extern void unregister_variant_methods();
@@ -88,6 +90,7 @@ void register_core_types() {
StringName::setup();
+ register_global_constants();
register_variant_methods();
CoreStringNames::create();
@@ -157,6 +160,7 @@ void register_core_types() {
ClassDB::register_class<PackedDataContainer>();
ClassDB::register_virtual_class<PackedDataContainerRef>();
ClassDB::register_class<AStar>();
+ ClassDB::register_class<EncodedObjectAsID>();
ip = IP::create();
@@ -217,6 +221,7 @@ void unregister_core_types() {
ObjectDB::cleanup();
unregister_variant_methods();
+ unregister_global_constants();
ClassDB::cleanup();
ResourceCache::clear();
diff --git a/core/register_core_types.h b/core/register_core_types.h
index 794c45dff0..cf84d70930 100644
--- a/core/register_core_types.h
+++ b/core/register_core_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/resource.cpp b/core/resource.cpp
index a0b0fd24e1..37d42226b4 100644
--- a/core/resource.cpp
+++ b/core/resource.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/resource.h b/core/resource.h
index 5a4e45da36..7dc3b67291 100644
--- a/core/resource.h
+++ b/core/resource.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -107,7 +107,7 @@ public:
int get_subindex() const;
virtual Ref<Resource> duplicate(bool p_subresources = false) const;
- Ref<Resource> duplicate_for_local_scene(Node *p_scene, Map<Ref<Resource>, Ref<Resource> > &remap_cache);
+ Ref<Resource> duplicate_for_local_scene(Node *p_for_scene, Map<Ref<Resource>, Ref<Resource> > &remap_cache);
void set_local_to_scene(bool p_enable);
bool is_local_to_scene() const;
diff --git a/core/rid.cpp b/core/rid.cpp
index ca1d2be421..cb16715936 100644
--- a/core/rid.cpp
+++ b/core/rid.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/rid.h b/core/rid.h
index a93d7d912e..276375167e 100644
--- a/core/rid.h
+++ b/core/rid.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/ring_buffer.h b/core/ring_buffer.h
index 8b32bb5e10..6c882f1ef9 100644
--- a/core/ring_buffer.h
+++ b/core/ring_buffer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/safe_refcount.cpp b/core/safe_refcount.cpp
index 971e9ad1d5..c330a983a7 100644
--- a/core/safe_refcount.cpp
+++ b/core/safe_refcount.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/safe_refcount.h b/core/safe_refcount.h
index ed0620c777..802d84cccc 100644
--- a/core/safe_refcount.h
+++ b/core/safe_refcount.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/script_debugger_local.cpp b/core/script_debugger_local.cpp
index d2ccf495ae..c2632da38b 100644
--- a/core/script_debugger_local.cpp
+++ b/core/script_debugger_local.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/script_debugger_local.h b/core/script_debugger_local.h
index d32edb503b..097c7c41f3 100644
--- a/core/script_debugger_local.h
+++ b/core/script_debugger_local.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp
index 3628f2ecaf..8875732b8e 100644
--- a/core/script_debugger_remote.cpp
+++ b/core/script_debugger_remote.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,10 +30,10 @@
#include "script_debugger_remote.h"
#include "io/ip.h"
+#include "io/marshalls.h"
#include "os/input.h"
#include "os/os.h"
#include "project_settings.h"
-
void ScriptDebuggerRemote::_send_video_memory() {
List<ResourceUsage> usage;
@@ -120,6 +120,18 @@ static ObjectID safe_get_instance_id(const Variant &p_v) {
}
}
+void ScriptDebuggerRemote::_put_variable(const String &p_name, const Variant &p_variable) {
+
+ packet_peer_stream->put_var(p_name);
+ int len = 0;
+ Error err = encode_variant(p_variable, NULL, len);
+ if (len > packet_peer_stream->get_output_buffer_max_size()) { //limit to max size
+ packet_peer_stream->put_var(Variant());
+ } else {
+ packet_peer_stream->put_var(p_variable);
+ }
+}
+
void ScriptDebuggerRemote::debug(ScriptLanguage *p_script, bool p_can_continue) {
//this function is called when there is a debugger break (bug on script)
@@ -130,8 +142,6 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script, bool p_can_continue)
ERR_FAIL();
}
- OS::get_singleton()->enable_for_stealing_focus(ProjectSettings::get_singleton()->get("editor_pid"));
-
packet_peer_stream->put_var("debug_enter");
packet_peer_stream->put_var(2);
packet_peer_stream->put_var(p_can_continue);
@@ -210,14 +220,7 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script, bool p_can_continue)
while (E) {
- if (F->get().get_type() == Variant::OBJECT) {
- packet_peer_stream->put_var("*" + E->get());
- String pretty_print = F->get().operator String();
- packet_peer_stream->put_var(pretty_print.ascii().get_data());
- } else {
- packet_peer_stream->put_var(E->get());
- packet_peer_stream->put_var(F->get());
- }
+ _put_variable(E->get(), F->get());
E = E->next();
F = F->next();
@@ -231,15 +234,7 @@ void ScriptDebuggerRemote::debug(ScriptLanguage *p_script, bool p_can_continue)
List<Variant>::Element *F = local_vals.front();
while (E) {
-
- if (F->get().get_type() == Variant::OBJECT) {
- packet_peer_stream->put_var("*" + E->get());
- String pretty_print = F->get().operator String();
- packet_peer_stream->put_var(pretty_print.ascii().get_data());
- } else {
- packet_peer_stream->put_var(E->get());
- packet_peer_stream->put_var(F->get());
- }
+ _put_variable(E->get(), F->get());
E = E->next();
F = F->next();
@@ -429,9 +424,9 @@ void ScriptDebuggerRemote::_err_handler(void *ud, const char *p_func, const char
sdr->mutex->unlock();
}
-bool ScriptDebuggerRemote::_parse_live_edit(const Array &cmd) {
+bool ScriptDebuggerRemote::_parse_live_edit(const Array &p_command) {
- String cmdstr = cmd[0];
+ String cmdstr = p_command[0];
if (!live_edit_funcs || !cmdstr.begins_with("live_"))
return false;
@@ -441,7 +436,7 @@ bool ScriptDebuggerRemote::_parse_live_edit(const Array &cmd) {
if (!live_edit_funcs->root_func)
return true;
//print_line("root: "+Variant(cmd).get_construct_string());
- live_edit_funcs->root_func(live_edit_funcs->udata, cmd[1], cmd[2]);
+ live_edit_funcs->root_func(live_edit_funcs->udata, p_command[1], p_command[2]);
} else if (cmdstr == "live_node_path") {
@@ -449,75 +444,75 @@ bool ScriptDebuggerRemote::_parse_live_edit(const Array &cmd) {
return true;
//print_line("path: "+Variant(cmd).get_construct_string());
- live_edit_funcs->node_path_func(live_edit_funcs->udata, cmd[1], cmd[2]);
+ live_edit_funcs->node_path_func(live_edit_funcs->udata, p_command[1], p_command[2]);
} else if (cmdstr == "live_res_path") {
if (!live_edit_funcs->res_path_func)
return true;
- live_edit_funcs->res_path_func(live_edit_funcs->udata, cmd[1], cmd[2]);
+ live_edit_funcs->res_path_func(live_edit_funcs->udata, p_command[1], p_command[2]);
} else if (cmdstr == "live_node_prop_res") {
if (!live_edit_funcs->node_set_res_func)
return true;
- live_edit_funcs->node_set_res_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3]);
+ live_edit_funcs->node_set_res_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3]);
} else if (cmdstr == "live_node_prop") {
if (!live_edit_funcs->node_set_func)
return true;
- live_edit_funcs->node_set_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3]);
+ live_edit_funcs->node_set_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3]);
} else if (cmdstr == "live_res_prop_res") {
if (!live_edit_funcs->res_set_res_func)
return true;
- live_edit_funcs->res_set_res_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3]);
+ live_edit_funcs->res_set_res_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3]);
} else if (cmdstr == "live_res_prop") {
if (!live_edit_funcs->res_set_func)
return true;
- live_edit_funcs->res_set_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3]);
+ live_edit_funcs->res_set_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3]);
} else if (cmdstr == "live_node_call") {
if (!live_edit_funcs->node_call_func)
return true;
- live_edit_funcs->node_call_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], cmd[7]);
+ live_edit_funcs->node_call_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3], p_command[4], p_command[5], p_command[6], p_command[7]);
} else if (cmdstr == "live_res_call") {
if (!live_edit_funcs->res_call_func)
return true;
- live_edit_funcs->res_call_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], cmd[7]);
+ live_edit_funcs->res_call_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3], p_command[4], p_command[5], p_command[6], p_command[7]);
} else if (cmdstr == "live_create_node") {
- live_edit_funcs->tree_create_node_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3]);
+ live_edit_funcs->tree_create_node_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3]);
} else if (cmdstr == "live_instance_node") {
- live_edit_funcs->tree_instance_node_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3]);
+ live_edit_funcs->tree_instance_node_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3]);
} else if (cmdstr == "live_remove_node") {
- live_edit_funcs->tree_remove_node_func(live_edit_funcs->udata, cmd[1]);
+ live_edit_funcs->tree_remove_node_func(live_edit_funcs->udata, p_command[1]);
} else if (cmdstr == "live_remove_and_keep_node") {
- live_edit_funcs->tree_remove_and_keep_node_func(live_edit_funcs->udata, cmd[1], cmd[2]);
+ live_edit_funcs->tree_remove_and_keep_node_func(live_edit_funcs->udata, p_command[1], p_command[2]);
} else if (cmdstr == "live_restore_node") {
- live_edit_funcs->tree_restore_node_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3]);
+ live_edit_funcs->tree_restore_node_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3]);
} else if (cmdstr == "live_duplicate_node") {
- live_edit_funcs->tree_duplicate_node_func(live_edit_funcs->udata, cmd[1], cmd[2]);
+ live_edit_funcs->tree_duplicate_node_func(live_edit_funcs->udata, p_command[1], p_command[2]);
} else if (cmdstr == "live_reparent_node") {
- live_edit_funcs->tree_reparent_node_func(live_edit_funcs->udata, cmd[1], cmd[2], cmd[3], cmd[4]);
+ live_edit_funcs->tree_reparent_node_func(live_edit_funcs->udata, p_command[1], p_command[2], p_command[3], p_command[4]);
} else {
@@ -566,30 +561,19 @@ void ScriptDebuggerRemote::_send_object_id(ObjectID p_id) {
}
Variant var = obj->get(E->get().name);
+ packet_peer_stream->put_var(E->get().type);
+ //only send information that can be sent..
- if (E->get().type == Variant::OBJECT || var.get_type() == Variant::OBJECT) {
-
- ObjectID id2;
- Object *obj = var;
- if (obj) {
- id2 = obj->get_instance_id();
- } else {
- id2 = 0;
- }
+ int len = 0; //test how big is this to encode
+ encode_variant(var, NULL, len);
- packet_peer_stream->put_var(Variant::INT); //hint string
- packet_peer_stream->put_var(PROPERTY_HINT_OBJECT_ID); //hint
- packet_peer_stream->put_var(E->get().hint_string); //hint string
- packet_peer_stream->put_var(id2); //value
+ if (len > packet_peer_stream->get_output_buffer_max_size()) { //limit to max size
+ packet_peer_stream->put_var(PROPERTY_HINT_OBJECT_TOO_BIG);
+ packet_peer_stream->put_var("");
+ packet_peer_stream->put_var(Variant());
} else {
- packet_peer_stream->put_var(E->get().type);
packet_peer_stream->put_var(E->get().hint);
packet_peer_stream->put_var(E->get().hint_string);
- //only send information that can be sent..
-
- if (var.get_type() >= Variant::DICTIONARY) {
- var = Array(); //send none for now, may be to big
- }
packet_peer_stream->put_var(var);
}
}
diff --git a/core/script_debugger_remote.h b/core/script_debugger_remote.h
index 924e3774a2..b1ef88b812 100644
--- a/core/script_debugger_remote.h
+++ b/core/script_debugger_remote.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -126,6 +126,8 @@ class ScriptDebuggerRemote : public ScriptDebugger {
Vector<FrameData> profile_frame_data;
+ void _put_variable(const String &p_name, const Variant &p_variable);
+
public:
struct ResourceUsage {
diff --git a/core/script_language.cpp b/core/script_language.cpp
index 4664049145..f2be15897e 100644
--- a/core/script_language.cpp
+++ b/core/script_language.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,6 +54,12 @@ void Script::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_source_code"), &Script::get_source_code);
ClassDB::bind_method(D_METHOD("set_source_code", "source"), &Script::set_source_code);
ClassDB::bind_method(D_METHOD("reload", "keep_state"), &Script::reload, DEFVAL(false));
+
+ ClassDB::bind_method(D_METHOD("has_method", "method_name"), &Script::has_method);
+ ClassDB::bind_method(D_METHOD("has_script_signal", "signal_name"), &Script::has_script_signal);
+
+ ClassDB::bind_method(D_METHOD("is_tool"), &Script::is_tool);
+ ClassDB::bind_method(D_METHOD("get_node_type"), &Script::get_node_type);
}
void ScriptServer::set_scripting_enabled(bool p_enabled) {
diff --git a/core/script_language.h b/core/script_language.h
index 7aba3ec0f1..342d8c8072 100644
--- a/core/script_language.h
+++ b/core/script_language.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -207,7 +207,7 @@ public:
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const = 0;
virtual Error open_in_external_editor(const Ref<Script> &p_script, int p_line, int p_col) { return ERR_UNAVAILABLE; }
- virtual Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, String &r_call_hint) { return ERR_UNAVAILABLE; }
+ virtual Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_force, String &r_call_hint) { return ERR_UNAVAILABLE; }
struct LookupResult {
enum Type {
diff --git a/core/self_list.h b/core/self_list.h
index e229d5bf8e..053ab40162 100644
--- a/core/self_list.h
+++ b/core/self_list.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/set.h b/core/set.h
index 6e6f07508c..317e180869 100644
--- a/core/set.h
+++ b/core/set.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/simple_type.h b/core/simple_type.h
index 6003bd393f..96e79966e0 100644
--- a/core/simple_type.h
+++ b/core/simple_type.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,95 +33,21 @@
/* Batch of specializations to obtain the actual simple type */
template <class T>
-struct GetSimpleType {
-
- T type;
-};
-
-template <class T>
struct GetSimpleTypeT {
typedef T type_t;
};
template <class T>
-struct GetSimpleType<T &> {
-
- T type;
-};
-
-template <class T>
struct GetSimpleTypeT<T &> {
typedef T type_t;
};
template <class T>
-struct GetSimpleType<T const> {
-
- T type;
- _FORCE_INLINE_ GetSimpleType() {}
-};
-
-template <class T>
struct GetSimpleTypeT<T const> {
typedef T type_t;
};
-template <class T>
-struct GetSimpleType<const T &> {
-
- T type;
- _FORCE_INLINE_ GetSimpleType() {}
-};
-
-template <class T>
-struct GetSimpleType<T *> {
-
- T *type;
- _FORCE_INLINE_ GetSimpleType() { type = NULL; }
-};
-
-template <class T>
-struct GetSimpleType<const T *> {
-
- T *type;
- _FORCE_INLINE_ GetSimpleType() { type = NULL; }
-};
-
-#define SIMPLE_NUMERIC_TYPE(m_type) \
- template <> \
- struct GetSimpleType<m_type> { \
- m_type type; \
- _FORCE_INLINE_ GetSimpleType() { type = (m_type)0; } \
- }; \
- template <> \
- struct GetSimpleType<m_type const> { \
- m_type type; \
- _FORCE_INLINE_ GetSimpleType() { type = (m_type)0; } \
- }; \
- template <> \
- struct GetSimpleType<m_type &> { \
- m_type type; \
- _FORCE_INLINE_ GetSimpleType() { type = (m_type)0; } \
- }; \
- template <> \
- struct GetSimpleType<const m_type &> { \
- m_type type; \
- _FORCE_INLINE_ GetSimpleType() { type = (m_type)0; } \
- };
-
-SIMPLE_NUMERIC_TYPE(bool);
-SIMPLE_NUMERIC_TYPE(uint8_t);
-SIMPLE_NUMERIC_TYPE(int8_t);
-SIMPLE_NUMERIC_TYPE(uint16_t);
-SIMPLE_NUMERIC_TYPE(int16_t);
-SIMPLE_NUMERIC_TYPE(uint32_t);
-SIMPLE_NUMERIC_TYPE(int32_t);
-SIMPLE_NUMERIC_TYPE(int64_t);
-SIMPLE_NUMERIC_TYPE(uint64_t);
-SIMPLE_NUMERIC_TYPE(float);
-SIMPLE_NUMERIC_TYPE(double);
-
#endif
diff --git a/core/sort.h b/core/sort.h
index 06c427f61e..a5e23f53df 100644
--- a/core/sort.h
+++ b/core/sort.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/string_db.cpp b/core/string_db.cpp
index c61fbba9b5..ef38491a6b 100644
--- a/core/string_db.cpp
+++ b/core/string_db.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/string_db.h b/core/string_db.h
index 18af9fb3a7..2bef29fab8 100644
--- a/core/string_db.h
+++ b/core/string_db.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/translation.cpp b/core/translation.cpp
index c38d5d8b4d..f1f9c72b85 100644
--- a/core/translation.cpp
+++ b/core/translation.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/translation.h b/core/translation.h
index 8630b8a478..cf59583ad6 100644
--- a/core/translation.h
+++ b/core/translation.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/type_info.h b/core/type_info.h
index 10912fd074..da6047450c 100644
--- a/core/type_info.h
+++ b/core/type_info.h
@@ -1,6 +1,8 @@
#ifndef GET_TYPE_INFO_H
#define GET_TYPE_INFO_H
+#ifdef DEBUG_METHODS_ENABLED
+
template <bool C, typename T = void>
struct EnableIf {
@@ -39,9 +41,9 @@ template <class T, typename = void>
struct GetTypeInfo {
enum { VARIANT_TYPE = Variant::NIL };
- static inline StringName get_class_name() {
- ERR_PRINT("Fallback type info. Bug!");
- return ""; // Not "Nil", this is an error
+ static inline PropertyInfo get_class_info() {
+ ERR_PRINT("GetTypeInfo fallback. Bug!");
+ return PropertyInfo(); // Not "Nil", this is an error
}
};
@@ -49,15 +51,15 @@ struct GetTypeInfo {
template <> \
struct GetTypeInfo<m_type> { \
enum { VARIANT_TYPE = m_var_type }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
+ static inline PropertyInfo get_class_info() { \
+ return PropertyInfo((Variant::Type)VARIANT_TYPE, String()); \
} \
}; \
template <> \
struct GetTypeInfo<const m_type &> { \
enum { VARIANT_TYPE = m_var_type }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
+ static inline PropertyInfo get_class_info() { \
+ return PropertyInfo((Variant::Type)VARIANT_TYPE, String()); \
} \
};
@@ -70,6 +72,7 @@ MAKE_TYPE_INFO(uint32_t, Variant::INT)
MAKE_TYPE_INFO(int32_t, Variant::INT)
MAKE_TYPE_INFO(int64_t, Variant::INT)
MAKE_TYPE_INFO(uint64_t, Variant::INT)
+MAKE_TYPE_INFO(wchar_t, Variant::INT)
MAKE_TYPE_INFO(float, Variant::REAL)
MAKE_TYPE_INFO(double, Variant::REAL)
@@ -102,38 +105,52 @@ MAKE_TYPE_INFO(IP_Address, Variant::STRING)
class BSP_Tree;
MAKE_TYPE_INFO(BSP_Tree, Variant::DICTIONARY)
-#define MAKE_TYPE_INFO_WITH_NAME(m_type, m_var_type, m_class_name) \
- template <> \
- struct GetTypeInfo<m_type> { \
- enum { VARIANT_TYPE = m_var_type }; \
- static inline StringName get_class_name() { \
- return m_class_name; \
- } \
- }; \
- template <> \
- struct GetTypeInfo<const m_type &> { \
- enum { VARIANT_TYPE = m_var_type }; \
- static inline StringName get_class_name() { \
- return m_class_name; \
- } \
- };
+//for RefPtr
+template <>
+struct GetTypeInfo<RefPtr> {
+ enum { VARIANT_TYPE = Variant::OBJECT };
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, "Reference");
+ }
+};
+template <>
+struct GetTypeInfo<const RefPtr &> {
+ enum { VARIANT_TYPE = Variant::OBJECT };
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(Variant::OBJECT, String(), PROPERTY_HINT_RESOURCE_TYPE, "Reference");
+ }
+};
-MAKE_TYPE_INFO_WITH_NAME(RefPtr, Variant::OBJECT, "Reference")
-MAKE_TYPE_INFO_WITH_NAME(Variant, Variant::NIL, "Variant")
+//for variant
+template <>
+struct GetTypeInfo<Variant> {
+ enum { VARIANT_TYPE = Variant::NIL };
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(Variant::NIL, String(), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_NIL_IS_VARIANT);
+ }
+};
+
+template <>
+struct GetTypeInfo<const Variant &> {
+ enum { VARIANT_TYPE = Variant::NIL };
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(Variant::NIL, String(), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_NIL_IS_VARIANT);
+ }
+};
#define MAKE_TEMPLATE_TYPE_INFO(m_template, m_type, m_var_type) \
template <> \
struct GetTypeInfo<m_template<m_type> > { \
enum { VARIANT_TYPE = m_var_type }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
+ static inline PropertyInfo get_class_info() { \
+ return PropertyInfo((Variant::Type)VARIANT_TYPE, String()); \
} \
}; \
template <> \
struct GetTypeInfo<const m_template<m_type> &> { \
enum { VARIANT_TYPE = m_var_type }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
+ static inline PropertyInfo get_class_info() { \
+ return PropertyInfo((Variant::Type)VARIANT_TYPE, String()); \
} \
};
@@ -152,42 +169,12 @@ MAKE_TEMPLATE_TYPE_INFO(Vector, Plane, Variant::ARRAY)
MAKE_TEMPLATE_TYPE_INFO(PoolVector, Plane, Variant::ARRAY)
MAKE_TEMPLATE_TYPE_INFO(PoolVector, Face3, Variant::POOL_VECTOR3_ARRAY)
-#define MAKE_ENUM_TYPE_INFO(m_enum) \
- template <> \
- struct GetTypeInfo<m_enum> { \
- enum { VARIANT_TYPE = Variant::INT }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
- } \
- }; \
- template <> \
- struct GetTypeInfo<m_enum const> { \
- enum { VARIANT_TYPE = Variant::INT }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
- } \
- }; \
- template <> \
- struct GetTypeInfo<m_enum &> { \
- enum { VARIANT_TYPE = Variant::INT }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
- } \
- }; \
- template <> \
- struct GetTypeInfo<const m_enum &> { \
- enum { VARIANT_TYPE = Variant::INT }; \
- static inline StringName get_class_name() { \
- return Variant::get_type_name((Variant::Type)VARIANT_TYPE); \
- } \
- };
-
template <typename T>
struct GetTypeInfo<T *, typename EnableIf<TypeInherits<Object, T>::value>::type> {
enum { VARIANT_TYPE = Variant::OBJECT };
- static inline StringName get_class_name() {
- return T::get_class_static();
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(StringName(T::get_class_static()));
}
};
@@ -195,9 +182,43 @@ template <typename T>
struct GetTypeInfo<const T *, typename EnableIf<TypeInherits<Object, T>::value>::type> {
enum { VARIANT_TYPE = Variant::OBJECT };
- static inline StringName get_class_name() {
- return T::get_class_static();
+ static inline PropertyInfo get_class_info() {
+ return PropertyInfo(StringName(T::get_class_static()));
}
};
+#define TEMPL_MAKE_ENUM_TYPE_INFO(m_enum, m_impl) \
+ template <> \
+ struct GetTypeInfo<m_impl> { \
+ enum { VARIANT_TYPE = Variant::INT }; \
+ static inline PropertyInfo get_class_info() { \
+ return PropertyInfo(Variant::INT, String(), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_CLASS_IS_ENUM, String(#m_enum).replace("::", ".")); \
+ } \
+ };
+
+#define MAKE_ENUM_TYPE_INFO(m_enum) \
+ TEMPL_MAKE_ENUM_TYPE_INFO(m_enum, m_enum) \
+ TEMPL_MAKE_ENUM_TYPE_INFO(m_enum, m_enum const) \
+ TEMPL_MAKE_ENUM_TYPE_INFO(m_enum, m_enum &) \
+ TEMPL_MAKE_ENUM_TYPE_INFO(m_enum, const m_enum &)
+
+template <typename T>
+inline StringName __constant_get_enum_name(T param, const String &p_constant) {
+ if (GetTypeInfo<T>::VARIANT_TYPE == Variant::NIL)
+ ERR_PRINTS("Missing VARIANT_ENUM_CAST for constant's enum: " + p_constant);
+ return GetTypeInfo<T>::get_class_info().class_name;
+}
+
+#define CLASS_INFO(m_type) \
+ (GetTypeInfo<m_type *>::VARIANT_TYPE != Variant::NIL ? \
+ GetTypeInfo<m_type *>::get_class_info() : \
+ GetTypeInfo<m_type>::get_class_info())
+
+#else
+
+#define MAKE_ENUM_TYPE_INFO(m_enum)
+#define CLASS_INFO(m_type)
+
+#endif // DEBUG_METHODS_ENABLED
+
#endif // GET_TYPE_INFO_H
diff --git a/core/typedefs.h b/core/typedefs.h
index 40d9ea37b5..565e28020b 100644
--- a/core/typedefs.h
+++ b/core/typedefs.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -162,9 +162,9 @@ inline void __swap_tmpl(T &x, T &y) {
#define _add_overflow __builtin_add_overflow
#endif
-/** Function to find the nearest (bigger) power of 2 to an integer */
+/** Function to find the next power of 2 to an integer */
-static _FORCE_INLINE_ unsigned int nearest_power_of_2(unsigned int x) {
+static _FORCE_INLINE_ unsigned int next_power_of_2(unsigned int x) {
--x;
x |= x >> 1;
@@ -176,6 +176,23 @@ static _FORCE_INLINE_ unsigned int nearest_power_of_2(unsigned int x) {
return ++x;
}
+static _FORCE_INLINE_ unsigned int previous_power_of_2(unsigned int x) {
+
+ x |= x >> 1;
+ x |= x >> 2;
+ x |= x >> 4;
+ x |= x >> 8;
+ x |= x >> 16;
+ return x - (x >> 1);
+}
+
+static _FORCE_INLINE_ unsigned int closest_power_of_2(unsigned int x) {
+
+ unsigned int nx = next_power_of_2(x);
+ unsigned int px = previous_power_of_2(x);
+ return (nx - x) > (x - px) ? px : nx;
+}
+
// We need this definition inside the function below.
static inline int get_shift_from_power_of_2(unsigned int p_pixel);
diff --git a/core/ucaps.h b/core/ucaps.h
index cd4a581a49..f6c42f37d6 100644
--- a/core/ucaps.h
+++ b/core/ucaps.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp
index 19b9f161b7..4760047959 100644
--- a/core/undo_redo.cpp
+++ b/core/undo_redo.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -111,8 +111,8 @@ void UndoRedo::add_do_method(Object *p_object, const String &p_method, VARIANT_A
ERR_FAIL_COND((current_action + 1) >= actions.size());
Operation do_op;
do_op.object = p_object->get_instance_id();
- if (p_object->cast_to<Resource>())
- do_op.resref = Ref<Resource>(p_object->cast_to<Resource>());
+ if (Object::cast_to<Resource>(p_object))
+ do_op.resref = Ref<Resource>(Object::cast_to<Resource>(p_object));
do_op.type = Operation::TYPE_METHOD;
do_op.name = p_method;
@@ -135,8 +135,8 @@ void UndoRedo::add_undo_method(Object *p_object, const String &p_method, VARIANT
Operation undo_op;
undo_op.object = p_object->get_instance_id();
- if (p_object->cast_to<Resource>())
- undo_op.resref = Ref<Resource>(p_object->cast_to<Resource>());
+ if (Object::cast_to<Resource>(p_object))
+ undo_op.resref = Ref<Resource>(Object::cast_to<Resource>(p_object));
undo_op.type = Operation::TYPE_METHOD;
undo_op.name = p_method;
@@ -152,8 +152,8 @@ void UndoRedo::add_do_property(Object *p_object, const String &p_property, const
ERR_FAIL_COND((current_action + 1) >= actions.size());
Operation do_op;
do_op.object = p_object->get_instance_id();
- if (p_object->cast_to<Resource>())
- do_op.resref = Ref<Resource>(p_object->cast_to<Resource>());
+ if (Object::cast_to<Resource>(p_object))
+ do_op.resref = Ref<Resource>(Object::cast_to<Resource>(p_object));
do_op.type = Operation::TYPE_PROPERTY;
do_op.name = p_property;
@@ -171,8 +171,8 @@ void UndoRedo::add_undo_property(Object *p_object, const String &p_property, con
Operation undo_op;
undo_op.object = p_object->get_instance_id();
- if (p_object->cast_to<Resource>())
- undo_op.resref = Ref<Resource>(p_object->cast_to<Resource>());
+ if (Object::cast_to<Resource>(p_object))
+ undo_op.resref = Ref<Resource>(Object::cast_to<Resource>(p_object));
undo_op.type = Operation::TYPE_PROPERTY;
undo_op.name = p_property;
@@ -185,8 +185,8 @@ void UndoRedo::add_do_reference(Object *p_object) {
ERR_FAIL_COND((current_action + 1) >= actions.size());
Operation do_op;
do_op.object = p_object->get_instance_id();
- if (p_object->cast_to<Resource>())
- do_op.resref = Ref<Resource>(p_object->cast_to<Resource>());
+ if (Object::cast_to<Resource>(p_object))
+ do_op.resref = Ref<Resource>(Object::cast_to<Resource>(p_object));
do_op.type = Operation::TYPE_REFERENCE;
actions[current_action + 1].do_ops.push_back(do_op);
@@ -202,8 +202,8 @@ void UndoRedo::add_undo_reference(Object *p_object) {
Operation undo_op;
undo_op.object = p_object->get_instance_id();
- if (p_object->cast_to<Resource>())
- undo_op.resref = Ref<Resource>(p_object->cast_to<Resource>());
+ if (Object::cast_to<Resource>(p_object))
+ undo_op.resref = Ref<Resource>(Object::cast_to<Resource>(p_object));
undo_op.type = Operation::TYPE_REFERENCE;
actions[current_action + 1].undo_ops.push_back(undo_op);
@@ -270,7 +270,7 @@ void UndoRedo::_process_operation_list(List<Operation>::Element *E) {
obj->call(op.name, VARIANT_ARGS_FROM_ARRAY(op.args));
#ifdef TOOLS_ENABLED
- Resource *res = obj->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(obj);
if (res)
res->set_edited(true);
@@ -284,7 +284,7 @@ void UndoRedo::_process_operation_list(List<Operation>::Element *E) {
obj->set(op.name, op.args[0]);
#ifdef TOOLS_ENABLED
- Resource *res = obj->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(obj);
if (res)
res->set_edited(true);
#endif
@@ -504,7 +504,7 @@ void UndoRedo::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_current_action_name"), &UndoRedo::get_current_action_name);
ClassDB::bind_method(D_METHOD("get_version"), &UndoRedo::get_version);
- BIND_CONSTANT(MERGE_DISABLE);
- BIND_CONSTANT(MERGE_ENDS);
- BIND_CONSTANT(MERGE_ALL);
+ BIND_ENUM_CONSTANT(MERGE_DISABLE);
+ BIND_ENUM_CONSTANT(MERGE_ENDS);
+ BIND_ENUM_CONSTANT(MERGE_ALL);
}
diff --git a/core/undo_redo.h b/core/undo_redo.h
index 5b79f957da..84133c4eea 100644
--- a/core/undo_redo.h
+++ b/core/undo_redo.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/ustring.cpp b/core/ustring.cpp
index ab4528e495..ee07c7b11b 100644
--- a/core/ustring.cpp
+++ b/core/ustring.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -279,16 +279,16 @@ void String::operator=(const CharType *p_str) {
copy_from(p_str);
}
-bool String::operator==(const StrRange &p_range) const {
+bool String::operator==(const StrRange &p_str_range) const {
- int len = p_range.len;
+ int len = p_str_range.len;
if (length() != len)
return false;
if (empty())
return true;
- const CharType *c_str = p_range.c_str;
+ const CharType *c_str = p_str_range.c_str;
const CharType *dst = &operator[](0);
/* Compare char by char */
@@ -1252,66 +1252,7 @@ String String::utf8(const char *p_utf8, int p_len) {
return ret;
};
-#if 0
-_FORCE_INLINE static int parse_utf8_char(const char *p_utf8,unsigned int *p_ucs4,int p_left) { //return len
-
-
- int len=0;
-
-/* Determine the number of characters in sequence */
- if ((*p_utf8 & 0x80)==0)
- len=1;
- else if ((*p_utf8 & 0xE0)==0xC0)
- len=2;
- else if ((*p_utf8 & 0xF0)==0xE0)
- len=3;
- else if ((*p_utf8 & 0xF8)==0xF0)
- len=4;
- else if ((*p_utf8 & 0xFC)==0xF8)
- len=5;
- else if ((*p_utf8 & 0xFE)==0xFC)
- len=6;
- else
- return -1; //invalid UTF8
-
- if (len>p_left)
- return -1; //not enough space
-
- if (len==2 && (*p_utf8&0x1E)==0) {
- //printf("overlong rejected\n");
- return -1; //reject overlong
- }
-
- /* Convert the first character */
-
- unsigned int unichar=0;
-
- if (len == 1)
- unichar=*p_utf8;
- else {
-
- unichar=(0xFF >> (len +1)) & *p_utf8;
- for (int i=1;i<len;i++) {
-
- if ((p_utf8[i] & 0xC0) != 0x80) {
- //printf("invalid utf8\n");
- return -1; //invalid utf8
- }
- if (unichar==0 && i==2 && ((p_utf8[i] & 0x7F) >> (7 - len)) == 0) {
- //printf("no overlong\n");
- return -1; //no overlong
- }
- unichar = (unichar << 6) | (p_utf8[i] & 0x3F);
- }
- }
-
- *p_ucs4=unichar;
-
- return len;
-
-}
-#endif
bool String::parse_utf8(const char *p_utf8, int p_len) {
#define _UNICERROR(m_err) print_line("unicode error: " + String(m_err));
@@ -1998,94 +1939,6 @@ double String::to_double(const char *p_str) {
#else
return built_in_strtod<char>(p_str);
#endif
-#if 0
-#if 0
-
-
- return atof(p_str);
-#else
- if (!p_str[0])
- return 0;
-///@todo make more exact so saving and loading does not lose precision
-
- double integer=0;
- double decimal=0;
- double decimal_mult=0.1;
- double sign=1.0;
- double exp=0;
- double exp_sign=1.0;
- int reading=READING_SIGN;
-
- const char *str=p_str;
-
- while(*str && reading!=READING_DONE) {
-
- CharType c=*(str++);
- switch(reading) {
- case READING_SIGN: {
- if (c>='0' && c<='9')
- reading=READING_INT;
- // let it fallthrough
- else if (c=='-') {
- sign=-1.0;
- reading=READING_INT;
- break;
- } else if (c=='.') {
- reading=READING_DEC;
- break;
- } else {
- break;
- }
- }
- case READING_INT: {
-
- if (c>='0' && c<='9') {
-
- integer*=10;
- integer+=c-'0';
- } else if (c=='.') {
- reading=READING_DEC;
- } else if (c=='e') {
- reading=READING_EXP;
- } else {
- reading=READING_DONE;
- }
-
- } break;
- case READING_DEC: {
-
- if (c>='0' && c<='9') {
-
- decimal+=(c-'0')*decimal_mult;
- decimal_mult*=0.1;
- } else if (c=='e') {
- reading=READING_EXP;
- } else {
- reading=READING_DONE;
- }
-
- } break;
- case READING_EXP: {
-
- if (c>='0' && c<='9') {
-
- exp*=10.0;
- exp+=(c-'0');
- } else if (c=='-' && exp==0) {
- exp_sign=-1.0;
- } else if (exp_sign>=0 && c=='+') {
- //redundant...
- exp_sign=1.0;
- } else {
- reading=READING_DONE;
- }
- } break;
- }
- }
-
- return sign*(integer+decimal)*Math::pow(10,exp_sign*exp);
-#endif
-#endif
}
float String::to_float() const {
@@ -2096,100 +1949,6 @@ float String::to_float() const {
double String::to_double(const CharType *p_str, const CharType **r_end) {
return built_in_strtod<CharType>(p_str, (CharType **)r_end);
-#if 0
-#if 0
- //ndef NO_USE_STDLIB
- return wcstod(p_str,p_len<0?NULL:p_str+p_len);
-#else
- if (p_len==0 || !p_str[0])
- return 0;
-///@todo make more exact so saving and loading does not lose precision
-
- double integer=0;
- double decimal=0;
- double decimal_mult=0.1;
- double sign=1.0;
- double exp=0;
- double exp_sign=1.0;
- int reading=READING_SIGN;
-
- const CharType *str=p_str;
- const CharType *limit=&p_str[p_len];
-
- while(reading!=READING_DONE && str!=limit) {
-
- CharType c=*(str++);
- switch(reading) {
- case READING_SIGN: {
- if (c>='0' && c<='9')
- reading=READING_INT;
- // let it fallthrough
- else if (c=='-') {
- sign=-1.0;
- reading=READING_INT;
- break;
- } else if (c=='.') {
- reading=READING_DEC;
- break;
- } else if (c==0) {
- reading=READING_DONE;
- break;
- } else {
- break;
- }
- }
- case READING_INT: {
-
- if (c>='0' && c<='9') {
-
- integer*=10;
- integer+=c-'0';
- } else if (c=='.') {
- reading=READING_DEC;
- } else if (c=='e' || c=='E') {
- reading=READING_EXP;
- } else {
- reading=READING_DONE;
- }
-
- } break;
- case READING_DEC: {
-
- if (c>='0' && c<='9') {
-
- decimal+=(c-'0')*decimal_mult;
- decimal_mult*=0.1;
- } else if (c=='e' || c=='E') {
- reading=READING_EXP;
- } else {
- reading=READING_DONE;
- }
-
- } break;
- case READING_EXP: {
-
- if (c>='0' && c<='9') {
-
- exp*=10.0;
- exp+=(c-'0');
- } else if (c=='-' && exp==0) {
- exp_sign=-1.0;
- } else if (exp_sign>=0 && c=='+') {
- //redundant...
- exp_sign=1.0;
- } else {
- reading=READING_DONE;
- }
- } break;
- }
- }
-
- if (r_end)
- *r_end=str-1;
-
- return sign*(integer+decimal)*Math::pow(10,exp_sign*exp);
-#endif
-#endif
}
int64_t String::to_int(const CharType *p_str, int p_len) {
@@ -2252,98 +2011,6 @@ double String::to_double() const {
#else
return built_in_strtod<CharType>(c_str());
#endif
-#if 0
-#ifndef NO_USE_STDLIB
-
- return atof(utf8().get_data());
-#else
-
- double integer=0;
- double decimal=0;
- double decimal_mult=0.1;
- double sign=1.0;
- double exp=0;
- double exp_sign=1.0;
- int reading=READING_SIGN;
-
- const CharType *str=&operator[](0);
-
- while(*str && reading!=READING_DONE) {
-
- CharType c=*(str++);
- switch(reading) {
- case READING_SIGN: {
- if (c>='0' && c<='9')
- reading=READING_INT;
- // let it fallthrough
- else if (c=='-') {
- sign=-1.0;
- reading=READING_INT;
- break;
- } else if (c=='.') {
- reading=READING_DEC;
- break;
- } else {
- break;
- }
- }
- case READING_INT: {
-
- if (c>='0' && c<='9') {
-
- integer*=10;
- integer+=c-'0';
- } else if (c=='.') {
- reading=READING_DEC;
- } else if (c=='e') {
- reading=READING_EXP;
- } else {
- reading=READING_DONE;
- }
-
- } break;
- case READING_DEC: {
-
- if (c>='0' && c<='9') {
-
- decimal+=(c-'0')*decimal_mult;
- decimal_mult*=0.1;
- } else if (c=='e') {
- reading=READING_EXP;
- } else {
- reading=READING_DONE;
- }
-
- } break;
- case READING_EXP: {
-
- if (c>='0' && c<='9') {
-
- exp*=10.0;
- exp+=(c-'0');
- } else if (c=='-' && exp==0) {
- exp_sign=-1.0;
- } else if (exp_sign>=0 && c=='+') {
- //redundant...
- exp_sign=1.0;
- } else {
- reading=READING_DONE;
- }
- } break;
- }
- }
-
- return sign*(integer+decimal)*Math::pow(10,exp_sign*exp);
-#endif
-#if 0
-
-
- double ret=sign*(integer+decimal)*Math::pow(10,exp_sign*exp);
-
- print_line(*this +" == "+rtos(ret));
- return ret;
-#endif
-#endif
}
bool operator==(const char *p_chr, const String &p_str) {
diff --git a/core/ustring.h b/core/ustring.h
index d00bfa59b5..ab4e325f2c 100644
--- a/core/ustring.h
+++ b/core/ustring.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -78,7 +78,7 @@ public:
//String operator+(CharType p_char) const;
String &operator+=(const String &);
- String &operator+=(CharType p_str);
+ String &operator+=(CharType p_char);
String &operator+=(const char *p_str);
String &operator+=(const CharType *p_str);
@@ -156,7 +156,7 @@ public:
int get_slice_count(String p_splitter) const;
String get_slice(String p_splitter, int p_slice) const;
- String get_slicec(CharType splitter, int p_slice) const;
+ String get_slicec(CharType p_splitter, int p_slice) const;
Vector<String> split(const String &p_splitter, bool p_allow_empty = true) const;
Vector<String> split_spaces() const;
@@ -186,8 +186,8 @@ public:
bool parse_utf8(const char *p_utf8, int p_len = -1); //return true on error
static String utf8(const char *p_utf8, int p_len = -1);
- static uint32_t hash(const CharType *p_str, int p_len); /* hash the string */
- static uint32_t hash(const CharType *p_str); /* hash the string */
+ static uint32_t hash(const CharType *p_cstr, int p_len); /* hash the string */
+ static uint32_t hash(const CharType *p_cstr); /* hash the string */
static uint32_t hash(const char *p_cstr, int p_len); /* hash the string */
static uint32_t hash(const char *p_cstr); /* hash the string */
uint32_t hash() const; /* hash the string */
diff --git a/core/variant.cpp b/core/variant.cpp
index 51c4b70bdc..74f6b6a711 100644
--- a/core/variant.cpp
+++ b/core/variant.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -1764,14 +1764,14 @@ Variant::operator Object *() const {
Variant::operator Node *() const {
if (type == OBJECT)
- return _get_obj().obj ? _get_obj().obj->cast_to<Node>() : NULL;
+ return Object::cast_to<Node>(_get_obj().obj);
else
return NULL;
}
Variant::operator Control *() const {
if (type == OBJECT)
- return _get_obj().obj ? _get_obj().obj->cast_to<Control>() : NULL;
+ return Object::cast_to<Control>(_get_obj().obj);
else
return NULL;
}
diff --git a/core/variant.h b/core/variant.h
index 40de1a9bce..c44608ebfa 100644
--- a/core/variant.h
+++ b/core/variant.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/variant_call.cpp b/core/variant_call.cpp
index aabc2546bc..ad15f8f5cb 100644
--- a/core/variant_call.cpp
+++ b/core/variant_call.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -729,9 +729,6 @@ struct _VariantCall {
VCALL_PTR1R(Basis, scaled);
VCALL_PTR0R(Basis, get_scale);
VCALL_PTR0R(Basis, get_euler);
- VCALL_PTR1(Basis, set_scale);
- VCALL_PTR1(Basis, set_rotation_euler);
- VCALL_PTR2(Basis, set_rotation_axis_angle);
VCALL_PTR1R(Basis, tdotx);
VCALL_PTR1R(Basis, tdoty);
VCALL_PTR1R(Basis, tdotz);
@@ -747,6 +744,7 @@ struct _VariantCall {
VCALL_PTR1R(Transform, translated);
VCALL_PTR0R(Transform, orthonormalized);
VCALL_PTR2R(Transform, looking_at);
+ VCALL_PTR2R(Transform, interpolate_with);
static void _call_Transform_xform(Variant &r_ret, Variant &p_self, const Variant **p_args) {
@@ -1691,7 +1689,7 @@ void register_variant_methods() {
ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, xform_inv, NIL, "v", varray());
ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform, NIL, "v", varray());
ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform_inv, NIL, "v", varray());
- ADDFUNC2(TRANSFORM2D, TRANSFORM2D, Transform2D, interpolate_with, TRANSFORM2D, "m", REAL, "c", varray());
+ ADDFUNC2(TRANSFORM2D, TRANSFORM2D, Transform2D, interpolate_with, TRANSFORM2D, "transform", REAL, "weight", varray());
ADDFUNC0(BASIS, BASIS, Basis, inverse, varray());
ADDFUNC0(BASIS, BASIS, Basis, transposed, varray());
@@ -1699,9 +1697,6 @@ void register_variant_methods() {
ADDFUNC0(BASIS, REAL, Basis, determinant, varray());
ADDFUNC2(BASIS, BASIS, Basis, rotated, VECTOR3, "axis", REAL, "phi", varray());
ADDFUNC1(BASIS, BASIS, Basis, scaled, VECTOR3, "scale", varray());
- ADDFUNC1(BASIS, NIL, Basis, set_scale, VECTOR3, "scale", varray());
- ADDFUNC1(BASIS, NIL, Basis, set_rotation_euler, VECTOR3, "euler", varray());
- ADDFUNC2(BASIS, NIL, Basis, set_rotation_axis_angle, VECTOR3, "axis", REAL, "angle", varray());
ADDFUNC0(BASIS, VECTOR3, Basis, get_scale, varray());
ADDFUNC0(BASIS, VECTOR3, Basis, get_euler, varray());
ADDFUNC1(BASIS, REAL, Basis, tdotx, VECTOR3, "with", varray());
@@ -1718,6 +1713,7 @@ void register_variant_methods() {
ADDFUNC1(TRANSFORM, TRANSFORM, Transform, scaled, VECTOR3, "scale", varray());
ADDFUNC1(TRANSFORM, TRANSFORM, Transform, translated, VECTOR3, "ofs", varray());
ADDFUNC2(TRANSFORM, TRANSFORM, Transform, looking_at, VECTOR3, "target", VECTOR3, "up", varray());
+ ADDFUNC2(TRANSFORM, TRANSFORM, Transform, interpolate_with, TRANSFORM, "transform", REAL, "weight", varray());
ADDFUNC1(TRANSFORM, NIL, Transform, xform, NIL, "v", varray());
ADDFUNC1(TRANSFORM, NIL, Transform, xform_inv, NIL, "v", varray());
diff --git a/core/variant_construct_string.cpp b/core/variant_construct_string.cpp
index 45fe367ce6..ccbb70d689 100644
--- a/core/variant_construct_string.cpp
+++ b/core/variant_construct_string.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -66,7 +66,7 @@ class VariantConstruct {
static Error _get_token(const CharType *p_str, int &index, int p_len, Token &r_token, int &line, String &r_err_str);
static Error _parse_value(Variant &value, Token &token, const CharType *p_str, int &index, int p_len, int &line, String &r_err_str, Variant::ObjectConstruct *p_construct, void *p_ud);
static Error _parse_array(Array &array, const CharType *p_str, int &index, int p_len, int &line, String &r_err_str, Variant::ObjectConstruct *p_construct, void *p_ud);
- static Error _parse_dict(Dictionary &object, const CharType *p_str, int &index, int p_len, int &line, String &r_err_str, Variant::ObjectConstruct *p_construct, void *p_ud);
+ static Error _parse_dict(Dictionary &dict, const CharType *p_str, int &index, int p_len, int &line, String &r_err_str, Variant::ObjectConstruct *p_construct, void *p_ud);
public:
static Error parse(const String &p_string, Variant &r_ret, String &r_err_str, int &r_err_line, Variant::ObjectConstruct *p_construct, void *p_ud);
@@ -85,15 +85,15 @@ const char *VariantConstruct::tk_name[TK_MAX] = {
"EOF",
};
-Error VariantConstruct::_get_token(const CharType *p_str, int &idx, int p_len, Token &r_token, int &line, String &r_err_str) {
+Error VariantConstruct::_get_token(const CharType *p_str, int &index, int p_len, Token &r_token, int &line, String &r_err_str) {
while (true) {
- switch (p_str[idx]) {
+ switch (p_str[index]) {
case '\n': {
line++;
- idx++;
+ index++;
break;
};
case 0: {
@@ -103,54 +103,54 @@ Error VariantConstruct::_get_token(const CharType *p_str, int &idx, int p_len, T
case '{': {
r_token.type = TK_CURLY_BRACKET_OPEN;
- idx++;
+ index++;
return OK;
};
case '}': {
r_token.type = TK_CURLY_BRACKET_CLOSE;
- idx++;
+ index++;
return OK;
};
case '[': {
r_token.type = TK_BRACKET_OPEN;
- idx++;
+ index++;
return OK;
};
case ']': {
r_token.type = TK_BRACKET_CLOSE;
- idx++;
+ index++;
return OK;
};
case ':': {
r_token.type = TK_COLON;
- idx++;
+ index++;
return OK;
};
case ',': {
r_token.type = TK_COMMA;
- idx++;
+ index++;
return OK;
};
case '"': {
- idx++;
+ index++;
String str;
while (true) {
- if (p_str[idx] == 0) {
+ if (p_str[index] == 0) {
r_err_str = "Unterminated String";
return ERR_PARSE_ERROR;
- } else if (p_str[idx] == '"') {
- idx++;
+ } else if (p_str[index] == '"') {
+ index++;
break;
- } else if (p_str[idx] == '\\') {
+ } else if (p_str[index] == '\\') {
//escaped characters...
- idx++;
- CharType next = p_str[idx];
+ index++;
+ CharType next = p_str[index];
if (next == 0) {
r_err_str = "Unterminated String";
return ERR_PARSE_ERROR;
@@ -171,7 +171,7 @@ Error VariantConstruct::_get_token(const CharType *p_str, int &idx, int p_len, T
//hexnumbarh - oct is deprecated
for (int j = 0; j < 4; j++) {
- CharType c = p_str[idx + j + 1];
+ CharType c = p_str[index + j + 1];
if (c == 0) {
r_err_str = "Unterminated String";
return ERR_PARSE_ERROR;
@@ -198,7 +198,7 @@ Error VariantConstruct::_get_token(const CharType *p_str, int &idx, int p_len, T
res <<= 4;
res |= v;
}
- idx += 4; //will add at the end anyway
+ index += 4; //will add at the end anyway
} break;
default: {
@@ -211,11 +211,11 @@ Error VariantConstruct::_get_token(const CharType *p_str, int &idx, int p_len, T
str += res;
} else {
- if (p_str[idx] == '\n')
+ if (p_str[index] == '\n')
line++;
- str += p_str[idx];
+ str += p_str[index];
}
- idx++;
+ index++;
}
r_token.type = TK_STRING;
@@ -225,28 +225,28 @@ Error VariantConstruct::_get_token(const CharType *p_str, int &idx, int p_len, T
} break;
default: {
- if (p_str[idx] <= 32) {
- idx++;
+ if (p_str[index] <= 32) {
+ index++;
break;
}
- if (p_str[idx] == '-' || (p_str[idx] >= '0' && p_str[idx] <= '9')) {
+ if (p_str[index] == '-' || (p_str[index] >= '0' && p_str[index] <= '9')) {
//a number
const CharType *rptr;
- double number = String::to_double(&p_str[idx], &rptr);
- idx += (rptr - &p_str[idx]);
+ double number = String::to_double(&p_str[index], &rptr);
+ index += (rptr - &p_str[index]);
r_token.type = TK_NUMBER;
r_token.value = number;
return OK;
- } else if ((p_str[idx] >= 'A' && p_str[idx] <= 'Z') || (p_str[idx] >= 'a' && p_str[idx] <= 'z')) {
+ } else if ((p_str[index] >= 'A' && p_str[index] <= 'Z') || (p_str[index] >= 'a' && p_str[index] <= 'z')) {
String id;
- while ((p_str[idx] >= 'A' && p_str[idx] <= 'Z') || (p_str[idx] >= 'a' && p_str[idx] <= 'z')) {
+ while ((p_str[index] >= 'A' && p_str[index] <= 'Z') || (p_str[index] >= 'a' && p_str[index] <= 'z')) {
- id += p_str[idx];
- idx++;
+ id += p_str[index];
+ index++;
}
r_token.type = TK_IDENTIFIER;
diff --git a/core/variant_op.cpp b/core/variant_op.cpp
index 5fda6b1473..b6e114b853 100644
--- a/core/variant_op.cpp
+++ b/core/variant_op.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp
index 398f20caf3..65c7b7cfec 100644
--- a/core/variant_parser.cpp
+++ b/core/variant_parser.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -326,6 +326,7 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
is_float = true;
} else if (c == 'e') {
reading = READING_EXP;
+ is_float = true;
} else {
reading = READING_DONE;
}
@@ -337,7 +338,6 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
} else if (c == 'e') {
reading = READING_EXP;
-
} else {
reading = READING_DONE;
}
@@ -349,8 +349,6 @@ Error VariantParser::get_token(Stream *p_stream, Token &r_token, int &line, Stri
exp_beg = true;
} else if ((c == '-' || c == '+') && !exp_sign && !exp_beg) {
- if (c == '-')
- is_float = true;
exp_sign = true;
} else {
@@ -744,7 +742,7 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
return err;
if (token.type == TK_PARENTHESIS_CLOSE) {
- Reference *reference = obj->cast_to<Reference>();
+ Reference *reference = Object::cast_to<Reference>(obj);
if (reference) {
value = REF(reference);
} else {
diff --git a/core/variant_parser.h b/core/variant_parser.h
index acbe0e967f..524891cdfd 100644
--- a/core/variant_parser.h
+++ b/core/variant_parser.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/vector.h b/core/vector.h
index 5eed8dce96..03eaf65099 100644
--- a/core/vector.h
+++ b/core/vector.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -71,7 +71,7 @@ class Vector {
_FORCE_INLINE_ size_t _get_alloc_size(size_t p_elements) const {
//return nearest_power_of_2_templated(p_elements*sizeof(T)+sizeof(SafeRefCount)+sizeof(int));
- return nearest_power_of_2(p_elements * sizeof(T));
+ return next_power_of_2(p_elements * sizeof(T));
}
_FORCE_INLINE_ bool _get_alloc_size_checked(size_t p_elements, size_t *out) const {
@@ -79,7 +79,7 @@ class Vector {
size_t o;
size_t p;
if (_mul_overflow(p_elements, sizeof(T), &o)) return false;
- *out = nearest_power_of_2(o);
+ *out = next_power_of_2(o);
if (_add_overflow(o, static_cast<size_t>(32), &p)) return false; //no longer allocated here
return true;
#else
@@ -117,7 +117,7 @@ public:
}
_FORCE_INLINE_ bool empty() const { return _ptr == 0; }
Error resize(int p_size);
- bool push_back(T p_elem);
+ bool push_back(const T &p_elem);
void remove(int p_index);
void erase(const T &p_val) {
@@ -129,7 +129,7 @@ public:
template <class T_val>
int find(const T_val &p_val, int p_from = 0) const;
- void set(int p_index, T p_elem);
+ void set(int p_index, const T &p_elem);
T get(int p_index) const;
inline T &operator[](int p_index) {
@@ -336,7 +336,7 @@ void Vector<T>::invert() {
}
template <class T>
-void Vector<T>::set(int p_index, T p_elem) {
+void Vector<T>::set(int p_index, const T &p_elem) {
operator[](p_index) = p_elem;
}
@@ -348,7 +348,7 @@ T Vector<T>::get(int p_index) const {
}
template <class T>
-bool Vector<T>::push_back(T p_elem) {
+bool Vector<T>::push_back(const T &p_elem) {
Error err = resize(size() + 1);
ERR_FAIL_COND_V(err, true)
diff --git a/core/version.h b/core/version.h
index 43f6f1bbf9..436f30ef01 100644
--- a/core/version.h
+++ b/core/version.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/vmap.h b/core/vmap.h
index 66f935f58d..f0977341ec 100644
--- a/core/vmap.h
+++ b/core/vmap.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/core/vset.h b/core/vset.h
index 73062e064c..7b12ae0b25 100644
--- a/core/vset.h
+++ b/core/vset.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/doc/base/classes.xml b/doc/base/classes.xml
index e9902badea..8af7385934 100644
--- a/doc/base/classes.xml
+++ b/doc/base/classes.xml
@@ -7741,29 +7741,6 @@
Introduce an additional scaling specified by the given 3D scaling factor. Only relevant when the matrix is being used as a part of [Transform].
</description>
</method>
- <method name="set_rotation_axis_angle">
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="angle" type="float">
- </argument>
- <description>
- Changes only the rotation part of the [Basis] to a rotation around given axis by phi, while preserving the scaling part (as determined by get_scale).
- </description>
- </method>
- <method name="set_rotation_euler">
- <argument index="0" name="euler" type="Vector3">
- </argument>
- <description>
- Changes only the rotation part of the [Basis] to a rotation corresponding to given Euler angles, while preserving the scaling part (as determined by get_scale).
- </description>
- </method>
- <method name="set_scale">
- <argument index="0" name="scale" type="Vector3">
- </argument>
- <description>
- Changes only the scaling part of the Basis to the specified scaling, while preserving the rotation part (as determined by get_rotation).
- </description>
- </method>
<method name="tdotx">
<return type="float">
</return>
@@ -14960,13 +14937,6 @@
<description>
</description>
<methods>
- <method name="get_custom_level" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the value of the commandline argument "-level".
- </description>
- </method>
<method name="get_frames_drawn">
<return type="int">
</return>
@@ -26549,6 +26519,17 @@
Notify the current node and all its children recursively by calling notification() in all of them.
</description>
</method>
+ <method name="propagate_call">
+ <argument index="0" name="method" type="String">
+ </argument>
+ <argument index="1" name="args" type="Array" default="[]">
+ </argument>
+ <argument index="2" name="parent_first" type="bool" default="false">
+ </argument>
+ <description>
+ Calls the method (if present) with the arguments given in "args" on this Node and recursively on all children. If the parent_first argument is true then the method will be called on the current [Node] first, then on all children. If it is false then the children will get called first.
+ </description>
+ </method>
<method name="queue_free">
<description>
</description>
@@ -28002,15 +27983,6 @@
Objects also receive notifications ([method _notification]). Notifications are a simple way to notify the object about simple events, so they can all be handled together.
</description>
<methods>
- <method name="XL_MESSAGE" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="message" type="String">
- </argument>
- <description>
- Deprecated, will go away.
- </description>
- </method>
<method name="_get" qualifiers="virtual">
<argument index="0" name="property" type="String">
</argument>
@@ -28301,7 +28273,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Set true if this object can translate strings (in calls to tr() ). Default is true.
+ Define whether this object can translate strings (with calls to [method tr]). Default is true.
</description>
</method>
<method name="set_meta">
@@ -28326,7 +28298,7 @@
<argument index="0" name="message" type="String">
</argument>
<description>
- Translate a message. Only works in message translation is enabled (which is by default). See [method set_message_translation].
+ Translate a message. Only works if message translation is enabled (which it is by default). See [method set_message_translation].
</description>
</method>
</methods>
@@ -46119,6 +46091,13 @@
<description>
</description>
</method>
+ <method name="get_nine_patch_stretch">
+ <return type="bool">
+ </return>
+ <description>
+ Returns true if textures are stretched as nine-patches or false otherwise.
+ </description>
+ </method>
<method name="get_over_texture" qualifiers="const">
<return type="Object">
</return>
@@ -46143,6 +46122,15 @@
<description>
</description>
</method>
+ <method name="get_stretch_margin" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="margin" type="int">
+ </argument>
+ <description>
+ Return nine-patch texture offset for a given margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM).
+ </description>
+ </method>
<method name="get_under_texture" qualifiers="const">
<return type="Object">
</return>
@@ -46161,6 +46149,13 @@
<description>
</description>
</method>
+ <method name="set_nine_patch_stretch">
+ <argument index="0" name="stretch" type="bool">
+ </argument>
+ <description>
+ Set if textures should be stretched as nine-patches.
+ </description>
+ </method>
<method name="set_over_texture">
<argument index="0" name="tex" type="Object">
</argument>
@@ -46185,6 +46180,15 @@
<description>
</description>
</method>
+ <method name="set_stretch_margin">
+ <argument index="0" name="margin" type="int">
+ </argument>
+ <argument index="1" name="size" type="int">
+ </argument>
+ <description>
+ Set nine-patch texture offset for a given margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM).
+ </description>
+ </method>
<method name="set_under_texture">
<argument index="0" name="tex" type="Object">
</argument>
@@ -46207,6 +46211,16 @@
</member>
<member name="texture_under" type="Texture" setter="set_under_texture" getter="get_under_texture" brief="">
</member>
+ <member name="nine_patch_stretch" type="bool" setter="set_nine_patch_stretch" getter="get_nine_patch_stretch" brief="">
+ </member>
+ <member name="stretch_margin_left" type="int" setter="set_stretch_margin" getter="get_stretch_margin" brief="">
+ </member>
+ <member name="stretch_margin_top" type="int" setter="set_stretch_margin" getter="get_stretch_margin" brief="">
+ </member>
+ <member name="stretch_margin_right" type="int" setter="set_stretch_margin" getter="get_stretch_margin" brief="">
+ </member>
+ <member name="stretch_margin_bottom" type="int" setter="set_stretch_margin" getter="get_stretch_margin" brief="">
+ </member>
</members>
<constants>
<constant name="FILL_LEFT_TO_RIGHT" value="0">
diff --git a/drivers/SCsub b/drivers/SCsub
index 73a3f7898a..b8bba91378 100644
--- a/drivers/SCsub
+++ b/drivers/SCsub
@@ -16,6 +16,7 @@ SConscript('alsa/SCsub')
SConscript('pulseaudio/SCsub')
if (env["platform"] == "windows"):
SConscript("rtaudio/SCsub")
+ SConscript("wasapi/SCsub")
if (env["xaudio2"] == "yes"):
SConscript("xaudio2/SCsub")
diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp
index 4e6739e8c0..40c66b0bc5 100644
--- a/drivers/alsa/audio_driver_alsa.cpp
+++ b/drivers/alsa/audio_driver_alsa.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -87,7 +87,7 @@ Error AudioDriverALSA::init() {
CHECK_FAIL(status < 0);
int latency = GLOBAL_DEF("audio/output_latency", 25);
- buffer_size = nearest_power_of_2(latency * mix_rate / 1000);
+ buffer_size = closest_power_of_2(latency * mix_rate / 1000);
// set buffer size from project settings
status = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &buffer_size);
diff --git a/drivers/alsa/audio_driver_alsa.h b/drivers/alsa/audio_driver_alsa.h
index 9e9413f3d9..83601be41b 100644
--- a/drivers/alsa/audio_driver_alsa.h
+++ b/drivers/alsa/audio_driver_alsa.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/convex_decomp/b2d_decompose.cpp b/drivers/convex_decomp/b2d_decompose.cpp
index d9011b8eab..14ab4d1072 100644
--- a/drivers/convex_decomp/b2d_decompose.cpp
+++ b/drivers/convex_decomp/b2d_decompose.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/convex_decomp/b2d_decompose.h b/drivers/convex_decomp/b2d_decompose.h
index 3a064e08d3..a87f5a656c 100644
--- a/drivers/convex_decomp/b2d_decompose.h
+++ b/drivers/convex_decomp/b2d_decompose.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/gl_context/context_gl.cpp b/drivers/gl_context/context_gl.cpp
index 935391d58e..a453eef227 100644
--- a/drivers/gl_context/context_gl.cpp
+++ b/drivers/gl_context/context_gl.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/gl_context/context_gl.h b/drivers/gl_context/context_gl.h
index c8eb0f93b4..399657eb52 100644
--- a/drivers/gl_context/context_gl.h
+++ b/drivers/gl_context/context_gl.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/gles2/SCsub b/drivers/gles2/SCsub
deleted file mode 100644
index dedd794dba..0000000000
--- a/drivers/gles2/SCsub
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-env.add_source_files(env.drivers_sources, "*.cpp")
-
-SConscript("shaders/SCsub")
-
-Export('env')
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp
deleted file mode 100644
index 2abdbe9d0a..0000000000
--- a/drivers/gles2/rasterizer_gles2.cpp
+++ /dev/null
@@ -1,10767 +0,0 @@
-/*************************************************************************/
-/* rasterizer_gles2.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 GLES2_ENABLED
-
-#include "rasterizer_gles2.h"
-#include "gl_context/context_gl.h"
-#include "os/os.h"
-#include "project_settings.h"
-#include "servers/visual/particle_system_sw.h"
-#include "servers/visual/shader_language.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef GLEW_ENABLED
-#define _GL_HALF_FLOAT_OES 0x140B
-#else
-#define _GL_HALF_FLOAT_OES 0x8D61
-#endif
-
-#define _GL_RGBA16F_EXT 0x881A
-#define _GL_RGB16F_EXT 0x881B
-#define _GL_RG16F_EXT 0x822F
-#define _GL_R16F_EXT 0x822D
-#define _GL_R32F_EXT 0x822E
-
-#define _GL_RED_EXT 0x1903
-#define _GL_RG_EXT 0x8227
-#define _GL_R8_EXT 0x8229
-#define _GL_RG8_EXT 0x822B
-
-#define _DEPTH_COMPONENT24_OES 0x81A6
-
-#ifdef GLEW_ENABLED
-#define _glClearDepth glClearDepth
-#else
-#define _glClearDepth glClearDepthf
-#endif
-
-#define _GL_SRGB_EXT 0x8C40
-#define _GL_SRGB_ALPHA_EXT 0x8C42
-
-#define _GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
-#define _GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
-
-//#define DEBUG_OPENGL
-
-#ifdef DEBUG_OPENGL
-
-#define DEBUG_TEST_ERROR(m_section) \
- { \
- print_line("AT: " + String(m_section)); \
- glFlush(); \
- uint32_t err = glGetError(); \
- if (err) { \
- print_line("OpenGL Error #" + itos(err) + " at: " + m_section); \
- } \
- }
-
-#else
-
-#define DEBUG_TEST_ERROR(m_section)
-
-#endif
-
-static RasterizerGLES2 *_singleton = NULL;
-
-#ifdef GLES_NO_CLIENT_ARRAYS
-static float GlobalVertexBuffer[MAX_POLYGON_VERTICES * 8] = { 0 };
-#endif
-
-static const GLenum prim_type[] = { GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_FAN };
-
-_FORCE_INLINE_ static void _set_color_attrib(const Color &p_color) {
-
- GLfloat c[4] = { p_color.r, p_color.g, p_color.b, p_color.a };
- glVertexAttrib4fv(VS::ARRAY_COLOR, c);
-}
-
-static _FORCE_INLINE_ uint16_t make_half_float(float f) {
-
- union {
- float fv;
- uint32_t ui;
- } ci;
- ci.fv = f;
-
- unsigned int x = ci.ui;
- unsigned int sign = (unsigned short)(x >> 31);
- unsigned int mantissa;
- unsigned int exp;
- uint16_t hf;
-
- // get mantissa
- mantissa = x & ((1 << 23) - 1);
- // get exponent bits
- exp = x & (0xFF << 23);
- if (exp >= 0x47800000) {
- // check if the original single precision float number is a NaN
- if (mantissa && (exp == (0xFF << 23))) {
- // we have a single precision NaN
- mantissa = (1 << 23) - 1;
- } else {
- // 16-bit half-float representation stores number as Inf
- mantissa = 0;
- }
- hf = (((uint16_t)sign) << 15) | (uint16_t)((0x1F << 10)) |
- (uint16_t)(mantissa >> 13);
- }
- // check if exponent is <= -15
- else if (exp <= 0x38000000) {
-
- /*// store a denorm half-float value or zero
- exp = (0x38000000 - exp) >> 23;
- mantissa >>= (14 + exp);
-
- hf = (((uint16_t)sign) << 15) | (uint16_t)(mantissa);
- */
- hf = 0; //denormals do not work for 3D, convert to zero
- } else {
- hf = (((uint16_t)sign) << 15) |
- (uint16_t)((exp - 0x38000000) >> 13) |
- (uint16_t)(mantissa >> 13);
- }
-
- return hf;
-}
-
-void RasterizerGLES2::_draw_primitive(int p_points, const Vector3 *p_vertices, const Vector3 *p_normals, const Color *p_colors, const Vector3 *p_uvs, const Plane *p_tangents, int p_instanced) {
-
- ERR_FAIL_COND(!p_vertices);
- ERR_FAIL_COND(p_points < 1 || p_points > 4);
-
- bool quad = false;
-
- GLenum type;
- switch (p_points) {
-
- case 1: type = GL_POINTS; break;
- case 2: type = GL_LINES; break;
- case 4: quad = true; p_points = 3;
- case 3: type = GL_TRIANGLES; break;
- };
-
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
-
- GLfloat vert_array[18];
- GLfloat normal_array[18];
- GLfloat color_array[24];
- GLfloat tangent_array[24];
- GLfloat uv_array[18];
-
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 3, GL_FLOAT, false, 0, vert_array);
-
- for (int i = 0; i < p_points; i++) {
-
- vert_array[i * 3 + 0] = p_vertices[i].x;
- vert_array[i * 3 + 1] = p_vertices[i].y;
- vert_array[i * 3 + 2] = p_vertices[i].z;
- if (quad) {
- int idx = 2 + i;
- if (idx == 4)
- idx = 0;
- vert_array[9 + i * 3 + 0] = p_vertices[idx].x;
- vert_array[9 + i * 3 + 1] = p_vertices[idx].y;
- vert_array[9 + i * 3 + 2] = p_vertices[idx].z;
- }
- }
-
- if (p_normals) {
- glEnableVertexAttribArray(VS::ARRAY_NORMAL);
- glVertexAttribPointer(VS::ARRAY_NORMAL, 3, GL_FLOAT, false, 0, normal_array);
- for (int i = 0; i < p_points; i++) {
-
- normal_array[i * 3 + 0] = p_normals[i].x;
- normal_array[i * 3 + 1] = p_normals[i].y;
- normal_array[i * 3 + 2] = p_normals[i].z;
- if (quad) {
- int idx = 2 + i;
- if (idx == 4)
- idx = 0;
- normal_array[9 + i * 3 + 0] = p_normals[idx].x;
- normal_array[9 + i * 3 + 1] = p_normals[idx].y;
- normal_array[9 + i * 3 + 2] = p_normals[idx].z;
- }
- }
- } else {
- glDisableVertexAttribArray(VS::ARRAY_NORMAL);
- }
-
- if (p_colors) {
- glEnableVertexAttribArray(VS::ARRAY_COLOR);
- glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, 0, color_array);
- for (int i = 0; i < p_points; i++) {
-
- color_array[i * 4 + 0] = p_colors[i].r;
- color_array[i * 4 + 1] = p_colors[i].g;
- color_array[i * 4 + 2] = p_colors[i].b;
- color_array[i * 4 + 3] = p_colors[i].a;
- if (quad) {
- int idx = 2 + i;
- if (idx == 4)
- idx = 0;
- color_array[12 + i * 4 + 0] = p_colors[idx].r;
- color_array[12 + i * 4 + 1] = p_colors[idx].g;
- color_array[12 + i * 4 + 2] = p_colors[idx].b;
- color_array[12 + i * 4 + 3] = p_colors[idx].a;
- }
- }
- } else {
- glDisableVertexAttribArray(VS::ARRAY_COLOR);
- }
-
- if (p_tangents) {
- glEnableVertexAttribArray(VS::ARRAY_TANGENT);
- glVertexAttribPointer(VS::ARRAY_TANGENT, 4, GL_FLOAT, false, 0, tangent_array);
- for (int i = 0; i < p_points; i++) {
-
- tangent_array[i * 4 + 0] = p_tangents[i].normal.x;
- tangent_array[i * 4 + 1] = p_tangents[i].normal.y;
- tangent_array[i * 4 + 2] = p_tangents[i].normal.z;
- tangent_array[i * 4 + 3] = p_tangents[i].d;
- if (quad) {
- int idx = 2 + i;
- if (idx == 4)
- idx = 0;
- tangent_array[12 + i * 4 + 0] = p_tangents[idx].normal.x;
- tangent_array[12 + i * 4 + 1] = p_tangents[idx].normal.y;
- tangent_array[12 + i * 4 + 2] = p_tangents[idx].normal.z;
- tangent_array[12 + i * 4 + 3] = p_tangents[idx].d;
- }
- }
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TANGENT);
- }
-
- if (p_uvs) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
- glVertexAttribPointer(VS::ARRAY_TEX_UV, 3, GL_FLOAT, false, 0, uv_array);
- for (int i = 0; i < p_points; i++) {
-
- uv_array[i * 3 + 0] = p_uvs[i].x;
- uv_array[i * 3 + 1] = p_uvs[i].y;
- uv_array[i * 3 + 2] = p_uvs[i].z;
- if (quad) {
- int idx = 2 + i;
- if (idx == 4)
- idx = 0;
- uv_array[9 + i * 3 + 0] = p_uvs[idx].x;
- uv_array[9 + i * 3 + 1] = p_uvs[idx].y;
- uv_array[9 + i * 3 + 2] = p_uvs[idx].z;
- }
- }
-
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV);
- }
-
- /*
- if (p_instanced>1)
- glDrawArraysInstanced(type,0,p_points,p_instanced);
- else
- */
-
- glDrawArrays(type, 0, quad ? 6 : p_points);
-};
-
-/* TEXTURE API */
-#define _EXT_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
-#define _EXT_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
-#define _EXT_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
-#define _EXT_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
-
-#define _EXT_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
-#define _EXT_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
-#define _EXT_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
-#define _EXT_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
-
-#define _EXT_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
-#define _EXT_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
-#define _EXT_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
-
-#define _EXT_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70
-#define _EXT_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71
-#define _EXT_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72
-#define _EXT_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73
-
-#define _EXT_COMPRESSED_RED_RGTC1_EXT 0x8DBB
-#define _EXT_COMPRESSED_RED_RGTC1 0x8DBB
-#define _EXT_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC
-#define _EXT_COMPRESSED_RG_RGTC2 0x8DBD
-#define _EXT_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE
-#define _EXT_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC
-#define _EXT_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD
-#define _EXT_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE
-#define _EXT_ETC1_RGB8_OES 0x8D64
-
-#define _EXT_SLUMINANCE_NV 0x8C46
-#define _EXT_SLUMINANCE_ALPHA_NV 0x8C44
-#define _EXT_SRGB8_NV 0x8C41
-#define _EXT_SLUMINANCE8_NV 0x8C47
-#define _EXT_SLUMINANCE8_ALPHA8_NV 0x8C45
-
-#define _EXT_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C
-#define _EXT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
-#define _EXT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
-#define _EXT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
-
-#define _EXT_ATC_RGB_AMD 0x8C92
-#define _EXT_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93
-#define _EXT_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
-
-/* TEXTURE API */
-
-Ref<Image> RasterizerGLES2::_get_gl_image_and_format(const Ref<Image> &p_image, Image::Format p_format, uint32_t p_flags, GLenum &r_gl_format, GLenum &r_gl_internal_format, int &r_gl_components, bool &r_has_alpha_cache, bool &r_compressed) {
-
- r_has_alpha_cache = false;
- r_compressed = false;
- r_gl_format = 0;
- Ref<Image> image = p_image;
-
- switch (p_format) {
-
- case Image::FORMAT_L8: {
- r_gl_components = 1;
- r_gl_format = GL_LUMINANCE;
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_SLUMINANCE_NV : GL_LUMINANCE;
-
- } break;
- case Image::FORMAT_INTENSITY: {
-
- if (!image.empty())
- image.convert(Image::FORMAT_RGBA8);
- r_gl_components = 4;
- r_gl_format = GL_RGBA;
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _GL_SRGB_ALPHA_EXT : GL_RGBA;
- r_has_alpha_cache = true;
- } break;
- case Image::FORMAT_LA8: {
-
- //image.convert(Image::FORMAT_RGBA8);
- r_gl_components = 2;
- r_gl_format = GL_LUMINANCE_ALPHA;
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_SLUMINANCE_ALPHA_NV : GL_LUMINANCE_ALPHA;
- r_has_alpha_cache = true;
- } break;
-
- case Image::FORMAT_INDEXED: {
-
- if (!image.empty())
- image.convert(Image::FORMAT_RGB8);
- r_gl_components = 3;
- r_gl_format = GL_RGB;
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _GL_SRGB_EXT : GL_RGB;
-
- } break;
-
- case Image::FORMAT_INDEXED_ALPHA: {
-
- if (!image.empty())
- image.convert(Image::FORMAT_RGBA8);
- r_gl_components = 4;
-
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } break;
- case Image::FORMAT_RGB8: {
-
- r_gl_components = 3;
-
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_internal_format = _GL_SRGB_EXT;
- r_gl_format = GL_RGB;
- } else {
- r_gl_internal_format = GL_RGB;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGB;
- }
- } break;
- case Image::FORMAT_RGBA8: {
-
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- r_gl_format = GL_RGBA;
- //r_gl_internal_format=GL_RGBA;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
-
- r_has_alpha_cache = true;
- } break;
- case Image::FORMAT_DXT1: {
-
- if (!s3tc_supported || (!s3tc_srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR)) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
-
- r_gl_components = 1; //doesn't matter much
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV : _EXT_COMPRESSED_RGBA_S3TC_DXT1_EXT;
- r_compressed = true;
- };
-
- } break;
- case Image::FORMAT_DXT3: {
-
- if (!s3tc_supported || (!s3tc_srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR)) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
- r_gl_components = 1; //doesn't matter much
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV : _EXT_COMPRESSED_RGBA_S3TC_DXT3_EXT;
-
- r_has_alpha_cache = true;
- r_compressed = true;
- };
-
- } break;
- case Image::FORMAT_DXT5: {
-
- if (!s3tc_supported || (!s3tc_srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR)) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
- r_gl_components = 1; //doesn't matter much
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV : _EXT_COMPRESSED_RGBA_S3TC_DXT5_EXT;
- r_has_alpha_cache = true;
- r_compressed = true;
- };
-
- } break;
- case Image::FORMAT_ATI1: {
-
- if (!latc_supported) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
-
- r_gl_internal_format = _EXT_COMPRESSED_LUMINANCE_LATC1_EXT;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- };
-
- } break;
- case Image::FORMAT_ATI2: {
-
- if (!latc_supported) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
- r_gl_internal_format = _EXT_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- };
- } break;
- case Image::FORMAT_PVRTC2: {
-
- if (!pvr_supported || (!pvr_srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR)) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
-
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT : _EXT_COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_PVRTC2A: {
-
- if (!pvr_supported || (!pvr_srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR)) {
-
- if (!image.empty())
- image.decompress();
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
-
- r_gl_internal_format = _EXT_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT : _EXT_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_PVRTC4: {
-
- if (!pvr_supported || (!pvr_srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR)) {
-
- if (!image.empty())
- image.decompress();
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
- } else {
-
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT : _EXT_COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_PVRTC4A: {
-
- if (!pvr_supported || (!pvr_srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR)) {
-
- if (!image.empty())
- image.decompress();
- r_gl_components = 4;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGBA;
- r_gl_internal_format = _GL_SRGB_ALPHA_EXT;
- } else {
- r_gl_internal_format = GL_RGBA;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGBA;
- }
- r_has_alpha_cache = true;
-
- } else {
- r_gl_internal_format = (srgb_supported && p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) ? _EXT_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT : _EXT_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_ETC: {
-
- if (!etc_supported || p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 3;
- if (p_flags & VS::TEXTURE_FLAG_CONVERT_TO_LINEAR) {
-
- if (srgb_supported) {
- r_gl_format = GL_RGB;
- r_gl_internal_format = _GL_SRGB_EXT;
- } else {
- r_gl_internal_format = GL_RGB;
- if (!image.empty())
- image.srgb_to_linear();
- }
- } else {
- r_gl_internal_format = GL_RGB;
- }
- r_gl_internal_format = GL_RGB;
-
- } else {
-
- r_gl_internal_format = _EXT_ETC1_RGB8_OES;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_ATC: {
-
- if (!atitc_supported) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 3;
- r_gl_internal_format = GL_RGB;
-
- } else {
-
- r_gl_internal_format = _EXT_ATC_RGB_AMD;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_ATC_ALPHA_EXPLICIT: {
-
- if (!atitc_supported) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- r_gl_internal_format = GL_RGBA;
-
- } else {
-
- r_gl_internal_format = _EXT_ATC_RGBA_EXPLICIT_ALPHA_AMD;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_ATC_ALPHA_INTERPOLATED: {
-
- if (!atitc_supported) {
-
- if (!image.empty()) {
- image.decompress();
- }
- r_gl_components = 4;
- r_gl_internal_format = GL_RGBA;
-
- } else {
-
- r_gl_internal_format = _EXT_ATC_RGBA_INTERPOLATED_ALPHA_AMD;
- r_gl_components = 1; //doesn't matter much
- r_compressed = true;
- }
-
- } break;
- case Image::FORMAT_YUV_422:
- case Image::FORMAT_YUV_444: {
-
- if (!image.empty())
- image.convert(Image::FORMAT_RGB8);
- r_gl_internal_format = GL_RGB;
- r_gl_components = 3;
-
- } break;
-
- default: {
-
- ERR_FAIL_V(Image());
- }
- }
-
- if (r_gl_format == 0) {
- r_gl_format = r_gl_internal_format;
- }
-
- return image;
-}
-
-static const GLenum _cube_side_enum[6] = {
-
- GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
- GL_TEXTURE_CUBE_MAP_POSITIVE_X,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
- GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
- GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
-
-};
-
-RID RasterizerGLES2::texture_create() {
-
- Texture *texture = memnew(Texture);
- ERR_FAIL_COND_V(!texture, RID());
- glGenTextures(1, &texture->tex_id);
- texture->active = false;
- texture->total_data_size = 0;
-
- return texture_owner.make_rid(texture);
-}
-
-void RasterizerGLES2::texture_allocate(RID p_texture, int p_width, int p_height, Image::Format p_format, uint32_t p_flags) {
-
- bool has_alpha_cache;
- int components;
- GLenum format;
- GLenum internal_format;
- bool compressed;
-
- int po2_width = nearest_power_of_2(p_width);
- int po2_height = nearest_power_of_2(p_height);
-
- if (p_flags & VS::TEXTURE_FLAG_VIDEO_SURFACE) {
- p_flags &= ~VS::TEXTURE_FLAG_MIPMAPS; // no mipies for video
- }
-
- Texture *texture = texture_owner.get(p_texture);
- ERR_FAIL_COND(!texture);
- texture->width = p_width;
- texture->height = p_height;
- texture->format = p_format;
- texture->flags = p_flags;
- texture->target = (p_flags & VS::TEXTURE_FLAG_CUBEMAP) ? GL_TEXTURE_CUBE_MAP : GL_TEXTURE_2D;
-
- _get_gl_image_and_format(Image(), texture->format, texture->flags, format, internal_format, components, has_alpha_cache, compressed);
-
- bool scale_textures = !compressed && !(p_flags & VS::TEXTURE_FLAG_VIDEO_SURFACE) && (!npo2_textures_available || p_flags & VS::TEXTURE_FLAG_MIPMAPS);
-
- if (scale_textures) {
- texture->alloc_width = po2_width;
- texture->alloc_height = po2_height;
- //print_line("scale because npo2: "+itos(npo2_textures_available)+" mm: "+itos(p_format&VS::TEXTURE_FLAG_MIPMAPS)+" "+itos(p_mipmap_count) );
- } else {
-
- texture->alloc_width = texture->width;
- texture->alloc_height = texture->height;
- };
-
- if (!(p_flags & VS::TEXTURE_FLAG_VIDEO_SURFACE) && shrink_textures_x2) {
- texture->alloc_height = MAX(1, texture->alloc_height / 2);
- texture->alloc_width = MAX(1, texture->alloc_width / 2);
- }
-
- texture->gl_components_cache = components;
- texture->gl_format_cache = format;
- texture->gl_internal_format_cache = internal_format;
- texture->format_has_alpha = has_alpha_cache;
- texture->compressed = compressed;
- texture->has_alpha = false; //by default it doesn't have alpha unless something with alpha is blitteds
- texture->data_size = 0;
- texture->mipmaps = 0;
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(texture->target, texture->tex_id);
-
- if (p_flags & VS::TEXTURE_FLAG_VIDEO_SURFACE) {
- //prealloc if video
- glTexImage2D(texture->target, 0, internal_format, p_width, p_height, 0, format, GL_UNSIGNED_BYTE, NULL);
- }
-
- texture->active = true;
-}
-
-void RasterizerGLES2::texture_set_data(RID p_texture, const Image &p_image, VS::CubeMapSide p_cube_side) {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND(!texture);
- ERR_FAIL_COND(!texture->active);
- ERR_FAIL_COND(texture->render_target);
- ERR_FAIL_COND(texture->format != p_image.get_format());
- ERR_FAIL_COND(p_image.empty());
-
- int components;
- GLenum format;
- GLenum internal_format;
- bool alpha;
- bool compressed;
-
- if (keep_copies && !(texture->flags & VS::TEXTURE_FLAG_VIDEO_SURFACE) && !(use_reload_hooks && texture->reloader)) {
- texture->image[p_cube_side] = p_image;
- }
-
- Image img = _get_gl_image_and_format(p_image, p_image.get_format(), texture->flags, format, internal_format, components, alpha, compressed);
-
- if (texture->alloc_width != img.get_width() || texture->alloc_height != img.get_height()) {
-
- if (texture->alloc_width == img.get_width() / 2 && texture->alloc_height == img.get_height() / 2) {
-
- img.shrink_x2();
- } else if (img.get_format() <= Image::FORMAT_INDEXED_ALPHA) {
-
- img.resize(texture->alloc_width, texture->alloc_height, Image::INTERPOLATE_BILINEAR);
- }
- };
-
- if (!(texture->flags & VS::TEXTURE_FLAG_VIDEO_SURFACE) && img.detect_alpha() == Image::ALPHA_BLEND) {
- texture->has_alpha = true;
- }
-
- GLenum blit_target = (texture->target == GL_TEXTURE_CUBE_MAP) ? _cube_side_enum[p_cube_side] : GL_TEXTURE_2D;
-
- texture->data_size = img.get_data().size();
- PoolVector<uint8_t>::Read read = img.get_data().read();
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(texture->target, texture->tex_id);
-
- texture->ignore_mipmaps = compressed && img.get_mipmaps() == 0;
-
- if (texture->flags & VS::TEXTURE_FLAG_MIPMAPS && !texture->ignore_mipmaps)
- glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
- else {
- if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
- glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- } else {
- glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- }
- }
-
- if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
-
- glTexParameteri(texture->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Linear Filtering
-
- } else {
-
- glTexParameteri(texture->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // raw Filtering
- }
-
- bool force_clamp_to_edge = !(texture->flags & VS::TEXTURE_FLAG_MIPMAPS && !texture->ignore_mipmaps) && (nearest_power_of_2(texture->alloc_height) != texture->alloc_height || nearest_power_of_2(texture->alloc_width) != texture->alloc_width);
-
- if (!force_clamp_to_edge && (texture->flags & VS::TEXTURE_FLAG_REPEAT || texture->flags & VS::TEXTURE_FLAG_MIRRORED_REPEAT) && texture->target != GL_TEXTURE_CUBE_MAP) {
-
- if (texture->flags & VS::TEXTURE_FLAG_MIRRORED_REPEAT) {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
- } else {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- }
- } else {
-
- //glTexParameterf( texture->target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE );
- glTexParameterf(texture->target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(texture->target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- }
-
- if (use_anisotropic_filter) {
-
- if (texture->flags & VS::TEXTURE_FLAG_ANISOTROPIC_FILTER) {
-
- glTexParameterf(texture->target, _GL_TEXTURE_MAX_ANISOTROPY_EXT, anisotropic_level);
- } else {
- glTexParameterf(texture->target, _GL_TEXTURE_MAX_ANISOTROPY_EXT, 1);
- }
- }
-
- int mipmaps = (texture->flags & VS::TEXTURE_FLAG_MIPMAPS && img.get_mipmaps() > 0) ? img.get_mipmaps() + 1 : 1;
-
- int w = img.get_width();
- int h = img.get_height();
-
- int tsize = 0;
- for (int i = 0; i < mipmaps; i++) {
-
- int size, ofs;
- img.get_mipmap_offset_and_size(i, ofs, size);
-
- //print_line("mipmap: "+itos(i)+" size: "+itos(size)+" w: "+itos(mm_w)+", h: "+itos(mm_h));
-
- if (texture->compressed) {
- glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
- glCompressedTexImage2D(blit_target, i, format, w, h, 0, size, &read[ofs]);
-
- } else {
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- if (texture->flags & VS::TEXTURE_FLAG_VIDEO_SURFACE) {
- glTexSubImage2D(blit_target, i, 0, 0, w, h, format, GL_UNSIGNED_BYTE, &read[ofs]);
- } else {
- glTexImage2D(blit_target, i, internal_format, w, h, 0, format, GL_UNSIGNED_BYTE, &read[ofs]);
- }
- }
- tsize += size;
-
- w = MAX(1, w >> 1);
- h = MAX(1, h >> 1);
- }
-
- _rinfo.texture_mem -= texture->total_data_size;
- texture->total_data_size = tsize;
- _rinfo.texture_mem += texture->total_data_size;
-
- //printf("texture: %i x %i - size: %i - total: %i\n",texture->width,texture->height,tsize,_rinfo.texture_mem);
-
- if (texture->flags & VS::TEXTURE_FLAG_MIPMAPS && mipmaps == 1 && !texture->ignore_mipmaps) {
- //generate mipmaps if they were requested and the image does not contain them
- glGenerateMipmap(texture->target);
- }
-
- texture->mipmaps = mipmaps;
-
- if (mipmaps > 1) {
-
- //glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, mipmaps-1 ); - assumed to have all, always
- }
-
- //texture_set_flags(p_texture,texture->flags);
-}
-
-Image RasterizerGLES2::texture_get_data(RID p_texture, VS::CubeMapSide p_cube_side) const {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND_V(!texture, Image());
- ERR_FAIL_COND_V(!texture->active, Image());
- ERR_FAIL_COND_V(texture->data_size == 0, Image());
- ERR_FAIL_COND_V(texture->render_target, Image());
-
- return texture->image[p_cube_side];
-
-#if 0
-
- Texture * texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND_V(!texture,Image());
- ERR_FAIL_COND_V(!texture->active,Image());
- ERR_FAIL_COND_V(texture->data_size==0,Image());
-
- PoolVector<uint8_t> data;
- GLenum format,type=GL_UNSIGNED_BYTE;
- Image::Format fmt;
- int pixelsize=0;
- int pixelshift=0;
- int minw=1,minh=1;
- bool compressed=false;
-
- fmt=texture->format;
-
- switch(texture->format) {
-
- case Image::FORMAT_L8: {
-
- format=GL_LUMINANCE;
- type=GL_UNSIGNED_BYTE;
- data.resize(texture->alloc_width*texture->alloc_height);
- pixelsize=1;
-
- } break;
- case Image::FORMAT_INTENSITY: {
- return Image();
- } break;
- case Image::FORMAT_LA8: {
-
- format=GL_LUMINANCE_ALPHA;
- type=GL_UNSIGNED_BYTE;
- pixelsize=2;
-
- } break;
- case Image::FORMAT_RGB8: {
- format=GL_RGB;
- type=GL_UNSIGNED_BYTE;
- pixelsize=3;
- } break;
- case Image::FORMAT_RGBA8: {
-
- format=GL_RGBA;
- type=GL_UNSIGNED_BYTE;
- pixelsize=4;
- } break;
- case Image::FORMAT_INDEXED: {
-
- format=GL_RGB;
- type=GL_UNSIGNED_BYTE;
- fmt=Image::FORMAT_RGB8;
- pixelsize=3;
- } break;
- case Image::FORMAT_INDEXED_ALPHA: {
-
- format=GL_RGBA;
- type=GL_UNSIGNED_BYTE;
- fmt=Image::FORMAT_RGBA8;
- pixelsize=4;
-
- } break;
- case Image::FORMAT_DXT1: {
-
- pixelsize=1; //doesn't matter much
- format=GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
- compressed=true;
- pixelshift=1;
- minw=minh=4;
-
- } break;
- case Image::FORMAT_DXT3: {
- pixelsize=1; //doesn't matter much
- format=GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
- compressed=true;
- minw=minh=4;
-
- } break;
- case Image::FORMAT_DXT5: {
-
- pixelsize=1; //doesn't matter much
- format=GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
- compressed=true;
- minw=minh=4;
-
- } break;
- case Image::FORMAT_ATI1: {
-
- format=GL_COMPRESSED_RED_RGTC1;
- pixelsize=1; //doesn't matter much
- compressed=true;
- pixelshift=1;
- minw=minh=4;
-
- } break;
- case Image::FORMAT_ATI2: {
-
- format=GL_COMPRESSED_RG_RGTC2;
- pixelsize=1; //doesn't matter much
- compressed=true;
- minw=minh=4;
-
- } break;
-
- default:{}
- }
-
- data.resize(texture->data_size);
- PoolVector<uint8_t>::Write wb = data.write();
-
- glActiveTexture(GL_TEXTURE0);
- int ofs=0;
- glBindTexture(texture->target,texture->tex_id);
-
- int w=texture->alloc_width;
- int h=texture->alloc_height;
- for(int i=0;i<texture->mipmaps+1;i++) {
-
- if (compressed) {
-
- glPixelStorei(GL_PACK_ALIGNMENT, 4);
- glGetCompressedTexImage(texture->target,i,&wb[ofs]);
-
- } else {
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
- glGetTexImage(texture->target,i,format,type,&wb[ofs]);
- }
-
- int size = (w*h*pixelsize)>>pixelshift;
- ofs+=size;
-
- w=MAX(minw,w>>1);
- h=MAX(minh,h>>1);
-
- }
-
-
- wb=PoolVector<uint8_t>::Write();
-
- Image img(texture->alloc_width,texture->alloc_height,texture->mipmaps,fmt,data);
-
- if (texture->format<Image::FORMAT_INDEXED && (texture->alloc_width!=texture->width || texture->alloc_height!=texture->height))
- img.resize(texture->width,texture->height);
-
- return img;
-#endif
-}
-
-void RasterizerGLES2::texture_set_flags(RID p_texture, uint32_t p_flags) {
-
- Texture *texture = texture_owner.get(p_texture);
- ERR_FAIL_COND(!texture);
- if (texture->render_target) {
-
- p_flags &= VS::TEXTURE_FLAG_FILTER; //can change only filter
- }
-
- bool had_mipmaps = texture->flags & VS::TEXTURE_FLAG_MIPMAPS;
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(texture->target, texture->tex_id);
- uint32_t cube = texture->flags & VS::TEXTURE_FLAG_CUBEMAP;
- texture->flags = p_flags | cube; // can't remove a cube from being a cube
-
- bool force_clamp_to_edge = !(p_flags & VS::TEXTURE_FLAG_MIPMAPS && !texture->ignore_mipmaps) && (nearest_power_of_2(texture->alloc_height) != texture->alloc_height || nearest_power_of_2(texture->alloc_width) != texture->alloc_width);
-
- if (!force_clamp_to_edge && (texture->flags & VS::TEXTURE_FLAG_REPEAT || texture->flags & VS::TEXTURE_FLAG_MIRRORED_REPEAT) && texture->target != GL_TEXTURE_CUBE_MAP) {
-
- if (texture->flags & VS::TEXTURE_FLAG_MIRRORED_REPEAT) {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
- } else {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- }
- } else {
- //glTexParameterf( texture->target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE );
- glTexParameterf(texture->target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(texture->target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- }
-
- if (use_anisotropic_filter) {
-
- if (texture->flags & VS::TEXTURE_FLAG_ANISOTROPIC_FILTER) {
-
- glTexParameterf(texture->target, _GL_TEXTURE_MAX_ANISOTROPY_EXT, anisotropic_level);
- } else {
- glTexParameterf(texture->target, _GL_TEXTURE_MAX_ANISOTROPY_EXT, 1);
- }
- }
-
- if (texture->flags & VS::TEXTURE_FLAG_MIPMAPS && !texture->ignore_mipmaps) {
- if (!had_mipmaps && texture->mipmaps == 1) {
- glGenerateMipmap(texture->target);
- }
- glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
-
- } else {
- if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
- glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- } else {
- glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- }
- }
-
- if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
-
- glTexParameteri(texture->target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Linear Filtering
-
- } else {
-
- glTexParameteri(texture->target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // raw Filtering
- }
-}
-uint32_t RasterizerGLES2::texture_get_flags(RID p_texture) const {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND_V(!texture, 0);
-
- return texture->flags;
-}
-Image::Format RasterizerGLES2::texture_get_format(RID p_texture) const {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND_V(!texture, Image::FORMAT_L8);
-
- return texture->format;
-}
-uint32_t RasterizerGLES2::texture_get_width(RID p_texture) const {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND_V(!texture, 0);
-
- return texture->width;
-}
-uint32_t RasterizerGLES2::texture_get_height(RID p_texture) const {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND_V(!texture, 0);
-
- return texture->height;
-}
-
-bool RasterizerGLES2::texture_has_alpha(RID p_texture) const {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND_V(!texture, 0);
-
- return texture->has_alpha;
-}
-
-void RasterizerGLES2::texture_set_size_override(RID p_texture, int p_width, int p_height) {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND(!texture);
- ERR_FAIL_COND(texture->render_target);
-
- ERR_FAIL_COND(p_width <= 0 || p_width > 16384);
- ERR_FAIL_COND(p_height <= 0 || p_height > 16384);
- //real texture size is in alloc width and height
- texture->width = p_width;
- texture->height = p_height;
-}
-
-void RasterizerGLES2::texture_set_reload_hook(RID p_texture, ObjectID p_owner, const StringName &p_function) const {
-
- Texture *texture = texture_owner.get(p_texture);
-
- ERR_FAIL_COND(!texture);
- ERR_FAIL_COND(texture->render_target);
-
- texture->reloader = p_owner;
- texture->reloader_func = p_function;
- if (use_reload_hooks && p_owner && keep_copies) {
-
- for (int i = 0; i < 6; i++)
- texture->image[i] = Image();
- }
-}
-
-GLuint RasterizerGLES2::_texture_get_name(RID p_tex) {
-
- Texture *texture = texture_owner.get(p_tex);
- ERR_FAIL_COND_V(!texture, 0);
-
- return texture->tex_id;
-};
-
-void RasterizerGLES2::texture_set_path(RID p_texture, const String &p_path) {
- Texture *texture = texture_owner.get(p_texture);
- ERR_FAIL_COND(!texture);
-
- texture->path = p_path;
-}
-
-String RasterizerGLES2::texture_get_path(RID p_texture) const {
-
- Texture *texture = texture_owner.get(p_texture);
- ERR_FAIL_COND_V(!texture, String());
- return texture->path;
-}
-void RasterizerGLES2::texture_debug_usage(List<VS::TextureInfo> *r_info) {
-
- List<RID> textures;
- texture_owner.get_owned_list(&textures);
-
- for (List<RID>::Element *E = textures.front(); E; E = E->next()) {
-
- Texture *t = texture_owner.get(E->get());
- if (!t)
- continue;
- VS::TextureInfo tinfo;
- tinfo.path = t->path;
- tinfo.format = t->format;
- tinfo.size.x = t->alloc_width;
- tinfo.size.y = t->alloc_height;
- tinfo.bytes = t->total_data_size;
- r_info->push_back(tinfo);
- }
-}
-
-void RasterizerGLES2::texture_set_shrink_all_x2_on_set_data(bool p_enable) {
-
- shrink_textures_x2 = p_enable;
-}
-
-/* SHADER API */
-
-RID RasterizerGLES2::shader_create(VS::ShaderMode p_mode) {
-
- Shader *shader = memnew(Shader);
- shader->mode = p_mode;
- RID rid = shader_owner.make_rid(shader);
- shader_set_mode(rid, p_mode);
- _shader_make_dirty(shader);
-
- return rid;
-}
-
-void RasterizerGLES2::shader_set_mode(RID p_shader, VS::ShaderMode p_mode) {
-
- ERR_FAIL_INDEX(p_mode, 3);
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND(!shader);
- if (shader->custom_code_id && p_mode == shader->mode)
- return;
-
- if (shader->custom_code_id) {
-
- switch (shader->mode) {
- case VS::SHADER_MATERIAL: {
- material_shader.free_custom_shader(shader->custom_code_id);
- } break;
- case VS::SHADER_CANVAS_ITEM: {
- canvas_shader.free_custom_shader(shader->custom_code_id);
- } break;
- }
-
- shader->custom_code_id = 0;
- }
-
- shader->mode = p_mode;
-
- switch (shader->mode) {
- case VS::SHADER_MATERIAL: {
- shader->custom_code_id = material_shader.create_custom_shader();
- } break;
- case VS::SHADER_CANVAS_ITEM: {
- shader->custom_code_id = canvas_shader.create_custom_shader();
- } break;
- }
- _shader_make_dirty(shader);
-}
-VS::ShaderMode RasterizerGLES2::shader_get_mode(RID p_shader) const {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND_V(!shader, VS::SHADER_MATERIAL);
- return shader->mode;
-}
-
-void RasterizerGLES2::shader_set_code(RID p_shader, const String &p_vertex, const String &p_fragment, const String &p_light, int p_vertex_ofs, int p_fragment_ofs, int p_light_ofs) {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND(!shader);
-
-#ifdef DEBUG_ENABLED
- if (shader->vertex_code == p_vertex && shader->fragment_code == p_fragment && shader->light_code == p_light)
- return;
-#endif
- shader->fragment_code = p_fragment;
- shader->vertex_code = p_vertex;
- shader->light_code = p_light;
- shader->fragment_line = p_fragment_ofs;
- shader->vertex_line = p_vertex_ofs;
- shader->light_line = p_light_ofs;
- _shader_make_dirty(shader);
-}
-
-String RasterizerGLES2::shader_get_vertex_code(RID p_shader) const {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND_V(!shader, String());
- return shader->vertex_code;
-}
-
-String RasterizerGLES2::shader_get_fragment_code(RID p_shader) const {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND_V(!shader, String());
- return shader->fragment_code;
-}
-
-String RasterizerGLES2::shader_get_light_code(RID p_shader) const {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND_V(!shader, String());
- return shader->light_code;
-}
-
-void RasterizerGLES2::_shader_make_dirty(Shader *p_shader) {
-
- if (p_shader->dirty_list.in_list())
- return;
-
- _shader_dirty_list.add(&p_shader->dirty_list);
-}
-
-void RasterizerGLES2::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND(!shader);
-
- if (shader->dirty_list.in_list())
- _update_shader(shader); // ok should be not anymore dirty
-
- Map<int, StringName> order;
-
- for (Map<StringName, ShaderLanguage::Uniform>::Element *E = shader->uniforms.front(); E; E = E->next()) {
-
- order[E->get().order] = E->key();
- }
-
- for (Map<int, StringName>::Element *E = order.front(); E; E = E->next()) {
-
- PropertyInfo pi;
- ShaderLanguage::Uniform &u = shader->uniforms[E->get()];
- pi.name = E->get();
- switch (u.type) {
-
- case ShaderLanguage::TYPE_VOID:
- case ShaderLanguage::TYPE_BOOL:
- case ShaderLanguage::TYPE_FLOAT:
- case ShaderLanguage::TYPE_VEC2:
- case ShaderLanguage::TYPE_VEC3:
- case ShaderLanguage::TYPE_MAT3:
- case ShaderLanguage::TYPE_MAT4:
- case ShaderLanguage::TYPE_VEC4:
- pi.type = u.default_value.get_type();
- break;
- case ShaderLanguage::TYPE_TEXTURE:
- pi.type = Variant::_RID;
- pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
- pi.hint_string = "Texture";
- break;
- case ShaderLanguage::TYPE_CUBEMAP:
- pi.type = Variant::_RID;
- pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
- pi.hint_string = "CubeMap";
- break;
- };
-
- p_param_list->push_back(pi);
- }
-}
-
-void RasterizerGLES2::shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture) {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND(!shader);
- ERR_FAIL_COND(p_texture.is_valid() && !texture_owner.owns(p_texture));
-
- if (p_texture.is_valid())
- shader->default_textures[p_name] = p_texture;
- else
- shader->default_textures.erase(p_name);
-
- _shader_make_dirty(shader);
-}
-
-RID RasterizerGLES2::shader_get_default_texture_param(RID p_shader, const StringName &p_name) const {
- const Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND_V(!shader, RID());
-
- const Map<StringName, RID>::Element *E = shader->default_textures.find(p_name);
- if (!E)
- return RID();
- return E->get();
-}
-
-Variant RasterizerGLES2::shader_get_default_param(RID p_shader, const StringName &p_name) {
-
- Shader *shader = shader_owner.get(p_shader);
- ERR_FAIL_COND_V(!shader, Variant());
-
- //update shader params if necessary
- //make sure the shader is compiled and everything
- //so the actual parameters can be properly retrieved!
- if (shader->dirty_list.in_list()) {
- _update_shader(shader);
- }
- if (shader->valid && shader->uniforms.has(p_name))
- return shader->uniforms[p_name].default_value;
-
- return Variant();
-}
-
-/* COMMON MATERIAL API */
-
-RID RasterizerGLES2::material_create() {
-
- RID material = material_owner.make_rid(memnew(Material));
- return material;
-}
-
-void RasterizerGLES2::material_set_shader(RID p_material, RID p_shader) {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND(!material);
- if (material->shader == p_shader)
- return;
- material->shader = p_shader;
- material->shader_version = 0;
-}
-
-RID RasterizerGLES2::material_get_shader(RID p_material) const {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND_V(!material, RID());
- return material->shader;
-}
-
-void RasterizerGLES2::material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND(!material);
-
- Map<StringName, Material::UniformData>::Element *E = material->shader_params.find(p_param);
- if (E) {
-
- if (p_value.get_type() == Variant::NIL) {
-
- material->shader_params.erase(E);
- material->shader_version = 0; //get default!
- } else {
- E->get().value = p_value;
- E->get().inuse = true;
- }
- } else {
-
- if (p_value.get_type() == Variant::NIL)
- return;
-
- Material::UniformData ud;
- ud.index = -1;
- ud.value = p_value;
- ud.istexture = p_value.get_type() == Variant::_RID; /// cache it being texture
- ud.inuse = true;
- material->shader_params[p_param] = ud; //may be got at some point, or erased
- }
-}
-Variant RasterizerGLES2::material_get_param(RID p_material, const StringName &p_param) const {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND_V(!material, Variant());
-
- if (material->shader.is_valid()) {
- //update shader params if necessary
- //make sure the shader is compiled and everything
- //so the actual parameters can be properly retrieved!
- material->shader_cache = shader_owner.get(material->shader);
- if (!material->shader_cache) {
- //invalidate
- material->shader = RID();
- material->shader_cache = NULL;
- } else {
-
- if (material->shader_cache->dirty_list.in_list())
- _update_shader(material->shader_cache);
- if (material->shader_cache->valid && material->shader_cache->version != material->shader_version) {
- //validate
- _update_material_shader_params(material);
- }
- }
- }
-
- if (material->shader_params.has(p_param) && material->shader_params[p_param].inuse)
- return material->shader_params[p_param].value;
- else
- return Variant();
-}
-
-void RasterizerGLES2::material_set_flag(RID p_material, VS::MaterialFlag p_flag, bool p_enabled) {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND(!material);
- ERR_FAIL_INDEX(p_flag, VS::MATERIAL_FLAG_MAX);
-
- material->flags[p_flag] = p_enabled;
-}
-bool RasterizerGLES2::material_get_flag(RID p_material, VS::MaterialFlag p_flag) const {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND_V(!material, false);
- ERR_FAIL_INDEX_V(p_flag, VS::MATERIAL_FLAG_MAX, false);
- return material->flags[p_flag];
-}
-
-void RasterizerGLES2::material_set_depth_draw_mode(RID p_material, VS::MaterialDepthDrawMode p_mode) {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND(!material);
- material->depth_draw_mode = p_mode;
-}
-
-VS::MaterialDepthDrawMode RasterizerGLES2::material_get_depth_draw_mode(RID p_material) const {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND_V(!material, VS::MATERIAL_DEPTH_DRAW_ALWAYS);
- return material->depth_draw_mode;
-}
-
-void RasterizerGLES2::material_set_blend_mode(RID p_material, VS::MaterialBlendMode p_mode) {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND(!material);
- material->blend_mode = p_mode;
-}
-VS::MaterialBlendMode RasterizerGLES2::material_get_blend_mode(RID p_material) const {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND_V(!material, VS::MATERIAL_BLEND_MODE_ADD);
- return material->blend_mode;
-}
-
-void RasterizerGLES2::material_set_line_width(RID p_material, float p_line_width) {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND(!material);
- material->line_width = p_line_width;
-}
-float RasterizerGLES2::material_get_line_width(RID p_material) const {
-
- Material *material = material_owner.get(p_material);
- ERR_FAIL_COND_V(!material, 0);
-
- return material->line_width;
-}
-
-/* MESH API */
-
-RID RasterizerGLES2::mesh_create() {
-
- return mesh_owner.make_rid(memnew(Mesh));
-}
-
-void RasterizerGLES2::mesh_add_surface(RID p_mesh, VS::PrimitiveType p_primitive, const Array &p_arrays, const Array &p_blend_shapes, bool p_alpha_sort) {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND(!mesh);
-
- ERR_FAIL_INDEX(p_primitive, VS::PRIMITIVE_MAX);
- ERR_FAIL_COND(p_arrays.size() != VS::ARRAY_MAX);
-
- uint32_t format = 0;
-
- // validation
- int index_array_len = 0;
- int array_len = 0;
-
- for (int i = 0; i < p_arrays.size(); i++) {
-
- if (p_arrays[i].get_type() == Variant::NIL)
- continue;
-
- format |= (1 << i);
-
- if (i == VS::ARRAY_VERTEX) {
-
- array_len = Vector3Array(p_arrays[i]).size();
- ERR_FAIL_COND(array_len == 0);
- } else if (i == VS::ARRAY_INDEX) {
-
- index_array_len = IntArray(p_arrays[i]).size();
- }
- }
-
- ERR_FAIL_COND((format & VS::ARRAY_FORMAT_VERTEX) == 0); // mandatory
-
- ERR_FAIL_COND(mesh->morph_target_count != p_blend_shapes.size());
- if (mesh->morph_target_count) {
- //validate format for morphs
- for (int i = 0; i < p_blend_shapes.size(); i++) {
-
- uint32_t bsformat = 0;
- Array arr = p_blend_shapes[i];
- for (int j = 0; j < arr.size(); j++) {
-
- if (arr[j].get_type() != Variant::NIL)
- bsformat |= (1 << j);
- }
-
- ERR_FAIL_COND((bsformat) != (format & (VS::ARRAY_FORMAT_BONES - 1)));
- }
- }
-
- Surface *surface = memnew(Surface);
- ERR_FAIL_COND(!surface);
-
- bool use_VBO = true; //glGenBuffersARB!=NULL; // TODO detect if it's in there
- if ((!use_hw_skeleton_xform && format & VS::ARRAY_FORMAT_WEIGHTS) || mesh->morph_target_count > 0) {
-
- use_VBO = false;
- }
-
- //surface->packed=pack_arrays && use_VBO;
-
- int total_elem_size = 0;
-
- for (int i = 0; i < VS::ARRAY_MAX; i++) {
-
- Surface::ArrayData &ad = surface->array[i];
- ad.size = 0;
- ad.ofs = 0;
- int elem_size = 0;
- int elem_count = 0;
- bool valid_local = true;
- GLenum datatype;
- bool normalize = false;
- bool bind = false;
-
- if (!(format & (1 << i))) // no array
- continue;
-
- switch (i) {
-
- case VS::ARRAY_VERTEX: {
-
- if (use_VBO && use_half_float) {
- elem_size = 3 * sizeof(int16_t); // vertex
- datatype = _GL_HALF_FLOAT_OES;
- } else {
-
- elem_size = 3 * sizeof(GLfloat); // vertex
- datatype = GL_FLOAT;
- }
- bind = true;
- elem_count = 3;
-
- } break;
- case VS::ARRAY_NORMAL: {
-
- if (use_VBO) {
- elem_size = 4 * sizeof(int8_t); // vertex
- datatype = GL_BYTE;
- normalize = true;
- } else {
- elem_size = 3 * sizeof(GLfloat); // vertex
- datatype = GL_FLOAT;
- }
- bind = true;
- elem_count = 3;
- } break;
- case VS::ARRAY_TANGENT: {
- if (use_VBO) {
- elem_size = 4 * sizeof(int8_t); // vertex
- datatype = GL_BYTE;
- normalize = true;
- } else {
- elem_size = 4 * sizeof(GLfloat); // vertex
- datatype = GL_FLOAT;
- }
- bind = true;
- elem_count = 4;
-
- } break;
- case VS::ARRAY_COLOR: {
-
- elem_size = 4 * sizeof(uint8_t); /* RGBA */
- datatype = GL_UNSIGNED_BYTE;
- elem_count = 4;
- bind = true;
- normalize = true;
- } break;
- case VS::ARRAY_TEX_UV:
- case VS::ARRAY_TEX_UV2: {
- if (use_VBO && use_half_float) {
- elem_size = 2 * sizeof(int16_t); // vertex
- datatype = _GL_HALF_FLOAT_OES;
- } else {
- elem_size = 2 * sizeof(GLfloat); // vertex
- datatype = GL_FLOAT;
- }
- bind = true;
- elem_count = 2;
-
- } break;
- case VS::ARRAY_WEIGHTS: {
-
- if (use_VBO) {
-
- elem_size = VS::ARRAY_WEIGHTS_SIZE * sizeof(GLushort);
- valid_local = false;
- bind = true;
- normalize = true;
- datatype = GL_UNSIGNED_SHORT;
- elem_count = 4;
-
- } else {
- elem_size = VS::ARRAY_WEIGHTS_SIZE * sizeof(GLfloat);
- valid_local = false;
- bind = false;
- datatype = GL_FLOAT;
- elem_count = 4;
- }
-
- } break;
- case VS::ARRAY_BONES: {
-
- if (use_VBO) {
- elem_size = VS::ARRAY_WEIGHTS_SIZE * sizeof(GLubyte);
- valid_local = false;
- bind = true;
- datatype = GL_UNSIGNED_BYTE;
- elem_count = 4;
- } else {
-
- elem_size = VS::ARRAY_WEIGHTS_SIZE * sizeof(GLushort);
- valid_local = false;
- bind = false;
- datatype = GL_UNSIGNED_SHORT;
- elem_count = 4;
- }
-
- } break;
- case VS::ARRAY_INDEX: {
-
- if (index_array_len <= 0) {
- ERR_PRINT("index_array_len==NO_INDEX_ARRAY");
- break;
- }
- /* determine wether using 16 or 32 bits indices */
- if (array_len > (1 << 16)) {
-
- elem_size = 4;
- datatype = GL_UNSIGNED_INT;
- } else {
- elem_size = 2;
- datatype = GL_UNSIGNED_SHORT;
- }
-
- /*
- if (use_VBO) {
-
- glGenBuffers(1,&surface->index_id);
- ERR_FAIL_COND(surface->index_id==0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,surface->index_id);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER,index_array_len*elem_size,NULL,GL_STATIC_DRAW);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0); //unbind
- } else {
- surface->index_array_local = (uint8_t*)memalloc(index_array_len*elem_size);
- };
-*/
- surface->index_array_len = index_array_len; // only way it can exist
- ad.ofs = 0;
- ad.size = elem_size;
-
- continue;
- } break;
- default: {
- ERR_FAIL();
- }
- }
-
- ad.ofs = total_elem_size;
- ad.size = elem_size;
- ad.datatype = datatype;
- ad.normalize = normalize;
- ad.bind = bind;
- ad.count = elem_count;
- total_elem_size += elem_size;
- if (valid_local) {
- surface->local_stride += elem_size;
- surface->morph_format |= (1 << i);
- }
- }
-
- surface->stride = total_elem_size;
- surface->array_len = array_len;
- surface->format = format;
- surface->primitive = p_primitive;
- surface->morph_target_count = mesh->morph_target_count;
- surface->configured_format = 0;
- surface->mesh = mesh;
- if (keep_copies) {
- surface->data = p_arrays;
- surface->morph_data = p_blend_shapes;
- }
-
- uint8_t *array_ptr = NULL;
- uint8_t *index_array_ptr = NULL;
- PoolVector<uint8_t> array_pre_vbo;
- PoolVector<uint8_t>::Write vaw;
- PoolVector<uint8_t> index_array_pre_vbo;
- PoolVector<uint8_t>::Write iaw;
-
- /* create pointers */
- if (use_VBO) {
-
- array_pre_vbo.resize(surface->array_len * surface->stride);
- vaw = array_pre_vbo.write();
- array_ptr = vaw.ptr();
-
- if (surface->index_array_len) {
-
- index_array_pre_vbo.resize(surface->index_array_len * surface->array[VS::ARRAY_INDEX].size);
- iaw = index_array_pre_vbo.write();
- index_array_ptr = iaw.ptr();
- }
-
- _surface_set_arrays(surface, array_ptr, index_array_ptr, p_arrays, true);
-
- } else {
-
- surface->array_local = (uint8_t *)memalloc(surface->array_len * surface->stride);
- array_ptr = (uint8_t *)surface->array_local;
- if (surface->index_array_len) {
- surface->index_array_local = (uint8_t *)memalloc(index_array_len * surface->array[VS::ARRAY_INDEX].size);
- index_array_ptr = (uint8_t *)surface->index_array_local;
- }
-
- _surface_set_arrays(surface, array_ptr, index_array_ptr, p_arrays, true);
-
- if (mesh->morph_target_count) {
-
- surface->morph_targets_local = memnew_arr(Surface::MorphTarget, mesh->morph_target_count);
- for (int i = 0; i < mesh->morph_target_count; i++) {
-
- surface->morph_targets_local[i].array = memnew_arr(uint8_t, surface->local_stride * surface->array_len);
- surface->morph_targets_local[i].configured_format = surface->morph_format;
- _surface_set_arrays(surface, surface->morph_targets_local[i].array, NULL, p_blend_shapes[i], false);
- }
- }
- }
-
- /* create buffers!! */
- if (use_VBO) {
- glGenBuffers(1, &surface->vertex_id);
- ERR_FAIL_COND(surface->vertex_id == 0);
- glBindBuffer(GL_ARRAY_BUFFER, surface->vertex_id);
- glBufferData(GL_ARRAY_BUFFER, surface->array_len * surface->stride, array_ptr, GL_STATIC_DRAW);
- glBindBuffer(GL_ARRAY_BUFFER, 0); //unbind
- if (surface->index_array_len) {
-
- glGenBuffers(1, &surface->index_id);
- ERR_FAIL_COND(surface->index_id == 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, surface->index_id);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, index_array_len * surface->array[VS::ARRAY_INDEX].size, index_array_ptr, GL_STATIC_DRAW);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); //unbind
- }
- }
-
- mesh->surfaces.push_back(surface);
-}
-
-Error RasterizerGLES2::_surface_set_arrays(Surface *p_surface, uint8_t *p_mem, uint8_t *p_index_mem, const Array &p_arrays, bool p_main) {
-
- uint32_t stride = p_main ? p_surface->stride : p_surface->local_stride;
-
- for (int ai = 0; ai < VS::ARRAY_MAX; ai++) {
- if (ai >= p_arrays.size())
- break;
- if (p_arrays[ai].get_type() == Variant::NIL)
- continue;
- Surface::ArrayData &a = p_surface->array[ai];
-
- switch (ai) {
-
- case VS::ARRAY_VERTEX: {
-
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::VECTOR3_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<Vector3> array = p_arrays[ai];
- ERR_FAIL_COND_V(array.size() != p_surface->array_len, ERR_INVALID_PARAMETER);
-
- PoolVector<Vector3>::Read read = array.read();
- const Vector3 *src = read.ptr();
-
- // setting vertices means regenerating the AABB
- AABB aabb;
-
- float scale = 1;
-
- if (p_surface->array[VS::ARRAY_VERTEX].datatype == _GL_HALF_FLOAT_OES) {
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- uint16_t vector[3] = { make_half_float(src[i].x), make_half_float(src[i].y), make_half_float(src[i].z) };
-
- copymem(&p_mem[a.ofs + i * stride], vector, a.size);
-
- if (i == 0) {
-
- aabb = AABB(src[i], Vector3());
- } else {
-
- aabb.expand_to(src[i]);
- }
- }
-
- } else {
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLfloat vector[3] = { src[i].x, src[i].y, src[i].z };
-
- copymem(&p_mem[a.ofs + i * stride], vector, a.size);
-
- if (i == 0) {
-
- aabb = AABB(src[i], Vector3());
- } else {
-
- aabb.expand_to(src[i]);
- }
- }
- }
-
- if (p_main) {
- p_surface->aabb = aabb;
- p_surface->vertex_scale = scale;
- }
-
- } break;
- case VS::ARRAY_NORMAL: {
-
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::VECTOR3_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<Vector3> array = p_arrays[ai];
- ERR_FAIL_COND_V(array.size() != p_surface->array_len, ERR_INVALID_PARAMETER);
-
- PoolVector<Vector3>::Read read = array.read();
- const Vector3 *src = read.ptr();
-
- // setting vertices means regenerating the AABB
-
- if (p_surface->array[VS::ARRAY_NORMAL].datatype == GL_BYTE) {
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLbyte vector[4] = {
- CLAMP(src[i].x * 127, -128, 127),
- CLAMP(src[i].y * 127, -128, 127),
- CLAMP(src[i].z * 127, -128, 127),
- 0,
- };
-
- copymem(&p_mem[a.ofs + i * stride], vector, a.size);
- }
-
- } else {
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLfloat vector[3] = { src[i].x, src[i].y, src[i].z };
- copymem(&p_mem[a.ofs + i * stride], vector, a.size);
- }
- }
-
- } break;
- case VS::ARRAY_TANGENT: {
-
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::REAL_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<real_t> array = p_arrays[ai];
-
- ERR_FAIL_COND_V(array.size() != p_surface->array_len * 4, ERR_INVALID_PARAMETER);
-
- PoolVector<real_t>::Read read = array.read();
- const real_t *src = read.ptr();
-
- if (p_surface->array[VS::ARRAY_TANGENT].datatype == GL_BYTE) {
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLbyte xyzw[4] = {
- CLAMP(src[i * 4 + 0] * 127, -128, 127),
- CLAMP(src[i * 4 + 1] * 127, -128, 127),
- CLAMP(src[i * 4 + 2] * 127, -128, 127),
- CLAMP(src[i * 4 + 3] * 127, -128, 127)
- };
-
- copymem(&p_mem[a.ofs + i * stride], xyzw, a.size);
- }
-
- } else {
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLfloat xyzw[4] = {
- src[i * 4 + 0],
- src[i * 4 + 1],
- src[i * 4 + 2],
- src[i * 4 + 3]
- };
-
- copymem(&p_mem[a.ofs + i * stride], xyzw, a.size);
- }
- }
-
- } break;
- case VS::ARRAY_COLOR: {
-
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::COLOR_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<Color> array = p_arrays[ai];
-
- ERR_FAIL_COND_V(array.size() != p_surface->array_len, ERR_INVALID_PARAMETER);
-
- PoolVector<Color>::Read read = array.read();
- const Color *src = read.ptr();
- bool alpha = false;
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- if (src[i].a < 0.98) // tolerate alpha a bit, for crappy exporters
- alpha = true;
-
- uint8_t colors[4];
-
- for (int j = 0; j < 4; j++) {
-
- colors[j] = CLAMP(int((src[i][j]) * 255.0), 0, 255);
- }
-
- copymem(&p_mem[a.ofs + i * stride], colors, a.size);
- }
-
- if (p_main)
- p_surface->has_alpha = alpha;
-
- } break;
- case VS::ARRAY_TEX_UV:
- case VS::ARRAY_TEX_UV2: {
-
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::VECTOR3_ARRAY && p_arrays[ai].get_type() != Variant::VECTOR2_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<Vector2> array = p_arrays[ai];
-
- ERR_FAIL_COND_V(array.size() != p_surface->array_len, ERR_INVALID_PARAMETER);
-
- PoolVector<Vector2>::Read read = array.read();
-
- const Vector2 *src = read.ptr();
- float scale = 1.0;
-
- if (p_surface->array[ai].datatype == _GL_HALF_FLOAT_OES) {
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- uint16_t uv[2] = { make_half_float(src[i].x), make_half_float(src[i].y) };
- copymem(&p_mem[a.ofs + i * stride], uv, a.size);
- }
-
- } else {
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLfloat uv[2] = { src[i].x, src[i].y };
-
- copymem(&p_mem[a.ofs + i * stride], uv, a.size);
- }
- }
-
- if (p_main) {
-
- if (ai == VS::ARRAY_TEX_UV) {
-
- p_surface->uv_scale = scale;
- }
- if (ai == VS::ARRAY_TEX_UV2) {
-
- p_surface->uv2_scale = scale;
- }
- }
-
- } break;
- case VS::ARRAY_WEIGHTS: {
-
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::REAL_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<real_t> array = p_arrays[ai];
-
- ERR_FAIL_COND_V(array.size() != p_surface->array_len * VS::ARRAY_WEIGHTS_SIZE, ERR_INVALID_PARAMETER);
-
- PoolVector<real_t>::Read read = array.read();
-
- const real_t *src = read.ptr();
-
- if (p_surface->array[VS::ARRAY_WEIGHTS].datatype == GL_UNSIGNED_SHORT) {
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLushort data[VS::ARRAY_WEIGHTS_SIZE];
- for (int j = 0; j < VS::ARRAY_WEIGHTS_SIZE; j++) {
- data[j] = CLAMP(src[i * VS::ARRAY_WEIGHTS_SIZE + j] * 65535, 0, 65535);
- }
-
- copymem(&p_mem[a.ofs + i * stride], data, a.size);
- }
- } else {
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLfloat data[VS::ARRAY_WEIGHTS_SIZE];
- for (int j = 0; j < VS::ARRAY_WEIGHTS_SIZE; j++) {
- data[j] = src[i * VS::ARRAY_WEIGHTS_SIZE + j];
- }
-
- copymem(&p_mem[a.ofs + i * stride], data, a.size);
- }
- }
-
- } break;
- case VS::ARRAY_BONES: {
-
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::REAL_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<int> array = p_arrays[ai];
-
- ERR_FAIL_COND_V(array.size() != p_surface->array_len * VS::ARRAY_WEIGHTS_SIZE, ERR_INVALID_PARAMETER);
-
- PoolVector<int>::Read read = array.read();
-
- const int *src = read.ptr();
-
- p_surface->max_bone = 0;
-
- if (p_surface->array[VS::ARRAY_BONES].datatype == GL_UNSIGNED_BYTE) {
-
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLubyte data[VS::ARRAY_WEIGHTS_SIZE];
- for (int j = 0; j < VS::ARRAY_WEIGHTS_SIZE; j++) {
- data[j] = CLAMP(src[i * VS::ARRAY_WEIGHTS_SIZE + j], 0, 255);
- p_surface->max_bone = MAX(data[j], p_surface->max_bone);
- }
-
- copymem(&p_mem[a.ofs + i * stride], data, a.size);
- }
-
- } else {
- for (int i = 0; i < p_surface->array_len; i++) {
-
- GLushort data[VS::ARRAY_WEIGHTS_SIZE];
- for (int j = 0; j < VS::ARRAY_WEIGHTS_SIZE; j++) {
- data[j] = src[i * VS::ARRAY_WEIGHTS_SIZE + j];
- p_surface->max_bone = MAX(data[j], p_surface->max_bone);
- }
-
- copymem(&p_mem[a.ofs + i * stride], data, a.size);
- }
- }
-
- } break;
- case VS::ARRAY_INDEX: {
-
- ERR_FAIL_COND_V(p_surface->index_array_len <= 0, ERR_INVALID_DATA);
- ERR_FAIL_COND_V(p_arrays[ai].get_type() != Variant::INT_ARRAY, ERR_INVALID_PARAMETER);
-
- PoolVector<int> indices = p_arrays[ai];
- ERR_FAIL_COND_V(indices.size() == 0, ERR_INVALID_PARAMETER);
- ERR_FAIL_COND_V(indices.size() != p_surface->index_array_len, ERR_INVALID_PARAMETER);
-
- /* determine wether using 16 or 32 bits indices */
-
- PoolVector<int>::Read read = indices.read();
- const int *src = read.ptr();
-
- for (int i = 0; i < p_surface->index_array_len; i++) {
-
- if (a.size == 2) {
- uint16_t v = src[i];
-
- copymem(&p_index_mem[i * a.size], &v, a.size);
- } else {
- uint32_t v = src[i];
-
- copymem(&p_index_mem[i * a.size], &v, a.size);
- }
- }
-
- } break;
-
- default: { ERR_FAIL_V(ERR_INVALID_PARAMETER); }
- }
-
- p_surface->configured_format |= (1 << ai);
- }
-
- if (p_surface->format & VS::ARRAY_FORMAT_BONES) {
- //create AABBs for each detected bone
- int total_bones = p_surface->max_bone + 1;
- if (p_main) {
- p_surface->skeleton_bone_aabb.resize(total_bones);
- p_surface->skeleton_bone_used.resize(total_bones);
- for (int i = 0; i < total_bones; i++)
- p_surface->skeleton_bone_used[i] = false;
- }
- PoolVector<Vector3> vertices = p_arrays[VS::ARRAY_VERTEX];
- PoolVector<int> bones = p_arrays[VS::ARRAY_BONES];
- PoolVector<float> weights = p_arrays[VS::ARRAY_WEIGHTS];
-
- bool any_valid = false;
-
- if (vertices.size() && bones.size() == vertices.size() * 4 && weights.size() == bones.size()) {
- //print_line("MAKING SKELETHONG");
- int vs = vertices.size();
- PoolVector<Vector3>::Read rv = vertices.read();
- PoolVector<int>::Read rb = bones.read();
- PoolVector<float>::Read rw = weights.read();
-
- Vector<bool> first;
- first.resize(total_bones);
- for (int i = 0; i < total_bones; i++) {
- first[i] = p_main;
- }
- AABB *bptr = p_surface->skeleton_bone_aabb.ptr();
- bool *fptr = first.ptr();
- bool *usedptr = p_surface->skeleton_bone_used.ptr();
-
- for (int i = 0; i < vs; i++) {
-
- Vector3 v = rv[i];
- for (int j = 0; j < 4; j++) {
-
- int idx = rb[i * 4 + j];
- float w = rw[i * 4 + j];
- if (w == 0)
- continue; //break;
- ERR_FAIL_INDEX_V(idx, total_bones, ERR_INVALID_DATA);
-
- if (fptr[idx]) {
- bptr[idx].pos = v;
- fptr[idx] = false;
- any_valid = true;
- } else {
- bptr[idx].expand_to(v);
- }
- usedptr[idx] = true;
- }
- }
- }
-
- if (p_main && !any_valid) {
-
- p_surface->skeleton_bone_aabb.clear();
- p_surface->skeleton_bone_used.clear();
- }
- }
-
- return OK;
-}
-
-void RasterizerGLES2::mesh_add_custom_surface(RID p_mesh, const Variant &p_dat) {
-
- ERR_EXPLAIN("OpenGL Rasterizer does not support custom surfaces. Running on wrong platform?");
- ERR_FAIL();
-}
-
-Array RasterizerGLES2::mesh_get_surface_arrays(RID p_mesh, int p_surface) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, Array());
- ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), Array());
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND_V(!surface, Array());
-
- return surface->data;
-}
-Array RasterizerGLES2::mesh_get_surface_morph_arrays(RID p_mesh, int p_surface) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, Array());
- ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), Array());
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND_V(!surface, Array());
-
- return surface->morph_data;
-}
-
-void RasterizerGLES2::mesh_set_morph_target_count(RID p_mesh, int p_amount) {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND(!mesh);
- ERR_FAIL_COND(mesh->surfaces.size() != 0);
-
- mesh->morph_target_count = p_amount;
-}
-
-int RasterizerGLES2::mesh_get_morph_target_count(RID p_mesh) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, -1);
-
- return mesh->morph_target_count;
-}
-
-void RasterizerGLES2::mesh_set_morph_target_mode(RID p_mesh, VS::MorphTargetMode p_mode) {
-
- ERR_FAIL_INDEX(p_mode, 2);
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND(!mesh);
-
- mesh->morph_target_mode = p_mode;
-}
-
-VS::MorphTargetMode RasterizerGLES2::mesh_get_morph_target_mode(RID p_mesh) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, VS::MORPH_MODE_NORMALIZED);
-
- return mesh->morph_target_mode;
-}
-
-void RasterizerGLES2::mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material, bool p_owned) {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND(!mesh);
- ERR_FAIL_INDEX(p_surface, mesh->surfaces.size());
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND(!surface);
-
- if (surface->material_owned && surface->material.is_valid())
- free(surface->material);
-
- surface->material_owned = p_owned;
-
- surface->material = p_material;
-}
-
-RID RasterizerGLES2::mesh_surface_get_material(RID p_mesh, int p_surface) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, RID());
- ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), RID());
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND_V(!surface, RID());
-
- return surface->material;
-}
-
-int RasterizerGLES2::mesh_surface_get_array_len(RID p_mesh, int p_surface) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, -1);
- ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), -1);
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND_V(!surface, -1);
-
- return surface->array_len;
-}
-int RasterizerGLES2::mesh_surface_get_array_index_len(RID p_mesh, int p_surface) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, -1);
- ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), -1);
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND_V(!surface, -1);
-
- return surface->index_array_len;
-}
-uint32_t RasterizerGLES2::mesh_surface_get_format(RID p_mesh, int p_surface) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, 0);
- ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), 0);
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND_V(!surface, 0);
-
- return surface->format;
-}
-VS::PrimitiveType RasterizerGLES2::mesh_surface_get_primitive_type(RID p_mesh, int p_surface) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, VS::PRIMITIVE_POINTS);
- ERR_FAIL_INDEX_V(p_surface, mesh->surfaces.size(), VS::PRIMITIVE_POINTS);
- Surface *surface = mesh->surfaces[p_surface];
- ERR_FAIL_COND_V(!surface, VS::PRIMITIVE_POINTS);
-
- return surface->primitive;
-}
-
-void RasterizerGLES2::mesh_remove_surface(RID p_mesh, int p_index) {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND(!mesh);
- ERR_FAIL_INDEX(p_index, mesh->surfaces.size());
- Surface *surface = mesh->surfaces[p_index];
- ERR_FAIL_COND(!surface);
-
- if (surface->vertex_id)
- glDeleteBuffers(1, &surface->vertex_id);
- if (surface->index_id)
- glDeleteBuffers(1, &surface->index_id);
-
- if (mesh->morph_target_count) {
- for (int i = 0; i < mesh->morph_target_count; i++)
- memfree(surface->morph_targets_local[i].array);
- memfree(surface->morph_targets_local);
- }
-
- memdelete(mesh->surfaces[p_index]);
- mesh->surfaces.remove(p_index);
-}
-int RasterizerGLES2::mesh_get_surface_count(RID p_mesh) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, -1);
-
- return mesh->surfaces.size();
-}
-
-AABB RasterizerGLES2::mesh_get_aabb(RID p_mesh, RID p_skeleton) const {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, AABB());
-
- if (mesh->custom_aabb != AABB())
- return mesh->custom_aabb;
-
- Skeleton *sk = NULL;
- if (p_skeleton.is_valid())
- sk = skeleton_owner.get(p_skeleton);
-
- AABB aabb;
- if (sk && sk->bones.size() != 0) {
-
- for (int i = 0; i < mesh->surfaces.size(); i++) {
-
- AABB laabb;
- if (mesh->surfaces[i]->format & VS::ARRAY_FORMAT_BONES && mesh->surfaces[i]->skeleton_bone_aabb.size()) {
-
- int bs = mesh->surfaces[i]->skeleton_bone_aabb.size();
- const AABB *skbones = mesh->surfaces[i]->skeleton_bone_aabb.ptr();
- const bool *skused = mesh->surfaces[i]->skeleton_bone_used.ptr();
-
- int sbs = sk->bones.size();
- ERR_CONTINUE(bs > sbs);
- Skeleton::Bone *skb = sk->bones.ptr();
-
- bool first = true;
- for (int j = 0; j < bs; j++) {
-
- if (!skused[j])
- continue;
- AABB baabb = skb[j].transform_aabb(skbones[j]);
- if (first) {
- laabb = baabb;
- first = false;
- } else {
- laabb.merge_with(baabb);
- }
- }
-
- } else {
-
- laabb = mesh->surfaces[i]->aabb;
- }
-
- if (i == 0)
- aabb = laabb;
- else
- aabb.merge_with(laabb);
- }
- } else {
-
- for (int i = 0; i < mesh->surfaces.size(); i++) {
-
- if (i == 0)
- aabb = mesh->surfaces[i]->aabb;
- else
- aabb.merge_with(mesh->surfaces[i]->aabb);
- }
- }
-
- return aabb;
-}
-
-void RasterizerGLES2::mesh_set_custom_aabb(RID p_mesh, const AABB &p_aabb) {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND(!mesh);
-
- mesh->custom_aabb = p_aabb;
-}
-
-AABB RasterizerGLES2::mesh_get_custom_aabb(RID p_mesh) const {
-
- const Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND_V(!mesh, AABB());
-
- return mesh->custom_aabb;
-}
-/* MULTIMESH API */
-
-RID RasterizerGLES2::multimesh_create() {
-
- return multimesh_owner.make_rid(memnew(MultiMesh));
-}
-
-void RasterizerGLES2::multimesh_set_instance_count(RID p_multimesh, int p_count) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND(!multimesh);
-
- //multimesh->elements.clear(); // make sure to delete everything, so it "fails" in all implementations
-
- if (use_texture_instancing) {
-
- if (nearest_power_of_2(p_count) != nearest_power_of_2(multimesh->elements.size())) {
- if (multimesh->tex_id) {
- glDeleteTextures(1, &multimesh->tex_id);
- multimesh->tex_id = 0;
- }
-
- if (p_count) {
-
- uint32_t po2 = nearest_power_of_2(p_count);
- if (po2 & 0xAAAAAAAA) {
- //half width
-
- multimesh->tw = Math::sqrt(po2 * 2);
- multimesh->th = multimesh->tw / 2;
- } else {
-
- multimesh->tw = Math::sqrt(po2);
- multimesh->th = multimesh->tw;
- }
- multimesh->tw *= 4;
- if (multimesh->th == 0)
- multimesh->th = 1;
-
- glGenTextures(1, &multimesh->tex_id);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, multimesh->tex_id);
-
-#ifdef GLEW_ENABLED
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, multimesh->tw, multimesh->th, 0, GL_RGBA, GL_FLOAT, NULL);
-#else
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, multimesh->tw, multimesh->th, 0, GL_RGBA, GL_FLOAT, NULL);
-#endif
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- //multimesh->pixel_size=1.0/ps;
-
- glBindTexture(GL_TEXTURE_2D, 0);
- }
- }
-
- if (!multimesh->dirty_list.in_list()) {
- _multimesh_dirty_list.add(&multimesh->dirty_list);
- }
- }
-
- multimesh->elements.resize(p_count);
-}
-int RasterizerGLES2::multimesh_get_instance_count(RID p_multimesh) const {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND_V(!multimesh, -1);
-
- return multimesh->elements.size();
-}
-
-void RasterizerGLES2::multimesh_set_mesh(RID p_multimesh, RID p_mesh) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND(!multimesh);
-
- multimesh->mesh = p_mesh;
-}
-void RasterizerGLES2::multimesh_set_aabb(RID p_multimesh, const AABB &p_aabb) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND(!multimesh);
- multimesh->aabb = p_aabb;
-}
-void RasterizerGLES2::multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform &p_transform) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND(!multimesh);
- ERR_FAIL_INDEX(p_index, multimesh->elements.size());
- MultiMesh::Element &e = multimesh->elements[p_index];
-
- e.matrix[0] = p_transform.basis.elements[0][0];
- e.matrix[1] = p_transform.basis.elements[1][0];
- e.matrix[2] = p_transform.basis.elements[2][0];
- e.matrix[3] = 0;
- e.matrix[4] = p_transform.basis.elements[0][1];
- e.matrix[5] = p_transform.basis.elements[1][1];
- e.matrix[6] = p_transform.basis.elements[2][1];
- e.matrix[7] = 0;
- e.matrix[8] = p_transform.basis.elements[0][2];
- e.matrix[9] = p_transform.basis.elements[1][2];
- e.matrix[10] = p_transform.basis.elements[2][2];
- e.matrix[11] = 0;
- e.matrix[12] = p_transform.origin.x;
- e.matrix[13] = p_transform.origin.y;
- e.matrix[14] = p_transform.origin.z;
- e.matrix[15] = 1;
-
- if (!multimesh->dirty_list.in_list()) {
- _multimesh_dirty_list.add(&multimesh->dirty_list);
- }
-}
-void RasterizerGLES2::multimesh_instance_set_color(RID p_multimesh, int p_index, const Color &p_color) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND(!multimesh)
- ERR_FAIL_INDEX(p_index, multimesh->elements.size());
- MultiMesh::Element &e = multimesh->elements[p_index];
- e.color[0] = CLAMP(p_color.r * 255, 0, 255);
- e.color[1] = CLAMP(p_color.g * 255, 0, 255);
- e.color[2] = CLAMP(p_color.b * 255, 0, 255);
- e.color[3] = CLAMP(p_color.a * 255, 0, 255);
-
- if (!multimesh->dirty_list.in_list()) {
- _multimesh_dirty_list.add(&multimesh->dirty_list);
- }
-}
-
-RID RasterizerGLES2::multimesh_get_mesh(RID p_multimesh) const {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND_V(!multimesh, RID());
-
- return multimesh->mesh;
-}
-AABB RasterizerGLES2::multimesh_get_aabb(RID p_multimesh) const {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND_V(!multimesh, AABB());
-
- return multimesh->aabb;
-}
-
-Transform RasterizerGLES2::multimesh_instance_get_transform(RID p_multimesh, int p_index) const {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND_V(!multimesh, Transform());
-
- ERR_FAIL_INDEX_V(p_index, multimesh->elements.size(), Transform());
- MultiMesh::Element &e = multimesh->elements[p_index];
-
- Transform tr;
-
- tr.basis.elements[0][0] = e.matrix[0];
- tr.basis.elements[1][0] = e.matrix[1];
- tr.basis.elements[2][0] = e.matrix[2];
- tr.basis.elements[0][1] = e.matrix[4];
- tr.basis.elements[1][1] = e.matrix[5];
- tr.basis.elements[2][1] = e.matrix[6];
- tr.basis.elements[0][2] = e.matrix[8];
- tr.basis.elements[1][2] = e.matrix[9];
- tr.basis.elements[2][2] = e.matrix[10];
- tr.origin.x = e.matrix[12];
- tr.origin.y = e.matrix[13];
- tr.origin.z = e.matrix[14];
-
- return tr;
-}
-Color RasterizerGLES2::multimesh_instance_get_color(RID p_multimesh, int p_index) const {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND_V(!multimesh, Color());
- ERR_FAIL_INDEX_V(p_index, multimesh->elements.size(), Color());
- MultiMesh::Element &e = multimesh->elements[p_index];
- Color c;
- c.r = e.color[0] / 255.0;
- c.g = e.color[1] / 255.0;
- c.b = e.color[2] / 255.0;
- c.a = e.color[3] / 255.0;
-
- return c;
-}
-
-void RasterizerGLES2::multimesh_set_visible_instances(RID p_multimesh, int p_visible) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND(!multimesh);
- multimesh->visible = p_visible;
-}
-
-int RasterizerGLES2::multimesh_get_visible_instances(RID p_multimesh) const {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND_V(!multimesh, -1);
- return multimesh->visible;
-}
-
-/* IMMEDIATE API */
-
-RID RasterizerGLES2::immediate_create() {
-
- Immediate *im = memnew(Immediate);
- return immediate_owner.make_rid(im);
-}
-
-void RasterizerGLES2::immediate_begin(RID p_immediate, VS::PrimitiveType p_rimitive, RID p_texture) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(im->building);
-
- Immediate::Chunk ic;
- ic.texture = p_texture;
- ic.primitive = p_rimitive;
- im->chunks.push_back(ic);
- im->mask = 0;
- im->building = true;
-}
-void RasterizerGLES2::immediate_vertex(RID p_immediate, const Vector3 &p_vertex) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(!im->building);
-
- Immediate::Chunk *c = &im->chunks.back()->get();
-
- if (c->vertices.empty() && im->chunks.size() == 1) {
-
- im->aabb.pos = p_vertex;
- im->aabb.size = Vector3();
- } else {
- im->aabb.expand_to(p_vertex);
- }
-
- if (im->mask & VS::ARRAY_FORMAT_NORMAL)
- c->normals.push_back(chunk_normal);
- if (im->mask & VS::ARRAY_FORMAT_TANGENT)
- c->tangents.push_back(chunk_tangent);
- if (im->mask & VS::ARRAY_FORMAT_COLOR)
- c->colors.push_back(chunk_color);
- if (im->mask & VS::ARRAY_FORMAT_TEX_UV)
- c->uvs.push_back(chunk_uv);
- if (im->mask & VS::ARRAY_FORMAT_TEX_UV2)
- c->uvs2.push_back(chunk_uv2);
- im->mask |= VS::ARRAY_FORMAT_VERTEX;
- c->vertices.push_back(p_vertex);
-}
-
-void RasterizerGLES2::immediate_normal(RID p_immediate, const Vector3 &p_normal) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(!im->building);
-
- im->mask |= VS::ARRAY_FORMAT_NORMAL;
- chunk_normal = p_normal;
-}
-void RasterizerGLES2::immediate_tangent(RID p_immediate, const Plane &p_tangent) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(!im->building);
-
- im->mask |= VS::ARRAY_FORMAT_TANGENT;
- chunk_tangent = p_tangent;
-}
-void RasterizerGLES2::immediate_color(RID p_immediate, const Color &p_color) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(!im->building);
-
- im->mask |= VS::ARRAY_FORMAT_COLOR;
- chunk_color = p_color;
-}
-void RasterizerGLES2::immediate_uv(RID p_immediate, const Vector2 &tex_uv) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(!im->building);
-
- im->mask |= VS::ARRAY_FORMAT_TEX_UV;
- chunk_uv = tex_uv;
-}
-void RasterizerGLES2::immediate_uv2(RID p_immediate, const Vector2 &tex_uv) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(!im->building);
-
- im->mask |= VS::ARRAY_FORMAT_TEX_UV2;
- chunk_uv2 = tex_uv;
-}
-
-void RasterizerGLES2::immediate_end(RID p_immediate) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(!im->building);
-
- im->building = false;
-}
-void RasterizerGLES2::immediate_clear(RID p_immediate) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- ERR_FAIL_COND(im->building);
-
- im->chunks.clear();
-}
-
-AABB RasterizerGLES2::immediate_get_aabb(RID p_immediate) const {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND_V(!im, AABB());
- return im->aabb;
-}
-
-void RasterizerGLES2::immediate_set_material(RID p_immediate, RID p_material) {
-
- Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!im);
- im->material = p_material;
-}
-
-RID RasterizerGLES2::immediate_get_material(RID p_immediate) const {
-
- const Immediate *im = immediate_owner.get(p_immediate);
- ERR_FAIL_COND_V(!im, RID());
- return im->material;
-}
-
-/* PARTICLES API */
-
-RID RasterizerGLES2::particles_create() {
-
- Particles *particles = memnew(Particles);
- ERR_FAIL_COND_V(!particles, RID());
- return particles_owner.make_rid(particles);
-}
-
-void RasterizerGLES2::particles_set_amount(RID p_particles, int p_amount) {
-
- ERR_FAIL_COND(p_amount < 1);
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.amount = p_amount;
-}
-
-int RasterizerGLES2::particles_get_amount(RID p_particles) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, -1);
- return particles->data.amount;
-}
-
-void RasterizerGLES2::particles_set_emitting(RID p_particles, bool p_emitting) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.emitting = p_emitting;
-}
-bool RasterizerGLES2::particles_is_emitting(RID p_particles) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, false);
- return particles->data.emitting;
-}
-
-void RasterizerGLES2::particles_set_visibility_aabb(RID p_particles, const AABB &p_visibility) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.visibility_aabb = p_visibility;
-}
-
-void RasterizerGLES2::particles_set_emission_half_extents(RID p_particles, const Vector3 &p_half_extents) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
-
- particles->data.emission_half_extents = p_half_extents;
-}
-Vector3 RasterizerGLES2::particles_get_emission_half_extents(RID p_particles) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, Vector3());
-
- return particles->data.emission_half_extents;
-}
-
-void RasterizerGLES2::particles_set_emission_base_velocity(RID p_particles, const Vector3 &p_base_velocity) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
-
- particles->data.emission_base_velocity = p_base_velocity;
-}
-
-Vector3 RasterizerGLES2::particles_get_emission_base_velocity(RID p_particles) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, Vector3());
-
- return particles->data.emission_base_velocity;
-}
-
-void RasterizerGLES2::particles_set_emission_points(RID p_particles, const PoolVector<Vector3> &p_points) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
-
- particles->data.emission_points = p_points;
-}
-
-PoolVector<Vector3> RasterizerGLES2::particles_get_emission_points(RID p_particles) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, PoolVector<Vector3>());
-
- return particles->data.emission_points;
-}
-
-void RasterizerGLES2::particles_set_gravity_normal(RID p_particles, const Vector3 &p_normal) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
-
- particles->data.gravity_normal = p_normal;
-}
-Vector3 RasterizerGLES2::particles_get_gravity_normal(RID p_particles) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, Vector3());
-
- return particles->data.gravity_normal;
-}
-
-AABB RasterizerGLES2::particles_get_visibility_aabb(RID p_particles) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, AABB());
- return particles->data.visibility_aabb;
-}
-
-void RasterizerGLES2::particles_set_variable(RID p_particles, VS::ParticleVariable p_variable, float p_value) {
-
- ERR_FAIL_INDEX(p_variable, VS::PARTICLE_VAR_MAX);
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.particle_vars[p_variable] = p_value;
-}
-float RasterizerGLES2::particles_get_variable(RID p_particles, VS::ParticleVariable p_variable) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, -1);
- return particles->data.particle_vars[p_variable];
-}
-
-void RasterizerGLES2::particles_set_randomness(RID p_particles, VS::ParticleVariable p_variable, float p_randomness) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.particle_randomness[p_variable] = p_randomness;
-}
-float RasterizerGLES2::particles_get_randomness(RID p_particles, VS::ParticleVariable p_variable) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, -1);
- return particles->data.particle_randomness[p_variable];
-}
-
-void RasterizerGLES2::particles_set_color_phases(RID p_particles, int p_phases) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- ERR_FAIL_COND(p_phases < 0 || p_phases > VS::MAX_PARTICLE_COLOR_PHASES);
- particles->data.color_phase_count = p_phases;
-}
-int RasterizerGLES2::particles_get_color_phases(RID p_particles) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, -1);
- return particles->data.color_phase_count;
-}
-
-void RasterizerGLES2::particles_set_color_phase_pos(RID p_particles, int p_phase, float p_pos) {
-
- ERR_FAIL_INDEX(p_phase, VS::MAX_PARTICLE_COLOR_PHASES);
- if (p_pos < 0.0)
- p_pos = 0.0;
- if (p_pos > 1.0)
- p_pos = 1.0;
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.color_phases[p_phase].pos = p_pos;
-}
-float RasterizerGLES2::particles_get_color_phase_pos(RID p_particles, int p_phase) const {
-
- ERR_FAIL_INDEX_V(p_phase, VS::MAX_PARTICLE_COLOR_PHASES, -1.0);
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, -1);
- return particles->data.color_phases[p_phase].pos;
-}
-
-void RasterizerGLES2::particles_set_color_phase_color(RID p_particles, int p_phase, const Color &p_color) {
-
- ERR_FAIL_INDEX(p_phase, VS::MAX_PARTICLE_COLOR_PHASES);
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.color_phases[p_phase].color = p_color;
-
- //update alpha
- particles->has_alpha = false;
- for (int i = 0; i < VS::MAX_PARTICLE_COLOR_PHASES; i++) {
- if (particles->data.color_phases[i].color.a < 0.99)
- particles->has_alpha = true;
- }
-}
-
-Color RasterizerGLES2::particles_get_color_phase_color(RID p_particles, int p_phase) const {
-
- ERR_FAIL_INDEX_V(p_phase, VS::MAX_PARTICLE_COLOR_PHASES, Color());
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, Color());
- return particles->data.color_phases[p_phase].color;
-}
-
-void RasterizerGLES2::particles_set_attractors(RID p_particles, int p_attractors) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- ERR_FAIL_COND(p_attractors < 0 || p_attractors > VisualServer::MAX_PARTICLE_ATTRACTORS);
- particles->data.attractor_count = p_attractors;
-}
-int RasterizerGLES2::particles_get_attractors(RID p_particles) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, -1);
- return particles->data.attractor_count;
-}
-
-void RasterizerGLES2::particles_set_attractor_pos(RID p_particles, int p_attractor, const Vector3 &p_pos) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- ERR_FAIL_INDEX(p_attractor, particles->data.attractor_count);
- particles->data.attractors[p_attractor].pos = p_pos;
-}
-Vector3 RasterizerGLES2::particles_get_attractor_pos(RID p_particles, int p_attractor) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, Vector3());
- ERR_FAIL_INDEX_V(p_attractor, particles->data.attractor_count, Vector3());
- return particles->data.attractors[p_attractor].pos;
-}
-
-void RasterizerGLES2::particles_set_attractor_strength(RID p_particles, int p_attractor, float p_force) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- ERR_FAIL_INDEX(p_attractor, particles->data.attractor_count);
- particles->data.attractors[p_attractor].force = p_force;
-}
-
-float RasterizerGLES2::particles_get_attractor_strength(RID p_particles, int p_attractor) const {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, 0);
- ERR_FAIL_INDEX_V(p_attractor, particles->data.attractor_count, 0);
- return particles->data.attractors[p_attractor].force;
-}
-
-void RasterizerGLES2::particles_set_material(RID p_particles, RID p_material, bool p_owned) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- if (particles->material_owned && particles->material.is_valid())
- free(particles->material);
-
- particles->material_owned = p_owned;
-
- particles->material = p_material;
-}
-RID RasterizerGLES2::particles_get_material(RID p_particles) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, RID());
- return particles->material;
-}
-
-void RasterizerGLES2::particles_set_use_local_coordinates(RID p_particles, bool p_enable) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.local_coordinates = p_enable;
-}
-
-bool RasterizerGLES2::particles_is_using_local_coordinates(RID p_particles) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, false);
- return particles->data.local_coordinates;
-}
-bool RasterizerGLES2::particles_has_height_from_velocity(RID p_particles) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, false);
- return particles->data.height_from_velocity;
-}
-
-void RasterizerGLES2::particles_set_height_from_velocity(RID p_particles, bool p_enable) {
-
- Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND(!particles);
- particles->data.height_from_velocity = p_enable;
-}
-
-AABB RasterizerGLES2::particles_get_aabb(RID p_particles) const {
-
- const Particles *particles = particles_owner.get(p_particles);
- ERR_FAIL_COND_V(!particles, AABB());
- return particles->data.visibility_aabb;
-}
-
-/* SKELETON API */
-
-RID RasterizerGLES2::skeleton_create() {
-
- Skeleton *skeleton = memnew(Skeleton);
- ERR_FAIL_COND_V(!skeleton, RID());
- return skeleton_owner.make_rid(skeleton);
-}
-void RasterizerGLES2::skeleton_resize(RID p_skeleton, int p_bones) {
-
- Skeleton *skeleton = skeleton_owner.get(p_skeleton);
- ERR_FAIL_COND(!skeleton);
- if (p_bones == skeleton->bones.size()) {
- return;
- };
- if (use_hw_skeleton_xform) {
-
- if (nearest_power_of_2(p_bones) != nearest_power_of_2(skeleton->bones.size())) {
- if (skeleton->tex_id) {
- glDeleteTextures(1, &skeleton->tex_id);
- skeleton->tex_id = 0;
- }
-
- if (p_bones) {
-
- glGenTextures(1, &skeleton->tex_id);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, skeleton->tex_id);
- int ps = nearest_power_of_2(p_bones * 3);
-#ifdef GLEW_ENABLED
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, ps, 1, 0, GL_RGBA, GL_FLOAT, skel_default.ptr());
-#else
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, ps, 1, 0, GL_RGBA, GL_FLOAT, skel_default.ptr());
-#endif
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- skeleton->pixel_size = 1.0 / ps;
-
- glBindTexture(GL_TEXTURE_2D, 0);
- }
- }
-
- if (!skeleton->dirty_list.in_list()) {
- _skeleton_dirty_list.add(&skeleton->dirty_list);
- }
- }
- skeleton->bones.resize(p_bones);
-}
-int RasterizerGLES2::skeleton_get_bone_count(RID p_skeleton) const {
-
- Skeleton *skeleton = skeleton_owner.get(p_skeleton);
- ERR_FAIL_COND_V(!skeleton, -1);
- return skeleton->bones.size();
-}
-void RasterizerGLES2::skeleton_bone_set_transform(RID p_skeleton, int p_bone, const Transform &p_transform) {
-
- Skeleton *skeleton = skeleton_owner.get(p_skeleton);
- ERR_FAIL_COND(!skeleton);
- ERR_FAIL_INDEX(p_bone, skeleton->bones.size());
-
- Skeleton::Bone &b = skeleton->bones[p_bone];
-
- b.mtx[0][0] = p_transform.basis[0][0];
- b.mtx[0][1] = p_transform.basis[1][0];
- b.mtx[0][2] = p_transform.basis[2][0];
- b.mtx[1][0] = p_transform.basis[0][1];
- b.mtx[1][1] = p_transform.basis[1][1];
- b.mtx[1][2] = p_transform.basis[2][1];
- b.mtx[2][0] = p_transform.basis[0][2];
- b.mtx[2][1] = p_transform.basis[1][2];
- b.mtx[2][2] = p_transform.basis[2][2];
- b.mtx[3][0] = p_transform.origin[0];
- b.mtx[3][1] = p_transform.origin[1];
- b.mtx[3][2] = p_transform.origin[2];
-
- if (skeleton->tex_id) {
- if (!skeleton->dirty_list.in_list()) {
- _skeleton_dirty_list.add(&skeleton->dirty_list);
- }
- }
-}
-
-Transform RasterizerGLES2::skeleton_bone_get_transform(RID p_skeleton, int p_bone) {
-
- Skeleton *skeleton = skeleton_owner.get(p_skeleton);
- ERR_FAIL_COND_V(!skeleton, Transform());
- ERR_FAIL_INDEX_V(p_bone, skeleton->bones.size(), Transform());
-
- const Skeleton::Bone &b = skeleton->bones[p_bone];
-
- Transform t;
- t.basis[0][0] = b.mtx[0][0];
- t.basis[1][0] = b.mtx[0][1];
- t.basis[2][0] = b.mtx[0][2];
- t.basis[0][1] = b.mtx[1][0];
- t.basis[1][1] = b.mtx[1][1];
- t.basis[2][1] = b.mtx[1][2];
- t.basis[0][2] = b.mtx[2][0];
- t.basis[1][2] = b.mtx[2][1];
- t.basis[2][2] = b.mtx[2][2];
- t.origin[0] = b.mtx[3][0];
- t.origin[1] = b.mtx[3][1];
- t.origin[2] = b.mtx[3][2];
-
- return t;
-}
-
-/* LIGHT API */
-
-RID RasterizerGLES2::light_create(VS::LightType p_type) {
-
- Light *light = memnew(Light);
- light->type = p_type;
- return light_owner.make_rid(light);
-}
-
-VS::LightType RasterizerGLES2::light_get_type(RID p_light) const {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, VS::LIGHT_OMNI);
- return light->type;
-}
-
-void RasterizerGLES2::light_set_color(RID p_light, VS::LightColor p_type, const Color &p_color) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
- ERR_FAIL_INDEX(p_type, 3);
- light->colors[p_type] = p_color;
-}
-Color RasterizerGLES2::light_get_color(RID p_light, VS::LightColor p_type) const {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, Color());
- ERR_FAIL_INDEX_V(p_type, 3, Color());
- return light->colors[p_type];
-}
-
-void RasterizerGLES2::light_set_shadow(RID p_light, bool p_enabled) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
- light->shadow_enabled = p_enabled;
-}
-
-bool RasterizerGLES2::light_has_shadow(RID p_light) const {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, false);
- return light->shadow_enabled;
-}
-
-void RasterizerGLES2::light_set_volumetric(RID p_light, bool p_enabled) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
- light->volumetric_enabled = p_enabled;
-}
-bool RasterizerGLES2::light_is_volumetric(RID p_light) const {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, false);
- return light->volumetric_enabled;
-}
-
-void RasterizerGLES2::light_set_projector(RID p_light, RID p_texture) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
- light->projector = p_texture;
-}
-RID RasterizerGLES2::light_get_projector(RID p_light) const {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, RID());
- return light->projector;
-}
-
-void RasterizerGLES2::light_set_var(RID p_light, VS::LightParam p_var, float p_value) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
- ERR_FAIL_INDEX(p_var, VS::LIGHT_PARAM_MAX);
-
- light->vars[p_var] = p_value;
-}
-float RasterizerGLES2::light_get_var(RID p_light, VS::LightParam p_var) const {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, 0);
-
- ERR_FAIL_INDEX_V(p_var, VS::LIGHT_PARAM_MAX, 0);
-
- return light->vars[p_var];
-}
-
-void RasterizerGLES2::light_set_operator(RID p_light, VS::LightOp p_op){
-
-};
-
-VS::LightOp RasterizerGLES2::light_get_operator(RID p_light) const {
-
- return VS::LightOp();
-};
-
-void RasterizerGLES2::light_omni_set_shadow_mode(RID p_light, VS::LightOmniShadowMode p_mode) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
-
- light->omni_shadow_mode = p_mode;
-}
-VS::LightOmniShadowMode RasterizerGLES2::light_omni_get_shadow_mode(RID p_light) const {
-
- const Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, VS::LIGHT_OMNI_SHADOW_DEFAULT);
-
- return light->omni_shadow_mode;
-}
-
-void RasterizerGLES2::light_directional_set_shadow_mode(RID p_light, VS::LightDirectionalShadowMode p_mode) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
-
- light->directional_shadow_mode = p_mode;
-}
-
-VS::LightDirectionalShadowMode RasterizerGLES2::light_directional_get_shadow_mode(RID p_light) const {
-
- const Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, VS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL);
-
- return light->directional_shadow_mode;
-}
-
-void RasterizerGLES2::light_directional_set_shadow_param(RID p_light, VS::LightDirectionalShadowParam p_param, float p_value) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND(!light);
-
- light->directional_shadow_param[p_param] = p_value;
-}
-
-float RasterizerGLES2::light_directional_get_shadow_param(RID p_light, VS::LightDirectionalShadowParam p_param) const {
-
- const Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, 0);
- return light->directional_shadow_param[p_param];
-}
-
-AABB RasterizerGLES2::light_get_aabb(RID p_light) const {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, AABB());
-
- switch (light->type) {
-
- case VS::LIGHT_SPOT: {
-
- float len = light->vars[VS::LIGHT_PARAM_RADIUS];
- float size = Math::tan(Math::deg2rad(light->vars[VS::LIGHT_PARAM_SPOT_ANGLE])) * len;
- return AABB(Vector3(-size, -size, -len), Vector3(size * 2, size * 2, len));
- } break;
- case VS::LIGHT_OMNI: {
-
- float r = light->vars[VS::LIGHT_PARAM_RADIUS];
- return AABB(-Vector3(r, r, r), Vector3(r, r, r) * 2);
- } break;
- case VS::LIGHT_DIRECTIONAL: {
-
- return AABB();
- } break;
- default: {}
- }
-
- ERR_FAIL_V(AABB());
-}
-
-RID RasterizerGLES2::light_instance_create(RID p_light) {
-
- Light *light = light_owner.get(p_light);
- ERR_FAIL_COND_V(!light, RID());
-
- LightInstance *light_instance = memnew(LightInstance);
-
- light_instance->light = p_light;
- light_instance->base = light;
- light_instance->last_pass = 0;
-
- return light_instance_owner.make_rid(light_instance);
-}
-void RasterizerGLES2::light_instance_set_transform(RID p_light_instance, const Transform &p_transform) {
-
- LightInstance *lighti = light_instance_owner.get(p_light_instance);
- ERR_FAIL_COND(!lighti);
- lighti->transform = p_transform;
-}
-
-Rasterizer::ShadowType RasterizerGLES2::light_instance_get_shadow_type(RID p_light_instance, bool p_far) const {
-
- LightInstance *lighti = light_instance_owner.get(p_light_instance);
- ERR_FAIL_COND_V(!lighti, Rasterizer::SHADOW_NONE);
-
- switch (lighti->base->type) {
-
- case VS::LIGHT_DIRECTIONAL: {
- switch (lighti->base->directional_shadow_mode) {
- case VS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL: {
- return SHADOW_ORTHOGONAL;
- } break;
- case VS::LIGHT_DIRECTIONAL_SHADOW_PERSPECTIVE: {
- return SHADOW_PSM;
- } break;
- case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS:
- case VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS: {
- return SHADOW_PSSM;
- } break;
- }
-
- } break;
- case VS::LIGHT_OMNI: return SHADOW_DUAL_PARABOLOID; break;
- case VS::LIGHT_SPOT: return SHADOW_SIMPLE; break;
- }
-
- return Rasterizer::SHADOW_NONE;
-}
-
-int RasterizerGLES2::light_instance_get_shadow_passes(RID p_light_instance) const {
-
- LightInstance *lighti = light_instance_owner.get(p_light_instance);
- ERR_FAIL_COND_V(!lighti, 0);
-
- if (lighti->base->type == VS::LIGHT_DIRECTIONAL && lighti->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS) {
-
- return 4; // dp4
- } else if (lighti->base->type == VS::LIGHT_OMNI || (lighti->base->type == VS::LIGHT_DIRECTIONAL && lighti->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS)) {
- return 2; // dp
- } else
- return 1;
-}
-
-bool RasterizerGLES2::light_instance_get_pssm_shadow_overlap(RID p_light_instance) const {
-
- return shadow_filter >= SHADOW_FILTER_ESM;
-}
-
-void RasterizerGLES2::light_instance_set_shadow_transform(RID p_light_instance, int p_index, const CameraMatrix &p_camera, const Transform &p_transform, float p_split_near, float p_split_far) {
-
- LightInstance *lighti = light_instance_owner.get(p_light_instance);
- ERR_FAIL_COND(!lighti);
-
- ERR_FAIL_COND(lighti->base->type != VS::LIGHT_DIRECTIONAL);
- //ERR_FAIL_INDEX(p_index,1);
-
- lighti->custom_projection[p_index] = p_camera;
- lighti->custom_transform[p_index] = p_transform;
- lighti->shadow_split[p_index] = 1.0 / p_split_far;
-#if 0
- if (p_index==0) {
- lighti->custom_projection=p_camera;
- lighti->custom_transform=p_transform;
- //Plane p(0,0,-p_split_far,1);
- //p=camera_projection.xform4(p);
- //lighti->shadow_split=p.normal.z/p.d;
- lighti->shadow_split=1.0/p_split_far;
-
- //lighti->shadow_split=-p_split_far;
- } else {
-
- lighti->custom_projection2=p_camera;
- lighti->custom_transform2=p_transform;
- lighti->shadow_split2=p_split_far;
-
- }
-#endif
-}
-
-int RasterizerGLES2::light_instance_get_shadow_size(RID p_light_instance, int p_index) const {
-
- LightInstance *lighti = light_instance_owner.get(p_light_instance);
- ERR_FAIL_COND_V(!lighti, 1);
- ERR_FAIL_COND_V(!lighti->near_shadow_buffer, 256);
- return lighti->near_shadow_buffer->size / 2;
-}
-
-void RasterizerGLES2::shadow_clear_near() {
-
- for (int i = 0; i < near_shadow_buffers.size(); i++) {
-
- if (near_shadow_buffers[i].owner)
- near_shadow_buffers[i].owner->clear_near_shadow_buffers();
- }
-}
-
-bool RasterizerGLES2::shadow_allocate_near(RID p_light) {
-
- if (!use_shadow_mapping || !use_framebuffers)
- return false;
-
- LightInstance *li = light_instance_owner.get(p_light);
- ERR_FAIL_COND_V(!li, false);
- ERR_FAIL_COND_V(li->near_shadow_buffer, false);
-
- int skip = 0;
- if (framebuffer.active) {
-
- int sc = framebuffer.scale;
- while (sc > 1) {
- sc /= 2;
- skip++;
- }
- }
-
- for (int i = 0; i < near_shadow_buffers.size(); i++) {
-
- if (skip > 0) {
- skip--;
- continue;
- }
-
- if (near_shadow_buffers[i].owner != NULL)
- continue;
-
- near_shadow_buffers[i].owner = li;
- li->near_shadow_buffer = &near_shadow_buffers[i];
- return true;
- }
-
- return false;
-}
-
-bool RasterizerGLES2::shadow_allocate_far(RID p_light) {
-
- return false;
-}
-
-/* PARTICLES INSTANCE */
-
-RID RasterizerGLES2::particles_instance_create(RID p_particles) {
-
- ERR_FAIL_COND_V(!particles_owner.owns(p_particles), RID());
- ParticlesInstance *particles_instance = memnew(ParticlesInstance);
- ERR_FAIL_COND_V(!particles_instance, RID());
- particles_instance->particles = p_particles;
- return particles_instance_owner.make_rid(particles_instance);
-}
-
-void RasterizerGLES2::particles_instance_set_transform(RID p_particles_instance, const Transform &p_transform) {
-
- ParticlesInstance *particles_instance = particles_instance_owner.get(p_particles_instance);
- ERR_FAIL_COND(!particles_instance);
- particles_instance->transform = p_transform;
-}
-
-RID RasterizerGLES2::viewport_data_create() {
-
- ViewportData *vd = memnew(ViewportData);
-
- glActiveTexture(GL_TEXTURE0);
- glGenFramebuffers(1, &vd->lum_fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, vd->lum_fbo);
-
- GLuint format_luminance = use_fp16_fb ? _GL_RG_EXT : GL_RGBA;
- GLuint format_luminance_type = use_fp16_fb ? (full_float_fb_supported ? GL_FLOAT : _GL_HALF_FLOAT_OES) : GL_UNSIGNED_BYTE;
- GLuint format_luminance_components = use_fp16_fb ? _GL_RG_EXT : GL_RGBA;
-
- glGenTextures(1, &vd->lum_color);
- glBindTexture(GL_TEXTURE_2D, vd->lum_color);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- /*
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- */
- glTexImage2D(GL_TEXTURE_2D, 0, format_luminance, 1, 1, 0,
- format_luminance_components, format_luminance_type, NULL);
-
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, vd->lum_color, 0);
-
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-
- glBindFramebuffer(GL_FRAMEBUFFER, base_framebuffer);
- DEBUG_TEST_ERROR("Viewport Data Init");
- if (status != GL_FRAMEBUFFER_COMPLETE) {
- WARN_PRINT("Can't create framebuffer for vd");
- }
-
- return viewport_data_owner.make_rid(vd);
-}
-
-RID RasterizerGLES2::render_target_create() {
-
- RenderTarget *rt = memnew(RenderTarget);
- rt->fbo = 0;
- rt->width = 0;
- rt->height = 0;
- rt->last_pass = 0;
-
- Texture *texture = memnew(Texture);
- texture->active = false;
- texture->total_data_size = 0;
- texture->render_target = rt;
- texture->ignore_mipmaps = true;
- rt->texture_ptr = texture;
- rt->texture = texture_owner.make_rid(texture);
- rt->texture_ptr->active = false;
- return render_target_owner.make_rid(rt);
-}
-void RasterizerGLES2::render_target_set_size(RID p_render_target, int p_width, int p_height) {
-
- RenderTarget *rt = render_target_owner.get(p_render_target);
-
- if (p_width == rt->width && p_height == rt->height)
- return;
-
- if (rt->width != 0 && rt->height != 0) {
-
- glDeleteFramebuffers(1, &rt->fbo);
- glDeleteRenderbuffers(1, &rt->depth);
- glDeleteTextures(1, &rt->color);
-
- rt->fbo = 0;
- rt->depth = 0;
- rt->color = 0;
- rt->width = 0;
- rt->height = 0;
- rt->texture_ptr->tex_id = 0;
- rt->texture_ptr->active = false;
- }
-
- if (p_width == 0 || p_height == 0)
- return;
-
- rt->width = p_width;
- rt->height = p_height;
-
- //fbo
- glGenFramebuffers(1, &rt->fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, rt->fbo);
-
- //depth
- if (!low_memory_2d) {
- glGenRenderbuffers(1, &rt->depth);
- glBindRenderbuffer(GL_RENDERBUFFER, rt->depth);
-
- glRenderbufferStorage(GL_RENDERBUFFER, use_depth24 ? _DEPTH_COMPONENT24_OES : GL_DEPTH_COMPONENT16, rt->width, rt->height);
-
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->depth);
- }
-
- //color
- glGenTextures(1, &rt->color);
- glBindTexture(GL_TEXTURE_2D, rt->color);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, rt->width, rt->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-
- if (rt->texture_ptr->flags & VS::TEXTURE_FLAG_FILTER) {
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- } else {
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- }
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rt->color, 0);
-
- rt->texture_ptr->tex_id = rt->color;
- rt->texture_ptr->active = true;
- rt->texture_ptr->width = p_width;
- rt->texture_ptr->height = p_height;
-
-#
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-
- if (status != GL_FRAMEBUFFER_COMPLETE) {
-
- glDeleteRenderbuffers(1, &rt->fbo);
- glDeleteTextures(1, &rt->depth);
- glDeleteTextures(1, &rt->color);
- rt->fbo = 0;
- rt->width = 0;
- rt->height = 0;
- rt->color = 0;
- rt->depth = 0;
- rt->texture_ptr->tex_id = 0;
- rt->texture_ptr->active = false;
- WARN_PRINT("Could not create framebuffer!!");
- }
-
- glBindFramebuffer(GL_FRAMEBUFFER, base_framebuffer);
-}
-
-RID RasterizerGLES2::render_target_get_texture(RID p_render_target) const {
-
- const RenderTarget *rt = render_target_owner.get(p_render_target);
- ERR_FAIL_COND_V(!rt, RID());
- return rt->texture;
-}
-bool RasterizerGLES2::render_target_renedered_in_frame(RID p_render_target) {
-
- RenderTarget *rt = render_target_owner.get(p_render_target);
- ERR_FAIL_COND_V(!rt, false);
- return rt->last_pass == frame;
-}
-
-/* RENDER API */
-/* all calls (inside begin/end shadow) are always warranted to be in the following order: */
-
-void RasterizerGLES2::begin_frame() {
-
- _update_framebuffer();
-
- glDepthFunc(GL_LEQUAL);
- glFrontFace(GL_CW);
-
-//fragment_lighting=Globals::get_singleton()->get("rasterizer/use_fragment_lighting");
-#ifdef TOOLS_ENABLED
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_PIXEL_SNAP, GLOBAL_DEF("rendering/use_2d_pixel_snap", false));
- shadow_filter = ShadowFilterTechnique(int(ProjectSettings::get_singleton()->get("rasterizer/shadow_filter")));
-#endif
-
- canvas_shader.set_conditional(CanvasShaderGLES2::SHADOW_PCF5, shadow_filter == SHADOW_FILTER_PCF5);
- canvas_shader.set_conditional(CanvasShaderGLES2::SHADOW_PCF13, shadow_filter == SHADOW_FILTER_PCF13);
- canvas_shader.set_conditional(CanvasShaderGLES2::SHADOW_ESM, shadow_filter == SHADOW_FILTER_ESM);
-
- window_size = Size2(OS::get_singleton()->get_video_mode().width, OS::get_singleton()->get_video_mode().height);
-
- double time = (OS::get_singleton()->get_ticks_usec() / 1000); // get msec
- time /= 1000.0; // make secs
- time_delta = time - last_time;
- last_time = time;
- frame++;
-
- _rinfo.vertex_count = 0;
- _rinfo.object_count = 0;
- _rinfo.mat_change_count = 0;
- _rinfo.shader_change_count = 0;
- _rinfo.ci_draw_commands = 0;
- _rinfo.surface_count = 0;
- _rinfo.draw_calls = 0;
-
- _update_fixed_materials();
- while (_shader_dirty_list.first()) {
-
- _update_shader(_shader_dirty_list.first()->self());
- }
-
- while (_skeleton_dirty_list.first()) {
-
- Skeleton *s = _skeleton_dirty_list.first()->self();
-
- float *sk_float = (float *)skinned_buffer;
- for (int i = 0; i < s->bones.size(); i++) {
-
- float *m = &sk_float[i * 12];
- const Skeleton::Bone &b = s->bones[i];
- m[0] = b.mtx[0][0];
- m[1] = b.mtx[1][0];
- m[2] = b.mtx[2][0];
- m[3] = b.mtx[3][0];
-
- m[4] = b.mtx[0][1];
- m[5] = b.mtx[1][1];
- m[6] = b.mtx[2][1];
- m[7] = b.mtx[3][1];
-
- m[8] = b.mtx[0][2];
- m[9] = b.mtx[1][2];
- m[10] = b.mtx[2][2];
- m[11] = b.mtx[3][2];
- }
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, s->tex_id);
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, nearest_power_of_2(s->bones.size() * 3), 1, GL_RGBA, GL_FLOAT, sk_float);
- _skeleton_dirty_list.remove(_skeleton_dirty_list.first());
- }
-
- while (_multimesh_dirty_list.first()) {
-
- MultiMesh *s = _multimesh_dirty_list.first()->self();
-
- float *sk_float = (float *)skinned_buffer;
- for (int i = 0; i < s->elements.size(); i++) {
-
- float *m = &sk_float[i * 16];
- const float *im = s->elements[i].matrix;
- for (int j = 0; j < 16; j++) {
- m[j] = im[j];
- }
- }
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, s->tex_id);
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, s->tw, s->th, GL_RGBA, GL_FLOAT, sk_float);
- _multimesh_dirty_list.remove(_multimesh_dirty_list.first());
- }
-
- draw_next_frame = false;
- //material_shader.set_uniform_default(MaterialShaderGLES2::SCREENZ_SCALE, Math::fmod(time, 3600.0));
- /* nehe ?*/
-
- //glClearColor(0,0,1,1);
- //glClear(GL_COLOR_BUFFER_BIT); //should not clear if anything else cleared..
-}
-
-void RasterizerGLES2::capture_viewport(Image *r_capture) {
-#if 0
- PoolVector<uint8_t> pixels;
- pixels.resize(viewport.width*viewport.height*3);
- PoolVector<uint8_t>::Write w = pixels.write();
-#ifdef GLEW_ENABLED
- glReadBuffer(GL_COLOR_ATTACHMENT0);
-#endif
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
- if (current_rt)
- glReadPixels( 0, 0, viewport.width, viewport.height,GL_RGB,GL_UNSIGNED_BYTE,w.ptr() );
- else
- glReadPixels( viewport.x, window_size.height-(viewport.height+viewport.y), viewport.width,viewport.height,GL_RGB,GL_UNSIGNED_BYTE,w.ptr());
-
- glPixelStorei(GL_PACK_ALIGNMENT, 4);
-
- w=PoolVector<uint8_t>::Write();
-
- r_capture->create(viewport.width,viewport.height,0,Image::FORMAT_RGB8,pixels);
-#else
-
- PoolVector<uint8_t> pixels;
- pixels.resize(viewport.width * viewport.height * 4);
- PoolVector<uint8_t>::Write w = pixels.write();
- glPixelStorei(GL_PACK_ALIGNMENT, 4);
-
- //uint64_t time = OS::get_singleton()->get_ticks_usec();
-
- if (current_rt) {
-#ifdef GLEW_ENABLED
- glReadBuffer(GL_COLOR_ATTACHMENT0);
-#endif
- glReadPixels(0, 0, viewport.width, viewport.height, GL_RGBA, GL_UNSIGNED_BYTE, w.ptr());
- } else {
- // back?
- glReadPixels(viewport.x, window_size.height - (viewport.height + viewport.y), viewport.width, viewport.height, GL_RGBA, GL_UNSIGNED_BYTE, w.ptr());
- }
-
- bool flip = current_rt == NULL;
-
- if (flip) {
- uint32_t *imgptr = (uint32_t *)w.ptr();
- for (int y = 0; y < (viewport.height / 2); y++) {
-
- uint32_t *ptr1 = &imgptr[y * viewport.width];
- uint32_t *ptr2 = &imgptr[(viewport.height - y - 1) * viewport.width];
-
- for (int x = 0; x < viewport.width; x++) {
-
- uint32_t tmp = ptr1[x];
- ptr1[x] = ptr2[x];
- ptr2[x] = tmp;
- }
- }
- }
-
- w = PoolVector<uint8_t>::Write();
- r_capture->create(viewport.width, viewport.height, 0, Image::FORMAT_RGBA8, pixels);
-//r_capture->flip_y();
-
-#endif
-}
-
-void RasterizerGLES2::clear_viewport(const Color &p_color) {
-
- if (current_rt || using_canvas_bg) {
-
- glScissor(0, 0, viewport.width, viewport.height);
- } else {
- glScissor(viewport.x, window_size.height - (viewport.height + viewport.y), viewport.width, viewport.height);
- }
-
- glEnable(GL_SCISSOR_TEST);
- glClearColor(p_color.r, p_color.g, p_color.b, p_color.a);
- glClear(GL_COLOR_BUFFER_BIT); //should not clear if anything else cleared..
- glDisable(GL_SCISSOR_TEST);
-};
-
-void RasterizerGLES2::set_render_target(RID p_render_target, bool p_transparent_bg, bool p_vflip) {
-
- if (!p_render_target.is_valid()) {
- glBindFramebuffer(GL_FRAMEBUFFER, base_framebuffer);
- current_rt = NULL;
- current_rt_vflip = false;
-
- } else {
- RenderTarget *rt = render_target_owner.get(p_render_target);
- ERR_FAIL_COND(!rt);
- ERR_FAIL_COND(rt->fbo == 0);
- glBindFramebuffer(GL_FRAMEBUFFER, rt->fbo);
- current_rt = rt;
- current_rt_transparent = p_transparent_bg;
- current_rt_vflip = !p_vflip;
- }
-}
-
-void RasterizerGLES2::set_viewport(const VS::ViewportRect &p_viewport) {
-
- viewport = p_viewport;
- //viewport.width/=2;
- //viewport.height/=2;
- //print_line("viewport: "+itos(p_viewport.x)+","+itos(p_viewport.y)+","+itos(p_viewport.width)+","+itos(p_viewport.height));
-
- if (current_rt) {
-
- glViewport(0, 0, viewport.width, viewport.height);
- } else {
- glViewport(viewport.x, window_size.height - (viewport.height + viewport.y), viewport.width, viewport.height);
- }
-}
-
-void RasterizerGLES2::begin_scene(RID p_viewport_data, RID p_env, VS::ScenarioDebugMode p_debug) {
-
- current_debug = p_debug;
- opaque_render_list.clear();
- alpha_render_list.clear();
- light_instance_count = 0;
- current_env = p_env.is_valid() ? environment_owner.get(p_env) : NULL;
- scene_pass++;
- last_light_id = 0;
- directional_light_count = 0;
- lights_use_shadow = false;
- texscreen_used = false;
- current_vd = viewport_data_owner.get(p_viewport_data);
- if (current_debug == VS::SCENARIO_DEBUG_WIREFRAME) {
-#ifdef GLEW_ENABLED
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-#endif
- }
-
- //set state
-
- glCullFace(GL_FRONT);
- cull_front = true;
-};
-
-void RasterizerGLES2::begin_shadow_map(RID p_light_instance, int p_shadow_pass) {
-
- ERR_FAIL_COND(shadow);
- shadow = light_instance_owner.get(p_light_instance);
- shadow_pass = p_shadow_pass;
- ERR_FAIL_COND(!shadow);
-
- opaque_render_list.clear();
- alpha_render_list.clear();
- //pre_zpass_render_list.clear();
- light_instance_count = 0;
-
- glCullFace(GL_FRONT);
- cull_front = true;
-}
-
-void RasterizerGLES2::set_camera(const Transform &p_world, const CameraMatrix &p_projection, bool p_ortho_hint) {
-
- camera_transform = p_world;
- if (current_rt && current_rt_vflip) {
- camera_transform.basis.set_axis(1, -camera_transform.basis.get_axis(1));
- }
- camera_transform_inverse = camera_transform.inverse();
- camera_projection = p_projection;
- camera_plane = Plane(camera_transform.origin, -camera_transform.basis.get_axis(2));
- camera_z_near = camera_projection.get_z_near();
- camera_z_far = camera_projection.get_z_far();
- camera_projection.get_viewport_size(camera_vp_size.x, camera_vp_size.y);
- camera_ortho = p_ortho_hint;
-}
-
-void RasterizerGLES2::add_light(RID p_light_instance) {
-
-#define LIGHT_FADE_THRESHOLD 0.05
-
- ERR_FAIL_COND(light_instance_count >= MAX_SCENE_LIGHTS);
-
- LightInstance *li = light_instance_owner.get(p_light_instance);
- ERR_FAIL_COND(!li);
-
- switch (li->base->type) {
-
- case VS::LIGHT_DIRECTIONAL: {
-
- ERR_FAIL_COND(directional_light_count >= RenderList::MAX_LIGHTS);
- directional_lights[directional_light_count++] = li;
-
- if (li->base->shadow_enabled) {
- CameraMatrix bias;
- bias.set_light_bias();
-
- int passes = light_instance_get_shadow_passes(p_light_instance);
-
- for (int i = 0; i < passes; i++) {
- Transform modelview = Transform(camera_transform_inverse * li->custom_transform[i]).inverse();
- li->shadow_projection[i] = bias * li->custom_projection[i] * modelview;
- }
-
- lights_use_shadow = true;
- }
- } break;
- case VS::LIGHT_OMNI: {
-
- if (li->base->shadow_enabled) {
- li->shadow_projection[0] = Transform(camera_transform_inverse * li->transform).inverse();
- lights_use_shadow = true;
- }
- } break;
- case VS::LIGHT_SPOT: {
-
- if (li->base->shadow_enabled) {
- CameraMatrix bias;
- bias.set_light_bias();
- Transform modelview = Transform(camera_transform_inverse * li->transform).inverse();
- li->shadow_projection[0] = bias * li->projection * modelview;
- lights_use_shadow = true;
- }
- } break;
- }
-
- /* make light hash */
-
- // actually, not really a hash, but helps to sort the lights
- // and avoid recompiling redudant shader versions
-
- li->last_pass = scene_pass;
- li->sort_key = light_instance_count;
-
- light_instances[light_instance_count++] = li;
-}
-
-void RasterizerGLES2::_update_shader(Shader *p_shader) const {
-
- _shader_dirty_list.remove(&p_shader->dirty_list);
-
- p_shader->valid = false;
-
- p_shader->uniforms.clear();
- Vector<StringName> uniform_names;
-
- String vertex_code;
- String vertex_globals;
- ShaderCompilerGLES2::Flags vertex_flags;
- ShaderCompilerGLES2::Flags fragment_flags;
- ShaderCompilerGLES2::Flags light_flags;
-
- if (p_shader->mode == VS::SHADER_MATERIAL) {
- Error err = shader_precompiler.compile(p_shader->vertex_code, ShaderLanguage::SHADER_MATERIAL_VERTEX, vertex_code, vertex_globals, vertex_flags, &p_shader->uniforms);
- if (err) {
- return; //invalid
- }
- } else if (p_shader->mode == VS::SHADER_CANVAS_ITEM) {
-
- Error err = shader_precompiler.compile(p_shader->vertex_code, ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX, vertex_code, vertex_globals, vertex_flags, &p_shader->uniforms);
- if (err) {
- return; //invalid
- }
- }
-
- //print_line("compiled vertex: "+vertex_code);
- //print_line("compiled vertex globals: "+vertex_globals);
-
- //print_line("UCV: "+itos(p_shader->uniforms.size()));
- String fragment_code;
- String fragment_globals;
-
- if (p_shader->mode == VS::SHADER_MATERIAL) {
- Error err = shader_precompiler.compile(p_shader->fragment_code, ShaderLanguage::SHADER_MATERIAL_FRAGMENT, fragment_code, fragment_globals, fragment_flags, &p_shader->uniforms);
- if (err) {
- return; //invalid
- }
- } else if (p_shader->mode == VS::SHADER_CANVAS_ITEM) {
- Error err = shader_precompiler.compile(p_shader->fragment_code, ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT, fragment_code, fragment_globals, fragment_flags, &p_shader->uniforms);
- if (err) {
- return; //invalid
- }
- }
-
- String light_code;
- String light_globals;
-
- if (p_shader->mode == VS::SHADER_MATERIAL) {
-
- Error err = shader_precompiler.compile(p_shader->light_code, (ShaderLanguage::SHADER_MATERIAL_LIGHT), light_code, light_globals, light_flags, &p_shader->uniforms);
- if (err) {
- return; //invalid
- }
- } else if (p_shader->mode == VS::SHADER_CANVAS_ITEM) {
- Error err = shader_precompiler.compile(p_shader->light_code, (ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT), light_code, light_globals, light_flags, &p_shader->uniforms);
- if (err) {
- return; //invalid
- }
- }
-
- fragment_globals += light_globals; //both fragment anyway
-
- //print_line("compiled fragment: "+fragment_code);
- //("compiled fragment globals: "+fragment_globals);
-
- //print_line("UCF: "+itos(p_shader->uniforms.size()));
-
- int first_tex_index = 0xFFFFF;
- p_shader->first_texture = StringName();
-
- for (Map<StringName, ShaderLanguage::Uniform>::Element *E = p_shader->uniforms.front(); E; E = E->next()) {
-
- uniform_names.push_back("_" + String(E->key()));
- if (E->get().type == ShaderLanguage::TYPE_TEXTURE && E->get().order < first_tex_index) {
- p_shader->first_texture = E->key();
- first_tex_index = E->get().order;
- }
- }
-
- bool uses_time = false;
-
- if (p_shader->mode == VS::SHADER_MATERIAL) {
- //print_line("setting code to id.. "+itos(p_shader->custom_code_id));
- Vector<const char *> enablers;
- if (fragment_flags.use_color_interp || vertex_flags.use_color_interp)
- enablers.push_back("#define ENABLE_COLOR_INTERP\n");
- if (fragment_flags.use_uv_interp || vertex_flags.use_uv_interp)
- enablers.push_back("#define ENABLE_UV_INTERP\n");
- if (fragment_flags.use_uv2_interp || vertex_flags.use_uv2_interp)
- enablers.push_back("#define ENABLE_UV2_INTERP\n");
- if (fragment_flags.use_tangent_interp || vertex_flags.use_tangent_interp || fragment_flags.uses_normalmap)
- enablers.push_back("#define ENABLE_TANGENT_INTERP\n");
- if (fragment_flags.use_var1_interp || vertex_flags.use_var1_interp)
- enablers.push_back("#define ENABLE_VAR1_INTERP\n");
- if (fragment_flags.use_var2_interp || vertex_flags.use_var2_interp)
- enablers.push_back("#define ENABLE_VAR2_INTERP\n");
- if (fragment_flags.uses_texscreen) {
- enablers.push_back("#define ENABLE_TEXSCREEN\n");
- }
- if (fragment_flags.uses_screen_uv) {
- enablers.push_back("#define ENABLE_SCREEN_UV\n");
- }
- if (fragment_flags.uses_discard) {
- enablers.push_back("#define ENABLE_DISCARD\n");
- }
- if (fragment_flags.uses_normalmap) {
- enablers.push_back("#define ENABLE_NORMALMAP\n");
- }
- if (light_flags.uses_light) {
- enablers.push_back("#define USE_LIGHT_SHADER_CODE\n");
- }
- if (light_flags.uses_shadow_color) {
- enablers.push_back("#define USE_OUTPUT_SHADOW_COLOR\n");
- }
- if (light_flags.uses_time || fragment_flags.uses_time || vertex_flags.uses_time) {
- enablers.push_back("#define USE_TIME\n");
- uses_time = true;
- }
- if (vertex_flags.vertex_code_writes_position) {
- enablers.push_back("#define VERTEX_SHADER_WRITE_POSITION\n");
- }
-
- material_shader.set_custom_shader_code(p_shader->custom_code_id, vertex_code, vertex_globals, fragment_code, light_code, fragment_globals, uniform_names, enablers);
- } else if (p_shader->mode == VS::SHADER_CANVAS_ITEM) {
-
- Vector<const char *> enablers;
-
- if (light_flags.uses_time || fragment_flags.uses_time || vertex_flags.uses_time) {
- enablers.push_back("#define USE_TIME\n");
- uses_time = true;
- }
- if (fragment_flags.uses_normal) {
- enablers.push_back("#define NORMAL_USED\n");
- }
- if (fragment_flags.uses_normalmap) {
- enablers.push_back("#define USE_NORMALMAP\n");
- }
-
- if (light_flags.uses_light) {
- enablers.push_back("#define USE_LIGHT_SHADER_CODE\n");
- }
- if (fragment_flags.use_var1_interp || vertex_flags.use_var1_interp)
- enablers.push_back("#define ENABLE_VAR1_INTERP\n");
- if (fragment_flags.use_var2_interp || vertex_flags.use_var2_interp)
- enablers.push_back("#define ENABLE_VAR2_INTERP\n");
- if (fragment_flags.uses_texscreen) {
- enablers.push_back("#define ENABLE_TEXSCREEN\n");
- }
- if (fragment_flags.uses_screen_uv) {
- enablers.push_back("#define ENABLE_SCREEN_UV\n");
- }
- if (fragment_flags.uses_texpixel_size) {
- enablers.push_back("#define USE_TEXPIXEL_SIZE\n");
- }
- if (light_flags.uses_shadow_color) {
- enablers.push_back("#define USE_OUTPUT_SHADOW_COLOR\n");
- }
-
- if (vertex_flags.uses_worldvec) {
- enablers.push_back("#define USE_WORLD_VEC\n");
- }
- canvas_shader.set_custom_shader_code(p_shader->custom_code_id, vertex_code, vertex_globals, fragment_code, light_code, fragment_globals, uniform_names, enablers);
-
- //postprocess_shader.set_custom_shader_code(p_shader->custom_code_id,vertex_code, vertex_globals,fragment_code, fragment_globals,uniform_names);
- }
-
- p_shader->valid = true;
- p_shader->has_alpha = fragment_flags.uses_alpha || fragment_flags.uses_texscreen;
- p_shader->writes_vertex = vertex_flags.vertex_code_writes_vertex;
- p_shader->uses_discard = fragment_flags.uses_discard;
- p_shader->has_texscreen = fragment_flags.uses_texscreen;
- p_shader->has_screen_uv = fragment_flags.uses_screen_uv;
- p_shader->can_zpass = !fragment_flags.uses_discard && !vertex_flags.vertex_code_writes_vertex;
- p_shader->uses_normal = fragment_flags.uses_normal || light_flags.uses_normal;
- p_shader->uses_time = uses_time;
- p_shader->uses_texpixel_size = fragment_flags.uses_texpixel_size;
- p_shader->version++;
-}
-
-void RasterizerGLES2::_add_geometry(const Geometry *p_geometry, const InstanceData *p_instance, const Geometry *p_geometry_cmp, const GeometryOwner *p_owner, int p_material) {
-
- Material *m = NULL;
- RID m_src = p_instance->material_override.is_valid() ? p_instance->material_override : (p_material >= 0 ? p_instance->materials[p_material] : p_geometry->material);
-
-#ifdef DEBUG_ENABLED
- if (current_debug == VS::SCENARIO_DEBUG_OVERDRAW) {
- m_src = overdraw_material;
- }
-
-#endif
-
- if (m_src)
- m = material_owner.get(m_src);
-
- if (!m) {
- m = material_owner.get(default_material);
- }
-
- ERR_FAIL_COND(!m);
-
- if (m->last_pass != frame) {
-
- if (m->shader.is_valid()) {
-
- m->shader_cache = shader_owner.get(m->shader);
- if (m->shader_cache) {
-
- if (!m->shader_cache->valid) {
- m->shader_cache = NULL;
- } else {
- if (m->shader_cache->has_texscreen)
- texscreen_used = true;
- }
- } else {
- m->shader = RID();
- }
-
- } else {
- m->shader_cache = NULL;
- }
-
- m->last_pass = frame;
- }
-
- RenderList *render_list = NULL;
-
- bool has_base_alpha = (m->shader_cache && m->shader_cache->has_alpha);
- bool has_blend_alpha = m->blend_mode != VS::MATERIAL_BLEND_MODE_MIX || m->flags[VS::MATERIAL_FLAG_ONTOP];
- bool has_alpha = has_base_alpha || has_blend_alpha;
-
- if (shadow) {
-
- if (has_blend_alpha || (has_base_alpha && m->depth_draw_mode != VS::MATERIAL_DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA))
- return; //bye
-
- if (!m->shader_cache || (!m->shader_cache->writes_vertex && !m->shader_cache->uses_discard && m->depth_draw_mode != VS::MATERIAL_DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA)) {
- //shader does not use discard and does not write a vertex position, use generic material
- if (p_instance->cast_shadows == VS::SHADOW_CASTING_SETTING_DOUBLE_SIDED)
- m = shadow_mat_double_sided_ptr;
- else
- m = shadow_mat_ptr;
- if (m->last_pass != frame) {
-
- if (m->shader.is_valid()) {
-
- m->shader_cache = shader_owner.get(m->shader);
- if (m->shader_cache) {
-
- if (!m->shader_cache->valid)
- m->shader_cache = NULL;
- } else {
- m->shader = RID();
- }
-
- } else {
- m->shader_cache = NULL;
- }
-
- m->last_pass = frame;
- }
- }
-
- render_list = &opaque_render_list;
- /* notyet
- if (!m->shader_cache || m->shader_cache->can_zpass)
- render_list = &alpha_render_list;
- } else {
- render_list = &opaque_render_list;
- }*/
-
- } else {
- if (has_alpha) {
- render_list = &alpha_render_list;
- } else {
- render_list = &opaque_render_list;
- }
- }
-
- RenderList::Element *e = render_list->add_element();
-
- if (!e)
- return;
-
- e->geometry = p_geometry;
- e->geometry_cmp = p_geometry_cmp;
- e->material = m;
- e->instance = p_instance;
- if (camera_ortho) {
- e->depth = camera_plane.distance_to(p_instance->transform.origin);
- } else {
- e->depth = camera_transform.origin.distance_to(p_instance->transform.origin);
- }
- e->owner = p_owner;
- e->light_type = 0;
- e->additive = false;
- e->additive_ptr = &e->additive;
- e->sort_flags = 0;
-
- if (p_instance->skeleton.is_valid()) {
- e->skeleton = skeleton_owner.get(p_instance->skeleton);
- if (!e->skeleton)
- const_cast<InstanceData *>(p_instance)->skeleton = RID();
- else
- e->sort_flags |= RenderList::SORT_FLAG_SKELETON;
- } else {
- e->skeleton = NULL;
- }
-
- if (e->geometry->type == Geometry::GEOMETRY_MULTISURFACE)
- e->sort_flags |= RenderList::SORT_FLAG_INSTANCING;
-
- e->mirror = p_instance->mirror;
- if (m->flags[VS::MATERIAL_FLAG_INVERT_FACES])
- e->mirror = !e->mirror;
-
- //e->light_type=0xFF; // no lights!
- e->light_type = 3; //light type 3 is no light?
- e->light = 0xFFFF;
-
- if (!shadow && !has_blend_alpha && has_alpha && m->depth_draw_mode == VS::MATERIAL_DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA) {
-
- //if nothing exists, add this element as opaque too
- RenderList::Element *oe = opaque_render_list.add_element();
-
- if (!oe)
- return;
-
- memcpy(oe, e, sizeof(RenderList::Element));
- oe->additive_ptr = &oe->additive;
- }
-
- if (shadow || m->flags[VS::MATERIAL_FLAG_UNSHADED] || current_debug == VS::SCENARIO_DEBUG_SHADELESS) {
-
- e->light_type = 0x7F; //unshaded is zero
- } else {
-
- bool duplicate = false;
-
- for (int i = 0; i < directional_light_count; i++) {
- uint16_t sort_key = directional_lights[i]->sort_key;
- uint8_t light_type = VS::LIGHT_DIRECTIONAL;
- if (directional_lights[i]->base->shadow_enabled) {
- light_type |= 0x8;
- if (directional_lights[i]->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS)
- light_type |= 0x10;
- else if (directional_lights[i]->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS)
- light_type |= 0x30;
- }
-
- RenderList::Element *ec;
- if (duplicate) {
-
- ec = render_list->add_element();
- memcpy(ec, e, sizeof(RenderList::Element));
- } else {
-
- ec = e;
- duplicate = true;
- }
-
- ec->light_type = light_type;
- ec->light = sort_key;
- ec->additive_ptr = &e->additive;
- }
-
- const RID *liptr = p_instance->light_instances.ptr();
- int ilc = p_instance->light_instances.size();
-
- for (int i = 0; i < ilc; i++) {
-
- LightInstance *li = light_instance_owner.get(liptr[i]);
- if (!li || li->last_pass != scene_pass) //lit by light not in visible scene
- continue;
- uint8_t light_type = li->base->type | 0x40; //penalty to ensure directionals always go first
- if (li->base->shadow_enabled) {
- light_type |= 0x8;
- }
- uint16_t sort_key = li->sort_key;
-
- RenderList::Element *ec;
- if (duplicate) {
-
- ec = render_list->add_element();
- memcpy(ec, e, sizeof(RenderList::Element));
- } else {
-
- duplicate = true;
- ec = e;
- }
-
- ec->light_type = light_type;
- ec->light = sort_key;
- ec->additive_ptr = &e->additive;
- }
- }
-
- DEBUG_TEST_ERROR("Add Geometry");
-}
-
-void RasterizerGLES2::add_mesh(const RID &p_mesh, const InstanceData *p_data) {
-
- Mesh *mesh = mesh_owner.get(p_mesh);
- ERR_FAIL_COND(!mesh);
-
- int ssize = mesh->surfaces.size();
-
- for (int i = 0; i < ssize; i++) {
-
- int mat_idx = p_data->materials[i].is_valid() ? i : -1;
- Surface *s = mesh->surfaces[i];
- _add_geometry(s, p_data, s, NULL, mat_idx);
- }
-
- mesh->last_pass = frame;
-}
-
-void RasterizerGLES2::add_multimesh(const RID &p_multimesh, const InstanceData *p_data) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_multimesh);
- ERR_FAIL_COND(!multimesh);
-
- if (!multimesh->mesh.is_valid())
- return;
- if (multimesh->elements.empty())
- return;
-
- Mesh *mesh = mesh_owner.get(multimesh->mesh);
- ERR_FAIL_COND(!mesh);
-
- int surf_count = mesh->surfaces.size();
- if (multimesh->last_pass != scene_pass) {
-
- multimesh->cache_surfaces.resize(surf_count);
- for (int i = 0; i < surf_count; i++) {
-
- multimesh->cache_surfaces[i].material = mesh->surfaces[i]->material;
- multimesh->cache_surfaces[i].has_alpha = mesh->surfaces[i]->has_alpha;
- multimesh->cache_surfaces[i].surface = mesh->surfaces[i];
- }
-
- multimesh->last_pass = scene_pass;
- }
-
- for (int i = 0; i < surf_count; i++) {
-
- _add_geometry(&multimesh->cache_surfaces[i], p_data, multimesh->cache_surfaces[i].surface, multimesh);
- }
-}
-
-void RasterizerGLES2::add_immediate(const RID &p_immediate, const InstanceData *p_data) {
-
- Immediate *immediate = immediate_owner.get(p_immediate);
- ERR_FAIL_COND(!immediate);
-
- _add_geometry(immediate, p_data, immediate, NULL);
-}
-
-void RasterizerGLES2::add_particles(const RID &p_particle_instance, const InstanceData *p_data) {
-
- //print_line("adding particles");
- ParticlesInstance *particles_instance = particles_instance_owner.get(p_particle_instance);
- ERR_FAIL_COND(!particles_instance);
- Particles *p = particles_owner.get(particles_instance->particles);
- ERR_FAIL_COND(!p);
-
- _add_geometry(p, p_data, p, particles_instance);
- draw_next_frame = true;
-}
-
-Color RasterizerGLES2::_convert_color(const Color &p_color) {
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_SRGB])
- return p_color.to_linear();
- else
- return p_color;
-}
-
-void RasterizerGLES2::_set_cull(bool p_front, bool p_reverse_cull) {
-
- bool front = p_front;
- if (p_reverse_cull)
- front = !front;
-
- if (front != cull_front) {
-
- glCullFace(front ? GL_FRONT : GL_BACK);
- cull_front = front;
- }
-}
-
-_FORCE_INLINE_ void RasterizerGLES2::_update_material_shader_params(Material *p_material) const {
-
- Map<StringName, Material::UniformData> old_mparams = p_material->shader_params;
- Map<StringName, Material::UniformData> &mparams = p_material->shader_params;
- mparams.clear();
- int idx = 0;
- for (Map<StringName, ShaderLanguage::Uniform>::Element *E = p_material->shader_cache->uniforms.front(); E; E = E->next()) {
-
- Material::UniformData ud;
-
- bool keep = true; //keep material value
-
- Map<StringName, Material::UniformData>::Element *OLD = old_mparams.find(E->key());
- bool has_old = OLD;
- bool old_inuse = has_old && old_mparams[E->key()].inuse;
-
- ud.istexture = (E->get().type == ShaderLanguage::TYPE_TEXTURE || E->get().type == ShaderLanguage::TYPE_CUBEMAP);
-
- if (!has_old || !old_inuse) {
- keep = false;
- } else if (OLD->get().value.get_type() != E->value().default_value.get_type()) {
-
- if (OLD->get().value.get_type() == Variant::INT && E->get().type == ShaderLanguage::TYPE_FLOAT) {
- //handle common mistake using shaders (feeding ints instead of float)
- OLD->get().value = float(OLD->get().value);
- keep = true;
- } else if (!ud.istexture && E->value().default_value.get_type() != Variant::NIL) {
-
- keep = false;
- }
- //type changed between old and new
- /* if (old_mparams[E->key()].value.get_type()==Variant::OBJECT) {
- if (E->value().default_value.get_type()!=Variant::_RID) //hackfor textures
- keep=false;
- } else if (!old_mparams[E->key()].value.is_num() || !E->value().default_value.get_type())
- keep=false;*/
-
- //value is invalid because type differs and default is not null
- ;
- }
-
- if (keep) {
- ud.value = old_mparams[E->key()].value;
-
- //print_line("KEEP: "+String(E->key()));
- } else {
- if (ud.istexture && p_material->shader_cache->default_textures.has(E->key()))
- ud.value = p_material->shader_cache->default_textures[E->key()];
- else
- ud.value = E->value().default_value;
- old_inuse = false; //if reverted to default, obviously did not work
-
- /*
- print_line("NEW: "+String(E->key())+" because: hasold-"+itos(old_mparams.has(E->key())));
- if (old_mparams.has(E->key()))
- print_line(" told "+Variant::get_type_name(old_mparams[E->key()].value.get_type())+" tnew "+Variant::get_type_name(E->value().default_value.get_type()));
- */
- }
-
- ud.index = idx++;
- ud.inuse = old_inuse;
- mparams[E->key()] = ud;
- }
-
- p_material->shader_version = p_material->shader_cache->version;
-}
-
-bool RasterizerGLES2::_setup_material(const Geometry *p_geometry, const Material *p_material, bool p_no_const_light, bool p_opaque_pass) {
-
- if (p_material->flags[VS::MATERIAL_FLAG_DOUBLE_SIDED]) {
- glDisable(GL_CULL_FACE);
- } else {
- glEnable(GL_CULL_FACE);
- }
-
- //glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
-
- /*
- if (p_material->flags[VS::MATERIAL_FLAG_WIREFRAME])
- glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
- else
- glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
- */
-
- if (p_material->line_width)
- glLineWidth(p_material->line_width);
-
- //all goes to false by default
- material_shader.set_conditional(MaterialShaderGLES2::USE_SHADOW_PASS, shadow != NULL);
- material_shader.set_conditional(MaterialShaderGLES2::USE_SHADOW_PCF, shadow_filter == SHADOW_FILTER_PCF5 || shadow_filter == SHADOW_FILTER_PCF13);
- material_shader.set_conditional(MaterialShaderGLES2::USE_SHADOW_PCF_HQ, shadow_filter == SHADOW_FILTER_PCF13);
- material_shader.set_conditional(MaterialShaderGLES2::USE_SHADOW_ESM, shadow_filter == SHADOW_FILTER_ESM);
- material_shader.set_conditional(MaterialShaderGLES2::USE_LIGHTMAP_ON_UV2, p_material->flags[VS::MATERIAL_FLAG_LIGHTMAP_ON_UV2]);
- material_shader.set_conditional(MaterialShaderGLES2::USE_COLOR_ATTRIB_SRGB_TO_LINEAR, p_material->flags[VS::MATERIAL_FLAG_COLOR_ARRAY_SRGB] && current_env && current_env->fx_enabled[VS::ENV_FX_SRGB]);
-
- if (p_opaque_pass && p_material->depth_draw_mode == VS::MATERIAL_DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA && p_material->shader_cache && p_material->shader_cache->has_alpha) {
-
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_CLIP_ALPHA, true);
- } else {
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_CLIP_ALPHA, false);
- }
-
- if (!shadow) {
-
- bool depth_test = !p_material->flags[VS::MATERIAL_FLAG_ONTOP];
- bool depth_write = p_material->depth_draw_mode != VS::MATERIAL_DEPTH_DRAW_NEVER && (p_opaque_pass || p_material->depth_draw_mode == VS::MATERIAL_DEPTH_DRAW_ALWAYS);
- //bool depth_write=!p_material->hints[VS::MATERIAL_HINT_NO_DEPTH_DRAW] && (p_opaque_pass || !p_material->hints[VS::MATERIAL_HINT_NO_DEPTH_DRAW_FOR_ALPHA]);
-
- if (current_depth_mask != depth_write) {
- current_depth_mask = depth_write;
- glDepthMask(depth_write);
- }
-
- if (current_depth_test != depth_test) {
-
- current_depth_test = depth_test;
- if (depth_test)
- glEnable(GL_DEPTH_TEST);
- else
- glDisable(GL_DEPTH_TEST);
- }
-
- material_shader.set_conditional(MaterialShaderGLES2::USE_FOG, current_env && current_env->fx_enabled[VS::ENV_FX_FOG]);
- //glDepthMask( true );
- }
-
- DEBUG_TEST_ERROR("Pre Shader Bind");
-
- bool rebind = false;
-
- if (p_material->shader_cache && p_material->shader_cache->valid) {
-
- /*
- // reduce amount of conditional compilations
- for(int i=0;i<_tex_version_count;i++)
- material_shader.set_conditional((MaterialShaderGLES2::Conditionals)_tex_version[i],false);
- */
-
- //material_shader.set_custom_shader(p_material->shader_cache->custom_code_id);
-
- if (p_material->shader_version != p_material->shader_cache->version) {
- //shader changed somehow, must update uniforms
-
- _update_material_shader_params((Material *)p_material);
- }
- material_shader.set_custom_shader(p_material->shader_cache->custom_code_id);
- rebind = material_shader.bind();
-
- DEBUG_TEST_ERROR("Shader Bind");
-
- //set uniforms!
- int texcoord = 0;
- for (Map<StringName, Material::UniformData>::Element *E = p_material->shader_params.front(); E; E = E->next()) {
-
- if (E->get().index < 0)
- continue;
- //print_line(String(E->key())+": "+E->get().value);
- if (E->get().istexture) {
- //clearly a texture..
- RID rid = E->get().value;
- int loc = material_shader.get_custom_uniform_location(E->get().index); //should be automatic..
-
- Texture *t = NULL;
- if (rid.is_valid()) {
-
- t = texture_owner.get(rid);
- if (!t) {
- E->get().value = RID(); //nullify, invalid texture
- rid = RID();
- }
- }
-
- glActiveTexture(GL_TEXTURE0 + texcoord);
- glUniform1i(loc, texcoord); //TODO - this could happen automatically on compile...
- if (t) {
- if (t->render_target)
- t->render_target->last_pass = frame;
- if (E->key() == p_material->shader_cache->first_texture) {
- tc0_idx = texcoord;
- tc0_id_cache = t->tex_id;
- }
- glBindTexture(t->target, t->tex_id);
- } else
- glBindTexture(GL_TEXTURE_2D, white_tex); //no texture
- texcoord++;
-
- } else if (E->get().value.get_type() == Variant::COLOR) {
- Color c = E->get().value;
- material_shader.set_custom_uniform(E->get().index, _convert_color(c));
- } else {
- material_shader.set_custom_uniform(E->get().index, E->get().value);
- }
- }
-
- if (p_material->shader_cache->has_texscreen && framebuffer.active) {
- material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_SCREEN_MULT, Vector2(float(viewport.width) / framebuffer.width, float(viewport.height) / framebuffer.height));
- material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_SCREEN_CLAMP, Color(0, 0, float(viewport.width) / framebuffer.width, float(viewport.height) / framebuffer.height));
- material_shader.set_uniform(MaterialShaderGLES2::TEXSCREEN_TEX, texcoord);
- glActiveTexture(GL_TEXTURE0 + texcoord);
- glBindTexture(GL_TEXTURE_2D, framebuffer.sample_color);
- }
- if (p_material->shader_cache->has_screen_uv) {
- material_shader.set_uniform(MaterialShaderGLES2::SCREEN_UV_MULT, Vector2(1.0 / viewport.width, 1.0 / viewport.height));
- }
- DEBUG_TEST_ERROR("Material arameters");
-
- if (p_material->shader_cache->uses_time) {
- material_shader.set_uniform(MaterialShaderGLES2::TIME, Math::fmod(last_time, shader_time_rollback));
- draw_next_frame = true;
- }
- //if uses TIME - draw_next_frame=true
-
- } else {
-
- material_shader.set_custom_shader(0);
- rebind = material_shader.bind();
-
- DEBUG_TEST_ERROR("Shader bind2");
- }
-
- if (shadow) {
-
- float zofs = shadow->base->vars[VS::LIGHT_PARAM_SHADOW_Z_OFFSET];
- float zslope = shadow->base->vars[VS::LIGHT_PARAM_SHADOW_Z_SLOPE_SCALE];
- if (shadow_pass >= 1 && shadow->base->type == VS::LIGHT_DIRECTIONAL) {
- float m = Math::pow(shadow->base->directional_shadow_param[VS::LIGHT_DIRECTIONAL_SHADOW_PARAM_PSSM_ZOFFSET_SCALE], shadow_pass);
- zofs *= m;
- zslope *= m;
- }
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_Z_OFFSET, zofs);
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_Z_SLOPE_SCALE, zslope);
- if (shadow->base->type == VS::LIGHT_OMNI)
- material_shader.set_uniform(MaterialShaderGLES2::DUAL_PARABOLOID, shadow->dp);
- DEBUG_TEST_ERROR("Shadow uniforms");
- }
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_FOG]) {
-
- Color col_begin = current_env->fx_param[VS::ENV_FX_PARAM_FOG_BEGIN_COLOR];
- Color col_end = current_env->fx_param[VS::ENV_FX_PARAM_FOG_END_COLOR];
- col_begin = _convert_color(col_begin);
- col_end = _convert_color(col_end);
- float from = current_env->fx_param[VS::ENV_FX_PARAM_FOG_BEGIN];
- float zf = camera_z_far;
- float curve = current_env->fx_param[VS::ENV_FX_PARAM_FOG_ATTENUATION];
- material_shader.set_uniform(MaterialShaderGLES2::FOG_PARAMS, Vector3(from, zf, curve));
- material_shader.set_uniform(MaterialShaderGLES2::FOG_COLOR_BEGIN, Vector3(col_begin.r, col_begin.g, col_begin.b));
- material_shader.set_uniform(MaterialShaderGLES2::FOG_COLOR_END, Vector3(col_end.r, col_end.g, col_end.b));
- }
-
- //material_shader.set_uniform(MaterialShaderGLES2::TIME,Math::fmod(last_time,300.0));
- //if uses TIME - draw_next_frame=true
-
- return rebind;
-}
-
-void RasterizerGLES2::_setup_light(uint16_t p_light) {
-
- if (shadow)
- return;
-
- if (p_light == 0xFFFF)
- return;
-
- enum {
- VL_LIGHT_POS,
- VL_LIGHT_DIR,
- VL_LIGHT_ATTENUATION,
- VL_LIGHT_SPOT_ATTENUATION,
- VL_LIGHT_DIFFUSE,
- VL_LIGHT_SPECULAR,
- VL_LIGHT_MAX
- };
-
- static const MaterialShaderGLES2::Uniforms light_uniforms[VL_LIGHT_MAX] = {
- MaterialShaderGLES2::LIGHT_POS,
- MaterialShaderGLES2::LIGHT_DIRECTION,
- MaterialShaderGLES2::LIGHT_ATTENUATION,
- MaterialShaderGLES2::LIGHT_SPOT_ATTENUATION,
- MaterialShaderGLES2::LIGHT_DIFFUSE,
- MaterialShaderGLES2::LIGHT_SPECULAR,
- };
-
- GLfloat light_data[VL_LIGHT_MAX][3];
- memset(light_data, 0, (VL_LIGHT_MAX)*3 * sizeof(GLfloat));
-
- LightInstance *li = light_instances[p_light];
- Light *l = li->base;
-
- Color col_diffuse = _convert_color(l->colors[VS::LIGHT_COLOR_DIFFUSE]);
- Color col_specular = _convert_color(l->colors[VS::LIGHT_COLOR_SPECULAR]);
-
- for (int j = 0; j < 3; j++) {
- light_data[VL_LIGHT_DIFFUSE][j] = col_diffuse[j];
- light_data[VL_LIGHT_SPECULAR][j] = col_specular[j];
- }
-
- if (l->type != VS::LIGHT_OMNI) {
-
- Vector3 dir = -li->transform.get_basis().get_axis(2);
- dir = camera_transform_inverse.basis.xform(dir).normalized();
- for (int j = 0; j < 3; j++)
- light_data[VL_LIGHT_DIR][j] = dir[j];
- }
-
- if (l->type != VS::LIGHT_DIRECTIONAL) {
-
- Vector3 pos = li->transform.get_origin();
- pos = camera_transform_inverse.xform(pos);
- for (int j = 0; j < 3; j++)
- light_data[VL_LIGHT_POS][j] = pos[j];
- }
-
- if (li->near_shadow_buffer) {
-
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 1);
- glBindTexture(GL_TEXTURE_2D, li->near_shadow_buffer->depth);
-
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_MATRIX, li->shadow_projection[0]);
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_TEXEL_SIZE, Vector2(1.0, 1.0) / li->near_shadow_buffer->size);
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_TEXTURE, max_texture_units - 1);
- if (shadow_filter == SHADOW_FILTER_ESM)
- material_shader.set_uniform(MaterialShaderGLES2::ESM_MULTIPLIER, float(li->base->vars[VS::LIGHT_PARAM_SHADOW_ESM_MULTIPLIER]));
-
- if (li->base->type == VS::LIGHT_DIRECTIONAL) {
-
- if (li->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS) {
-
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_MATRIX2, li->shadow_projection[1]);
- material_shader.set_uniform(MaterialShaderGLES2::LIGHT_PSSM_SPLIT, Vector3(li->shadow_split[0], li->shadow_split[1], li->shadow_split[2]));
- } else if (li->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS) {
-
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_MATRIX2, li->shadow_projection[1]);
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_MATRIX3, li->shadow_projection[2]);
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_MATRIX4, li->shadow_projection[3]);
- material_shader.set_uniform(MaterialShaderGLES2::LIGHT_PSSM_SPLIT, Vector3(li->shadow_split[0], li->shadow_split[1], li->shadow_split[2]));
- }
- //print_line("shadow split: "+rtos(li->shadow_split));
- }
-
- material_shader.set_uniform(MaterialShaderGLES2::SHADOW_DARKENING, li->base->vars[VS::LIGHT_PARAM_SHADOW_DARKENING]);
- //matrix
- }
-
- light_data[VL_LIGHT_ATTENUATION][0] = l->vars[VS::LIGHT_PARAM_ENERGY];
-
- if (l->type == VS::LIGHT_DIRECTIONAL) {
- light_data[VL_LIGHT_ATTENUATION][1] = l->directional_shadow_param[VS::LIGHT_DIRECTIONAL_SHADOW_PARAM_MAX_DISTANCE];
- } else {
- light_data[VL_LIGHT_ATTENUATION][1] = l->vars[VS::LIGHT_PARAM_RADIUS];
- }
-
- light_data[VL_LIGHT_ATTENUATION][2] = l->vars[VS::LIGHT_PARAM_ATTENUATION];
-
- light_data[VL_LIGHT_SPOT_ATTENUATION][0] = Math::cos(Math::deg2rad(l->vars[VS::LIGHT_PARAM_SPOT_ANGLE]));
- light_data[VL_LIGHT_SPOT_ATTENUATION][1] = l->vars[VS::LIGHT_PARAM_SPOT_ATTENUATION];
-
- //int uf = material_shader.get_uniform(MaterialShaderGLES2::LIGHT_PARAMS);
- for (int i = 0; i < VL_LIGHT_MAX; i++) {
- glUniform3f(material_shader.get_uniform(light_uniforms[i]), light_data[i][0], light_data[i][1], light_data[i][2]);
- }
-}
-
-template <bool USE_NORMAL, bool USE_TANGENT, bool INPLACE>
-void RasterizerGLES2::_skeleton_xform(const uint8_t *p_src_array, int p_src_stride, uint8_t *p_dst_array, int p_dst_stride, int p_elements, const uint8_t *p_src_bones, const uint8_t *p_src_weights, const Skeleton::Bone *p_bone_xforms) {
-
- uint32_t basesize = 3;
- if (USE_NORMAL)
- basesize += 3;
- if (USE_TANGENT)
- basesize += 4;
-
- uint32_t extra = (p_dst_stride - basesize * 4);
- const int dstvec_size = 3 + (USE_NORMAL ? 3 : 0) + (USE_TANGENT ? 4 : 0);
- float dstcopy[dstvec_size];
-
- for (int i = 0; i < p_elements; i++) {
-
- uint32_t ss = p_src_stride * i;
- uint32_t ds = p_dst_stride * i;
- const uint16_t *bi = (const uint16_t *)&p_src_bones[ss];
- const float *bw = (const float *)&p_src_weights[ss];
- const float *src_vec = (const float *)&p_src_array[ss];
- float *dst_vec;
- if (INPLACE)
- dst_vec = dstcopy;
- else
- dst_vec = (float *)&p_dst_array[ds];
-
- dst_vec[0] = 0.0;
- dst_vec[1] = 0.0;
- dst_vec[2] = 0.0;
- //conditionals simply removed by optimizer
- if (USE_NORMAL) {
-
- dst_vec[3] = 0.0;
- dst_vec[4] = 0.0;
- dst_vec[5] = 0.0;
-
- if (USE_TANGENT) {
-
- dst_vec[6] = 0.0;
- dst_vec[7] = 0.0;
- dst_vec[8] = 0.0;
- dst_vec[9] = src_vec[9];
- }
- } else {
-
- if (USE_TANGENT) {
-
- dst_vec[3] = 0.0;
- dst_vec[4] = 0.0;
- dst_vec[5] = 0.0;
- dst_vec[6] = src_vec[6];
- }
- }
-
-#define _XFORM_BONE(m_idx) \
- if (bw[m_idx] == 0) \
- goto end; \
- p_bone_xforms[bi[m_idx]].transform_add_mul3(&src_vec[0], &dst_vec[0], bw[m_idx]); \
- if (USE_NORMAL) { \
- p_bone_xforms[bi[m_idx]].transform3_add_mul3(&src_vec[3], &dst_vec[3], bw[m_idx]); \
- if (USE_TANGENT) { \
- p_bone_xforms[bi[m_idx]].transform3_add_mul3(&src_vec[6], &dst_vec[6], bw[m_idx]); \
- } \
- } else { \
- if (USE_TANGENT) { \
- p_bone_xforms[bi[m_idx]].transform3_add_mul3(&src_vec[3], &dst_vec[3], bw[m_idx]); \
- } \
- }
-
- _XFORM_BONE(0);
- _XFORM_BONE(1);
- _XFORM_BONE(2);
- _XFORM_BONE(3);
-
- end:
-
- if (INPLACE) {
-
- const uint8_t *esp = (const uint8_t *)dstcopy;
- uint8_t *edp = (uint8_t *)&p_dst_array[ds];
-
- for (uint32_t j = 0; j < dstvec_size * 4; j++) {
-
- edp[j] = esp[j];
- }
-
- } else {
- //copy extra stuff
- const uint8_t *esp = (const uint8_t *)&src_vec[basesize];
- uint8_t *edp = (uint8_t *)&dst_vec[basesize];
-
- for (uint32_t j = 0; j < extra; j++) {
-
- edp[j] = esp[j];
- }
- }
- }
-}
-
-Error RasterizerGLES2::_setup_geometry(const Geometry *p_geometry, const Material *p_material, const Skeleton *p_skeleton, const float *p_morphs) {
-
- switch (p_geometry->type) {
-
- case Geometry::GEOMETRY_MULTISURFACE:
- case Geometry::GEOMETRY_SURFACE: {
-
- const Surface *surf = NULL;
- if (p_geometry->type == Geometry::GEOMETRY_SURFACE)
- surf = static_cast<const Surface *>(p_geometry);
- else if (p_geometry->type == Geometry::GEOMETRY_MULTISURFACE)
- surf = static_cast<const MultiMeshSurface *>(p_geometry)->surface;
-
- if (surf->format != surf->configured_format) {
- if (OS::get_singleton()->is_stdout_verbose()) {
-
- print_line("has format: " + itos(surf->format));
- print_line("configured format: " + itos(surf->configured_format));
- }
- ERR_EXPLAIN("Missing arrays (not set) in surface");
- }
- ERR_FAIL_COND_V(surf->format != surf->configured_format, ERR_UNCONFIGURED);
- uint8_t *base = 0;
- int stride = surf->stride;
- bool use_VBO = (surf->array_local == 0);
- _setup_geometry_vinfo = surf->array_len;
-
- bool skeleton_valid = p_skeleton && (surf->format & VS::ARRAY_FORMAT_BONES) && (surf->format & VS::ARRAY_FORMAT_WEIGHTS) && !p_skeleton->bones.empty() && p_skeleton->bones.size() > surf->max_bone;
- /*
- if (surf->packed) {
- float scales[4]={surf->vertex_scale,surf->uv_scale,surf->uv2_scale,0.0};
- glVertexAttrib4fv( 7, scales );
- } else {
- glVertexAttrib4f( 7, 1,1,1,1 );
-
- }*/
-
- if (!use_VBO) {
-
- DEBUG_TEST_ERROR("Draw NO VBO");
-
- base = surf->array_local;
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- bool can_copy_to_local = surf->local_stride * surf->array_len <= skinned_buffer_size;
- if (p_morphs && surf->stride * surf->array_len > skinned_buffer_size)
- can_copy_to_local = false;
-
- if (!can_copy_to_local)
- skeleton_valid = false;
-
- /* compute morphs */
-
- if (p_morphs && surf->morph_target_count && can_copy_to_local) {
-
- base = skinned_buffer;
- stride = surf->local_stride;
-
- //copy all first
- float coef = 1.0;
-
- for (int i = 0; i < surf->morph_target_count; i++) {
- if (surf->mesh->morph_target_mode == VS::MORPH_MODE_NORMALIZED)
- coef -= p_morphs[i];
- ERR_FAIL_COND_V(surf->morph_format != surf->morph_targets_local[i].configured_format, ERR_INVALID_DATA);
- }
-
- int16_t coeffp = CLAMP(coef * 255, 0, 255);
-
- for (int i = 0; i < VS::ARRAY_MAX - 1; i++) {
-
- const Surface::ArrayData &ad = surf->array[i];
- if (ad.size == 0)
- continue;
-
- int ofs = ad.ofs;
- int src_stride = surf->stride;
- int dst_stride = skeleton_valid ? surf->stride : surf->local_stride;
- int count = surf->array_len;
-
- if (!skeleton_valid && i >= VS::ARRAY_MAX - 3)
- break;
-
- switch (i) {
-
- case VS::ARRAY_VERTEX:
- case VS::ARRAY_NORMAL:
- case VS::ARRAY_TANGENT: {
-
- for (int k = 0; k < count; k++) {
-
- const float *src = (const float *)&surf->array_local[ofs + k * src_stride];
- float *dst = (float *)&base[ofs + k * dst_stride];
-
- dst[0] = src[0] * coef;
- dst[1] = src[1] * coef;
- dst[2] = src[2] * coef;
- };
-
- } break;
- case VS::ARRAY_COLOR: {
-
- for (int k = 0; k < count; k++) {
-
- const uint8_t *src = (const uint8_t *)&surf->array_local[ofs + k * src_stride];
- uint8_t *dst = (uint8_t *)&base[ofs + k * dst_stride];
-
- dst[0] = (src[0] * coeffp) >> 8;
- dst[1] = (src[1] * coeffp) >> 8;
- dst[2] = (src[2] * coeffp) >> 8;
- dst[3] = (src[3] * coeffp) >> 8;
- }
-
- } break;
- case VS::ARRAY_TEX_UV:
- case VS::ARRAY_TEX_UV2: {
-
- for (int k = 0; k < count; k++) {
-
- const float *src = (const float *)&surf->array_local[ofs + k * src_stride];
- float *dst = (float *)&base[ofs + k * dst_stride];
-
- dst[0] = src[0] * coef;
- dst[1] = src[1] * coef;
- }
-
- } break;
- case VS::ARRAY_BONES:
- case VS::ARRAY_WEIGHTS: {
-
- for (int k = 0; k < count; k++) {
-
- const float *src = (const float *)&surf->array_local[ofs + k * src_stride];
- float *dst = (float *)&base[ofs + k * dst_stride];
-
- dst[0] = src[0];
- dst[1] = src[1];
- dst[2] = src[2];
- dst[3] = src[3];
- }
-
- } break;
- }
- }
-
- for (int j = 0; j < surf->morph_target_count; j++) {
-
- for (int i = 0; i < VS::ARRAY_MAX - 3; i++) {
-
- const Surface::ArrayData &ad = surf->array[i];
- if (ad.size == 0)
- continue;
-
- int ofs = ad.ofs;
- int src_stride = surf->local_stride;
- int dst_stride = skeleton_valid ? surf->stride : surf->local_stride;
- int count = surf->array_len;
- const uint8_t *morph = surf->morph_targets_local[j].array;
- float w = p_morphs[j];
- int16_t wfp = CLAMP(w * 255, 0, 255);
-
- switch (i) {
-
- case VS::ARRAY_VERTEX:
- case VS::ARRAY_NORMAL:
- case VS::ARRAY_TANGENT: {
-
- for (int k = 0; k < count; k++) {
-
- const float *src_morph = (const float *)&morph[ofs + k * src_stride];
- float *dst = (float *)&base[ofs + k * dst_stride];
-
- dst[0] += src_morph[0] * w;
- dst[1] += src_morph[1] * w;
- dst[2] += src_morph[2] * w;
- }
-
- } break;
- case VS::ARRAY_COLOR: {
- for (int k = 0; k < count; k++) {
-
- const uint8_t *src = (const uint8_t *)&morph[ofs + k * src_stride];
- uint8_t *dst = (uint8_t *)&base[ofs + k * dst_stride];
-
- dst[0] = (src[0] * wfp) >> 8;
- dst[1] = (src[1] * wfp) >> 8;
- dst[2] = (src[2] * wfp) >> 8;
- dst[3] = (src[3] * wfp) >> 8;
- }
-
- } break;
- case VS::ARRAY_TEX_UV:
- case VS::ARRAY_TEX_UV2: {
-
- for (int k = 0; k < count; k++) {
-
- const float *src_morph = (const float *)&morph[ofs + k * src_stride];
- float *dst = (float *)&base[ofs + k * dst_stride];
-
- dst[0] += src_morph[0] * w;
- dst[1] += src_morph[1] * w;
- }
-
- } break;
- }
- }
- }
-
- if (skeleton_valid) {
-
- const uint8_t *src_weights = &surf->array_local[surf->array[VS::ARRAY_WEIGHTS].ofs];
- const uint8_t *src_bones = &surf->array_local[surf->array[VS::ARRAY_BONES].ofs];
- const Skeleton::Bone *skeleton = &p_skeleton->bones[0];
-
- if (surf->format & VS::ARRAY_FORMAT_NORMAL && surf->format & VS::ARRAY_FORMAT_TANGENT)
- _skeleton_xform<true, true, true>(base, surf->stride, base, surf->stride, surf->array_len, src_bones, src_weights, skeleton);
- else if (surf->format & (VS::ARRAY_FORMAT_NORMAL))
- _skeleton_xform<true, false, true>(base, surf->stride, base, surf->stride, surf->array_len, src_bones, src_weights, skeleton);
- else if (surf->format & (VS::ARRAY_FORMAT_TANGENT))
- _skeleton_xform<false, true, true>(base, surf->stride, base, surf->stride, surf->array_len, src_bones, src_weights, skeleton);
- else
- _skeleton_xform<false, false, true>(base, surf->stride, base, surf->stride, surf->array_len, src_bones, src_weights, skeleton);
- }
-
- stride = skeleton_valid ? surf->stride : surf->local_stride;
-
-#if 0
- {
- //in-place skeleton tansformation, only used for morphs, slow.
- //should uptimize some day....
-
- const uint8_t *src_weights=&surf->array_local[surf->array[VS::ARRAY_WEIGHTS].ofs];
- const uint8_t *src_bones=&surf->array_local[surf->array[VS::ARRAY_BONES].ofs];
- int src_stride = surf->stride;
- int count = surf->array_len;
- const Transform *skeleton = &p_skeleton->bones[0];
-
- for(int i=0;i<VS::ARRAY_MAX-1;i++) {
-
- const Surface::ArrayData& ad=surf->array[i];
- if (ad.size==0)
- continue;
-
- int ofs = ad.ofs;
-
-
- switch(i) {
-
- case VS::ARRAY_VERTEX: {
- for(int k=0;k<count;k++) {
-
- float *ptr= (float*)&base[ofs+k*stride];
- const GLfloat* weights = reinterpret_cast<const GLfloat*>(&src_weights[k*src_stride]);
- const GLfloat *bones = reinterpret_cast<const GLfloat*>(&src_bones[k*src_stride]);
-
- Vector3 src( ptr[0], ptr[1], ptr[2] );
- Vector3 dst;
- for(int j=0;j<VS::ARRAY_WEIGHTS_SIZE;j++) {
-
- float w = weights[j];
- if (w==0)
- break;
-
- //print_line("accum "+itos(i)+" += "+rtos(Math::ftoi(bones[j]))+" * "+skeleton[ Math::ftoi(bones[j]) ]+" * "+rtos(w));
- int bidx = Math::fast_ftoi(bones[j]);
- dst+=skeleton[ bidx ].xform(src) * w;
- }
-
- ptr[0]=dst.x;
- ptr[1]=dst.y;
- ptr[2]=dst.z;
-
- } break;
-
- } break;
- case VS::ARRAY_NORMAL:
- case VS::ARRAY_TANGENT: {
- for(int k=0;k<count;k++) {
-
- float *ptr= (float*)&base[ofs+k*stride];
- const GLfloat* weights = reinterpret_cast<const GLfloat*>(&src_weights[k*src_stride]);
- const GLfloat *bones = reinterpret_cast<const GLfloat*>(&src_bones[k*src_stride]);
-
- Vector3 src( ptr[0], ptr[1], ptr[2] );
- Vector3 dst;
- for(int j=0;j<VS::ARRAY_WEIGHTS_SIZE;j++) {
-
- float w = weights[j];
- if (w==0)
- break;
-
- //print_line("accum "+itos(i)+" += "+rtos(Math::ftoi(bones[j]))+" * "+skeleton[ Math::ftoi(bones[j]) ]+" * "+rtos(w));
- int bidx=Math::fast_ftoi(bones[j]);
- dst+=skeleton[ bidx ].basis.xform(src) * w;
- }
-
- ptr[0]=dst.x;
- ptr[1]=dst.y;
- ptr[2]=dst.z;
-
- } break;
-
- } break;
- }
- }
- }
-#endif
-
- } else if (skeleton_valid) {
-
- base = skinned_buffer;
- //copy stuff and get it ready for the skeleton
-
- int dst_stride = surf->stride - (surf->array[VS::ARRAY_BONES].size + surf->array[VS::ARRAY_WEIGHTS].size);
- const uint8_t *src_weights = &surf->array_local[surf->array[VS::ARRAY_WEIGHTS].ofs];
- const uint8_t *src_bones = &surf->array_local[surf->array[VS::ARRAY_BONES].ofs];
- const Skeleton::Bone *skeleton = &p_skeleton->bones[0];
-
- if (surf->format & VS::ARRAY_FORMAT_NORMAL && surf->format & VS::ARRAY_FORMAT_TANGENT)
- _skeleton_xform<true, true, false>(surf->array_local, surf->stride, base, dst_stride, surf->array_len, src_bones, src_weights, skeleton);
- else if (surf->format & (VS::ARRAY_FORMAT_NORMAL))
- _skeleton_xform<true, false, false>(surf->array_local, surf->stride, base, dst_stride, surf->array_len, src_bones, src_weights, skeleton);
- else if (surf->format & (VS::ARRAY_FORMAT_TANGENT))
- _skeleton_xform<false, true, false>(surf->array_local, surf->stride, base, dst_stride, surf->array_len, src_bones, src_weights, skeleton);
- else
- _skeleton_xform<false, false, false>(surf->array_local, surf->stride, base, dst_stride, surf->array_len, src_bones, src_weights, skeleton);
-
- stride = dst_stride;
- }
-
- } else {
-
- glBindBuffer(GL_ARRAY_BUFFER, surf->vertex_id);
- };
-
- for (int i = 0; i < (VS::ARRAY_MAX - 1); i++) {
-
- const Surface::ArrayData &ad = surf->array[i];
-
- /*
- if (!gl_texcoord_shader[i])
- continue;
- */
-
- if (ad.size == 0 || !ad.bind) {
- glDisableVertexAttribArray(i);
- if (i == VS::ARRAY_COLOR) {
- _set_color_attrib(Color(1, 1, 1, 1));
- };
- //print_line("disable: "+itos(i));
- continue; // this one is disabled.
- }
-
- glEnableVertexAttribArray(i);
- //print_line("set: "+itos(i)+" - count: "+itos(ad.count)+" datatype: "+itos(ad.datatype)+" ofs: "+itos(ad.ofs)+" stride: "+itos(stride)+" total len: "+itos(surf->array_len));
- glVertexAttribPointer(i, ad.count, ad.datatype, ad.normalize, stride, &base[ad.ofs]);
- }
-#ifdef GLEW_ENABLED
- //"desktop" opengl needs this.
- if (surf->primitive == VS::PRIMITIVE_POINTS) {
- glEnable(GL_POINT_SPRITE);
- glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
-
- } else {
- glDisable(GL_POINT_SPRITE);
- glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
- }
-#endif
- } break;
-
- default: break;
- };
-
- return OK;
-};
-
-static const GLenum gl_primitive[] = {
- GL_POINTS,
- GL_LINES,
- GL_LINE_STRIP,
- GL_LINE_LOOP,
- GL_TRIANGLES,
- GL_TRIANGLE_STRIP,
- GL_TRIANGLE_FAN
-};
-
-void RasterizerGLES2::_render(const Geometry *p_geometry, const Material *p_material, const Skeleton *p_skeleton, const GeometryOwner *p_owner, const Transform &p_xform) {
-
- _rinfo.object_count++;
-
- switch (p_geometry->type) {
-
- case Geometry::GEOMETRY_SURFACE: {
-
- Surface *s = (Surface *)p_geometry;
-
- _rinfo.vertex_count += s->array_len;
-
- if (s->index_array_len > 0) {
-
- if (s->index_array_local) {
-
- //print_line("LOCAL F: "+itos(s->format)+" C: "+itos(s->index_array_len)+" VC: "+itos(s->array_len));
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- glDrawElements(gl_primitive[s->primitive], s->index_array_len, (s->array_len > (1 << 16)) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT, s->index_array_local);
-
- } else {
- //print_line("indices: "+itos(s->index_array_local) );
-
- //print_line("VBO F: "+itos(s->format)+" C: "+itos(s->index_array_len)+" VC: "+itos(s->array_len));
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->index_id);
- glDrawElements(gl_primitive[s->primitive], s->index_array_len, (s->array_len > (1 << 16)) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT, 0);
- }
-
- } else {
-
- glDrawArrays(gl_primitive[s->primitive], 0, s->array_len);
- };
-
- _rinfo.draw_calls++;
- } break;
-
- case Geometry::GEOMETRY_MULTISURFACE: {
-
- material_shader.bind_uniforms();
- Surface *s = static_cast<const MultiMeshSurface *>(p_geometry)->surface;
- const MultiMesh *mm = static_cast<const MultiMesh *>(p_owner);
- int element_count = mm->elements.size();
-
- if (element_count == 0)
- return;
-
- if (mm->visible >= 0) {
- element_count = MIN(element_count, mm->visible);
- }
-
- const MultiMesh::Element *elements = &mm->elements[0];
-
- _rinfo.vertex_count += s->array_len * element_count;
-
- _rinfo.draw_calls += element_count;
-
- if (use_texture_instancing) {
- //this is probably the fastest all around way if vertex texture fetch is supported
-
- float twd = (1.0 / mm->tw) * 4.0;
- float thd = 1.0 / mm->th;
- float parm[3] = { 0.0, 01.0, (1.0f / mm->tw) };
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 2);
- glDisableVertexAttribArray(6);
- glBindTexture(GL_TEXTURE_2D, mm->tex_id);
- material_shader.set_uniform(MaterialShaderGLES2::INSTANCE_MATRICES, GL_TEXTURE0 + max_texture_units - 2);
-
- if (s->index_array_len > 0) {
-
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->index_id);
- for (int i = 0; i < element_count; i++) {
- parm[0] = (i % (mm->tw >> 2)) * twd;
- parm[1] = (i / (mm->tw >> 2)) * thd;
- glVertexAttrib3fv(6, parm);
- glDrawElements(gl_primitive[s->primitive], s->index_array_len, (s->array_len > (1 << 16)) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT, 0);
- }
-
- } else {
-
- for (int i = 0; i < element_count; i++) {
- //parm[0]=(i%(mm->tw>>2))*twd;
- //parm[1]=(i/(mm->tw>>2))*thd;
- glVertexAttrib3fv(6, parm);
- glDrawArrays(gl_primitive[s->primitive], 0, s->array_len);
- }
- };
-
- } else if (use_attribute_instancing) {
- //if not, using attributes instead of uniforms can be really fast in forward rendering architectures
- if (s->index_array_len > 0) {
-
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->index_id);
- for (int i = 0; i < element_count; i++) {
- glVertexAttrib4fv(8, &elements[i].matrix[0]);
- glVertexAttrib4fv(9, &elements[i].matrix[4]);
- glVertexAttrib4fv(10, &elements[i].matrix[8]);
- glVertexAttrib4fv(11, &elements[i].matrix[12]);
- glDrawElements(gl_primitive[s->primitive], s->index_array_len, (s->array_len > (1 << 16)) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT, 0);
- }
-
- } else {
-
- for (int i = 0; i < element_count; i++) {
- glVertexAttrib4fv(8, &elements[i].matrix[0]);
- glVertexAttrib4fv(9, &elements[i].matrix[4]);
- glVertexAttrib4fv(10, &elements[i].matrix[8]);
- glVertexAttrib4fv(11, &elements[i].matrix[12]);
- glDrawArrays(gl_primitive[s->primitive], 0, s->array_len);
- }
- };
-
- } else {
-
- //nothing to do, slow path (hope no hardware has to use it... but you never know)
-
- if (s->index_array_len > 0) {
-
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->index_id);
- for (int i = 0; i < element_count; i++) {
-
- glUniformMatrix4fv(material_shader.get_uniform_location(MaterialShaderGLES2::INSTANCE_TRANSFORM), 1, false, elements[i].matrix);
- glDrawElements(gl_primitive[s->primitive], s->index_array_len, (s->array_len > (1 << 16)) ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT, 0);
- }
-
- } else {
-
- for (int i = 0; i < element_count; i++) {
- glUniformMatrix4fv(material_shader.get_uniform_location(MaterialShaderGLES2::INSTANCE_TRANSFORM), 1, false, elements[i].matrix);
- glDrawArrays(gl_primitive[s->primitive], 0, s->array_len);
- }
- };
- }
- } break;
- case Geometry::GEOMETRY_IMMEDIATE: {
-
- bool restore_tex = false;
- const Immediate *im = static_cast<const Immediate *>(p_geometry);
- if (im->building) {
- return;
- }
-
- glBindBuffer(GL_ARRAY_BUFFER, 0);
-
- for (const List<Immediate::Chunk>::Element *E = im->chunks.front(); E; E = E->next()) {
-
- const Immediate::Chunk &c = E->get();
- if (c.vertices.empty()) {
- continue;
- }
- for (int i = 0; i < c.vertices.size(); i++)
-
- if (c.texture.is_valid() && texture_owner.owns(c.texture)) {
-
- const Texture *t = texture_owner.get(c.texture);
- glActiveTexture(GL_TEXTURE0 + tc0_idx);
- glBindTexture(t->target, t->tex_id);
- restore_tex = true;
-
- } else if (restore_tex) {
-
- glActiveTexture(GL_TEXTURE0 + tc0_idx);
- glBindTexture(GL_TEXTURE_2D, tc0_id_cache);
- restore_tex = false;
- }
-
- if (!c.normals.empty()) {
-
- glEnableVertexAttribArray(VS::ARRAY_NORMAL);
- glVertexAttribPointer(VS::ARRAY_NORMAL, 3, GL_FLOAT, false, sizeof(Vector3), c.normals.ptr());
-
- } else {
-
- glDisableVertexAttribArray(VS::ARRAY_NORMAL);
- }
-
- if (!c.tangents.empty()) {
-
- glEnableVertexAttribArray(VS::ARRAY_TANGENT);
- glVertexAttribPointer(VS::ARRAY_TANGENT, 4, GL_FLOAT, false, sizeof(Plane), c.tangents.ptr());
-
- } else {
-
- glDisableVertexAttribArray(VS::ARRAY_TANGENT);
- }
-
- if (!c.colors.empty()) {
-
- glEnableVertexAttribArray(VS::ARRAY_COLOR);
- glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(Color), c.colors.ptr());
-
- } else {
-
- glDisableVertexAttribArray(VS::ARRAY_COLOR);
- _set_color_attrib(Color(1, 1, 1, 1));
- }
-
- if (!c.uvs.empty()) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
- glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(Vector2), c.uvs.ptr());
-
- } else {
-
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV);
- }
-
- if (!c.uvs2.empty()) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV2);
- glVertexAttribPointer(VS::ARRAY_TEX_UV2, 2, GL_FLOAT, false, sizeof(Vector2), c.uvs2.ptr());
-
- } else {
-
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV2);
- }
-
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 3, GL_FLOAT, false, sizeof(Vector3), c.vertices.ptr());
- glDrawArrays(gl_primitive[c.primitive], 0, c.vertices.size());
- }
-
- if (restore_tex) {
-
- glActiveTexture(GL_TEXTURE0 + tc0_idx);
- glBindTexture(GL_TEXTURE_2D, tc0_id_cache);
- restore_tex = false;
- }
-
- } break;
- case Geometry::GEOMETRY_PARTICLES: {
-
- //print_line("particulinas");
- const Particles *particles = static_cast<const Particles *>(p_geometry);
- ERR_FAIL_COND(!p_owner);
- ParticlesInstance *particles_instance = (ParticlesInstance *)p_owner;
-
- ParticleSystemProcessSW &pp = particles_instance->particles_process;
- float td = time_delta; //MIN(time_delta,1.0/10.0);
- pp.process(&particles->data, particles_instance->transform, td);
- ERR_EXPLAIN("A parameter in the particle system is not correct.");
- ERR_FAIL_COND(!pp.valid);
-
- Transform camera;
- if (shadow)
- camera = shadow->transform;
- else
- camera = camera_transform;
-
- particle_draw_info.prepare(&particles->data, &pp, particles_instance->transform, camera);
- _rinfo.draw_calls += particles->data.amount;
-
- _rinfo.vertex_count += 4 * particles->data.amount;
-
- {
- static const Vector3 points[4] = {
- Vector3(-1.0, 1.0, 0),
- Vector3(1.0, 1.0, 0),
- Vector3(1.0, -1.0, 0),
- Vector3(-1.0, -1.0, 0)
- };
- static const Vector3 uvs[4] = {
- Vector3(0.0, 0.0, 0.0),
- Vector3(1.0, 0.0, 0.0),
- Vector3(1.0, 1.0, 0.0),
- Vector3(0, 1.0, 0.0)
- };
- static const Vector3 normals[4] = {
- Vector3(0, 0, 1),
- Vector3(0, 0, 1),
- Vector3(0, 0, 1),
- Vector3(0, 0, 1)
- };
-
- static const Plane tangents[4] = {
- Plane(Vector3(1, 0, 0), 0),
- Plane(Vector3(1, 0, 0), 0),
- Plane(Vector3(1, 0, 0), 0),
- Plane(Vector3(1, 0, 0), 0)
- };
-
- for (int i = 0; i < particles->data.amount; i++) {
-
- ParticleSystemDrawInfoSW::ParticleDrawInfo &pinfo = *particle_draw_info.draw_info_order[i];
- if (!pinfo.data->active)
- continue;
-
- material_shader.set_uniform(MaterialShaderGLES2::WORLD_TRANSFORM, pinfo.transform);
- _set_color_attrib(pinfo.color);
- _draw_primitive(4, points, normals, NULL, uvs, tangents);
- }
- }
-
- } break;
- default: break;
- };
-};
-
-void RasterizerGLES2::_setup_shader_params(const Material *p_material) {
-
-#if 0
- int idx=0;
- int tex_idx=0;
- for(Map<StringName,Variant>::Element *E=p_material->shader_cache->params.front();E;E=E->next(),idx++) {
-
- Variant v; //
- v = E->get();
- const Map<StringName,Variant>::Element *F=p_material->shader_params.find(E->key());
- if (F)
- v=F->get();
-
- switch(v.get_type() ) {
- case Variant::OBJECT:
- case Variant::_RID: {
-
- RID tex=v;
- if (!tex.is_valid())
- break;
-
- Texture *texture = texture_owner.get(tex);
- if (!texture)
- break;
- glUniform1i( material_shader.get_custom_uniform_location(idx), tex_idx);
- glActiveTexture(tex_idx);
- glBindTexture(texture->target,texture->tex_id);
-
- } break;
- case Variant::COLOR: {
-
- Color c=v;
- material_shader.set_custom_uniform(idx,Vector3(c.r,c.g,c.b));
- } break;
- default: {
-
- material_shader.set_custom_uniform(idx,v);
- } break;
- }
-
- }
-#endif
-}
-
-void RasterizerGLES2::_setup_skeleton(const Skeleton *p_skeleton) {
-
- material_shader.set_conditional(MaterialShaderGLES2::USE_SKELETON, p_skeleton != NULL);
- if (p_skeleton && p_skeleton->tex_id) {
-
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 2);
- glBindTexture(GL_TEXTURE_2D, p_skeleton->tex_id);
- }
-}
-
-void RasterizerGLES2::_render_list_forward(RenderList *p_render_list, const Transform &p_view_transform, const Transform &p_view_transform_inverse, const CameraMatrix &p_projection, bool p_reverse_cull, bool p_fragment_light, bool p_alpha_pass) {
-
- if (current_rt && current_rt_vflip) {
- //p_reverse_cull=!p_reverse_cull;
- glFrontFace(GL_CCW);
- }
-
- const Material *prev_material = NULL;
- uint16_t prev_light = 0x777E;
- const Geometry *prev_geometry_cmp = NULL;
- uint8_t prev_light_type = 0xEF;
- const Skeleton *prev_skeleton = NULL;
- uint8_t prev_sort_flags = 0xFF;
- const BakedLightData *prev_baked_light = NULL;
- RID prev_baked_light_texture;
- const float *prev_morph_values = NULL;
- int prev_receive_shadows_state = -1;
-
- material_shader.set_conditional(MaterialShaderGLES2::USE_VERTEX_LIGHTING, !shadow && !p_fragment_light);
- material_shader.set_conditional(MaterialShaderGLES2::USE_FRAGMENT_LIGHTING, !shadow && p_fragment_light);
- material_shader.set_conditional(MaterialShaderGLES2::USE_SKELETON, false);
-
- if (shadow) {
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_DIRECTIONAL, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_OMNI, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_SPOT, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_SHADOW, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM4, false);
- material_shader.set_conditional(MaterialShaderGLES2::SHADELESS, false);
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_OCTREE, false);
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_LIGHTMAP, false);
- //material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_TEXTURE,false);
- }
-
- bool stores_glow = !shadow && (current_env && current_env->fx_enabled[VS::ENV_FX_GLOW]) && !p_alpha_pass;
- float sampled_light_dp_multiplier = 1.0;
-
- bool prev_blend = false;
- glDisable(GL_BLEND);
- for (int i = 0; i < p_render_list->element_count; i++) {
-
- RenderList::Element *e = p_render_list->elements[i];
- const Material *material = e->material;
- uint16_t light = e->light;
- uint8_t light_type = e->light_type;
- uint8_t sort_flags = e->sort_flags;
- const Skeleton *skeleton = e->skeleton;
- const Geometry *geometry_cmp = e->geometry_cmp;
- const BakedLightData *baked_light = e->instance->baked_light;
- const float *morph_values = e->instance->morph_values.ptr();
- int receive_shadows_state = e->instance->receive_shadows == true ? 1 : 0;
-
- bool rebind = false;
- bool bind_baked_light_octree = false;
- bool bind_baked_lightmap = false;
- bool additive = false;
- bool bind_dp_sampler = false;
-
- if (!shadow) {
-
- if (texscreen_used && !texscreen_copied && material->shader_cache && material->shader_cache->valid && material->shader_cache->has_texscreen) {
- texscreen_copied = true;
- _copy_to_texscreen();
-
- //force reset state
- prev_material = NULL;
- prev_light = 0x777E;
- prev_geometry_cmp = NULL;
- prev_light_type = 0xEF;
- prev_skeleton = NULL;
- prev_sort_flags = 0xFF;
- prev_morph_values = NULL;
- prev_receive_shadows_state = -1;
- glEnable(GL_BLEND);
- glDepthMask(GL_TRUE);
- glEnable(GL_DEPTH_TEST);
- glDisable(GL_SCISSOR_TEST);
- }
-
- if (light_type != prev_light_type || receive_shadows_state != prev_receive_shadows_state) {
-
- if (material->flags[VS::MATERIAL_FLAG_UNSHADED] || current_debug == VS::SCENARIO_DEBUG_SHADELESS) {
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_DIRECTIONAL, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_OMNI, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_SPOT, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_SHADOW, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM4, false);
- material_shader.set_conditional(MaterialShaderGLES2::SHADELESS, true);
- } else {
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_DIRECTIONAL, (light_type & 0x3) == VS::LIGHT_DIRECTIONAL);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_OMNI, (light_type & 0x3) == VS::LIGHT_OMNI);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_TYPE_SPOT, (light_type & 0x3) == VS::LIGHT_SPOT);
- if (receive_shadows_state == 1) {
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_SHADOW, (light_type & 0x8));
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM, (light_type & 0x10));
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM4, (light_type & 0x20));
- } else {
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_SHADOW, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM, false);
- material_shader.set_conditional(MaterialShaderGLES2::LIGHT_USE_PSSM4, false);
- }
- material_shader.set_conditional(MaterialShaderGLES2::SHADELESS, false);
- }
-
- rebind = true;
- }
-
- if (!*e->additive_ptr) {
-
- additive = false;
- *e->additive_ptr = true;
- } else {
- additive = true;
- }
-
- if (stores_glow)
- material_shader.set_conditional(MaterialShaderGLES2::USE_GLOW, !additive);
-
- bool desired_blend = false;
- VS::MaterialBlendMode desired_blend_mode = VS::MATERIAL_BLEND_MODE_MIX;
-
- if (additive) {
- desired_blend = true;
- desired_blend_mode = VS::MATERIAL_BLEND_MODE_ADD;
- } else {
- desired_blend = p_alpha_pass;
- desired_blend_mode = material->blend_mode;
- }
-
- if (prev_blend != desired_blend) {
-
- if (desired_blend) {
- glEnable(GL_BLEND);
- if (!current_rt || !current_rt_transparent)
- glColorMask(1, 1, 1, 0);
- } else {
- glDisable(GL_BLEND);
- glColorMask(1, 1, 1, 1);
- }
-
- prev_blend = desired_blend;
- }
-
- if (desired_blend && desired_blend_mode != current_blend_mode) {
-
- switch (desired_blend_mode) {
-
- case VS::MATERIAL_BLEND_MODE_MIX: {
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
-
- } break;
- case VS::MATERIAL_BLEND_MODE_ADD: {
-
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(p_alpha_pass ? GL_SRC_ALPHA : GL_ONE, GL_ONE);
-
- } break;
- case VS::MATERIAL_BLEND_MODE_SUB: {
-
- glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
- } break;
- case VS::MATERIAL_BLEND_MODE_MUL: {
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
-
- } break;
- }
-
- current_blend_mode = desired_blend_mode;
- }
-
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_OCTREE, false);
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_LIGHTMAP, false);
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_DP_SAMPLER, false);
-
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_COLOR, false);
-
- if (material->flags[VS::MATERIAL_FLAG_UNSHADED] == false && current_debug != VS::SCENARIO_DEBUG_SHADELESS) {
-
- if (baked_light != NULL) {
- if (baked_light->realtime_color_enabled) {
- float realtime_energy = baked_light->realtime_energy;
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_COLOR, true);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_COLOR, Vector3(baked_light->realtime_color.r * realtime_energy, baked_light->realtime_color.g * realtime_energy, baked_light->realtime_color.b * realtime_energy));
- }
- }
-
- if (e->instance->sampled_light.is_valid()) {
-
- SampledLight *sl = sampled_light_owner.get(e->instance->sampled_light);
- if (sl) {
-
- baked_light = NULL; //can't mix
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_DP_SAMPLER, true);
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 3);
- glBindTexture(GL_TEXTURE_2D, sl->texture); //bind the texture
- sampled_light_dp_multiplier = sl->multiplier;
- bind_dp_sampler = true;
- }
- }
-
- if (!additive && baked_light) {
-
- if (baked_light->mode == VS::BAKED_LIGHT_OCTREE && baked_light->octree_texture.is_valid() && e->instance->baked_light_octree_xform) {
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_OCTREE, true);
- bind_baked_light_octree = true;
- if (prev_baked_light != baked_light) {
- Texture *tex = texture_owner.get(baked_light->octree_texture);
- if (tex) {
-
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 3);
- glBindTexture(tex->target, tex->tex_id); //bind the texture
- }
- if (baked_light->light_texture.is_valid()) {
- Texture *texl = texture_owner.get(baked_light->light_texture);
- if (texl) {
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 4);
- glBindTexture(texl->target, texl->tex_id); //bind the light texture
- }
- }
- }
- } else if (baked_light->mode == VS::BAKED_LIGHT_LIGHTMAPS) {
-
- int lightmap_idx = e->instance->baked_lightmap_id;
-
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_LIGHTMAP, false);
- bind_baked_lightmap = false;
-
- if (baked_light->lightmaps.has(lightmap_idx)) {
-
- RID texid = baked_light->lightmaps[lightmap_idx];
-
- if (prev_baked_light != baked_light || texid != prev_baked_light_texture) {
-
- Texture *tex = texture_owner.get(texid);
- if (tex) {
-
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 3);
- glBindTexture(tex->target, tex->tex_id); //bind the texture
- }
-
- prev_baked_light_texture = texid;
- }
-
- if (texid.is_valid()) {
- material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_LIGHTMAP, true);
- bind_baked_lightmap = true;
- }
- }
- }
- }
-
- if (int(prev_baked_light != NULL) ^ int(baked_light != NULL)) {
- rebind = true;
- }
- }
- }
-
- if (sort_flags != prev_sort_flags) {
-
- if (sort_flags & RenderList::SORT_FLAG_INSTANCING) {
- material_shader.set_conditional(MaterialShaderGLES2::USE_UNIFORM_INSTANCING, !use_texture_instancing && !use_attribute_instancing);
- material_shader.set_conditional(MaterialShaderGLES2::USE_ATTRIBUTE_INSTANCING, use_attribute_instancing);
- material_shader.set_conditional(MaterialShaderGLES2::USE_TEXTURE_INSTANCING, use_texture_instancing);
- } else {
- material_shader.set_conditional(MaterialShaderGLES2::USE_UNIFORM_INSTANCING, false);
- material_shader.set_conditional(MaterialShaderGLES2::USE_ATTRIBUTE_INSTANCING, false);
- material_shader.set_conditional(MaterialShaderGLES2::USE_TEXTURE_INSTANCING, false);
- }
- rebind = true;
- }
-
- if (use_hw_skeleton_xform && (skeleton != prev_skeleton || morph_values != prev_morph_values)) {
- if (!prev_skeleton || !skeleton)
- rebind = true; //went from skeleton <-> no skeleton, needs rebind
-
- if (morph_values == NULL)
- _setup_skeleton(skeleton);
- else
- _setup_skeleton(NULL);
- }
-
- if (material != prev_material || rebind) {
-
- rebind = _setup_material(e->geometry, material, additive, !p_alpha_pass);
-
- DEBUG_TEST_ERROR("Setup material");
- _rinfo.mat_change_count++;
- //_setup_material_overrides(e->material,NULL,material_overrides);
- //_setup_material_skeleton(material,skeleton);
- } else {
-
- if (prev_skeleton != skeleton) {
- //_setup_material_skeleton(material,skeleton);
- };
- }
-
- if (geometry_cmp != prev_geometry_cmp || prev_skeleton != skeleton) {
-
- _setup_geometry(e->geometry, material, e->skeleton, e->instance->morph_values.ptr());
- _rinfo.surface_count++;
- DEBUG_TEST_ERROR("Setup geometry");
- };
-
- if (i == 0 || light != prev_light || rebind) {
- if (e->light != 0xFFFF) {
- _setup_light(e->light);
- }
- }
-
- if (bind_baked_light_octree && (baked_light != prev_baked_light || rebind)) {
-
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_INVERSE_TRANSFORM, *e->instance->baked_light_octree_xform);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_LATTICE_SIZE, baked_light->octree_lattice_size);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_LATTICE_DIVIDE, baked_light->octree_lattice_divide);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_STEPS, baked_light->octree_steps);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_TEX, max_texture_units - 3);
- if (baked_light->light_texture.is_valid()) {
-
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_LIGHT_TEX, max_texture_units - 4);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_LIGHT_PIX_SIZE, baked_light->light_tex_pixel_size);
- } else {
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_LIGHT_TEX, max_texture_units - 3);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_LIGHT_PIX_SIZE, baked_light->octree_tex_pixel_size);
- }
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_MULTIPLIER, baked_light->texture_multiplier);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_OCTREE_PIX_SIZE, baked_light->octree_tex_pixel_size);
- }
-
- if (bind_baked_lightmap && (baked_light != prev_baked_light || rebind)) {
-
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_LIGHTMAP, max_texture_units - 3);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_LIGHTMAP_MULTIPLIER, baked_light->lightmap_multiplier);
- }
-
- if (bind_dp_sampler) {
-
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_DP_SAMPLER_MULTIPLIER, sampled_light_dp_multiplier);
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_DP_SAMPLER, max_texture_units - 3);
- }
-
- _set_cull(e->mirror, p_reverse_cull);
-
- if (i == 0 || rebind) {
- material_shader.set_uniform(MaterialShaderGLES2::CAMERA_INVERSE_TRANSFORM, p_view_transform_inverse);
- material_shader.set_uniform(MaterialShaderGLES2::PROJECTION_TRANSFORM, p_projection);
- if (!shadow) {
-
- if (!additive && current_env && current_env->fx_enabled[VS::ENV_FX_AMBIENT_LIGHT]) {
- Color ambcolor = _convert_color(current_env->fx_param[VS::ENV_FX_PARAM_AMBIENT_LIGHT_COLOR]);
- float ambnrg = current_env->fx_param[VS::ENV_FX_PARAM_AMBIENT_LIGHT_ENERGY];
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_LIGHT, Vector3(ambcolor.r * ambnrg, ambcolor.g * ambnrg, ambcolor.b * ambnrg));
- } else {
- material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_LIGHT, Vector3());
- }
- }
-
- _rinfo.shader_change_count++;
- }
-
- if (skeleton != prev_skeleton || rebind) {
- if (skeleton && morph_values == NULL) {
- material_shader.set_uniform(MaterialShaderGLES2::SKELETON_MATRICES, max_texture_units - 2);
- material_shader.set_uniform(MaterialShaderGLES2::SKELTEX_PIXEL_SIZE, skeleton->pixel_size);
- }
- }
-
- if (e->instance->billboard || e->instance->billboard_y || e->instance->depth_scale) {
-
- Transform xf = e->instance->transform;
- if (e->instance->depth_scale) {
-
- if (p_projection.matrix[3][3]) {
- //orthogonal matrix, try to do about the same
- //with viewport size
- //real_t w = Math::abs( 1.0/(2.0*(p_projection.matrix[0][0])) );
- real_t h = Math::abs(1.0 / (2.0 * p_projection.matrix[1][1]));
- float sc = (h * 2.0); //consistent with Y-fov
- xf.basis.scale(Vector3(sc, sc, sc));
- } else {
- //just scale by depth
- real_t sc = -camera_plane.distance_to(xf.origin);
- xf.basis.scale(Vector3(sc, sc, sc));
- }
- }
-
- if (e->instance->billboard) {
-
- Vector3 scale = xf.basis.get_scale();
-
- if (current_rt && current_rt_vflip) {
- xf.set_look_at(xf.origin, xf.origin + p_view_transform.get_basis().get_axis(2), -p_view_transform.get_basis().get_axis(1));
- } else {
- xf.set_look_at(xf.origin, xf.origin + p_view_transform.get_basis().get_axis(2), p_view_transform.get_basis().get_axis(1));
- }
-
- xf.basis.scale(scale);
- }
-
- if (e->instance->billboard_y) {
-
- Vector3 scale = xf.basis.get_scale();
- Vector3 look_at = p_view_transform.get_origin();
- look_at.y = 0.0;
- Vector3 look_at_norm = look_at.normalized();
-
- if (current_rt && current_rt_vflip) {
- xf.set_look_at(xf.origin, xf.origin + look_at_norm, Vector3(0.0, -1.0, 0.0));
- } else {
- xf.set_look_at(xf.origin, xf.origin + look_at_norm, Vector3(0.0, 1.0, 0.0));
- }
- xf.basis.scale(scale);
- }
- material_shader.set_uniform(MaterialShaderGLES2::WORLD_TRANSFORM, xf);
-
- } else {
- material_shader.set_uniform(MaterialShaderGLES2::WORLD_TRANSFORM, e->instance->transform);
- }
-
- material_shader.set_uniform(MaterialShaderGLES2::NORMAL_MULT, e->mirror ? -1.0 : 1.0);
- material_shader.set_uniform(MaterialShaderGLES2::CONST_LIGHT_MULT, additive ? 0.0 : 1.0);
-
- _render(e->geometry, material, skeleton, e->owner, e->instance->transform);
- DEBUG_TEST_ERROR("Rendering");
-
- prev_material = material;
- prev_skeleton = skeleton;
- prev_geometry_cmp = geometry_cmp;
- prev_light = e->light;
- prev_light_type = e->light_type;
- prev_sort_flags = sort_flags;
- prev_baked_light = baked_light;
- prev_morph_values = morph_values;
- prev_receive_shadows_state = receive_shadows_state;
- }
-
- //print_line("shaderchanges: "+itos(p_alpha_pass)+": "+itos(_rinfo.shader_change_count));
-
- if (current_rt && current_rt_vflip) {
- glFrontFace(GL_CW);
- }
-};
-
-void RasterizerGLES2::_copy_to_texscreen() {
-
- //what am i missing?
- glDisable(GL_CULL_FACE);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_SCISSOR_TEST);
-#ifdef GLEW_ENABLED
- glDisable(GL_POINT_SPRITE);
- glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
-#endif
- glDisable(GL_BLEND);
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
- //glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
-
- for (int i = 0; i < VS::ARRAY_MAX; i++) {
- glDisableVertexAttribArray(i);
- }
-
- glActiveTexture(GL_TEXTURE0);
-
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.sample_fbo);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, framebuffer.color);
- copy_shader.bind();
- _copy_screen_quad();
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.fbo);
-}
-
-void RasterizerGLES2::_copy_screen_quad() {
-
- Vector2 dst_pos[4] = {
- Vector2(-1, 1),
- Vector2(1, 1),
- Vector2(1, -1),
- Vector2(-1, -1)
- };
-
- Size2 uvscale(
- (viewport.width / float(framebuffer.scale)) / framebuffer.width,
- (viewport.height / float(framebuffer.scale)) / framebuffer.height);
-
- Vector2 src_uv[4] = {
- Vector2(0, 1) * uvscale,
- Vector2(1, 1) * uvscale,
- Vector2(1, 0) * uvscale,
- Vector2(0, 0) * uvscale
- };
-
- Vector2 full_uv[4] = {
- Vector2(0, 1),
- Vector2(1, 1),
- Vector2(1, 0),
- Vector2(0, 0)
- };
-
- _draw_gui_primitive2(4, dst_pos, NULL, src_uv, full_uv);
-}
-
-void RasterizerGLES2::_process_glow_bloom() {
-
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.blur[0].fbo);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, framebuffer.color);
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW_COPY, true);
- if (current_vd && current_env->fx_enabled[VS::ENV_FX_HDR]) {
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR, true);
- }
-
- copy_shader.bind();
- copy_shader.set_uniform(CopyShaderGLES2::BLOOM, float(current_env->fx_param[VS::ENV_FX_PARAM_GLOW_BLOOM]));
- copy_shader.set_uniform(CopyShaderGLES2::BLOOM_THRESHOLD, float(current_env->fx_param[VS::ENV_FX_PARAM_GLOW_BLOOM_THRESHOLD]));
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
-
- if (current_vd && current_env->fx_enabled[VS::ENV_FX_HDR]) {
- glActiveTexture(GL_TEXTURE2);
- glBindTexture(GL_TEXTURE_2D, current_vd->lum_color);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::HDR_SOURCE), 2);
- copy_shader.set_uniform(CopyShaderGLES2::TONEMAP_EXPOSURE, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_EXPOSURE]));
- copy_shader.set_uniform(CopyShaderGLES2::TONEMAP_WHITE, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_WHITE]));
- //copy_shader.set_uniform(CopyShaderGLES2::TONEMAP_WHITE,1.0);
- copy_shader.set_uniform(CopyShaderGLES2::HDR_GLOW_THRESHOLD, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_GLOW_THRESHOLD]));
- copy_shader.set_uniform(CopyShaderGLES2::HDR_GLOW_SCALE, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_GLOW_SCALE]));
-
- glActiveTexture(GL_TEXTURE0);
- }
-
- glViewport(0, 0, framebuffer.blur_size, framebuffer.blur_size);
- _copy_screen_quad();
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW_COPY, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR, false);
- int passes = current_env->fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_PASSES];
- Vector2 psize(1.0 / framebuffer.blur_size, 1.0 / framebuffer.blur_size);
- float pscale = current_env->fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_SCALE];
- float pmag = current_env->fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_STRENGTH];
-
- for (int i = 0; i < passes; i++) {
-
- static const Vector2 src_uv[4] = {
- Vector2(0, 1),
- Vector2(1, 1),
- Vector2(1, 0),
- Vector2(0, 0)
- };
- static const Vector2 dst_pos[4] = {
- Vector2(-1, 1),
- Vector2(1, 1),
- Vector2(1, -1),
- Vector2(-1, -1)
- };
-
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.blur[1].fbo);
- glBindTexture(GL_TEXTURE_2D, framebuffer.blur[0].color);
- copy_shader.set_conditional(CopyShaderGLES2::BLUR_V_PASS, true);
- copy_shader.set_conditional(CopyShaderGLES2::BLUR_H_PASS, false);
- copy_shader.bind();
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE, psize);
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SCALE, pscale);
- copy_shader.set_uniform(CopyShaderGLES2::BLUR_MAGNITUDE, pmag);
-
- _draw_gui_primitive(4, dst_pos, NULL, src_uv);
-
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.blur[0].fbo);
- glBindTexture(GL_TEXTURE_2D, framebuffer.blur[1].color);
- copy_shader.set_conditional(CopyShaderGLES2::BLUR_V_PASS, false);
- copy_shader.set_conditional(CopyShaderGLES2::BLUR_H_PASS, true);
- copy_shader.bind();
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE, psize);
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SCALE, pscale);
- copy_shader.set_uniform(CopyShaderGLES2::BLUR_MAGNITUDE, pmag);
-
- _draw_gui_primitive(4, dst_pos, NULL, src_uv);
- }
-
- copy_shader.set_conditional(CopyShaderGLES2::BLUR_V_PASS, false);
- copy_shader.set_conditional(CopyShaderGLES2::BLUR_H_PASS, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR, false);
-
- //blur it
-}
-
-void RasterizerGLES2::_process_hdr() {
-
- if (framebuffer.luminance.empty()) {
- return;
- }
-
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.luminance[0].fbo);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, framebuffer.color);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR_COPY, true);
- copy_shader.bind();
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
- glViewport(0, 0, framebuffer.luminance[0].size, framebuffer.luminance[0].size);
- _copy_screen_quad();
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR_COPY, false);
- //int passes = current_env->fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_PASSES];
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR_REDUCE, true);
- copy_shader.bind();
-
- for (int i = 1; i < framebuffer.luminance.size(); i++) {
-
- static const Vector2 src_uv[4] = {
- Vector2(0, 1),
- Vector2(1, 1),
- Vector2(1, 0),
- Vector2(0, 0)
- };
- static const Vector2 dst_pos[4] = {
- Vector2(-1, 1),
- Vector2(1, 1),
- Vector2(1, -1),
- Vector2(-1, -1)
- };
-
- Vector2 psize(1.0 / framebuffer.luminance[i - 1].size, 1.0 / framebuffer.luminance[i - 1].size);
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.luminance[i].fbo);
- glBindTexture(GL_TEXTURE_2D, framebuffer.luminance[i - 1].color);
- glViewport(0, 0, framebuffer.luminance[i].size, framebuffer.luminance[i].size);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
-
- if (framebuffer.luminance[i].size == 1) {
- //last step
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR_STORE, true);
- copy_shader.bind();
- glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, current_vd->lum_color);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE_VD_LUM), 1);
- copy_shader.set_uniform(CopyShaderGLES2::HDR_TIME_DELTA, time_delta);
- copy_shader.set_uniform(CopyShaderGLES2::HDR_EXP_ADJ_SPEED, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_EXPOSURE_ADJUST_SPEED]));
- copy_shader.set_uniform(CopyShaderGLES2::MIN_LUMINANCE, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_MIN_LUMINANCE]));
- copy_shader.set_uniform(CopyShaderGLES2::MAX_LUMINANCE, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_MAX_LUMINANCE]));
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
-
- //swap them
- SWAP(current_vd->lum_color, framebuffer.luminance[i].color);
- SWAP(current_vd->lum_fbo, framebuffer.luminance[i].fbo);
- }
-
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE, psize);
-
- _draw_gui_primitive(4, dst_pos, NULL, src_uv);
- }
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR_REDUCE, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR_STORE, false);
-
- draw_next_frame = true;
-}
-
-void RasterizerGLES2::_draw_tex_bg() {
-
- glDepthMask(GL_TRUE);
- glEnable(GL_DEPTH_TEST);
- glDisable(GL_CULL_FACE);
- glDisable(GL_BLEND);
- glColorMask(1, 1, 1, 1);
-
- RID texture;
-
- if (current_env->bg_mode == VS::ENV_BG_TEXTURE) {
- texture = current_env->bg_param[VS::ENV_BG_PARAM_TEXTURE];
- } else {
- texture = current_env->bg_param[VS::ENV_BG_PARAM_CUBEMAP];
- }
-
- if (!texture_owner.owns(texture)) {
- return;
- }
-
- Texture *t = texture_owner.get(texture);
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(t->target, t->tex_id);
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_ENERGY, true);
-
- if (current_env->bg_mode == VS::ENV_BG_TEXTURE) {
- copy_shader.set_conditional(CopyShaderGLES2::USE_CUBEMAP, false);
-
- } else {
- copy_shader.set_conditional(CopyShaderGLES2::USE_CUBEMAP, true);
- }
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_CUSTOM_ALPHA, true);
-
- copy_shader.bind();
-
- if (current_env->bg_mode == VS::ENV_BG_TEXTURE) {
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
- } else {
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE_CUBE), 0);
- }
-
- float nrg = float(current_env->bg_param[VS::ENV_BG_PARAM_ENERGY]);
- if (current_env->fx_enabled[VS::ENV_FX_HDR] && !use_fp16_fb)
- nrg *= 0.25; //go down a quarter for hdr
- copy_shader.set_uniform(CopyShaderGLES2::ENERGY, nrg);
- copy_shader.set_uniform(CopyShaderGLES2::CUSTOM_ALPHA, float(current_env->bg_param[VS::ENV_BG_PARAM_GLOW]));
-
- float flip_sign = (current_env->bg_mode == VS::ENV_BG_TEXTURE && current_rt && current_rt_vflip) ? -1 : 1;
-
- Vector3 vertices[4] = {
- Vector3(-1, -1 * flip_sign, 1),
- Vector3(1, -1 * flip_sign, 1),
- Vector3(1, 1 * flip_sign, 1),
- Vector3(-1, 1 * flip_sign, 1)
- };
-
- Vector3 src_uv[4] = {
- Vector3(0, 1, 0),
- Vector3(1, 1, 0),
- Vector3(1, 0, 0),
- Vector3(0, 0, 0)
- };
-
- if (current_env->bg_mode == VS::ENV_BG_TEXTURE) {
-
- //regular texture
- //adjust aspect
-
- float aspect_t = t->width / float(t->height);
- float aspect_v = viewport.width / float(viewport.height);
-
- if (aspect_v > aspect_t) {
- //wider than texture
- for (int i = 0; i < 4; i++) {
- src_uv[i].y = (src_uv[i].y - 0.5) * (aspect_t / aspect_v) + 0.5;
- }
-
- } else {
- //narrower than texture
- for (int i = 0; i < 4; i++) {
- src_uv[i].x = (src_uv[i].x - 0.5) * (aspect_v / aspect_t) + 0.5;
- }
- }
-
- float scale = current_env->bg_param[VS::ENV_BG_PARAM_SCALE];
- for (int i = 0; i < 4; i++) {
-
- src_uv[i].x *= scale;
- src_uv[i].y *= scale;
- }
- } else {
-
- //skybox uv vectors
- float vw, vh, zn;
- camera_projection.get_viewport_size(vw, vh);
- zn = camera_projection.get_z_near();
-
- float scale = current_env->bg_param[VS::ENV_BG_PARAM_SCALE];
-
- for (int i = 0; i < 4; i++) {
-
- Vector3 uv = src_uv[i];
- uv.x = (uv.x * 2.0 - 1.0) * vw * scale;
- uv.y = -(uv.y * 2.0 - 1.0) * vh * scale;
- uv.z = -zn;
- src_uv[i] = camera_transform.basis.xform(uv).normalized();
- src_uv[i].z = -src_uv[i].z;
- }
- }
-
- _draw_primitive(4, vertices, NULL, NULL, src_uv);
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_ENERGY, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_RGBE, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_CUBEMAP, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_CUSTOM_ALPHA, false);
-}
-
-void RasterizerGLES2::end_scene() {
-
- glEnable(GL_BLEND);
- glDepthMask(GL_TRUE);
- glEnable(GL_DEPTH_TEST);
- glDisable(GL_SCISSOR_TEST);
-
- bool use_fb = false;
-
- if (framebuffer.active) {
-
- //detect when to use the framebuffer object
- if (using_canvas_bg || texscreen_used || framebuffer.scale != 1) {
- use_fb = true;
- } else if (current_env) {
- use_fb = false;
- for (int i = 0; i < VS::ENV_FX_MAX; i++) {
-
- if (i == VS::ENV_FX_FOG) //does not need fb
- continue;
-
- if (current_env->fx_enabled[i]) {
- use_fb = true;
- break;
- }
- }
- }
- }
-
- if (use_fb) {
-
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.fbo);
- glViewport(0, 0, viewport.width / framebuffer.scale, viewport.height / framebuffer.scale);
- glScissor(0, 0, viewport.width / framebuffer.scale, viewport.height / framebuffer.scale);
-
- material_shader.set_conditional(MaterialShaderGLES2::USE_8BIT_HDR, !use_fp16_fb && current_env && current_env->fx_enabled[VS::ENV_FX_HDR]);
-
- } else {
- if (current_rt) {
- glScissor(0, 0, viewport.width, viewport.height);
- } else {
- glScissor(viewport.x, window_size.height - (viewport.height + viewport.y), viewport.width, viewport.height);
- }
- }
-
- glEnable(GL_SCISSOR_TEST);
- _glClearDepth(1.0);
-
- bool draw_tex_background = false;
-
- if (current_debug == VS::SCENARIO_DEBUG_OVERDRAW) {
-
- glClearColor(0, 0, 0, 1);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- } else if (current_rt && current_rt_transparent) {
-
- glClearColor(0, 0, 0, 0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- } else if (current_env) {
-
- switch (current_env->bg_mode) {
-
- case VS::ENV_BG_CANVAS:
- case VS::ENV_BG_KEEP: {
- //copy from framebuffer if framebuffer
- glClear(GL_DEPTH_BUFFER_BIT);
- } break;
- case VS::ENV_BG_DEFAULT_COLOR:
- case VS::ENV_BG_COLOR: {
-
- Color bgcolor;
- if (current_env->bg_mode == VS::ENV_BG_COLOR)
- bgcolor = current_env->bg_param[VS::ENV_BG_PARAM_COLOR];
- else
- bgcolor = ProjectSettings::get_singleton()->get("render/default_clear_color");
- bgcolor = _convert_color(bgcolor);
- float a = use_fb ? float(current_env->bg_param[VS::ENV_BG_PARAM_GLOW]) : 1.0;
- glClearColor(bgcolor.r, bgcolor.g, bgcolor.b, a);
- _glClearDepth(1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- } break;
- case VS::ENV_BG_TEXTURE:
- case VS::ENV_BG_CUBEMAP: {
-
- glClear(GL_DEPTH_BUFFER_BIT);
- draw_tex_background = true;
- } break;
- }
- } else {
-
- Color c = _convert_color(Color(0.3, 0.3, 0.3));
- glClearColor(c.r, c.g, c.b, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- }
-
- glDisable(GL_SCISSOR_TEST);
-
- //material_shader.set_uniform_camera(MaterialShaderGLES2::PROJECTION_MATRIX, camera_projection);
-
- /*
- printf("setting projection to ");
- for (int i=0; i<16; i++) {
- printf("%f, ", ((float*)camera_projection.matrix)[i]);
- };
- printf("\n");
-
- print_line(String("setting camera to ")+camera_transform_inverse);
- */
- //material_shader.set_uniform_default(MaterialShaderGLES2::CAMERA_INVERSE, camera_transform_inverse);
-
- current_depth_test = true;
- current_depth_mask = true;
- texscreen_copied = false;
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
- glDisable(GL_BLEND);
- current_blend_mode = VS::MATERIAL_BLEND_MODE_MIX;
-
- //material_shader.set_conditional(MaterialShaderGLES2::USE_GLOW,current_env && current_env->fx_enabled[VS::ENV_FX_GLOW]);
- opaque_render_list.sort_mat_light_type_flags();
- _render_list_forward(&opaque_render_list, camera_transform, camera_transform_inverse, camera_projection, false, fragment_lighting);
-
- if (draw_tex_background) {
-
- //most 3D vendors recommend drawing a texture bg or skybox here,
- //after opaque geometry has been drawn
- //so the zbuffer can get rid of most pixels
- _draw_tex_bg();
- }
-
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
- glDisable(GL_BLEND);
- current_blend_mode = VS::MATERIAL_BLEND_MODE_MIX;
- material_shader.set_conditional(MaterialShaderGLES2::USE_GLOW, false);
- if (current_env && current_env->fx_enabled[VS::ENV_FX_GLOW]) {
- glColorMask(1, 1, 1, 0); //don't touch alpha
- }
-
- alpha_render_list.sort_z();
- _render_list_forward(&alpha_render_list, camera_transform, camera_transform_inverse, camera_projection, false, fragment_lighting, true);
- glColorMask(1, 1, 1, 1);
-
- //material_shader.set_conditional( MaterialShaderGLES2::USE_FOG,false);
-
- DEBUG_TEST_ERROR("Drawing Scene");
-
-#ifdef GLEW_ENABLED
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-#endif
-
- if (use_fb) {
-
- for (int i = 0; i < VS::ARRAY_MAX; i++) {
- glDisableVertexAttribArray(i);
- }
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- glDisable(GL_BLEND);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_CULL_FACE);
- glDisable(GL_SCISSOR_TEST);
- glDepthMask(false);
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_HDR]) {
-
- int hdr_tm = current_env->fx_param[VS::ENV_FX_PARAM_HDR_TONEMAPPER];
- switch (hdr_tm) {
- case VS::ENV_FX_HDR_TONE_MAPPER_LINEAR: {
-
- } break;
- case VS::ENV_FX_HDR_TONE_MAPPER_LOG: {
- copy_shader.set_conditional(CopyShaderGLES2::USE_LOG_TONEMAPPER, true);
-
- } break;
- case VS::ENV_FX_HDR_TONE_MAPPER_REINHARDT: {
- copy_shader.set_conditional(CopyShaderGLES2::USE_REINHARDT_TONEMAPPER, true);
- } break;
- case VS::ENV_FX_HDR_TONE_MAPPER_REINHARDT_AUTOWHITE: {
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_REINHARDT_TONEMAPPER, true);
- copy_shader.set_conditional(CopyShaderGLES2::USE_AUTOWHITE, true);
- } break;
- }
-
- _process_hdr();
- }
- if (current_env && current_env->fx_enabled[VS::ENV_FX_GLOW]) {
- _process_glow_bloom();
- int glow_transfer_mode = current_env->fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_BLEND_MODE];
- if (glow_transfer_mode == 1)
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW_SCREEN, true);
- if (glow_transfer_mode == 2)
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW_SOFTLIGHT, true);
- }
-
- glBindFramebuffer(GL_FRAMEBUFFER, current_rt ? current_rt->fbo : base_framebuffer);
-
- Size2 size;
- if (current_rt) {
- glBindFramebuffer(GL_FRAMEBUFFER, current_rt->fbo);
- glViewport(0, 0, viewport.width, viewport.height);
- size = Size2(viewport.width, viewport.height);
- } else {
- glBindFramebuffer(GL_FRAMEBUFFER, base_framebuffer);
- glViewport(viewport.x, window_size.height - (viewport.height + viewport.y), viewport.width, viewport.height);
- size = Size2(viewport.width, viewport.height);
- }
-
- //time to copy!!!
- copy_shader.set_conditional(CopyShaderGLES2::USE_BCS, current_env && current_env->fx_enabled[VS::ENV_FX_BCS]);
- copy_shader.set_conditional(CopyShaderGLES2::USE_SRGB, current_env && current_env->fx_enabled[VS::ENV_FX_SRGB]);
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW, current_env && current_env->fx_enabled[VS::ENV_FX_GLOW]);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR, current_env && current_env->fx_enabled[VS::ENV_FX_HDR]);
- copy_shader.set_conditional(CopyShaderGLES2::USE_NO_ALPHA, true);
- copy_shader.set_conditional(CopyShaderGLES2::USE_FXAA, current_env && current_env->fx_enabled[VS::ENV_FX_FXAA]);
-
- copy_shader.bind();
- //copy_shader.set_uniform(CopyShaderGLES2::SOURCE,0);
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_GLOW]) {
-
- glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, framebuffer.blur[0].color);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::GLOW_SOURCE), 1);
- }
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_HDR]) {
-
- glActiveTexture(GL_TEXTURE2);
- glBindTexture(GL_TEXTURE_2D, current_vd->lum_color);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::HDR_SOURCE), 2);
- copy_shader.set_uniform(CopyShaderGLES2::TONEMAP_EXPOSURE, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_EXPOSURE]));
- copy_shader.set_uniform(CopyShaderGLES2::TONEMAP_WHITE, float(current_env->fx_param[VS::ENV_FX_PARAM_HDR_WHITE]));
- }
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_FXAA])
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE, Size2(1.0 / size.x, 1.0 / size.y));
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_BCS]) {
-
- Vector3 bcs;
- bcs.x = current_env->fx_param[VS::ENV_FX_PARAM_BCS_BRIGHTNESS];
- bcs.y = current_env->fx_param[VS::ENV_FX_PARAM_BCS_CONTRAST];
- bcs.z = current_env->fx_param[VS::ENV_FX_PARAM_BCS_SATURATION];
- copy_shader.set_uniform(CopyShaderGLES2::BCS, bcs);
- }
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, framebuffer.color);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
-
- _copy_screen_quad();
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_BCS, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_SRGB, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HDR, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_NO_ALPHA, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_FXAA, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW_SCREEN, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLOW_SOFTLIGHT, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_REINHARDT_TONEMAPPER, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_AUTOWHITE, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_LOG_TONEMAPPER, false);
-
- material_shader.set_conditional(MaterialShaderGLES2::USE_8BIT_HDR, false);
-
- if (current_env && current_env->fx_enabled[VS::ENV_FX_HDR] && GLOBAL_DEF("rasterizer/debug_hdr", false)) {
- _debug_luminances();
- }
- }
-
- current_env = NULL;
- current_debug = VS::SCENARIO_DEBUG_DISABLED;
- if (GLOBAL_DEF("rasterizer/debug_shadow_maps", false)) {
- _debug_shadows();
- }
- //_debug_luminances();
- //_debug_samplers();
-
- if (using_canvas_bg) {
- using_canvas_bg = false;
- glColorMask(1, 1, 1, 1); //don't touch alpha
- }
-}
-void RasterizerGLES2::end_shadow_map() {
-
- ERR_FAIL_COND(!shadow);
-
- glDisable(GL_BLEND);
- glDisable(GL_SCISSOR_TEST);
- glDisable(GL_DITHER);
- glEnable(GL_DEPTH_TEST);
- glDepthMask(true);
-
- ShadowBuffer *sb = shadow->near_shadow_buffer;
-
- ERR_FAIL_COND(!sb);
-
- glBindFramebuffer(GL_FRAMEBUFFER, sb->fbo);
-
- if (!use_rgba_shadowmaps)
- glColorMask(0, 0, 0, 0);
-
- //glEnable(GL_POLYGON_OFFSET_FILL);
- //glPolygonOffset( 8.0f, 16.0f);
-
- CameraMatrix cm;
- float z_near, z_far;
- Transform light_transform;
-
- float dp_direction = 0.0;
- bool flip_facing = false;
- Rect2 vp_rect;
-
- switch (shadow->base->type) {
-
- case VS::LIGHT_DIRECTIONAL: {
-
- if (shadow->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS) {
-
- cm = shadow->custom_projection[shadow_pass];
- light_transform = shadow->custom_transform[shadow_pass];
-
- if (shadow_pass == 0) {
-
- vp_rect = Rect2(0, sb->size / 2, sb->size / 2, sb->size / 2);
- glViewport(0, sb->size / 2, sb->size / 2, sb->size / 2);
- glScissor(0, sb->size / 2, sb->size / 2, sb->size / 2);
- } else if (shadow_pass == 1) {
-
- vp_rect = Rect2(0, 0, sb->size / 2, sb->size / 2);
- glViewport(0, 0, sb->size / 2, sb->size / 2);
- glScissor(0, 0, sb->size / 2, sb->size / 2);
-
- } else if (shadow_pass == 2) {
-
- vp_rect = Rect2(sb->size / 2, sb->size / 2, sb->size / 2, sb->size / 2);
- glViewport(sb->size / 2, sb->size / 2, sb->size / 2, sb->size / 2);
- glScissor(sb->size / 2, sb->size / 2, sb->size / 2, sb->size / 2);
- } else if (shadow_pass == 3) {
-
- vp_rect = Rect2(sb->size / 2, 0, sb->size / 2, sb->size / 2);
- glViewport(sb->size / 2, 0, sb->size / 2, sb->size / 2);
- glScissor(sb->size / 2, 0, sb->size / 2, sb->size / 2);
- }
-
- glEnable(GL_SCISSOR_TEST);
-
- } else if (shadow->base->directional_shadow_mode == VS::LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS) {
-
- if (shadow_pass == 0) {
-
- cm = shadow->custom_projection[0];
- light_transform = shadow->custom_transform[0];
- vp_rect = Rect2(0, sb->size / 2, sb->size, sb->size / 2);
- glViewport(0, sb->size / 2, sb->size, sb->size / 2);
- glScissor(0, sb->size / 2, sb->size, sb->size / 2);
- } else {
-
- cm = shadow->custom_projection[1];
- light_transform = shadow->custom_transform[1];
- vp_rect = Rect2(0, 0, sb->size, sb->size / 2);
- glViewport(0, 0, sb->size, sb->size / 2);
- glScissor(0, 0, sb->size, sb->size / 2);
- }
-
- glEnable(GL_SCISSOR_TEST);
-
- } else {
- cm = shadow->custom_projection[0];
- light_transform = shadow->custom_transform[0];
- vp_rect = Rect2(0, 0, sb->size, sb->size);
- glViewport(0, 0, sb->size, sb->size);
- }
-
- z_near = cm.get_z_near();
- z_far = cm.get_z_far();
-
- _glClearDepth(1.0f);
- glClearColor(1, 1, 1, 1);
-
- if (use_rgba_shadowmaps)
- glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
- else
- glClear(GL_DEPTH_BUFFER_BIT);
-
- glDisable(GL_SCISSOR_TEST);
-
- } break;
- case VS::LIGHT_OMNI: {
-
- material_shader.set_conditional(MaterialShaderGLES2::USE_DUAL_PARABOLOID, true);
- dp_direction = shadow_pass ? 1.0 : -1.0;
- flip_facing = (shadow_pass == 1);
- light_transform = shadow->transform;
- z_near = 0;
- z_far = shadow->base->vars[VS::LIGHT_PARAM_RADIUS];
- shadow->dp.x = 1.0 / z_far;
- shadow->dp.y = dp_direction;
-
- if (shadow_pass == 0) {
- vp_rect = Rect2(0, sb->size / 2, sb->size, sb->size / 2);
- glViewport(0, sb->size / 2, sb->size, sb->size / 2);
- glScissor(0, sb->size / 2, sb->size, sb->size / 2);
- } else {
- vp_rect = Rect2(0, 0, sb->size, sb->size / 2);
- glViewport(0, 0, sb->size, sb->size / 2);
- glScissor(0, 0, sb->size, sb->size / 2);
- }
- glEnable(GL_SCISSOR_TEST);
- shadow->projection = cm;
-
- glClearColor(1, 1, 1, 1);
- _glClearDepth(1.0f);
- if (use_rgba_shadowmaps)
- glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
- else
- glClear(GL_DEPTH_BUFFER_BIT);
- glDisable(GL_SCISSOR_TEST);
-
- } break;
- case VS::LIGHT_SPOT: {
-
- float far = shadow->base->vars[VS::LIGHT_PARAM_RADIUS];
- ERR_FAIL_COND(far <= 0);
- float near = far / 200.0;
- if (near < 0.05)
- near = 0.05;
-
- float angle = shadow->base->vars[VS::LIGHT_PARAM_SPOT_ANGLE];
-
- cm.set_perspective(angle * 2.0, 1.0, near, far);
-
- shadow->projection = cm; // cache
- light_transform = shadow->transform;
- z_near = cm.get_z_near();
- z_far = cm.get_z_far();
-
- glViewport(0, 0, sb->size, sb->size);
- vp_rect = Rect2(0, 0, sb->size, sb->size);
- _glClearDepth(1.0f);
- glClearColor(1, 1, 1, 1);
- if (use_rgba_shadowmaps)
- glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
- else
- glClear(GL_DEPTH_BUFFER_BIT);
-
- } break;
- }
-
- Transform light_transform_inverse = light_transform.affine_inverse();
-
- opaque_render_list.sort_mat_geom();
- _render_list_forward(&opaque_render_list, light_transform, light_transform_inverse, cm, flip_facing, false);
-
- material_shader.set_conditional(MaterialShaderGLES2::USE_DUAL_PARABOLOID, false);
-
- //if (!use_rgba_shadowmaps)
-
- if (shadow_filter == SHADOW_FILTER_ESM) {
-
- copy_shader.set_conditional(CopyShaderGLES2::USE_RGBA_DEPTH, use_rgba_shadowmaps);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HIGHP_SOURCE, !use_rgba_shadowmaps);
-
- Vector2 psize(1.0 / sb->size, 1.0 / sb->size);
- float pscale = 1.0;
- int passes = shadow->base->vars[VS::LIGHT_PARAM_SHADOW_BLUR_PASSES];
- glDisable(GL_BLEND);
- glDisable(GL_CULL_FACE);
-#ifdef GLEW_ENABLED
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-#endif
-
- for (int i = 0; i < VS::ARRAY_MAX; i++) {
- glDisableVertexAttribArray(i);
- }
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- glDisable(GL_SCISSOR_TEST);
-
- if (!use_rgba_shadowmaps) {
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_ALWAYS);
- glDepthMask(true);
- } else {
- glDisable(GL_DEPTH_TEST);
- }
-
- for (int i = 0; i < passes; i++) {
-
- Vector2 src_sb_uv[4] = {
- (vp_rect.pos + Vector2(0, vp_rect.size.y)) / sb->size,
- (vp_rect.pos + vp_rect.size) / sb->size,
- (vp_rect.pos + Vector2(vp_rect.size.x, 0)) / sb->size,
- (vp_rect.pos) / sb->size
- };
- /*
- Vector2 src_uv[4]={
- Vector2( 0, 1),
- Vector2( 1, 1),
- Vector2( 1, 0),
- Vector2( 0, 0)
- };
-*/
- static const Vector2 dst_pos[4] = {
- Vector2(-1, 1),
- Vector2(1, 1),
- Vector2(1, -1),
- Vector2(-1, -1)
- };
-
- glBindFramebuffer(GL_FRAMEBUFFER, blur_shadow_buffer.fbo);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, sb->depth);
-#ifdef GLEW_ENABLED
-//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
-#endif
-
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_V_PASS, true);
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_H_PASS, false);
-
- copy_shader.bind();
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE, psize);
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SCALE, pscale);
- copy_shader.set_uniform(CopyShaderGLES2::BLUR_MAGNITUDE, 1);
- //copy_shader.set_uniform(CopyShaderGLES2::SOURCE,0);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
-
- _draw_gui_primitive(4, dst_pos, NULL, src_sb_uv);
-
- Vector2 src_bb_uv[4] = {
- (vp_rect.pos + Vector2(0, vp_rect.size.y)) / blur_shadow_buffer.size,
- (vp_rect.pos + vp_rect.size) / blur_shadow_buffer.size,
- (vp_rect.pos + Vector2(vp_rect.size.x, 0)) / blur_shadow_buffer.size,
- (vp_rect.pos) / blur_shadow_buffer.size,
- };
-
- glBindFramebuffer(GL_FRAMEBUFFER, sb->fbo);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, blur_shadow_buffer.depth);
-#ifdef GLEW_ENABLED
-
-//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
-#endif
-
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_V_PASS, false);
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_H_PASS, true);
- copy_shader.bind();
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE, psize);
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SCALE, pscale);
- copy_shader.set_uniform(CopyShaderGLES2::BLUR_MAGNITUDE, 1);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE), 0);
-
- _draw_gui_primitive(4, dst_pos, NULL, src_bb_uv);
- }
-
- glDepthFunc(GL_LEQUAL);
- copy_shader.set_conditional(CopyShaderGLES2::USE_RGBA_DEPTH, false);
- copy_shader.set_conditional(CopyShaderGLES2::USE_HIGHP_SOURCE, false);
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_V_PASS, false);
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_H_PASS, false);
- }
-
- DEBUG_TEST_ERROR("Drawing Shadow");
- shadow = NULL;
- glBindFramebuffer(GL_FRAMEBUFFER, current_rt ? current_rt->fbo : base_framebuffer);
- glColorMask(1, 1, 1, 1);
- //glDisable(GL_POLYGON_OFFSET_FILL);
-}
-
-void RasterizerGLES2::_debug_draw_shadow(GLuint tex, const Rect2 &p_rect) {
-
- Transform2D modelview;
- modelview.translate(p_rect.pos.x, p_rect.pos.y);
- canvas_shader.set_uniform(CanvasShaderGLES2::MODELVIEW_MATRIX, modelview);
- glBindTexture(GL_TEXTURE_2D, tex);
-
- Vector3 coords[4] = {
- Vector3(p_rect.pos.x, p_rect.pos.y, 0),
- Vector3(p_rect.pos.x + p_rect.size.width,
- p_rect.pos.y, 0),
- Vector3(p_rect.pos.x + p_rect.size.width,
- p_rect.pos.y + p_rect.size.height, 0),
- Vector3(p_rect.pos.x,
- p_rect.pos.y + p_rect.size.height, 0)
- };
-
- Vector3 texcoords[4] = {
- Vector3(0.0f, 0.0f, 0),
- Vector3(1.0f, 0.0f, 0),
- Vector3(1.0f, 1.0f, 0),
- Vector3(0.0f, 1.0f, 0),
- };
-
- _draw_primitive(4, coords, 0, 0, texcoords);
- //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
-}
-
-void RasterizerGLES2::_debug_draw_shadows_type(Vector<ShadowBuffer> &p_shadows, Point2 &ofs) {
-
- Size2 debug_size(128, 128);
- //Size2 debug_size(512,512);
-
- int useblur = shadow_filter == SHADOW_FILTER_ESM ? 1 : 0;
- for (int i = 0; i < p_shadows.size() + useblur; i++) {
-
- ShadowBuffer *sb = i == p_shadows.size() ? &blur_shadow_buffer : &p_shadows[i];
-
- if (!sb->owner && i != p_shadows.size())
- continue;
-
- _debug_draw_shadow(sb->depth, Rect2(ofs, debug_size));
- ofs.x += debug_size.x;
- if ((ofs.x + debug_size.x) > viewport.width) {
-
- ofs.x = 0;
- ofs.y += debug_size.y;
- }
- }
-}
-
-void RasterizerGLES2::_debug_luminances() {
-
- canvas_shader.set_conditional(CanvasShaderGLES2::DEBUG_ENCODED_32, !use_fp16_fb);
- canvas_begin();
- glDisable(GL_BLEND);
- canvas_shader.bind();
-
- Size2 debug_size(128, 128);
- Size2 ofs;
-
- for (int i = 0; i <= framebuffer.luminance.size(); i++) {
-
- if (i == framebuffer.luminance.size()) {
- if (!current_vd)
- break;
- _debug_draw_shadow(current_vd->lum_color, Rect2(ofs, debug_size));
- } else {
- _debug_draw_shadow(framebuffer.luminance[i].color, Rect2(ofs, debug_size));
- }
- ofs.x += debug_size.x / 2;
- if ((ofs.x + debug_size.x) > viewport.width) {
-
- ofs.x = 0;
- ofs.y += debug_size.y;
- }
- }
-
- canvas_shader.set_conditional(CanvasShaderGLES2::DEBUG_ENCODED_32, false);
-}
-
-void RasterizerGLES2::_debug_samplers() {
- canvas_shader.set_conditional(CanvasShaderGLES2::DEBUG_ENCODED_32, false);
- canvas_begin();
- glDisable(GL_BLEND);
- _set_color_attrib(Color(1, 1, 1, 1));
- canvas_shader.bind();
-
- List<RID> samplers;
- sampled_light_owner.get_owned_list(&samplers);
-
- Size2 debug_size(128, 128);
- Size2 ofs;
-
- for (List<RID>::Element *E = samplers.front(); E; E = E->next()) {
-
- SampledLight *sl = sampled_light_owner.get(E->get());
-
- _debug_draw_shadow(sl->texture, Rect2(ofs, debug_size));
-
- ofs.x += debug_size.x / 2;
- if ((ofs.x + debug_size.x) > viewport.width) {
-
- ofs.x = 0;
- ofs.y += debug_size.y;
- }
- }
-}
-void RasterizerGLES2::_debug_shadows() {
-
- canvas_begin();
- glDisable(GL_BLEND);
- Size2 ofs;
-
- /*
- for(int i=0;i<16;i++) {
- glActiveTexture(GL_TEXTURE0+i);
- //glDisable(GL_TEXTURE_2D);
- }
- glActiveTexture(GL_TEXTURE0);
- //glEnable(GL_TEXTURE_2D);
- */
-
- _debug_draw_shadows_type(near_shadow_buffers, ofs);
- //_debug_draw_shadows_type(far_shadow_buffers,ofs);
-}
-
-void RasterizerGLES2::end_frame() {
-
- //print_line("VTX: "+itos(_rinfo.vertex_count)+" OBJ: "+itos(_rinfo.object_count)+" MAT: "+itos(_rinfo.mat_change_count)+" SHD: "+itos(_rinfo.shader_change_count)+" CI: "+itos(_rinfo.ci_draw_commands));
-
- //print_line("TOTAL VTX: "+itos(_rinfo.vertex_count));
- OS::get_singleton()->swap_buffers();
-}
-
-void RasterizerGLES2::flush_frame() {
-
- glFlush();
-}
-
-/* CANVAS API */
-
-void RasterizerGLES2::begin_canvas_bg() {
-
- if (framebuffer.active) {
- using_canvas_bg = true;
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.fbo);
- glViewport(0, 0, viewport.width, viewport.height);
- } else {
- using_canvas_bg = false;
- }
-}
-
-void RasterizerGLES2::canvas_begin() {
-
- if (using_canvas_bg) {
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.fbo);
- glColorMask(1, 1, 1, 0); //don't touch alpha
- }
-
- glDisable(GL_CULL_FACE);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_SCISSOR_TEST);
-#ifdef GLEW_ENABLED
- glDisable(GL_POINT_SPRITE);
- glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
-#endif
- glEnable(GL_BLEND);
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
- //glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
- glLineWidth(1.0);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- for (int i = 0; i < VS::ARRAY_MAX; i++) {
- glDisableVertexAttribArray(i);
- }
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, white_tex);
- canvas_tex = RID();
- //material_shader.unbind();
- canvas_shader.unbind();
- canvas_shader.set_custom_shader(0);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_MODULATE, false);
- canvas_shader.bind();
- canvas_shader.set_uniform(CanvasShaderGLES2::TEXTURE, 0);
- canvas_use_modulate = false;
- _set_color_attrib(Color(1, 1, 1));
- canvas_transform = Transform();
- canvas_transform.translate(-(viewport.width / 2.0f), -(viewport.height / 2.0f), 0.0f);
- float csy = 1.0;
- if (current_rt && current_rt_vflip)
- csy = -1.0;
-
- canvas_transform.scale(Vector3(2.0f / viewport.width, csy * -2.0f / viewport.height, 1.0f));
- canvas_shader.set_uniform(CanvasShaderGLES2::PROJECTION_MATRIX, canvas_transform);
- canvas_shader.set_uniform(CanvasShaderGLES2::MODELVIEW_MATRIX, Transform2D());
- canvas_shader.set_uniform(CanvasShaderGLES2::EXTRA_MATRIX, Transform2D());
-
- canvas_opacity = 1.0;
- canvas_blend_mode = VS::MATERIAL_BLEND_MODE_MIX;
- canvas_texscreen_used = false;
- uses_texpixel_size = false;
-
- canvas_last_material = NULL;
-}
-
-void RasterizerGLES2::canvas_disable_blending() {
-
- glDisable(GL_BLEND);
-}
-
-void RasterizerGLES2::canvas_set_opacity(float p_opacity) {
-
- canvas_opacity = p_opacity;
-}
-
-void RasterizerGLES2::canvas_set_blend_mode(VS::MaterialBlendMode p_mode) {
-
- if (p_mode == canvas_blend_mode)
- return;
- switch (p_mode) {
-
- case VS::MATERIAL_BLEND_MODE_MIX: {
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
-
- } break;
- case VS::MATERIAL_BLEND_MODE_ADD: {
-
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
-
- } break;
- case VS::MATERIAL_BLEND_MODE_SUB: {
-
- glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
- } break;
- case VS::MATERIAL_BLEND_MODE_MUL: {
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_DST_COLOR, GL_ZERO);
- } break;
- case VS::MATERIAL_BLEND_MODE_PREMULT_ALPHA: {
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } break;
- }
-
- canvas_blend_mode = p_mode;
-}
-
-void RasterizerGLES2::canvas_begin_rect(const Transform2D &p_transform) {
-
- canvas_shader.set_uniform(CanvasShaderGLES2::MODELVIEW_MATRIX, p_transform);
- canvas_shader.set_uniform(CanvasShaderGLES2::EXTRA_MATRIX, Transform2D());
-}
-
-void RasterizerGLES2::canvas_set_clip(bool p_clip, const Rect2 &p_rect) {
-
- if (p_clip) {
-
- glEnable(GL_SCISSOR_TEST);
- //glScissor(viewport.x+p_rect.pos.x,viewport.y+ (viewport.height-(p_rect.pos.y+p_rect.size.height)),
-
- int x = p_rect.pos.x;
- int y = window_size.height - (p_rect.pos.y + p_rect.size.y);
- int w = p_rect.size.x;
- int h = p_rect.size.y;
-
- glScissor(x, y, w, h);
-
- } else {
-
- glDisable(GL_SCISSOR_TEST);
- }
-}
-
-void RasterizerGLES2::canvas_end_rect() {
-
- //glPopMatrix();
-}
-
-RasterizerGLES2::Texture *RasterizerGLES2::_bind_canvas_texture(const RID &p_texture) {
-
- if (p_texture == canvas_tex && !rebind_texpixel_size) {
- if (canvas_tex.is_valid()) {
- Texture *texture = texture_owner.get(p_texture);
- return texture;
- }
- return NULL;
- }
-
- rebind_texpixel_size = false;
-
- if (p_texture.is_valid()) {
-
- Texture *texture = texture_owner.get(p_texture);
- if (!texture) {
- canvas_tex = RID();
- glBindTexture(GL_TEXTURE_2D, white_tex);
-
- return NULL;
- }
-
- if (texture->render_target)
- texture->render_target->last_pass = frame;
-
- glBindTexture(GL_TEXTURE_2D, texture->tex_id);
- canvas_tex = p_texture;
- if (uses_texpixel_size) {
- canvas_shader.set_uniform(CanvasShaderGLES2::TEXPIXEL_SIZE, Size2(1.0 / texture->width, 1.0 / texture->height));
- }
- return texture;
-
- } else {
-
- glBindTexture(GL_TEXTURE_2D, white_tex);
- canvas_tex = p_texture;
- }
-
- return NULL;
-}
-
-void RasterizerGLES2::canvas_draw_line(const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width, bool p_antialiased) {
-
- _bind_canvas_texture(RID());
- Color c = p_color;
- c.a *= canvas_opacity;
- _set_color_attrib(c);
-
- Vector3 verts[2] = {
- Vector3(p_from.x, p_from.y, 0),
- Vector3(p_to.x, p_to.y, 0)
- };
-
-#ifdef GLEW_ENABLED
- if (p_antialiased)
- glEnable(GL_LINE_SMOOTH);
-#endif
- glLineWidth(p_width);
- _draw_primitive(2, verts, 0, 0, 0);
-
-#ifdef GLEW_ENABLED
- if (p_antialiased)
- glDisable(GL_LINE_SMOOTH);
-#endif
-
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::_draw_gui_primitive(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs) {
-
- static const GLenum prim[5] = { GL_POINTS, GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_FAN };
-
-//#define GLES_USE_PRIMITIVE_BUFFER
-
-#ifndef GLES_NO_CLIENT_ARRAYS
-
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 2, GL_FLOAT, false, sizeof(Vector2), p_vertices);
-
- if (p_colors) {
-
- glEnableVertexAttribArray(VS::ARRAY_COLOR);
- glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(Color), p_colors);
- } else {
- glDisableVertexAttribArray(VS::ARRAY_COLOR);
- }
-
- if (p_uvs) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
- glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(Vector2), p_uvs);
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV);
- }
-
- glDrawArrays(prim[p_points], 0, p_points);
-
-#else
-
- glBindBuffer(GL_ARRAY_BUFFER, gui_quad_buffer);
- float b[32];
- int ofs = 0;
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 2, GL_FLOAT, false, sizeof(float) * 2, ((float *)0) + ofs);
- for (int i = 0; i < p_points; i++) {
- b[ofs++] = p_vertices[i].x;
- b[ofs++] = p_vertices[i].y;
- }
-
- if (p_colors) {
-
- glEnableVertexAttribArray(VS::ARRAY_COLOR);
- glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(float) * 4, ((float *)0) + ofs);
- for (int i = 0; i < p_points; i++) {
- b[ofs++] = p_colors[i].r;
- b[ofs++] = p_colors[i].g;
- b[ofs++] = p_colors[i].b;
- b[ofs++] = p_colors[i].a;
- }
-
- } else {
- glDisableVertexAttribArray(VS::ARRAY_COLOR);
- }
-
- if (p_uvs) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
- glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(float) * 2, ((float *)0) + ofs);
- for (int i = 0; i < p_points; i++) {
- b[ofs++] = p_uvs[i].x;
- b[ofs++] = p_uvs[i].y;
- }
-
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV);
- }
-
- glBufferSubData(GL_ARRAY_BUFFER, 0, ofs * 4, &b[0]);
- glDrawArrays(prim[p_points], 0, p_points);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
-
-#endif
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::_draw_gui_primitive2(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs, const Vector2 *p_uvs2) {
-
- static const GLenum prim[5] = { GL_POINTS, GL_POINTS, GL_LINES, GL_TRIANGLES, GL_TRIANGLE_FAN };
-
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 2, GL_FLOAT, false, sizeof(Vector2), p_vertices);
- if (p_colors) {
-
- glEnableVertexAttribArray(VS::ARRAY_COLOR);
- glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(Color), p_colors);
- } else {
- glDisableVertexAttribArray(VS::ARRAY_COLOR);
- }
-
- if (p_uvs) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
- glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(Vector2), p_uvs);
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV);
- }
-
- if (p_uvs2) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV2);
- glVertexAttribPointer(VS::ARRAY_TEX_UV2, 2, GL_FLOAT, false, sizeof(Vector2), p_uvs2);
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV2);
- }
-
- glDrawArrays(prim[p_points], 0, p_points);
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::_draw_textured_quad(const Rect2 &p_rect, const Rect2 &p_src_region, const Size2 &p_tex_size, bool p_h_flip, bool p_v_flip, bool p_transpose) {
-
- Vector2 texcoords[4] = {
- Vector2(p_src_region.pos.x / p_tex_size.width,
- p_src_region.pos.y / p_tex_size.height),
-
- Vector2((p_src_region.pos.x + p_src_region.size.width) / p_tex_size.width,
- p_src_region.pos.y / p_tex_size.height),
-
- Vector2((p_src_region.pos.x + p_src_region.size.width) / p_tex_size.width,
- (p_src_region.pos.y + p_src_region.size.height) / p_tex_size.height),
-
- Vector2(p_src_region.pos.x / p_tex_size.width,
- (p_src_region.pos.y + p_src_region.size.height) / p_tex_size.height)
- };
-
- if (p_transpose) {
- SWAP(texcoords[1], texcoords[3]);
- }
- if (p_h_flip) {
- SWAP(texcoords[0], texcoords[1]);
- SWAP(texcoords[2], texcoords[3]);
- }
- if (p_v_flip) {
- SWAP(texcoords[1], texcoords[2]);
- SWAP(texcoords[0], texcoords[3]);
- }
-
- Vector2 coords[4] = {
- Vector2(p_rect.pos.x, p_rect.pos.y),
- Vector2(p_rect.pos.x + p_rect.size.width, p_rect.pos.y),
- Vector2(p_rect.pos.x + p_rect.size.width, p_rect.pos.y + p_rect.size.height),
- Vector2(p_rect.pos.x, p_rect.pos.y + p_rect.size.height)
- };
-
- _draw_gui_primitive(4, coords, 0, texcoords);
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::_draw_quad(const Rect2 &p_rect) {
-
- Vector2 coords[4] = {
- Vector2(p_rect.pos.x, p_rect.pos.y),
- Vector2(p_rect.pos.x + p_rect.size.width, p_rect.pos.y),
- Vector2(p_rect.pos.x + p_rect.size.width, p_rect.pos.y + p_rect.size.height),
- Vector2(p_rect.pos.x, p_rect.pos.y + p_rect.size.height)
- };
-
- _draw_gui_primitive(4, coords, 0, 0);
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::canvas_draw_rect(const Rect2 &p_rect, int p_flags, const Rect2 &p_source, RID p_texture, const Color &p_modulate) {
-
- Color m = p_modulate;
- m.a *= canvas_opacity;
- _set_color_attrib(m);
- Texture *texture = _bind_canvas_texture(p_texture);
-
- if (texture) {
-
- bool untile = false;
-
- if (p_flags & CANVAS_RECT_TILE && !(texture->flags & VS::TEXTURE_FLAG_REPEAT)) {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- untile = true;
- }
-
- if (!(p_flags & CANVAS_RECT_REGION)) {
-
- Rect2 region = Rect2(0, 0, texture->width, texture->height);
- _draw_textured_quad(p_rect, region, region.size, p_flags & CANVAS_RECT_FLIP_H, p_flags & CANVAS_RECT_FLIP_V, p_flags & CANVAS_RECT_TRANSPOSE);
-
- } else {
-
- _draw_textured_quad(p_rect, p_source, Size2(texture->width, texture->height), p_flags & CANVAS_RECT_FLIP_H, p_flags & CANVAS_RECT_FLIP_V, p_flags & CANVAS_RECT_TRANSPOSE);
- }
-
- if (untile) {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- }
-
- } else {
-
- //glDisable(GL_TEXTURE_2D);
- _draw_quad(p_rect);
- //print_line("rect: "+p_rect);
- }
-
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::canvas_draw_style_box(const Rect2 &p_rect, const Rect2 &p_src_region, RID p_texture, const float *p_margin, bool p_draw_center, const Color &p_modulate) {
-
- Color m = p_modulate;
- m.a *= canvas_opacity;
- _set_color_attrib(m);
-
- Texture *texture = _bind_canvas_texture(p_texture);
- ERR_FAIL_COND(!texture);
-
- Rect2 region = p_src_region;
- if (region.size.width <= 0)
- region.size.width = texture->width;
- if (region.size.height <= 0)
- region.size.height = texture->height;
- /* CORNERS */
- _draw_textured_quad( // top left
- Rect2(p_rect.pos, Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_TOP])),
- Rect2(region.pos, Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_TOP])),
- Size2(texture->width, texture->height));
-
- _draw_textured_quad( // top right
- Rect2(Point2(p_rect.pos.x + p_rect.size.width - p_margin[MARGIN_RIGHT], p_rect.pos.y), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_TOP])),
- Rect2(Point2(region.pos.x + region.size.width - p_margin[MARGIN_RIGHT], region.pos.y), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_TOP])),
- Size2(texture->width, texture->height));
-
- _draw_textured_quad( // bottom left
- Rect2(Point2(p_rect.pos.x, p_rect.pos.y + p_rect.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_BOTTOM])),
- Rect2(Point2(region.pos.x, region.pos.y + region.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_LEFT], p_margin[MARGIN_BOTTOM])),
- Size2(texture->width, texture->height));
-
- _draw_textured_quad( // bottom right
- Rect2(Point2(p_rect.pos.x + p_rect.size.width - p_margin[MARGIN_RIGHT], p_rect.pos.y + p_rect.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_BOTTOM])),
- Rect2(Point2(region.pos.x + region.size.width - p_margin[MARGIN_RIGHT], region.pos.y + region.size.height - p_margin[MARGIN_BOTTOM]), Size2(p_margin[MARGIN_RIGHT], p_margin[MARGIN_BOTTOM])),
- Size2(texture->width, texture->height));
-
- Rect2 rect_center(p_rect.pos + Point2(p_margin[MARGIN_LEFT], p_margin[MARGIN_TOP]), Size2(p_rect.size.width - p_margin[MARGIN_LEFT] - p_margin[MARGIN_RIGHT], p_rect.size.height - p_margin[MARGIN_TOP] - p_margin[MARGIN_BOTTOM]));
-
- Rect2 src_center(Point2(region.pos.x + p_margin[MARGIN_LEFT], region.pos.y + p_margin[MARGIN_TOP]), Size2(region.size.width - p_margin[MARGIN_LEFT] - p_margin[MARGIN_RIGHT], region.size.height - p_margin[MARGIN_TOP] - p_margin[MARGIN_BOTTOM]));
-
- _draw_textured_quad( // top
- Rect2(Point2(rect_center.pos.x, p_rect.pos.y), Size2(rect_center.size.width, p_margin[MARGIN_TOP])),
- Rect2(Point2(src_center.pos.x, region.pos.y), Size2(src_center.size.width, p_margin[MARGIN_TOP])),
- Size2(texture->width, texture->height));
-
- _draw_textured_quad( // bottom
- Rect2(Point2(rect_center.pos.x, rect_center.pos.y + rect_center.size.height), Size2(rect_center.size.width, p_margin[MARGIN_BOTTOM])),
- Rect2(Point2(src_center.pos.x, src_center.pos.y + src_center.size.height), Size2(src_center.size.width, p_margin[MARGIN_BOTTOM])),
- Size2(texture->width, texture->height));
-
- _draw_textured_quad( // left
- Rect2(Point2(p_rect.pos.x, rect_center.pos.y), Size2(p_margin[MARGIN_LEFT], rect_center.size.height)),
- Rect2(Point2(region.pos.x, region.pos.y + p_margin[MARGIN_TOP]), Size2(p_margin[MARGIN_LEFT], src_center.size.height)),
- Size2(texture->width, texture->height));
-
- _draw_textured_quad( // right
- Rect2(Point2(rect_center.pos.x + rect_center.size.width, rect_center.pos.y), Size2(p_margin[MARGIN_RIGHT], rect_center.size.height)),
- Rect2(Point2(src_center.pos.x + src_center.size.width, region.pos.y + p_margin[MARGIN_TOP]), Size2(p_margin[MARGIN_RIGHT], src_center.size.height)),
- Size2(texture->width, texture->height));
-
- if (p_draw_center) {
-
- _draw_textured_quad(
- rect_center,
- src_center,
- Size2(texture->width, texture->height));
- }
-
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::canvas_draw_primitive(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width) {
-
- ERR_FAIL_COND(p_points.size() < 1);
- _set_color_attrib(Color(1, 1, 1, canvas_opacity));
- _bind_canvas_texture(p_texture);
- _draw_gui_primitive(p_points.size(), p_points.ptr(), p_colors.ptr(), p_uvs.ptr());
-
- _rinfo.ci_draw_commands++;
-}
-
-void RasterizerGLES2::canvas_draw_polygon(int p_vertex_count, const int *p_indices, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, const RID &p_texture, bool p_singlecolor) {
-
- bool do_colors = false;
- Color m;
- if (p_singlecolor) {
- m = *p_colors;
- m.a *= canvas_opacity;
- _set_color_attrib(m);
- } else if (!p_colors) {
- m = Color(1, 1, 1, canvas_opacity);
- _set_color_attrib(m);
- } else
- do_colors = true;
-
- Texture *texture = _bind_canvas_texture(p_texture);
-
-#ifndef GLES_NO_CLIENT_ARRAYS
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 2, GL_FLOAT, false, sizeof(Vector2), p_vertices);
- if (do_colors) {
-
- glEnableVertexAttribArray(VS::ARRAY_COLOR);
- glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(Color), p_colors);
- } else {
- glDisableVertexAttribArray(VS::ARRAY_COLOR);
- }
-
- if (texture && p_uvs) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
- glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(Vector2), p_uvs);
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV);
- }
-
- if (p_indices) {
-#ifdef GLEW_ENABLED
- glDrawElements(GL_TRIANGLES, p_vertex_count, GL_UNSIGNED_INT, p_indices);
-#else
- static const int _max_draw_poly_indices = 16 * 1024; // change this size if needed!!!
- ERR_FAIL_COND(p_vertex_count > _max_draw_poly_indices);
- static uint16_t _draw_poly_indices[_max_draw_poly_indices];
- for (int i = 0; i < p_vertex_count; i++) {
- _draw_poly_indices[i] = p_indices[i];
- };
- glDrawElements(GL_TRIANGLES, p_vertex_count, GL_UNSIGNED_SHORT, _draw_poly_indices);
-#endif
- } else {
- glDrawArrays(GL_TRIANGLES, 0, p_vertex_count);
- }
-
-#else //WebGL specific impl.
- glBindBuffer(GL_ARRAY_BUFFER, gui_quad_buffer);
- float *b = GlobalVertexBuffer;
- int ofs = 0;
- if (p_vertex_count > MAX_POLYGON_VERTICES) {
- print_line("Too many vertices to render");
- return;
- }
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 2, GL_FLOAT, false, sizeof(float) * 2, ((float *)0) + ofs);
- for (int i = 0; i < p_vertex_count; i++) {
- b[ofs++] = p_vertices[i].x;
- b[ofs++] = p_vertices[i].y;
- }
-
- if (p_colors && do_colors) {
-
- glEnableVertexAttribArray(VS::ARRAY_COLOR);
- glVertexAttribPointer(VS::ARRAY_COLOR, 4, GL_FLOAT, false, sizeof(float) * 4, ((float *)0) + ofs);
- for (int i = 0; i < p_vertex_count; i++) {
- b[ofs++] = p_colors[i].r;
- b[ofs++] = p_colors[i].g;
- b[ofs++] = p_colors[i].b;
- b[ofs++] = p_colors[i].a;
- }
-
- } else {
- glDisableVertexAttribArray(VS::ARRAY_COLOR);
- }
-
- if (p_uvs) {
-
- glEnableVertexAttribArray(VS::ARRAY_TEX_UV);
- glVertexAttribPointer(VS::ARRAY_TEX_UV, 2, GL_FLOAT, false, sizeof(float) * 2, ((float *)0) + ofs);
- for (int i = 0; i < p_vertex_count; i++) {
- b[ofs++] = p_uvs[i].x;
- b[ofs++] = p_uvs[i].y;
- }
-
- } else {
- glDisableVertexAttribArray(VS::ARRAY_TEX_UV);
- }
-
- glBufferSubData(GL_ARRAY_BUFFER, 0, ofs * 4, &b[0]);
-
- //bind the indices buffer.
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indices_buffer);
-
- static const int _max_draw_poly_indices = 16 * 1024; // change this size if needed!!!
- ERR_FAIL_COND(p_vertex_count > _max_draw_poly_indices);
- static uint16_t _draw_poly_indices[_max_draw_poly_indices];
- for (int i = 0; i < p_vertex_count; i++) {
- _draw_poly_indices[i] = p_indices[i];
- //OS::get_singleton()->print("ind: %d ", p_indices[i]);
- };
-
- //copy the data to GPU.
- glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, p_vertex_count * sizeof(uint16_t), &_draw_poly_indices[0]);
-
- //draw the triangles.
- glDrawElements(GL_TRIANGLES, p_vertex_count, GL_UNSIGNED_SHORT, 0);
-
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
-#endif
-
- _rinfo.ci_draw_commands++;
-};
-
-void RasterizerGLES2::canvas_set_transform(const Transform2D &p_transform) {
-
- canvas_shader.set_uniform(CanvasShaderGLES2::EXTRA_MATRIX, p_transform);
-
- //canvas_transform = Variant(p_transform);
-}
-
-RID RasterizerGLES2::canvas_light_occluder_create() {
-
- CanvasOccluder *co = memnew(CanvasOccluder);
- co->index_id = 0;
- co->vertex_id = 0;
- co->len = 0;
-
- return canvas_occluder_owner.make_rid(co);
-}
-
-void RasterizerGLES2::canvas_light_occluder_set_polylines(RID p_occluder, const PoolVector<Vector2> &p_lines) {
-
- CanvasOccluder *co = canvas_occluder_owner.get(p_occluder);
- ERR_FAIL_COND(!co);
-
- co->lines = p_lines;
-
- if (p_lines.size() != co->len) {
-
- if (co->index_id)
- glDeleteBuffers(1, &co->index_id);
- if (co->vertex_id)
- glDeleteBuffers(1, &co->vertex_id);
-
- co->index_id = 0;
- co->vertex_id = 0;
- co->len = 0;
- }
-
- if (p_lines.size()) {
-
- PoolVector<float> geometry;
- PoolVector<uint16_t> indices;
- int lc = p_lines.size();
-
- geometry.resize(lc * 6);
- indices.resize(lc * 3);
-
- PoolVector<float>::Write vw = geometry.write();
- PoolVector<uint16_t>::Write iw = indices.write();
-
- PoolVector<Vector2>::Read lr = p_lines.read();
-
- const int POLY_HEIGHT = 16384;
-
- for (int i = 0; i < lc / 2; i++) {
-
- vw[i * 12 + 0] = lr[i * 2 + 0].x;
- vw[i * 12 + 1] = lr[i * 2 + 0].y;
- vw[i * 12 + 2] = POLY_HEIGHT;
-
- vw[i * 12 + 3] = lr[i * 2 + 1].x;
- vw[i * 12 + 4] = lr[i * 2 + 1].y;
- vw[i * 12 + 5] = POLY_HEIGHT;
-
- vw[i * 12 + 6] = lr[i * 2 + 1].x;
- vw[i * 12 + 7] = lr[i * 2 + 1].y;
- vw[i * 12 + 8] = -POLY_HEIGHT;
-
- vw[i * 12 + 9] = lr[i * 2 + 0].x;
- vw[i * 12 + 10] = lr[i * 2 + 0].y;
- vw[i * 12 + 11] = -POLY_HEIGHT;
-
- iw[i * 6 + 0] = i * 4 + 0;
- iw[i * 6 + 1] = i * 4 + 1;
- iw[i * 6 + 2] = i * 4 + 2;
-
- iw[i * 6 + 3] = i * 4 + 2;
- iw[i * 6 + 4] = i * 4 + 3;
- iw[i * 6 + 5] = i * 4 + 0;
- }
-
- //if same buffer len is being set, just use BufferSubData to avoid a pipeline flush
-
- if (!co->vertex_id) {
- glGenBuffers(1, &co->vertex_id);
- glBindBuffer(GL_ARRAY_BUFFER, co->vertex_id);
- glBufferData(GL_ARRAY_BUFFER, lc * 6 * sizeof(real_t), vw.ptr(), GL_STATIC_DRAW);
- } else {
-
- glBindBuffer(GL_ARRAY_BUFFER, co->vertex_id);
- glBufferSubData(GL_ARRAY_BUFFER, 0, lc * 6 * sizeof(real_t), vw.ptr());
- }
-
- glBindBuffer(GL_ARRAY_BUFFER, 0); //unbind
-
- if (!co->index_id) {
-
- glGenBuffers(1, &co->index_id);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, co->index_id);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, lc * 3 * sizeof(uint16_t), iw.ptr(), GL_STATIC_DRAW);
- } else {
-
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, co->index_id);
- glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, lc * 3 * sizeof(uint16_t), iw.ptr());
- }
-
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); //unbind
-
- co->len = lc;
- }
-}
-
-RID RasterizerGLES2::canvas_light_shadow_buffer_create(int p_width) {
-
- CanvasLightShadow *cls = memnew(CanvasLightShadow);
- if (p_width > max_texture_size)
- p_width = max_texture_size;
-
- cls->size = p_width;
- glActiveTexture(GL_TEXTURE0);
-
- glGenFramebuffers(1, &cls->fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, cls->fbo);
-
- // Create a render buffer
- glGenRenderbuffers(1, &cls->rbo);
- glBindRenderbuffer(GL_RENDERBUFFER, cls->rbo);
-
- // Create a texture for storing the depth
- glGenTextures(1, &cls->depth);
- glBindTexture(GL_TEXTURE_2D, cls->depth);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- // Remove artifact on the edges of the shadowmap
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- cls->height = 16;
-
- //print_line("ERROR? "+itos(glGetError()));
- if (read_depth_supported) {
-
- // We'll use a depth texture to store the depths in the shadow map
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, cls->size, cls->height, 0,
- GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
-
-#ifdef GLEW_ENABLED
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-#endif
-
- // Attach the depth texture to FBO depth attachment point
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
- GL_TEXTURE_2D, cls->depth, 0);
-
-#ifdef GLEW_ENABLED
- glDrawBuffer(GL_NONE);
-#endif
-
- } else {
- // We'll use a RGBA texture into which we pack the depth info
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, cls->size, cls->height, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-
- // Attach the RGBA texture to FBO color attachment point
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, cls->depth, 0);
- cls->rgba = cls->depth;
-
- // Allocate 16-bit depth buffer
- glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, cls->size, cls->height);
-
- // Attach the render buffer as depth buffer - will be ignored
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
- GL_RENDERBUFFER, cls->rbo);
- }
-
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-//printf("errnum: %x\n",status);
-#ifdef GLEW_ENABLED
- if (read_depth_supported) {
- //glDrawBuffer(GL_BACK);
- }
-#endif
- glBindFramebuffer(GL_FRAMEBUFFER, base_framebuffer);
- DEBUG_TEST_ERROR("2D Shadow Buffer Init");
- ERR_FAIL_COND_V(status != GL_FRAMEBUFFER_COMPLETE, RID());
-
-#ifdef GLEW_ENABLED
- if (read_depth_supported) {
- //glDrawBuffer(GL_BACK);
- }
-#endif
-
- return canvas_light_shadow_owner.make_rid(cls);
-}
-
-void RasterizerGLES2::canvas_light_shadow_buffer_update(RID p_buffer, const Transform2D &p_light_xform, int p_light_mask, float p_near, float p_far, CanvasLightOccluderInstance *p_occluders, CameraMatrix *p_xform_cache) {
-
- CanvasLightShadow *cls = canvas_light_shadow_owner.get(p_buffer);
- ERR_FAIL_COND(!cls);
-
- glDisable(GL_BLEND);
- glDisable(GL_SCISSOR_TEST);
- glDisable(GL_DITHER);
- glDisable(GL_CULL_FACE);
- glDepthFunc(GL_LEQUAL);
- glEnable(GL_DEPTH_TEST);
- glDepthMask(true);
-
- glBindFramebuffer(GL_FRAMEBUFFER, cls->fbo);
-
- if (!use_rgba_shadowmaps)
- glColorMask(0, 0, 0, 0);
-
- glEnableVertexAttribArray(VS::ARRAY_VERTEX);
- canvas_shadow_shader.bind();
-
- glViewport(0, 0, cls->size, cls->height);
- _glClearDepth(1.0f);
- glClearColor(1, 1, 1, 1);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- VS::CanvasOccluderPolygonCullMode cull = VS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED;
-
- for (int i = 0; i < 4; i++) {
-
- //make sure it remains orthogonal, makes easy to read angle later
-
- Transform light;
- light.origin[0] = p_light_xform[2][0];
- light.origin[1] = p_light_xform[2][1];
- light.basis[0][0] = p_light_xform[0][0];
- light.basis[0][1] = p_light_xform[1][0];
- light.basis[1][0] = p_light_xform[0][1];
- light.basis[1][1] = p_light_xform[1][1];
-
- //light.basis.scale(Vector3(to_light.elements[0].length(),to_light.elements[1].length(),1));
-
- / //p_near=1;
- CameraMatrix projection;
- {
- real_t fov = 90;
- real_t near = p_near;
- real_t far = p_far;
- real_t aspect = 1.0;
-
- real_t ymax = near * Math::tan(Math::deg2rad(fov * 0.5));
- real_t ymin = -ymax;
- real_t xmin = ymin * aspect;
- real_t xmax = ymax * aspect;
-
- projection.set_frustum(xmin, xmax, ymin, ymax, near, far);
- }
-
- Vector3 cam_target = Matrix3(Vector3(0, 0, Math_PI * 2 * (i / 4.0))).xform(Vector3(0, 1, 0));
- projection = projection * CameraMatrix(Transform().looking_at(cam_target, Vector3(0, 0, -1)).affine_inverse());
-
- canvas_shadow_shader.set_uniform(CanvasShadowShaderGLES2::PROJECTION_MATRIX, projection);
- canvas_shadow_shader.set_uniform(CanvasShadowShaderGLES2::LIGHT_MATRIX, light);
-
- if (i == 0)
- *p_xform_cache = projection;
-
- glViewport(0, (cls->height / 4) * i, cls->size, cls->height / 4);
-
- CanvasLightOccluderInstance *instance = p_occluders;
-
- while (instance) {
-
- CanvasOccluder *cc = canvas_occluder_owner.get(instance->polygon_buffer);
- if (!cc || cc->len == 0 || !(p_light_mask & instance->light_mask)) {
-
- instance = instance->next;
- continue;
- }
-
- canvas_shadow_shader.set_uniform(CanvasShadowShaderGLES2::WORLD_MATRIX, instance->xform_cache);
- if (cull != instance->cull_cache) {
-
- cull = instance->cull_cache;
- switch (cull) {
- case VS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED: {
-
- glDisable(GL_CULL_FACE);
-
- } break;
- case VS::CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE: {
-
- glEnable(GL_CULL_FACE);
- glCullFace(GL_FRONT);
- } break;
- case VS::CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE: {
-
- glEnable(GL_CULL_FACE);
- glCullFace(GL_BACK);
-
- } break;
- }
- }
- /*
- if (i==0) {
- for(int i=0;i<cc->lines.size();i++) {
- Vector2 p = instance->xform_cache.xform(cc->lines.get(i));
- Plane pp(Vector3(p.x,p.y,0),1);
- pp.normal = light.xform(pp.normal);
- pp = projection.xform4(pp);
- print_line(itos(i)+": "+pp.normal/pp.d);
- //pp=light_mat.xform4(pp);
- //print_line(itos(i)+": "+pp.normal/pp.d);
- }
- }
-*/
- glBindBuffer(GL_ARRAY_BUFFER, cc->vertex_id);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cc->index_id);
- glVertexAttribPointer(VS::ARRAY_VERTEX, 3, GL_FLOAT, false, 0, 0);
- glDrawElements(GL_TRIANGLES, cc->len * 3, GL_UNSIGNED_SHORT, 0);
-
- instance = instance->next;
- }
- }
-
- glDisableVertexAttribArray(VS::ARRAY_VERTEX);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
-
- if (shadow_filter == SHADOW_FILTER_ESM) {
-//blur the buffer
-#if 0
- //this is ignord, it did not make any difference..
- if (read_depth_supported) {
- glDepthFunc(GL_ALWAYS);
- } else {
- glDisable(GL_DEPTH_TEST);
- glDepthMask(false);
- }
- glDisable(GL_CULL_FACE);
- glViewport(0, 0, cls->size,cls->height);
-
- int passes=1;
- CanvasLightShadow *blur = canvas_light_shadow_owner.get(canvas_shadow_blur);
-
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_H_PASS,true);
- copy_shader.bind();
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SCALE,1);
- copy_shader.set_uniform(CopyShaderGLES2::BLUR_MAGNITUDE,1);
- glUniform1i(copy_shader.get_uniform_location(CopyShaderGLES2::SOURCE),0);
-
- for(int i=0;i<passes;i++) {
-
- glBindFramebuffer(GL_FRAMEBUFFER, blur->fbo);
- glActiveTexture(GL_TEXTURE0);
-
- if (read_depth_supported)
- glBindTexture(GL_TEXTURE_2D,cls->depth);
- else
- glBindTexture(GL_TEXTURE_2D,cls->rgba);
-
-
- {
- Vector2 src_sb_uv[4]={
- Vector2( 0, 1),
- Vector2( 1, 1),
- Vector2( 1, 0),
- Vector2( 0, 0)
- };
- static const Vector2 dst_pos[4]={
- Vector2(-1, 1),
- Vector2( 1, 1),
- Vector2( 1,-1),
- Vector2(-1,-1)
- };
-
-
-
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE,Vector2(1.0,1.0)/cls->size);
- _draw_gui_primitive(4,dst_pos,NULL,src_sb_uv);
- }
-
- glActiveTexture(GL_TEXTURE0);
- if (read_depth_supported)
- glBindTexture(GL_TEXTURE_2D,blur->depth);
- else
- glBindTexture(GL_TEXTURE_2D,blur->rgba);
-
- glBindFramebuffer(GL_FRAMEBUFFER, cls->fbo);
-
- {
- float hlimit = float(cls->size) / blur->size;
- //hlimit*=2.0;
- Vector2 src_sb_uv[4]={
- Vector2( 0, 1),
- Vector2( hlimit, 1),
- Vector2( hlimit, 0),
- Vector2( 0, 0)
- };
- static const Vector2 dst_pos[4]={
- Vector2(-1, 1),
- Vector2( 1, 1),
- Vector2( 1,-1),
- Vector2(-1,-1)
- };
-
-
- copy_shader.set_uniform(CopyShaderGLES2::PIXEL_SIZE,Vector2(1.0,1.0)/blur->size);
- _draw_gui_primitive(4,dst_pos,NULL,src_sb_uv);
- }
-
- }
- copy_shader.set_conditional(CopyShaderGLES2::SHADOW_BLUR_H_PASS,false);
- glDepthFunc(GL_LEQUAL);
-#endif
- }
-
- glBindFramebuffer(GL_FRAMEBUFFER, current_rt ? current_rt->fbo : base_framebuffer);
- glColorMask(1, 1, 1, 1);
-}
-
-void RasterizerGLES2::canvas_debug_viewport_shadows(CanvasLight *p_lights_with_shadow) {
-
- CanvasLight *light = p_lights_with_shadow;
-
- canvas_begin(); //reset
-
- int h = 10;
- int w = viewport.width;
- int ofs = h;
-
- //print_line(" debug lights ");
- while (light) {
-
- //print_line("debug light");
- if (light->shadow_buffer.is_valid()) {
-
- //print_line("sb is valid");
- CanvasLightShadow *sb = canvas_light_shadow_owner.get(light->shadow_buffer);
- if (sb) {
- glActiveTexture(GL_TEXTURE0);
- if (read_depth_supported)
- glBindTexture(GL_TEXTURE_2D, sb->depth);
- else
- glBindTexture(GL_TEXTURE_2D, sb->rgba);
- _draw_textured_quad(Rect2(h, ofs, w - h * 2, h), Rect2(0, 0, sb->size, 10), Size2(sb->size, 10), false, false);
- ofs += h * 2;
- }
- }
-
- light = light->shadows_next_ptr;
- }
-}
-
-void RasterizerGLES2::_canvas_normal_set_flip(const Vector2 &p_flip) {
-
- if (p_flip == normal_flip)
- return;
- normal_flip = p_flip;
- canvas_shader.set_uniform(CanvasShaderGLES2::NORMAL_FLIP, normal_flip);
-}
-
-template <bool use_normalmap>
-void RasterizerGLES2::_canvas_item_render_commands(CanvasItem *p_item, CanvasItem *current_clip, bool &reclip) {
-
- int cc = p_item->commands.size();
- CanvasItem::Command **commands = p_item->commands.ptr();
-
- for (int i = 0; i < cc; i++) {
-
- CanvasItem::Command *c = commands[i];
-
- switch (c->type) {
- case CanvasItem::Command::TYPE_LINE: {
-
- CanvasItem::CommandLine *line = static_cast<CanvasItem::CommandLine *>(c);
- canvas_draw_line(line->from, line->to, line->color, line->width, line->antialiased);
- } break;
- case CanvasItem::Command::TYPE_RECT: {
-
- CanvasItem::CommandRect *rect = static_cast<CanvasItem::CommandRect *>(c);
-//canvas_draw_rect(rect->rect,rect->region,rect->source,rect->flags&CanvasItem::CommandRect::FLAG_TILE,rect->flags&CanvasItem::CommandRect::FLAG_FLIP_H,rect->flags&CanvasItem::CommandRect::FLAG_FLIP_V,rect->texture,rect->modulate);
-#if 0
- int flags=0;
-
- if (rect->flags&CanvasItem::CommandRect::FLAG_REGION) {
- flags|=Rasterizer::CANVAS_RECT_REGION;
- }
- if (rect->flags&CanvasItem::CommandRect::FLAG_TILE) {
- flags|=Rasterizer::CANVAS_RECT_TILE;
- }
- if (rect->flags&CanvasItem::CommandRect::FLAG_FLIP_H) {
-
- flags|=Rasterizer::CANVAS_RECT_FLIP_H;
- }
- if (rect->flags&CanvasItem::CommandRect::FLAG_FLIP_V) {
-
- flags|=Rasterizer::CANVAS_RECT_FLIP_V;
- }
-#else
-
- int flags = rect->flags;
-#endif
- if (use_normalmap)
- _canvas_normal_set_flip(Vector2((flags & CANVAS_RECT_FLIP_H) ? -1 : 1, (flags & CANVAS_RECT_FLIP_V) ? -1 : 1));
- canvas_draw_rect(rect->rect, flags, rect->source, rect->texture, rect->modulate);
-
- } break;
- case CanvasItem::Command::TYPE_STYLE: {
-
- CanvasItem::CommandStyle *style = static_cast<CanvasItem::CommandStyle *>(c);
- if (use_normalmap)
- _canvas_normal_set_flip(Vector2(1, 1));
- canvas_draw_style_box(style->rect, style->source, style->texture, style->margin, style->draw_center, style->color);
-
- } break;
- case CanvasItem::Command::TYPE_PRIMITIVE: {
-
- if (use_normalmap)
- _canvas_normal_set_flip(Vector2(1, 1));
- CanvasItem::CommandPrimitive *primitive = static_cast<CanvasItem::CommandPrimitive *>(c);
- canvas_draw_primitive(primitive->points, primitive->colors, primitive->uvs, primitive->texture, primitive->width);
- } break;
- case CanvasItem::Command::TYPE_POLYGON: {
-
- if (use_normalmap)
- _canvas_normal_set_flip(Vector2(1, 1));
- CanvasItem::CommandPolygon *polygon = static_cast<CanvasItem::CommandPolygon *>(c);
- canvas_draw_polygon(polygon->count, polygon->indices.ptr(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->texture, polygon->colors.size() == 1);
-
- } break;
-
- case CanvasItem::Command::TYPE_POLYGON_PTR: {
-
- if (use_normalmap)
- _canvas_normal_set_flip(Vector2(1, 1));
- CanvasItem::CommandPolygonPtr *polygon = static_cast<CanvasItem::CommandPolygonPtr *>(c);
- canvas_draw_polygon(polygon->count, polygon->indices, polygon->points, polygon->uvs, polygon->colors, polygon->texture, false);
- } break;
- case CanvasItem::Command::TYPE_CIRCLE: {
-
- CanvasItem::CommandCircle *circle = static_cast<CanvasItem::CommandCircle *>(c);
- static const int numpoints = 32;
- Vector2 points[numpoints + 1];
- points[numpoints] = circle->pos;
- int indices[numpoints * 3];
-
- for (int i = 0; i < numpoints; i++) {
-
- points[i] = circle->pos + Vector2(Math::sin(i * Math_PI * 2.0 / numpoints), Math::cos(i * Math_PI * 2.0 / numpoints)) * circle->radius;
- indices[i * 3 + 0] = i;
- indices[i * 3 + 1] = (i + 1) % numpoints;
- indices[i * 3 + 2] = numpoints;
- }
- canvas_draw_polygon(numpoints * 3, indices, points, NULL, &circle->color, RID(), true);
- //canvas_draw_circle(circle->indices.size(),circle->indices.ptr(),circle->points.ptr(),circle->uvs.ptr(),circle->colors.ptr(),circle->texture,circle->colors.size()==1);
- } break;
- case CanvasItem::Command::TYPE_TRANSFORM: {
-
- CanvasItem::CommandTransform *transform = static_cast<CanvasItem::CommandTransform *>(c);
- canvas_set_transform(transform->xform);
- } break;
- case CanvasItem::Command::TYPE_BLEND_MODE: {
-
- CanvasItem::CommandBlendMode *bm = static_cast<CanvasItem::CommandBlendMode *>(c);
- canvas_set_blend_mode(bm->blend_mode);
-
- } break;
- case CanvasItem::Command::TYPE_CLIP_IGNORE: {
-
- CanvasItem::CommandClipIgnore *ci = static_cast<CanvasItem::CommandClipIgnore *>(c);
- if (current_clip) {
-
- if (ci->ignore != reclip) {
- if (ci->ignore) {
-
- glDisable(GL_SCISSOR_TEST);
- reclip = true;
- } else {
-
- glEnable(GL_SCISSOR_TEST);
- //glScissor(viewport.x+current_clip->final_clip_rect.pos.x,viewport.y+ (viewport.height-(current_clip->final_clip_rect.pos.y+current_clip->final_clip_rect.size.height)),
- //current_clip->final_clip_rect.size.width,current_clip->final_clip_rect.size.height);
-
- int x;
- int y;
- int w;
- int h;
-
- if (current_rt) {
- x = current_clip->final_clip_rect.pos.x;
- y = current_clip->final_clip_rect.pos.y;
- w = current_clip->final_clip_rect.size.x;
- h = current_clip->final_clip_rect.size.y;
- } else {
- x = current_clip->final_clip_rect.pos.x;
- y = window_size.height - (current_clip->final_clip_rect.pos.y + current_clip->final_clip_rect.size.y);
- w = current_clip->final_clip_rect.size.x;
- h = current_clip->final_clip_rect.size.y;
- }
-
- glScissor(x, y, w, h);
-
- reclip = false;
- }
- }
- }
-
- } break;
- }
- }
-}
-
-void RasterizerGLES2::_canvas_item_setup_shader_params(ShaderMaterial *material, Shader *shader) {
-
- if (canvas_shader.bind())
- rebind_texpixel_size = true;
-
- if (material->shader_version != shader->version) {
- //todo optimize uniforms
- material->shader_version = shader->version;
- }
-
- if (shader->has_texscreen && framebuffer.active) {
-
- int x = viewport.x;
- int y = window_size.height - (viewport.height + viewport.y);
-
- canvas_shader.set_uniform(CanvasShaderGLES2::TEXSCREEN_SCREEN_MULT, Vector2(float(viewport.width) / framebuffer.width, float(viewport.height) / framebuffer.height));
- canvas_shader.set_uniform(CanvasShaderGLES2::TEXSCREEN_SCREEN_CLAMP, Color(float(x) / framebuffer.width, float(y) / framebuffer.height, float(x + viewport.width) / framebuffer.width, float(y + viewport.height) / framebuffer.height));
- canvas_shader.set_uniform(CanvasShaderGLES2::TEXSCREEN_TEX, max_texture_units - 1);
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 1);
- glBindTexture(GL_TEXTURE_2D, framebuffer.sample_color);
- if (framebuffer.scale == 1 && !canvas_texscreen_used) {
-#ifdef GLEW_ENABLED
- if (current_rt) {
- glReadBuffer(GL_COLOR_ATTACHMENT0);
- } else {
- glReadBuffer(GL_BACK);
- }
-#endif
- if (current_rt) {
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, viewport.x, viewport.y, viewport.x, viewport.y, viewport.width, viewport.height);
- canvas_shader.set_uniform(CanvasShaderGLES2::TEXSCREEN_SCREEN_CLAMP, Color(float(x) / framebuffer.width, float(viewport.y) / framebuffer.height, float(x + viewport.width) / framebuffer.width, float(y + viewport.height) / framebuffer.height));
- //window_size.height-(viewport.height+viewport.y)
- } else {
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x, y, x, y, viewport.width, viewport.height);
- }
-
- canvas_texscreen_used = true;
- }
-
- glActiveTexture(GL_TEXTURE0);
- }
-
- if (shader->has_screen_uv) {
- canvas_shader.set_uniform(CanvasShaderGLES2::SCREEN_UV_MULT, Vector2(1.0 / viewport.width, 1.0 / viewport.height));
- }
-
- uses_texpixel_size = shader->uses_texpixel_size;
-}
-
-void RasterizerGLES2::_canvas_item_setup_shader_uniforms(ShaderMaterial *material, Shader *shader) {
-
- //this can be optimized..
- int tex_id = 1;
- int idx = 0;
- for (Map<StringName, ShaderLanguage::Uniform>::Element *E = shader->uniforms.front(); E; E = E->next()) {
-
- Map<StringName, Variant>::Element *F = material->shader_param.find(E->key());
-
- if ((E->get().type == ShaderLanguage::TYPE_TEXTURE || E->get().type == ShaderLanguage::TYPE_CUBEMAP)) {
-
- RID rid;
- if (F) {
- rid = F->get();
- }
-
- if (!rid.is_valid()) {
-
- Map<StringName, RID>::Element *DT = shader->default_textures.find(E->key());
- if (DT) {
- rid = DT->get();
- }
- }
-
- if (rid.is_valid()) {
-
- int loc = canvas_shader.get_custom_uniform_location(idx); //should be automatic..
-
- glActiveTexture(GL_TEXTURE0 + tex_id);
- Texture *t = texture_owner.get(rid);
- if (!t)
- glBindTexture(GL_TEXTURE_2D, white_tex);
- else
- glBindTexture(t->target, t->tex_id);
-
- glUniform1i(loc, tex_id);
- tex_id++;
- }
- } else {
- Variant &v = F ? F->get() : E->get().default_value;
- canvas_shader.set_custom_uniform(idx, v);
- }
-
- idx++;
- }
-
- if (tex_id > 1) {
- glActiveTexture(GL_TEXTURE0);
- }
-
- if (shader->uses_time) {
- canvas_shader.set_uniform(CanvasShaderGLES2::TIME, Math::fmod(last_time, shader_time_rollback));
- draw_next_frame = true;
- }
- //if uses TIME - draw_next_frame=true
-}
-
-void RasterizerGLES2::canvas_render_items(CanvasItem *p_item_list, int p_z, const Color &p_modulate, CanvasLight *p_light) {
-
- CanvasItem *current_clip = NULL;
- Shader *shader_cache = NULL;
-
- bool rebind_shader = true;
-
- canvas_opacity = 1.0;
- canvas_use_modulate = p_modulate != Color(1, 1, 1, 1);
- canvas_modulate = p_modulate;
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_MODULATE, canvas_use_modulate);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_DISTANCE_FIELD, false);
-
- bool reset_modulate = false;
- bool prev_distance_field = false;
-
- while (p_item_list) {
-
- CanvasItem *ci = p_item_list;
-
- if (ci->vp_render) {
- if (draw_viewport_func) {
- draw_viewport_func(ci->vp_render->owner, ci->vp_render->udata, ci->vp_render->rect);
- }
- memdelete(ci->vp_render);
- ci->vp_render = NULL;
- canvas_last_material = NULL;
- canvas_use_modulate = p_modulate != Color(1, 1, 1, 1);
- canvas_modulate = p_modulate;
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_MODULATE, canvas_use_modulate);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_DISTANCE_FIELD, false);
- prev_distance_field = false;
- rebind_shader = true;
- reset_modulate = true;
- }
-
- if (prev_distance_field != ci->distance_field) {
-
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_DISTANCE_FIELD, ci->distance_field);
- prev_distance_field = ci->distance_field;
- rebind_shader = true;
- }
-
- if (current_clip != ci->final_clip_owner) {
-
- current_clip = ci->final_clip_owner;
-
- //setup clip
- if (current_clip) {
-
- glEnable(GL_SCISSOR_TEST);
- //glScissor(viewport.x+current_clip->final_clip_rect.pos.x,viewport.y+ (viewport.height-(current_clip->final_clip_rect.pos.y+current_clip->final_clip_rect.size.height)),
- //current_clip->final_clip_rect.size.width,current_clip->final_clip_rect.size.height);
-
- /* int x = viewport.x+current_clip->final_clip_rect.pos.x;
- int y = window_size.height-(viewport.y+current_clip->final_clip_rect.pos.y+current_clip->final_clip_rect.size.y);
- int w = current_clip->final_clip_rect.size.x;
- int h = current_clip->final_clip_rect.size.y;
-*/
- int x;
- int y;
- int w;
- int h;
-
- if (current_rt) {
- x = current_clip->final_clip_rect.pos.x;
- y = current_clip->final_clip_rect.pos.y;
- w = current_clip->final_clip_rect.size.x;
- h = current_clip->final_clip_rect.size.y;
- } else {
- x = current_clip->final_clip_rect.pos.x;
- y = window_size.height - (current_clip->final_clip_rect.pos.y + current_clip->final_clip_rect.size.y);
- w = current_clip->final_clip_rect.size.x;
- h = current_clip->final_clip_rect.size.y;
- }
-
- glScissor(x, y, w, h);
-
- } else {
-
- glDisable(GL_SCISSOR_TEST);
- }
- }
-
- if (ci->copy_back_buffer && framebuffer.active && framebuffer.scale == 1) {
-
- Rect2 rect;
- int x, y;
-
- if (ci->copy_back_buffer->full) {
-
- x = viewport.x;
- y = window_size.height - (viewport.height + viewport.y);
- } else {
- x = viewport.x + ci->copy_back_buffer->screen_rect.pos.x;
- y = window_size.height - (viewport.y + ci->copy_back_buffer->screen_rect.pos.y + ci->copy_back_buffer->screen_rect.size.y);
- }
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 1);
- glBindTexture(GL_TEXTURE_2D, framebuffer.sample_color);
-
-#ifdef GLEW_ENABLED
- if (current_rt) {
- glReadBuffer(GL_COLOR_ATTACHMENT0);
- } else {
- glReadBuffer(GL_BACK);
- }
-#endif
- if (current_rt) {
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, viewport.x, viewport.y, viewport.x, viewport.y, viewport.width, viewport.height);
- //window_size.height-(viewport.height+viewport.y)
- } else {
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, x, y, x, y, viewport.width, viewport.height);
- }
-
- canvas_texscreen_used = true;
- glActiveTexture(GL_TEXTURE0);
- }
-
- //begin rect
- CanvasItem *material_owner = ci->material_owner ? ci->material_owner : ci;
- ShaderMaterial *material = material_owner->material;
-
- if (material != canvas_last_material || rebind_shader) {
-
- Shader *shader = NULL;
- if (material && material->shader.is_valid()) {
- shader = shader_owner.get(material->shader);
- if (shader && !shader->valid) {
- shader = NULL;
- }
- }
-
- shader_cache = shader;
-
- if (shader) {
- canvas_shader.set_custom_shader(shader->custom_code_id);
- _canvas_item_setup_shader_params(material, shader);
- } else {
- shader_cache = NULL;
- canvas_shader.set_custom_shader(0);
- canvas_shader.bind();
- uses_texpixel_size = false;
- }
-
- canvas_shader.set_uniform(CanvasShaderGLES2::PROJECTION_MATRIX, canvas_transform);
- if (canvas_use_modulate)
- reset_modulate = true;
- canvas_last_material = material;
- rebind_shader = false;
- }
-
- if (material && shader_cache) {
-
- _canvas_item_setup_shader_uniforms(material, shader_cache);
- }
-
- bool unshaded = (material && material->shading_mode == VS::CANVAS_ITEM_SHADING_UNSHADED) || ci->blend_mode != VS::MATERIAL_BLEND_MODE_MIX;
-
- if (unshaded) {
- canvas_shader.set_uniform(CanvasShaderGLES2::MODULATE, Color(1, 1, 1, 1));
- reset_modulate = true;
- } else if (reset_modulate) {
- canvas_shader.set_uniform(CanvasShaderGLES2::MODULATE, canvas_modulate);
- reset_modulate = false;
- }
-
- canvas_shader.set_uniform(CanvasShaderGLES2::MODELVIEW_MATRIX, ci->final_transform);
- canvas_shader.set_uniform(CanvasShaderGLES2::EXTRA_MATRIX, Transform2D());
-
- bool reclip = false;
-
- if (ci == p_item_list || ci->blend_mode != canvas_blend_mode) {
-
- switch (ci->blend_mode) {
-
- case VS::MATERIAL_BLEND_MODE_MIX: {
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
-
- } break;
- case VS::MATERIAL_BLEND_MODE_ADD: {
-
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
-
- } break;
- case VS::MATERIAL_BLEND_MODE_SUB: {
-
- glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
- } break;
- case VS::MATERIAL_BLEND_MODE_MUL: {
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_DST_COLOR, GL_ZERO);
- } break;
- case VS::MATERIAL_BLEND_MODE_PREMULT_ALPHA: {
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } break;
- }
-
- canvas_blend_mode = ci->blend_mode;
- }
-
- canvas_opacity = ci->final_opacity;
-
- if (unshaded || (p_modulate.a > 0.001 && (!material || material->shading_mode != VS::CANVAS_ITEM_SHADING_ONLY_LIGHT) && !ci->light_masked))
- _canvas_item_render_commands<false>(ci, current_clip, reclip);
-
- if (canvas_blend_mode == VS::MATERIAL_BLEND_MODE_MIX && p_light && !unshaded) {
-
- CanvasLight *light = p_light;
- bool light_used = false;
- VS::CanvasLightMode mode = VS::CANVAS_LIGHT_MODE_ADD;
-
- while (light) {
-
- if (ci->light_mask & light->item_mask && p_z >= light->z_min && p_z <= light->z_max && ci->global_rect_cache.intersects_transformed(light->xform_cache, light->rect_cache)) {
-
- //intersects this light
-
- if (!light_used || mode != light->mode) {
-
- mode = light->mode;
-
- switch (mode) {
-
- case VS::CANVAS_LIGHT_MODE_ADD: {
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
-
- } break;
- case VS::CANVAS_LIGHT_MODE_SUB: {
- glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
- } break;
- case VS::CANVAS_LIGHT_MODE_MIX:
- case VS::CANVAS_LIGHT_MODE_MASK: {
- glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- } break;
- }
- }
-
- if (!light_used) {
-
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_LIGHTING, true);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_MODULATE, false);
- light_used = true;
- normal_flip = Vector2(1, 1);
- }
-
- bool has_shadow = light->shadow_buffer.is_valid() && ci->light_mask & light->item_shadow_mask;
-
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_SHADOWS, has_shadow);
-
- bool light_rebind = canvas_shader.bind();
-
- if (light_rebind) {
-
- if (material && shader_cache) {
- _canvas_item_setup_shader_params(material, shader_cache);
- _canvas_item_setup_shader_uniforms(material, shader_cache);
- }
-
- canvas_shader.set_uniform(CanvasShaderGLES2::MODELVIEW_MATRIX, ci->final_transform);
- canvas_shader.set_uniform(CanvasShaderGLES2::EXTRA_MATRIX, Transform2D());
- canvas_shader.set_uniform(CanvasShaderGLES2::PROJECTION_MATRIX, canvas_transform);
- if (canvas_use_modulate)
- canvas_shader.set_uniform(CanvasShaderGLES2::MODULATE, canvas_modulate);
- canvas_shader.set_uniform(CanvasShaderGLES2::NORMAL_FLIP, Vector2(1, 1));
- canvas_shader.set_uniform(CanvasShaderGLES2::SHADOWPIXEL_SIZE, 1.0 / light->shadow_buffer_size);
- }
-
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_MATRIX, light->light_shader_xform);
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_POS, light->light_shader_pos);
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_COLOR, Color(light->color.r * light->energy, light->color.g * light->energy, light->color.b * light->energy, light->color.a));
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_HEIGHT, light->height);
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_LOCAL_MATRIX, light->xform_cache.affine_inverse());
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_OUTSIDE_ALPHA, light->mode == VS::CANVAS_LIGHT_MODE_MASK ? 1.0 : 0.0);
-
- if (has_shadow) {
-
- CanvasLightShadow *cls = canvas_light_shadow_owner.get(light->shadow_buffer);
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 3);
- if (read_depth_supported)
- glBindTexture(GL_TEXTURE_2D, cls->depth);
- else
- glBindTexture(GL_TEXTURE_2D, cls->rgba);
-
- canvas_shader.set_uniform(CanvasShaderGLES2::SHADOW_TEXTURE, max_texture_units - 3);
- canvas_shader.set_uniform(CanvasShaderGLES2::SHADOW_MATRIX, light->shadow_matrix_cache);
- canvas_shader.set_uniform(CanvasShaderGLES2::SHADOW_ESM_MULTIPLIER, light->shadow_esm_mult);
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_SHADOW_COLOR, light->shadow_color);
- }
-
- glActiveTexture(GL_TEXTURE0 + max_texture_units - 2);
- canvas_shader.set_uniform(CanvasShaderGLES2::LIGHT_TEXTURE, max_texture_units - 2);
- Texture *t = texture_owner.get(light->texture);
- if (!t) {
- glBindTexture(GL_TEXTURE_2D, white_tex);
- } else {
-
- glBindTexture(t->target, t->tex_id);
- }
-
- glActiveTexture(GL_TEXTURE0);
- _canvas_item_render_commands<true>(ci, current_clip, reclip); //redraw using light
- }
-
- light = light->next_ptr;
- }
-
- if (light_used) {
-
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_LIGHTING, false);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_MODULATE, canvas_use_modulate);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_SHADOWS, false);
-
- canvas_shader.bind();
-
- if (material && shader_cache) {
- _canvas_item_setup_shader_params(material, shader_cache);
- _canvas_item_setup_shader_uniforms(material, shader_cache);
- }
-
- canvas_shader.set_uniform(CanvasShaderGLES2::MODELVIEW_MATRIX, ci->final_transform);
- canvas_shader.set_uniform(CanvasShaderGLES2::EXTRA_MATRIX, Transform2D());
- if (canvas_use_modulate)
- canvas_shader.set_uniform(CanvasShaderGLES2::MODULATE, canvas_modulate);
-
- glBlendEquation(GL_FUNC_ADD);
- if (current_rt && current_rt_transparent) {
- glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
- } else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
- }
- }
-
- if (reclip) {
-
- glEnable(GL_SCISSOR_TEST);
- //glScissor(viewport.x+current_clip->final_clip_rect.pos.x,viewport.y+ (viewport.height-(current_clip->final_clip_rect.pos.y+current_clip->final_clip_rect.size.height)),
- //current_clip->final_clip_rect.size.width,current_clip->final_clip_rect.size.height);
-
- int x;
- int y;
- int w;
- int h;
-
- if (current_rt) {
- x = current_clip->final_clip_rect.pos.x;
- y = current_clip->final_clip_rect.pos.y;
- w = current_clip->final_clip_rect.size.x;
- h = current_clip->final_clip_rect.size.y;
- } else {
- x = current_clip->final_clip_rect.pos.x;
- y = window_size.height - (current_clip->final_clip_rect.pos.y + current_clip->final_clip_rect.size.y);
- w = current_clip->final_clip_rect.size.x;
- h = current_clip->final_clip_rect.size.y;
- }
-
- glScissor(x, y, w, h);
- }
-
- p_item_list = p_item_list->next;
- }
-
- if (current_clip) {
- glDisable(GL_SCISSOR_TEST);
- }
-}
-
-/* ENVIRONMENT */
-
-RID RasterizerGLES2::environment_create() {
-
- Environment *env = memnew(Environment);
- return environment_owner.make_rid(env);
-}
-
-void RasterizerGLES2::environment_set_background(RID p_env, VS::EnvironmentBG p_bg) {
-
- ERR_FAIL_INDEX(p_bg, VS::ENV_BG_MAX);
- Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND(!env);
- env->bg_mode = p_bg;
-}
-
-VS::EnvironmentBG RasterizerGLES2::environment_get_background(RID p_env) const {
-
- const Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND_V(!env, VS::ENV_BG_MAX);
- return env->bg_mode;
-}
-
-void RasterizerGLES2::environment_set_background_param(RID p_env, VS::EnvironmentBGParam p_param, const Variant &p_value) {
-
- ERR_FAIL_INDEX(p_param, VS::ENV_BG_PARAM_MAX);
- Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND(!env);
- env->bg_param[p_param] = p_value;
-}
-Variant RasterizerGLES2::environment_get_background_param(RID p_env, VS::EnvironmentBGParam p_param) const {
-
- ERR_FAIL_INDEX_V(p_param, VS::ENV_BG_PARAM_MAX, Variant());
- const Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND_V(!env, Variant());
- return env->bg_param[p_param];
-}
-
-void RasterizerGLES2::environment_set_enable_fx(RID p_env, VS::EnvironmentFx p_effect, bool p_enabled) {
-
- ERR_FAIL_INDEX(p_effect, VS::ENV_FX_MAX);
- Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND(!env);
- env->fx_enabled[p_effect] = p_enabled;
-}
-bool RasterizerGLES2::environment_is_fx_enabled(RID p_env, VS::EnvironmentFx p_effect) const {
-
- ERR_FAIL_INDEX_V(p_effect, VS::ENV_FX_MAX, false);
- const Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND_V(!env, false);
- return env->fx_enabled[p_effect];
-}
-
-void RasterizerGLES2::environment_fx_set_param(RID p_env, VS::EnvironmentFxParam p_param, const Variant &p_value) {
-
- ERR_FAIL_INDEX(p_param, VS::ENV_FX_PARAM_MAX);
- Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND(!env);
- env->fx_param[p_param] = p_value;
-}
-Variant RasterizerGLES2::environment_fx_get_param(RID p_env, VS::EnvironmentFxParam p_param) const {
-
- ERR_FAIL_INDEX_V(p_param, VS::ENV_FX_PARAM_MAX, Variant());
- const Environment *env = environment_owner.get(p_env);
- ERR_FAIL_COND_V(!env, Variant());
- return env->fx_param[p_param];
-}
-
-RID RasterizerGLES2::sampled_light_dp_create(int p_width, int p_height) {
-
- SampledLight *slight = memnew(SampledLight);
- slight->w = p_width;
- slight->h = p_height;
- slight->multiplier = 1.0;
- slight->is_float = float_linear_supported;
-
- glActiveTexture(GL_TEXTURE0);
- glGenTextures(1, &slight->texture);
- glBindTexture(GL_TEXTURE_2D, slight->texture);
- // for debug, but glitchy
- //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- // Remove artifact on the edges of the shadowmap
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- if (slight->is_float) {
-#ifdef GLEW_ENABLED
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, p_width, p_height, 0, GL_RGBA, GL_FLOAT, NULL);
-#else
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, p_width, p_height, 0, GL_RGBA, GL_FLOAT, NULL);
-#endif
- } else {
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, p_width, p_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- }
-
- return sampled_light_owner.make_rid(slight);
-}
-
-void RasterizerGLES2::sampled_light_dp_update(RID p_sampled_light, const Color *p_data, float p_multiplier) {
-
- SampledLight *slight = sampled_light_owner.get(p_sampled_light);
- ERR_FAIL_COND(!slight);
-
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, slight->texture);
-
- if (slight->is_float) {
-
-#ifdef GLEW_ENABLED
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, slight->w, slight->h, GL_RGBA, GL_FLOAT, p_data);
-#else
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, slight->w, slight->h, GL_RGBA, GL_FLOAT, p_data);
-#endif
-
- } else {
- //convert to bytes
- uint8_t *tex8 = (uint8_t *)alloca(slight->w * slight->h * 4);
- const float *src = (const float *)p_data;
-
- for (int i = 0; i < slight->w * slight->h * 4; i++) {
-
- tex8[i] = Math::fast_ftoi(CLAMP(src[i] * 255.0, 0.0, 255.0));
- }
-
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, slight->w, slight->h, GL_RGBA, GL_UNSIGNED_BYTE, p_data);
- }
-
- slight->multiplier = p_multiplier;
-}
-
-/*MISC*/
-
-bool RasterizerGLES2::is_texture(const RID &p_rid) const {
-
- return texture_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_material(const RID &p_rid) const {
-
- return material_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_mesh(const RID &p_rid) const {
-
- return mesh_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_immediate(const RID &p_rid) const {
-
- return immediate_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_multimesh(const RID &p_rid) const {
-
- return multimesh_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_particles(const RID &p_beam) const {
-
- return particles_owner.owns(p_beam);
-}
-
-bool RasterizerGLES2::is_light(const RID &p_rid) const {
-
- return light_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_light_instance(const RID &p_rid) const {
-
- return light_instance_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_particles_instance(const RID &p_rid) const {
-
- return particles_instance_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_skeleton(const RID &p_rid) const {
-
- return skeleton_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_environment(const RID &p_rid) const {
-
- return environment_owner.owns(p_rid);
-}
-bool RasterizerGLES2::is_shader(const RID &p_rid) const {
-
- return shader_owner.owns(p_rid);
-}
-
-bool RasterizerGLES2::is_canvas_light_occluder(const RID &p_rid) const {
-
- return false;
-}
-
-void RasterizerGLES2::free(const RID &p_rid) {
- if (texture_owner.owns(p_rid)) {
-
- // delete the texture
- Texture *texture = texture_owner.get(p_rid);
-
- //glDeleteTextures( 1,&texture->tex_id );
- _rinfo.texture_mem -= texture->total_data_size;
- texture_owner.free(p_rid);
- memdelete(texture);
-
- } else if (shader_owner.owns(p_rid)) {
-
- // delete the texture
- Shader *shader = shader_owner.get(p_rid);
-
- switch (shader->mode) {
- case VS::SHADER_MATERIAL: {
- material_shader.free_custom_shader(shader->custom_code_id);
- } break;
- case VS::SHADER_POST_PROCESS: {
- //postprocess_shader.free_custom_shader(shader->custom_code_id);
- } break;
- }
-
- if (shader->dirty_list.in_list())
- _shader_dirty_list.remove(&shader->dirty_list);
-
- //material_shader.free_custom_shader(shader->custom_code_id);
- shader_owner.free(p_rid);
- memdelete(shader);
-
- } else if (material_owner.owns(p_rid)) {
-
- Material *material = material_owner.get(p_rid);
- ERR_FAIL_COND(!material);
-
- _free_fixed_material(p_rid); //just in case
- material_owner.free(p_rid);
- memdelete(material);
-
- } else if (mesh_owner.owns(p_rid)) {
-
- Mesh *mesh = mesh_owner.get(p_rid);
- ERR_FAIL_COND(!mesh);
- for (int i = 0; i < mesh->surfaces.size(); i++) {
-
- Surface *surface = mesh->surfaces[i];
- if (surface->array_local != 0) {
- memfree(surface->array_local);
- };
- if (surface->index_array_local != 0) {
- memfree(surface->index_array_local);
- };
-
- if (mesh->morph_target_count > 0) {
-
- for (int i = 0; i < mesh->morph_target_count; i++) {
-
- memdelete_arr(surface->morph_targets_local[i].array);
- }
- memdelete_arr(surface->morph_targets_local);
- surface->morph_targets_local = NULL;
- }
-
- if (surface->vertex_id)
- glDeleteBuffers(1, &surface->vertex_id);
- if (surface->index_id)
- glDeleteBuffers(1, &surface->index_id);
-
- memdelete(surface);
- };
-
- mesh->surfaces.clear();
-
- mesh_owner.free(p_rid);
- memdelete(mesh);
-
- } else if (multimesh_owner.owns(p_rid)) {
-
- MultiMesh *multimesh = multimesh_owner.get(p_rid);
- ERR_FAIL_COND(!multimesh);
-
- if (multimesh->tex_id) {
- glDeleteTextures(1, &multimesh->tex_id);
- }
-
- multimesh_owner.free(p_rid);
- memdelete(multimesh);
-
- } else if (immediate_owner.owns(p_rid)) {
-
- Immediate *immediate = immediate_owner.get(p_rid);
- ERR_FAIL_COND(!immediate);
-
- immediate_owner.free(p_rid);
- memdelete(immediate);
- } else if (particles_owner.owns(p_rid)) {
-
- Particles *particles = particles_owner.get(p_rid);
- ERR_FAIL_COND(!particles);
-
- particles_owner.free(p_rid);
- memdelete(particles);
- } else if (particles_instance_owner.owns(p_rid)) {
-
- ParticlesInstance *particles_isntance = particles_instance_owner.get(p_rid);
- ERR_FAIL_COND(!particles_isntance);
-
- particles_instance_owner.free(p_rid);
- memdelete(particles_isntance);
-
- } else if (skeleton_owner.owns(p_rid)) {
-
- Skeleton *skeleton = skeleton_owner.get(p_rid);
- ERR_FAIL_COND(!skeleton);
-
- if (skeleton->dirty_list.in_list())
- _skeleton_dirty_list.remove(&skeleton->dirty_list);
- if (skeleton->tex_id) {
- glDeleteTextures(1, &skeleton->tex_id);
- }
- skeleton_owner.free(p_rid);
- memdelete(skeleton);
-
- } else if (light_owner.owns(p_rid)) {
-
- Light *light = light_owner.get(p_rid);
- ERR_FAIL_COND(!light)
-
- light_owner.free(p_rid);
- memdelete(light);
-
- } else if (light_instance_owner.owns(p_rid)) {
-
- LightInstance *light_instance = light_instance_owner.get(p_rid);
- ERR_FAIL_COND(!light_instance);
- light_instance->clear_shadow_buffers();
- light_instance_owner.free(p_rid);
- memdelete(light_instance);
-
- } else if (environment_owner.owns(p_rid)) {
-
- Environment *env = environment_owner.get(p_rid);
- ERR_FAIL_COND(!env);
-
- environment_owner.free(p_rid);
- memdelete(env);
-
- } else if (viewport_data_owner.owns(p_rid)) {
-
- ViewportData *viewport_data = viewport_data_owner.get(p_rid);
- ERR_FAIL_COND(!viewport_data);
- glDeleteFramebuffers(1, &viewport_data->lum_fbo);
- glDeleteTextures(1, &viewport_data->lum_color);
- viewport_data_owner.free(p_rid);
- memdelete(viewport_data);
-
- } else if (render_target_owner.owns(p_rid)) {
-
- RenderTarget *render_target = render_target_owner.get(p_rid);
- ERR_FAIL_COND(!render_target);
- render_target_set_size(p_rid, 0, 0); //clears framebuffer
- texture_owner.free(render_target->texture);
- memdelete(render_target->texture_ptr);
- render_target_owner.free(p_rid);
- memdelete(render_target);
- } else if (sampled_light_owner.owns(p_rid)) {
-
- SampledLight *sampled_light = sampled_light_owner.get(p_rid);
- ERR_FAIL_COND(!sampled_light);
- glDeleteTextures(1, &sampled_light->texture);
- sampled_light_owner.free(p_rid);
- memdelete(sampled_light);
- } else if (canvas_occluder_owner.owns(p_rid)) {
-
- CanvasOccluder *co = canvas_occluder_owner.get(p_rid);
- if (co->index_id)
- glDeleteBuffers(1, &co->index_id);
- if (co->vertex_id)
- glDeleteBuffers(1, &co->vertex_id);
-
- canvas_occluder_owner.free(p_rid);
- memdelete(co);
-
- } else if (canvas_light_shadow_owner.owns(p_rid)) {
-
- CanvasLightShadow *cls = canvas_light_shadow_owner.get(p_rid);
- glDeleteFramebuffers(1, &cls->fbo);
- glDeleteRenderbuffers(1, &cls->rbo);
- glDeleteTextures(1, &cls->depth);
- /*
- if (!read_depth_supported) {
- glDeleteTextures(1,&cls->rgba);
- }
- */
-
- canvas_light_shadow_owner.free(p_rid);
- memdelete(cls);
- };
-}
-
-bool RasterizerGLES2::ShadowBuffer::init(int p_size, bool p_use_depth) {
-
- size = p_size;
- // Create a framebuffer object
- glGenFramebuffers(1, &fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, fbo);
-
- // Create a render buffer
- glGenRenderbuffers(1, &rbo);
- glBindRenderbuffer(GL_RENDERBUFFER, rbo);
-
- // Create a texture for storing the depth
- glGenTextures(1, &depth);
- glBindTexture(GL_TEXTURE_2D, depth);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- // Remove artifact on the edges of the shadowmap
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- //print_line("ERROR? "+itos(glGetError()));
- if (p_use_depth) {
-
- // We'll use a depth texture to store the depths in the shadow map
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, size, size, 0,
- GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
-
-#ifdef GLEW_ENABLED
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-#endif
-
- // Attach the depth texture to FBO depth attachment point
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
- GL_TEXTURE_2D, depth, 0);
-
-#ifdef GLEW_ENABLED
- glDrawBuffer(GL_NONE);
-#endif
- } else {
- // We'll use a RGBA texture into which we pack the depth info
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-
- // Attach the RGBA texture to FBO color attachment point
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, depth, 0);
-
- // Allocate 16-bit depth buffer
- glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, size, size);
-
- // Attach the render buffer as depth buffer - will be ignored
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
- GL_RENDERBUFFER, rbo);
- }
-
-#if 0
-
- if (!p_use_depth) {
-
-
- print_line("try no depth!");
-
- glGenTextures(1, &rgba);
- glBindTexture(GL_TEXTURE_2D, rgba);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rgba, 0);
-/*
- glGenRenderbuffers(1, &depth);
- glBindRenderbuffer(GL_RENDERBUFFER, depth);
- glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, p_size, p_size);
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth);
-*/
- glGenTextures(1, &depth);
- glBindTexture(GL_TEXTURE_2D, depth);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, size, size, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depth, 0);
-
- } else {
-
- //glGenRenderbuffers(1, &rbo);
- //glBindRenderbuffer(GL_RENDERBUFFER, rbo);
-
- glGenTextures(1, &depth);
- glBindTexture(GL_TEXTURE_2D, depth);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, size, size, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depth, 0);
-
- }
-
-#endif
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-//printf("errnum: %x\n",status);
-#ifdef GLEW_ENABLED
- if (p_use_depth) {
- //glDrawBuffer(GL_BACK);
- }
-#endif
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- DEBUG_TEST_ERROR("Shadow Buffer Init");
- ERR_FAIL_COND_V(status != GL_FRAMEBUFFER_COMPLETE, false);
-
-#ifdef GLEW_ENABLED
- if (p_use_depth) {
- //glDrawBuffer(GL_BACK);
- }
-#endif
-
-#if 0
- glGenFramebuffers(1, &fbo_blur);
- glBindFramebuffer(GL_FRAMEBUFFER, fbo_blur);
-
- glGenRenderbuffers(1, &rbo_blur);
- glBindRenderbuffer(GL_RENDERBUFFER, rbo_blur);
-
- glGenTextures(1, &blur);
- glBindTexture(GL_TEXTURE_2D, blur);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- //glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, size, size, 0,
- //GL_DEPTH_COMPONENT16, GL_UNSIGNED_SHORT, NULL);
-
- // Attach the RGBA texture to FBO color attachment point
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, blur, 0);
-
- // Allocate 16-bit depth buffer
- /*
- glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, size, size);
-
- // Attach the render buffer as depth buffer - will be ignored
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
- GL_RENDERBUFFER, rbo_blur);
- */
- status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
- OS::get_singleton()->print("Status: %x\n",status);
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- DEBUG_TEST_ERROR("Shadow Blur Buffer Init");
- ERR_FAIL_COND_V( status != GL_FRAMEBUFFER_COMPLETE,false );
-#endif
-
- return true;
-}
-
-void RasterizerGLES2::_update_framebuffer() {
-
- if (!use_framebuffers)
- return;
-
- int scale = GLOBAL_DEF("rasterizer/framebuffer_shrink", 1);
- if (scale < 1)
- scale = 1;
-
- int dwidth = OS::get_singleton()->get_video_mode().width / scale;
- int dheight = OS::get_singleton()->get_video_mode().height / scale;
-
- if (framebuffer.fbo && dwidth == framebuffer.width && dheight == framebuffer.height)
- return;
-
- bool use_fbo = true;
-
- if (framebuffer.fbo != 0) {
-
- glDeleteFramebuffers(1, &framebuffer.fbo);
-#if 0
- glDeleteTextures(1,&framebuffer.depth);
-#else
- glDeleteRenderbuffers(1, &framebuffer.depth);
-
-#endif
- glDeleteTextures(1, &framebuffer.color);
-
- for (int i = 0; i < framebuffer.luminance.size(); i++) {
-
- glDeleteTextures(1, &framebuffer.luminance[i].color);
- glDeleteFramebuffers(1, &framebuffer.luminance[i].fbo);
- }
-
- for (int i = 0; i < 3; i++) {
-
- glDeleteTextures(1, &framebuffer.blur[i].color);
- glDeleteFramebuffers(1, &framebuffer.blur[i].fbo);
- }
-
- glDeleteTextures(1, &framebuffer.sample_color);
- glDeleteFramebuffers(1, &framebuffer.sample_fbo);
- framebuffer.luminance.clear();
- framebuffer.blur_size = 0;
- framebuffer.fbo = 0;
- }
-
-#ifdef TOOLS_ENABLED
- framebuffer.active = use_fbo;
-#else
- framebuffer.active = use_fbo && !low_memory_2d;
-#endif
- framebuffer.width = dwidth;
- framebuffer.height = dheight;
- framebuffer.scale = scale;
-
- if (!framebuffer.active)
- return;
-
- glGenFramebuffers(1, &framebuffer.fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.fbo);
-
-//print_line("generating fbo, id: "+itos(framebuffer.fbo));
-//depth
-
-// Create a render buffer
-
-#if 0
- glGenTextures(1, &framebuffer.depth);
- glBindTexture(GL_TEXTURE_2D, framebuffer.depth);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, framebuffer.width, framebuffer.height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE );
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, framebuffer.depth, 0);
-
-#else
-
- glGenRenderbuffers(1, &framebuffer.depth);
- glBindRenderbuffer(GL_RENDERBUFFER, framebuffer.depth);
-
- glRenderbufferStorage(GL_RENDERBUFFER, use_depth24 ? _DEPTH_COMPONENT24_OES : GL_DEPTH_COMPONENT16, framebuffer.width, framebuffer.height);
-
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, framebuffer.depth);
-
-#endif
- //color
-
- //GLuint format_rgba = use_fp16_fb?_GL_RGBA16F_EXT:GL_RGBA;
- GLuint format_rgba = GL_RGBA;
- GLuint format_type = use_fp16_fb ? _GL_HALF_FLOAT_OES : GL_UNSIGNED_BYTE;
- GLuint format_internal = GL_RGBA;
-
- if (use_16bits_fbo) {
- format_type = GL_UNSIGNED_SHORT_5_6_5;
- format_rgba = GL_RGB;
- format_internal = GL_RGB;
- }
- /*GLuint format_luminance = use_fp16_fb?GL_RGB16F:GL_RGBA;
- GLuint format_luminance_type = use_fp16_fb?(use_fu_GL_HALF_FLOAT_OES):GL_UNSIGNED_BYTE;
- GLuint format_luminance_components = use_fp16_fb?GL_RGB:GL_RGBA;*/
-
- GLuint format_luminance = use_fp16_fb ? _GL_RG_EXT : GL_RGBA;
- GLuint format_luminance_type = use_fp16_fb ? (full_float_fb_supported ? GL_FLOAT : _GL_HALF_FLOAT_OES) : GL_UNSIGNED_BYTE;
- GLuint format_luminance_components = use_fp16_fb ? _GL_RG_EXT : GL_RGBA;
-
- glGenTextures(1, &framebuffer.color);
- glBindTexture(GL_TEXTURE_2D, framebuffer.color);
- glTexImage2D(GL_TEXTURE_2D, 0, format_rgba, framebuffer.width, framebuffer.height, 0, format_internal, format_type, NULL);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, framebuffer.color, 0);
-#
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
-
- if (status != GL_FRAMEBUFFER_COMPLETE) {
-
- glDeleteFramebuffers(1, &framebuffer.fbo);
-#if 0
- glDeleteTextures(1,&framebuffer.depth);
-#else
- glDeleteRenderbuffers(1, &framebuffer.depth);
-
-#endif
- glDeleteTextures(1, &framebuffer.color);
- framebuffer.fbo = 0;
- framebuffer.active = false;
- //print_line("**************** NO FAMEBUFFEEEERRRR????");
- WARN_PRINT(String("Could not create framebuffer!!, code: " + itos(status)).ascii().get_data());
- }
-
- //sample
-
- glGenFramebuffers(1, &framebuffer.sample_fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.sample_fbo);
- glGenTextures(1, &framebuffer.sample_color);
- glBindTexture(GL_TEXTURE_2D, framebuffer.sample_color);
- glTexImage2D(GL_TEXTURE_2D, 0, format_rgba, framebuffer.width, framebuffer.height, 0, format_internal, format_type, NULL);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, framebuffer.sample_color, 0);
-#
- status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
-
- if (status != GL_FRAMEBUFFER_COMPLETE) {
-
- glDeleteFramebuffers(1, &framebuffer.fbo);
-#if 0
- glDeleteTextures(1,&framebuffer.depth);
-#else
- glDeleteRenderbuffers(1, &framebuffer.depth);
-
-#endif
- glDeleteTextures(1, &framebuffer.color);
- glDeleteTextures(1, &framebuffer.sample_color);
- glDeleteFramebuffers(1, &framebuffer.sample_fbo);
- framebuffer.fbo = 0;
- framebuffer.active = false;
- //print_line("**************** NO FAMEBUFFEEEERRRR????");
- WARN_PRINT("Could not create framebuffer!!");
- }
- //blur
-
- int size = GLOBAL_DEF("rasterizer/blur_buffer_size", 256);
-
- if (size != framebuffer.blur_size) {
-
- for (int i = 0; i < 3; i++) {
-
- if (framebuffer.blur[i].fbo) {
- glDeleteFramebuffers(1, &framebuffer.blur[i].fbo);
- glDeleteTextures(1, &framebuffer.blur[i].color);
- framebuffer.blur[i].fbo = 0;
- framebuffer.blur[i].color = 0;
- }
- }
-
- framebuffer.blur_size = size;
-
- for (int i = 0; i < 3; i++) {
-
- glGenFramebuffers(1, &framebuffer.blur[i].fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.blur[i].fbo);
-
- glGenTextures(1, &framebuffer.blur[i].color);
- glBindTexture(GL_TEXTURE_2D, framebuffer.blur[i].color);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glTexImage2D(GL_TEXTURE_2D, 0, format_rgba, size, size, 0,
- format_internal, format_type, NULL);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, framebuffer.blur[i].color, 0);
-
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- DEBUG_TEST_ERROR("Shadow Buffer Init");
- ERR_CONTINUE(status != GL_FRAMEBUFFER_COMPLETE);
- }
- }
-
- // luminance
-
- int base_size = GLOBAL_DEF("rasterizer/luminance_buffer_size", 81);
-
- if (framebuffer.luminance.empty() || framebuffer.luminance[0].size != base_size) {
-
- for (int i = 0; i < framebuffer.luminance.size(); i++) {
-
- glDeleteFramebuffers(1, &framebuffer.luminance[i].fbo);
- glDeleteTextures(1, &framebuffer.luminance[i].color);
- }
-
- framebuffer.luminance.clear();
-
- while (base_size > 0) {
-
- FrameBuffer::Luminance lb;
- lb.size = base_size;
-
- glGenFramebuffers(1, &lb.fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, lb.fbo);
-
- glGenTextures(1, &lb.color);
- glBindTexture(GL_TEXTURE_2D, lb.color);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glTexImage2D(GL_TEXTURE_2D, 0, format_luminance, lb.size, lb.size, 0,
- format_luminance_components, format_luminance_type, NULL);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, lb.color, 0);
-
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
-
- base_size /= 3;
-
- DEBUG_TEST_ERROR("Shadow Buffer Init");
- ERR_CONTINUE(status != GL_FRAMEBUFFER_COMPLETE);
-
- framebuffer.luminance.push_back(lb);
- }
- }
-}
-
-void RasterizerGLES2::set_base_framebuffer(GLuint p_id, Vector2 p_size) {
-
- base_framebuffer = p_id;
-
- if (p_size.x != 0) {
- window_size = p_size;
- };
-}
-
-#if 0
-void RasterizerGLES2::_update_blur_buffer() {
-
- int size = GLOBAL_DEF("rasterizer/blur_buffer_size",256);
- if (size!=framebuffer.blur_size) {
-
- for(int i=0;i<3;i++) {
-
- if (framebuffer.blur[i].fbo) {
- glDeleteFramebuffers(1,&framebuffer.blur[i].fbo);
- glDeleteTextures(1,&framebuffer.blur[i].color);
- framebuffer.blur[i].fbo=0;
- framebuffer.blur[i].color=0;
- }
- }
-
- framebuffer.blur_size=size;
-
- for(int i=0;i<3;i++) {
-
- glGenFramebuffers(1, &framebuffer.blur[i].fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.blur[i].fbo);
-
- glGenTextures(1, &framebuffer.blur[i].color);
- glBindTexture(GL_TEXTURE_2D, framebuffer.blur[i].color);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size, size, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, framebuffer.blur[i].color, 0);
-
-
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- DEBUG_TEST_ERROR("Shadow Buffer Init");
- ERR_CONTINUE( status != GL_FRAMEBUFFER_COMPLETE );
-
-
- }
-
- }
-
-
-
-
-
-}
-#endif
-
-bool RasterizerGLES2::_test_depth_shadow_buffer() {
-
- int size = 16;
-
- GLuint fbo;
- GLuint rbo;
- GLuint depth;
-
- glActiveTexture(GL_TEXTURE0);
-
- glGenFramebuffers(1, &fbo);
- glBindFramebuffer(GL_FRAMEBUFFER, fbo);
-
- // Create a render buffer
- glGenRenderbuffers(1, &rbo);
- glBindRenderbuffer(GL_RENDERBUFFER, rbo);
-
- // Create a texture for storing the depth
- glGenTextures(1, &depth);
- glBindTexture(GL_TEXTURE_2D, depth);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- // Remove artifact on the edges of the shadowmap
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- // We'll use a depth texture to store the depths in the shadow map
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, size, size, 0,
- GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
-
-#ifdef GLEW_ENABLED
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-#endif
-
- // Attach the depth texture to FBO depth attachment point
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
- GL_TEXTURE_2D, depth, 0);
-
- GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-
- glDeleteFramebuffers(1, &fbo);
- glDeleteRenderbuffers(1, &rbo);
- glDeleteTextures(1, &depth);
-
- return status == GL_FRAMEBUFFER_COMPLETE;
-}
-
-void RasterizerGLES2::init() {
-
- if (OS::get_singleton()->is_stdout_verbose()) {
- print_line("Using GLES2 video driver");
- }
-
-#ifdef GLEW_ENABLED
- GLuint res = glewInit();
- ERR_FAIL_COND(res != GLEW_OK);
- if (OS::get_singleton()->is_stdout_verbose()) {
- print_line(String("GLES2: Using GLEW ") + (const char *)glewGetString(GLEW_VERSION));
- }
-
- // Godot makes use of functions from ARB_framebuffer_object extension which is not implemented by all drivers.
- // On the other hand, these drivers might implement the older EXT_framebuffer_object extension
- // with which current source code is backward compatible.
-
- bool framebuffer_object_is_supported = glewIsSupported("GL_ARB_framebuffer_object");
-
- if (!framebuffer_object_is_supported) {
- WARN_PRINT("GL_ARB_framebuffer_object not supported by your graphics card.");
-
- if (glewIsSupported("GL_EXT_framebuffer_object")) {
- // falling-back to the older EXT function if present
- WARN_PRINT("Falling-back to GL_EXT_framebuffer_object.");
-
- glIsRenderbuffer = glIsRenderbufferEXT;
- glBindRenderbuffer = glBindRenderbufferEXT;
- glDeleteRenderbuffers = glDeleteRenderbuffersEXT;
- glGenRenderbuffers = glGenRenderbuffersEXT;
- glRenderbufferStorage = glRenderbufferStorageEXT;
- glGetRenderbufferParameteriv = glGetRenderbufferParameterivEXT;
- glIsFramebuffer = glIsFramebufferEXT;
- glBindFramebuffer = glBindFramebufferEXT;
- glDeleteFramebuffers = glDeleteFramebuffersEXT;
- glGenFramebuffers = glGenFramebuffersEXT;
- glCheckFramebufferStatus = glCheckFramebufferStatusEXT;
- glFramebufferTexture1D = glFramebufferTexture1DEXT;
- glFramebufferTexture2D = glFramebufferTexture2DEXT;
- glFramebufferTexture3D = glFramebufferTexture3DEXT;
- glFramebufferRenderbuffer = glFramebufferRenderbufferEXT;
- glGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameterivEXT;
- glGenerateMipmap = glGenerateMipmapEXT;
-
- framebuffer_object_is_supported = true;
- } else {
- ERR_PRINT("Framebuffer Object is not supported by your graphics card.");
- }
- }
-
- // Check for GL 2.1 compatibility, if not bail out
- if (!(glewIsSupported("GL_VERSION_2_1") && framebuffer_object_is_supported)) {
- ERR_PRINT("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(\n"
- "Try a drivers update, buy a new GPU or try software rendering on Linux; Godot is now going to terminate.");
- OS::get_singleton()->alert("Your system's graphic drivers seem not to support OpenGL 2.1 / GLES 2.0, sorry :(\n"
- "Godot Engine will self-destruct as soon as you acknowledge this error message.",
- "Fatal error: Insufficient OpenGL / GLES drivers");
- exit(1);
- }
-#endif
-
- scene_pass = 1;
-
- if (extensions.size() == 0) {
-
- set_extensions((const char *)glGetString(GL_EXTENSIONS));
- }
-
- GLint tmp = 0;
- glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &tmp);
- //print_line("GL_MAX_VERTEX_ATTRIBS "+itos(tmp));
-
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LEQUAL);
- glFrontFace(GL_CW);
- //glEnable(GL_TEXTURE_2D);
-
- default_material = create_default_material();
-
- material_shader.init();
- canvas_shader.init();
- copy_shader.init();
- canvas_shadow_shader.init();
-
-#ifdef GLEW_ENABLED
- material_shader.set_conditional(MaterialShaderGLES2::USE_GLES_OVER_GL, true);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_GLES_OVER_GL, true);
- canvas_shadow_shader.set_conditional(CanvasShadowShaderGLES2::USE_GLES_OVER_GL, true);
- copy_shader.set_conditional(CopyShaderGLES2::USE_GLES_OVER_GL, true);
-#endif
-
-#ifdef ANGLE_ENABLED
- // Fix for ANGLE
- material_shader.set_conditional(MaterialShaderGLES2::DISABLE_FRONT_FACING, true);
-#endif
-
- shadow = NULL;
- shadow_pass = 0;
-
- framebuffer.fbo = 0;
- framebuffer.width = 0;
- framebuffer.height = 0;
- //framebuffer.buff16=false;
- //framebuffer.blur[0].fbo=false;
- //framebuffer.blur[1].fbo=false;
- framebuffer.active = false;
-
- //do a single initial clear
- glClearColor(0, 0, 0, 1);
- //glClearDepth(1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glGenTextures(1, &white_tex);
- unsigned char whitetexdata[8 * 8 * 3];
- for (int i = 0; i < 8 * 8 * 3; i++) {
- whitetexdata[i] = 255;
- }
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, white_tex);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0, GL_RGB, GL_UNSIGNED_BYTE, whitetexdata);
- glGenerateMipmap(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, 0);
-
-#ifdef GLEW_ENABLED
-
- pvr_supported = false;
- etc_supported = false;
- use_depth24 = true;
- s3tc_supported = true;
- atitc_supported = false;
- //use_texture_instancing=false;
- //use_attribute_instancing=true;
- use_texture_instancing = false;
- use_attribute_instancing = true;
- full_float_fb_supported = true;
- srgb_supported = true;
- latc_supported = true;
- s3tc_srgb_supported = true;
- use_anisotropic_filter = true;
- float_linear_supported = true;
-
- GLint vtf;
- glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &vtf);
- float_supported = extensions.has("GL_OES_texture_float") || extensions.has("GL_ARB_texture_float");
- use_hw_skeleton_xform = vtf > 0 && float_supported;
-
- read_depth_supported = _test_depth_shadow_buffer();
- use_rgba_shadowmaps = !read_depth_supported;
- //print_line("read depth support? "+itos(read_depth_supported));
-
- glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropic_level);
- anisotropic_level = MIN(anisotropic_level, float(GLOBAL_DEF("rasterizer/anisotropic_filter_level", 4.0)));
-#ifdef OSX_ENABLED
- use_rgba_shadowmaps = true;
- use_fp16_fb = false;
-#else
-
-#endif
- use_half_float = true;
-
-#else
-
- for (Set<String>::Element *E = extensions.front(); E; E = E->next()) {
- print_line(E->get());
- }
- read_depth_supported = extensions.has("GL_OES_depth_texture");
- use_rgba_shadowmaps = !read_depth_supported;
- if (shadow_filter >= SHADOW_FILTER_ESM && !extensions.has("GL_EXT_frag_depth")) {
- use_rgba_shadowmaps = true; //no other way, go back to rgba
- }
- pvr_supported = extensions.has("GL_IMG_texture_compression_pvrtc");
- pvr_srgb_supported = extensions.has("GL_EXT_pvrtc_sRGB");
- etc_supported = extensions.has("GL_OES_compressed_ETC1_RGB8_texture");
- use_depth24 = extensions.has("GL_OES_depth24");
- s3tc_supported = extensions.has("GL_EXT_texture_compression_dxt1") || extensions.has("GL_EXT_texture_compression_s3tc") || extensions.has("WEBGL_compressed_texture_s3tc");
- use_half_float = extensions.has("GL_OES_vertex_half_float");
- atitc_supported = extensions.has("GL_AMD_compressed_ATC_texture");
-
- srgb_supported = extensions.has("GL_EXT_sRGB");
-#ifndef ANGLE_ENABLED
- s3tc_srgb_supported = s3tc_supported && extensions.has("GL_EXT_texture_compression_s3tc");
-#else
- s3tc_srgb_supported = s3tc_supported;
-#endif
- latc_supported = extensions.has("GL_EXT_texture_compression_latc");
- anisotropic_level = 1.0;
- use_anisotropic_filter = extensions.has("GL_EXT_texture_filter_anisotropic");
- if (use_anisotropic_filter) {
- glGetFloatv(_GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropic_level);
- anisotropic_level = MIN(anisotropic_level, float(GLOBAL_DEF("rasterizer/anisotropic_filter_level", 4.0)));
- }
-
- print_line("S3TC: " + itos(s3tc_supported) + " ATITC: " + itos(atitc_supported));
-
- GLint vtf;
- glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &vtf);
- float_supported = extensions.has("GL_OES_texture_float") || extensions.has("GL_ARB_texture_float");
- use_hw_skeleton_xform = vtf > 0 && float_supported;
- float_linear_supported = extensions.has("GL_OES_texture_float_linear");
-
- /*
- if (extensions.has("GL_QCOM_tiled_rendering"))
- use_hw_skeleton_xform=false;
- */
- GLint mva;
- glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &mva);
- if (vtf == 0 && mva > 8) {
- //tegra 3, mali 400
- use_attribute_instancing = true;
- use_texture_instancing = false;
- } else if (vtf > 0 && extensions.has("GL_OES_texture_float")) {
- //use_texture_instancing=true;
- use_texture_instancing = false; // i don't get it, uniforms are faster.
- use_attribute_instancing = false;
-
- } else {
-
- use_texture_instancing = false;
- use_attribute_instancing = false;
- }
-
- if (use_fp16_fb) {
- use_fp16_fb = extensions.has("GL_OES_texture_half_float") && extensions.has("GL_EXT_color_buffer_half_float") && extensions.has("GL_EXT_texture_rg");
- }
-
- full_float_fb_supported = extensions.has("GL_EXT_color_buffer_float");
-
-//etc_supported=false;
-
-#endif
-
- //use_rgba_shadowmaps=true;
-
- glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &max_texture_units);
- glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_texture_size);
- //read_depth_supported=false;
-
- canvas_shadow_blur = canvas_light_shadow_buffer_create(max_texture_size);
-
- {
- //shadowmaps
-
- //don't use a shadowbuffer too big in GLES, this should be the maximum
- int max_shadow_size = GLOBAL_DEF("rasterizer/max_shadow_buffer_size", 1024);
- int smsize = max_shadow_size;
- while (smsize >= 16) {
-
- ShadowBuffer sb;
- bool s = sb.init(smsize, !use_rgba_shadowmaps);
- if (s)
- near_shadow_buffers.push_back(sb);
- smsize /= 2;
- }
-
- blur_shadow_buffer.init(max_shadow_size, !use_rgba_shadowmaps);
-
- //material_shader
- material_shader.set_conditional(MaterialShaderGLES2::USE_DEPTH_SHADOWS, !use_rgba_shadowmaps);
- canvas_shadow_shader.set_conditional(CanvasShadowShaderGLES2::USE_DEPTH_SHADOWS, !use_rgba_shadowmaps);
- }
-
- shadow_material = material_create(); //empty with nothing
- shadow_mat_ptr = material_owner.get(shadow_material);
-
- // Now create a second shadow material for double-sided shadow instances
- shadow_material_double_sided = material_create();
- shadow_mat_double_sided_ptr = material_owner.get(shadow_material_double_sided);
- shadow_mat_double_sided_ptr->flags[VS::MATERIAL_FLAG_DOUBLE_SIDED] = true;
-
- overdraw_material = create_overdraw_debug_material();
- copy_shader.set_conditional(CopyShaderGLES2::USE_8BIT_HDR, !use_fp16_fb);
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_DEPTH_SHADOWS, read_depth_supported);
-
- canvas_shader.set_conditional(CanvasShaderGLES2::USE_PIXEL_SNAP, GLOBAL_DEF("rendering/use_2d_pixel_snap", false));
-
- npo2_textures_available = true;
- //fragment_lighting=false;
- _rinfo.texture_mem = 0;
- current_env = NULL;
- current_rt = NULL;
- current_vd = NULL;
- current_debug = VS::SCENARIO_DEBUG_DISABLED;
- camera_ortho = false;
-
- glGenBuffers(1, &gui_quad_buffer);
- glBindBuffer(GL_ARRAY_BUFFER, gui_quad_buffer);
-#ifdef GLES_NO_CLIENT_ARRAYS //WebGL specific implementation.
- glBufferData(GL_ARRAY_BUFFER, 8 * MAX_POLYGON_VERTICES, NULL, GL_DYNAMIC_DRAW);
-#else
- glBufferData(GL_ARRAY_BUFFER, 128, NULL, GL_DYNAMIC_DRAW);
-#endif
- glBindBuffer(GL_ARRAY_BUFFER, 0); //unbind
-
-#ifdef GLES_NO_CLIENT_ARRAYS //webgl indices buffer
- glGenBuffers(1, &indices_buffer);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indices_buffer);
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, 16 * 1024, NULL, GL_DYNAMIC_DRAW);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); // unbind
-#endif
-
- shader_time_rollback = GLOBAL_DEF("rasterizer/shader_time_rollback", 300);
-
- using_canvas_bg = false;
- _update_framebuffer();
- DEBUG_TEST_ERROR("Initializing");
-}
-
-void RasterizerGLES2::finish() {
-
- free(default_material);
- free(shadow_material);
- free(shadow_material_double_sided);
- free(canvas_shadow_blur);
- free(overdraw_material);
-}
-
-int RasterizerGLES2::get_render_info(VS::RenderInfo p_info) {
-
- switch (p_info) {
-
- case VS::INFO_OBJECTS_IN_FRAME: {
-
- return _rinfo.object_count;
- } break;
- case VS::INFO_VERTICES_IN_FRAME: {
-
- return _rinfo.vertex_count;
- } break;
- case VS::INFO_MATERIAL_CHANGES_IN_FRAME: {
-
- return _rinfo.mat_change_count;
- } break;
- case VS::INFO_SHADER_CHANGES_IN_FRAME: {
-
- return _rinfo.shader_change_count;
- } break;
- case VS::INFO_DRAW_CALLS_IN_FRAME: {
-
- return _rinfo.draw_calls;
- } break;
- case VS::INFO_SURFACE_CHANGES_IN_FRAME: {
-
- return _rinfo.surface_count;
- } break;
- case VS::INFO_USAGE_VIDEO_MEM_TOTAL: {
-
- return 0;
- } break;
- case VS::INFO_VIDEO_MEM_USED: {
-
- return get_render_info(VS::INFO_TEXTURE_MEM_USED) + get_render_info(VS::INFO_VERTEX_MEM_USED);
- } break;
- case VS::INFO_TEXTURE_MEM_USED: {
-
- return _rinfo.texture_mem;
- } break;
- case VS::INFO_VERTEX_MEM_USED: {
-
- return 0;
- } break;
- }
-
- return 0;
-}
-
-void RasterizerGLES2::set_extensions(const char *p_strings) {
-
- Vector<String> strings = String(p_strings).split(" ", false);
- for (int i = 0; i < strings.size(); i++) {
-
- extensions.insert(strings[i]);
- //print_line(strings[i]);
- }
-}
-
-bool RasterizerGLES2::needs_to_draw_next_frame() const {
-
- return draw_next_frame;
-}
-
-bool RasterizerGLES2::has_feature(VS::Features p_feature) const {
-
- switch (p_feature) {
- case VS::FEATURE_SHADERS: return true;
- case VS::FEATURE_NEEDS_RELOAD_HOOK: return use_reload_hooks;
- default: return false;
- }
-}
-
-void RasterizerGLES2::reload_vram() {
-
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LEQUAL);
- glFrontFace(GL_CW);
-
- //do a single initial clear
- glClearColor(0, 0, 0, 1);
- //glClearDepth(1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glGenTextures(1, &white_tex);
- unsigned char whitetexdata[8 * 8 * 3];
- for (int i = 0; i < 8 * 8 * 3; i++) {
- whitetexdata[i] = 255;
- }
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, white_tex);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0, GL_RGB, GL_UNSIGNED_BYTE, whitetexdata);
- glGenerateMipmap(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, 0);
-
- List<RID> textures;
- texture_owner.get_owned_list(&textures);
- keep_copies = false;
- for (List<RID>::Element *E = textures.front(); E; E = E->next()) {
-
- RID tid = E->get();
- Texture *t = texture_owner.get(tid);
- ERR_CONTINUE(!t);
- t->tex_id = 0;
- t->data_size = 0;
- glGenTextures(1, &t->tex_id);
- t->active = false;
- if (t->render_target)
- continue;
- texture_allocate(tid, t->width, t->height, t->format, t->flags);
- bool had_image = false;
- for (int i = 0; i < 6; i++) {
- if (!t->image[i].empty()) {
- texture_set_data(tid, t->image[i], VS::CubeMapSide(i));
- had_image = true;
- }
- }
-
- if (!had_image && t->reloader) {
- Object *rl = ObjectDB::get_instance(t->reloader);
- if (rl)
- rl->call(t->reloader_func, tid);
- }
- }
- keep_copies = true;
-
- List<RID> render_targets;
- render_target_owner.get_owned_list(&render_targets);
- for (List<RID>::Element *E = render_targets.front(); E; E = E->next()) {
- RenderTarget *rt = render_target_owner.get(E->get());
-
- int w = rt->width;
- int h = rt->height;
- rt->width = 0;
- rt->height = 0;
- render_target_set_size(E->get(), w, h);
- }
-
- List<RID> meshes;
- mesh_owner.get_owned_list(&meshes);
- for (List<RID>::Element *E = meshes.front(); E; E = E->next()) {
-
- Mesh *mesh = mesh_owner.get(E->get());
- Vector<Surface *> surfaces = mesh->surfaces;
- mesh->surfaces.clear();
- for (int i = 0; i < surfaces.size(); i++) {
- mesh_add_surface(E->get(), surfaces[i]->primitive, surfaces[i]->data, surfaces[i]->morph_data, surfaces[i]->alpha_sort);
- mesh_surface_set_material(E->get(), i, surfaces[i]->material);
-
- if (surfaces[i]->array_local != 0) {
- memfree(surfaces[i]->array_local);
- };
- if (surfaces[i]->index_array_local != 0) {
- memfree(surfaces[i]->index_array_local);
- };
-
- memdelete(surfaces[i]);
- }
- }
-
- List<RID> skeletons;
- skeleton_owner.get_owned_list(&skeletons);
- for (List<RID>::Element *E = skeletons.front(); E; E = E->next()) {
-
- Skeleton *sk = skeleton_owner.get(E->get());
- if (!sk->tex_id)
- continue; //does not use hw transform, leave alone
-
- Vector<Skeleton::Bone> bones = sk->bones;
- sk->bones.clear();
- sk->tex_id = 0;
- sk->pixel_size = 1.0;
- skeleton_resize(E->get(), bones.size());
- sk->bones = bones;
- }
-
- List<RID> multimeshes;
- multimesh_owner.get_owned_list(&multimeshes);
- for (List<RID>::Element *E = multimeshes.front(); E; E = E->next()) {
-
- MultiMesh *mm = multimesh_owner.get(E->get());
- if (!mm->tex_id)
- continue; //does not use hw transform, leave alone
-
- Vector<MultiMesh::Element> elements = mm->elements;
- mm->elements.clear();
-
- mm->tw = 1;
- mm->th = 1;
- mm->tex_id = 0;
- mm->last_pass = 0;
- mm->visible = -1;
-
- multimesh_set_instance_count(E->get(), elements.size());
- mm->elements = elements;
- }
-
- if (framebuffer.fbo != 0) {
-
- framebuffer.fbo = 0;
- framebuffer.depth = 0;
- framebuffer.color = 0;
-
- for (int i = 0; i < 3; i++) {
- framebuffer.blur[i].fbo = 0;
- framebuffer.blur[i].color = 0;
- }
-
- framebuffer.luminance.clear();
- }
-
- for (int i = 0; i < near_shadow_buffers.size(); i++) {
- near_shadow_buffers[i].init(near_shadow_buffers[i].size, !use_rgba_shadowmaps);
- }
-
- blur_shadow_buffer.init(near_shadow_buffers[0].size, !use_rgba_shadowmaps);
-
- canvas_shader.clear_caches();
- material_shader.clear_caches();
- blur_shader.clear_caches();
- copy_shader.clear_caches();
-
- List<RID> shaders;
- shader_owner.get_owned_list(&shaders);
- for (List<RID>::Element *E = shaders.front(); E; E = E->next()) {
-
- Shader *s = shader_owner.get(E->get());
- s->custom_code_id = 0;
- s->version = 1;
- s->valid = false;
- shader_set_mode(E->get(), s->mode);
- }
-
- List<RID> materials;
- material_owner.get_owned_list(&materials);
- for (List<RID>::Element *E = materials.front(); E; E = E->next()) {
-
- Material *m = material_owner.get(E->get());
- RID shader = m->shader;
- m->shader_version = 0;
- material_set_shader(E->get(), shader);
- }
-}
-
-void RasterizerGLES2::set_use_framebuffers(bool p_use) {
-
- use_framebuffers = p_use;
-}
-
-RasterizerGLES2 *RasterizerGLES2::get_singleton() {
-
- return _singleton;
-};
-
-int RasterizerGLES2::RenderList::max_elements = RenderList::DEFAULT_MAX_ELEMENTS;
-
-void RasterizerGLES2::set_force_16_bits_fbo(bool p_force) {
-
- use_16bits_fbo = p_force;
-}
-
-RasterizerGLES2::RasterizerGLES2(bool p_compress_arrays, bool p_keep_ram_copy, bool p_default_fragment_lighting, bool p_use_reload_hooks) {
-
- _singleton = this;
- shrink_textures_x2 = false;
- RenderList::max_elements = GLOBAL_DEF("rasterizer/max_render_elements", (int)RenderList::DEFAULT_MAX_ELEMENTS);
- if (RenderList::max_elements > 64000)
- RenderList::max_elements = 64000;
- if (RenderList::max_elements < 1024)
- RenderList::max_elements = 1024;
-
- opaque_render_list.init();
- alpha_render_list.init();
-
- skinned_buffer_size = GLOBAL_DEF("rasterizer/skeleton_buffer_size_kb", DEFAULT_SKINNED_BUFFER_SIZE);
- if (skinned_buffer_size < 256)
- skinned_buffer_size = 256;
- if (skinned_buffer_size > 16384)
- skinned_buffer_size = 16384;
- skinned_buffer_size *= 1024;
- skinned_buffer = memnew_arr(uint8_t, skinned_buffer_size);
-
- keep_copies = p_keep_ram_copy;
- use_reload_hooks = p_use_reload_hooks;
- pack_arrays = p_compress_arrays;
- p_default_fragment_lighting = false;
- fragment_lighting = GLOBAL_DEF("rasterizer/use_fragment_lighting", true);
- read_depth_supported = true; //todo check for extension
- shadow_filter = ShadowFilterTechnique((int)(GLOBAL_DEF("rasterizer/shadow_filter", SHADOW_FILTER_PCF5)));
- ProjectSettings::get_singleton()->set_custom_property_info("rasterizer/shadow_filter", PropertyInfo(Variant::INT, "rasterizer/shadow_filter", PROPERTY_HINT_ENUM, "None,PCF5,PCF13,ESM"));
- use_fp16_fb = bool(GLOBAL_DEF("rasterizer/fp16_framebuffer", true));
- use_shadow_mapping = true;
- use_fast_texture_filter = !bool(GLOBAL_DEF("rasterizer/trilinear_mipmap_filter", true));
- low_memory_2d = bool(GLOBAL_DEF("rasterizer/low_memory_2d_mode", false));
- skel_default.resize(1024 * 4);
- for (int i = 0; i < 1024 / 3; i++) {
-
- float *ptr = skel_default.ptr();
- ptr += i * 4 * 4;
- ptr[0] = 1.0;
- ptr[1] = 0.0;
- ptr[2] = 0.0;
- ptr[3] = 0.0;
-
- ptr[4] = 0.0;
- ptr[5] = 1.0;
- ptr[6] = 0.0;
- ptr[7] = 0.0;
-
- ptr[8] = 0.0;
- ptr[9] = 0.0;
- ptr[10] = 1.0;
- ptr[12] = 0.0;
- }
-
- base_framebuffer = 0;
- frame = 0;
- draw_next_frame = false;
- use_framebuffers = true;
- framebuffer.active = false;
- tc0_id_cache = 0;
- tc0_idx = 0;
- use_16bits_fbo = false;
-};
-
-void RasterizerGLES2::restore_framebuffer() {
-
- glBindFramebuffer(GL_FRAMEBUFFER, base_framebuffer);
-}
-
-RasterizerGLES2::~RasterizerGLES2() {
-
- memdelete_arr(skinned_buffer);
-};
-
-#endif
diff --git a/drivers/gles2/rasterizer_gles2.h b/drivers/gles2/rasterizer_gles2.h
deleted file mode 100644
index e86d3ba298..0000000000
--- a/drivers/gles2/rasterizer_gles2.h
+++ /dev/null
@@ -1,1686 +0,0 @@
-/*************************************************************************/
-/* rasterizer_gles2.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 RASTERIZER_GLES2_H
-#define RASTERIZER_GLES2_H
-
-#include "servers/visual/rasterizer.h"
-
-#define MAX_POLYGON_VERTICES 4096 //used for WebGL canvas_draw_polygon call.
-
-#ifdef GLES2_ENABLED
-
-#include "camera_matrix.h"
-#include "image.h"
-#include "list.h"
-#include "map.h"
-#include "rid.h"
-#include "self_list.h"
-#include "servers/visual_server.h"
-#include "sort.h"
-
-#include "platform_config.h"
-#ifndef GLES2_INCLUDE_H
-#include <GLES2/gl2.h>
-#else
-#include GLES2_INCLUDE_H
-#endif
-
-#include "drivers/gles2/shader_compiler_gles2.h"
-#include "drivers/gles2/shaders/blur.glsl.h"
-#include "drivers/gles2/shaders/canvas.glsl.h"
-#include "drivers/gles2/shaders/canvas_shadow.glsl.h"
-#include "drivers/gles2/shaders/copy.glsl.h"
-#include "drivers/gles2/shaders/material.glsl.h"
-#include "servers/visual/particle_system_sw.h"
-
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-class RasterizerGLES2 : public Rasterizer {
-
- enum {
-
- MAX_SCENE_LIGHTS = 2048,
- LIGHT_SPOT_BIT = 0x80,
- DEFAULT_SKINNED_BUFFER_SIZE = 2048, // 10k vertices
- MAX_HW_LIGHTS = 1,
- };
-
- uint8_t *skinned_buffer;
- int skinned_buffer_size;
- bool pvr_supported;
- bool pvr_srgb_supported;
- bool s3tc_supported;
- bool s3tc_srgb_supported;
- bool latc_supported;
- bool etc_supported;
- bool atitc_supported;
- bool npo2_textures_available;
- bool read_depth_supported;
- bool use_framebuffers;
- bool full_float_fb_supported;
- bool use_shadow_mapping;
- bool use_fp16_fb;
- bool srgb_supported;
- bool float_supported;
- bool float_linear_supported;
- bool use_16bits_fbo;
-
- ShadowFilterTechnique shadow_filter;
-
- bool use_shadow_esm;
- bool use_shadow_pcf;
- bool use_hw_skeleton_xform;
- bool use_depth24;
- bool use_texture_instancing;
- bool use_attribute_instancing;
- bool use_rgba_shadowmaps;
- bool use_anisotropic_filter;
- float anisotropic_level;
-
- bool use_half_float;
- bool low_memory_2d;
-
- bool shrink_textures_x2;
-
- Vector<float> skel_default;
-
- Image _get_gl_image_and_format(const Image &p_image, Image::Format p_format, uint32_t p_flags, GLenum &r_gl_format, GLenum &r_gl_internal_format, int &r_gl_components, bool &r_has_alpha_cache, bool &r_compressed);
-
- struct RenderTarget;
-
- struct Texture {
-
- String path;
- uint32_t flags;
- int width, height;
- int alloc_width, alloc_height;
- Image::Format format;
-
- GLenum target;
- GLenum gl_format_cache;
- GLenum gl_internal_format_cache;
- int gl_components_cache;
- int data_size; //original data size, useful for retrieving back
- bool has_alpha;
- bool format_has_alpha;
- bool compressed;
- bool disallow_mipmaps;
- int total_data_size;
- bool ignore_mipmaps;
-
- ObjectID reloader;
- StringName reloader_func;
- Image image[6];
-
- int mipmaps;
-
- bool active;
- GLuint tex_id;
-
- RenderTarget *render_target;
-
- Texture() {
-
- ignore_mipmaps = false;
- render_target = NULL;
- flags = width = height = 0;
- tex_id = 0;
- data_size = 0;
- format = Image::FORMAT_L8;
- gl_components_cache = 0;
- format_has_alpha = false;
- has_alpha = false;
- active = false;
- disallow_mipmaps = false;
- compressed = false;
- total_data_size = 0;
- target = GL_TEXTURE_2D;
- mipmaps = 0;
-
- reloader = 0;
- }
-
- ~Texture() {
-
- if (tex_id != 0) {
-
- glDeleteTextures(1, &tex_id);
- }
- }
- };
-
- mutable RID_Owner<Texture> texture_owner;
-
- struct Shader {
-
- String vertex_code;
- String fragment_code;
- String light_code;
- int vertex_line;
- int fragment_line;
- int light_line;
- VS::ShaderMode mode;
-
- uint32_t custom_code_id;
- uint32_t version;
-
- bool valid;
- bool has_alpha;
- bool can_zpass;
- bool has_texscreen;
- bool has_screen_uv;
- bool writes_vertex;
- bool uses_discard;
- bool uses_time;
- bool uses_normal;
- bool uses_texpixel_size;
-
- Map<StringName, ShaderLanguage::Uniform> uniforms;
- StringName first_texture;
-
- Map<StringName, RID> default_textures;
-
- SelfList<Shader> dirty_list;
-
- Shader()
- : dirty_list(this) {
-
- valid = false;
- custom_code_id = 0;
- has_alpha = false;
- version = 1;
- vertex_line = 0;
- fragment_line = 0;
- light_line = 0;
- can_zpass = true;
- has_texscreen = false;
- has_screen_uv = false;
- writes_vertex = false;
- uses_discard = false;
- uses_time = false;
- uses_normal = false;
- }
- };
-
- mutable RID_Owner<Shader> shader_owner;
- mutable SelfList<Shader>::List _shader_dirty_list;
- _FORCE_INLINE_ void _shader_make_dirty(Shader *p_shader);
- void _update_shader(Shader *p_shader) const;
-
- struct Material {
-
- bool flags[VS::MATERIAL_FLAG_MAX];
-
- VS::MaterialBlendMode blend_mode;
- VS::MaterialDepthDrawMode depth_draw_mode;
-
- float line_width;
- bool has_alpha;
-
- mutable uint32_t shader_version;
-
- RID shader; // shader material
- Shader *shader_cache;
-
- struct UniformData {
-
- bool inuse;
- bool istexture;
- Variant value;
- int index;
- };
-
- mutable Map<StringName, UniformData> shader_params;
-
- uint64_t last_pass;
-
- Material() {
-
- for (int i = 0; i < VS::MATERIAL_FLAG_MAX; i++)
- flags[i] = false;
- flags[VS::MATERIAL_FLAG_VISIBLE] = true;
-
- line_width = 1;
- has_alpha = false;
- depth_draw_mode = VS::MATERIAL_DEPTH_DRAW_OPAQUE_ONLY;
- blend_mode = VS::MATERIAL_BLEND_MODE_MIX;
- last_pass = 0;
- shader_version = 0;
- shader_cache = NULL;
- }
- };
-
- _FORCE_INLINE_ void _update_material_shader_params(Material *p_material) const;
- mutable RID_Owner<Material> material_owner;
-
- struct Geometry {
-
- enum Type {
- GEOMETRY_INVALID,
- GEOMETRY_SURFACE,
- GEOMETRY_IMMEDIATE,
- GEOMETRY_PARTICLES,
- GEOMETRY_MULTISURFACE,
- };
-
- Type type;
- RID material;
- bool has_alpha;
- bool material_owned;
-
- Geometry() {
- has_alpha = false;
- material_owned = false;
- }
- virtual ~Geometry(){};
- };
-
- struct GeometryOwner {
-
- virtual ~GeometryOwner() {}
- };
-
- struct Mesh;
-
- struct Surface : public Geometry {
-
- struct ArrayData {
-
- uint32_t ofs, size, datatype, count;
- bool normalize;
- bool bind;
-
- ArrayData() {
- ofs = 0;
- size = 0;
- count = 0;
- datatype = 0;
- normalize = 0;
- bind = false;
- }
- };
-
- Mesh *mesh;
-
- Array data;
- Array morph_data;
- ArrayData array[VS::ARRAY_MAX];
- // support for vertex array objects
- GLuint array_object_id;
- // support for vertex buffer object
- GLuint vertex_id; // 0 means, unconfigured
- GLuint index_id; // 0 means, unconfigured
- // no support for the above, array in localmem.
- uint8_t *array_local;
- uint8_t *index_array_local;
- Vector<AABB> skeleton_bone_aabb;
- Vector<bool> skeleton_bone_used;
-
- //bool packed;
-
- struct MorphTarget {
- uint32_t configured_format;
- uint8_t *array;
- };
-
- MorphTarget *morph_targets_local;
- int morph_target_count;
- AABB aabb;
-
- int array_len;
- int index_array_len;
- int max_bone;
-
- float vertex_scale;
- float uv_scale;
- float uv2_scale;
-
- bool alpha_sort;
-
- VS::PrimitiveType primitive;
-
- uint32_t format;
- uint32_t configured_format;
-
- int stride;
- int local_stride;
- uint32_t morph_format;
-
- bool active;
-
- Point2 uv_min;
- Point2 uv_max;
-
- Surface() {
-
- array_len = 0;
- local_stride = 0;
- morph_format = 0;
- type = GEOMETRY_SURFACE;
- primitive = VS::PRIMITIVE_POINTS;
- index_array_len = 0;
- vertex_scale = 1.0;
- uv_scale = 1.0;
- uv2_scale = 1.0;
-
- alpha_sort = false;
-
- format = 0;
- stride = 0;
- morph_targets_local = 0;
- morph_target_count = 0;
-
- array_local = index_array_local = 0;
- vertex_id = index_id = 0;
-
- active = false;
- //packed=false;
- }
-
- ~Surface() {
- }
- };
-
- struct Mesh {
-
- bool active;
- Vector<Surface *> surfaces;
- int morph_target_count;
- VS::MorphTargetMode morph_target_mode;
- AABB custom_aabb;
-
- mutable uint64_t last_pass;
- Mesh() {
- morph_target_mode = VS::MORPH_MODE_NORMALIZED;
- morph_target_count = 0;
- last_pass = 0;
- active = false;
- }
- };
- mutable RID_Owner<Mesh> mesh_owner;
-
- Error _surface_set_arrays(Surface *p_surface, uint8_t *p_mem, uint8_t *p_index_mem, const Array &p_arrays, bool p_main);
-
- struct MultiMesh;
-
- struct MultiMeshSurface : public Geometry {
-
- Surface *surface;
- MultiMeshSurface() { type = GEOMETRY_MULTISURFACE; }
- };
-
- struct MultiMesh : public GeometryOwner {
-
- struct Element {
-
- float matrix[16];
- uint8_t color[4];
- Element() {
- matrix[0] = 1;
- matrix[1] = 0;
- matrix[2] = 0;
- matrix[3] = 0;
-
- matrix[4] = 0;
- matrix[5] = 1;
- matrix[6] = 0;
- matrix[7] = 0;
-
- matrix[8] = 0;
- matrix[9] = 0;
- matrix[10] = 1;
- matrix[11] = 0;
-
- matrix[12] = 0;
- matrix[13] = 0;
- matrix[14] = 0;
- matrix[15] = 1;
- };
- };
-
- AABB aabb;
- RID mesh;
- int visible;
-
- //IDirect3DVertexBuffer9* instance_buffer;
- Vector<Element> elements;
- Vector<MultiMeshSurface> cache_surfaces;
- mutable uint64_t last_pass;
- GLuint tex_id;
- int tw;
- int th;
-
- SelfList<MultiMesh> dirty_list;
-
- MultiMesh()
- : dirty_list(this) {
-
- tw = 1;
- th = 1;
- tex_id = 0;
- last_pass = 0;
- visible = -1;
- }
- };
-
- mutable RID_Owner<MultiMesh> multimesh_owner;
- mutable SelfList<MultiMesh>::List _multimesh_dirty_list;
-
- struct Immediate : public Geometry {
-
- struct Chunk {
-
- RID texture;
- VS::PrimitiveType primitive;
- Vector<Vector3> vertices;
- Vector<Vector3> normals;
- Vector<Plane> tangents;
- Vector<Color> colors;
- Vector<Vector2> uvs;
- Vector<Vector2> uvs2;
- };
-
- List<Chunk> chunks;
- bool building;
- int mask;
- AABB aabb;
-
- Immediate() {
- type = GEOMETRY_IMMEDIATE;
- building = false;
- }
- };
-
- mutable RID_Owner<Immediate> immediate_owner;
-
- struct Particles : public Geometry {
-
- ParticleSystemSW data; // software particle system
-
- Particles() {
- type = GEOMETRY_PARTICLES;
- }
- };
-
- mutable RID_Owner<Particles> particles_owner;
-
- struct ParticlesInstance : public GeometryOwner {
-
- RID particles;
-
- ParticleSystemProcessSW particles_process;
- Transform transform;
-
- ParticlesInstance() {}
- };
-
- mutable RID_Owner<ParticlesInstance> particles_instance_owner;
- ParticleSystemDrawInfoSW particle_draw_info;
-
- struct Skeleton {
-
- struct Bone {
-
- float mtx[4][4]; //used
-
- Bone() {
- for (int i = 0; i < 4; i++) {
- for (int j = 0; j < 4; j++) {
-
- mtx[i][j] = (i == j) ? 1 : 0;
- }
- }
- }
-
- _ALWAYS_INLINE_ void transform_add_mul3(const float *p_src, float *r_dst, float p_weight) const {
-
- r_dst[0] += ((mtx[0][0] * p_src[0]) + (mtx[1][0] * p_src[1]) + (mtx[2][0] * p_src[2]) + mtx[3][0]) * p_weight;
- r_dst[1] += ((mtx[0][1] * p_src[0]) + (mtx[1][1] * p_src[1]) + (mtx[2][1] * p_src[2]) + mtx[3][1]) * p_weight;
- r_dst[2] += ((mtx[0][2] * p_src[0]) + (mtx[1][2] * p_src[1]) + (mtx[2][2] * p_src[2]) + mtx[3][2]) * p_weight;
- }
- _ALWAYS_INLINE_ void transform3_add_mul3(const float *p_src, float *r_dst, float p_weight) const {
-
- r_dst[0] += ((mtx[0][0] * p_src[0]) + (mtx[1][0] * p_src[1]) + (mtx[2][0] * p_src[2])) * p_weight;
- r_dst[1] += ((mtx[0][1] * p_src[0]) + (mtx[1][1] * p_src[1]) + (mtx[2][1] * p_src[2])) * p_weight;
- r_dst[2] += ((mtx[0][2] * p_src[0]) + (mtx[1][2] * p_src[1]) + (mtx[2][2] * p_src[2])) * p_weight;
- }
-
- _ALWAYS_INLINE_ AABB transform_aabb(const AABB &p_aabb) const {
-
- float vertices[8][3] = {
- { p_aabb.pos.x + p_aabb.size.x, p_aabb.pos.y + p_aabb.size.y, p_aabb.pos.z + p_aabb.size.z },
- { p_aabb.pos.x + p_aabb.size.x, p_aabb.pos.y + p_aabb.size.y, p_aabb.pos.z },
- { p_aabb.pos.x + p_aabb.size.x, p_aabb.pos.y, p_aabb.pos.z + p_aabb.size.z },
- { p_aabb.pos.x + p_aabb.size.x, p_aabb.pos.y, p_aabb.pos.z },
- { p_aabb.pos.x, p_aabb.pos.y + p_aabb.size.y, p_aabb.pos.z + p_aabb.size.z },
- { p_aabb.pos.x, p_aabb.pos.y + p_aabb.size.y, p_aabb.pos.z },
- { p_aabb.pos.x, p_aabb.pos.y, p_aabb.pos.z + p_aabb.size.z },
- { p_aabb.pos.x, p_aabb.pos.y, p_aabb.pos.z }
- };
-
- AABB ret;
-
- for (int i = 0; i < 8; i++) {
-
- Vector3 xv(
-
- ((mtx[0][0] * vertices[i][0]) + (mtx[1][0] * vertices[i][1]) + (mtx[2][0] * vertices[i][2]) + mtx[3][0]),
- ((mtx[0][1] * vertices[i][0]) + (mtx[1][1] * vertices[i][1]) + (mtx[2][1] * vertices[i][2]) + mtx[3][1]),
- ((mtx[0][2] * vertices[i][0]) + (mtx[1][2] * vertices[i][1]) + (mtx[2][2] * vertices[i][2]) + mtx[3][2]));
-
- if (i == 0)
- ret.pos = xv;
- else
- ret.expand_to(xv);
- }
-
- return ret;
- }
- };
-
- GLuint tex_id;
- float pixel_size; //for texture
- Vector<Bone> bones;
-
- SelfList<Skeleton> dirty_list;
-
- Skeleton()
- : dirty_list(this) {
- tex_id = 0;
- pixel_size = 1.0;
- }
- };
-
- mutable RID_Owner<Skeleton> skeleton_owner;
- mutable SelfList<Skeleton>::List _skeleton_dirty_list;
-
- template <bool USE_NORMAL, bool USE_TANGENT, bool INPLACE>
- void _skeleton_xform(const uint8_t *p_src_array, int p_src_stride, uint8_t *p_dst_array, int p_dst_stride, int p_elements, const uint8_t *p_src_bones, const uint8_t *p_src_weights, const Skeleton::Bone *p_bone_xforms);
-
- struct Light {
-
- VS::LightType type;
- float vars[VS::LIGHT_PARAM_MAX];
- Color colors[3];
- bool shadow_enabled;
- RID projector;
- bool volumetric_enabled;
- Color volumetric_color;
- VS::LightOmniShadowMode omni_shadow_mode;
- VS::LightDirectionalShadowMode directional_shadow_mode;
- float directional_shadow_param[3];
-
- Light() {
-
- vars[VS::LIGHT_PARAM_SPOT_ATTENUATION] = 1;
- vars[VS::LIGHT_PARAM_SPOT_ANGLE] = 45;
- vars[VS::LIGHT_PARAM_ATTENUATION] = 1.0;
- vars[VS::LIGHT_PARAM_ENERGY] = 1.0;
- vars[VS::LIGHT_PARAM_RADIUS] = 1.0;
- vars[VS::LIGHT_PARAM_SHADOW_DARKENING] = 0.0;
- vars[VS::LIGHT_PARAM_SHADOW_Z_OFFSET] = 0.2;
- vars[VS::LIGHT_PARAM_SHADOW_Z_SLOPE_SCALE] = 1.4;
- vars[VS::LIGHT_PARAM_SHADOW_ESM_MULTIPLIER] = 60.0;
- vars[VS::LIGHT_PARAM_SHADOW_BLUR_PASSES] = 1;
- colors[VS::LIGHT_COLOR_DIFFUSE] = Color(1, 1, 1);
- colors[VS::LIGHT_COLOR_SPECULAR] = Color(1, 1, 1);
- shadow_enabled = false;
- volumetric_enabled = false;
-
- directional_shadow_param[VS::LIGHT_DIRECTIONAL_SHADOW_PARAM_PSSM_SPLIT_WEIGHT] = 0.5;
- directional_shadow_param[VS::LIGHT_DIRECTIONAL_SHADOW_PARAM_MAX_DISTANCE] = 0;
- directional_shadow_param[VS::LIGHT_DIRECTIONAL_SHADOW_PARAM_PSSM_ZOFFSET_SCALE] = 2.0;
- omni_shadow_mode = VS::LIGHT_OMNI_SHADOW_DEFAULT;
- directional_shadow_mode = VS::LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL;
- }
- };
-
- struct Environment {
-
- VS::EnvironmentBG bg_mode;
- Variant bg_param[VS::ENV_BG_PARAM_MAX];
- bool fx_enabled[VS::ENV_FX_MAX];
- Variant fx_param[VS::ENV_FX_PARAM_MAX];
-
- Environment() {
-
- bg_mode = VS::ENV_BG_DEFAULT_COLOR;
- bg_param[VS::ENV_BG_PARAM_COLOR] = Color(0, 0, 0);
- bg_param[VS::ENV_BG_PARAM_TEXTURE] = RID();
- bg_param[VS::ENV_BG_PARAM_CUBEMAP] = RID();
- bg_param[VS::ENV_BG_PARAM_ENERGY] = 1.0;
- bg_param[VS::ENV_BG_PARAM_SCALE] = 1.0;
- bg_param[VS::ENV_BG_PARAM_GLOW] = 0.0;
- bg_param[VS::ENV_BG_PARAM_CANVAS_MAX_LAYER] = 0;
-
- for (int i = 0; i < VS::ENV_FX_MAX; i++)
- fx_enabled[i] = false;
-
- fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_PASSES] = 1;
- fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_SCALE] = 1.0;
- fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_STRENGTH] = 1.0;
- fx_param[VS::ENV_FX_PARAM_GLOW_BLUR_BLEND_MODE] = 0;
- fx_param[VS::ENV_FX_PARAM_GLOW_BLOOM] = 0.0;
- fx_param[VS::ENV_FX_PARAM_GLOW_BLOOM_THRESHOLD] = 0.5;
- fx_param[VS::ENV_FX_PARAM_DOF_BLUR_PASSES] = 1;
- fx_param[VS::ENV_FX_PARAM_DOF_BLUR_BEGIN] = 100.0;
- fx_param[VS::ENV_FX_PARAM_DOF_BLUR_RANGE] = 10.0;
- fx_param[VS::ENV_FX_PARAM_HDR_TONEMAPPER] = VS::ENV_FX_HDR_TONE_MAPPER_LINEAR;
- fx_param[VS::ENV_FX_PARAM_HDR_EXPOSURE] = 0.4;
- fx_param[VS::ENV_FX_PARAM_HDR_WHITE] = 1.0;
- fx_param[VS::ENV_FX_PARAM_HDR_GLOW_THRESHOLD] = 0.95;
- fx_param[VS::ENV_FX_PARAM_HDR_GLOW_SCALE] = 0.2;
- fx_param[VS::ENV_FX_PARAM_HDR_MIN_LUMINANCE] = 0.4;
- fx_param[VS::ENV_FX_PARAM_HDR_MAX_LUMINANCE] = 8.0;
- fx_param[VS::ENV_FX_PARAM_HDR_EXPOSURE_ADJUST_SPEED] = 0.5;
- fx_param[VS::ENV_FX_PARAM_FOG_BEGIN] = 100.0;
- fx_param[VS::ENV_FX_PARAM_FOG_ATTENUATION] = 1.0;
- fx_param[VS::ENV_FX_PARAM_FOG_BEGIN_COLOR] = Color(0, 0, 0);
- fx_param[VS::ENV_FX_PARAM_FOG_END_COLOR] = Color(0, 0, 0);
- fx_param[VS::ENV_FX_PARAM_FOG_BG] = true;
- fx_param[VS::ENV_FX_PARAM_BCS_BRIGHTNESS] = 1.0;
- fx_param[VS::ENV_FX_PARAM_BCS_CONTRAST] = 1.0;
- fx_param[VS::ENV_FX_PARAM_BCS_SATURATION] = 1.0;
- }
- };
-
- mutable RID_Owner<Environment> environment_owner;
-
- struct SampledLight {
-
- int w, h;
- GLuint texture;
- float multiplier;
- bool is_float;
- };
-
- mutable RID_Owner<SampledLight> sampled_light_owner;
-
- struct ViewportData {
-
- //1x1 fbo+texture for storing previous HDR value
- GLuint lum_fbo;
- GLuint lum_color;
-
- ViewportData() {
- lum_fbo = 0;
- lum_color = 0;
- }
- };
-
- mutable RID_Owner<ViewportData> viewport_data_owner;
-
- struct RenderTarget {
-
- Texture *texture_ptr;
- RID texture;
- GLuint fbo;
- GLuint color;
- GLuint depth;
- int width, height;
- uint64_t last_pass;
- };
-
- mutable RID_Owner<RenderTarget> render_target_owner;
-
- struct ShadowBuffer;
-
- struct LightInstance {
-
- struct SplitInfo {
-
- CameraMatrix camera;
- Transform transform;
- float near;
- float far;
- };
-
- RID light;
- Light *base;
- Transform transform;
- CameraMatrix projection;
-
- Transform custom_transform[4];
- CameraMatrix custom_projection[4];
-
- Vector3 light_vector;
- Vector3 spot_vector;
- float linear_att;
-
- uint64_t shadow_pass;
- uint64_t last_pass;
- uint16_t sort_key;
-
- Vector2 dp;
-
- CameraMatrix shadow_projection[4];
- float shadow_split[4];
-
- ShadowBuffer *near_shadow_buffer;
-
- void clear_shadow_buffers() {
-
- clear_near_shadow_buffers();
- }
-
- void clear_near_shadow_buffers() {
-
- if (near_shadow_buffer) {
- near_shadow_buffer->owner = NULL;
- near_shadow_buffer = NULL;
- }
- }
-
- LightInstance() {
- shadow_pass = 0;
- last_pass = 0;
- sort_key = 0;
- near_shadow_buffer = NULL;
- }
- };
- mutable RID_Owner<Light> light_owner;
- mutable RID_Owner<LightInstance> light_instance_owner;
-
- LightInstance *light_instances[MAX_SCENE_LIGHTS];
- LightInstance *directional_lights[4];
- int light_instance_count;
- int directional_light_count;
- int last_light_id;
- bool current_depth_test;
- bool current_depth_mask;
- VS::MaterialBlendMode current_blend_mode;
- bool use_fast_texture_filter;
- int max_texture_size;
-
- bool fragment_lighting;
- RID shadow_material;
- RID shadow_material_double_sided;
- Material *shadow_mat_ptr;
- Material *shadow_mat_double_sided_ptr;
-
- int max_texture_units;
- GLuint base_framebuffer;
-
- GLuint gui_quad_buffer;
- GLuint indices_buffer;
-
- struct RenderList {
-
- enum {
- DEFAULT_MAX_ELEMENTS = 4096,
- MAX_LIGHTS = 4,
- SORT_FLAG_SKELETON = 1,
- SORT_FLAG_INSTANCING = 2,
- };
-
- static int max_elements;
-
- struct Element {
-
- float depth;
- const InstanceData *instance;
- const Skeleton *skeleton;
- const Geometry *geometry;
- const Geometry *geometry_cmp;
- const Material *material;
- const GeometryOwner *owner;
- bool *additive_ptr;
- bool additive;
- bool mirror;
- union {
-#ifdef BIG_ENDIAN_ENABLED
- struct {
- uint8_t sort_flags;
- uint8_t light_type;
- uint16_t light;
- };
-#else
- struct {
- uint16_t light;
- uint8_t light_type;
- uint8_t sort_flags;
- };
-#endif
- uint32_t sort_key;
- };
- };
-
- Element *_elements;
- Element **elements;
- int element_count;
-
- void clear() {
-
- element_count = 0;
- }
-
- struct SortZ {
-
- _FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const {
-
- return A->depth > B->depth;
- }
- };
-
- void sort_z() {
-
- SortArray<Element *, SortZ> sorter;
- sorter.sort(elements, element_count);
- }
-
- struct SortMatGeom {
-
- _FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const {
- // TODO move to a single uint64 (one comparison)
- if (A->material->shader_cache == B->material->shader_cache) {
- if (A->material == B->material) {
-
- return A->geometry_cmp < B->geometry_cmp;
- } else {
-
- return (A->material < B->material);
- }
- } else {
-
- return A->material->shader_cache < B->material->shader_cache;
- }
- }
- };
-
- void sort_mat_geom() {
-
- SortArray<Element *, SortMatGeom> sorter;
- sorter.sort(elements, element_count);
- }
-
- struct SortMatLight {
-
- _FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const {
-
- if (A->geometry_cmp == B->geometry_cmp) {
-
- if (A->material == B->material) {
-
- return A->light < B->light;
- } else {
-
- return (A->material < B->material);
- }
- } else {
-
- return (A->geometry_cmp < B->geometry_cmp);
- }
- }
- };
-
- void sort_mat_light() {
-
- SortArray<Element *, SortMatLight> sorter;
- sorter.sort(elements, element_count);
- }
-
- struct SortMatLightType {
-
- _FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const {
-
- if (A->light_type == B->light_type) {
- if (A->material->shader_cache == B->material->shader_cache) {
- if (A->material == B->material) {
-
- return (A->geometry_cmp < B->geometry_cmp);
- } else {
-
- return (A->material < B->material);
- }
- } else {
-
- return (A->material->shader_cache < B->material->shader_cache);
- }
- } else {
-
- return A->light_type < B->light_type;
- }
- }
- };
-
- void sort_mat_light_type() {
-
- SortArray<Element *, SortMatLightType> sorter;
- sorter.sort(elements, element_count);
- }
-
- struct SortMatLightTypeFlags {
-
- _FORCE_INLINE_ bool operator()(const Element *A, const Element *B) const {
-
- if (A->sort_key == B->sort_key) {
- if (A->material->shader_cache == B->material->shader_cache) {
- if (A->material == B->material) {
-
- return (A->geometry_cmp < B->geometry_cmp);
- } else {
-
- return (A->material < B->material);
- }
- } else {
-
- return (A->material->shader_cache < B->material->shader_cache);
- }
- } else {
-
- return A->sort_key < B->sort_key; //one is null and one is not
- }
- }
- };
-
- void sort_mat_light_type_flags() {
-
- SortArray<Element *, SortMatLightTypeFlags> sorter;
- sorter.sort(elements, element_count);
- }
- _FORCE_INLINE_ Element *add_element() {
-
- if (element_count >= max_elements)
- return NULL;
- elements[element_count] = &_elements[element_count];
- return elements[element_count++];
- }
-
- void init() {
-
- element_count = 0;
- elements = memnew_arr(Element *, max_elements);
- _elements = memnew_arr(Element, max_elements);
- for (int i = 0; i < max_elements; i++)
- elements[i] = &_elements[i]; // assign elements
- }
-
- RenderList() {
- }
- ~RenderList() {
- memdelete_arr(elements);
- memdelete_arr(_elements);
- }
- };
-
- RenderList opaque_render_list;
- RenderList alpha_render_list;
-
- RID default_material;
-
- CameraMatrix camera_projection;
- Transform camera_transform;
- Transform camera_transform_inverse;
- float camera_z_near;
- float camera_z_far;
- Size2 camera_vp_size;
- bool camera_ortho;
- Set<String> extensions;
- bool texscreen_copied;
- bool texscreen_used;
-
- Plane camera_plane;
-
- void _add_geometry(const Geometry *p_geometry, const InstanceData *p_instance, const Geometry *p_geometry_cmp, const GeometryOwner *p_owner, int p_material = -1);
- void _render_list_forward(RenderList *p_render_list, const Transform &p_view_transform, const Transform &p_view_transform_inverse, const CameraMatrix &p_projection, bool p_reverse_cull = false, bool p_fragment_light = false, bool p_alpha_pass = false);
-
- //void _setup_light(LightInstance* p_instance, int p_idx);
- void _setup_light(uint16_t p_light);
-
- _FORCE_INLINE_ void _setup_shader_params(const Material *p_material);
- bool _setup_material(const Geometry *p_geometry, const Material *p_material, bool p_no_const_light, bool p_opaque_pass);
- void _setup_skeleton(const Skeleton *p_skeleton);
-
- Error _setup_geometry(const Geometry *p_geometry, const Material *p_material, const Skeleton *p_skeleton, const float *p_morphs);
- void _render(const Geometry *p_geometry, const Material *p_material, const Skeleton *p_skeleton, const GeometryOwner *p_owner, const Transform &p_xform);
-
- /***********/
- /* SHADOWS */
- /***********/
-
- struct ShadowBuffer {
-
- int size;
- GLuint fbo;
- GLuint rbo;
- GLuint depth;
- GLuint rgba; //for older devices
-#if 0
- GLuint fbo_blur;
- GLuint rbo_blur;
- GLuint blur;
-#endif
-
- LightInstance *owner;
- bool init(int p_size, bool p_use_depth);
- ShadowBuffer() {
- size = 0;
- depth = 0;
- owner = NULL;
- }
- };
-
- Vector<ShadowBuffer> near_shadow_buffers;
- ShadowBuffer blur_shadow_buffer;
-
- Vector<ShadowBuffer> far_shadow_buffers;
-
- LightInstance *shadow;
- int shadow_pass;
-
- float shadow_near_far_split_size_ratio;
- bool _allocate_shadow_buffers(LightInstance *p_instance, Vector<ShadowBuffer> &p_buffers);
- void _debug_draw_shadow(GLuint tex, const Rect2 &p_rect);
- void _debug_draw_shadows_type(Vector<ShadowBuffer> &p_shadows, Point2 &ofs);
- void _debug_shadows();
- void _debug_luminances();
- void _debug_samplers();
-
- /***********/
- /* FBOs */
- /***********/
-
- struct FrameBuffer {
-
- GLuint fbo;
- GLuint color;
- GLuint depth;
-
- int width, height;
- int scale;
- bool active;
-
- int blur_size;
-
- struct Blur {
-
- GLuint fbo;
- GLuint color;
-
- Blur() {
- fbo = 0;
- color = 0;
- }
- } blur[3];
-
- struct Luminance {
-
- int size;
- GLuint fbo;
- GLuint color;
-
- Luminance() {
- fbo = 0;
- color = 0;
- size = 0;
- }
- };
-
- Vector<Luminance> luminance;
-
- GLuint sample_fbo;
- GLuint sample_color;
-
- FrameBuffer() {
- blur_size = 0;
- }
-
- } framebuffer;
-
- void _update_framebuffer();
- void _process_glow_and_bloom();
- //void _update_blur_buffer();
-
- /*********/
- /* FRAME */
- /*********/
-
- struct _Rinfo {
-
- int texture_mem;
- int vertex_count;
- int object_count;
- int mat_change_count;
- int surface_count;
- int shader_change_count;
- int ci_draw_commands;
- int draw_calls;
-
- } _rinfo;
-
- /*******************/
- /* CANVAS OCCLUDER */
- /*******************/
-
- struct CanvasOccluder {
-
- GLuint vertex_id; // 0 means, unconfigured
- GLuint index_id; // 0 means, unconfigured
- DVector<Vector2> lines;
- int len;
- };
-
- RID_Owner<CanvasOccluder> canvas_occluder_owner;
-
- /***********************/
- /* CANVAS LIGHT SHADOW */
- /***********************/
-
- struct CanvasLightShadow {
-
- int size;
- int height;
- GLuint fbo;
- GLuint rbo;
- GLuint depth;
- GLuint rgba; //for older devices
-
- GLuint blur;
- };
-
- RID_Owner<CanvasLightShadow> canvas_light_shadow_owner;
-
- RID canvas_shadow_blur;
-
- /* ETC */
-
- RenderTarget *current_rt;
- bool current_rt_transparent;
- bool current_rt_vflip;
- ViewportData *current_vd;
-
- GLuint white_tex;
- RID canvas_tex;
- float canvas_opacity;
- Color canvas_modulate;
- bool canvas_use_modulate;
- bool uses_texpixel_size;
- bool rebind_texpixel_size;
- Transform canvas_transform;
- ShaderMaterial *canvas_last_material;
- bool canvas_texscreen_used;
- Vector2 normal_flip;
- _FORCE_INLINE_ void _canvas_normal_set_flip(const Vector2 &p_flip);
-
- _FORCE_INLINE_ Texture *_bind_canvas_texture(const RID &p_texture);
- VS::MaterialBlendMode canvas_blend_mode;
-
- int _setup_geometry_vinfo;
-
- bool pack_arrays;
- bool keep_copies;
- bool use_reload_hooks;
- bool cull_front;
- bool lights_use_shadow;
- _FORCE_INLINE_ void _set_cull(bool p_front, bool p_reverse_cull = false);
- _FORCE_INLINE_ Color _convert_color(const Color &p_color);
-
- void _process_glow_bloom();
- void _process_hdr();
- void _draw_tex_bg();
-
- bool using_canvas_bg;
- Size2 window_size;
- VS::ViewportRect viewport;
- double last_time;
- double time_delta;
- uint64_t frame;
- uint64_t scene_pass;
- bool draw_next_frame;
- Environment *current_env;
- VS::ScenarioDebugMode current_debug;
- RID overdraw_material;
- float shader_time_rollback;
-
- mutable MaterialShaderGLES2 material_shader;
- mutable CanvasShaderGLES2 canvas_shader;
- BlurShaderGLES2 blur_shader;
- CopyShaderGLES2 copy_shader;
- mutable CanvasShadowShaderGLES2 canvas_shadow_shader;
-
- mutable ShaderCompilerGLES2 shader_precompiler;
-
- void _draw_primitive(int p_points, const Vector3 *p_vertices, const Vector3 *p_normals, const Color *p_colors, const Vector3 *p_uvs, const Plane *p_tangents = NULL, int p_instanced = 1);
- _FORCE_INLINE_ void _draw_gui_primitive(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs);
- _FORCE_INLINE_ void _draw_gui_primitive2(int p_points, const Vector2 *p_vertices, const Color *p_colors, const Vector2 *p_uvs, const Vector2 *p_uvs2);
- void _draw_textured_quad(const Rect2 &p_rect, const Rect2 &p_src_region, const Size2 &p_tex_size, bool p_h_flip = false, bool p_v_flip = false, bool p_transpose = false);
- void _draw_quad(const Rect2 &p_rect);
- void _copy_screen_quad();
- void _copy_to_texscreen();
-
- bool _test_depth_shadow_buffer();
-
- Vector3 chunk_vertex;
- Vector3 chunk_normal;
- Plane chunk_tangent;
- Color chunk_color;
- Vector2 chunk_uv;
- Vector2 chunk_uv2;
- GLuint tc0_id_cache;
- GLuint tc0_idx;
-
- template <bool use_normalmap>
- _FORCE_INLINE_ void _canvas_item_render_commands(CanvasItem *p_item, CanvasItem *current_clip, bool &reclip);
- _FORCE_INLINE_ void _canvas_item_setup_shader_params(ShaderMaterial *material, Shader *p_shader);
- _FORCE_INLINE_ void _canvas_item_setup_shader_uniforms(ShaderMaterial *material, Shader *p_shader);
-
-public:
- /* TEXTURE API */
-
- virtual RID texture_create();
- virtual void texture_allocate(RID p_texture, int p_width, int p_height, Image::Format p_format, uint32_t p_flags = VS::TEXTURE_FLAGS_DEFAULT);
- virtual void texture_set_data(RID p_texture, const Image &p_image, VS::CubeMapSide p_cube_side = VS::CUBEMAP_LEFT);
- virtual Image texture_get_data(RID p_texture, VS::CubeMapSide p_cube_side = VS::CUBEMAP_LEFT) const;
- virtual void texture_set_flags(RID p_texture, uint32_t p_flags);
- virtual uint32_t texture_get_flags(RID p_texture) const;
- virtual Image::Format texture_get_format(RID p_texture) const;
- virtual uint32_t texture_get_width(RID p_texture) const;
- virtual uint32_t texture_get_height(RID p_texture) const;
- virtual bool texture_has_alpha(RID p_texture) const;
- virtual void texture_set_size_override(RID p_texture, int p_width, int p_height);
- virtual void texture_set_reload_hook(RID p_texture, ObjectID p_owner, const StringName &p_function) const;
-
- virtual void texture_set_path(RID p_texture, const String &p_path);
- virtual String texture_get_path(RID p_texture) const;
- virtual void texture_debug_usage(List<VS::TextureInfo> *r_info);
-
- virtual void texture_set_shrink_all_x2_on_set_data(bool p_enable);
-
- GLuint _texture_get_name(RID p_tex);
-
- /* SHADER API */
-
- virtual RID shader_create(VS::ShaderMode p_mode = VS::SHADER_MATERIAL);
-
- virtual void shader_set_mode(RID p_shader, VS::ShaderMode p_mode);
- virtual VS::ShaderMode shader_get_mode(RID p_shader) const;
-
- virtual void shader_set_code(RID p_shader, const String &p_vertex, const String &p_fragment, const String &p_light, int p_vertex_ofs = 0, int p_fragment_ofs = 0, int p_light_ofs = 0);
- virtual String shader_get_fragment_code(RID p_shader) const;
- virtual String shader_get_vertex_code(RID p_shader) const;
- virtual String shader_get_light_code(RID p_shader) const;
-
- virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const;
-
- virtual void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture);
- virtual RID shader_get_default_texture_param(RID p_shader, const StringName &p_name) const;
-
- virtual Variant shader_get_default_param(RID p_shader, const StringName &p_name);
-
- /* COMMON MATERIAL API */
-
- virtual RID material_create();
-
- virtual void material_set_shader(RID p_shader_material, RID p_shader);
- virtual RID material_get_shader(RID p_shader_material) const;
-
- virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value);
- virtual Variant material_get_param(RID p_material, const StringName &p_param) const;
-
- virtual void material_set_flag(RID p_material, VS::MaterialFlag p_flag, bool p_enabled);
- virtual bool material_get_flag(RID p_material, VS::MaterialFlag p_flag) const;
-
- virtual void material_set_depth_draw_mode(RID p_material, VS::MaterialDepthDrawMode p_mode);
- virtual VS::MaterialDepthDrawMode material_get_depth_draw_mode(RID p_material) const;
-
- virtual void material_set_blend_mode(RID p_material, VS::MaterialBlendMode p_mode);
- virtual VS::MaterialBlendMode material_get_blend_mode(RID p_material) const;
-
- virtual void material_set_line_width(RID p_material, float p_line_width);
- virtual float material_get_line_width(RID p_material) const;
-
- /* MESH API */
-
- virtual RID mesh_create();
-
- virtual void mesh_add_surface(RID p_mesh, VS::PrimitiveType p_primitive, const Array &p_arrays, const Array &p_blend_shapes = Array(), bool p_alpha_sort = false);
- virtual Array mesh_get_surface_arrays(RID p_mesh, int p_surface) const;
- virtual Array mesh_get_surface_morph_arrays(RID p_mesh, int p_surface) const;
- virtual void mesh_add_custom_surface(RID p_mesh, const Variant &p_dat);
-
- virtual void mesh_set_morph_target_count(RID p_mesh, int p_amount);
- virtual int mesh_get_morph_target_count(RID p_mesh) const;
-
- virtual void mesh_set_morph_target_mode(RID p_mesh, VS::MorphTargetMode p_mode);
- virtual VS::MorphTargetMode mesh_get_morph_target_mode(RID p_mesh) const;
-
- virtual void mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material, bool p_owned = false);
- virtual RID mesh_surface_get_material(RID p_mesh, int p_surface) const;
-
- virtual int mesh_surface_get_array_len(RID p_mesh, int p_surface) const;
- virtual int mesh_surface_get_array_index_len(RID p_mesh, int p_surface) const;
- virtual uint32_t mesh_surface_get_format(RID p_mesh, int p_surface) const;
- virtual VS::PrimitiveType mesh_surface_get_primitive_type(RID p_mesh, int p_surface) const;
-
- virtual void mesh_remove_surface(RID p_mesh, int p_index);
- virtual int mesh_get_surface_count(RID p_mesh) const;
-
- virtual AABB mesh_get_aabb(RID p_mesh, RID p_skeleton = RID()) const;
-
- virtual void mesh_set_custom_aabb(RID p_mesh, const AABB &p_aabb);
- virtual AABB mesh_get_custom_aabb(RID p_mesh) const;
-
- /* MULTIMESH API */
-
- virtual RID multimesh_create();
-
- virtual void multimesh_set_instance_count(RID p_multimesh, int p_count);
- virtual int multimesh_get_instance_count(RID p_multimesh) const;
-
- virtual void multimesh_set_mesh(RID p_multimesh, RID p_mesh);
- virtual void multimesh_set_aabb(RID p_multimesh, const AABB &p_aabb);
- virtual void multimesh_instance_set_transform(RID p_multimesh, int p_index, const Transform &p_transform);
- virtual void multimesh_instance_set_color(RID p_multimesh, int p_index, const Color &p_color);
-
- virtual RID multimesh_get_mesh(RID p_multimesh) const;
- virtual AABB multimesh_get_aabb(RID p_multimesh) const;
-
- virtual Transform multimesh_instance_get_transform(RID p_multimesh, int p_index) const;
- virtual Color multimesh_instance_get_color(RID p_multimesh, int p_index) const;
-
- virtual void multimesh_set_visible_instances(RID p_multimesh, int p_visible);
- virtual int multimesh_get_visible_instances(RID p_multimesh) const;
-
- /* IMMEDIATE API */
-
- virtual RID immediate_create();
- virtual void immediate_begin(RID p_immediate, VS::PrimitiveType p_rimitive, RID p_texture = RID());
- virtual void immediate_vertex(RID p_immediate, const Vector3 &p_vertex);
- virtual void immediate_normal(RID p_immediate, const Vector3 &p_normal);
- virtual void immediate_tangent(RID p_immediate, const Plane &p_tangent);
- virtual void immediate_color(RID p_immediate, const Color &p_color);
- virtual void immediate_uv(RID p_immediate, const Vector2 &tex_uv);
- virtual void immediate_uv2(RID p_immediate, const Vector2 &tex_uv);
- virtual void immediate_end(RID p_immediate);
- virtual void immediate_clear(RID p_immediate);
- virtual AABB immediate_get_aabb(RID p_immediate) const;
- virtual void immediate_set_material(RID p_immediate, RID p_material);
- virtual RID immediate_get_material(RID p_immediate) const;
-
- /* PARTICLES API */
-
- virtual RID particles_create();
-
- virtual void particles_set_amount(RID p_particles, int p_amount);
- virtual int particles_get_amount(RID p_particles) const;
-
- virtual void particles_set_emitting(RID p_particles, bool p_emitting);
- virtual bool particles_is_emitting(RID p_particles) const;
-
- virtual void particles_set_visibility_aabb(RID p_particles, const AABB &p_visibility);
- virtual AABB particles_get_visibility_aabb(RID p_particles) const;
-
- virtual void particles_set_emission_half_extents(RID p_particles, const Vector3 &p_half_extents);
- virtual Vector3 particles_get_emission_half_extents(RID p_particles) const;
-
- virtual void particles_set_emission_base_velocity(RID p_particles, const Vector3 &p_base_velocity);
- virtual Vector3 particles_get_emission_base_velocity(RID p_particles) const;
-
- virtual void particles_set_emission_points(RID p_particles, const DVector<Vector3> &p_points);
- virtual DVector<Vector3> particles_get_emission_points(RID p_particles) const;
-
- virtual void particles_set_gravity_normal(RID p_particles, const Vector3 &p_normal);
- virtual Vector3 particles_get_gravity_normal(RID p_particles) const;
-
- virtual void particles_set_variable(RID p_particles, VS::ParticleVariable p_variable, float p_value);
- virtual float particles_get_variable(RID p_particles, VS::ParticleVariable p_variable) const;
-
- virtual void particles_set_randomness(RID p_particles, VS::ParticleVariable p_variable, float p_randomness);
- virtual float particles_get_randomness(RID p_particles, VS::ParticleVariable p_variable) const;
-
- virtual void particles_set_color_phase_pos(RID p_particles, int p_phase, float p_pos);
- virtual float particles_get_color_phase_pos(RID p_particles, int p_phase) const;
-
- virtual void particles_set_color_phases(RID p_particles, int p_phases);
- virtual int particles_get_color_phases(RID p_particles) const;
-
- virtual void particles_set_color_phase_color(RID p_particles, int p_phase, const Color &p_color);
- virtual Color particles_get_color_phase_color(RID p_particles, int p_phase) const;
-
- virtual void particles_set_attractors(RID p_particles, int p_attractors);
- virtual int particles_get_attractors(RID p_particles) const;
-
- virtual void particles_set_attractor_pos(RID p_particles, int p_attractor, const Vector3 &p_pos);
- virtual Vector3 particles_get_attractor_pos(RID p_particles, int p_attractor) const;
-
- virtual void particles_set_attractor_strength(RID p_particles, int p_attractor, float p_force);
- virtual float particles_get_attractor_strength(RID p_particles, int p_attractor) const;
-
- virtual void particles_set_material(RID p_particles, RID p_material, bool p_owned = false);
- virtual RID particles_get_material(RID p_particles) const;
-
- virtual AABB particles_get_aabb(RID p_particles) const;
-
- virtual void particles_set_height_from_velocity(RID p_particles, bool p_enable);
- virtual bool particles_has_height_from_velocity(RID p_particles) const;
-
- virtual void particles_set_use_local_coordinates(RID p_particles, bool p_enable);
- virtual bool particles_is_using_local_coordinates(RID p_particles) const;
-
- /* SKELETON API */
-
- virtual RID skeleton_create();
- virtual void skeleton_resize(RID p_skeleton, int p_bones);
- virtual int skeleton_get_bone_count(RID p_skeleton) const;
- virtual void skeleton_bone_set_transform(RID p_skeleton, int p_bone, const Transform &p_transform);
- virtual Transform skeleton_bone_get_transform(RID p_skeleton, int p_bone);
-
- /* LIGHT API */
-
- virtual RID light_create(VS::LightType p_type);
- virtual VS::LightType light_get_type(RID p_light) const;
-
- virtual void light_set_color(RID p_light, VS::LightColor p_type, const Color &p_color);
- virtual Color light_get_color(RID p_light, VS::LightColor p_type) const;
-
- virtual void light_set_shadow(RID p_light, bool p_enabled);
- virtual bool light_has_shadow(RID p_light) const;
-
- virtual void light_set_volumetric(RID p_light, bool p_enabled);
- virtual bool light_is_volumetric(RID p_light) const;
-
- virtual void light_set_projector(RID p_light, RID p_texture);
- virtual RID light_get_projector(RID p_light) const;
-
- virtual void light_set_var(RID p_light, VS::LightParam p_var, float p_value);
- virtual float light_get_var(RID p_light, VS::LightParam p_var) const;
-
- virtual void light_set_operator(RID p_light, VS::LightOp p_op);
- virtual VS::LightOp light_get_operator(RID p_light) const;
-
- virtual void light_omni_set_shadow_mode(RID p_light, VS::LightOmniShadowMode p_mode);
- virtual VS::LightOmniShadowMode light_omni_get_shadow_mode(RID p_light) const;
-
- virtual void light_directional_set_shadow_mode(RID p_light, VS::LightDirectionalShadowMode p_mode);
- virtual VS::LightDirectionalShadowMode light_directional_get_shadow_mode(RID p_light) const;
- virtual void light_directional_set_shadow_param(RID p_light, VS::LightDirectionalShadowParam p_param, float p_value);
- virtual float light_directional_get_shadow_param(RID p_light, VS::LightDirectionalShadowParam p_param) const;
-
- virtual AABB light_get_aabb(RID p_poly) const;
-
- virtual RID light_instance_create(RID p_light);
- virtual void light_instance_set_transform(RID p_light_instance, const Transform &p_transform);
-
- virtual ShadowType light_instance_get_shadow_type(RID p_light_instance, bool p_far = false) const;
- virtual int light_instance_get_shadow_passes(RID p_light_instance) const;
- virtual bool light_instance_get_pssm_shadow_overlap(RID p_light_instance) const;
- virtual void light_instance_set_shadow_transform(RID p_light_instance, int p_index, const CameraMatrix &p_camera, const Transform &p_transform, float p_split_near = 0, float p_split_far = 0);
- virtual int light_instance_get_shadow_size(RID p_light_instance, int p_index = 0) const;
-
- virtual void shadow_clear_near();
- virtual bool shadow_allocate_near(RID p_light);
- virtual bool shadow_allocate_far(RID p_light);
-
- /* SHADOW */
-
- virtual RID particles_instance_create(RID p_particles);
- virtual void particles_instance_set_transform(RID p_particles_instance, const Transform &p_transform);
-
- /* VIEWPORT */
-
- virtual RID viewport_data_create();
-
- virtual RID render_target_create();
- virtual void render_target_set_size(RID p_render_target, int p_width, int p_height);
- virtual RID render_target_get_texture(RID p_render_target) const;
- virtual bool render_target_renedered_in_frame(RID p_render_target);
-
- /* RENDER API */
- /* all calls (inside begin/end shadow) are always warranted to be in the following order: */
-
- virtual void begin_frame();
-
- virtual void set_viewport(const VS::ViewportRect &p_viewport);
- virtual void set_render_target(RID p_render_target, bool p_transparent_bg = false, bool p_vflip = false);
- virtual void clear_viewport(const Color &p_color);
- virtual void capture_viewport(Image *r_capture);
-
- virtual void begin_scene(RID p_viewport_data, RID p_env, VS::ScenarioDebugMode p_debug);
-
- virtual void begin_shadow_map(RID p_light_instance, int p_shadow_pass);
-
- virtual void set_camera(const Transform &p_world, const CameraMatrix &p_projection, bool p_ortho_hint);
-
- virtual void add_light(RID p_light_instance); ///< all "add_light" calls happen before add_geometry calls
-
- typedef Map<StringName, Variant> ParamOverrideMap;
-
- virtual void add_mesh(const RID &p_mesh, const InstanceData *p_data);
- virtual void add_multimesh(const RID &p_multimesh, const InstanceData *p_data);
- virtual void add_immediate(const RID &p_immediate, const InstanceData *p_data);
- virtual void add_particles(const RID &p_particle_instance, const InstanceData *p_data);
-
- virtual void end_scene();
- virtual void end_shadow_map();
-
- virtual void end_frame();
-
- /* CANVAS API */
-
- virtual void begin_canvas_bg();
-
- virtual void canvas_begin();
- virtual void canvas_disable_blending();
-
- virtual void canvas_set_opacity(float p_opacity);
- virtual void canvas_set_blend_mode(VS::MaterialBlendMode p_mode);
- virtual void canvas_begin_rect(const Transform2D &p_transform);
- virtual void canvas_set_clip(bool p_clip, const Rect2 &p_rect);
- virtual void canvas_end_rect();
- virtual void canvas_draw_line(const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width, bool p_antialiased);
- virtual void canvas_draw_rect(const Rect2 &p_rect, int p_flags, const Rect2 &p_source, RID p_texture, const Color &p_modulate);
- virtual void canvas_draw_style_box(const Rect2 &p_rect, const Rect2 &p_src_region, RID p_texture, const float *p_margins, bool p_draw_center = true, const Color &p_modulate = Color(1, 1, 1));
- virtual void canvas_draw_primitive(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width);
- virtual void canvas_draw_polygon(int p_vertex_count, const int *p_indices, const Vector2 *p_vertices, const Vector2 *p_uvs, const Color *p_colors, const RID &p_texture, bool p_singlecolor);
- virtual void canvas_set_transform(const Transform2D &p_transform);
-
- virtual void canvas_render_items(CanvasItem *p_item_list, int p_z, const Color &p_modulate, CanvasLight *p_light);
- virtual void canvas_debug_viewport_shadows(CanvasLight *p_lights_with_shadow);
-
- /* CANVAS LIGHT SHADOW */
-
- //buffer
- virtual RID canvas_light_shadow_buffer_create(int p_width);
- virtual void canvas_light_shadow_buffer_update(RID p_buffer, const Transform2D &p_light_xform, int p_light_mask, float p_near, float p_far, CanvasLightOccluderInstance *p_occluders, CameraMatrix *p_xform_cache);
-
- //occluder
- virtual RID canvas_light_occluder_create();
- virtual void canvas_light_occluder_set_polylines(RID p_occluder, const DVector<Vector2> &p_lines);
-
- /* ENVIRONMENT */
-
- virtual RID environment_create();
-
- virtual void environment_set_background(RID p_env, VS::EnvironmentBG p_bg);
- virtual VS::EnvironmentBG environment_get_background(RID p_env) const;
-
- virtual void environment_set_background_param(RID p_env, VS::EnvironmentBGParam p_param, const Variant &p_value);
- virtual Variant environment_get_background_param(RID p_env, VS::EnvironmentBGParam p_param) const;
-
- virtual void environment_set_enable_fx(RID p_env, VS::EnvironmentFx p_effect, bool p_enabled);
- virtual bool environment_is_fx_enabled(RID p_env, VS::EnvironmentFx p_effect) const;
-
- virtual void environment_fx_set_param(RID p_env, VS::EnvironmentFxParam p_param, const Variant &p_value);
- virtual Variant environment_fx_get_param(RID p_env, VS::EnvironmentFxParam p_param) const;
-
- /* SAMPLED LIGHT */
- virtual RID sampled_light_dp_create(int p_width, int p_height);
- virtual void sampled_light_dp_update(RID p_sampled_light, const Color *p_data, float p_multiplier);
-
- /*MISC*/
-
- virtual bool is_texture(const RID &p_rid) const;
- virtual bool is_material(const RID &p_rid) const;
- virtual bool is_mesh(const RID &p_rid) const;
- virtual bool is_immediate(const RID &p_rid) const;
- virtual bool is_multimesh(const RID &p_rid) const;
- virtual bool is_particles(const RID &p_beam) const;
-
- virtual bool is_light(const RID &p_rid) const;
- virtual bool is_light_instance(const RID &p_rid) const;
- virtual bool is_particles_instance(const RID &p_rid) const;
- virtual bool is_skeleton(const RID &p_rid) const;
- virtual bool is_environment(const RID &p_rid) const;
- virtual bool is_shader(const RID &p_rid) const;
-
- virtual bool is_canvas_light_occluder(const RID &p_rid) const;
-
- virtual void free(const RID &p_rid);
-
- virtual void init();
- virtual void finish();
-
- virtual int get_render_info(VS::RenderInfo p_info);
-
- void set_base_framebuffer(GLuint p_id, Vector2 p_size = Vector2(0, 0));
-
- virtual void flush_frame(); //not necessary in most cases
- void set_extensions(const char *p_strings);
-
- virtual bool needs_to_draw_next_frame() const;
-
- void set_use_framebuffers(bool p_use);
- void reload_vram();
-
- virtual bool has_feature(VS::Features p_feature) const;
-
- virtual void restore_framebuffer();
-
- static RasterizerGLES2 *get_singleton();
-
- virtual void set_force_16_bits_fbo(bool p_force);
-
- RasterizerGLES2(bool p_compress_arrays = false, bool p_keep_ram_copy = true, bool p_default_fragment_lighting = true, bool p_use_reload_hooks = false);
- virtual ~RasterizerGLES2();
-};
-
-#endif
-#endif
diff --git a/drivers/gles2/rasterizer_instance_gles2.cpp b/drivers/gles2/rasterizer_instance_gles2.cpp
deleted file mode 100644
index 8aedd4def0..0000000000
--- a/drivers/gles2/rasterizer_instance_gles2.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*************************************************************************/
-/* rasterizer_instance_gles2.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "rasterizer_instance_gles2.h"
-#include "rasterizer_gles2.h"
-
-#ifdef GLES2_ENABLED
-
-Rasterizer *instance_RasterizerGLES2() {
-
- return memnew(RasterizerGLES2);
-}
-
-#endif
diff --git a/drivers/gles2/rasterizer_instance_gles2.h b/drivers/gles2/rasterizer_instance_gles2.h
deleted file mode 100644
index 09e9716b50..0000000000
--- a/drivers/gles2/rasterizer_instance_gles2.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************/
-/* rasterizer_instance_gles2.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 RASTERIZER_INSTANCE_GLES2_H
-#define RASTERIZER_INSTANCE_GLES2_H
-
-#include "servers/visual/rasterizer.h"
-
-#ifdef GLES2_ENABLED
-
-Rasterizer *instance_RasterizerGLES2();
-
-#endif
-
-#endif // RASTERIZER_INSTANCE_gles2_H
diff --git a/drivers/gles2/shader_compiler_gles2.cpp b/drivers/gles2/shader_compiler_gles2.cpp
deleted file mode 100644
index 778d28fb99..0000000000
--- a/drivers/gles2/shader_compiler_gles2.cpp
+++ /dev/null
@@ -1,939 +0,0 @@
-/*************************************************************************/
-/* shader_compiler_gles2.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "shader_compiler_gles2.h"
-#include "print_string.h"
-
-#include "stdio.h"
-
-//#define DEBUG_SHADER_ENABLED
-
-typedef ShaderLanguage SL;
-
-struct CodeGLSL2 {
-
- String code;
-};
-
-static String _mktab(int p_level) {
-
- String tb;
- for (int i = 0; i < p_level; i++) {
- tb += "\t";
- }
-
- return tb;
-}
-
-static String _typestr(SL::DataType p_type) {
-
- switch (p_type) {
-
- case SL::TYPE_VOID: return "void";
- case SL::TYPE_BOOL: return "bool";
- case SL::TYPE_FLOAT: return "float";
- case SL::TYPE_VEC2: return "vec2";
- case SL::TYPE_VEC3: return "vec3";
- case SL::TYPE_VEC4: return "vec4";
- case SL::TYPE_MAT2: return "mat2";
- case SL::TYPE_MAT3: return "mat3";
- case SL::TYPE_MAT4: return "mat4";
- case SL::TYPE_TEXTURE: return "sampler2D";
- case SL::TYPE_CUBEMAP: return "samplerCube";
- }
-
- return "";
-}
-
-static String _mknum(float p_num) {
- return String::num_real(p_num);
-}
-
-static String _opstr(SL::Operator p_op) {
-
- switch (p_op) {
- case SL::OP_ASSIGN: return "=";
- case SL::OP_ADD: return "+";
- case SL::OP_SUB: return "-";
- case SL::OP_MUL: return "*";
- case SL::OP_DIV: return "/";
- case SL::OP_ASSIGN_ADD: return "+=";
- case SL::OP_ASSIGN_SUB: return "-=";
- case SL::OP_ASSIGN_MUL: return "*=";
- case SL::OP_ASSIGN_DIV: return "/=";
- case SL::OP_NEG: return "-";
- case SL::OP_NOT: return "!";
- case SL::OP_CMP_EQ: return "==";
- case SL::OP_CMP_NEQ: return "!=";
- case SL::OP_CMP_LEQ: return "<=";
- case SL::OP_CMP_GEQ: return ">=";
- case SL::OP_CMP_LESS: return "<";
- case SL::OP_CMP_GREATER: return ">";
- case SL::OP_CMP_OR: return "||";
- case SL::OP_CMP_AND: return "&&";
- default: return "";
- }
-
- return "";
-}
-
-//#ifdef DEBUG_SHADER_ENABLED
-#if 1
-#define ENDL "\n"
-#else
-#define ENDL ""
-#endif
-
-String ShaderCompilerGLES2::dump_node_code(SL::Node *p_node, int p_level, bool p_assign_left) {
-
- String code;
-
- switch (p_node->type) {
-
- case SL::Node::TYPE_PROGRAM: {
-
- SL::ProgramNode *pnode = (SL::ProgramNode *)p_node;
-
- code += dump_node_code(pnode->body, p_level);
- } break;
- case SL::Node::TYPE_FUNCTION: {
-
- } break;
- case SL::Node::TYPE_BLOCK: {
- SL::BlockNode *bnode = (SL::BlockNode *)p_node;
-
- //variables
- code += "{" ENDL;
- for (Map<StringName, SL::DataType>::Element *E = bnode->variables.front(); E; E = E->next()) {
-
- code += _mktab(p_level) + _typestr(E->value()) + " " + replace_string(E->key()) + ";" ENDL;
- }
-
- for (int i = 0; i < bnode->statements.size(); i++) {
-
- code += _mktab(p_level) + dump_node_code(bnode->statements[i], p_level) + ";" ENDL;
- }
-
- code += "}" ENDL;
-
- } break;
- case SL::Node::TYPE_VARIABLE: {
- SL::VariableNode *vnode = (SL::VariableNode *)p_node;
-
- if (type == ShaderLanguage::SHADER_MATERIAL_VERTEX) {
-
- if (vnode->name == vname_vertex && p_assign_left) {
- vertex_code_writes_vertex = true;
- }
- if (vnode->name == vname_position && p_assign_left) {
- vertex_code_writes_position = true;
- }
- if (vnode->name == vname_color_interp) {
- flags->use_color_interp = true;
- }
- if (vnode->name == vname_uv_interp) {
- flags->use_uv_interp = true;
- }
- if (vnode->name == vname_uv2_interp) {
- flags->use_uv2_interp = true;
- }
- if (vnode->name == vname_var1_interp) {
- flags->use_var1_interp = true;
- }
- if (vnode->name == vname_var2_interp) {
- flags->use_var2_interp = true;
- }
- if (vnode->name == vname_tangent_interp || vnode->name == vname_binormal_interp) {
- flags->use_tangent_interp = true;
- }
- }
-
- if (type == ShaderLanguage::SHADER_MATERIAL_FRAGMENT) {
-
- if (vnode->name == vname_discard) {
- uses_discard = true;
- }
- if (vnode->name == vname_normalmap) {
- uses_normalmap = true;
- }
- if (vnode->name == vname_screen_uv) {
- uses_screen_uv = true;
- }
- if (vnode->name == vname_diffuse_alpha && p_assign_left) {
- uses_alpha = true;
- }
- if (vnode->name == vname_color_interp) {
- flags->use_color_interp = true;
- }
- if (vnode->name == vname_uv_interp) {
- flags->use_uv_interp = true;
- }
- if (vnode->name == vname_uv2_interp) {
- flags->use_uv2_interp = true;
- }
- if (vnode->name == vname_var1_interp) {
- flags->use_var1_interp = true;
- }
- if (vnode->name == vname_var2_interp) {
- flags->use_var2_interp = true;
- }
- if (vnode->name == vname_tangent_interp || vnode->name == vname_binormal_interp) {
- flags->use_tangent_interp = true;
- }
- }
- if (type == ShaderLanguage::SHADER_MATERIAL_LIGHT) {
-
- if (vnode->name == vname_light) {
- uses_light = true;
- }
-
- if (vnode->name == vname_shadow) {
- uses_shadow_color = true;
- }
- }
- if (type == ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX) {
-
- if (vnode->name == vname_var1_interp) {
- flags->use_var1_interp = true;
- }
- if (vnode->name == vname_var2_interp) {
- flags->use_var2_interp = true;
- }
- if (vnode->name == vname_world_vec) {
- uses_worldvec = true;
- }
- }
-
- if (type == ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT) {
-
- if (vnode->name == vname_texpixel_size) {
- uses_texpixel_size = true;
- }
- if (vnode->name == vname_normal) {
- uses_normal = true;
- }
- if (vnode->name == vname_normalmap || vnode->name == vname_normalmap_depth) {
- uses_normalmap = true;
- uses_normal = true;
- }
-
- if (vnode->name == vname_screen_uv) {
- uses_screen_uv = true;
- }
-
- if (vnode->name == vname_var1_interp) {
- flags->use_var1_interp = true;
- }
- if (vnode->name == vname_var2_interp) {
- flags->use_var2_interp = true;
- }
- }
-
- if (type == ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT) {
-
- if (vnode->name == vname_light) {
- uses_light = true;
- }
-
- if (vnode->name == vname_normal) {
- uses_normal = true;
- }
-
- if (vnode->name == vname_shadow) {
- uses_shadow_color = true;
- }
- }
-
- if (vnode->name == vname_time) {
- uses_time = true;
- }
- code = replace_string(vnode->name);
-
- } break;
- case SL::Node::TYPE_CONSTANT: {
- SL::ConstantNode *cnode = (SL::ConstantNode *)p_node;
- switch (cnode->datatype) {
-
- case SL::TYPE_BOOL: code = cnode->value.operator bool() ? "true" : "false"; break;
- case SL::TYPE_FLOAT:
- code = _mknum(cnode->value);
- break; //force zeros, so GLSL doesn't confuse with integer.
- case SL::TYPE_VEC2: {
- Vector2 v = cnode->value;
- code = "vec2(" + _mknum(v.x) + ", " + _mknum(v.y) + ")";
- } break;
- case SL::TYPE_VEC3: {
- Vector3 v = cnode->value;
- code = "vec3(" + _mknum(v.x) + ", " + _mknum(v.y) + ", " + _mknum(v.z) + ")";
- } break;
- case SL::TYPE_VEC4: {
- Plane v = cnode->value;
- code = "vec4(" + _mknum(v.normal.x) + ", " + _mknum(v.normal.y) + ", " + _mknum(v.normal.z) + ", " + _mknum(v.d) + ")";
- } break;
- case SL::TYPE_MAT2: {
- Transform2D x = cnode->value;
- code = "mat2( vec2(" + _mknum(x[0][0]) + ", " + _mknum(x[0][1]) + "), vec2(" + _mknum(x[1][0]) + ", " + _mknum(x[1][1]) + "))";
- } break;
- case SL::TYPE_MAT3: {
- Basis x = cnode->value;
- code = "mat3( vec3(" + _mknum(x.get_axis(0).x) + ", " + _mknum(x.get_axis(0).y) + ", " + _mknum(x.get_axis(0).z) + "), vec3(" + _mknum(x.get_axis(1).x) + ", " + _mknum(x.get_axis(1).y) + ", " + _mknum(x.get_axis(1).z) + "), vec3(" + _mknum(x.get_axis(2).x) + ", " + _mknum(x.get_axis(2).y) + ", " + _mknum(x.get_axis(2).z) + "))";
- } break;
- case SL::TYPE_MAT4: {
- Transform x = cnode->value;
- code = "mat4( vec4(" + _mknum(x.basis.get_axis(0).x) + ", " + _mknum(x.basis.get_axis(0).y) + ", " + _mknum(x.basis.get_axis(0).z) + ",0.0), vec4(" + _mknum(x.basis.get_axis(1).x) + ", " + _mknum(x.basis.get_axis(1).y) + ", " + _mknum(x.basis.get_axis(1).z) + ",0.0), vec4(" + _mknum(x.basis.get_axis(2).x) + ", " + _mknum(x.basis.get_axis(2).y) + ", " + _mknum(x.basis.get_axis(2).z) + ",0.0), vec4(" + _mknum(x.origin.x) + ", " + _mknum(x.origin.y) + ", " + _mknum(x.origin.z) + ",1.0))";
- } break;
- default: code = "<error: " + Variant::get_type_name(cnode->value.get_type()) + " (" + itos(cnode->datatype) + ">";
- }
-
- } break;
- case SL::Node::TYPE_OPERATOR: {
- SL::OperatorNode *onode = (SL::OperatorNode *)p_node;
-
- switch (onode->op) {
-
- case SL::OP_ASSIGN_MUL: {
-
- if (onode->arguments[0]->get_datatype() == SL::TYPE_VEC3 && onode->arguments[1]->get_datatype() == SL::TYPE_MAT4) {
-
- String mul_l = dump_node_code(onode->arguments[0], p_level, true);
- String mul_r = dump_node_code(onode->arguments[1], p_level);
- code = mul_l + "=(vec4(" + mul_l + ",1.0)*(" + mul_r + ")).xyz";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_MAT4 && onode->arguments[1]->get_datatype() == SL::TYPE_VEC3) {
-
- String mul_l = dump_node_code(onode->arguments[0], p_level, true);
- String mul_r = dump_node_code(onode->arguments[1], p_level);
- code = mul_l + "=((" + mul_l + ")*vec4(" + mul_r + ",1.0)).xyz";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_VEC2 && onode->arguments[1]->get_datatype() == SL::TYPE_MAT4) {
-
- String mul_l = dump_node_code(onode->arguments[0], p_level, true);
- String mul_r = dump_node_code(onode->arguments[1], p_level);
- code = mul_l + "=(vec4(" + mul_l + ",0.0,1.0)*(" + mul_r + ")).xy";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_MAT4 && onode->arguments[1]->get_datatype() == SL::TYPE_VEC2) {
-
- String mul_l = dump_node_code(onode->arguments[0], p_level, true);
- String mul_r = dump_node_code(onode->arguments[1], p_level);
- code = mul_l + "=((" + mul_l + ")*vec4(" + mul_r + ",0.0,1.0)).xy";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_VEC2 && onode->arguments[1]->get_datatype() == SL::TYPE_MAT3) {
- String mul_l = dump_node_code(onode->arguments[0], p_level, true);
- String mul_r = dump_node_code(onode->arguments[1], p_level);
- code = mul_l + "=((" + mul_l + ")*vec3(" + mul_r + ",1.0)).xy";
- break;
- }
- };
- case SL::OP_ASSIGN:
- case SL::OP_ASSIGN_ADD:
- case SL::OP_ASSIGN_SUB:
- case SL::OP_ASSIGN_DIV:
- code = "(" + dump_node_code(onode->arguments[0], p_level, true) + _opstr(onode->op) + dump_node_code(onode->arguments[1], p_level) + ")";
- break;
-
- case SL::OP_MUL:
-
- if (onode->arguments[0]->get_datatype() == SL::TYPE_MAT4 && onode->arguments[1]->get_datatype() == SL::TYPE_VEC3) {
-
- code = "(" + dump_node_code(onode->arguments[0], p_level) + "*vec4(" + dump_node_code(onode->arguments[1], p_level) + ",1.0)).xyz";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_VEC3 && onode->arguments[1]->get_datatype() == SL::TYPE_MAT4) {
-
- code = "(vec4(" + dump_node_code(onode->arguments[0], p_level) + ",1.0)*" + dump_node_code(onode->arguments[1], p_level) + ").xyz";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_MAT4 && onode->arguments[1]->get_datatype() == SL::TYPE_VEC2) {
-
- code = "(" + dump_node_code(onode->arguments[0], p_level) + "*vec4(" + dump_node_code(onode->arguments[1], p_level) + ",0.0,1.0)).xy";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_VEC2 && onode->arguments[1]->get_datatype() == SL::TYPE_MAT4) {
-
- code = "(vec4(" + dump_node_code(onode->arguments[0], p_level) + ",0.0,1.0)*" + dump_node_code(onode->arguments[1], p_level) + ").xy";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_MAT3 && onode->arguments[1]->get_datatype() == SL::TYPE_VEC2) {
-
- code = "(" + dump_node_code(onode->arguments[0], p_level) + "*vec3(" + dump_node_code(onode->arguments[1], p_level) + ",1.0)).xy";
- break;
- } else if (onode->arguments[0]->get_datatype() == SL::TYPE_VEC2 && onode->arguments[1]->get_datatype() == SL::TYPE_MAT3) {
-
- code = "(vec3(" + dump_node_code(onode->arguments[0], p_level) + ",1.0)*" + dump_node_code(onode->arguments[1], p_level) + ").xy";
- break;
- }
-
- case SL::OP_ADD:
- case SL::OP_SUB:
- case SL::OP_DIV:
- case SL::OP_CMP_EQ:
- case SL::OP_CMP_NEQ:
- case SL::OP_CMP_LEQ:
- case SL::OP_CMP_GEQ:
- case SL::OP_CMP_LESS:
- case SL::OP_CMP_GREATER:
- case SL::OP_CMP_OR:
- case SL::OP_CMP_AND:
- //handle binary
- code = "(" + dump_node_code(onode->arguments[0], p_level) + _opstr(onode->op) + dump_node_code(onode->arguments[1], p_level) + ")";
- break;
- case SL::OP_NEG:
- case SL::OP_NOT:
- //handle unary
- code = _opstr(onode->op) + dump_node_code(onode->arguments[0], p_level);
- break;
- case SL::OP_CONSTRUCT:
- case SL::OP_CALL: {
- String callfunc = dump_node_code(onode->arguments[0], p_level);
-
- code = callfunc + "(";
- /*if (callfunc=="mat4") {
- //fix constructor for mat4
- for(int i=1;i<onode->arguments.size();i++) {
- if (i>1)
- code+=", ";
- //transform
- code+="vec4( "+dump_node_code(onode->arguments[i],p_level)+(i==4?",1.0)":",0.0)");
-
- }
- } else*/ if (callfunc == "tex") {
-
- code = "texture2D( " + dump_node_code(onode->arguments[1], p_level) + "," + dump_node_code(onode->arguments[2], p_level) + ")";
- break;
- } else if (callfunc == "texcube") {
-
- code = "(textureCube( " + dump_node_code(onode->arguments[1], p_level) + ",(" + dump_node_code(onode->arguments[2], p_level) + ")).xyz";
- break;
- } else if (callfunc == "texscreen") {
- //create the call to sample the screen, and clamp it
- uses_texscreen = true;
- code = "(texture2D( texscreen_tex, clamp((" + dump_node_code(onode->arguments[1], p_level) + ").xy*texscreen_screen_mult,texscreen_screen_clamp.xy,texscreen_screen_clamp.zw))).rgb";
- //code="(texture2D( screen_texture, ("+dump_node_code(onode->arguments[1],p_level)+").xy).rgb";
- break;
- } else if (callfunc == "texpos") {
- //create the call to sample the screen, and clamp it
- uses_texpos = true;
- code = "get_texpos(" + dump_node_code(onode->arguments[1], p_level) + "";
- //code="get_texpos(gl_ProjectionMatrixInverse * texture2D( depth_texture, clamp(("+dump_node_code(onode->arguments[1],p_level)+").xy,vec2(0.0),vec2(1.0))*gl_LightSource[5].specular.zw+gl_LightSource[5].specular.xy)";
- //code="(texture2D( screen_texture, ("+dump_node_code(onode->arguments[1],p_level)+").xy).rgb";
- break;
- } else if (custom_h && callfunc == "cosh_custom") {
-
- if (!cosh_used) {
- global_code =
- "float cosh_custom(float val)\n"
- "{\n"
- " float tmp = exp(val);\n"
- " float cosH = (tmp + 1.0 / tmp) / 2.0;\n"
- " return cosH;\n"
- "}\n" +
- global_code;
- cosh_used = true;
- }
- code = "cosh_custom(" + dump_node_code(onode->arguments[1], p_level) + "";
- } else if (custom_h && callfunc == "sinh_custom") {
-
- if (!sinh_used) {
- global_code =
- "float sinh_custom(float val)\n"
- "{\n"
- " float tmp = exp(val);\n"
- " float sinH = (tmp - 1.0 / tmp) / 2.0;\n"
- " return sinH;\n"
- "}\n" +
- global_code;
- sinh_used = true;
- }
- code = "sinh_custom(" + dump_node_code(onode->arguments[1], p_level) + "";
- } else if (custom_h && callfunc == "tanh_custom") {
-
- if (!tanh_used) {
- global_code =
- "float tanh_custom(float val)\n"
- "{\n"
- " float tmp = exp(val);\n"
- " float tanH = (tmp - 1.0 / tmp) / (tmp + 1.0 / tmp);\n"
- " return tanH;\n"
- "}\n" +
- global_code;
- tanh_used = true;
- }
- code = "tanh_custom(" + dump_node_code(onode->arguments[1], p_level) + "";
-
- } else {
-
- for (int i = 1; i < onode->arguments.size(); i++) {
- if (i > 1)
- code += ", ";
- //transform
- code += dump_node_code(onode->arguments[i], p_level);
- }
- }
- code += ")";
- break;
- } break;
- default: {}
- }
-
- } break;
- case SL::Node::TYPE_CONTROL_FLOW: {
- SL::ControlFlowNode *cfnode = (SL::ControlFlowNode *)p_node;
- if (cfnode->flow_op == SL::FLOW_OP_IF) {
-
- code += "if (" + dump_node_code(cfnode->statements[0], p_level) + ") {" ENDL;
- code += dump_node_code(cfnode->statements[1], p_level + 1);
- if (cfnode->statements.size() == 3) {
-
- code += "} else {" ENDL;
- code += dump_node_code(cfnode->statements[2], p_level + 1);
- }
-
- code += "}" ENDL;
-
- } else if (cfnode->flow_op == SL::FLOW_OP_RETURN) {
-
- if (cfnode->statements.size()) {
- code = "return " + dump_node_code(cfnode->statements[0], p_level);
- } else {
- code = "return";
- }
- }
-
- } break;
- case SL::Node::TYPE_MEMBER: {
- SL::MemberNode *mnode = (SL::MemberNode *)p_node;
- String m;
- if (mnode->basetype == SL::TYPE_MAT4) {
- if (mnode->name == "x")
- m = "[0]";
- else if (mnode->name == "y")
- m = "[1]";
- else if (mnode->name == "z")
- m = "[2]";
- else if (mnode->name == "w")
- m = "[3]";
- } else if (mnode->basetype == SL::TYPE_MAT2) {
- if (mnode->name == "x")
- m = "[0]";
- else if (mnode->name == "y")
- m = "[1]";
-
- } else if (mnode->basetype == SL::TYPE_MAT3) {
- if (mnode->name == "x")
- m = "[0]";
- else if (mnode->name == "y")
- m = "[1]";
- else if (mnode->name == "z")
- m = "[2]";
-
- } else {
- m = "." + mnode->name;
- }
- code = dump_node_code(mnode->owner, p_level) + m;
-
- } break;
- }
-
- return code;
-}
-
-Error ShaderCompilerGLES2::compile_node(SL::ProgramNode *p_program) {
-
- // feed the local replace table and global code
- global_code = "";
-
- // uniforms first!
-
- int ubase = 0;
- if (uniforms)
- ubase = uniforms->size();
- for (Map<StringName, SL::Uniform>::Element *E = p_program->uniforms.front(); E; E = E->next()) {
-
- String uline = "uniform " + _typestr(E->get().type) + " _" + E->key().operator String() + ";" ENDL;
-
- global_code += uline;
- if (uniforms) {
- /*
- if (uniforms->has(E->key())) {
- //repeated uniform, error
- ERR_EXPLAIN("Uniform already exists from other shader: "+String(E->key()));
- ERR_FAIL_COND_V(uniforms->has(E->key()),ERR_ALREADY_EXISTS);
- }
- */
- SL::Uniform u = E->get();
- u.order += ubase;
- uniforms->insert(E->key(), u);
- }
- }
-
- for (int i = 0; i < p_program->functions.size(); i++) {
-
- SL::FunctionNode *fnode = p_program->functions[i].function;
-
- StringName funcname = fnode->name;
- String newfuncname = replace_string(funcname);
-
- String header;
- header = _typestr(fnode->return_type) + " " + newfuncname + "(";
- for (int i = 0; i < fnode->arguments.size(); i++) {
-
- if (i > 0)
- header += ", ";
- header += _typestr(fnode->arguments[i].type) + " " + replace_string(fnode->arguments[i].name);
- }
-
- header += ") {" ENDL;
- String fcode = header;
- fcode += dump_node_code(fnode->body, 1);
- fcode += "}" ENDL;
- global_code += fcode;
- }
-
- /* for(Map<StringName,SL::DataType>::Element *E=p_program->preexisting_variables.front();E;E=E->next()) {
-
- StringName varname=E->key();
- String newvarname=replace_string(varname);
- global_code+="uniform "+_typestr(E->get())+" "+newvarname+";" ENDL;
- }*/
-
- code = dump_node_code(p_program, 0);
-
-#ifdef DEBUG_SHADER_ENABLED
-
- print_line("GLOBAL CODE:\n\n");
- print_line(global_code);
- global_code = global_code.replace("\n", "");
- print_line("CODE:\n\n");
- print_line(code);
- code = code.replace("\n", "");
-#endif
-
- return OK;
-}
-
-Error ShaderCompilerGLES2::create_glsl_120_code(void *p_str, SL::ProgramNode *p_program) {
-
- ShaderCompilerGLES2 *compiler = (ShaderCompilerGLES2 *)p_str;
- return compiler->compile_node(p_program);
-}
-
-String ShaderCompilerGLES2::replace_string(const StringName &p_string) {
-
- Map<StringName, StringName>::Element *E = NULL;
- E = replace_table.find(p_string);
- if (E)
- return E->get();
-
- E = mode_replace_table[type].find(p_string);
- if (E)
- return E->get();
-
- return "_" + p_string.operator String();
-}
-
-Error ShaderCompilerGLES2::compile(const String &p_code, ShaderLanguage::ShaderType p_type, String &r_code_line, String &r_globals_line, Flags &r_flags, Map<StringName, ShaderLanguage::Uniform> *r_uniforms) {
-
- uses_texscreen = false;
- uses_texpos = false;
- uses_alpha = false;
- uses_discard = false;
- uses_screen_uv = false;
- uses_light = false;
- uses_time = false;
- uses_normalmap = false;
- uses_normal = false;
- uses_texpixel_size = false;
- uses_worldvec = false;
- vertex_code_writes_vertex = false;
- vertex_code_writes_position = false;
- uses_shadow_color = false;
- uniforms = r_uniforms;
- flags = &r_flags;
- r_flags.use_color_interp = false;
- r_flags.use_uv_interp = false;
- r_flags.use_uv2_interp = false;
- r_flags.use_tangent_interp = false;
- r_flags.use_var1_interp = false;
- r_flags.use_var2_interp = false;
- r_flags.uses_normalmap = false;
- r_flags.uses_normal = false;
- sinh_used = false;
- tanh_used = false;
- cosh_used = false;
-
- String error;
- int errline, errcol;
-
- type = p_type;
- Error err = SL::compile(p_code, p_type, create_glsl_120_code, this, &error, &errline, &errcol);
-
- if (err) {
- print_line("***Error precompiling shader: " + error);
- print_line("error " + itos(errline) + ":" + itos(errcol));
- return err;
- }
-
- r_flags.uses_alpha = uses_alpha;
- r_flags.uses_texscreen = uses_texscreen;
- r_flags.uses_texpos = uses_texpos;
- r_flags.vertex_code_writes_vertex = vertex_code_writes_vertex;
- r_flags.vertex_code_writes_position = vertex_code_writes_position;
- r_flags.uses_discard = uses_discard;
- r_flags.uses_screen_uv = uses_screen_uv;
- r_flags.uses_light = uses_light;
- r_flags.uses_time = uses_time;
- r_flags.uses_normalmap = uses_normalmap;
- r_flags.uses_normal = uses_normal;
- r_flags.uses_texpixel_size = uses_texpixel_size;
- r_flags.uses_worldvec = uses_worldvec;
- r_flags.uses_shadow_color = uses_shadow_color;
- r_code_line = code;
- r_globals_line = global_code;
- return OK;
-}
-
-ShaderCompilerGLES2::ShaderCompilerGLES2() {
-
-#ifdef GLEW_ENABLED
- //use custom functions because they are not supported in GLSL120
- custom_h = true;
-#else
- custom_h = false;
-#endif
-
- replace_table["bool"] = "bool";
- replace_table["float"] = "float";
- replace_table["vec2"] = "vec2";
- replace_table["vec3"] = "vec3";
- replace_table["vec4"] = "vec4";
- replace_table["mat2"] = "mat2";
- replace_table["mat3"] = "mat3";
- replace_table["mat4"] = "mat4";
- replace_table["texture"] = "sampler2D";
- replace_table["cubemap"] = "samplerCube";
-
- replace_table["sin"] = "sin";
- replace_table["cos"] = "cos";
- replace_table["tan"] = "tan";
- replace_table["asin"] = "asin";
- replace_table["acos"] = "acos";
- replace_table["atan"] = "atan";
- replace_table["atan2"] = "atan";
-
- if (custom_h) {
- replace_table["sinh"] = "sinh_custom";
- replace_table["cosh"] = "cosh_custom";
- replace_table["tanh"] = "tanh_custom";
- } else {
- replace_table["sinh"] = "sinh";
- replace_table["cosh"] = "cosh";
- replace_table["tanh"] = "tanh";
- }
-
- replace_table["pow"] = "pow";
- replace_table["exp"] = "exp";
- replace_table["log"] = "log";
- replace_table["sqrt"] = "sqrt";
- replace_table["abs"] = "abs";
- replace_table["sign"] = "sign";
- replace_table["floor"] = "floor";
- replace_table["trunc"] = "trunc";
-#ifdef GLEW_ENABLED
- replace_table["round"] = "roundfix";
-#else
- replace_table["round"] = "round";
-#endif
- replace_table["ceil"] = "ceil";
- replace_table["fract"] = "fract";
- replace_table["mod"] = "mod";
- replace_table["min"] = "min";
- replace_table["max"] = "max";
- replace_table["clamp"] = "clamp";
- replace_table["mix"] = "mix";
- replace_table["step"] = "step";
- replace_table["smoothstep"] = "smoothstep";
- replace_table["length"] = "length";
- replace_table["distance"] = "distance";
- replace_table["dot"] = "dot";
- replace_table["cross"] = "cross";
- replace_table["normalize"] = "normalize";
- replace_table["reflect"] = "reflect";
- replace_table["refract"] = "refract";
- replace_table["tex"] = "tex";
- replace_table["texa"] = "texa";
- replace_table["tex2"] = "tex2";
- replace_table["texcube"] = "textureCube";
- replace_table["texscreen"] = "texscreen";
- replace_table["texpos"] = "texpos";
-
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_VERTEX"] = "vertex_in.xyz";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_NORMAL"] = "normal_in";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_TANGENT"] = "tangent_in";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SRC_BINORMALF"] = "binormalf";
-
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["POSITION"] = "gl_Position";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["VERTEX"] = "vertex_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["NORMAL"] = "normal_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["TANGENT"] = "tangent_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["BINORMAL"] = "binormal_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["UV"] = "uv_interp.xy";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["UV2"] = "uv_interp.zw";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["COLOR"] = "color_interp";
- //@TODO convert to glsl stuff
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SPEC_EXP"] = "vertex_specular_exp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["WORLD_MATRIX"] = "world_transform";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["INV_CAMERA_MATRIX"] = "camera_inverse_transform";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["PROJECTION_MATRIX"] = "projection_transform";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["MODELVIEW_MATRIX"] = "modelview";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["POINT_SIZE"] = "gl_PointSize";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["VAR1"] = "var1_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["VAR2"] = "var2_interp";
-
- //mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SCREEN_POS"]="SCREEN_POS";
- //mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["SCREEN_SIZE"]="SCREEN_SIZE";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["INSTANCE_ID"] = "instance_id";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_VERTEX]["TIME"] = "time";
-
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["VERTEX"] = "vertex";
- //mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["POSITION"]="IN_POSITION";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["NORMAL"] = "normal";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["TANGENT"] = "tangent";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["POSITION"] = "gl_Position";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["BINORMAL"] = "binormal";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["NORMALMAP"] = "normalmap";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["NORMALMAP_DEPTH"] = "normaldepth";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["VAR1"] = "var1_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["VAR2"] = "var2_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["UV"] = "uv";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["UV2"] = "uv2";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["SCREEN_UV"] = "screen_uv";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["VAR1"] = "var1_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["VAR2"] = "var2_interp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["COLOR"] = "color";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["DIFFUSE"] = "diffuse.rgb";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["DIFFUSE_ALPHA"] = "diffuse";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["SPECULAR"] = "specular";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["EMISSION"] = "emission";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["SHADE_PARAM"] = "shade_param";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["SPEC_EXP"] = "specular_exp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["GLOW"] = "glow";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["DISCARD"] = "discard_";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["POINT_COORD"] = "gl_PointCoord";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["INV_CAMERA_MATRIX"] = "camera_inverse_transform";
-
- //mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["SCREEN_POS"]="SCREEN_POS";
- //mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["SCREEN_TEXEL_SIZE"]="SCREEN_TEXEL_SIZE";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_FRAGMENT]["TIME"] = "time";
-
- //////////////
-
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["NORMAL"] = "normal";
- //mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["POSITION"]="IN_POSITION";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["LIGHT_DIR"] = "light_dir";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["LIGHT_DIFFUSE"] = "light_diffuse";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["LIGHT_SPECULAR"] = "light_specular";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["EYE_VEC"] = "eye_vec";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["DIFFUSE"] = "mdiffuse";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["SPECULAR"] = "specular";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["SPECULAR_EXP"] = "specular_exp";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["SHADE_PARAM"] = "shade_param";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["LIGHT"] = "light";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["POINT_COORD"] = "gl_PointCoord";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["TIME"] = "time";
- mode_replace_table[ShaderLanguage::SHADER_MATERIAL_LIGHT]["SHADOW"] = "shadow_color";
-
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["SRC_VERTEX"] = "src_vtx";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["VERTEX"] = "outvec.xy";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["WORLD_VERTEX"] = "outvec.xy";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["UV"] = "uv_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["COLOR"] = "color_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["VAR1"] = "var1_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["VAR2"] = "var2_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["POINT_SIZE"] = "gl_PointSize";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["WORLD_MATRIX"] = "modelview_matrix";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["PROJECTION_MATRIX"] = "projection_matrix";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["EXTRA_MATRIX"] = "extra_matrix";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_VERTEX]["TIME"] = "time";
-
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["POSITION"] = "gl_Position";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["NORMAL"] = "normal";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["NORMALMAP"] = "normal_map";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["NORMALMAP_DEPTH"] = "normal_depth";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["UV"] = "uv_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["SRC_COLOR"] = "color_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["COLOR"] = "color";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["TEXTURE"] = "texture";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["TEXTURE_PIXEL_SIZE"] = "texpixel_size";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["VAR1"] = "var1_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["VAR2"] = "var2_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["SCREEN_UV"] = "screen_uv";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["POINT_COORD"] = "gl_PointCoord";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_FRAGMENT]["TIME"] = "time";
-
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["POSITION"] = "gl_Position";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["NORMAL"] = "normal";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["UV"] = "uv_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["COLOR"] = "color";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["TEXTURE"] = "texture";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["TEXTURE_PIXEL_SIZE"] = "texpixel_size";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["VAR1"] = "var1_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["VAR2"] = "var2_interp";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_VEC"] = "light_vec";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_HEIGHT"] = "light_height";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_COLOR"] = "light";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_SHADOW"] = "light_shadow_color";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT_UV"] = "light_uv";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["LIGHT"] = "light_out";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["SHADOW"] = "shadow_color";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["SCREEN_UV"] = "screen_uv";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["POINT_COORD"] = "gl_PointCoord";
- mode_replace_table[ShaderLanguage::SHADER_CANVAS_ITEM_LIGHT]["TIME"] = "time";
-
- //mode_replace_table[2]["SCREEN_POS"]="SCREEN_POS";
- //mode_replace_table[2]["SCREEN_TEXEL_SIZE"]="SCREEN_TEXEL_SIZE";
-
- out_vertex_name = "VERTEX";
-
- vname_discard = "DISCARD";
- vname_screen_uv = "SCREEN_UV";
- vname_diffuse_alpha = "DIFFUSE_ALPHA";
- vname_color_interp = "COLOR";
- vname_uv_interp = "UV";
- vname_uv2_interp = "UV2";
- vname_tangent_interp = "TANGENT";
- vname_binormal_interp = "BINORMAL";
- vname_var1_interp = "VAR1";
- vname_var2_interp = "VAR2";
- vname_vertex = "VERTEX";
- vname_position = "POSITION";
- vname_light = "LIGHT";
- vname_time = "TIME";
- vname_normalmap = "NORMALMAP";
- vname_normalmap_depth = "NORMALMAP_DEPTH";
- vname_normal = "NORMAL";
- vname_texpixel_size = "TEXTURE_PIXEL_SIZE";
- vname_world_vec = "WORLD_VERTEX";
- vname_shadow = "SHADOW";
-}
diff --git a/drivers/gles2/shader_compiler_gles2.h b/drivers/gles2/shader_compiler_gles2.h
deleted file mode 100644
index 02f9e58978..0000000000
--- a/drivers/gles2/shader_compiler_gles2.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*************************************************************************/
-/* shader_compiler_gles2.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 SHADER_COMPILER_GLES2_H
-#define SHADER_COMPILER_GLES2_H
-
-#include "servers/visual/shader_language.h"
-class ShaderCompilerGLES2 {
-
- class Uniform;
-
-public:
- struct Flags;
-
-private:
- ShaderLanguage::ProgramNode *program_node;
- String dump_node_code(ShaderLanguage::Node *p_node, int p_level, bool p_assign_left = false);
- Error compile_node(ShaderLanguage::ProgramNode *p_program);
- static Error create_glsl_120_code(void *p_str, ShaderLanguage::ProgramNode *p_program);
-
- bool uses_light;
- bool uses_texscreen;
- bool uses_texpos;
- bool uses_alpha;
- bool uses_discard;
- bool uses_time;
- bool uses_screen_uv;
- bool uses_normalmap;
- bool uses_normal;
- bool uses_texpixel_size;
- bool uses_worldvec;
- bool vertex_code_writes_vertex;
- bool vertex_code_writes_position;
- bool uses_shadow_color;
-
- bool sinh_used;
- bool tanh_used;
- bool cosh_used;
-
- bool custom_h;
-
- Flags *flags;
-
- StringName vname_discard;
- StringName vname_screen_uv;
- StringName vname_diffuse_alpha;
- StringName vname_color_interp;
- StringName vname_uv_interp;
- StringName vname_uv2_interp;
- StringName vname_tangent_interp;
- StringName vname_binormal_interp;
- StringName vname_var1_interp;
- StringName vname_var2_interp;
- StringName vname_vertex;
- StringName vname_position;
- StringName vname_light;
- StringName vname_time;
- StringName vname_normalmap;
- StringName vname_normalmap_depth;
- StringName vname_normal;
- StringName vname_texpixel_size;
- StringName vname_world_vec;
- StringName vname_shadow;
-
- Map<StringName, ShaderLanguage::Uniform> *uniforms;
-
- StringName out_vertex_name;
-
- String global_code;
- String code;
- ShaderLanguage::ShaderType type;
-
- String replace_string(const StringName &p_string);
-
- Map<StringName, StringName> mode_replace_table[9];
- Map<StringName, StringName> replace_table;
-
-public:
- struct Flags {
-
- bool uses_alpha;
- bool uses_texscreen;
- bool uses_texpos;
- bool uses_normalmap;
- bool vertex_code_writes_vertex;
- bool vertex_code_writes_position;
- bool uses_discard;
- bool uses_screen_uv;
- bool use_color_interp;
- bool use_uv_interp;
- bool use_uv2_interp;
- bool use_tangent_interp;
- bool use_var1_interp;
- bool use_var2_interp;
- bool uses_light;
- bool uses_time;
- bool uses_normal;
- bool uses_texpixel_size;
- bool uses_worldvec;
- bool uses_shadow_color;
- };
-
- Error compile(const String &p_code, ShaderLanguage::ShaderType p_type, String &r_code_line, String &r_globals_line, Flags &r_flags, Map<StringName, ShaderLanguage::Uniform> *r_uniforms = NULL);
-
- ShaderCompilerGLES2();
-};
-
-#endif // SHADER_COMPILERL_GL_H
diff --git a/drivers/gles2/shader_gles2.cpp b/drivers/gles2/shader_gles2.cpp
deleted file mode 100644
index 961bf27a72..0000000000
--- a/drivers/gles2/shader_gles2.cpp
+++ /dev/null
@@ -1,736 +0,0 @@
-/*************************************************************************/
-/* shader_gles2.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "shader_gles2.h"
-
-#ifdef GLES2_ENABLED
-#include "print_string.h"
-
-//#define DEBUG_OPENGL
-
-#ifdef DEBUG_OPENGL
-
-#define DEBUG_TEST_ERROR(m_section) \
- { \
- uint32_t err = glGetError(); \
- if (err) { \
- print_line("OpenGL Error #" + itos(err) + " at: " + m_section); \
- } \
- }
-#else
-
-#define DEBUG_TEST_ERROR(m_section)
-
-#endif
-
-ShaderGLES2 *ShaderGLES2::active = NULL;
-
-//#define DEBUG_SHADER
-
-#ifdef DEBUG_SHADER
-
-#define DEBUG_PRINT(m_text) print_line(m_text);
-
-#else
-
-#define DEBUG_PRINT(m_text)
-
-#endif
-
-void ShaderGLES2::bind_uniforms() {
-
- if (!uniforms_dirty) {
- return;
- };
-
- // upload default uniforms
- const Map<uint32_t, Variant>::Element *E = uniform_defaults.front();
-
- while (E) {
- int idx = E->key();
- int location = version->uniform_location[idx];
-
- if (location < 0) {
- E = E->next();
- continue;
- }
-
- const Variant &v = E->value();
- _set_uniform_variant(location, v);
- //print_line("uniform "+itos(location)+" value "+v+ " type "+Variant::get_type_name(v.get_type()));
- E = E->next();
- };
-
- const Map<uint32_t, CameraMatrix>::Element *C = uniform_cameras.front();
- while (C) {
-
- int location = version->uniform_location[C->key()];
- if (location < 0) {
- C = C->next();
- continue;
- }
-
- glUniformMatrix4fv(location, 1, false, &(C->get().matrix[0][0]));
- C = C->next();
- };
-
- uniforms_dirty = false;
-};
-
-GLint ShaderGLES2::get_uniform_location(int p_idx) const {
-
- ERR_FAIL_COND_V(!version, -1);
-
- return version->uniform_location[p_idx];
-};
-
-bool ShaderGLES2::bind() {
-
- if (active != this || !version || new_conditional_version.key != conditional_version.key) {
- conditional_version = new_conditional_version;
- version = get_current_version();
- } else {
-
- return false;
- }
-
- ERR_FAIL_COND_V(!version, false);
-
- glUseProgram(version->id);
-
- DEBUG_TEST_ERROR("Use Program");
-
- active = this;
- uniforms_dirty = true;
- /*
- * why on earth is this code here?
- for (int i=0;i<texunit_pair_count;i++) {
-
- glUniform1i(texunit_pairs[i].location, texunit_pairs[i].index);
- DEBUG_TEST_ERROR("Uniform 1 i");
- }
-
-*/
- return true;
-}
-
-void ShaderGLES2::unbind() {
-
- version = NULL;
- glUseProgram(0);
- uniforms_dirty = true;
- active = NULL;
-}
-
-static String _fix_error_code_line(const String &p_error, int p_code_start, int p_offset) {
-
- int last_find_pos = -1;
- // NVIDIA
- String error = p_error;
- while ((last_find_pos = p_error.find("(", last_find_pos + 1)) != -1) {
-
- int end_pos = last_find_pos + 1;
-
- while (true) {
-
- if (p_error[end_pos] >= '0' && p_error[end_pos] <= '9') {
-
- end_pos++;
- continue;
- } else if (p_error[end_pos] == ')') {
- break;
- } else {
-
- end_pos = -1;
- break;
- }
- }
-
- if (end_pos == -1)
- continue;
-
- String numstr = error.substr(last_find_pos + 1, (end_pos - last_find_pos) - 1);
- String begin = error.substr(0, last_find_pos + 1);
- String end = error.substr(end_pos, error.length());
- int num = numstr.to_int() + p_code_start - p_offset;
- error = begin + itos(num) + end;
- }
-
- // ATI
- last_find_pos = -1;
- while ((last_find_pos = p_error.find("ERROR: ", last_find_pos + 1)) != -1) {
-
- last_find_pos += 6;
- int end_pos = last_find_pos + 1;
-
- while (true) {
-
- if (p_error[end_pos] >= '0' && p_error[end_pos] <= '9') {
-
- end_pos++;
- continue;
- } else if (p_error[end_pos] == ':') {
- break;
- } else {
-
- end_pos = -1;
- break;
- }
- }
- continue;
- if (end_pos == -1)
- continue;
-
- String numstr = error.substr(last_find_pos + 1, (end_pos - last_find_pos) - 1);
- print_line("numstr: " + numstr);
- String begin = error.substr(0, last_find_pos + 1);
- String end = error.substr(end_pos, error.length());
- int num = numstr.to_int() + p_code_start - p_offset;
- error = begin + itos(num) + end;
- }
- return error;
-}
-
-ShaderGLES2::Version *ShaderGLES2::get_current_version() {
-
- Version *_v = version_map.getptr(conditional_version);
-
- if (_v) {
-
- if (conditional_version.code_version != 0) {
- CustomCode *cc = custom_code_map.getptr(conditional_version.code_version);
- ERR_FAIL_COND_V(!cc, _v);
- if (cc->version == _v->code_version)
- return _v;
- } else {
- return _v;
- }
- }
-
- if (!_v)
- version_map[conditional_version] = Version();
-
- Version &v = version_map[conditional_version];
-
- if (!_v) {
-
- v.uniform_location = memnew_arr(GLint, uniform_count);
-
- } else {
- if (v.ok) {
- //bye bye shaders
- glDeleteShader(v.vert_id);
- glDeleteShader(v.frag_id);
- glDeleteProgram(v.id);
- v.id = 0;
- }
- }
-
- v.ok = false;
- /* SETUP CONDITIONALS */
-
- Vector<const char *> strings;
-#ifdef GLEW_ENABLED
- strings.push_back("#version 120\n"); //ATI requieres this before anything
-#endif
- int define_line_ofs = 1;
-
- for (int j = 0; j < conditional_count; j++) {
-
- bool enable = ((1 << j) & conditional_version.version);
- strings.push_back(enable ? conditional_defines[j] : "");
- if (enable)
- define_line_ofs++;
-
- if (enable) {
- DEBUG_PRINT(conditional_defines[j]);
- }
- }
-
- //keep them around during the function
- CharString code_string;
- CharString code_string2;
- CharString code_globals;
-
- //print_line("code version? "+itos(conditional_version.code_version));
-
- CustomCode *cc = NULL;
-
- if (conditional_version.code_version > 0) {
- //do custom code related stuff
-
- ERR_FAIL_COND_V(!custom_code_map.has(conditional_version.code_version), NULL);
- cc = &custom_code_map[conditional_version.code_version];
- v.code_version = cc->version;
- define_line_ofs += 2;
- }
-
- /* CREATE PROGRAM */
-
- v.id = glCreateProgram();
-
- ERR_FAIL_COND_V(v.id == 0, NULL);
-
- /* VERTEX SHADER */
-
- if (cc) {
- for (int i = 0; i < cc->custom_defines.size(); i++) {
-
- strings.push_back(cc->custom_defines[i]);
- DEBUG_PRINT("CD #" + itos(i) + ": " + String(cc->custom_defines[i]));
- }
- }
-
- int strings_base_size = strings.size();
-#if 0
- if (cc) {
-
- String _code_string = "#define VERTEX_SHADER_CODE "+cc->vertex+"\n";
- String _code_globals = "#define VERTEX_SHADER_GLOBALS "+cc->vertex_globals+"\n";
-
- code_string=_code_string.ascii();
- code_globals=_code_globals.ascii();
- DEBUG_PRINT( code_globals.get_data() );
- DEBUG_PRINT( code_string.get_data() );
- strings.push_back(code_globals);
- strings.push_back(code_string);
- }
-#endif
-
- strings.push_back(vertex_code0.get_data());
- if (cc) {
- code_globals = cc->vertex_globals.ascii();
- strings.push_back(code_globals.get_data());
- }
- strings.push_back(vertex_code1.get_data());
-
- if (cc) {
- code_string = cc->vertex.ascii();
- strings.push_back(code_string.get_data());
- }
-
- strings.push_back(vertex_code2.get_data());
-#ifdef DEBUG_SHADER
-
- DEBUG_PRINT("\nVertex Code:\n\n" + String(code_string.get_data()));
- for (int i = 0; i < strings.size(); i++) {
-
- //print_line("vert strings "+itos(i)+":"+String(strings[i]));
- }
-#endif
-
- v.vert_id = glCreateShader(GL_VERTEX_SHADER);
- glShaderSource(v.vert_id, strings.size(), &strings[0], NULL);
- glCompileShader(v.vert_id);
-
- GLint status;
-
- glGetShaderiv(v.vert_id, GL_COMPILE_STATUS, &status);
- if (status == GL_FALSE) {
- // error compiling
- GLsizei iloglen;
- glGetShaderiv(v.vert_id, GL_INFO_LOG_LENGTH, &iloglen);
-
- if (iloglen < 0) {
-
- glDeleteShader(v.vert_id);
- glDeleteProgram(v.id);
- v.id = 0;
-
- ERR_PRINT("NO LOG, WTF");
- } else {
-
- if (iloglen == 0) {
-
- iloglen = 4096; //buggy driver (Adreno 220+....)
- }
-
- char *ilogmem = (char *)Memory::alloc_static(iloglen + 1);
- ilogmem[iloglen] = 0;
- glGetShaderInfoLog(v.vert_id, iloglen, &iloglen, ilogmem);
-
- String err_string = get_shader_name() + ": Vertex Program Compilation Failed:\n";
-
- err_string += ilogmem;
- err_string = _fix_error_code_line(err_string, vertex_code_start, define_line_ofs);
- ERR_PRINT(err_string.ascii().get_data());
- Memory::free_static(ilogmem);
- glDeleteShader(v.vert_id);
- glDeleteProgram(v.id);
- v.id = 0;
- }
-
- ERR_FAIL_V(NULL);
- }
-
- /* FRAGMENT SHADER */
-
- strings.resize(strings_base_size);
-#if 0
- if (cc) {
-
- String _code_string = "#define FRAGMENT_SHADER_CODE "+cc->fragment+"\n";
- String _code_globals = "#define FRAGMENT_SHADER_GLOBALS "+cc->fragment_globals+"\n";
-
- code_string=_code_string.ascii();
- code_globals=_code_globals.ascii();
- DEBUG_PRINT( code_globals.get_data() );
- DEBUG_PRINT( code_string.get_data() );
- strings.push_back(code_globals);
- strings.push_back(code_string);
- }
-#endif
-
- strings.push_back(fragment_code0.get_data());
- if (cc) {
- code_globals = cc->fragment_globals.ascii();
- strings.push_back(code_globals.get_data());
- }
- strings.push_back(fragment_code1.get_data());
-
- if (cc) {
- code_string = cc->fragment.ascii();
- strings.push_back(code_string.get_data());
- }
-
- strings.push_back(fragment_code2.get_data());
-
- if (cc) {
- code_string2 = cc->light.ascii();
- strings.push_back(code_string2.get_data());
- }
-
- strings.push_back(fragment_code3.get_data());
-
-#ifdef DEBUG_SHADER
- DEBUG_PRINT("\nFragment Code:\n\n" + String(code_string.get_data()));
- for (int i = 0; i < strings.size(); i++) {
-
- //print_line("frag strings "+itos(i)+":"+String(strings[i]));
- }
-#endif
-
- v.frag_id = glCreateShader(GL_FRAGMENT_SHADER);
- glShaderSource(v.frag_id, strings.size(), &strings[0], NULL);
- glCompileShader(v.frag_id);
-
- glGetShaderiv(v.frag_id, GL_COMPILE_STATUS, &status);
- if (status == GL_FALSE) {
- // error compiling
- GLsizei iloglen;
- glGetShaderiv(v.frag_id, GL_INFO_LOG_LENGTH, &iloglen);
-
- if (iloglen < 0) {
-
- glDeleteShader(v.frag_id);
- glDeleteShader(v.vert_id);
- glDeleteProgram(v.id);
- v.id = 0;
- ERR_PRINT("NO LOG, WTF");
- } else {
-
- if (iloglen == 0) {
-
- iloglen = 4096; //buggy driver (Adreno 220+....)
- }
-
- char *ilogmem = (char *)Memory::alloc_static(iloglen + 1);
- ilogmem[iloglen] = 0;
- glGetShaderInfoLog(v.frag_id, iloglen, &iloglen, ilogmem);
-
- String err_string = get_shader_name() + ": Fragment Program Compilation Failed:\n";
-
- err_string += ilogmem;
- err_string = _fix_error_code_line(err_string, fragment_code_start, define_line_ofs);
- ERR_PRINT(err_string.ascii().get_data());
- Memory::free_static(ilogmem);
- glDeleteShader(v.frag_id);
- glDeleteShader(v.vert_id);
- glDeleteProgram(v.id);
- v.id = 0;
- }
-
- ERR_FAIL_V(NULL);
- }
-
- glAttachShader(v.id, v.frag_id);
- glAttachShader(v.id, v.vert_id);
-
- // bind attributes before linking
- for (int i = 0; i < attribute_pair_count; i++) {
-
- glBindAttribLocation(v.id, attribute_pairs[i].index, attribute_pairs[i].name);
- }
-
- glLinkProgram(v.id);
-
- glGetProgramiv(v.id, GL_LINK_STATUS, &status);
-
- if (status == GL_FALSE) {
- // error linking
- GLsizei iloglen;
- glGetProgramiv(v.id, GL_INFO_LOG_LENGTH, &iloglen);
-
- if (iloglen < 0) {
-
- glDeleteShader(v.frag_id);
- glDeleteShader(v.vert_id);
- glDeleteProgram(v.id);
- v.id = 0;
- ERR_FAIL_COND_V(iloglen <= 0, NULL);
- }
-
- if (iloglen == 0) {
-
- iloglen = 4096; //buggy driver (Adreno 220+....)
- }
-
- char *ilogmem = (char *)Memory::alloc_static(iloglen + 1);
- ilogmem[iloglen] = 0;
- glGetProgramInfoLog(v.id, iloglen, &iloglen, ilogmem);
-
- String err_string = get_shader_name() + ": Program LINK FAILED:\n";
-
- err_string += ilogmem;
- err_string = _fix_error_code_line(err_string, fragment_code_start, define_line_ofs);
- ERR_PRINT(err_string.ascii().get_data());
- Memory::free_static(ilogmem);
- glDeleteShader(v.frag_id);
- glDeleteShader(v.vert_id);
- glDeleteProgram(v.id);
- v.id = 0;
-
- ERR_FAIL_V(NULL);
- }
-
- /* UNIFORMS */
-
- glUseProgram(v.id);
-
- //print_line("uniforms: ");
- for (int j = 0; j < uniform_count; j++) {
-
- v.uniform_location[j] = glGetUniformLocation(v.id, uniform_names[j]);
- //print_line("uniform "+String(uniform_names[j])+" location "+itos(v.uniform_location[j]));
- }
-
- // set texture uniforms
- for (int i = 0; i < texunit_pair_count; i++) {
-
- GLint loc = glGetUniformLocation(v.id, texunit_pairs[i].name);
- if (loc >= 0)
- glUniform1i(loc, texunit_pairs[i].index);
- }
-
- if (cc) {
-
- v.custom_uniform_locations.resize(cc->custom_uniforms.size());
- for (int i = 0; i < cc->custom_uniforms.size(); i++) {
-
- v.custom_uniform_locations[i] = glGetUniformLocation(v.id, String(cc->custom_uniforms[i]).ascii().get_data());
- }
- }
-
- glUseProgram(0);
-
- v.ok = true;
-
- return &v;
-}
-
-GLint ShaderGLES2::get_uniform_location(const String &p_name) const {
-
- ERR_FAIL_COND_V(!version, -1);
- return glGetUniformLocation(version->id, p_name.ascii().get_data());
-}
-
-void ShaderGLES2::setup(const char **p_conditional_defines, int p_conditional_count, const char **p_uniform_names, int p_uniform_count, const AttributePair *p_attribute_pairs, int p_attribute_count, const TexUnitPair *p_texunit_pairs, int p_texunit_pair_count, const char *p_vertex_code, const char *p_fragment_code, int p_vertex_code_start, int p_fragment_code_start) {
-
- ERR_FAIL_COND(version);
- conditional_version.key = 0;
- new_conditional_version.key = 0;
- uniform_count = p_uniform_count;
- conditional_count = p_conditional_count;
- conditional_defines = p_conditional_defines;
- uniform_names = p_uniform_names;
- vertex_code = p_vertex_code;
- fragment_code = p_fragment_code;
- texunit_pairs = p_texunit_pairs;
- texunit_pair_count = p_texunit_pair_count;
- vertex_code_start = p_vertex_code_start;
- fragment_code_start = p_fragment_code_start;
- attribute_pairs = p_attribute_pairs;
- attribute_pair_count = p_attribute_count;
-
- //split vertex and shader code (thank you, retarded shader compiler programmers from you know what company).
- {
- String globals_tag = "\nVERTEX_SHADER_GLOBALS";
- String code_tag = "\nVERTEX_SHADER_CODE";
- String code = vertex_code;
- int cpos = code.find(globals_tag);
- if (cpos == -1) {
- vertex_code0 = code.ascii();
- } else {
- vertex_code0 = code.substr(0, cpos).ascii();
- code = code.substr(cpos + globals_tag.length(), code.length());
-
- cpos = code.find(code_tag);
-
- if (cpos == -1) {
- vertex_code1 = code.ascii();
- } else {
-
- vertex_code1 = code.substr(0, cpos).ascii();
- vertex_code2 = code.substr(cpos + code_tag.length(), code.length()).ascii();
- }
- }
- }
-
- {
- String globals_tag = "\nFRAGMENT_SHADER_GLOBALS";
- String code_tag = "\nFRAGMENT_SHADER_CODE";
- String light_code_tag = "\nLIGHT_SHADER_CODE";
- String code = fragment_code;
- int cpos = code.find(globals_tag);
- if (cpos == -1) {
- fragment_code0 = code.ascii();
- } else {
- fragment_code0 = code.substr(0, cpos).ascii();
- code = code.substr(cpos + globals_tag.length(), code.length());
-
- cpos = code.find(code_tag);
-
- if (cpos == -1) {
- fragment_code1 = code.ascii();
- } else {
-
- fragment_code1 = code.substr(0, cpos).ascii();
- String code2 = code.substr(cpos + code_tag.length(), code.length());
-
- cpos = code2.find(light_code_tag);
- if (cpos == -1) {
- fragment_code2 = code2.ascii();
- } else {
-
- fragment_code2 = code2.substr(0, cpos).ascii();
- fragment_code3 = code2.substr(cpos + light_code_tag.length(), code2.length()).ascii();
- }
- }
- }
- }
-}
-
-void ShaderGLES2::finish() {
-
- const VersionKey *V = NULL;
- while ((V = version_map.next(V))) {
-
- Version &v = version_map[*V];
- glDeleteShader(v.vert_id);
- glDeleteShader(v.frag_id);
- glDeleteProgram(v.id);
- memdelete_arr(v.uniform_location);
- }
-}
-
-void ShaderGLES2::clear_caches() {
-
- const VersionKey *V = NULL;
- while ((V = version_map.next(V))) {
-
- Version &v = version_map[*V];
- glDeleteShader(v.vert_id);
- glDeleteShader(v.frag_id);
- glDeleteProgram(v.id);
- memdelete_arr(v.uniform_location);
- }
-
- version_map.clear();
-
- custom_code_map.clear();
- version = NULL;
- last_custom_code = 1;
- uniforms_dirty = true;
-}
-
-uint32_t ShaderGLES2::create_custom_shader() {
-
- custom_code_map[last_custom_code] = CustomCode();
- custom_code_map[last_custom_code].version = 1;
- return last_custom_code++;
-}
-
-void ShaderGLES2::set_custom_shader_code(uint32_t p_code_id, const String &p_vertex, const String &p_vertex_globals, const String &p_fragment, const String &p_light, const String &p_fragment_globals, const Vector<StringName> &p_uniforms, const Vector<const char *> &p_custom_defines) {
-
- ERR_FAIL_COND(!custom_code_map.has(p_code_id));
- CustomCode *cc = &custom_code_map[p_code_id];
-
- cc->vertex = p_vertex;
- cc->vertex_globals = p_vertex_globals;
- cc->fragment = p_fragment;
- cc->fragment_globals = p_fragment_globals;
- cc->light = p_light;
- cc->custom_uniforms = p_uniforms;
- cc->custom_defines = p_custom_defines;
- cc->version++;
-}
-
-void ShaderGLES2::set_custom_shader(uint32_t p_code_id) {
-
- new_conditional_version.code_version = p_code_id;
-}
-
-void ShaderGLES2::free_custom_shader(uint32_t p_code_id) {
-
- /* if (! custom_code_map.has( p_code_id )) {
- print_line("no code id "+itos(p_code_id));
- } else {
- print_line("freed code id "+itos(p_code_id));
-
- }*/
-
- ERR_FAIL_COND(!custom_code_map.has(p_code_id));
- if (conditional_version.code_version == p_code_id)
- conditional_version.code_version = 0; //bye
-
- custom_code_map.erase(p_code_id);
-}
-
-ShaderGLES2::ShaderGLES2() {
- version = NULL;
- last_custom_code = 1;
- uniforms_dirty = true;
-}
-
-ShaderGLES2::~ShaderGLES2() {
-
- finish();
-}
-
-#endif
diff --git a/drivers/gles2/shader_gles2.h b/drivers/gles2/shader_gles2.h
deleted file mode 100644
index 69a66b8ab7..0000000000
--- a/drivers/gles2/shader_gles2.h
+++ /dev/null
@@ -1,359 +0,0 @@
-/*************************************************************************/
-/* shader_gles2.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 SHADER_GLES2_H
-#define SHADER_GLES2_H
-
-#ifdef GLES2_ENABLED
-
-#include "platform_config.h"
-#ifndef GLES2_INCLUDE_H
-#include <GLES2/gl2.h>
-#else
-#include GLES2_INCLUDE_H
-#endif
-
-#include "camera_matrix.h"
-#include "hash_map.h"
-#include "map.h"
-#include "variant.h"
-
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-
-class ShaderGLES2 {
-protected:
- struct Enum {
-
- uint64_t mask;
- uint64_t shift;
- const char *defines[16];
- };
-
- struct EnumValue {
-
- uint64_t set_mask;
- uint64_t clear_mask;
- };
-
- struct AttributePair {
-
- const char *name;
- int index;
- };
-
- struct UniformPair {
- const char *name;
- Variant::Type type_hint;
- };
-
- struct TexUnitPair {
-
- const char *name;
- int index;
- };
-
- bool uniforms_dirty;
-
-private:
- //@TODO Optimize to a fixed set of shader pools and use a LRU
- int uniform_count;
- int texunit_pair_count;
- int conditional_count;
- int vertex_code_start;
- int fragment_code_start;
- int attribute_pair_count;
-
- struct CustomCode {
-
- String vertex;
- String vertex_globals;
- String fragment;
- String fragment_globals;
- String light;
- uint32_t version;
- Vector<StringName> custom_uniforms;
- Vector<const char *> custom_defines;
- };
-
- struct Version {
-
- GLuint id;
- GLuint vert_id;
- GLuint frag_id;
- GLint *uniform_location;
- Vector<GLint> custom_uniform_locations;
- uint32_t code_version;
- bool ok;
- Version() {
- code_version = 0;
- ok = false;
- uniform_location = NULL;
- }
- };
-
- Version *version;
-
- union VersionKey {
-
- struct {
- uint32_t version;
- uint32_t code_version;
- };
- uint64_t key;
- bool operator==(const VersionKey &p_key) const { return key == p_key.key; }
- bool operator<(const VersionKey &p_key) const { return key < p_key.key; }
- };
-
- struct VersionKeyHash {
-
- static _FORCE_INLINE_ uint32_t hash(const VersionKey &p_key) { return HashMapHasherDefault::hash(p_key.key); };
- };
-
- //this should use a way more cachefriendly version..
- HashMap<VersionKey, Version, VersionKeyHash> version_map;
-
- HashMap<uint32_t, CustomCode> custom_code_map;
- uint32_t last_custom_code;
-
- VersionKey conditional_version;
- VersionKey new_conditional_version;
-
- virtual String get_shader_name() const = 0;
-
- const char **conditional_defines;
- const char **uniform_names;
- const AttributePair *attribute_pairs;
- const TexUnitPair *texunit_pairs;
- const char *vertex_code;
- const char *fragment_code;
- CharString fragment_code0;
- CharString fragment_code1;
- CharString fragment_code2;
- CharString fragment_code3;
-
- CharString vertex_code0;
- CharString vertex_code1;
- CharString vertex_code2;
-
- Version *get_current_version();
-
- static ShaderGLES2 *active;
-
- _FORCE_INLINE_ void _set_uniform_variant(GLint p_uniform, const Variant &p_value) {
-
- if (p_uniform < 0)
- return; // do none
- switch (p_value.get_type()) {
-
- case Variant::BOOL:
- case Variant::INT: /* {
-
- int val=p_value;
- glUniform1i( p_uniform, val );
- } break; */
- case Variant::REAL: {
-
- real_t val = p_value;
- glUniform1f(p_uniform, val);
- } break;
- case Variant::COLOR: {
-
- Color val = p_value;
- glUniform4f(p_uniform, val.r, val.g, val.b, val.a);
- } break;
- case Variant::VECTOR2: {
-
- Vector2 val = p_value;
- glUniform2f(p_uniform, val.x, val.y);
- } break;
- case Variant::VECTOR3: {
-
- Vector3 val = p_value;
- glUniform3f(p_uniform, val.x, val.y, val.z);
- } break;
- case Variant::PLANE: {
-
- Plane val = p_value;
- glUniform4f(p_uniform, val.normal.x, val.normal.y, val.normal.z, val.d);
- } break;
- case Variant::QUAT: {
-
- Quat val = p_value;
- glUniform4f(p_uniform, val.x, val.y, val.z, val.w);
- } break;
-
- case Variant::MATRIX32: {
-
- Transform2D tr = p_value;
- GLfloat matrix[16] = { /* build a 16x16 matrix */
- tr.elements[0][0],
- tr.elements[0][1],
- 0,
- 0,
- tr.elements[1][0],
- tr.elements[1][1],
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- tr.elements[2][0],
- tr.elements[2][1],
- 0,
- 1
- };
-
- glUniformMatrix4fv(p_uniform, 1, false, matrix);
-
- } break;
- case Variant::MATRIX3:
- case Variant::TRANSFORM: {
-
- Transform tr = p_value;
- GLfloat matrix[16] = { /* build a 16x16 matrix */
- tr.basis.elements[0][0],
- tr.basis.elements[1][0],
- tr.basis.elements[2][0],
- 0,
- tr.basis.elements[0][1],
- tr.basis.elements[1][1],
- tr.basis.elements[2][1],
- 0,
- tr.basis.elements[0][2],
- tr.basis.elements[1][2],
- tr.basis.elements[2][2],
- 0,
- tr.origin.x,
- tr.origin.y,
- tr.origin.z,
- 1
- };
-
- glUniformMatrix4fv(p_uniform, 1, false, matrix);
- } break;
- default: { ERR_FAIL(); } // do nothing
- }
- }
-
- Map<uint32_t, Variant> uniform_defaults;
- Map<uint32_t, CameraMatrix> uniform_cameras;
-
-protected:
- _FORCE_INLINE_ int _get_uniform(int p_which) const;
- _FORCE_INLINE_ void _set_conditional(int p_which, bool p_value);
-
- void setup(const char **p_conditional_defines, int p_conditional_count, const char **p_uniform_names, int p_uniform_count, const AttributePair *p_attribute_pairs, int p_attribute_count, const TexUnitPair *p_texunit_pairs, int p_texunit_pair_count, const char *p_vertex_code, const char *p_fragment_code, int p_vertex_code_start, int p_fragment_code_start);
-
- ShaderGLES2();
-
-public:
- enum {
- CUSTOM_SHADER_DISABLED = 0
- };
-
- GLint get_uniform_location(const String &p_name) const;
- GLint get_uniform_location(int p_uniform) const;
-
- static _FORCE_INLINE_ ShaderGLES2 *get_active() { return active; };
- bool bind();
- void unbind();
- void bind_uniforms();
-
- inline GLuint get_program() const { return version ? version->id : 0; }
-
- void clear_caches();
-
- uint32_t create_custom_shader();
- void set_custom_shader_code(uint32_t p_id, const String &p_vertex, const String &p_vertex_globals, const String &p_fragment, const String &p_p_light, const String &p_fragment_globals, const Vector<StringName> &p_uniforms, const Vector<const char *> &p_custom_defines);
- void set_custom_shader(uint32_t p_id);
- void free_custom_shader(uint32_t p_id);
-
- void set_uniform_default(int p_idx, const Variant &p_value) {
-
- if (p_value.get_type() == Variant::NIL) {
-
- uniform_defaults.erase(p_idx);
- } else {
-
- uniform_defaults[p_idx] = p_value;
- }
- uniforms_dirty = true;
- };
-
- uint32_t get_version() const { return new_conditional_version.version; }
-
- void set_uniform_camera(int p_idx, const CameraMatrix &p_mat) {
-
- uniform_cameras[p_idx] = p_mat;
- uniforms_dirty = true;
- };
-
- _FORCE_INLINE_ void set_custom_uniform(int p_idx, const Variant &p_value) {
-
- ERR_FAIL_COND(!version);
- ERR_FAIL_INDEX(p_idx, version->custom_uniform_locations.size());
- _set_uniform_variant(version->custom_uniform_locations[p_idx], p_value);
- }
-
- _FORCE_INLINE_ GLint get_custom_uniform_location(int p_idx) {
-
- ERR_FAIL_COND_V(!version, -1);
- ERR_FAIL_INDEX_V(p_idx, version->custom_uniform_locations.size(), -1);
- return version->custom_uniform_locations[p_idx];
- }
-
- virtual void init() = 0;
- void finish();
-
- virtual ~ShaderGLES2();
-};
-
-// called a lot, made inline
-
-int ShaderGLES2::_get_uniform(int p_which) const {
-
- ERR_FAIL_INDEX_V(p_which, uniform_count, -1);
- ERR_FAIL_COND_V(!version, -1);
- return version->uniform_location[p_which];
-}
-
-void ShaderGLES2::_set_conditional(int p_which, bool p_value) {
-
- ERR_FAIL_INDEX(p_which, conditional_count);
- if (p_value)
- new_conditional_version.version |= (1 << p_which);
- else
- new_conditional_version.version &= ~(1 << p_which);
-}
-
-#endif
-#endif
diff --git a/drivers/gles2/shaders/SCsub b/drivers/gles2/shaders/SCsub
deleted file mode 100644
index bf4ec9485d..0000000000
--- a/drivers/gles2/shaders/SCsub
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-if env['BUILDERS'].has_key('GLSL120GLES'):
- env.GLSL120GLES('material.glsl')
- env.GLSL120GLES('canvas.glsl')
- env.GLSL120GLES('canvas_shadow.glsl')
- env.GLSL120GLES('blur.glsl')
- env.GLSL120GLES('copy.glsl')
-
-Export('env')
diff --git a/drivers/gles2/shaders/blur.glsl b/drivers/gles2/shaders/blur.glsl
deleted file mode 100644
index b68a55aee7..0000000000
--- a/drivers/gles2/shaders/blur.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-[vertex]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-attribute highp vec4 vertex_attrib; // attrib:0
-attribute vec2 uv_in; // attrib:4
-
-varying vec2 uv_out;
-
-
-
-void main() {
-
- color_interp = color_attrib;
- uv_interp = uv_attrib;
- vec4 outvec = vec4(vertex, 1.0);
- outvec = extra_matrix * outvec;
- outvec = modelview_matrix * outvec;
- gl_Position = projection_matrix * outvec;
-}
-
-[fragment]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
- // texunit:0
-uniform sampler2D texture;
-varying vec2 uv_out;
-
-
-void main() {
-
- vec4 color = color_interp;
-
- color *= texture2D( texture, uv_interp );
-
- gl_FragColor = color;
-}
-
diff --git a/drivers/gles2/shaders/canvas.glsl b/drivers/gles2/shaders/canvas.glsl
deleted file mode 100644
index 4b8c553b60..0000000000
--- a/drivers/gles2/shaders/canvas.glsl
+++ /dev/null
@@ -1,391 +0,0 @@
-[vertex]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-uniform highp mat4 projection_matrix;
-uniform highp mat4 modelview_matrix;
-uniform highp mat4 extra_matrix;
-attribute highp vec3 vertex; // attrib:0
-attribute vec4 color_attrib; // attrib:3
-attribute highp vec2 uv_attrib; // attrib:4
-
-varying vec2 uv_interp;
-varying vec4 color_interp;
-
-#if defined(USE_TIME)
-uniform float time;
-#endif
-
-
-#ifdef USE_LIGHTING
-
-uniform highp mat4 light_matrix;
-uniform highp mat4 light_local_matrix;
-uniform vec2 light_pos;
-varying vec4 light_uv_interp;
-
-varying vec4 local_rot;
-uniform vec2 normal_flip;
-
-#ifdef USE_SHADOWS
-varying highp vec2 pos;
-#endif
-
-#endif
-
-#if defined(ENABLE_VAR1_INTERP)
-varying vec4 var1_interp;
-#endif
-
-#if defined(ENABLE_VAR2_INTERP)
-varying vec4 var2_interp;
-#endif
-
-//uniform bool snap_pixels;
-
-VERTEX_SHADER_GLOBALS
-
-void main() {
-
- color_interp = color_attrib;
- uv_interp = uv_attrib;
- highp vec4 outvec = vec4(vertex, 1.0);
-{
- vec2 src_vtx=outvec.xy;
-VERTEX_SHADER_CODE
-
-}
-#if !defined(USE_WORLD_VEC)
- outvec = extra_matrix * outvec;
- outvec = modelview_matrix * outvec;
-#endif
-
-
-
-#ifdef USE_PIXEL_SNAP
-
- outvec.xy=floor(outvec.xy+0.5);
-#endif
-
-
- gl_Position = projection_matrix * outvec;
-
-#ifdef USE_LIGHTING
-
- light_uv_interp.xy = (light_matrix * outvec).xy;
- light_uv_interp.zw =(light_local_matrix * outvec).xy;
-#ifdef USE_SHADOWS
- pos=outvec.xy;
-#endif
-
- local_rot.xy=normalize( (modelview_matrix * ( extra_matrix * vec4(1.0,0.0,0.0,0.0) )).xy )*normal_flip.x;
- local_rot.zw=normalize( (modelview_matrix * ( extra_matrix * vec4(0.0,1.0,0.0,0.0) )).xy )*normal_flip.y;
-
-#endif
-
-}
-
-[fragment]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-
-uniform sampler2D texture; // texunit:0
-uniform sampler2D normal_texture; // texunit:0
-
-varying vec2 uv_interp;
-varying vec4 color_interp;
-
-#ifdef MOMO
-
-#endif
-
-#if defined(ENABLE_SCREEN_UV)
-
-uniform vec2 screen_uv_mult;
-
-#endif
-
-#if defined(ENABLE_TEXSCREEN)
-
-uniform vec2 texscreen_screen_mult;
-uniform vec4 texscreen_screen_clamp;
-uniform sampler2D texscreen_tex;
-
-#endif
-
-
-#if defined(ENABLE_VAR1_INTERP)
-varying vec4 var1_interp;
-#endif
-
-#if defined(ENABLE_VAR2_INTERP)
-varying vec4 var2_interp;
-#endif
-
-#if defined(USE_TIME)
-uniform float time;
-#endif
-
-#ifdef USE_MODULATE
-
-uniform vec4 modulate;
-
-#endif
-
-#ifdef USE_LIGHTING
-
-uniform sampler2D light_texture;
-uniform vec4 light_color;
-uniform vec4 light_shadow_color;
-uniform float light_height;
-varying vec4 light_uv_interp;
-uniform float light_outside_alpha;
-
-varying vec4 local_rot;
-
-#ifdef USE_SHADOWS
-
-uniform highp sampler2D shadow_texture;
-uniform float shadow_attenuation;
-
-uniform highp mat4 shadow_matrix;
-varying highp vec2 pos;
-uniform float shadowpixel_size;
-
-#ifdef SHADOW_ESM
-uniform float shadow_esm_multiplier;
-#endif
-
-#endif
-
-#endif
-
-#if defined(USE_TEXPIXEL_SIZE)
-uniform vec2 texpixel_size;
-#endif
-
-
-FRAGMENT_SHADER_GLOBALS
-
-
-void main() {
-
- vec4 color = color_interp;
-
-#ifdef USE_DISTANCE_FIELD
- const float smoothing = 1.0/32.0;
- float distance = textureLod(texture, uv_interp,0.0).a;
- color.a = smoothstep(0.5 - smoothing, 0.5 + smoothing, distance) * color.a;
-#else
- color *= texture2D( texture, uv_interp );
-
-#endif
-
- vec3 normal;
- normal.xy = textureLod( normal_texture, uv_interp, 0.0 ).xy * 2.0 - 1.0;
- normal.z = sqrt(1.0-dot(normal.xy,normal.xy));
-
-#if defined(ENABLE_SCREEN_UV)
- vec2 screen_uv = gl_FragCoord.xy*screen_uv_mult;
-#endif
-
-
-{
-#if defined(USE_NORMALMAP)
- vec3 normal_map=vec3(0.0,0.0,1.0);
- float normal_depth=1.0;
-#endif
-
-FRAGMENT_SHADER_CODE
-
-#if defined(USE_NORMALMAP)
- normal = mix(vec3(0.0,0.0,1.0), normal_map * vec3(2.0,-2.0,1.0) - vec3( 1.0, -1.0, 0.0 ), normal_depth );
-#endif
-
-}
-#ifdef DEBUG_ENCODED_32
- highp float enc32 = dot( color,highp vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1) );
- color = vec4(vec3(enc32),1.0);
-#endif
-
-#ifdef USE_MODULATE
-
- color*=modulate;
-#endif
-
-
-#ifdef USE_LIGHTING
-
- vec2 light_vec = light_uv_interp.zw;; //for shadow and normal mapping
-
- normal.xy = mat2(local_rot.xy,local_rot.zw) * normal.xy;
-
- float att=1.0;
-
- vec2 light_uv = light_uv_interp.xy;
- vec4 light = texture2D(light_texture,light_uv) * light_color;
-#if defined(USE_OUTPUT_SHADOW_COLOR)
- vec4 shadow_color=vec4(0.0,0.0,0.0,0.0);
-#endif
-
- if (any(lessThan(light_uv_interp.xy,vec2(0.0,0.0))) || any(greaterThanEqual(light_uv_interp.xy,vec2(1.0,1.0)))) {
- color.a*=light_outside_alpha; //invisible
-
- } else {
-
-#if defined(USE_LIGHT_SHADER_CODE)
-//light is written by the light shader
- {
- vec4 light_out=light*color;
-LIGHT_SHADER_CODE
- color=light_out;
- }
-
-#else
-
- vec3 light_normal = normalize(vec3(light_vec,-light_height));
- light*=max(dot(-light_normal,normal),0.0);
-
- color*=light;
-/*
-#ifdef USE_NORMAL
- color.xy=local_rot.xy;//normal.xy;
- color.zw=vec2(0.0,1.0);
-#endif
-*/
-
-//light shader code
-#endif
-
-
-#ifdef USE_SHADOWS
-
- float angle_to_light = -atan(light_vec.x,light_vec.y);
- float PI = 3.14159265358979323846264;
- /*int i = int(mod(floor((angle_to_light+7.0*PI/6.0)/(4.0*PI/6.0))+1.0, 3.0)); // +1 pq os indices estao em ordem 2,0,1 nos arrays
- float ang*/
-
- float su,sz;
-
- float abs_angle = abs(angle_to_light);
- vec2 point;
- float sh;
- if (abs_angle<45.0*PI/180.0) {
- point = light_vec;
- sh=0.0+(1.0/8.0);
- } else if (abs_angle>135.0*PI/180.0) {
- point = -light_vec;
- sh = 0.5+(1.0/8.0);
- } else if (angle_to_light>0.0) {
-
- point = vec2(light_vec.y,-light_vec.x);
- sh = 0.25+(1.0/8.0);
- } else {
-
- point = vec2(-light_vec.y,light_vec.x);
- sh = 0.75+(1.0/8.0);
-
- }
-
-
- highp vec4 s = shadow_matrix * vec4(point,0.0,1.0);
- s.xyz/=s.w;
- su=s.x*0.5+0.5;
- sz=s.z*0.5+0.5;
-
- highp float shadow_attenuation=0.0;
-
-#ifdef USE_DEPTH_SHADOWS
-
-#define SHADOW_DEPTH(m_tex,m_uv) (texture2D((m_tex),(m_uv)).r)
-
-#else
-
-//#define SHADOW_DEPTH(m_tex,m_uv) dot(texture2D((m_tex),(m_uv)),highp vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1) )
-#define SHADOW_DEPTH(m_tex,m_uv) dot(texture2D((m_tex),(m_uv)),vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1) )
-
-#endif
-
-
-
-#ifdef SHADOW_PCF5
-
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size*2.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su-shadowpixel_size,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su-shadowpixel_size*2.0,sh))<sz?0.0:1.0;
- shadow_attenuation/=5.0;
-
-#endif
-
-#ifdef SHADOW_PCF13
-
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size*2.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size*3.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size*4.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size*5.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size*6.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su-shadowpixel_size*2.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su-shadowpixel_size*3.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su-shadowpixel_size*4.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su-shadowpixel_size*5.0,sh))<sz?0.0:1.0;
- shadow_attenuation += SHADOW_DEPTH(shadow_texture,vec2(su-shadowpixel_size*6.0,sh))<sz?0.0:1.0;
- shadow_attenuation/=13.0;
-
-#endif
-
-#ifdef SHADOW_ESM
-
-
- {
- float unnormalized = su/shadowpixel_size;
- float fractional = fract(unnormalized);
- unnormalized = floor(unnormalized);
- float zc = SHADOW_DEPTH(shadow_texture,vec2((unnormalized-0.5)*shadowpixel_size,sh));
- float zn = SHADOW_DEPTH(shadow_texture,vec2((unnormalized+0.5)*shadowpixel_size,sh));
- float z = mix(zc,zn,fractional);
- shadow_attenuation=clamp(exp(shadow_esm_multiplier* ( z - sz )),0.0,1.0);
- }
-
-#endif
-
-#if !defined(SHADOW_PCF5) && !defined(SHADOW_PCF13) && !defined(SHADOW_ESM)
-
- shadow_attenuation = SHADOW_DEPTH(shadow_texture,vec2(su+shadowpixel_size,sh))<sz?0.0:1.0;
-
-#endif
-
-#if defined(USE_OUTPUT_SHADOW_COLOR)
- color=mix(shadow_color,color,shadow_attenuation);
-#else
- //color*=shadow_attenuation;
- color=mix(light_shadow_color,color,shadow_attenuation);
-#endif
-//use shadows
-#endif
- }
-
-//use lighting
-#endif
- //color.rgb*=color.a;
- gl_FragColor = color;
-
-
-}
-
diff --git a/drivers/gles2/shaders/canvas_shadow.glsl b/drivers/gles2/shaders/canvas_shadow.glsl
deleted file mode 100644
index 40cf321dce..0000000000
--- a/drivers/gles2/shaders/canvas_shadow.glsl
+++ /dev/null
@@ -1,62 +0,0 @@
-[vertex]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-uniform highp mat4 projection_matrix;
-uniform highp mat4 light_matrix;
-uniform highp mat4 world_matrix;
-
-attribute highp vec3 vertex; // attrib:0
-
-#ifndef USE_DEPTH_SHADOWS
-
-varying vec4 position_interp;
-
-#endif
-
-
-void main() {
-
- gl_Position = projection_matrix * (light_matrix * (world_matrix * vec4(vertex,1.0)));
-
-#ifndef USE_DEPTH_SHADOWS
- position_interp = gl_Position;
-#endif
-
-}
-
-[fragment]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-#ifndef USE_DEPTH_SHADOWS
-
-varying vec4 position_interp;
-
-#endif
-
-void main() {
-
-#ifdef USE_DEPTH_SHADOWS
-
-#else
- highp float depth = ((position_interp.z / position_interp.w) + 1.0) * 0.5 + 0.0;//bias;
- highp vec4 comp = fract(depth * vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0));
- comp -= comp.xxyz * vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
- gl_FragColor = comp;
-#endif
-
-}
-
diff --git a/drivers/gles2/shaders/copy.glsl b/drivers/gles2/shaders/copy.glsl
deleted file mode 100644
index 23680ffe91..0000000000
--- a/drivers/gles2/shaders/copy.glsl
+++ /dev/null
@@ -1,557 +0,0 @@
-[vertex]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-attribute highp vec4 vertex_attrib; // attrib:0
-#ifdef USE_CUBEMAP
-attribute vec3 cube_in; // attrib:4
-#else
-attribute vec2 uv_in; // attrib:4
-#endif
-attribute vec2 uv2_in; // attrib:5
-
-
-#ifdef USE_CUBEMAP
-varying vec3 cube_interp;
-#else
-varying vec2 uv_interp;
-#endif
-
-varying vec2 uv2_interp;
-
-void main() {
-
-#ifdef USE_CUBEMAP
- cube_interp = cube_in;
-#else
- uv_interp = uv_in;
-#endif
- uv2_interp = uv2_in;
- gl_Position = vertex_attrib;
-}
-
-[fragment]
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-
-
-float sRGB_gamma_correct(float c){
- float a = 0.055;
- if(c < 0.0031308)
- return 12.92*c;
- else
- return (1.0+a)*pow(c, 1.0/2.4) - a;
-}
-
-#define LUM_RANGE 4.0
-
-
-#ifdef USE_ARRAY
-uniform sampler2DArray source;
-#elif defined(USE_CUBEMAP)
-varying vec3 cube_interp;
-uniform samplerCube source_cube;
-#else
-varying vec2 uv_interp;
-#ifdef HIGHP_SOURCE
-uniform highp sampler2D source;
-#else
-uniform sampler2D source;
-#endif
-#endif
-varying vec2 uv2_interp;
-
-
-#ifdef USE_DEPTH
-uniform highp sampler2D source_depth; //texunit:1
-#endif
-
-#ifdef USE_GLOW
-
-uniform sampler2D glow_source;
-
-#endif
-
-
-#if defined(USE_HDR) && defined(USE_GLOW_COPY)
-uniform highp float hdr_glow_threshold;
-uniform highp float hdr_glow_scale;
-#endif
-
-#ifdef USE_HDR
-
-uniform sampler2D hdr_source;
-uniform highp float tonemap_exposure;
-uniform highp float tonemap_white;
-#endif
-
-#ifdef USE_BCS
-
-uniform vec3 bcs;
-
-#endif
-
-#ifdef USE_GLOW_COPY
-
-uniform float bloom;
-uniform float bloom_threshold;
-
-#endif
-
-#if defined(SHADOW_BLUR_V_PASS) || defined(SHADOW_BLUR_H_PASS) || defined(BLUR_V_PASS) || defined(BLUR_H_PASS) || defined(USE_HDR_REDUCE)
-
-uniform vec2 pixel_size;
-uniform float pixel_scale;
-uniform float blur_magnitude;
-
-#ifdef USE_HDR_STORE
-
-uniform highp float hdr_time_delta;
-uniform highp float hdr_exp_adj_speed;
-uniform highp float min_luminance;
-uniform highp float max_luminance;
-uniform sampler2D source_vd_lum;
-
-#endif
-
-//endif
-#elif defined(USE_FXAA)
-
-uniform vec2 pixel_size;
-
-#endif
-
-#ifdef USE_ENERGY
-
-uniform highp float energy;
-
-#endif
-
-#ifdef USE_CUSTOM_ALPHA
-uniform float custom_alpha;
-#endif
-
-
-void main() {
-
- //vec4 color = color_interp;
-
-
-#ifdef USE_ARRAY
- highp vec4 color = textureLod( source, vec3(uv_interp,0.0),0.0 );
-#elif defined(USE_CUBEMAP)
- highp vec4 color = textureCube( source_cube, normalize(cube_interp) );
-
-#else
- highp vec4 color = texture2D( source, uv_interp );
-#endif
-
-
-
-#endif
-
-#ifdef USE_FXAA
-
-#define FXAA_REDUCE_MIN (1.0/ 128.0)
-#define FXAA_REDUCE_MUL (1.0 / 8.0)
-#define FXAA_SPAN_MAX 8.0
-
- {
- vec3 rgbNW = texture2D(source, uv_interp + vec2(-1.0, -1.0) * pixel_size).xyz;
- vec3 rgbNE = texture2D(source, uv_interp + vec2(1.0, -1.0) * pixel_size).xyz;
- vec3 rgbSW = texture2D(source, uv_interp + vec2(-1.0, 1.0) * pixel_size).xyz;
- vec3 rgbSE = texture2D(source, uv_interp + vec2(1.0, 1.0) * pixel_size).xyz;
- vec3 rgbM = color.rgb;
- vec3 luma = vec3(0.299, 0.587, 0.114);
- float lumaNW = dot(rgbNW, luma);
- float lumaNE = dot(rgbNE, luma);
- float lumaSW = dot(rgbSW, luma);
- float lumaSE = dot(rgbSE, luma);
- float lumaM = dot(rgbM, luma);
- float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
- float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
-
- vec2 dir;
- dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
- dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
-
- float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *
- (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);
-
- float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);
- dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),
- max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),
- dir * rcpDirMin)) * pixel_size;
-
- vec3 rgbA = 0.5 * (
- texture2D(source, uv_interp + dir * (1.0 / 3.0 - 0.5)).xyz +
- texture2D(source, uv_interp + dir * (2.0 / 3.0 - 0.5)).xyz);
- vec3 rgbB = rgbA * 0.5 + 0.25 * (
- texture2D(source, uv_interp + dir * -0.5).xyz +
- texture2D(source, uv_interp + dir * 0.5).xyz);
-
- float lumaB = dot(rgbB, luma);
- if ((lumaB < lumaMin) || (lumaB > lumaMax))
- color.rgb = rgbA;
- else
- color.rgb = rgbB;
- }
-
-#endif
- //color.rg=uv_interp;
-
-#ifdef USE_BCS
-
- color.rgb = mix(vec3(0.0),color.rgb,bcs.x);
- color.rgb = mix(vec3(0.5),color.rgb,bcs.y);
- color.rgb = mix(vec3(dot(vec3(1.0),color.rgb)*0.33333),color.rgb,bcs.z);
-
-#endif
-
-#ifdef BLUR_V_PASS
-
- color+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-3.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-2.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-1.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*1.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*2.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*3.0)*pixel_scale);
-
- color*=(1.0/7.0)*blur_magnitude;
-
-#endif
-
-#ifdef BLUR_H_PASS
-
-
- color+=texture2D(source,uv_interp+vec2(pixel_size.x*-3.0,0.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(pixel_size.x*-2.0,0.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(pixel_size.x*-1.0,0.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(pixel_size.x*1.0,0.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(pixel_size.x*2.0,0.0)*pixel_scale);
- color+=texture2D(source,uv_interp+vec2(pixel_size.x*3.0,0.0)*pixel_scale);
-
- color*=(1.0/7.0)*blur_magnitude;
-
-#endif
-
-#ifdef SHADOW_BLUR_V_PASS
-
-#ifdef USE_RGBA_DEPTH
-
-#define VEC42DEPTH(m_vec4) dot(m_vec4,vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1))
-
- highp float depth = VEC42DEPTH(color)*0.383;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-3.0)*pixel_scale))*0.006;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-2.0)*pixel_scale))*0.061;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-1.0)*pixel_scale))*0.242;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(0.0,pixel_size.y*1.0)*pixel_scale))*0.242;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(0.0,pixel_size.y*2.0)*pixel_scale))*0.061;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(0.0,pixel_size.y*3.0)*pixel_scale))*0.006;
- highp vec4 comp = fract(depth * vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0));
- comp -= comp.xxyz * vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
- color=comp;
-
-#else
-
- highp float depth = color.r*0.383;
- depth+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-3.0)*pixel_scale).r*0.006;
- depth+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-2.0)*pixel_scale).r*0.061;
- depth+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*-1.0)*pixel_scale).r*0.242;
- depth+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*1.0)*pixel_scale).r*0.242;
- depth+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*2.0)*pixel_scale).r*0.061;
- depth+=texture2D(source,uv_interp+vec2(0.0,pixel_size.y*3.0)*pixel_scale).r*0.006;
-
-#ifdef USE_GLES_OVER_GL
- gl_FragDepth = depth;
-
-#else
- gl_FragDepthEXT = depth;
-#endif
-
- return;
-#endif
-
-#endif
-
-#ifdef SHADOW_BLUR_H_PASS
-
-
-#ifdef USE_RGBA_DEPTH
-
-#define VEC42DEPTH(m_vec4) dot(m_vec4,vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1))
-
- highp float depth = VEC42DEPTH(color)*0.383;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(pixel_size.x*-3.0,0.0)*pixel_scale))*0.006;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(pixel_size.x*-2.0,0.0)*pixel_scale))*0.061;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(pixel_size.x*-1.0,0.0)*pixel_scale))*0.242;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(pixel_size.x*1.0,0.0)*pixel_scale))*0.242;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(pixel_size.x*2.0,0.0)*pixel_scale))*0.061;
- depth+=VEC42DEPTH(texture2D(source,uv_interp+vec2(pixel_size.x*3.0,0.0)*pixel_scale))*0.006;
- highp vec4 comp = fract(depth * vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0));
- comp -= comp.xxyz * vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
- color=comp;
-#else
-
-
- highp float depth = color.r*0.383;
- depth+=texture2D(source,uv_interp+vec2(pixel_size.x*-3.0,0.0)*pixel_scale).r*0.006;
- depth+=texture2D(source,uv_interp+vec2(pixel_size.x*-2.0,0.0)*pixel_scale).r*0.061;
- depth+=texture2D(source,uv_interp+vec2(pixel_size.x*-1.0,0.0)*pixel_scale).r*0.242;
- depth+=texture2D(source,uv_interp+vec2(pixel_size.x*1.0,0.0)*pixel_scale).r*0.242;
- depth+=texture2D(source,uv_interp+vec2(pixel_size.x*2.0,0.0)*pixel_scale).r*0.061;
- depth+=texture2D(source,uv_interp+vec2(pixel_size.x*3.0,0.0)*pixel_scale).r*0.006;
-
-#ifdef USE_GLES_OVER_GL
- gl_FragDepth = depth;
-#else
- gl_FragDepthEXT = depth;
-#endif
-
- return;
-
-#endif
-
-#endif
-
-#ifdef USE_HDR
-
- highp float white_mult = 1.0;
-
-#ifdef USE_8BIT_HDR
- highp vec4 _mult = vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1);
- highp float hdr_lum = dot(texture2D( hdr_source, vec2(0.0) ), _mult );
- color.rgb*=LUM_RANGE;
- hdr_lum*=LUM_RANGE; //restore to full range
-#else
-
- highp vec2 lv = texture2D( hdr_source, vec2(0.0) ).rg;
- highp float hdr_lum = lv.r;
-#ifdef USE_AUTOWHITE
- white_mult=lv.g;
-#endif
-
-#endif
-
-#ifdef USE_REINHARDT_TONEMAPPER
- float src_lum = dot(color.rgb,vec3(0.3, 0.58, 0.12));
- float lp = tonemap_exposure/hdr_lum*src_lum;
- float white = tonemap_white;
-#ifdef USE_AUTOWHITE
- white_mult = (white_mult + 1.0 * white_mult);
- white_mult*=white_mult;
- white*=white_mult;
-#endif
- lp = ( lp * ( 1.0 + ( lp / ( white) ) ) ) / ( 1.0 + lp );
- color.rgb*=lp;
-
-#else
-
-#ifdef USE_LOG_TONEMAPPER
- color.rgb = tonemap_exposure * log(color.rgb+1.0)/log(hdr_lum+1.0);
-#else
- highp float tone_scale = tonemap_exposure / hdr_lum; //only linear supported
- color.rgb*=tone_scale;
-#endif
-
-#endif
-
-#endif
-
-
-#ifdef USE_GLOW_COPY
-
- highp vec3 glowcol = color.rgb*color.a+step(bloom_threshold,dot(vec3(0.3333,0.3333,0.3333),color.rgb))*bloom*color.rgb;
-
-#ifdef USE_HDR
- highp float collum = max(color.r,max(color.g,color.b));
- glowcol+=color.rgb*max(collum-hdr_glow_threshold,0.0)*hdr_glow_scale;
-#endif
- color.rgb=glowcol;
- color.a=0.0;
-
-#endif
-
-
-#ifdef USE_GLOW
-
- vec4 glow = texture2D( glow_source, uv2_interp );
-
-#ifdef USE_GLOW_SCREEN
-
- color.rgb = clamp((color.rgb + glow.rgb) - (color.rgb * glow.rgb), 0.0, 1.0);
-
-#endif
-
-#ifdef USE_GLOW_SOFTLIGHT
-
- {
-
- glow.rgb = (glow.rgb * 0.5) + 0.5;
- color.r = (glow.r <= 0.5) ? (color.r - (1.0 - 2.0 * glow.r) * color.r * (1.0 - color.r)) : (((glow.r > 0.5) && (color.r <= 0.25)) ? (color.r + (2.0 * glow.r - 1.0) * (4.0 * color.r * (4.0 * color.r + 1.0) * (color.r - 1.0) + 7.0 * color.r)) : (color.r + (2.0 * glow.r - 1.0) * (sqrt(color.r) - color.r)));
- color.g = (glow.g <= 0.5) ? (color.g - (1.0 - 2.0 * glow.g) * color.g * (1.0 - color.g)) : (((glow.g > 0.5) && (color.g <= 0.25)) ? (color.g + (2.0 * glow.g - 1.0) * (4.0 * color.g * (4.0 * color.g + 1.0) * (color.g - 1.0) + 7.0 * color.g)) : (color.g + (2.0 * glow.g - 1.0) * (sqrt(color.g) - color.g)));
- color.b = (glow.b <= 0.5) ? (color.b - (1.0 - 2.0 * glow.b) * color.b * (1.0 - color.b)) : (((glow.b > 0.5) && (color.b <= 0.25)) ? (color.b + (2.0 * glow.b - 1.0) * (4.0 * color.b * (4.0 * color.b + 1.0) * (color.b - 1.0) + 7.0 * color.b)) : (color.b + (2.0 * glow.b - 1.0) * (sqrt(color.b) - color.b)));
- }
-
-#endif
-
-#if !defined(USE_GLOW_SCREEN) && !defined(USE_GLOW_SOFTLIGHT)
- color.rgb+=glow.rgb;
-#endif
-
-
-
-#endif
-
-#ifdef USE_SRGB
-
-#if 0
- //this was fast, but was commented out because it looked kind of shitty, might it be fixable?
-
- { //i have my doubts about how fast this is
-
- color.rgb = min(color.rgb,vec3(1.0)); //clamp just in case
- vec3 S1 = sqrt(color.rgb);
- vec3 S2 = sqrt(S1);
- vec3 S3 = sqrt(S2);
- color.rgb = 0.662002687 * S1 + 0.684122060 * S2 - 0.323583601 * S3 - 0.225411470 * color.rgb;
- }
-#else
-
- color.r=sRGB_gamma_correct(color.r);
- color.g=sRGB_gamma_correct(color.g);
- color.b=sRGB_gamma_correct(color.b);
-
-#endif
-
-#endif
-
-#ifdef USE_HDR_COPY
-
- //highp float lum = dot(color.rgb,highp vec3(1.0/3.0,1.0/3.0,1.0/3.0));
- //highp float lum = max(color.r,max(color.g,color.b));
- highp float lum = dot(color.rgb,vec3(0.3, 0.58, 0.12));
-
- //lum=log(lum+0.0001); //everyone does it
-
-#ifdef USE_8BIT_HDR
- highp vec4 comp = fract(lum * vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0));
- comp -= comp.xxyz * vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
- color=comp;
-#else
- color.rgb=vec3(lum);
-#endif
-
-
-#endif
-
-#ifdef USE_HDR_REDUCE
-
-#ifdef USE_8BIT_HDR
- highp vec4 _multcv = vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0, 1.0);
- highp float lum_accum = dot(color,_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(-pixel_size.x,-pixel_size.y) ),_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(0.0,-pixel_size.y) ),_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(pixel_size.x,-pixel_size.y) ),_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(-pixel_size.x,0.0) ),_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(pixel_size.x,0.0) ),_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(-pixel_size.x,pixel_size.y) ),_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(0.0,pixel_size.y) ),_multcv );
- lum_accum += dot(texture2D( source, uv_interp+vec2(pixel_size.x,pixel_size.y) ),_multcv );
- lum_accum/=9.0;
-#else
-
- highp float lum_accum = color.r;
- highp float lum_max = color.g;
-
-#define LUM_REDUCE(m_uv) \
- {\
- vec2 val = texture2D( source, uv_interp+m_uv ).rg;\
- lum_accum+=val.x;\
- lum_max=max(val.y,lum_max);\
- }
-
- LUM_REDUCE( vec2(-pixel_size.x,-pixel_size.y) );
- LUM_REDUCE( vec2(0.0,-pixel_size.y) );
- LUM_REDUCE( vec2(pixel_size.x,-pixel_size.y) );
- LUM_REDUCE( vec2(-pixel_size.x,0.0) );
- LUM_REDUCE( vec2(pixel_size.x,0.0) );
- LUM_REDUCE( vec2(-pixel_size.x,pixel_size.y) );
- LUM_REDUCE( vec2(0.0,pixel_size.y) );
- LUM_REDUCE( vec2(pixel_size.x,pixel_size.y) );
- lum_accum/=9.0;
-
-#endif
-
-#ifdef USE_HDR_STORE
-
- //lum_accum=exp(lum_accum);
-
-#ifdef USE_8BIT_HDR
-
- highp float vd_lum = dot(texture2D( source_vd_lum, vec2(0.0) ), _multcv );
- lum_accum = clamp( vd_lum + (lum_accum-vd_lum)*hdr_time_delta*hdr_exp_adj_speed,min_luminance*(1.0/LUM_RANGE),max_luminance*(1.0/LUM_RANGE));
-#else
- highp float vd_lum=texture2D( source_vd_lum, vec2(0.0) ).r;
- lum_accum = clamp( vd_lum + (lum_accum-vd_lum)*hdr_time_delta*hdr_exp_adj_speed,min_luminance,max_luminance);
-#endif
-
-#endif
-
-#ifdef USE_8BIT_HDR
- highp vec4 comp = fract(lum_accum * vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0));
- comp -= comp.xxyz * vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
- color=comp;
-#else
-#ifdef USE_AUTOWHITE
- color.r=lum_accum;
- color.g=lum_max;
-#else
- color.rgb=vec3(lum_accum);
-#endif
-
-
-#endif
-
-#endif
-
-
-
-#ifdef USE_RGBE
-
- color.rgb = pow(color.rgb,color.a*255.0-(8.0+128.0));
-#endif
-
-#ifdef USE_ENERGY
- color.rgb*=energy;
-#endif
-
-#ifdef USE_NO_ALPHA
- color.a=1.0;
-#endif
-
-#ifdef USE_CUSTOM_ALPHA
- color.a=custom_alpha;
-#endif
-
-
- gl_FragColor = color;
-
-#ifdef USE_DEPTH
- gl_FragDepth = texture(source_depth,uv_interp).r;
-#endif
-
-}
diff --git a/drivers/gles2/shaders/material.glsl b/drivers/gles2/shaders/material.glsl
deleted file mode 100644
index 704a22c5d1..0000000000
--- a/drivers/gles2/shaders/material.glsl
+++ /dev/null
@@ -1,1326 +0,0 @@
-[vertex]
-
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#define roundfix( m_val ) floor( (m_val) + 0.5 )
-#else
-precision mediump float;
-precision mediump int;
-#endif
-
-
-
-/*
-from VisualServer:
-
-ARRAY_VERTEX=0,
-ARRAY_NORMAL=1,
-ARRAY_TANGENT=2,
-ARRAY_COLOR=3,
-ARRAY_TEX_UV=4,
-ARRAY_TEX_UV2=5,
-ARRAY_BONES=6,
-ARRAY_WEIGHTS=7,
-ARRAY_INDEX=8,
-*/
-
-//hack to use uv if no uv present so it works with lightmap
-#ifdef ENABLE_AMBIENT_LIGHTMAP
-
-#ifdef USE_LIGHTMAP_ON_UV2
-
-#ifndef ENABLE_UV2_INTERP
-#define ENABLE_UV2_INTERP
-#endif
-
-#else
-
-#ifndef ENABLE_UV_INTERP
-#define ENABLE_UV_INTERP
-#endif
-
-#endif
-
-#endif
-
-
-/* INPUT ATTRIBS */
-
-attribute highp vec4 vertex_attrib; // attrib:0
-attribute vec3 normal_attrib; // attrib:1
-attribute vec4 tangent_attrib; // attrib:2
-attribute vec4 color_attrib; // attrib:3
-attribute vec2 uv_attrib; // attrib:4
-attribute vec2 uv2_attrib; // attrib:5
-
-uniform float normal_mult;
-
-#ifdef USE_SKELETON
-attribute vec4 bone_indices; // attrib:6
-attribute vec4 bone_weights; // attrib:7
-uniform highp sampler2D skeleton_matrices;
-uniform highp float skeltex_pixel_size;
-#endif
-
-#ifdef USE_ATTRIBUTE_INSTANCING
-
-attribute highp vec4 instance_row0; // attrib:8
-attribute highp vec4 instance_row1; // attrib:9
-attribute highp vec4 instance_row2; // attrib:10
-attribute highp vec4 instance_row3; // attrib:11
-
-#endif
-
-#ifdef USE_TEXTURE_INSTANCING
-
-attribute highp vec3 instance_uv; // attrib:6
-uniform highp sampler2D instance_matrices;
-
-#endif
-
-uniform highp mat4 world_transform;
-uniform highp mat4 camera_inverse_transform;
-uniform highp mat4 projection_transform;
-
-#ifdef USE_UNIFORM_INSTANCING
-//shittiest form of instancing (but most compatible)
-uniform highp mat4 instance_transform;
-#endif
-
-/* Varyings */
-
-varying vec3 vertex_interp;
-varying vec3 normal_interp;
-
-#if defined(ENABLE_COLOR_INTERP)
-varying vec4 color_interp;
-#endif
-
-#if defined(ENABLE_UV_INTERP)
-varying vec2 uv_interp;
-#endif
-
-#if defined(ENABLE_UV2_INTERP)
-varying vec2 uv2_interp;
-#endif
-
-#if defined(ENABLE_VAR1_INTERP)
-varying vec4 var1_interp;
-#endif
-
-#if defined(ENABLE_VAR2_INTERP)
-varying vec4 var2_interp;
-#endif
-
-#if defined(ENABLE_TANGENT_INTERP)
-varying vec3 tangent_interp;
-varying vec3 binormal_interp;
-#endif
-
-#ifdef ENABLE_AMBIENT_OCTREE
-
-uniform highp mat4 ambient_octree_inverse_transform;
-varying highp vec3 ambient_octree_coords;
-
-#endif
-
-#ifdef USE_FOG
-
-varying vec4 fog_interp;
-uniform highp vec3 fog_params;
-uniform vec3 fog_color_begin;
-uniform vec3 fog_color_end;
-
-#endif
-
-#ifdef USE_VERTEX_LIGHTING
-
-uniform vec3 light_pos;
-uniform vec3 light_direction;
-uniform vec3 light_attenuation;
-uniform vec3 light_spot_attenuation;
-uniform vec3 light_diffuse;
-uniform vec3 light_specular;
-
-
-
-#endif
-
-varying vec4 diffuse_interp;
-varying vec3 specular_interp;
-//intended for static branching
-//pretty much all meaningful platforms support
-//static branching
-
-uniform float time;
-uniform float instance_id;
-
-uniform vec3 ambient_light;
-
-#if !defined(USE_DEPTH_SHADOWS) && defined(USE_SHADOW_PASS)
-
-varying vec4 position_interp;
-
-#endif
-
-#ifdef LIGHT_USE_SHADOW
-
-uniform highp mat4 shadow_matrix;
-varying highp vec4 shadow_coord;
-#ifdef LIGHT_USE_PSSM
-uniform highp mat4 shadow_matrix2;
-varying highp vec4 shadow_coord2;
-#endif
-#ifdef LIGHT_USE_PSSM4
-uniform highp mat4 shadow_matrix3;
-varying highp vec4 shadow_coord3;
-uniform highp mat4 shadow_matrix4;
-varying highp vec4 shadow_coord4;
-#endif
-
-
-#endif
-
-#ifdef USE_SHADOW_PASS
-
-uniform highp float shadow_z_offset;
-uniform highp float shadow_z_slope_scale;
-
-#endif
-
-#ifdef USE_DUAL_PARABOLOID
-uniform highp vec2 dual_paraboloid;
-varying float dp_clip;
-#endif
-
-
-
-VERTEX_SHADER_GLOBALS
-
-
-
-
-void main() {
-#ifdef USE_UNIFORM_INSTANCING
-
- highp mat4 modelview = (camera_inverse_transform * (world_transform * instance_transform));
-#ifdef ENABLE_AMBIENT_OCTREE
- highp mat4 ambient_octree_transform = (ambient_octree_inverse_transform * (world_transform * instance_transform));
-#endif
-
-#else
-
-#ifdef USE_ATTRIBUTE_INSTANCING
-
- highp mat4 minst=mat4(instance_row0,instance_row1,instance_row2,instance_row3);
- highp mat4 modelview = (camera_inverse_transform * (world_transform * minst));
-#ifdef ENABLE_AMBIENT_OCTREE
- highp mat4 ambient_octree_transform = (ambient_octree_inverse_transform * (world_transform * minst));
-#endif
-
-#else
-
-#ifdef USE_TEXTURE_INSTANCING
-
- highp vec2 ins_ofs=vec2(instance_uv.z,0.0);
-
- highp mat4 minst=mat4(
- texture2D(instance_matrices,instance_uv.xy),
- texture2D(instance_matrices,instance_uv.xy+ins_ofs),
- texture2D(instance_matrices,instance_uv.xy+ins_ofs*2.0),
- texture2D(instance_matrices,instance_uv.xy+ins_ofs*3.0)
- );
-
- /*highp mat4 minst=mat4(
- vec4(1.0,0.0,0.0,0.0),
- vec4(0.0,1.0,0.0,0.0),
- vec4(0.0,0.0,1.0,0.0),
- vec4(0.0,0.0,0.0,1.0)
- );*/
-
- highp mat4 modelview = (camera_inverse_transform * (world_transform * minst));
-#ifdef ENABLE_AMBIENT_OCTREE
- highp mat4 ambient_octree_transform = (ambient_octree_inverse_transform * (world_transform * minst));
-#endif
-
-#else
- highp mat4 modelview = (camera_inverse_transform * world_transform);
-#ifdef ENABLE_AMBIENT_OCTREE
- highp mat4 ambient_octree_transform = (ambient_octree_inverse_transform * world_transform);
-#endif
-
-#endif
-
-#endif
-
-#endif
- highp vec4 vertex_in = vertex_attrib; // vec4(vertex_attrib.xyz * data_attrib.x,1.0);
- vec3 normal_in = normal_attrib;
- normal_in*=normal_mult;
-#if defined(ENABLE_TANGENT_INTERP)
- vec3 tangent_in = tangent_attrib.xyz;
- tangent_in*=normal_mult;
- float binormalf = tangent_attrib.a;
-#endif
-
-#ifdef USE_SKELETON
-
- {
- //skeleton transform
- highp mat4 m=mat4(texture2D(skeleton_matrices,vec2((bone_indices.x*3.0+0.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.x*3.0+1.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.x*3.0+2.0)*skeltex_pixel_size,0.0)),vec4(0.0,0.0,0.0,1.0))*bone_weights.x;
- m+=mat4(texture2D(skeleton_matrices,vec2((bone_indices.y*3.0+0.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.y*3.0+1.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.y*3.0+2.0)*skeltex_pixel_size,0.0)),vec4(0.0,0.0,0.0,1.0))*bone_weights.y;
- m+=mat4(texture2D(skeleton_matrices,vec2((bone_indices.z*3.0+0.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.z*3.0+1.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.z*3.0+2.0)*skeltex_pixel_size,0.0)),vec4(0.0,0.0,0.0,1.0))*bone_weights.z;
- m+=mat4(texture2D(skeleton_matrices,vec2((bone_indices.w*3.0+0.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.w*3.0+1.0)*skeltex_pixel_size,0.0)),texture2D(skeleton_matrices,vec2((bone_indices.w*3.0+2.0)*skeltex_pixel_size,0.0)),vec4(0.0,0.0,0.0,1.0))*bone_weights.w;
-
- vertex_in = vertex_in * m;
- normal_in = (vec4(normal_in,0.0) * m).xyz;
-#if defined(ENABLE_TANGENT_INTERP)
- tangent_in = (vec4(tangent_in,0.0) * m).xyz;
-#endif
- }
-
-#endif
-
-#ifdef ENABLE_AMBIENT_OCTREE
-
- ambient_octree_coords = (ambient_octree_transform * vertex_in).xyz;
-#endif
-
- vertex_interp = (modelview * vertex_in).xyz;
- normal_interp = normalize((modelview * vec4(normal_in,0.0)).xyz);
-
-#if defined(ENABLE_COLOR_INTERP)
-#ifdef USE_COLOR_ATTRIB_SRGB_TO_LINEAR
-
- color_interp = vec4(
- color_attrib.r<0.04045 ? color_attrib.r * (1.0 / 12.92) : pow((color_attrib.r + 0.055) * (1.0 / (1 + 0.055)), 2.4),
- color_attrib.g<0.04045 ? color_attrib.g * (1.0 / 12.92) : pow((color_attrib.g + 0.055) * (1.0 / (1 + 0.055)), 2.4),
- color_attrib.b<0.04045 ? color_attrib.b * (1.0 / 12.92) : pow((color_attrib.b + 0.055) * (1.0 / (1 + 0.055)), 2.4),
- color_attrib.a
- );
-#else
- color_interp = color_attrib;
-#endif
-#endif
-
-#if defined(ENABLE_TANGENT_INTERP)
- tangent_interp=normalize((modelview * vec4(tangent_in,0.0)).xyz);
- binormal_interp = normalize( cross(normal_interp,tangent_interp) * binormalf );
-#endif
-
-#if defined(ENABLE_UV_INTERP)
- uv_interp = uv_attrib;
-#endif
-#if defined(ENABLE_UV2_INTERP)
- uv2_interp = uv2_attrib;
-#endif
-
- float vertex_specular_exp = 40.0; //material_specular.a;
-
-
-
-VERTEX_SHADER_CODE
-
-
-#ifdef USE_DUAL_PARABOLOID
-//for dual paraboloid shadow mapping
- highp vec3 vtx = vertex_interp;
- vtx.z*=dual_paraboloid.y; //side to affect
- vtx.z+=0.01;
- dp_clip=vtx.z;
- highp float len=length( vtx );
- vtx=normalize(vtx);
- vtx.xy/=1.0+vtx.z;
- vtx.z = len*dual_paraboloid.x; // it's a reciprocal(len - z_near) / (z_far - z_near);
- vtx+=normalize(vtx)*0.025;
- vtx.z = vtx.z * 2.0 - 1.0; // fit to clipspace
- vertex_interp=vtx;
-
- //vertex_interp.w = z_clip;
-
-#endif
-
-#ifdef USE_SHADOW_PASS
-
- float z_ofs = shadow_z_offset;
- z_ofs += (1.0-abs(normal_interp.z))*shadow_z_slope_scale;
- vertex_interp.z-=z_ofs;
-#endif
-
-#ifdef LIGHT_USE_SHADOW
-
- shadow_coord = shadow_matrix * vec4(vertex_interp,1.0);
- shadow_coord.xyz/=shadow_coord.w;
-
-#ifdef LIGHT_USE_PSSM
- shadow_coord.y*=0.5;
- shadow_coord.y+=0.5;
- shadow_coord2 = shadow_matrix2 * vec4(vertex_interp,1.0);
- shadow_coord2.xyz/=shadow_coord2.w;
- shadow_coord2.y*=0.5;
-#endif
-#ifdef LIGHT_USE_PSSM4
- shadow_coord.x*=0.5;
- shadow_coord2.x*=0.5;
-
- shadow_coord3 = shadow_matrix3 * vec4(vertex_interp,1.0);
- shadow_coord3.xyz/=shadow_coord3.w;
- shadow_coord3.xy*=vec2(0.5);
- shadow_coord3.xy+=vec2(0.5);
-
- shadow_coord4 = shadow_matrix4 * vec4(vertex_interp,1.0);
- shadow_coord4.xyz/=shadow_coord4.w;
- shadow_coord4.xy*=vec2(0.5);
- shadow_coord4.x+=0.5;
-
-#endif
-
-#endif
-
-#ifdef USE_FOG
-
- fog_interp.a = pow( clamp( (length(vertex_interp)-fog_params.x)/(fog_params.y-fog_params.x), 0.0, 1.0 ), fog_params.z );
- fog_interp.rgb = mix( fog_color_begin, fog_color_end, fog_interp.a );
-#endif
-
-#ifndef VERTEX_SHADER_WRITE_POSITION
-//vertex shader might write a position
- gl_Position = projection_transform * vec4(vertex_interp,1.0);
-#endif
-
-
-
-#if !defined(USE_DEPTH_SHADOWS) && defined(USE_SHADOW_PASS)
-
- position_interp=gl_Position;
-
-#endif
-
-
-#ifdef USE_VERTEX_LIGHTING
-
- vec3 eye_vec = -normalize(vertex_interp);
-
-#ifdef LIGHT_TYPE_DIRECTIONAL
-
- vec3 light_dir = -light_direction;
- float attenuation = light_attenuation.r;
-
-
-#endif
-
-#ifdef LIGHT_TYPE_OMNI
- vec3 light_dir = light_pos-vertex_interp;
- float radius = light_attenuation.g;
- float dist = min(length(light_dir),radius);
- light_dir=normalize(light_dir);
- float attenuation = pow( max(1.0 - dist/radius, 0.0), light_attenuation.b ) * light_attenuation.r;
-
-#endif
-
-#ifdef LIGHT_TYPE_SPOT
-
- vec3 light_dir = light_pos-vertex_interp;
- float radius = light_attenuation.g;
- float dist = min(length(light_dir),radius);
- light_dir=normalize(light_dir);
- float attenuation = pow( max(1.0 - dist/radius, 0.0), light_attenuation.b ) * light_attenuation.r;
- vec3 spot_dir = light_direction;
- float spot_cutoff=light_spot_attenuation.r;
- float scos = max(dot(-light_dir, spot_dir),spot_cutoff);
- float rim = (1.0 - scos) / (1.0 - spot_cutoff);
- attenuation *= 1.0 - pow( rim, light_spot_attenuation.g);
-
-
-#endif
-
-#if defined(LIGHT_TYPE_DIRECTIONAL) || defined(LIGHT_TYPE_OMNI) || defined(LIGHT_TYPE_SPOT)
-
- //process_shade(normal_interp,light_dir,eye_vec,vertex_specular_exp,attenuation,diffuse_interp,specular_interp);
- {
- float NdotL = max(0.0,dot( normal_interp, light_dir ));
- vec3 half_vec = normalize(light_dir + eye_vec);
- float eye_light = max(dot(normal_interp, half_vec),0.0);
- diffuse_interp.rgb=light_diffuse * NdotL * attenuation;
- diffuse_interp.a=attenuation;
- if (NdotL > 0.0) {
- specular_interp=light_specular * pow( eye_light, vertex_specular_exp ) * attenuation;
- } else {
- specular_interp=vec3(0.0);
- }
- }
-
-#else
-
-#ifdef SHADELESS
-
- diffuse_interp=vec4(vec3(1.0),0.0);
- specular_interp=vec3(0.0);
-# else
-
- diffuse_interp=vec4(0.0);
- specular_interp=vec3(0.0);
-# endif
-
-#endif
-
-
-
-
-#endif
-
-
-}
-
-
-[fragment]
-
-
-#ifdef USE_GLES_OVER_GL
-#define mediump
-#define highp
-#define roundfix( m_val ) floor( (m_val) + 0.5 )
-#else
-
-precision mediump float;
-precision mediump int;
-
-#endif
-
-
-//hack to use uv if no uv present so it works with lightmap
-#ifdef ENABLE_AMBIENT_LIGHTMAP
-
-#ifdef USE_LIGHTMAP_ON_UV2
-
-#ifndef ENABLE_UV2_INTERP
-#define ENABLE_UV2_INTERP
-#endif
-
-#else
-
-#ifndef ENABLE_UV_INTERP
-#define ENABLE_UV_INTERP
-#endif
-
-#endif
-
-#endif
-
-
-/* Varyings */
-
-#if defined(ENABLE_COLOR_INTERP)
-varying vec4 color_interp;
-#endif
-
-#if defined(ENABLE_UV_INTERP)
-varying vec2 uv_interp;
-#endif
-
-#if defined(ENABLE_UV2_INTERP)
-varying vec2 uv2_interp;
-#endif
-
-#if defined(ENABLE_TANGENT_INTERP)
-varying vec3 tangent_interp;
-varying vec3 binormal_interp;
-#endif
-
-#if defined(ENABLE_VAR1_INTERP)
-varying vec4 var1_interp;
-#endif
-
-#if defined(ENABLE_VAR2_INTERP)
-varying vec4 var2_interp;
-#endif
-
-#ifdef LIGHT_USE_PSSM
-uniform vec3 light_pssm_split;
-#endif
-
-varying vec3 vertex_interp;
-varying vec3 normal_interp;
-
-#ifdef USE_FOG
-
-varying vec4 fog_interp;
-
-#endif
-
-/* Material Uniforms */
-
-#ifdef USE_VERTEX_LIGHTING
-
-varying vec4 diffuse_interp;
-varying vec3 specular_interp;
-
-#endif
-
-#if !defined(USE_DEPTH_SHADOWS) && defined(USE_SHADOW_PASS)
-
-varying vec4 position_interp;
-
-#endif
-
-
-
-uniform vec3 light_pos;
-uniform vec3 light_direction;
-uniform vec3 light_attenuation;
-uniform vec3 light_spot_attenuation;
-uniform vec3 light_diffuse;
-uniform vec3 light_specular;
-
-uniform vec3 ambient_light;
-
-
-#ifdef USE_FRAGMENT_LIGHTING
-
-
-
-# ifdef USE_DEPTH_SHADOWS
-# else
-# endif
-
-#endif
-
-uniform float const_light_mult;
-uniform float time;
-
-#ifdef ENABLE_AMBIENT_OCTREE
-
-varying highp vec3 ambient_octree_coords;
-uniform highp float ambient_octree_lattice_size;
-uniform highp vec2 ambient_octree_pix_size;
-uniform highp vec2 ambient_octree_light_pix_size;
-uniform highp float ambient_octree_lattice_divide;
-uniform highp sampler2D ambient_octree_tex;
-uniform highp sampler2D ambient_octree_light_tex;
-uniform float ambient_octree_multiplier;
-uniform int ambient_octree_steps;
-
-#endif
-
-#ifdef ENABLE_AMBIENT_LIGHTMAP
-
-uniform highp sampler2D ambient_lightmap;
-uniform float ambient_lightmap_multiplier;
-
-#endif
-
-#ifdef ENABLE_AMBIENT_DP_SAMPLER
-
-uniform highp sampler2D ambient_dp_sampler;
-uniform float ambient_dp_sampler_multiplier;
-
-#endif
-
-#ifdef ENABLE_AMBIENT_COLOR
-
-uniform vec3 ambient_color;
-
-#endif
-
-FRAGMENT_SHADER_GLOBALS
-
-
-
-#ifdef LIGHT_USE_SHADOW
-
-varying highp vec4 shadow_coord;
-#ifdef LIGHT_USE_PSSM
-varying highp vec4 shadow_coord2;
-#endif
-#ifdef LIGHT_USE_PSSM4
-varying highp vec4 shadow_coord3;
-varying highp vec4 shadow_coord4;
-#endif
-
-uniform highp sampler2D shadow_texture;
-uniform highp vec2 shadow_texel_size;
-
-uniform float shadow_darkening;
-
-#ifdef USE_DEPTH_SHADOWS
-
-#define SHADOW_DEPTH(m_tex,m_uv) (texture2D((m_tex),(m_uv)).z)
-
-#else
-
-//#define SHADOW_DEPTH(m_tex,m_uv) dot(texture2D((m_tex),(m_uv)),highp vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1) )
-#define SHADOW_DEPTH(m_tex,m_uv) dot(texture2D((m_tex),(m_uv)),vec4(1.0 / (256.0 * 256.0 * 256.0),1.0 / (256.0 * 256.0),1.0 / 256.0,1) )
-
-#endif
-
-#ifdef USE_SHADOW_PCF
-
-
-#ifdef USE_SHADOW_PCF_HQ
-
-
-float SAMPLE_SHADOW_TEX( highp vec2 coord, highp float refdepth) {
-
- float avg=(SHADOW_DEPTH(shadow_texture,coord) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(shadow_texel_size.x,0.0)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(-shadow_texel_size.x,0.0)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(0.0,shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(0.0,-shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(shadow_texel_size.x,shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(-shadow_texel_size.x,shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(shadow_texel_size.x,-shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(-shadow_texel_size.x,-shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(shadow_texel_size.x*2.0,0.0)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(-shadow_texel_size.x*2.0,0.0)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(0.0,shadow_texel_size.y*2.0)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(0.0,-shadow_texel_size.y*2.0)) < refdepth ? 0.0 : 1.0);
- return avg*(1.0/13.0);
-}
-
-#else
-
-float SAMPLE_SHADOW_TEX( highp vec2 coord, highp float refdepth) {
-
- float avg=(SHADOW_DEPTH(shadow_texture,coord) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(shadow_texel_size.x,0.0)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(-shadow_texel_size.x,0.0)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(0.0,shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- avg+=(SHADOW_DEPTH(shadow_texture,coord+vec2(0.0,-shadow_texel_size.y)) < refdepth ? 0.0 : 1.0);
- return avg*0.2;
-}
-
-#endif
-
-
-
-
-/*
- 16x averaging
-float SAMPLE_SHADOW_TEX( highp vec2 coord, highp float refdepth) {
-
- vec2 offset = vec2(
- lessThan(vec2(0.25),fract(gl_FragCoord.xy * 0.5))
- );
- offset.y += offset.x; // y ^= x in floating point
-
- if (offset.y > 1.1)
- offset.y = 0.0;
- float avg = step( refdepth, SHADOW_DEPTH(shadow_texture, coord+ (offset + vec2(-1.5, 0.5))*shadow_texel_size) );
- avg+=step(refdepth, SHADOW_DEPTH(shadow_texture, coord+ (offset + vec2(0.5, 0.5))*shadow_texel_size) );
- avg+=step(refdepth, SHADOW_DEPTH(shadow_texture, coord+ (offset + vec2(-1.5, -1.5))*shadow_texel_size) );
- avg+=step(refdepth, SHADOW_DEPTH(shadow_texture, coord+ (offset + vec2(0.5, -1.5))*shadow_texel_size) );
- return avg * 0.25;
-}
-*/
-
-/*
-float SAMPLE_SHADOW_TEX( highp vec2 coord, highp float refdepth) {
-
- vec2 offset = vec2(
- lessThan(vec2(0.25),fract(gl_FragCoord.xy * 0.5))
- );
- offset.y += offset.x; // y ^= x in floating point
-
- if (offset.y > 1.1)
- offset.y = 0.0;
- return step( refdepth, SHADOW_DEPTH(shadow_texture, coord+ offset*shadow_texel_size) );
-
-}
-
-*/
-/* simple pcf4 */
-//#define SAMPLE_SHADOW_TEX(m_coord,m_depth) ((step(m_depth,SHADOW_DEPTH(shadow_texture,m_coord))+step(m_depth,SHADOW_DEPTH(shadow_texture,m_coord+vec2(0.0,shadow_texel_size.y)))+step(m_depth,SHADOW_DEPTH(shadow_texture,m_coord+vec2(shadow_texel_size.x,0.0)))+step(m_depth,SHADOW_DEPTH(shadow_texture,m_coord+shadow_texel_size)))/4.0)
-
-#endif
-
-#ifdef USE_SHADOW_ESM
-
-uniform float esm_multiplier;
-
-float SAMPLE_SHADOW_TEX(vec2 p_uv,float p_depth) {
-
-#if defined (USE_DEPTH_SHADOWS)
- //these only are used if interpolation exists
- highp float occluder = SHADOW_DEPTH(shadow_texture, p_uv);
-#else
- vec2 unnormalized = p_uv/shadow_texel_size;
- vec2 fractional = fract(unnormalized);
- unnormalized = floor(unnormalized);
-
- vec4 exponent;
- exponent.x = SHADOW_DEPTH(shadow_texture, (unnormalized + vec2( -0.5, 0.5 )) * shadow_texel_size );
- exponent.y = SHADOW_DEPTH(shadow_texture, (unnormalized + vec2( 0.5, 0.5 )) * shadow_texel_size );
- exponent.z = SHADOW_DEPTH(shadow_texture, (unnormalized + vec2( 0.5, -0.5 )) * shadow_texel_size );
- exponent.w = SHADOW_DEPTH(shadow_texture, (unnormalized + vec2( -0.5, -0.5 )) * shadow_texel_size );
-
- highp float occluder = (exponent.w + (exponent.x - exponent.w) * fractional.y);
- occluder = occluder + ((exponent.z + (exponent.y - exponent.z) * fractional.y) - occluder)*fractional.x;
-#endif
- return clamp(exp(esm_multiplier* ( occluder - p_depth )),0.0,1.0);
-
-}
-
-
-#endif
-
-#if !defined(USE_SHADOW_PCF) && !defined(USE_SHADOW_ESM)
-
-#define SAMPLE_SHADOW_TEX(m_coord,m_depth) (SHADOW_DEPTH(shadow_texture,m_coord) < m_depth ? 0.0 : 1.0)
-
-#endif
-
-
-#endif
-
-#ifdef USE_DUAL_PARABOLOID
-
-varying float dp_clip;
-
-#endif
-
-uniform highp mat4 camera_inverse_transform;
-
-#if defined(ENABLE_TEXSCREEN)
-
-uniform vec2 texscreen_screen_mult;
-uniform vec4 texscreen_screen_clamp;
-uniform sampler2D texscreen_tex;
-
-#endif
-
-#if defined(ENABLE_SCREEN_UV)
-
-uniform vec2 screen_uv_mult;
-
-#endif
-
-void main() {
-
-#ifdef USE_DUAL_PARABOLOID
- if (dp_clip<0.0)
- discard;
-#endif
-
- //lay out everything, whathever is unused is optimized away anyway
- vec3 vertex = vertex_interp;
- vec4 diffuse = vec4(0.9,0.9,0.9,1.0);
- vec3 specular = vec3(0.0,0.0,0.0);
- vec3 emission = vec3(0.0,0.0,0.0);
- float specular_exp=1.0;
- float glow=0.0;
- float shade_param=0.0;
-#ifdef DISABLE_FRONT_FACING
- float side=float(1)*2.0-1.0;
-#else
- float side=float(gl_FrontFacing)*2.0-1.0;
-#endif
-#if defined(ENABLE_TANGENT_INTERP)
- vec3 binormal = normalize(binormal_interp)*side;
- vec3 tangent = normalize(tangent_interp)*side;
-#endif
- //vec3 normal = abs(normalize(normal_interp))*side;
- vec3 normal = normalize(normal_interp)*side;
-#if defined(ENABLE_SCREEN_UV)
- vec2 screen_uv = gl_FragCoord.xy*screen_uv_mult;
-#endif
-
-#if defined(ENABLE_UV_INTERP)
- vec2 uv = uv_interp;
-#endif
-
-#if defined(ENABLE_UV2_INTERP)
- vec2 uv2 = uv2_interp;
-#endif
-
-#if defined(ENABLE_COLOR_INTERP)
- vec4 color = color_interp;
-#endif
-
-#if defined(ENABLE_NORMALMAP)
-
- vec3 normalmap = vec3(0.0);
-#endif
-
- float normaldepth=1.0;
-
-
-
-#if defined(ENABLE_DISCARD)
- bool discard_=false;
-#endif
-
-{
-
-
-FRAGMENT_SHADER_CODE
-
-}
-
-#if defined(ENABLE_NORMALMAP)
-
- normal = normalize( mix(normal_interp,tangent_interp * normalmap.x + binormal_interp * normalmap.y + normal_interp * normalmap.z,normaldepth) ) * side;
-
-#endif
-
-#if defined(ENABLE_DISCARD)
- if (discard_) {
- //easy to eliminate dead code
- discard;
- }
-#endif
-
-#ifdef ENABLE_CLIP_ALPHA
- if (diffuse.a<0.99) {
- //used for doublepass and shadowmapping
- discard;
- }
-#endif
-
- float shadow_attenuation = 1.0;
-
-#ifdef ENABLE_AMBIENT_LIGHTMAP
-
- vec3 ambientmap_color = vec3(0.0,0.0,0.0);
- vec2 ambientmap_uv = vec2(0.0,0.0);
-
-#ifdef USE_LIGHTMAP_ON_UV2
-
- ambientmap_uv = uv2_interp;
-
-#else
-
- ambientmap_uv = uv_interp;
-
-#endif
-
- vec4 amcol = texture2D(ambient_lightmap,ambientmap_uv);
- shadow_attenuation=amcol.a;
- ambientmap_color = amcol.rgb;
- ambientmap_color*=ambient_lightmap_multiplier;
- ambientmap_color*=diffuse.rgb;
-
-
-
-#endif
-
-
-#ifdef ENABLE_AMBIENT_OCTREE
-
- vec3 ambientmap_color = vec3(0.0,0.0,0.0);
-
-
- {
-
- //read position from initial lattice grid
- highp vec3 lattice_pos = floor(ambient_octree_coords*ambient_octree_lattice_size);
- highp vec2 octant_uv = highp vec2(lattice_pos.x+ambient_octree_lattice_size*lattice_pos.z,lattice_pos.y);
- octant_uv=(octant_uv*highp vec2(2.0,4.0)+highp vec2(0.0,4.0));
- highp float ld = 1.0/ambient_octree_lattice_size;
-
-
- //go down the octree
-
- for(int i=0;i<ambient_octree_steps;i++) {
-
-
- highp vec3 sub=mod(ambient_octree_coords,ld);
- ld*=0.5;
- highp vec3 s = step(ld,sub);
- octant_uv+=s.xy;
- octant_uv.y+=s.z*2.0;
- octant_uv=(octant_uv+0.5)*ambient_octree_pix_size;
- highp vec4 new_uv = texture2D(ambient_octree_tex,octant_uv);
- octant_uv=floor(highp vec2( dot(new_uv.xy,highp vec2(65280.0,255.0)), dot(new_uv.zw,highp vec2(65280.0,255.0)) )+0.5);//+ambient_octree_pix_size*0.5;
-
- }
-
- //sample color
- octant_uv=(octant_uv+0.5)*ambient_octree_light_pix_size;
- highp vec3 sub=(mod(ambient_octree_coords,ld)/ld);
- octant_uv.xy+=sub.xy*ambient_octree_light_pix_size.xy;
- vec3 col_up=texture2D(ambient_octree_light_tex,octant_uv).rgb;
- octant_uv.y+=ambient_octree_light_pix_size.y*2.0;
- vec3 col_down=texture2D(ambient_octree_light_tex,octant_uv).rgb;
- ambientmap_color=mix(col_up,col_down,sub.z)*ambient_octree_multiplier;
-
- ambientmap_color*=diffuse.rgb;
-
- }
-
-#endif
-
-
-
-#ifdef ENABLE_AMBIENT_DP_SAMPLER
-
- vec3 ambientmap_color = vec3(0.0,0.0,0.0);
-
- {
-
- vec3 dp_normal = normalize((vec4(normal,0) * camera_inverse_transform).xyz);
- vec2 ambient_uv = (dp_normal.xy / (1.0+abs(dp_normal.z)))*0.5+0.5; //dual paraboloid
- ambient_uv.y*=0.5;
- if (dp_normal.z<0) {
-
- ambient_uv.y=(0.5-ambient_uv.y)+0.5;
-
- }
-
- ambientmap_color = texture2D(ambient_dp_sampler,ambient_uv ).rgb * ambient_dp_sampler_multiplier;
- ambientmap_color*=diffuse.rgb;
- }
-
-#endif
-
-
-
-
-#ifdef LIGHT_USE_SHADOW
-#ifdef LIGHT_TYPE_DIRECTIONAL
-
- float shadow_fade_exponent=5.0; //hardcoded for now
- float shadow_fade=pow(length(vertex_interp)/light_attenuation.g,shadow_fade_exponent);
-
-// optimization - skip shadows outside visible range
- if(shadow_fade<1.0){
-
-#ifdef LIGHT_USE_PSSM
-
-
- //if (vertex_interp.z > light_pssm_split) {
-#if 0
- highp vec3 splane = vec3(0.0,0.0,0.0);
-
- if (gl_FragCoord.w > light_pssm_split.x) {
-
- splane = shadow_coord.xyz;
- splane.y+=1.0;
- } else {
- splane = shadow_coord2.xyz;
- }
- splane.y*=0.5;
- shadow_attenuation=SAMPLE_SHADOW_TEX(splane.xy,splane.z);
-
-#else
-/*
- float sa_a = SAMPLE_SHADOW_TEX(shadow_coord.xy,shadow_coord.z);
- float sa_b = SAMPLE_SHADOW_TEX(shadow_coord2.xy,shadow_coord2.z);
- if (gl_FragCoord.w > light_pssm_split.x) {
- shadow_attenuation=sa_a;
- } else {
- shadow_attenuation=sa_b;
- }
-*/
-
- vec2 pssm_coord;
- float pssm_z;
-
-#if defined(LIGHT_USE_PSSM) && defined(USE_SHADOW_ESM)
-#define USE_PSSM_BLEND
- float pssm_blend;
- vec2 pssm_coord_2;
- float pssm_z_2;
- vec3 light_pssm_split_inv = 1.0/light_pssm_split;
- float w_inv = 1.0/gl_FragCoord.w;
-#endif
-
-#ifdef LIGHT_USE_PSSM4
-
-
- if (gl_FragCoord.w > light_pssm_split.y) {
-
- if (gl_FragCoord.w > light_pssm_split.x) {
- pssm_coord=shadow_coord.xy;
- pssm_z=shadow_coord.z;
-#if defined(USE_PSSM_BLEND)
- pssm_coord_2=shadow_coord2.xy;
- pssm_z_2=shadow_coord2.z;
- pssm_blend=smoothstep(0.0,light_pssm_split_inv.x,w_inv);
-#endif
-
- } else {
- pssm_coord=shadow_coord2.xy;
- pssm_z=shadow_coord2.z;
-#if defined(USE_PSSM_BLEND)
- pssm_coord_2=shadow_coord3.xy;
- pssm_z_2=shadow_coord3.z;
- pssm_blend=smoothstep(light_pssm_split_inv.x,light_pssm_split_inv.y,w_inv);
-#endif
-
- }
- } else {
-
-
- if (gl_FragCoord.w > light_pssm_split.z) {
- pssm_coord=shadow_coord3.xy;
- pssm_z=shadow_coord3.z;
-#if defined(USE_PSSM_BLEND)
- pssm_coord_2=shadow_coord4.xy;
- pssm_z_2=shadow_coord4.z;
- pssm_blend=smoothstep(light_pssm_split_inv.y,light_pssm_split_inv.z,w_inv);
-#endif
-
- } else {
- pssm_coord=shadow_coord4.xy;
- pssm_z=shadow_coord4.z;
-#if defined(USE_PSSM_BLEND)
- pssm_coord_2=shadow_coord4.xy;
- pssm_z_2=shadow_coord4.z;
- pssm_blend=0.0;
-#endif
-
- }
- }
-
-#else
-
- if (gl_FragCoord.w > light_pssm_split.x) {
- pssm_coord=shadow_coord.xy;
- pssm_z=shadow_coord.z;
-#if defined(USE_PSSM_BLEND)
- pssm_coord_2=shadow_coord2.xy;
- pssm_z_2=shadow_coord2.z;
- pssm_blend=smoothstep(0.0,light_pssm_split_inv.x,w_inv);
-#endif
-
- } else {
- pssm_coord=shadow_coord2.xy;
- pssm_z=shadow_coord2.z;
-#if defined(USE_PSSM_BLEND)
- pssm_coord_2=shadow_coord2.xy;
- pssm_z_2=shadow_coord2.z;
- pssm_blend=0.0;
-#endif
-
- }
-
-#endif
-
- //one one sample
- shadow_attenuation=SAMPLE_SHADOW_TEX(pssm_coord,pssm_z);
-#if defined(USE_PSSM_BLEND)
- shadow_attenuation=mix(shadow_attenuation,SAMPLE_SHADOW_TEX(pssm_coord_2,pssm_z_2),pssm_blend);
-#endif
-
-
-#endif
-
-#else
-
- shadow_attenuation=SAMPLE_SHADOW_TEX(shadow_coord.xy,shadow_coord.z);
-#endif
-
- shadow_attenuation=mix(shadow_attenuation,1.0,shadow_fade);
- }else{
- shadow_attenuation=1.0;
- };
-
-#endif
-
-#ifdef LIGHT_TYPE_OMNI
-
- vec3 splane=shadow_coord.xyz;///shadow_coord.w;
- float shadow_len=length(splane);
- splane=normalize(splane);
- float vofs=0.0;
-
- if (splane.z>=0.0) {
-
- splane.z+=1.0;
- } else {
-
- splane.z=1.0 - splane.z;
- vofs=0.5;
- }
- splane.xy/=splane.z;
- splane.xy=splane.xy * 0.5 + 0.5;
- float lradius = light_attenuation.g;
- splane.z = shadow_len / lradius;
- splane.y=clamp(splane.y,0.0,1.0)*0.5+vofs;
-
- shadow_attenuation=SAMPLE_SHADOW_TEX(splane.xy,splane.z);
-#endif
-
-#ifdef LIGHT_TYPE_SPOT
-
- shadow_attenuation=SAMPLE_SHADOW_TEX(shadow_coord.xy,shadow_coord.z);
-#endif
-
- shadow_attenuation=mix(shadow_attenuation,1.0,shadow_darkening);
-#endif
-
-
-#ifdef USE_FRAGMENT_LIGHTING
-
- vec3 eye_vec = -normalize(vertex);
-
-#ifdef LIGHT_TYPE_DIRECTIONAL
-
- vec3 light_dir = -light_direction;
- float attenuation = light_attenuation.r;
-
-
-#endif
-
-#ifdef LIGHT_TYPE_OMNI
-
- vec3 light_dir = light_pos-vertex;
- float radius = light_attenuation.g;
- float dist = min(length(light_dir),radius);
- light_dir=normalize(light_dir);
- float attenuation = pow( max(1.0 - dist/radius, 0.0), light_attenuation.b ) * light_attenuation.r;
-
-#endif
-
-
-#ifdef LIGHT_TYPE_SPOT
-
- vec3 light_dir = light_pos-vertex;
- float radius = light_attenuation.g;
- float dist = min(length(light_dir),radius);
- light_dir=normalize(light_dir);
- float attenuation = pow( max(1.0 - dist/radius, 0.0), light_attenuation.b ) * light_attenuation.r;
- vec3 spot_dir = light_direction;
- float spot_cutoff=light_spot_attenuation.r;
- float scos = max(dot(-light_dir, spot_dir),spot_cutoff);
- float rim = (1.0 - scos) / (1.0 - spot_cutoff);
- attenuation *= 1.0 - pow( rim, light_spot_attenuation.g);
-
-#endif
-
-# if defined(LIGHT_TYPE_DIRECTIONAL) || defined(LIGHT_TYPE_OMNI) || defined (LIGHT_TYPE_SPOT)
-
- {
-
- vec3 mdiffuse = diffuse.rgb;
- vec3 light;
-
-#if defined(USE_OUTPUT_SHADOW_COLOR)
- vec3 shadow_color=vec3(0.0,0.0,0.0);
-#endif
-
-#if defined(USE_LIGHT_SHADER_CODE)
-//light is written by the light shader
-{
-
-LIGHT_SHADER_CODE
-
-}
-#else
-//traditional lambert + blinn
- float NdotL = max(0.0,dot( normal, light_dir ));
- vec3 half_vec = normalize(light_dir + eye_vec);
- float eye_light = max(dot(normal, half_vec),0.0);
-
- light = light_diffuse * mdiffuse * NdotL;
- if (NdotL > 0.0) {
- light+=specular * light_specular * pow( eye_light, specular_exp );
- }
-#endif
- diffuse.rgb = const_light_mult * ambient_light *diffuse.rgb + light * attenuation * shadow_attenuation;
-
-#if defined(USE_OUTPUT_SHADOW_COLOR)
- diffuse.rgb += light * shadow_color * attenuation * (1.0 - shadow_attenuation);
-#endif
-
-#ifdef USE_FOG
-
- diffuse.rgb = mix(diffuse.rgb,fog_interp.rgb,fog_interp.a);
-
-# if defined(LIGHT_TYPE_OMNI) || defined (LIGHT_TYPE_SPOT)
- diffuse.rgb = mix(mix(vec3(0.0),diffuse.rgb,attenuation),diffuse.rgb,const_light_mult);
-# endif
-
-
-#endif
-
-
- }
-
-
-# endif
-
-# if !defined(LIGHT_TYPE_DIRECTIONAL) && !defined(LIGHT_TYPE_OMNI) && !defined (LIGHT_TYPE_SPOT)
-//none
-#ifndef SHADELESS
- diffuse.rgb=ambient_light *diffuse.rgb;
-#endif
-
-# endif
-
- diffuse.rgb+=const_light_mult*emission;
-
-#endif
-
-
-
-
-#ifdef USE_VERTEX_LIGHTING
-
- vec3 ambient = const_light_mult*ambient_light*diffuse.rgb;
-# if defined(LIGHT_TYPE_OMNI) || defined (LIGHT_TYPE_SPOT)
- //ambient*=diffuse_interp.a; //attenuation affects ambient too
-
-# endif
-
- //diffuse.rgb=(diffuse.rgb * diffuse_interp.rgb + specular * specular_interp)*shadow_attenuation + ambient;
- //diffuse.rgb+=emission * const_light_mult;
- diffuse.rgb=(diffuse.rgb * diffuse_interp.rgb + specular * specular_interp)*shadow_attenuation + ambient;
- diffuse.rgb+=emission * const_light_mult;
-
-#ifdef USE_FOG
-
- diffuse.rgb = mix(diffuse.rgb,fog_interp.rgb,fog_interp.a);
-
-# if defined(LIGHT_TYPE_OMNI) || defined (LIGHT_TYPE_SPOT)
- diffuse.rgb = mix(mix(vec3(0.0),diffuse.rgb,diffuse_interp.a),diffuse.rgb,const_light_mult);
-# endif
-
-#endif
-
-#endif
-
-
-#if defined(ENABLE_AMBIENT_OCTREE) || defined(ENABLE_AMBIENT_LIGHTMAP) || defined(ENABLE_AMBIENT_DP_SAMPLER)
-#if defined(ENABLE_AMBIENT_COLOR)
- ambientmap_color*=ambient_color;
-#endif
- diffuse.rgb+=ambientmap_color;
-#endif
-
-
-#ifdef USE_SHADOW_PASS
-
-#ifdef USE_DEPTH_SHADOWS
-
- //do nothing, depth is just written
-#else
- // pack depth to rgba
- //highp float bias = 0.0005;
- highp float depth = ((position_interp.z / position_interp.w) + 1.0) * 0.5 + 0.0;//bias;
- highp vec4 comp = fract(depth * vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0));
- comp -= comp.xxyz * vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);
- gl_FragColor = comp;
-
-#endif
-
-#else
-
-
-
-#ifdef USE_GLOW
-
- diffuse.a=glow;
-#endif
-
-#ifdef USE_8BIT_HDR
- diffuse.rgb*=0.25;
-#endif
-
- gl_FragColor = diffuse;
-#endif
-}
-
-
diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp
index e6ffa39197..74e844836e 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.cpp
+++ b/drivers/gles3/rasterizer_canvas_gles3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -691,6 +691,13 @@ void RasterizerCanvasGLES3::_canvas_item_render_commands(Item *p_item, Item *cur
state.canvas_shader.set_uniform(CanvasShaderGLES3::COLOR_TEXPIXEL_SIZE, texpixel_size);
}
_draw_polygon(polygon->indices.ptr(), polygon->count, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1);
+#ifdef GLES_OVER_GL
+ if (polygon->antialiased) {
+ glEnable(GL_LINE_SMOOTH);
+ _draw_generic(GL_LINE_LOOP, polygon->points.size(), polygon->points.ptr(), polygon->uvs.ptr(), polygon->colors.ptr(), polygon->colors.size() == 1);
+ glDisable(GL_LINE_SMOOTH);
+ }
+#endif
} break;
case Item::Command::TYPE_PARTICLES: {
diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h
index 29f889cc88..bf07b8b08b 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.h
+++ b/drivers/gles3/rasterizer_canvas_gles3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp
index e025992c0b..d1c8ccfe21 100644
--- a/drivers/gles3/rasterizer_gles3.cpp
+++ b/drivers/gles3/rasterizer_gles3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -247,11 +247,8 @@ void RasterizerGLES3::set_current_render_target(RID p_render_target) {
if (p_render_target.is_valid()) {
RasterizerStorageGLES3::RenderTarget *rt = storage->render_target_owner.getornull(p_render_target);
- if (!rt) {
- storage->frame.current_rt = NULL;
- }
- ERR_FAIL_COND(!rt);
storage->frame.current_rt = rt;
+ ERR_FAIL_COND(!rt);
storage->frame.clear_request = false;
glViewport(0, 0, rt->width, rt->height);
diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h
index 4bc267ec7e..4bfec09bf3 100644
--- a/drivers/gles3/rasterizer_gles3.h
+++ b/drivers/gles3/rasterizer_gles3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index 30a77c4b39..a492629dae 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -120,7 +120,7 @@ void RasterizerSceneGLES3::shadow_atlas_set_size(RID p_atlas, int p_size) {
ERR_FAIL_COND(!shadow_atlas);
ERR_FAIL_COND(p_size < 0);
- p_size = nearest_power_of_2(p_size);
+ p_size = next_power_of_2(p_size);
if (p_size == shadow_atlas->size)
return;
@@ -185,7 +185,7 @@ void RasterizerSceneGLES3::shadow_atlas_set_quadrant_subdivision(RID p_atlas, in
ERR_FAIL_INDEX(p_quadrant, 4);
ERR_FAIL_INDEX(p_subdivision, 16384);
- uint32_t subdiv = nearest_power_of_2(p_subdivision);
+ uint32_t subdiv = next_power_of_2(p_subdivision);
if (subdiv & 0xaaaaaaaa) { //sqrt(subdiv) must be integer
subdiv <<= 1;
}
@@ -310,7 +310,7 @@ bool RasterizerSceneGLES3::shadow_atlas_update_light(RID p_atlas, RID p_light_in
}
uint32_t quad_size = shadow_atlas->size >> 1;
- int desired_fit = MIN(quad_size / shadow_atlas->smallest_subdiv, nearest_power_of_2(quad_size * p_coverage));
+ int desired_fit = MIN(quad_size / shadow_atlas->smallest_subdiv, next_power_of_2(quad_size * p_coverage));
int valid_quadrants[4];
int valid_quadrant_count = 0;
@@ -479,7 +479,7 @@ void RasterizerSceneGLES3::reflection_atlas_set_size(RID p_ref_atlas, int p_size
ReflectionAtlas *reflection_atlas = reflection_atlas_owner.getornull(p_ref_atlas);
ERR_FAIL_COND(!reflection_atlas);
- int size = nearest_power_of_2(p_size);
+ int size = next_power_of_2(p_size);
if (size == reflection_atlas->size)
return;
@@ -554,7 +554,7 @@ void RasterizerSceneGLES3::reflection_atlas_set_subdivision(RID p_ref_atlas, int
ReflectionAtlas *reflection_atlas = reflection_atlas_owner.getornull(p_ref_atlas);
ERR_FAIL_COND(!reflection_atlas);
- uint32_t subdiv = nearest_power_of_2(p_subdiv);
+ uint32_t subdiv = next_power_of_2(p_subdiv);
if (subdiv & 0xaaaaaaaa) { //sqrt(subdiv) must be integer
subdiv <<= 1;
}
@@ -1088,11 +1088,12 @@ void RasterizerSceneGLES3::gi_probe_instance_set_bounds(RID p_probe, const Vecto
bool RasterizerSceneGLES3::_setup_material(RasterizerStorageGLES3::Material *p_material, bool p_alpha_pass) {
+ /* this is handled outside
if (p_material->shader->spatial.cull_mode == RasterizerStorageGLES3::Shader::Spatial::CULL_MODE_DISABLED) {
glDisable(GL_CULL_FACE);
} else {
glEnable(GL_CULL_FACE);
- }
+ } */
if (state.current_line_width != p_material->line_width) {
//glLineWidth(MAX(p_material->line_width,1.0));
@@ -1857,12 +1858,21 @@ void RasterizerSceneGLES3::_setup_light(RenderList::Element *e, const Transform
}
}
-void RasterizerSceneGLES3::_set_cull(bool p_front, bool p_reverse_cull) {
+void RasterizerSceneGLES3::_set_cull(bool p_front, bool p_disabled, bool p_reverse_cull) {
bool front = p_front;
if (p_reverse_cull)
front = !front;
+ if (p_disabled != state.cull_disabled) {
+ if (p_disabled)
+ glDisable(GL_CULL_FACE);
+ else
+ glEnable(GL_CULL_FACE);
+
+ state.cull_disabled = p_disabled;
+ }
+
if (front != state.cull_front) {
glCullFace(front ? GL_FRONT : GL_BACK);
@@ -1900,7 +1910,9 @@ void RasterizerSceneGLES3::_render_list(RenderList::Element **p_elements, int p_
}
state.cull_front = false;
+ state.cull_disabled = false;
glCullFace(GL_BACK);
+ glEnable(GL_CULL_FACE);
state.current_depth_test = true;
glEnable(GL_DEPTH_TEST);
@@ -2101,7 +2113,7 @@ void RasterizerSceneGLES3::_render_list(RenderList::Element **p_elements, int p_
storage->info.render.surface_switch_count++;
}
- _set_cull(e->sort_key & RenderList::SORT_KEY_MIRROR_FLAG, p_reverse_cull);
+ _set_cull(e->sort_key & RenderList::SORT_KEY_MIRROR_FLAG, e->sort_key & RenderList::SORT_KEY_CULL_DISABLED_FLAG, p_reverse_cull);
state.scene_shader.set_uniform(SceneShaderGLES3::NORMAL_MULT, e->instance->mirror ? -1.0 : 1.0);
state.scene_shader.set_uniform(SceneShaderGLES3::WORLD_TRANSFORM, e->instance->transform);
@@ -2174,44 +2186,51 @@ void RasterizerSceneGLES3::_add_geometry(RasterizerStorageGLES3::Geometry *p_geo
while (m->next_pass.is_valid()) {
m = storage->material_owner.getornull(m->next_pass);
- if (!m)
+ if (!m || !m->shader || !m->shader->valid)
break;
_add_geometry_with_material(p_geometry, p_instance, p_owner, m, p_shadow);
}
}
-void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, RasterizerStorageGLES3::Material *m, bool p_shadow) {
+void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, RasterizerStorageGLES3::Material *p_material, bool p_shadow) {
- bool has_base_alpha = (m->shader->spatial.uses_alpha && !m->shader->spatial.uses_alpha_scissor) || m->shader->spatial.uses_screen_texture || m->shader->spatial.unshaded;
- bool has_blend_alpha = m->shader->spatial.blend_mode != RasterizerStorageGLES3::Shader::Spatial::BLEND_MODE_MIX || m->shader->spatial.ontop;
+ bool has_base_alpha = (p_material->shader->spatial.uses_alpha && !p_material->shader->spatial.uses_alpha_scissor) || p_material->shader->spatial.uses_screen_texture;
+ bool has_blend_alpha = p_material->shader->spatial.blend_mode != RasterizerStorageGLES3::Shader::Spatial::BLEND_MODE_MIX || p_material->shader->spatial.ontop;
bool has_alpha = has_base_alpha || has_blend_alpha;
bool shadow = false;
bool mirror = p_instance->mirror;
+ bool no_cull = false;
- if (m->shader->spatial.cull_mode == RasterizerStorageGLES3::Shader::Spatial::CULL_MODE_FRONT) {
+ if (p_material->shader->spatial.cull_mode == RasterizerStorageGLES3::Shader::Spatial::CULL_MODE_DISABLED) {
+ no_cull = true;
+ mirror = false;
+ } else if (p_material->shader->spatial.cull_mode == RasterizerStorageGLES3::Shader::Spatial::CULL_MODE_FRONT) {
mirror = !mirror;
}
- if (m->shader->spatial.uses_sss) {
+ if (p_material->shader->spatial.uses_sss) {
state.used_sss = true;
}
- if (m->shader->spatial.uses_screen_texture) {
+ if (p_material->shader->spatial.uses_screen_texture) {
state.used_screen_texture = true;
}
if (p_shadow) {
- if (has_blend_alpha || (has_base_alpha && m->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS))
+ if (has_blend_alpha || (has_base_alpha && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS))
return; //bye
- if (!m->shader->spatial.uses_alpha_scissor && !m->shader->spatial.writes_modelview_or_projection && !m->shader->spatial.uses_vertex && !m->shader->spatial.uses_discard && m->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
+ if (!p_material->shader->spatial.uses_alpha_scissor && !p_material->shader->spatial.writes_modelview_or_projection && !p_material->shader->spatial.uses_vertex && !p_material->shader->spatial.uses_discard && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
//shader does not use discard and does not write a vertex position, use generic material
- if (p_instance->cast_shadows == VS::SHADOW_CASTING_SETTING_DOUBLE_SIDED)
- m = storage->material_owner.getptr(default_material_twosided);
- else
- m = storage->material_owner.getptr(default_material);
+ if (p_instance->cast_shadows == VS::SHADOW_CASTING_SETTING_DOUBLE_SIDED) {
+ p_material = storage->material_owner.getptr(default_material_twosided);
+ no_cull = true;
+ mirror = false;
+ } else {
+ p_material = storage->material_owner.getptr(default_material);
+ }
}
has_alpha = false;
@@ -2223,7 +2242,7 @@ void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::G
return;
e->geometry = p_geometry;
- e->material = m;
+ e->material = p_material;
e->instance = p_instance;
e->owner = p_owner;
e->sort_key = 0;
@@ -2250,7 +2269,7 @@ void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::G
e->sort_key |= uint64_t(e->material->index) << RenderList::SORT_KEY_MATERIAL_INDEX_SHIFT;
e->sort_key |= uint64_t(e->instance->depth_layer) << RenderList::SORT_KEY_DEPTH_LAYER_SHIFT;
- if (!has_blend_alpha && has_alpha && m->shader->spatial.depth_draw_mode == RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
+ if (!has_blend_alpha && has_alpha && p_material->shader->spatial.depth_draw_mode == RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
//if nothing exists, add this element as opaque too
RenderList::Element *oe = render_list.add_element();
@@ -2275,17 +2294,31 @@ void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::G
e->sort_key |= RenderList::SORT_KEY_MIRROR_FLAG;
}
+ if (no_cull) {
+ e->sort_key |= RenderList::SORT_KEY_CULL_DISABLED_FLAG;
+ }
+
//e->light_type=0xFF; // no lights!
- if (shadow || m->shader->spatial.unshaded || state.debug_draw == VS::VIEWPORT_DEBUG_DRAW_UNSHADED) {
+ if (shadow || p_material->shader->spatial.unshaded || state.debug_draw == VS::VIEWPORT_DEBUG_DRAW_UNSHADED) {
e->sort_key |= SORT_KEY_UNSHADED_FLAG;
}
- if (!shadow && (m->shader->spatial.uses_vertex_lighting || storage->config.force_vertex_shading)) {
+ if (!shadow && (p_material->shader->spatial.uses_vertex_lighting || storage->config.force_vertex_shading)) {
e->sort_key |= SORT_KEY_VERTEX_LIT_FLAG;
}
+
+ if (!shadow && has_alpha && p_material->shader->spatial.depth_draw_mode == RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
+ //depth prepass for alpha
+ RenderList::Element *eo = render_list.add_element();
+
+ eo->instance = e->instance;
+ eo->geometry = e->geometry;
+ eo->material = e->material;
+ eo->sort_key = e->sort_key;
+ }
}
void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_scale, float p_energy) {
@@ -3226,6 +3259,8 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
state.ssao_blur_shader.set_uniform(SsaoBlurShaderGLES3::CAMERA_Z_NEAR, p_cam_projection.get_z_near());
GLint axis[2] = { i, 1 - i };
glUniform2iv(state.ssao_blur_shader.get_uniform(SsaoBlurShaderGLES3::AXIS), 1, axis);
+ glUniform2iv(state.ssao_blur_shader.get_uniform(SsaoBlurShaderGLES3::SCREEN_SIZE), 1, ss);
+
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.ssao.blur_red[i]);
glActiveTexture(GL_TEXTURE1);
@@ -3269,6 +3304,10 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
if (state.used_sss) { //sss enabled
//copy diffuse while performing sss
+ Plane p = p_cam_projection.xform4(Plane(1, 0, -1, 1));
+ p.normal /= p.d;
+ float unit_size = p.normal.x;
+
//copy normal and roughness to effect buffer
glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->buffers.fbo);
glReadBuffer(GL_COLOR_ATTACHMENT3);
@@ -3279,9 +3318,10 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
state.sss_shader.set_conditional(SubsurfScatteringShaderGLES3::USE_17_SAMPLES, subsurface_scatter_quality == SSS_QUALITY_MEDIUM);
state.sss_shader.set_conditional(SubsurfScatteringShaderGLES3::USE_25_SAMPLES, subsurface_scatter_quality == SSS_QUALITY_HIGH);
state.sss_shader.set_conditional(SubsurfScatteringShaderGLES3::ENABLE_FOLLOW_SURFACE, subsurface_scatter_follow_surface);
+ state.sss_shader.set_conditional(SubsurfScatteringShaderGLES3::ENABLE_STRENGTH_WEIGHTING, subsurface_scatter_weight_samples);
state.sss_shader.bind();
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::MAX_RADIUS, subsurface_scatter_size);
- state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::FOVY, p_cam_projection.get_fov());
+ state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::UNIT_SIZE, unit_size);
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::CAMERA_Z_NEAR, p_cam_projection.get_z_near());
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::CAMERA_Z_FAR, p_cam_projection.get_z_far());
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::DIR, Vector2(1, 0));
@@ -3296,14 +3336,13 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.ssao.blur_red[0]);
glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
+ //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo); //copy to front first
_copy_screen(true);
glActiveTexture(GL_TEXTURE0);
-
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color);
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::DIR, Vector2(0, 1));
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[0].sizes[0].fbo); // copy to base level
@@ -4406,9 +4445,10 @@ void RasterizerSceneGLES3::render_shadow(RID p_light, RID p_shadow_atlas, int p_
}
}
+ float bias_mult = Math::lerp(1.0f, light_instance->shadow_transform[p_pass].bias_scale, light->param[VS::LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE]);
zfar = light->param[VS::LIGHT_PARAM_RANGE];
- bias = light->param[VS::LIGHT_PARAM_SHADOW_BIAS] * light_instance->shadow_transform[p_pass].bias_scale;
- normal_bias = light->param[VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS] * light_instance->shadow_transform[p_pass].bias_scale;
+ bias = light->param[VS::LIGHT_PARAM_SHADOW_BIAS] * bias_mult;
+ normal_bias = light->param[VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS] * bias_mult;
fbo = directional_shadow.fbo;
vp_height = directional_shadow.size;
@@ -4535,6 +4575,9 @@ void RasterizerSceneGLES3::render_shadow(RID p_light, RID p_shadow_atlas, int p_
state.scene_shader.set_conditional(SceneShaderGLES3::RENDER_DEPTH, true);
+ if (light->reverse_cull) {
+ flip_facing = !flip_facing;
+ }
_render_list(render_list.elements, render_list.element_count, light_transform, light_projection, 0, flip_facing, false, true, false, false);
state.scene_shader.set_conditional(SceneShaderGLES3::RENDER_DEPTH, false);
@@ -4757,7 +4800,7 @@ void RasterizerSceneGLES3::initialize() {
{
//directional light shadow
directional_shadow.light_count = 0;
- directional_shadow.size = nearest_power_of_2(GLOBAL_GET("rendering/quality/directional_shadow/size"));
+ directional_shadow.size = next_power_of_2(GLOBAL_GET("rendering/quality/directional_shadow/size"));
glGenFramebuffers(1, &directional_shadow.fbo);
glBindFramebuffer(GL_FRAMEBUFFER, directional_shadow.fbo);
glGenTextures(1, &directional_shadow.depth);
@@ -4919,6 +4962,7 @@ void RasterizerSceneGLES3::initialize() {
GLOBAL_DEF("rendering/quality/subsurface_scattering/scale", 1.0);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/quality/subsurface_scattering/scale", PropertyInfo(Variant::INT, "rendering/quality/subsurface_scattering/scale", PROPERTY_HINT_RANGE, "0.01,8,0.01"));
GLOBAL_DEF("rendering/quality/subsurface_scattering/follow_surface", false);
+ GLOBAL_DEF("rendering/quality/subsurface_scattering/weight_samples", true);
GLOBAL_DEF("rendering/quality/voxel_cone_tracing/high_quality", true);
}
@@ -4961,6 +5005,7 @@ void RasterizerSceneGLES3::iteration() {
shadow_filter_mode = ShadowFilterMode(int(ProjectSettings::get_singleton()->get("rendering/quality/shadows/filter_mode")));
subsurface_scatter_follow_surface = ProjectSettings::get_singleton()->get("rendering/quality/subsurface_scattering/follow_surface");
+ subsurface_scatter_weight_samples = ProjectSettings::get_singleton()->get("rendering/quality/subsurface_scattering/weight_samples");
subsurface_scatter_quality = SubSurfaceScatterQuality(int(ProjectSettings::get_singleton()->get("rendering/quality/subsurface_scattering/quality")));
subsurface_scatter_size = ProjectSettings::get_singleton()->get("rendering/quality/subsurface_scattering/scale");
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index 0cdaef44a9..659408b455 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -66,6 +66,7 @@ public:
SubSurfaceScatterQuality subsurface_scatter_quality;
float subsurface_scatter_size;
bool subsurface_scatter_follow_surface;
+ bool subsurface_scatter_weight_samples;
uint64_t render_pass;
uint64_t scene_pass;
@@ -107,7 +108,7 @@ public:
TonemapShaderGLES3 tonemap_shader;
struct SceneDataUBO {
-
+ //this is a std140 compatible struct. Please read the OpenGL 3.3 Specificaiton spec before doing any changes
float projection_matrix[16];
float camera_inverse_matrix[16];
float camera_matrix[16];
@@ -132,12 +133,12 @@ public:
float subsurface_scatter_width;
float ambient_occlusion_affect_light;
- bool fog_depth_enabled;
+ uint32_t fog_depth_enabled;
float fog_depth_begin;
float fog_depth_curve;
- bool fog_transmit_enabled;
+ uint32_t fog_transmit_enabled;
float fog_transmit_curve;
- bool fog_height_enabled;
+ uint32_t fog_height_enabled;
float fog_height_min;
float fog_height_max;
float fog_height_curve;
@@ -187,6 +188,7 @@ public:
int reflection_probe_count;
bool cull_front;
+ bool cull_disabled;
bool used_sss;
bool used_screen_texture;
bool using_contact_shadows;
@@ -523,8 +525,8 @@ public:
virtual void environment_set_canvas_max_layer(RID p_env, int p_max_layer);
virtual void environment_set_ambient_light(RID p_env, const Color &p_color, float p_energy = 1.0, float p_sky_contribution = 0.0);
- 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);
- 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);
+ 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_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
@@ -654,6 +656,7 @@ public:
SORT_KEY_MATERIAL_INDEX_SHIFT = 40,
SORT_KEY_GEOMETRY_INDEX_SHIFT = 20,
SORT_KEY_GEOMETRY_TYPE_SHIFT = 15,
+ SORT_KEY_CULL_DISABLED_FLAG = 4,
SORT_KEY_SKELETON_FLAG = 2,
SORT_KEY_MIRROR_FLAG = 1
@@ -779,7 +782,7 @@ public:
RenderList render_list;
- _FORCE_INLINE_ void _set_cull(bool p_front, bool p_reverse_cull);
+ _FORCE_INLINE_ void _set_cull(bool p_front, bool p_disabled, bool p_reverse_cull);
_FORCE_INLINE_ bool _setup_material(RasterizerStorageGLES3::Material *p_material, bool p_alpha_pass);
_FORCE_INLINE_ void _setup_geometry(RenderList::Element *e, const Transform &p_view_transform);
@@ -795,7 +798,7 @@ public:
void _draw_sky(RasterizerStorageGLES3::Sky *p_sky, const CameraMatrix &p_projection, const Transform &p_transform, bool p_vflip, float p_scale, float p_energy);
void _setup_environment(Environment *env, const CameraMatrix &p_cam_projection, const Transform &p_cam_transform);
- void _setup_directional_light(int p_index, const Transform &p_camera_inverse_transformm, bool p_use_shadows);
+ void _setup_directional_light(int p_index, const Transform &p_camera_inverse_transform, bool p_use_shadows);
void _setup_lights(RID *p_light_cull_result, int p_light_cull_count, const Transform &p_camera_inverse_transform, const CameraMatrix &p_camera_projection, RID p_shadow_atlas);
void _setup_reflections(RID *p_reflection_probe_cull_result, int p_reflection_probe_cull_count, const Transform &p_camera_inverse_transform, const CameraMatrix &p_camera_projection, RID p_reflection_atlas, Environment *p_env);
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index a8e4bc0d4b..4cc6dcd5fb 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -2143,7 +2143,7 @@ _FORCE_INLINE_ static void _fill_std140_variant_ubo_value(ShaderLanguage::DataTy
gui[0] = v.normal.x;
gui[1] = v.normal.y;
- gui[2] = v.normal.x;
+ gui[2] = v.normal.z;
gui[3] = v.d;
}
} break;
@@ -2497,7 +2497,13 @@ void RasterizerStorageGLES3::_update_material(Material *material) {
//value=E->get().default_value;
} else {
//zero because it was not provided
- _fill_std140_ubo_empty(E->get().type, data);
+ if (E->get().type == ShaderLanguage::TYPE_VEC4 && E->get().hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
+ //colors must be set as black, with alpha as 1.0
+ _fill_std140_variant_ubo_value(E->get().type, Color(0, 0, 0, 1), data, material->shader->mode == VS::SHADER_SPATIAL);
+ } else {
+ //else just zero it out
+ _fill_std140_ubo_empty(E->get().type, data);
+ }
}
}
@@ -4442,6 +4448,7 @@ RID RasterizerStorageGLES3::light_create(VS::LightType p_type) {
light->param[VS::LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET] = 0.3;
light->param[VS::LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET] = 0.6;
light->param[VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS] = 0.1;
+ light->param[VS::LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE] = 0.1;
light->color = Color(1, 1, 1, 1);
light->shadow = false;
@@ -4451,7 +4458,7 @@ RID RasterizerStorageGLES3::light_create(VS::LightType p_type) {
light->omni_shadow_mode = VS::LIGHT_OMNI_SHADOW_DUAL_PARABOLOID;
light->omni_shadow_detail = VS::LIGHT_OMNI_SHADOW_DETAIL_VERTICAL;
light->directional_blend_splits = false;
-
+ light->reverse_cull = false;
light->version = 0;
return light_owner.make_rid(light);
@@ -4530,6 +4537,14 @@ void RasterizerStorageGLES3::light_set_cull_mask(RID p_light, uint32_t p_mask) {
light->instance_change_notify();
}
+void RasterizerStorageGLES3::light_set_reverse_cull_face_mode(RID p_light, bool p_enabled) {
+
+ Light *light = light_owner.getornull(p_light);
+ ERR_FAIL_COND(!light);
+
+ light->reverse_cull = p_enabled;
+}
+
void RasterizerStorageGLES3::light_omni_set_shadow_mode(RID p_light, VS::LightOmniShadowMode p_mode) {
Light *light = light_owner.getornull(p_light);
@@ -4840,35 +4855,6 @@ float RasterizerStorageGLES3::reflection_probe_get_origin_max_distance(RID p_pro
return reflection_probe->max_distance;
}
-/* ROOM API */
-
-RID RasterizerStorageGLES3::room_create() {
-
- return RID();
-}
-void RasterizerStorageGLES3::room_add_bounds(RID p_room, const PoolVector<Vector2> &p_convex_polygon, float p_height, const Transform &p_transform) {
-}
-void RasterizerStorageGLES3::room_clear_bounds(RID p_room) {
-}
-
-/* PORTAL API */
-
-// portals are only (x/y) points, forming a convex shape, which its clockwise
-// order points outside. (z is 0);
-
-RID RasterizerStorageGLES3::portal_create() {
-
- return RID();
-}
-void RasterizerStorageGLES3::portal_set_shape(RID p_portal, const Vector<Point2> &p_shape) {
-}
-void RasterizerStorageGLES3::portal_set_enabled(RID p_portal, bool p_enabled) {
-}
-void RasterizerStorageGLES3::portal_set_disable_distance(RID p_portal, float p_distance) {
-}
-void RasterizerStorageGLES3::portal_set_disabled_color(RID p_portal, const Color &p_color) {
-}
-
RID RasterizerStorageGLES3::gi_probe_create() {
GIProbe *gip = memnew(GIProbe);
@@ -5177,6 +5163,10 @@ void RasterizerStorageGLES3::particles_set_emitting(RID p_particles, bool p_emit
Particles *particles = particles_owner.getornull(p_particles);
ERR_FAIL_COND(!particles);
+ if (p_emitting != particles->emitting) {
+ // Restart is overriden by set_emitting
+ particles->restart_request = false;
+ }
particles->emitting = p_emitting;
}
void RasterizerStorageGLES3::particles_set_amount(RID p_particles, int p_amount) {
@@ -5468,58 +5458,58 @@ RID RasterizerStorageGLES3::particles_get_draw_pass_mesh(RID p_particles, int p_
return particles->draw_passes[p_pass];
}
-void RasterizerStorageGLES3::_particles_process(Particles *particles, float p_delta) {
+void RasterizerStorageGLES3::_particles_process(Particles *p_particles, float p_delta) {
- float new_phase = Math::fmod((float)particles->phase + (p_delta / particles->lifetime) * particles->speed_scale, (float)1.0);
+ float new_phase = Math::fmod((float)p_particles->phase + (p_delta / p_particles->lifetime) * p_particles->speed_scale, (float)1.0);
- if (particles->clear) {
- particles->cycle_number = 0;
- particles->random_seed = Math::rand();
- } else if (new_phase < particles->phase) {
- if (particles->one_shot) {
- particles->emitting = false;
+ if (p_particles->clear) {
+ p_particles->cycle_number = 0;
+ p_particles->random_seed = Math::rand();
+ } else if (new_phase < p_particles->phase) {
+ if (p_particles->one_shot) {
+ p_particles->emitting = false;
shaders.particles.set_uniform(ParticlesShaderGLES3::EMITTING, false);
}
- particles->cycle_number++;
+ p_particles->cycle_number++;
}
shaders.particles.set_uniform(ParticlesShaderGLES3::SYSTEM_PHASE, new_phase);
- shaders.particles.set_uniform(ParticlesShaderGLES3::PREV_SYSTEM_PHASE, particles->phase);
- particles->phase = new_phase;
+ shaders.particles.set_uniform(ParticlesShaderGLES3::PREV_SYSTEM_PHASE, p_particles->phase);
+ p_particles->phase = new_phase;
- shaders.particles.set_uniform(ParticlesShaderGLES3::DELTA, p_delta * particles->speed_scale);
- shaders.particles.set_uniform(ParticlesShaderGLES3::CLEAR, particles->clear);
- glUniform1ui(shaders.particles.get_uniform_location(ParticlesShaderGLES3::RANDOM_SEED), particles->random_seed);
+ shaders.particles.set_uniform(ParticlesShaderGLES3::DELTA, p_delta * p_particles->speed_scale);
+ shaders.particles.set_uniform(ParticlesShaderGLES3::CLEAR, p_particles->clear);
+ glUniform1ui(shaders.particles.get_uniform_location(ParticlesShaderGLES3::RANDOM_SEED), p_particles->random_seed);
- if (particles->use_local_coords)
+ if (p_particles->use_local_coords)
shaders.particles.set_uniform(ParticlesShaderGLES3::EMISSION_TRANSFORM, Transform());
else
- shaders.particles.set_uniform(ParticlesShaderGLES3::EMISSION_TRANSFORM, particles->emission_transform);
+ shaders.particles.set_uniform(ParticlesShaderGLES3::EMISSION_TRANSFORM, p_particles->emission_transform);
- glUniform1ui(shaders.particles.get_uniform(ParticlesShaderGLES3::CYCLE), particles->cycle_number);
+ glUniform1ui(shaders.particles.get_uniform(ParticlesShaderGLES3::CYCLE), p_particles->cycle_number);
- particles->clear = false;
+ p_particles->clear = false;
- glBindVertexArray(particles->particle_vaos[0]);
+ glBindVertexArray(p_particles->particle_vaos[0]);
- glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, particles->particle_buffers[1]);
+ glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, p_particles->particle_buffers[1]);
// GLint size = 0;
// glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
glBeginTransformFeedback(GL_POINTS);
- glDrawArrays(GL_POINTS, 0, particles->amount);
+ glDrawArrays(GL_POINTS, 0, p_particles->amount);
glEndTransformFeedback();
- SWAP(particles->particle_buffers[0], particles->particle_buffers[1]);
- SWAP(particles->particle_vaos[0], particles->particle_vaos[1]);
+ SWAP(p_particles->particle_buffers[0], p_particles->particle_buffers[1]);
+ SWAP(p_particles->particle_vaos[0], p_particles->particle_vaos[1]);
glBindVertexArray(0);
/* //debug particles :D
- glBindBuffer(GL_ARRAY_BUFFER, particles->particle_buffers[0]);
+ glBindBuffer(GL_ARRAY_BUFFER, p_particles->particle_buffers[0]);
- float *data = (float *)glMapBufferRange(GL_ARRAY_BUFFER, 0, particles->amount * 16 * 6, GL_MAP_READ_BIT);
- for (int i = 0; i < particles->amount; i++) {
+ float *data = (float *)glMapBufferRange(GL_ARRAY_BUFFER, 0, p_particles->amount * 16 * 6, GL_MAP_READ_BIT);
+ for (int i = 0; i < p_particles->amount; i++) {
int ofs = i * 24;
print_line(itos(i) + ":");
print_line("\tColor: " + Color(data[ofs + 0], data[ofs + 1], data[ofs + 2], data[ofs + 3]));
@@ -6235,7 +6225,7 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt) {
glBindFramebuffer(GL_FRAMEBUFFER, mm.fbo);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rt->effects.mip_maps[i].color, j);
bool used_depth = false;
- if (j == 0 && i == 0 && rt->buffers.active == false && !rt->flags[RENDER_TARGET_NO_3D]) { //will use this one for rendering 3D
+ if (j == 0 && i == 0) { //use always
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, rt->depth, 0);
used_depth = true;
}
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index 5a272f43fb..c74b127b23 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -314,7 +314,7 @@ public:
mutable RID_Owner<Texture> texture_owner;
- Ref<Image> _get_gl_image_and_format(const Ref<Image> &p_image, Image::Format p_format, uint32_t p_flags, GLenum &r_gl_format, GLenum &r_gl_internal_format, GLenum &r_type, bool &r_compressed, bool &srgb);
+ Ref<Image> _get_gl_image_and_format(const Ref<Image> &p_image, Image::Format p_format, uint32_t p_flags, GLenum &r_gl_format, GLenum &r_gl_internal_format, GLenum &r_gl_type, bool &r_compressed, bool &srgb);
virtual RID texture_create();
virtual void texture_allocate(RID p_texture, int p_width, int p_height, Image::Format p_format, uint32_t p_flags = VS::TEXTURE_FLAGS_DEFAULT);
@@ -528,8 +528,8 @@ public:
mutable SelfList<Material>::List _material_dirty_list;
void _material_make_dirty(Material *p_material) const;
- void _material_add_geometry(RID p_material, Geometry *p_instantiable);
- void _material_remove_geometry(RID p_material, Geometry *p_instantiable);
+ void _material_add_geometry(RID p_material, Geometry *p_geometry);
+ void _material_remove_geometry(RID p_material, Geometry *p_geometry);
mutable RID_Owner<Material> material_owner;
@@ -868,6 +868,7 @@ public:
RID projector;
bool shadow;
bool negative;
+ bool reverse_cull;
uint32_t cull_mask;
VS::LightOmniShadowMode omni_shadow_mode;
VS::LightOmniShadowDetail omni_shadow_detail;
@@ -887,6 +888,7 @@ public:
virtual void light_set_projector(RID p_light, RID p_texture);
virtual void light_set_negative(RID p_light, bool p_enable);
virtual void light_set_cull_mask(RID p_light, uint32_t p_mask);
+ virtual void light_set_reverse_cull_face_mode(RID p_light, bool p_enabled);
virtual void light_omni_set_shadow_mode(RID p_light, VS::LightOmniShadowMode p_mode);
virtual void light_omni_set_shadow_detail(RID p_light, VS::LightOmniShadowDetail p_detail);
@@ -951,23 +953,6 @@ public:
virtual float reflection_probe_get_origin_max_distance(RID p_probe) const;
virtual bool reflection_probe_renders_shadows(RID p_probe) const;
- /* ROOM API */
-
- virtual RID room_create();
- virtual void room_add_bounds(RID p_room, const PoolVector<Vector2> &p_convex_polygon, float p_height, const Transform &p_transform);
- virtual void room_clear_bounds(RID p_room);
-
- /* PORTAL API */
-
- // portals are only (x/y) points, forming a convex shape, which its clockwise
- // order points outside. (z is 0);
-
- virtual RID portal_create();
- virtual void portal_set_shape(RID p_portal, const Vector<Point2> &p_shape);
- virtual void portal_set_enabled(RID p_portal, bool p_enabled);
- virtual void portal_set_disable_distance(RID p_portal, float p_distance);
- virtual void portal_set_disabled_color(RID p_portal, const Color &p_color);
-
/* GI PROBE API */
struct GIProbe : public Instantiable {
@@ -1168,7 +1153,7 @@ public:
virtual void particles_set_draw_order(RID p_particles, VS::ParticlesDrawOrder p_order);
- virtual void particles_set_draw_passes(RID p_particles, int p_count);
+ virtual void particles_set_draw_passes(RID p_particles, int p_passes);
virtual void particles_set_draw_pass_mesh(RID p_particles, int p_pass, RID p_mesh);
virtual void particles_request_process(RID p_particles);
diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp
index c014caee8d..c308e9eddb 100644
--- a/drivers/gles3/shader_compiler_gles3.cpp
+++ b/drivers/gles3/shader_compiler_gles3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -608,6 +608,9 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
} else {
code = "return;";
}
+ } else if (cfnode->flow_op == SL::FLOW_OP_DISCARD) {
+
+ code = "discard;";
}
} break;
@@ -626,13 +629,11 @@ Error ShaderCompilerGLES3::compile(VS::ShaderMode p_mode, const String &p_code,
Error err = parser.compile(p_code, ShaderTypes::get_singleton()->get_functions(p_mode), ShaderTypes::get_singleton()->get_modes(p_mode), ShaderTypes::get_singleton()->get_types());
if (err != OK) {
-#if 1
Vector<String> shader = p_code.split("\n");
for (int i = 0; i < shader.size(); i++) {
print_line(itos(i) + " " + shader[i]);
}
-#endif
_err_print_error(NULL, p_path.utf8().get_data(), parser.get_error_line(), parser.get_error_text().utf8().get_data(), ERR_HANDLER_SHADER);
return err;
@@ -754,7 +755,6 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
actions[VS::SHADER_SPATIAL].renames["SSS_STRENGTH"] = "sss_strength";
actions[VS::SHADER_SPATIAL].renames["AO"] = "ao";
actions[VS::SHADER_SPATIAL].renames["EMISSION"] = "emission";
- actions[VS::SHADER_SPATIAL].renames["DISCARD"] = "_discard";
//actions[VS::SHADER_SPATIAL].renames["SCREEN_UV"]=ShaderLanguage::TYPE_VEC2;
actions[VS::SHADER_SPATIAL].renames["POINT_COORD"] = "gl_PointCoord";
actions[VS::SHADER_SPATIAL].renames["INSTANCE_CUSTOM"] = "instance_custom";
diff --git a/drivers/gles3/shader_compiler_gles3.h b/drivers/gles3/shader_compiler_gles3.h
index e79fdb3ba3..46bb6b1b9e 100644
--- a/drivers/gles3/shader_compiler_gles3.h
+++ b/drivers/gles3/shader_compiler_gles3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp
index 77e257dfc8..d4ef256a33 100644
--- a/drivers/gles3/shader_gles3.cpp
+++ b/drivers/gles3/shader_gles3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -102,11 +102,11 @@ void ShaderGLES3::bind_uniforms() {
uniforms_dirty = false;
}
-GLint ShaderGLES3::get_uniform_location(int p_idx) const {
+GLint ShaderGLES3::get_uniform_location(int p_index) const {
ERR_FAIL_COND_V(!version, -1);
- return version->uniform_location[p_idx];
+ return version->uniform_location[p_index];
}
bool ShaderGLES3::bind() {
@@ -273,9 +273,11 @@ ShaderGLES3::Version *ShaderGLES3::get_current_version() {
//vertex precision is high
strings.push_back("precision highp float;\n");
strings.push_back("precision highp int;\n");
+#ifndef GLES_OVER_GL
strings.push_back("precision highp sampler2D;\n");
strings.push_back("precision highp samplerCube;\n");
strings.push_back("precision highp sampler2DArray;\n");
+#endif
#if 0
if (cc) {
@@ -374,9 +376,11 @@ ShaderGLES3::Version *ShaderGLES3::get_current_version() {
//fragment precision is medium
strings.push_back("precision highp float;\n");
strings.push_back("precision highp int;\n");
+#ifndef GLES_OVER_GL
strings.push_back("precision highp sampler2D;\n");
strings.push_back("precision highp samplerCube;\n");
strings.push_back("precision highp sampler2DArray;\n");
+#endif
#if 0
if (cc) {
diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h
index 5a34010a98..3be0e86496 100644
--- a/drivers/gles3/shader_gles3.h
+++ b/drivers/gles3/shader_gles3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -306,7 +306,7 @@ public:
};
GLint get_uniform_location(const String &p_name) const;
- GLint get_uniform_location(int p_uniform) const;
+ GLint get_uniform_location(int p_index) const;
static _FORCE_INLINE_ ShaderGLES3 *get_active() { return active; };
bool bind();
@@ -318,9 +318,9 @@ public:
void clear_caches();
uint32_t create_custom_shader();
- void set_custom_shader_code(uint32_t p_id, const String &p_vertex, const String &p_vertex_globals, const String &p_fragment, const String &p_p_light, const String &p_fragment_globals, const String &p_uniforms, const Vector<StringName> &p_texture_uniforms, const Vector<CharString> &p_custom_defines);
- void set_custom_shader(uint32_t p_id);
- void free_custom_shader(uint32_t p_id);
+ void set_custom_shader_code(uint32_t p_code_id, const String &p_vertex, const String &p_vertex_globals, const String &p_fragment, const String &p_light, const String &p_fragment_globals, const String &p_uniforms, const Vector<StringName> &p_texture_uniforms, const Vector<CharString> &p_custom_defines);
+ void set_custom_shader(uint32_t p_code_id);
+ void free_custom_shader(uint32_t p_code_id);
void set_uniform_default(int p_idx, const Variant &p_value) {
diff --git a/drivers/gles3/shaders/SCsub b/drivers/gles3/shaders/SCsub
index 0c69c8cf74..f1811fa7b5 100644
--- a/drivers/gles3/shaders/SCsub
+++ b/drivers/gles3/shaders/SCsub
@@ -2,7 +2,7 @@
Import('env')
-if env['BUILDERS'].has_key('GLES3_GLSL'):
+if 'GLES3_GLSL' in env['BUILDERS']:
env.GLES3_GLSL('copy.glsl');
env.GLES3_GLSL('resolve.glsl');
env.GLES3_GLSL('canvas.glsl');
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index 3f0498746b..ef4925895c 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -1559,10 +1559,6 @@ void main() {
vec2 screen_uv = gl_FragCoord.xy*screen_pixel_size;
#endif
-#if defined(ENABLE_DISCARD)
- bool discard_=false;
-#endif
-
#if defined (ENABLE_SSS)
float sss_strength=0.0;
#endif
@@ -1603,13 +1599,6 @@ FRAGMENT_SHADER_CODE
#endif
-#if defined(ENABLE_DISCARD)
- if (discard_) {
- //easy to eliminate dead code
- discard;
- }
-#endif
-
#ifdef ENABLE_CLIP_ALPHA
if (albedo.a<0.99) {
//used for doublepass and shadowmapping
@@ -1694,6 +1683,7 @@ FRAGMENT_SHADER_CODE
if (gl_FragCoord.w > shadow_split_offsets.w) {
vec3 pssm_coord;
+ float pssm_fade=0.0;
#ifdef LIGHT_USE_PSSM_BLEND
float pssm_blend;
@@ -1751,6 +1741,7 @@ FRAGMENT_SHADER_CODE
} else {
highp vec4 splane=(shadow_matrix4 * vec4(vertex,1.0));
pssm_coord=splane.xyz/splane.w;
+ pssm_fade = smoothstep(shadow_split_offsets.z,shadow_split_offsets.w,gl_FragCoord.w);
#if defined(LIGHT_USE_PSSM_BLEND)
use_blend=false;
@@ -1782,6 +1773,7 @@ FRAGMENT_SHADER_CODE
} else {
highp vec4 splane=(shadow_matrix2 * vec4(vertex,1.0));
pssm_coord=splane.xyz/splane.w;
+ pssm_fade = smoothstep(shadow_split_offsets.x,shadow_split_offsets.y,gl_FragCoord.w);
#if defined(LIGHT_USE_PSSM_BLEND)
use_blend=false;
@@ -1818,7 +1810,7 @@ FRAGMENT_SHADER_CODE
}
#endif
- light_attenuation=mix(shadow_color_contact.rgb,vec3(1.0),shadow);
+ light_attenuation=mix(mix(shadow_color_contact.rgb,vec3(1.0),shadow),vec3(1.0),pssm_fade);
}
@@ -1966,6 +1958,13 @@ FRAGMENT_SHADER_CODE
#ifdef USE_MULTIPLE_RENDER_TARGETS
+
+#ifdef SHADELESS
+ diffuse_buffer=vec4(albedo.rgb,0.0);
+ specular_buffer=vec4(0.0);
+
+#else
+
#if defined(ENABLE_AO)
float ambient_scale=0.0; // AO is supplied by material
@@ -1981,6 +1980,7 @@ FRAGMENT_SHADER_CODE
diffuse_buffer=vec4(emission+diffuse_light+ambient_light,ambient_scale);
specular_buffer=vec4(specular_light,metallic);
+#endif //SHADELESS
normal_mr_buffer=vec4(normalize(normal)*0.5+0.5,roughness);
@@ -1988,6 +1988,7 @@ FRAGMENT_SHADER_CODE
sss_buffer = sss_strength;
#endif
+
#else //USE_MULTIPLE_RENDER_TARGETS
diff --git a/drivers/gles3/shaders/ssao.glsl b/drivers/gles3/shaders/ssao.glsl
index d8302bd46e..0e8fc89d6c 100644
--- a/drivers/gles3/shaders/ssao.glsl
+++ b/drivers/gles3/shaders/ssao.glsl
@@ -11,6 +11,7 @@ void main() {
[fragment]
+#define TWO_PI 6.283185307179586476925286766559
#define NUM_SAMPLES (15)
@@ -205,7 +206,7 @@ void main() {
// Hash function used in the HPG12 AlchemyAO paper
- float randomPatternRotationAngle = float((3 * ssC.x ^ ssC.y + ssC.x * ssC.y) * 10);
+ float randomPatternRotationAngle = mod(float((3 * ssC.x ^ ssC.y + ssC.x * ssC.y) * 10), TWO_PI);
// Reconstruct normals from positions. These will lead to 1-pixel black lines
// at depth discontinuities, however the blur will wipe those out so they are not visible
@@ -225,7 +226,7 @@ void main() {
#ifdef ENABLE_RADIUS2
//go again for radius2
- randomPatternRotationAngle = float((5 * ssC.x ^ ssC.y + ssC.x * ssC.y) * 11);
+ randomPatternRotationAngle = mod(float((5 * ssC.x ^ ssC.y + ssC.x * ssC.y) * 11), TWO_PI);
// Reconstruct normals from positions. These will lead to 1-pixel black lines
// at depth discontinuities, however the blur will wipe those out so they are not visible
diff --git a/drivers/gles3/shaders/ssao_blur.glsl b/drivers/gles3/shaders/ssao_blur.glsl
index ce4154f50c..c7c978dc37 100644
--- a/drivers/gles3/shaders/ssao_blur.glsl
+++ b/drivers/gles3/shaders/ssao_blur.glsl
@@ -56,6 +56,8 @@ uniform ivec2 axis;
uniform float camera_z_far;
uniform float camera_z_near;
+uniform ivec2 screen_size;
+
void main() {
ivec2 ssC = ivec2(gl_FragCoord.xy);
@@ -83,6 +85,7 @@ void main() {
float totalWeight = BASE;
sum *= totalWeight;
+ ivec2 clamp_limit = screen_size - ivec2(1);
for (int r = -R; r <= R; ++r) {
// We already handled the zero case above. This loop should be unrolled and the static branch optimized out,
@@ -90,8 +93,8 @@ void main() {
if (r != 0) {
ivec2 ppos = ssC + axis * (r * SCALE);
- float value = texelFetch(source_ssao, ppos, 0).r;
- float temp_depth = texelFetch(source_depth, ssC, 0).r;
+ float value = texelFetch(source_ssao, clamp(ppos,ivec2(0),clamp_limit), 0).r;
+ float temp_depth = texelFetch(source_depth, clamp(ssC,ivec2(0),clamp_limit), 0).r;
temp_depth = temp_depth * 2.0 - 1.0;
temp_depth = 2.0 * camera_z_near * camera_z_far / (camera_z_far + camera_z_near - temp_depth * (camera_z_far - camera_z_near));
diff --git a/drivers/gles3/shaders/subsurf_scattering.glsl b/drivers/gles3/shaders/subsurf_scattering.glsl
index 569be6c5fe..8873443727 100644
--- a/drivers/gles3/shaders/subsurf_scattering.glsl
+++ b/drivers/gles3/shaders/subsurf_scattering.glsl
@@ -17,36 +17,36 @@ void main() {
//#define QUALIFIER uniform // some guy on the interweb says it may be faster with this
#define QUALIFIER const
-
#ifdef USE_25_SAMPLES
const int kernel_size=25;
-QUALIFIER vec4 kernel[25] = vec4[] (
- vec4(0.530605, 0.613514, 0.739601, 0.0),
- vec4(0.000973794, 1.11862e-005, 9.43437e-007, -3.0),
- vec4(0.00333804, 7.85443e-005, 1.2945e-005, -2.52083),
- vec4(0.00500364, 0.00020094, 5.28848e-005, -2.08333),
- vec4(0.00700976, 0.00049366, 0.000151938, -1.6875),
- vec4(0.0094389, 0.00139119, 0.000416598, -1.33333),
- vec4(0.0128496, 0.00356329, 0.00132016, -1.02083),
- vec4(0.017924, 0.00711691, 0.00347194, -0.75),
- vec4(0.0263642, 0.0119715, 0.00684598, -0.520833),
- vec4(0.0410172, 0.0199899, 0.0118481, -0.333333),
- vec4(0.0493588, 0.0367726, 0.0219485, -0.1875),
- vec4(0.0402784, 0.0657244, 0.04631, -0.0833333),
- vec4(0.0211412, 0.0459286, 0.0378196, -0.0208333),
- vec4(0.0211412, 0.0459286, 0.0378196, 0.0208333),
- vec4(0.0402784, 0.0657244, 0.04631, 0.0833333),
- vec4(0.0493588, 0.0367726, 0.0219485, 0.1875),
- vec4(0.0410172, 0.0199899, 0.0118481, 0.333333),
- vec4(0.0263642, 0.0119715, 0.00684598, 0.520833),
- vec4(0.017924, 0.00711691, 0.00347194, 0.75),
- vec4(0.0128496, 0.00356329, 0.00132016, 1.02083),
- vec4(0.0094389, 0.00139119, 0.000416598, 1.33333),
- vec4(0.00700976, 0.00049366, 0.000151938, 1.6875),
- vec4(0.00500364, 0.00020094, 5.28848e-005, 2.08333),
- vec4(0.00333804, 7.85443e-005, 1.2945e-005, 2.52083),
- vec4(0.000973794, 1.11862e-005, 9.43437e-007, 3.0)
+
+QUALIFIER vec2 kernel[25] = vec2[] (
+vec2(0.099654,0.0),
+vec2(0.001133,-3.0),
+vec2(0.002316,-2.52083),
+vec2(0.00445,-2.08333),
+vec2(0.008033,-1.6875),
+vec2(0.013627,-1.33333),
+vec2(0.021724,-1.02083),
+vec2(0.032542,-0.75),
+vec2(0.04581,-0.520833),
+vec2(0.0606,-0.333333),
+vec2(0.075333,-0.1875),
+vec2(0.088001,-0.0833333),
+vec2(0.096603,-0.0208333),
+vec2(0.096603,0.0208333),
+vec2(0.088001,0.0833333),
+vec2(0.075333,0.1875),
+vec2(0.0606,0.333333),
+vec2(0.04581,0.520833),
+vec2(0.032542,0.75),
+vec2(0.021724,1.02083),
+vec2(0.013627,1.33333),
+vec2(0.008033,1.6875),
+vec2(0.00445,2.08333),
+vec2(0.002316,2.52),
+vec2(0.001133,3.0)
);
#endif //USE_25_SAMPLES
@@ -55,24 +55,24 @@ QUALIFIER vec4 kernel[25] = vec4[] (
const int kernel_size=17;
-QUALIFIER vec4 kernel[17] = vec4[](
- vec4(0.536343, 0.624624, 0.748867, 0.0),
- vec4(0.00317394, 0.000134823, 3.77269e-005, -2.0),
- vec4(0.0100386, 0.000914679, 0.000275702, -1.53125),
- vec4(0.0144609, 0.00317269, 0.00106399, -1.125),
- vec4(0.0216301, 0.00794618, 0.00376991, -0.78125),
- vec4(0.0347317, 0.0151085, 0.00871983, -0.5),
- vec4(0.0571056, 0.0287432, 0.0172844, -0.28125),
- vec4(0.0582416, 0.0659959, 0.0411329, -0.125),
- vec4(0.0324462, 0.0656718, 0.0532821, -0.03125),
- vec4(0.0324462, 0.0656718, 0.0532821, 0.03125),
- vec4(0.0582416, 0.0659959, 0.0411329, 0.125),
- vec4(0.0571056, 0.0287432, 0.0172844, 0.28125),
- vec4(0.0347317, 0.0151085, 0.00871983, 0.5),
- vec4(0.0216301, 0.00794618, 0.00376991, 0.78125),
- vec4(0.0144609, 0.00317269, 0.00106399, 1.125),
- vec4(0.0100386, 0.000914679, 0.000275702, 1.53125),
- vec4(0.00317394, 0.000134823, 3.77269e-005, 2.0)
+QUALIFIER vec2 kernel[17] = vec2[](
+vec2(0.197417,0.0),
+vec2(0.000078,-2.0),
+vec2(0.000489,-1.53125),
+vec2(0.002403,-1.125),
+vec2(0.009245,-0.78125),
+vec2(0.027835,-0.5),
+vec2(0.065592,-0.28125),
+vec2(0.12098,-0.125),
+vec2(0.17467,-0.03125),
+vec2(0.17467,0.03125),
+vec2(0.12098,0.125),
+vec2(0.065592,0.28125),
+vec2(0.027835,0.5),
+vec2(0.009245,0.78125),
+vec2(0.002403,1.125),
+vec2(0.000489,1.53125),
+vec2(0.000078,2.0)
);
#endif //USE_17_SAMPLES
@@ -82,27 +82,27 @@ QUALIFIER vec4 kernel[17] = vec4[](
const int kernel_size=11;
-QUALIFIER vec4 kernel[11] = vec4[](
- vec4(0.560479, 0.669086, 0.784728, 0.0),
- vec4(0.00471691, 0.000184771, 5.07566e-005, -2.0),
- vec4(0.0192831, 0.00282018, 0.00084214, -1.28),
- vec4(0.03639, 0.0130999, 0.00643685, -0.72),
- vec4(0.0821904, 0.0358608, 0.0209261, -0.32),
- vec4(0.0771802, 0.113491, 0.0793803, -0.08),
- vec4(0.0771802, 0.113491, 0.0793803, 0.08),
- vec4(0.0821904, 0.0358608, 0.0209261, 0.32),
- vec4(0.03639, 0.0130999, 0.00643685, 0.72),
- vec4(0.0192831, 0.00282018, 0.00084214, 1.28),
- vec4(0.00471691, 0.000184771, 5.07565e-005, 2.0)
+QUALIFIER vec2 kernel[kernel_size] = vec2[](
+vec2(0.198596,0.0),
+vec2(0.0093,-2.0),
+vec2(0.028002,-1.28),
+vec2(0.065984,-0.72),
+vec2(0.121703,-0.32),
+vec2(0.175713,-0.08),
+vec2(0.175713,0.08),
+vec2(0.121703,0.32),
+vec2(0.065984,0.72),
+vec2(0.028002,1.28),
+vec2(0.0093,2.0)
);
#endif //USE_11_SAMPLES
uniform float max_radius;
-uniform float fovy;
uniform float camera_z_far;
uniform float camera_z_near;
+uniform float unit_size;
uniform vec2 dir;
in vec2 uv_interp;
@@ -120,19 +120,17 @@ void main() {
// Fetch color of current pixel:
vec4 base_color = texture(source_diffuse, uv_interp);
+
if (strength>0.0) {
// Fetch linear depth of current pixel:
float depth = texture(source_depth, uv_interp).r * 2.0 - 1.0;
depth = 2.0 * camera_z_near * camera_z_far / (camera_z_far + camera_z_near - depth * (camera_z_far - camera_z_near));
- depth=-depth;
- // Calculate the radius scale (1.0 for a unit plane sitting on the
- // projection window):
- float distance = 1.0 / tan(0.5 * fovy);
- float scale = distance / -depth; //remember depth is negative by default in OpenGL
+
+ float scale = unit_size / depth; //remember depth is negative by default in OpenGL
// Calculate the final step to fetch the surrounding pixels:
vec2 step = max_radius * scale * dir;
@@ -141,19 +139,21 @@ void main() {
// Accumulate the center sample:
vec3 color_accum = base_color.rgb;
- color_accum *= kernel[0].rgb;
+ color_accum *= kernel[0].x;
+#ifdef ENABLE_STRENGTH_WEIGHTING
+ float color_weight = kernel[0].x;
+#endif
// Accumulate the other samples:
for (int i = 1; i < kernel_size; i++) {
// Fetch color and depth for current sample:
- vec2 offset = uv_interp + kernel[i].a * step;
+ vec2 offset = uv_interp + kernel[i].y * step;
vec3 color = texture(source_diffuse, offset).rgb;
#ifdef ENABLE_FOLLOW_SURFACE
// If the difference in depth is huge, we lerp color back to "colorM":
float depth_cmp = texture(source_depth, offset).r *2.0 - 1.0;
depth_cmp = 2.0 * camera_z_near * camera_z_far / (camera_z_far + camera_z_near - depth_cmp * (camera_z_far - camera_z_near));
- depth_cmp=-depth_cmp;
float s = clamp(300.0f * distance *
max_radius * abs(depth - depth_cmp),0.0,1.0);
@@ -161,9 +161,20 @@ void main() {
#endif
// Accumulate:
- color_accum += kernel[i].rgb * color;
+ color*=kernel[i].x;
+
+#ifdef ENABLE_STRENGTH_WEIGHTING
+ float color_s = texture(source_sss, offset).r;
+ color_weight+=color_s * kernel[i].x;
+ color*=color_s;
+#endif
+ color_accum += color;
+
}
+#ifdef ENABLE_STRENGTH_WEIGHTING
+ color_accum/=color_weight;
+#endif
frag_color = vec4(color_accum,base_color.a); //keep alpha (used for SSAO)
} else {
frag_color = base_color;
diff --git a/drivers/gles3/shaders/tonemap.glsl b/drivers/gles3/shaders/tonemap.glsl
index 988e31d1ea..73dec4f90c 100644
--- a/drivers/gles3/shaders/tonemap.glsl
+++ b/drivers/gles3/shaders/tonemap.glsl
@@ -170,7 +170,7 @@ vec3 tonemap_aces(vec3 color) {
return color = clamp((color*(a*color+b))/(color*(c*color+d)+e),vec3(0.0),vec3(1.0));
}
-vec3 tonemap_reindhart(vec3 color,vec3 white) {
+vec3 tonemap_reindhart(vec3 color,float white) {
return ( color * ( 1.0 + ( color / ( white) ) ) ) / ( 1.0 + color );
}
diff --git a/drivers/png/image_loader_png.cpp b/drivers/png/image_loader_png.cpp
index 33d271248c..46c9442ffc 100644
--- a/drivers/png/image_loader_png.cpp
+++ b/drivers/png/image_loader_png.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -201,7 +201,7 @@ Error ImageLoaderPNG::_load_image(void *rf_up, png_rw_ptr p_func, Ref<Image> p_i
return OK;
}
-Error ImageLoaderPNG::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear) {
+Error ImageLoaderPNG::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
Error err = _load_image(f, _read_png_data, p_image);
f->close();
diff --git a/drivers/png/image_loader_png.h b/drivers/png/image_loader_png.h
index f0a525a9eb..fe14108194 100644
--- a/drivers/png/image_loader_png.h
+++ b/drivers/png/image_loader_png.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,7 +43,7 @@ class ImageLoaderPNG : public ImageFormatLoader {
public:
static Error _load_image(void *rf_up, png_rw_ptr p_func, Ref<Image> p_image);
- virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear);
+ virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
ImageLoaderPNG();
};
diff --git a/drivers/png/resource_saver_png.cpp b/drivers/png/resource_saver_png.cpp
index 4f1f318aee..98a3f21245 100644
--- a/drivers/png/resource_saver_png.cpp
+++ b/drivers/png/resource_saver_png.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -187,7 +187,7 @@ bool ResourceSaverPNG::recognize(const RES &p_resource) const {
}
void ResourceSaverPNG::get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const {
- if (p_resource->cast_to<Texture>()) {
+ if (Object::cast_to<Texture>(*p_resource)) {
p_extensions->push_back("png");
}
}
diff --git a/drivers/png/resource_saver_png.h b/drivers/png/resource_saver_png.h
index 31ec35c192..a9ff6db86a 100644
--- a/drivers/png/resource_saver_png.h
+++ b/drivers/png/resource_saver_png.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
index fb04ef0088..356b1ad958 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,7 +54,7 @@ Error AudioDriverPulseAudio::init() {
spec.rate = mix_rate;
int latency = GLOBAL_DEF("audio/output_latency", 25);
- buffer_size = nearest_power_of_2(latency * mix_rate / 1000);
+ buffer_size = closest_power_of_2(latency * mix_rate / 1000);
pa_buffer_attr attr;
// set to appropriate buffer size from global settings
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.h b/drivers/pulseaudio/audio_driver_pulseaudio.h
index 3ce031e616..2f56726617 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.h
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp
index ca2f03c75a..ffe7d77a4a 100644
--- a/drivers/register_driver_types.cpp
+++ b/drivers/register_driver_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/register_driver_types.h b/drivers/register_driver_types.h
index 63c50f6720..f02db428ce 100644
--- a/drivers/register_driver_types.h
+++ b/drivers/register_driver_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/rtaudio/audio_driver_rtaudio.cpp b/drivers/rtaudio/audio_driver_rtaudio.cpp
index 3de25c32ad..7de3ff192e 100644
--- a/drivers/rtaudio/audio_driver_rtaudio.cpp
+++ b/drivers/rtaudio/audio_driver_rtaudio.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -104,21 +104,14 @@ Error AudioDriverRtAudio::init() {
RtAudio::StreamOptions options;
// set the desired numberOfBuffers
- unsigned int target_number_of_buffers = 4;
- options.numberOfBuffers = target_number_of_buffers;
-
- //options.
- //RtAudioStreamFlags flags; /*!< A bit-mask of stream flags (RTAUDIO_NONINTERLEAVED, RTAUDIO_MINIMIZE_LATENCY, RTAUDIO_HOG_DEVICE). *///
- //unsigned int numberOfBuffers; /*!< Number of stream buffers. */
- //std::string streamName; /*!< A stream name (currently used only in Jack). */
- //int priority; /*!< Scheduling priority of callback thread (only used with flag RTAUDIO_SCHEDULE_REALTIME). */
+ options.numberOfBuffers = 4;
parameters.firstChannel = 0;
mix_rate = GLOBAL_DEF("audio/mix_rate", 44100);
int latency = GLOBAL_DEF("audio/output_latency", 25);
- // calculate desired buffer_size, taking the desired numberOfBuffers into account (latency depends on numberOfBuffers*buffer_size)
- unsigned int buffer_size = nearest_power_of_2(latency * mix_rate / 1000 / target_number_of_buffers);
+ // calculate desired buffer_size
+ unsigned int buffer_size = closest_power_of_2(latency * mix_rate / 1000);
if (OS::get_singleton()->is_stdout_verbose()) {
print_line("audio buffer size: " + itos(buffer_size));
@@ -126,56 +119,28 @@ Error AudioDriverRtAudio::init() {
short int tries = 2;
- while (true) {
- while (true) {
- switch (speaker_mode) {
- case SPEAKER_MODE_STEREO: parameters.nChannels = 2; break;
- case SPEAKER_SURROUND_51: parameters.nChannels = 6; break;
- case SPEAKER_SURROUND_71: parameters.nChannels = 8; break;
- };
-
- try {
- dac->openStream(&parameters, NULL, RTAUDIO_SINT32, mix_rate, &buffer_size, &callback, this, &options);
- active = true;
-
- break;
- } catch (RtAudioError &e) {
- // try with less channels
- ERR_PRINT("Unable to open audio, retrying with fewer channels..");
-
- switch (speaker_mode) {
- case SPEAKER_MODE_STEREO: speaker_mode = SPEAKER_MODE_STEREO; break;
- case SPEAKER_SURROUND_51: speaker_mode = SPEAKER_SURROUND_51; break;
- case SPEAKER_SURROUND_71: speaker_mode = SPEAKER_SURROUND_71; break;
- };
- }
- }
+ while (tries >= 0) {
+ switch (speaker_mode) {
+ case SPEAKER_MODE_STEREO: parameters.nChannels = 2; break;
+ case SPEAKER_SURROUND_51: parameters.nChannels = 6; break;
+ case SPEAKER_SURROUND_71: parameters.nChannels = 8; break;
+ };
- // compare actual numberOfBuffers with the desired one. If not equal, close and reopen the stream with adjusted buffer size, so the desired output_latency is still correct
- if (target_number_of_buffers != options.numberOfBuffers) {
- if (tries <= 0) {
- ERR_EXPLAIN("RtAudio: Unable to set correct number of buffers.");
- ERR_FAIL_V(ERR_UNAVAILABLE);
- break;
- }
+ try {
+ dac->openStream(&parameters, NULL, RTAUDIO_SINT32, mix_rate, &buffer_size, &callback, this, &options);
+ active = true;
- try {
- dac->closeStream();
- active = false;
- } catch (RtAudioError &e) {
- ERR_PRINT(e.what());
- ERR_FAIL_V(ERR_UNAVAILABLE);
- break;
+ break;
+ } catch (RtAudioError &e) {
+ // try with less channels
+ ERR_PRINT("Unable to open audio, retrying with fewer channels..");
+
+ switch (speaker_mode) {
+ case SPEAKER_SURROUND_51: speaker_mode = SPEAKER_MODE_STEREO; break;
+ case SPEAKER_SURROUND_71: speaker_mode = SPEAKER_SURROUND_51; break;
}
- if (OS::get_singleton()->is_stdout_verbose())
- print_line("RtAudio: Desired number of buffers (" + itos(target_number_of_buffers) + ") not available. Using " + itos(options.numberOfBuffers) + " instead. Reopening stream with adjusted buffer_size.");
- // new buffer size dependent on the ratio between set and actual numberOfBuffers
- buffer_size = buffer_size / (options.numberOfBuffers / target_number_of_buffers);
- target_number_of_buffers = options.numberOfBuffers;
tries--;
- } else {
- break;
}
}
@@ -231,6 +196,7 @@ void AudioDriverRtAudio::finish() {
AudioDriverRtAudio::AudioDriverRtAudio() {
+ active = false;
mutex = NULL;
dac = NULL;
mix_rate = 44100;
diff --git a/drivers/rtaudio/audio_driver_rtaudio.h b/drivers/rtaudio/audio_driver_rtaudio.h
index c2a18b2731..858a51eb73 100644
--- a/drivers/rtaudio/audio_driver_rtaudio.h
+++ b/drivers/rtaudio/audio_driver_rtaudio.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/SCsub b/drivers/unix/SCsub
index 96efc91b7a..5ced44dfda 100644
--- a/drivers/unix/SCsub
+++ b/drivers/unix/SCsub
@@ -8,7 +8,7 @@ g_set_p += 'String OS_Unix::get_global_settings_path() const {\n'
g_set_p += '\treturn "' + env["unix_global_settings_path"] + '";\n'
g_set_p += '}\n'
g_set_p += '#endif'
-f = open("os_unix_global_settings_path.gen.cpp", "wb")
+f = open("os_unix_global_settings_path.gen.cpp", "w")
f.write(g_set_p)
f.close()
diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp
index cf54f3fea0..ddc3b2ed33 100644
--- a/drivers/unix/dir_access_unix.cpp
+++ b/drivers/unix/dir_access_unix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -194,21 +194,9 @@ Error DirAccessUnix::make_dir(String p_dir) {
p_dir = fix_path(p_dir);
-#if 1
-
- bool success = (mkdir(p_dir.utf8().get_data(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == 0);
- int err = errno;
-
-#else
- char real_current_dir_name[2048];
- getcwd(real_current_dir_name, 2048);
- chdir(current_dir.utf8().get_data()); //ascii since this may be unicode or wathever the host os wants
-
bool success = (mkdir(p_dir.utf8().get_data(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == 0);
int err = errno;
- chdir(real_current_dir_name);
-#endif
if (success) {
return OK;
};
diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h
index 5a35cdf2e9..ea0df2fa3f 100644
--- a/drivers/unix/dir_access_unix.h
+++ b/drivers/unix/dir_access_unix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,8 +75,8 @@ public:
virtual uint64_t get_modified_time(String p_file);
- virtual Error rename(String p_from, String p_to);
- virtual Error remove(String p_name);
+ virtual Error rename(String p_path, String p_new_path);
+ virtual Error remove(String p_path);
virtual size_t get_space_left();
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp
index e2f04aec63..d5a66d9a1c 100644
--- a/drivers/unix/file_access_unix.cpp
+++ b/drivers/unix/file_access_unix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/file_access_unix.h b/drivers/unix/file_access_unix.h
index 3c4b9c0c25..6e5110431f 100644
--- a/drivers/unix/file_access_unix.h
+++ b/drivers/unix/file_access_unix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp
index f55b75c1d9..77c942c673 100644
--- a/drivers/unix/ip_unix.cpp
+++ b/drivers/unix/ip_unix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/ip_unix.h b/drivers/unix/ip_unix.h
index 952d3a8771..1f3b885635 100644
--- a/drivers/unix/ip_unix.h
+++ b/drivers/unix/ip_unix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/mutex_posix.cpp b/drivers/unix/mutex_posix.cpp
index 94cfcf78e3..c8fe9e0749 100644
--- a/drivers/unix/mutex_posix.cpp
+++ b/drivers/unix/mutex_posix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/mutex_posix.h b/drivers/unix/mutex_posix.h
index b3c0cbe051..20d546c72a 100644
--- a/drivers/unix/mutex_posix.h
+++ b/drivers/unix/mutex_posix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp
index 0f4e8f757c..75c8a153f6 100644
--- a/drivers/unix/os_unix.cpp
+++ b/drivers/unix/os_unix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -315,7 +315,9 @@ OS::TimeZoneInfo OS_Unix::get_time_zone_info() const {
void OS_Unix::delay_usec(uint32_t p_usec) const {
- usleep(p_usec);
+ struct timespec rem = { p_usec / 1000000, (p_usec % 1000000) * 1000 };
+ while (nanosleep(&rem, &rem) == EINTR) {
+ }
}
uint64_t OS_Unix::get_ticks_usec() const {
diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h
index 6cd0016bb0..19e79728fb 100644
--- a/drivers/unix/os_unix.h
+++ b/drivers/unix/os_unix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -69,7 +69,7 @@ public:
virtual void print_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type = ERR_ERROR);
virtual void print(const char *p_format, ...);
- virtual void vprint(const char *p_format, va_list p_list, bool p_stderr = false);
+ virtual void vprint(const char *p_format, va_list p_list, bool p_stder = false);
virtual void alert(const String &p_alert, const String &p_title = "ALERT!");
virtual String get_stdin_string(bool p_block);
diff --git a/drivers/unix/packet_peer_udp_posix.cpp b/drivers/unix/packet_peer_udp_posix.cpp
index 74ceb3946a..b743990b92 100644
--- a/drivers/unix/packet_peer_udp_posix.cpp
+++ b/drivers/unix/packet_peer_udp_posix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -127,7 +127,7 @@ int PacketPeerUDPPosix::get_max_packet_size() const {
return 512; // uhm maybe not
}
-Error PacketPeerUDPPosix::listen(int p_port, IP_Address p_bind_address, int p_recv_buffer_size) {
+Error PacketPeerUDPPosix::listen(int p_port, const IP_Address &p_bind_address, int p_recv_buffer_size) {
ERR_FAIL_COND_V(sockfd != -1, ERR_ALREADY_IN_USE);
ERR_FAIL_COND_V(!p_bind_address.is_valid() && !p_bind_address.is_wildcard(), ERR_INVALID_PARAMETER);
@@ -172,13 +172,13 @@ Error PacketPeerUDPPosix::wait() {
return _poll(true);
}
-Error PacketPeerUDPPosix::_poll(bool p_wait) {
+Error PacketPeerUDPPosix::_poll(bool p_block) {
if (sockfd == -1) {
return FAILED;
}
- _set_sock_blocking(p_wait);
+ _set_sock_blocking(p_block);
struct sockaddr_storage from = { 0 };
socklen_t len = sizeof(struct sockaddr_storage);
@@ -216,7 +216,7 @@ Error PacketPeerUDPPosix::_poll(bool p_wait) {
len = sizeof(struct sockaddr_storage);
++queue_count;
- if (p_wait)
+ if (p_block)
break;
};
diff --git a/drivers/unix/packet_peer_udp_posix.h b/drivers/unix/packet_peer_udp_posix.h
index a52b8b8e95..e580d336b2 100644
--- a/drivers/unix/packet_peer_udp_posix.h
+++ b/drivers/unix/packet_peer_udp_posix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -67,7 +67,7 @@ public:
virtual int get_max_packet_size() const;
- virtual Error listen(int p_port, IP_Address p_bind_address = IP_Address("*"), int p_recv_buffer_size = 65536);
+ virtual Error listen(int p_port, const IP_Address &p_bind_address = IP_Address("*"), int p_recv_buffer_size = 65536);
virtual void close();
virtual Error wait();
virtual bool is_listening() const;
diff --git a/drivers/unix/rw_lock_posix.cpp b/drivers/unix/rw_lock_posix.cpp
index 25bc8f0bd3..ab2d6495bd 100644
--- a/drivers/unix/rw_lock_posix.cpp
+++ b/drivers/unix/rw_lock_posix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/rw_lock_posix.h b/drivers/unix/rw_lock_posix.h
index f8199aeb54..40b41ce171 100644
--- a/drivers/unix/rw_lock_posix.h
+++ b/drivers/unix/rw_lock_posix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/semaphore_posix.cpp b/drivers/unix/semaphore_posix.cpp
index 8b553194db..093c6b663a 100644
--- a/drivers/unix/semaphore_posix.cpp
+++ b/drivers/unix/semaphore_posix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/semaphore_posix.h b/drivers/unix/semaphore_posix.h
index c7a7f9bd87..e33de78545 100644
--- a/drivers/unix/semaphore_posix.h
+++ b/drivers/unix/semaphore_posix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/socket_helpers.h b/drivers/unix/socket_helpers.h
index 5fa727a9b9..3fc0144294 100644
--- a/drivers/unix/socket_helpers.h
+++ b/drivers/unix/socket_helpers.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/stream_peer_tcp_posix.cpp b/drivers/unix/stream_peer_tcp_posix.cpp
index 30843e4947..3bc2397e6f 100644
--- a/drivers/unix/stream_peer_tcp_posix.cpp
+++ b/drivers/unix/stream_peer_tcp_posix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/stream_peer_tcp_posix.h b/drivers/unix/stream_peer_tcp_posix.h
index 3f28f82b50..4c3504714c 100644
--- a/drivers/unix/stream_peer_tcp_posix.h
+++ b/drivers/unix/stream_peer_tcp_posix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/unix/tcp_server_posix.cpp b/drivers/unix/tcp_server_posix.cpp
index 865e9aa1d6..f3f9ab82f1 100644
--- a/drivers/unix/tcp_server_posix.cpp
+++ b/drivers/unix/tcp_server_posix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -69,7 +69,7 @@ void TCPServerPosix::make_default() {
TCP_Server::_create = TCPServerPosix::_create;
};
-Error TCPServerPosix::listen(uint16_t p_port, const IP_Address p_bind_address) {
+Error TCPServerPosix::listen(uint16_t p_port, const IP_Address &p_bind_address) {
ERR_FAIL_COND_V(listen_sockfd != -1, ERR_ALREADY_IN_USE);
ERR_FAIL_COND_V(!p_bind_address.is_valid() && !p_bind_address.is_wildcard(), ERR_INVALID_PARAMETER);
diff --git a/drivers/unix/tcp_server_posix.h b/drivers/unix/tcp_server_posix.h
index 659b389fe2..a10bafcafe 100644
--- a/drivers/unix/tcp_server_posix.h
+++ b/drivers/unix/tcp_server_posix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -41,7 +41,7 @@ class TCPServerPosix : public TCP_Server {
static TCP_Server *_create();
public:
- virtual Error listen(uint16_t p_port, IP_Address p_bind_address = IP_Address("*"));
+ virtual Error listen(uint16_t p_port, const IP_Address &p_bind_address = IP_Address("*"));
virtual bool is_connection_available() const;
virtual Ref<StreamPeerTCP> take_connection();
diff --git a/drivers/unix/thread_posix.cpp b/drivers/unix/thread_posix.cpp
index 3b895ff9c1..5908246929 100644
--- a/drivers/unix/thread_posix.cpp
+++ b/drivers/unix/thread_posix.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -36,8 +36,18 @@
#include <pthread_np.h>
#endif
+#include "core/safe_refcount.h"
#include "os/memory.h"
+static pthread_key_t _create_thread_id_key() {
+ pthread_key_t key;
+ pthread_key_create(&key, NULL);
+ return key;
+}
+
+pthread_key_t ThreadPosix::thread_id_key = _create_thread_id_key();
+Thread::ID ThreadPosix::next_thread_id = 0;
+
Thread::ID ThreadPosix::get_id() const {
return id;
@@ -51,7 +61,8 @@ Thread *ThreadPosix::create_thread_posix() {
void *ThreadPosix::thread_callback(void *userdata) {
ThreadPosix *t = reinterpret_cast<ThreadPosix *>(userdata);
- t->id = (ID)pthread_self();
+ t->id = atomic_increment(&next_thread_id);
+ pthread_setspecific(thread_id_key, (void *)t->id);
ScriptServer::thread_enter(); //scripts may need to attach a stack
@@ -77,7 +88,7 @@ Thread *ThreadPosix::create_func_posix(ThreadCreateCallback p_callback, void *p_
}
Thread::ID ThreadPosix::get_thread_id_func_posix() {
- return (ID)pthread_self();
+ return (ID)pthread_getspecific(thread_id_key);
}
void ThreadPosix::wait_to_finish_func_posix(Thread *p_thread) {
diff --git a/drivers/unix/thread_posix.h b/drivers/unix/thread_posix.h
index 21e1d290a9..d6a41ed119 100644
--- a/drivers/unix/thread_posix.h
+++ b/drivers/unix/thread_posix.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -42,6 +42,9 @@
class ThreadPosix : public Thread {
+ static pthread_key_t thread_id_key;
+ static ID next_thread_id;
+
pthread_t pthread;
pthread_attr_t pthread_attr;
ThreadCreateCallback callback;
diff --git a/drivers/wasapi/SCsub b/drivers/wasapi/SCsub
new file mode 100644
index 0000000000..233593b0f9
--- /dev/null
+++ b/drivers/wasapi/SCsub
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+
+Import('env')
+
+# Driver source files
+env.add_source_files(env.drivers_sources, "*.cpp")
+
+Export('env')
diff --git a/drivers/wasapi/audio_driver_wasapi.cpp b/drivers/wasapi/audio_driver_wasapi.cpp
new file mode 100644
index 0000000000..6e01b5f524
--- /dev/null
+++ b/drivers/wasapi/audio_driver_wasapi.cpp
@@ -0,0 +1,351 @@
+/*************************************************************************/
+/* audio_driver_wasapi.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 WASAPI_ENABLED
+
+#include "audio_driver_wasapi.h"
+
+#include "os/os.h"
+#include "project_settings.h"
+
+const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
+const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
+const IID IID_IAudioClient = __uuidof(IAudioClient);
+const IID IID_IAudioRenderClient = __uuidof(IAudioRenderClient);
+
+Error AudioDriverWASAPI::init_device() {
+
+ WAVEFORMATEX *pwfex;
+ IMMDeviceEnumerator *enumerator = NULL;
+ IMMDevice *device = NULL;
+
+ CoInitialize(NULL);
+
+ HRESULT hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void **)&enumerator);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ hr = enumerator->GetDefaultAudioEndpoint(eRender, eConsole, &device);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ hr = device->Activate(IID_IAudioClient, CLSCTX_ALL, NULL, (void **)&audio_client);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ hr = audio_client->GetMixFormat(&pwfex);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ // Since we're using WASAPI Shared Mode we can't control any of these, we just tag along
+ channels = pwfex->nChannels;
+ mix_rate = pwfex->nSamplesPerSec;
+ format_tag = pwfex->wFormatTag;
+ bits_per_sample = pwfex->wBitsPerSample;
+
+ if (format_tag == WAVE_FORMAT_EXTENSIBLE) {
+ WAVEFORMATEXTENSIBLE *wfex = (WAVEFORMATEXTENSIBLE *)pwfex;
+
+ if (wfex->SubFormat == KSDATAFORMAT_SUBTYPE_PCM) {
+ format_tag = WAVE_FORMAT_PCM;
+ } else if (wfex->SubFormat == KSDATAFORMAT_SUBTYPE_IEEE_FLOAT) {
+ format_tag = WAVE_FORMAT_IEEE_FLOAT;
+ } else {
+ ERR_PRINT("WASAPI: Format not supported");
+ ERR_FAIL_V(ERR_CANT_OPEN);
+ }
+ } else {
+ if (format_tag != WAVE_FORMAT_PCM && format_tag != WAVE_FORMAT_IEEE_FLOAT) {
+ ERR_PRINT("WASAPI: Format not supported");
+ ERR_FAIL_V(ERR_CANT_OPEN);
+ }
+ }
+
+ int latency = GLOBAL_DEF("audio/output_latency", 25);
+ buffer_size = closest_power_of_2(latency * mix_rate / 1000);
+
+ if (OS::get_singleton()->is_stdout_verbose()) {
+ print_line("audio buffer size: " + itos(buffer_size));
+ }
+
+ hr = audio_client->Initialize(AUDCLNT_SHAREMODE_SHARED, AUDCLNT_STREAMFLAGS_EVENTCALLBACK, 0, 0, pwfex, NULL);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ event = CreateEvent(NULL, FALSE, FALSE, NULL);
+ ERR_FAIL_COND_V(event == NULL, ERR_CANT_OPEN);
+
+ hr = audio_client->SetEventHandle(event);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ hr = audio_client->GetService(IID_IAudioRenderClient, (void **)&render_client);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ hr = audio_client->GetBufferSize(&max_frames);
+ ERR_FAIL_COND_V(hr != S_OK, ERR_CANT_OPEN);
+
+ samples_in.resize(buffer_size);
+ buffer_frames = buffer_size / channels;
+
+ return OK;
+}
+
+Error AudioDriverWASAPI::finish_device() {
+
+ if (audio_client) {
+ if (active) {
+ audio_client->Stop();
+ active = false;
+ }
+ }
+
+ if (render_client) {
+ render_client->Release();
+ render_client = NULL;
+ }
+
+ if (audio_client) {
+ audio_client->Release();
+ audio_client = NULL;
+ }
+
+ return OK;
+}
+
+Error AudioDriverWASAPI::init() {
+
+ Error err = init_device();
+ ERR_FAIL_COND_V(err != OK, err);
+
+ active = false;
+ exit_thread = false;
+ thread_exited = false;
+
+ mutex = Mutex::create(true);
+ thread = Thread::create(thread_func, this);
+
+ return OK;
+}
+
+Error AudioDriverWASAPI::reopen() {
+ Error err = finish_device();
+ if (err != OK) {
+ ERR_PRINT("WASAPI: finish_device error");
+ } else {
+ err = init_device();
+ if (err != OK) {
+ ERR_PRINT("WASAPI: init_device error");
+ } else {
+ start();
+ }
+ }
+
+ return err;
+}
+
+int AudioDriverWASAPI::get_mix_rate() const {
+
+ return mix_rate;
+}
+
+AudioDriver::SpeakerMode AudioDriverWASAPI::get_speaker_mode() const {
+
+ return SPEAKER_MODE_STEREO;
+}
+
+void AudioDriverWASAPI::thread_func(void *p_udata) {
+
+ AudioDriverWASAPI *ad = (AudioDriverWASAPI *)p_udata;
+
+ while (!ad->exit_thread) {
+ if (ad->active) {
+ ad->lock();
+
+ ad->audio_server_process(ad->buffer_frames, ad->samples_in.ptr());
+
+ ad->unlock();
+ } else {
+ for (unsigned int i = 0; i < ad->buffer_size; i++) {
+ ad->samples_in[i] = 0;
+ }
+ }
+
+ unsigned int left_frames = ad->buffer_frames;
+ unsigned int buffer_idx = 0;
+ while (left_frames > 0) {
+ WaitForSingleObject(ad->event, 1000);
+
+ UINT32 cur_frames;
+ HRESULT hr = ad->audio_client->GetCurrentPadding(&cur_frames);
+ if (hr == S_OK) {
+ // Check how much frames are available on the WASAPI buffer
+ UINT32 avail_frames = ad->max_frames - cur_frames;
+ UINT32 write_frames = avail_frames > left_frames ? left_frames : avail_frames;
+
+ BYTE *buffer = NULL;
+ hr = ad->render_client->GetBuffer(write_frames, &buffer);
+ if (hr == S_OK) {
+ // We're using WASAPI Shared Mode so we must convert the buffer
+
+ if (ad->format_tag == WAVE_FORMAT_PCM) {
+ switch (ad->bits_per_sample) {
+ case 8:
+ for (unsigned int i = 0; i < write_frames * ad->channels; i++) {
+ ((int8_t *)buffer)[i] = ad->samples_in[buffer_idx++] >> 24;
+ }
+ break;
+
+ case 16:
+ for (unsigned int i = 0; i < write_frames * ad->channels; i++) {
+ ((int16_t *)buffer)[i] = ad->samples_in[buffer_idx++] >> 16;
+ }
+ break;
+
+ case 24:
+ for (unsigned int i = 0; i < write_frames * ad->channels; i++) {
+ int32_t sample = ad->samples_in[buffer_idx++];
+ ((int8_t *)buffer)[i * 3 + 2] = sample >> 24;
+ ((int8_t *)buffer)[i * 3 + 1] = sample >> 16;
+ ((int8_t *)buffer)[i * 3 + 0] = sample >> 8;
+ }
+ break;
+
+ case 32:
+ for (unsigned int i = 0; i < write_frames * ad->channels; i++) {
+ ((int32_t *)buffer)[i] = ad->samples_in[buffer_idx++];
+ }
+ break;
+ }
+ } else if (ad->format_tag == WAVE_FORMAT_IEEE_FLOAT) {
+ for (unsigned int i = 0; i < write_frames * ad->channels; i++) {
+ ((float *)buffer)[i] = (ad->samples_in[buffer_idx++] >> 16) / 32768.f;
+ }
+ } else {
+ ERR_PRINT("WASAPI: Unknown format tag");
+ ad->exit_thread = true;
+ }
+
+ hr = ad->render_client->ReleaseBuffer(write_frames, 0);
+ if (hr != S_OK) {
+ ERR_PRINT("WASAPI: Release buffer error");
+ }
+
+ left_frames -= write_frames;
+ } else if (hr == AUDCLNT_E_DEVICE_INVALIDATED) {
+ // Device is not valid anymore, reopen it
+
+ Error err = ad->reopen();
+ if (err != OK) {
+ ad->exit_thread = true;
+ } else {
+ // We reopened the device and samples_in may have resized, so invalidate the current left_frames
+ left_frames = 0;
+ }
+ } else {
+ ERR_PRINT("WASAPI: Get buffer error");
+ ad->exit_thread = true;
+ }
+ } else if (hr == AUDCLNT_E_DEVICE_INVALIDATED) {
+ // Device is not valid anymore, reopen it
+
+ Error err = ad->reopen();
+ if (err != OK) {
+ ad->exit_thread = true;
+ } else {
+ // We reopened the device and samples_in may have resized, so invalidate the current left_frames
+ left_frames = 0;
+ }
+ } else {
+ ERR_PRINT("WASAPI: GetCurrentPadding error");
+ }
+ }
+ }
+
+ ad->thread_exited = true;
+}
+
+void AudioDriverWASAPI::start() {
+
+ HRESULT hr = audio_client->Start();
+ if (hr != S_OK) {
+ ERR_PRINT("WASAPI: Start failed");
+ } else {
+ active = true;
+ }
+}
+
+void AudioDriverWASAPI::lock() {
+
+ if (mutex)
+ mutex->lock();
+}
+
+void AudioDriverWASAPI::unlock() {
+
+ if (mutex)
+ mutex->unlock();
+}
+
+void AudioDriverWASAPI::finish() {
+
+ if (thread) {
+ exit_thread = true;
+ Thread::wait_to_finish(thread);
+
+ memdelete(thread);
+ thread = NULL;
+ }
+
+ finish_device();
+
+ if (mutex) {
+ memdelete(mutex);
+ mutex = NULL;
+ }
+}
+
+AudioDriverWASAPI::AudioDriverWASAPI() {
+
+ audio_client = NULL;
+ render_client = NULL;
+ mutex = NULL;
+ thread = NULL;
+
+ max_frames = 0;
+ format_tag = 0;
+ bits_per_sample = 0;
+
+ samples_in.clear();
+
+ buffer_size = 0;
+ channels = 0;
+ mix_rate = 0;
+ buffer_frames = 0;
+
+ thread_exited = false;
+ exit_thread = false;
+ active = false;
+}
+
+#endif
diff --git a/drivers/wasapi/audio_driver_wasapi.h b/drivers/wasapi/audio_driver_wasapi.h
new file mode 100644
index 0000000000..b91751f87e
--- /dev/null
+++ b/drivers/wasapi/audio_driver_wasapi.h
@@ -0,0 +1,89 @@
+/*************************************************************************/
+/* audio_driver_wasapi.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 AUDIO_DRIVER_WASAPI_H
+#define AUDIO_DRIVER_WASAPI_H
+
+#ifdef WASAPI_ENABLED
+
+#include "core/os/mutex.h"
+#include "core/os/thread.h"
+#include "servers/audio_server.h"
+
+#include <audioclient.h>
+#include <mmdeviceapi.h>
+#include <windows.h>
+
+class AudioDriverWASAPI : public AudioDriver {
+
+ HANDLE event;
+ IAudioClient *audio_client;
+ IAudioRenderClient *render_client;
+ Mutex *mutex;
+ Thread *thread;
+
+ UINT32 max_frames;
+ WORD format_tag;
+ WORD bits_per_sample;
+
+ Vector<int32_t> samples_in;
+
+ unsigned int buffer_size;
+ unsigned int channels;
+ int mix_rate;
+ int buffer_frames;
+
+ bool thread_exited;
+ mutable bool exit_thread;
+ bool active;
+
+ static void thread_func(void *p_udata);
+
+ Error init_device();
+ Error finish_device();
+ Error reopen();
+
+public:
+ virtual const char *get_name() const {
+ return "WASAPI";
+ }
+
+ virtual Error init();
+ virtual void start();
+ virtual int get_mix_rate() const;
+ virtual SpeakerMode get_speaker_mode() const;
+ virtual void lock();
+ virtual void unlock();
+ virtual void finish();
+
+ AudioDriverWASAPI();
+};
+
+#endif // AUDIO_DRIVER_WASAPI_H
+#endif
diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp
index 76665f0203..6d6a6027d9 100644
--- a/drivers/windows/dir_access_windows.cpp
+++ b/drivers/windows/dir_access_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/dir_access_windows.h b/drivers/windows/dir_access_windows.h
index f7553f50c2..cb0fffdd47 100644
--- a/drivers/windows/dir_access_windows.h
+++ b/drivers/windows/dir_access_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,8 +75,8 @@ public:
virtual Error make_dir(String p_dir);
- virtual Error rename(String p_from, String p_to);
- virtual Error remove(String p_name);
+ virtual Error rename(String p_path, String p_new_path);
+ virtual Error remove(String p_path);
//virtual FileType get_file_type() const;
size_t get_space_left();
diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp
index c66da2da29..30c8332fa3 100644
--- a/drivers/windows/file_access_windows.cpp
+++ b/drivers/windows/file_access_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -53,9 +53,9 @@ void FileAccessWindows::check_errors() const {
}
}
-Error FileAccessWindows::_open(const String &p_filename, int p_mode_flags) {
+Error FileAccessWindows::_open(const String &p_path, int p_mode_flags) {
- String filename = fix_path(p_filename);
+ String filename = fix_path(p_path);
if (f)
close();
diff --git a/drivers/windows/file_access_windows.h b/drivers/windows/file_access_windows.h
index de5fc2bc09..6956e7855a 100644
--- a/drivers/windows/file_access_windows.h
+++ b/drivers/windows/file_access_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/mutex_windows.cpp b/drivers/windows/mutex_windows.cpp
index 7d9bc22e51..d862d528e3 100644
--- a/drivers/windows/mutex_windows.cpp
+++ b/drivers/windows/mutex_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/mutex_windows.h b/drivers/windows/mutex_windows.h
index 2e000a43f5..2f436b5754 100644
--- a/drivers/windows/mutex_windows.h
+++ b/drivers/windows/mutex_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/rw_lock_windows.cpp b/drivers/windows/rw_lock_windows.cpp
index e2213be9c1..5cbedeba2f 100644
--- a/drivers/windows/rw_lock_windows.cpp
+++ b/drivers/windows/rw_lock_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/rw_lock_windows.h b/drivers/windows/rw_lock_windows.h
index eb030d6029..15911c21e7 100644
--- a/drivers/windows/rw_lock_windows.h
+++ b/drivers/windows/rw_lock_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/semaphore_windows.cpp b/drivers/windows/semaphore_windows.cpp
index 3a5c0b054c..c88329d56c 100644
--- a/drivers/windows/semaphore_windows.cpp
+++ b/drivers/windows/semaphore_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/semaphore_windows.h b/drivers/windows/semaphore_windows.h
index 90aacc7e26..8e242ae148 100644
--- a/drivers/windows/semaphore_windows.h
+++ b/drivers/windows/semaphore_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/shell_windows.cpp b/drivers/windows/shell_windows.cpp
index 17ff9fe962..139a8756fb 100644
--- a/drivers/windows/shell_windows.cpp
+++ b/drivers/windows/shell_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/shell_windows.h b/drivers/windows/shell_windows.h
index d94c5812d1..de4fdc4d73 100644
--- a/drivers/windows/shell_windows.h
+++ b/drivers/windows/shell_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/thread_windows.cpp b/drivers/windows/thread_windows.cpp
index 01ddf42649..2ff4715b1c 100644
--- a/drivers/windows/thread_windows.cpp
+++ b/drivers/windows/thread_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/windows/thread_windows.h b/drivers/windows/thread_windows.h
index 143825039c..2c3a325f88 100644
--- a/drivers/windows/thread_windows.h
+++ b/drivers/windows/thread_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/drivers/xaudio2/audio_driver_xaudio2.cpp b/drivers/xaudio2/audio_driver_xaudio2.cpp
index a1ca2c678e..1bd338ead9 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.cpp
+++ b/drivers/xaudio2/audio_driver_xaudio2.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -50,7 +50,7 @@ Error AudioDriverXAudio2::init() {
channels = 2;
int latency = GLOBAL_DEF("audio/output_latency", 25);
- buffer_size = nearest_power_of_2(latency * mix_rate / 1000);
+ buffer_size = closest_power_of_2(latency * mix_rate / 1000);
samples_in = memnew_arr(int32_t, buffer_size * channels);
for (int i = 0; i < AUDIO_BUFFERS; i++) {
diff --git a/drivers/xaudio2/audio_driver_xaudio2.h b/drivers/xaudio2/audio_driver_xaudio2.h
index 7c1d31b57c..27ef2ebcb8 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.h
+++ b/drivers/xaudio2/audio_driver_xaudio2.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/SCsub b/editor/SCsub
index fd56c9d772..172447147c 100644
--- a/editor/SCsub
+++ b/editor/SCsub
@@ -4,6 +4,7 @@ Import('env')
env.editor_sources = []
import os
+from compat import encode_utf8, byte_to_str, open_utf8
def make_certs_header(target, source, env):
@@ -11,7 +12,7 @@ def make_certs_header(target, source, env):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
f = open(src, "rb")
- g = open(dst, "wb")
+ g = open_utf8(dst, "w")
buf = f.read()
decomp_size = len(buf)
import zlib
@@ -24,7 +25,7 @@ def make_certs_header(target, source, env):
g.write("static const int _certs_uncompressed_size=" + str(decomp_size) + ";\n")
g.write("static const unsigned char _certs_compressed[]={\n")
for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
+ g.write(byte_to_str(buf[i]) + ",\n")
g.write("};\n")
g.write("#endif")
@@ -32,20 +33,20 @@ def make_certs_header(target, source, env):
def make_doc_header(target, source, env):
dst = target[0].srcnode().abspath
- g = open(dst, "wb")
+ g = open_utf8(dst, "w")
buf = ""
docbegin = ""
docend = ""
for s in source:
src = s.srcnode().abspath
- f = open(src, "rb")
+ f = open_utf8(src, "r")
content = f.read()
buf += content[content.find("<class"): content.rfind("</doc>")]
if len(docbegin) == 0:
docbegin = content[0: content.find("<class")]
if len(docend) == 0:
docend = content[content.rfind("</doc>"): len(buf)]
- buf = docbegin + buf + docend
+ buf = encode_utf8(docbegin + buf + docend)
decomp_size = len(buf)
import zlib
buf = zlib.compress(buf)
@@ -57,7 +58,7 @@ def make_doc_header(target, source, env):
g.write("static const int _doc_data_uncompressed_size=" + str(decomp_size) + ";\n")
g.write("static const unsigned char _doc_data_compressed[]={\n")
for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
+ g.write(byte_to_str(buf[i]) + ",\n")
g.write("};\n")
g.write("#endif")
@@ -66,7 +67,7 @@ def make_fonts_header(target, source, env):
dst = target[0].srcnode().abspath
- g = open(dst, "wb")
+ g = open_utf8(dst, "w")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_FONTS_H\n")
@@ -75,7 +76,6 @@ def make_fonts_header(target, source, env):
# saving uncompressed, since freetype will reference from memory pointer
xl_names = []
for i in range(len(source)):
- print("Appending font: " + source[i].srcnode().abspath)
f = open(source[i].srcnode().abspath, "rb")
buf = f.read()
import os.path
@@ -85,7 +85,7 @@ def make_fonts_header(target, source, env):
g.write("static const int _font_" + name + "_size=" + str(len(buf)) + ";\n")
g.write("static const unsigned char _font_" + name + "[]={\n")
for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
+ g.write(byte_to_str(buf[i]) + ",\n")
g.write("};\n")
@@ -96,7 +96,7 @@ def make_translations_header(target, source, env):
dst = target[0].srcnode().abspath
- g = open(dst, "wb")
+ g = open_utf8(dst, "w")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_TRANSLATIONS_H\n")
@@ -110,7 +110,6 @@ def make_translations_header(target, source, env):
xl_names = []
for i in range(len(sorted_paths)):
- print("Appending translation: " + sorted_paths[i])
f = open(sorted_paths[i], "rb")
buf = f.read()
decomp_size = len(buf)
@@ -121,7 +120,7 @@ def make_translations_header(target, source, env):
#g.write("static const int _translation_"+name+"_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _translation_" + name + "_compressed[]={\n")
for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
+ g.write(byte_to_str(buf[i]) + ",\n")
g.write("};\n")
@@ -148,8 +147,8 @@ def make_authors_header(target, source, env):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
- f = open(src, "rb")
- g = open(dst, "wb")
+ f = open_utf8(src, "r")
+ g = open_utf8(dst, "w")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_AUTHORS_H\n")
@@ -190,9 +189,9 @@ def make_license_header(target, source, env):
src_copyright = source[0].srcnode().abspath
src_license = source[1].srcnode().abspath
dst = target[0].srcnode().abspath
- f = open(src_license, "rb")
- fc = open(src_copyright, "rb")
- g = open(dst, "wb")
+ f = open_utf8(src_license, "r")
+ fc = open_utf8(src_copyright, "r")
+ g = open_utf8(dst, "w")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_LICENSE_H\n")
@@ -353,10 +352,10 @@ if (env["tools"] == "yes"):
reg_exporters = 'void register_exporters() {\n'
for e in env.platform_exporters:
env.editor_sources.append("#platform/" + e + "/export/export.cpp")
- reg_exporters += '\tregister_' + e + '_exporter();\n'
+ reg_exporters += '\tregister_' + e + '_exporter();\n'
reg_exporters_inc += '#include "platform/' + e + '/export/export.h"\n'
reg_exporters += '}\n'
- f = open("register_exporters.gen.cpp", "wb")
+ f = open_utf8("register_exporters.gen.cpp", "w")
f.write(reg_exporters_inc)
f.write(reg_exporters)
f.close()
@@ -381,14 +380,12 @@ if (env["tools"] == "yes"):
# Translations
tlist = glob.glob(path + "/translations/*.po")
- print("translations: ", tlist)
env.Depends('#editor/translations.gen.h', tlist)
env.Command('#editor/translations.gen.h', tlist, make_translations_header)
# Fonts
flist = glob.glob(path + "/../thirdparty/fonts/*.ttf")
flist.append(glob.glob(path + "/../thirdparty/fonts/*.otf"))
- print("fonts: ", flist)
env.Depends('#editor/builtin_fonts.gen.h', flist)
env.Command('#editor/builtin_fonts.gen.h', flist, make_fonts_header)
@@ -408,7 +405,6 @@ if (env["tools"] == "yes"):
SConscript('fileserver/SCsub')
SConscript('icons/SCsub')
SConscript('import/SCsub')
- SConscript('io_plugins/SCsub')
SConscript('plugins/SCsub')
lib = env.Library("editor", env.editor_sources)
diff --git a/editor/animation_editor.cpp b/editor/animation_editor.cpp
index 3675948b1d..702adf0c68 100644
--- a/editor/animation_editor.cpp
+++ b/editor/animation_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,6 +38,7 @@
#include "pair.h"
#include "scene/gui/separator.h"
#include "scene/main/viewport.h"
+
/* Missing to fix:
*Set
@@ -1299,7 +1300,7 @@ void AnimationKeyEditor::_track_editor_draw() {
Object *obj = NULL;
RES res;
- Node *node = root->get_node_and_resource(animation->track_get_path(idx), res);
+ Node *node = root ? root->get_node_and_resource(animation->track_get_path(idx), res) : (Node *)NULL;
if (res.is_valid()) {
obj = res.ptr();
@@ -1324,7 +1325,7 @@ void AnimationKeyEditor::_track_editor_draw() {
te->draw_texture(type_icon[animation->track_get_type(idx)], ofs + Point2(0, y + (h - type_icon[0]->get_height()) / 2).floor());
NodePath np = animation->track_get_path(idx);
- Node *n = root->get_node(np);
+ Node *n = root ? root->get_node(np) : (Node *)NULL;
Color ncol = color;
if (n && editor_selection->is_selected(n))
ncol = track_select_color;
@@ -1646,7 +1647,7 @@ PropertyInfo AnimationKeyEditor::_find_hint_for_track(int p_idx, NodePath &r_bas
List<PropertyInfo> pinfo;
if (res.is_valid())
res->get_property_list(&pinfo);
- else
+ else if (node)
node->get_property_list(&pinfo);
for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
@@ -2684,17 +2685,6 @@ void AnimationKeyEditor::_track_editor_gui_input(const Ref<InputEvent> &p_input)
Point2 mpos = mm->get_position() - ofs;
if (mpos.y < h) {
-#if 0
- //seek
- //int zoomw = settings_limit-name_limit;
- float scale = _get_zoom_scale();
- float pos = h_scroll->get_val() + (mpos.y-name_limit) / scale;
- if (pos<0 )
- pos=0;
- if (pos>=animation->get_length())
- pos=animation->get_length();
- timeline->set_val(pos);
-#endif
return;
}
@@ -2904,7 +2894,7 @@ void AnimationKeyEditor::_notification(int p_what) {
zoomicon->set_custom_minimum_size(Size2(24 * EDSCALE, 0));
zoomicon->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);
- menu_add_track->set_icon(get_icon("AddTrack", "EditorIcons"));
+ menu_add_track->set_icon(get_icon("Add", "EditorIcons"));
menu_add_track->get_popup()->add_icon_item(get_icon("KeyValue", "EditorIcons"), "Add Normal Track", ADD_TRACK_MENU_ADD_VALUE_TRACK);
menu_add_track->get_popup()->add_icon_item(get_icon("KeyXform", "EditorIcons"), "Add Transform Track", ADD_TRACK_MENU_ADD_TRANSFORM_TRACK);
menu_add_track->get_popup()->add_icon_item(get_icon("KeyCall", "EditorIcons"), "Add Call Func Track", ADD_TRACK_MENU_ADD_CALL_TRACK);
@@ -3249,9 +3239,9 @@ void AnimationKeyEditor::insert_value_key(const String &p_property, const Varian
//let's build a node path
ERR_FAIL_COND(history->get_path_size() == 0);
Object *obj = ObjectDB::get_instance(history->get_path_object(0));
- ERR_FAIL_COND(!obj || !obj->cast_to<Node>());
+ ERR_FAIL_COND(!Object::cast_to<Node>(obj));
- Node *node = obj->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(obj);
String path = root->get_path_to(node);
diff --git a/editor/animation_editor.h b/editor/animation_editor.h
index 88cc446853..c16072502b 100644
--- a/editor/animation_editor.h
+++ b/editor/animation_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -278,7 +278,7 @@ class AnimationKeyEditor : public VBoxContainer {
void _track_name_changed(const String &p_name);
void _track_menu_selected(int p_idx);
void _confirm_insert_list();
- int _confirm_insert(InsertData p_id, int p_at_track = -1);
+ int _confirm_insert(InsertData p_id, int p_last_track = -1);
void _query_insert(const InsertData &p_id);
void _update_menu();
bool insert_queue;
diff --git a/editor/array_property_edit.cpp b/editor/array_property_edit.cpp
index 06d7d5fdc8..bcf1600b36 100644
--- a/editor/array_property_edit.cpp
+++ b/editor/array_property_edit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -273,11 +273,7 @@ void ArrayPropertyEdit::edit(Object *p_obj, const StringName &p_prop, const Stri
Node *ArrayPropertyEdit::get_node() {
- Object *o = ObjectDB::get_instance(obj);
- if (!o)
- return NULL;
-
- return o->cast_to<Node>();
+ return Object::cast_to<Node>(ObjectDB::get_instance(obj));
}
void ArrayPropertyEdit::_bind_methods() {
diff --git a/editor/array_property_edit.h b/editor/array_property_edit.h
index 1bc82e22a1..c028c45b04 100644
--- a/editor/array_property_edit.h
+++ b/editor/array_property_edit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/asset_library_editor_plugin.cpp b/editor/asset_library_editor_plugin.cpp
deleted file mode 100644
index 2a22cde2fb..0000000000
--- a/editor/asset_library_editor_plugin.cpp
+++ /dev/null
@@ -1,1473 +0,0 @@
-/*************************************************************************/
-/* asset_library_editor_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "asset_library_editor_plugin.h"
-
-#include "editor_node.h"
-#include "editor_settings.h"
-#include "io/json.h"
-
-void EditorAssetLibraryItem::configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost) {
-
- title->set_text(p_title);
- asset_id = p_asset_id;
- category->set_text(p_category);
- category_id = p_category_id;
- author->set_text(p_author);
- author_id = p_author_id;
- price->set_text(p_cost);
-
- for (int i = 0; i < 5; i++) {
- if (i < p_rating)
- stars[i]->set_texture(get_icon("RatingStar", "EditorIcons"));
- else
- stars[i]->set_texture(get_icon("RatingNoStar", "EditorIcons"));
- }
-}
-
-void EditorAssetLibraryItem::set_image(int p_type, int p_index, const Ref<Texture> &p_image) {
-
- ERR_FAIL_COND(p_type != EditorAssetLibrary::IMAGE_QUEUE_ICON);
- ERR_FAIL_COND(p_index != 0);
-
- icon->set_normal_texture(p_image);
-}
-
-void EditorAssetLibraryItem::_notification(int p_what) {
-
- if (p_what == NOTIFICATION_ENTER_TREE) {
-
- icon->set_normal_texture(get_icon("GodotAssetDefault", "EditorIcons"));
- category->add_color_override("font_color", Color(0.5, 0.5, 0.5));
- author->add_color_override("font_color", Color(0.5, 0.5, 0.5));
- }
-}
-
-void EditorAssetLibraryItem::_asset_clicked() {
-
- emit_signal("asset_selected", asset_id);
-}
-
-void EditorAssetLibraryItem::_category_clicked() {
-
- emit_signal("category_selected", category_id);
-}
-void EditorAssetLibraryItem::_author_clicked() {
-
- emit_signal("author_selected", author_id);
-}
-
-void EditorAssetLibraryItem::_bind_methods() {
-
- ClassDB::bind_method("set_image", &EditorAssetLibraryItem::set_image);
- ClassDB::bind_method("_asset_clicked", &EditorAssetLibraryItem::_asset_clicked);
- ClassDB::bind_method("_category_clicked", &EditorAssetLibraryItem::_category_clicked);
- ClassDB::bind_method("_author_clicked", &EditorAssetLibraryItem::_author_clicked);
- ADD_SIGNAL(MethodInfo("asset_selected"));
- ADD_SIGNAL(MethodInfo("category_selected"));
- ADD_SIGNAL(MethodInfo("author_selected"));
-}
-
-EditorAssetLibraryItem::EditorAssetLibraryItem() {
-
- Ref<StyleBoxEmpty> border;
- border.instance();
- border->set_default_margin(MARGIN_LEFT, 5);
- border->set_default_margin(MARGIN_RIGHT, 5);
- border->set_default_margin(MARGIN_BOTTOM, 5);
- border->set_default_margin(MARGIN_TOP, 5);
- add_style_override("panel", border);
-
- HBoxContainer *hb = memnew(HBoxContainer);
- add_child(hb);
-
- icon = memnew(TextureButton);
- icon->set_default_cursor_shape(CURSOR_POINTING_HAND);
- icon->connect("pressed", this, "_asset_clicked");
-
- hb->add_child(icon);
-
- VBoxContainer *vb = memnew(VBoxContainer);
-
- hb->add_child(vb);
- vb->set_h_size_flags(SIZE_EXPAND_FILL);
-
- title = memnew(LinkButton);
- title->set_text("My Awesome Addon");
- title->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- title->connect("pressed", this, "_asset_clicked");
- vb->add_child(title);
-
- category = memnew(LinkButton);
- category->set_text("Editor Tools");
- category->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- category->connect("pressed", this, "_category_clicked");
- vb->add_child(category);
-
- author = memnew(LinkButton);
- author->set_text("Johny Tolengo");
- author->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- author->connect("pressed", this, "_author_clicked");
- vb->add_child(author);
-
- HBoxContainer *rating_hb = memnew(HBoxContainer);
- vb->add_child(rating_hb);
-
- for (int i = 0; i < 5; i++) {
- stars[i] = memnew(TextureRect);
- rating_hb->add_child(stars[i]);
- }
- price = memnew(Label);
- price->set_text(TTR("Free"));
- vb->add_child(price);
-
- set_custom_minimum_size(Size2(250, 100));
- set_h_size_flags(SIZE_EXPAND_FILL);
-
- set_mouse_filter(MOUSE_FILTER_PASS);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-void EditorAssetLibraryItemDescription::set_image(int p_type, int p_index, const Ref<Texture> &p_image) {
-
- switch (p_type) {
-
- case EditorAssetLibrary::IMAGE_QUEUE_ICON: {
-
- item->call("set_image", p_type, p_index, p_image);
- icon = p_image;
- } break;
- case EditorAssetLibrary::IMAGE_QUEUE_THUMBNAIL: {
-
- for (int i = 0; i < preview_images.size(); i++) {
- if (preview_images[i].id == p_index) {
- preview_images[i].button->set_icon(p_image);
- break;
- }
- }
- //item->call("set_image",p_type,p_index,p_image);
- } break;
- case EditorAssetLibrary::IMAGE_QUEUE_SCREENSHOT: {
-
- for (int i = 0; i < preview_images.size(); i++) {
- if (preview_images[i].id == p_index) {
- preview_images[i].image = p_image;
- if (preview_images[i].button->is_pressed()) {
- _preview_click(p_index);
- }
- break;
- }
- }
- //item->call("set_image",p_type,p_index,p_image);
- } break;
- }
-}
-
-void EditorAssetLibraryItemDescription::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_image"), &EditorAssetLibraryItemDescription::set_image);
- ClassDB::bind_method(D_METHOD("_link_click"), &EditorAssetLibraryItemDescription::_link_click);
- ClassDB::bind_method(D_METHOD("_preview_click"), &EditorAssetLibraryItemDescription::_preview_click);
-}
-
-void EditorAssetLibraryItemDescription::_link_click(const String &p_url) {
- ERR_FAIL_COND(!p_url.begins_with("http"));
- OS::get_singleton()->shell_open(p_url);
-}
-
-void EditorAssetLibraryItemDescription::_preview_click(int p_id) {
- for (int i = 0; i < preview_images.size(); i++) {
- if (preview_images[i].id == p_id) {
- preview_images[i].button->set_pressed(true);
- if (!preview_images[i].is_video) {
- if (preview_images[i].image.is_valid()) {
- preview->set_texture(preview_images[i].image);
- }
- } else {
- _link_click(preview_images[i].video_link);
- }
- } else {
- preview_images[i].button->set_pressed(false);
- }
- }
-}
-
-void EditorAssetLibraryItemDescription::configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost, int p_version, const String &p_version_string, const String &p_description, const String &p_download_url, const String &p_browse_url, const String &p_sha256_hash) {
-
- asset_id = p_asset_id;
- title = p_title;
- download_url = p_download_url;
- sha256 = p_sha256_hash;
- item->configure(p_title, p_asset_id, p_category, p_category_id, p_author, p_author_id, p_rating, p_cost);
- description->clear();
- description->add_text(TTR("Version:") + " " + p_version_string + "\n");
- description->add_text(TTR("Contents:") + " ");
- description->push_meta(p_browse_url);
- description->add_text(TTR("View Files"));
- description->pop();
- description->add_text("\n" + TTR("Description:") + "\n\n");
- description->append_bbcode(p_description);
- set_title(p_title);
-}
-
-void EditorAssetLibraryItemDescription::add_preview(int p_id, bool p_video, const String &p_url) {
-
- Preview preview;
- preview.id = p_id;
- preview.video_link = p_url;
- preview.is_video = p_video;
- preview.button = memnew(Button);
- preview.button->set_flat(true);
- preview.button->set_icon(get_icon("ThumbnailWait", "EditorIcons"));
- preview.button->set_toggle_mode(true);
- preview.button->connect("pressed", this, "_preview_click", varray(p_id));
- preview_hb->add_child(preview.button);
- if (!p_video) {
- preview.image = get_icon("ThumbnailWait", "EditorIcons");
- }
- if (preview_images.size() == 0 && !p_video) {
- _preview_click(p_id);
- }
- preview_images.push_back(preview);
-}
-
-EditorAssetLibraryItemDescription::EditorAssetLibraryItemDescription() {
-
- VBoxContainer *vbox = memnew(VBoxContainer);
- add_child(vbox);
-
- HBoxContainer *hbox = memnew(HBoxContainer);
- vbox->add_child(hbox);
- vbox->add_constant_override("separation", 15);
- VBoxContainer *desc_vbox = memnew(VBoxContainer);
- hbox->add_child(desc_vbox);
- hbox->add_constant_override("separation", 15);
-
- item = memnew(EditorAssetLibraryItem);
-
- desc_vbox->add_child(item);
- desc_vbox->set_custom_minimum_size(Size2(300, 0));
-
- PanelContainer *desc_bg = memnew(PanelContainer);
- desc_vbox->add_child(desc_bg);
- desc_bg->set_v_size_flags(SIZE_EXPAND_FILL);
-
- description = memnew(RichTextLabel);
- description->connect("meta_clicked", this, "_link_click");
- desc_bg->add_child(description);
- desc_bg->add_style_override("panel", get_stylebox("normal", "TextEdit"));
-
- preview = memnew(TextureRect);
- preview->set_custom_minimum_size(Size2(640, 345));
- hbox->add_child(preview);
-
- PanelContainer *previews_bg = memnew(PanelContainer);
- vbox->add_child(previews_bg);
- previews_bg->set_custom_minimum_size(Size2(0, 85));
- previews_bg->add_style_override("panel", get_stylebox("normal", "TextEdit"));
-
- previews = memnew(ScrollContainer);
- previews_bg->add_child(previews);
- previews->set_enable_v_scroll(false);
- previews->set_enable_h_scroll(true);
- preview_hb = memnew(HBoxContainer);
- preview_hb->set_v_size_flags(SIZE_EXPAND_FILL);
-
- previews->add_child(preview_hb);
- get_ok()->set_text(TTR("Install"));
- get_cancel()->set_text(TTR("Close"));
-}
-///////////////////////////////////////////////////////////////////////////////////
-
-void EditorAssetLibraryItemDownload::_http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data) {
-
- String error_text;
- print_line("COMPLETED: " + itos(p_status) + " code: " + itos(p_code) + " data size: " + itos(p_data.size()));
-
- switch (p_status) {
-
- case HTTPRequest::RESULT_CANT_RESOLVE: {
- error_text = TTR("Can't resolve hostname:") + " " + host;
- status->set_text(TTR("Can't resolve."));
- } break;
- case HTTPRequest::RESULT_BODY_SIZE_LIMIT_EXCEEDED:
- case HTTPRequest::RESULT_CONNECTION_ERROR:
- case HTTPRequest::RESULT_CHUNKED_BODY_SIZE_MISMATCH: {
- error_text = TTR("Connection error, please try again.");
- status->set_text(TTR("Can't connect."));
- } break;
- case HTTPRequest::RESULT_SSL_HANDSHAKE_ERROR:
- case HTTPRequest::RESULT_CANT_CONNECT: {
- error_text = TTR("Can't connect to host:") + " " + host;
- status->set_text(TTR("Can't connect."));
- } break;
- case HTTPRequest::RESULT_NO_RESPONSE: {
- error_text = TTR("No response from host:") + " " + host;
- status->set_text(TTR("No response."));
- } break;
- case HTTPRequest::RESULT_REQUEST_FAILED: {
- error_text = TTR("Request failed, return code:") + " " + itos(p_code);
- status->set_text(TTR("Req. Failed."));
- } break;
- case HTTPRequest::RESULT_REDIRECT_LIMIT_REACHED: {
- error_text = TTR("Request failed, too many redirects");
- status->set_text(TTR("Redirect Loop."));
- } break;
- default: {
- if (p_code != 200) {
- error_text = TTR("Request failed, return code:") + " " + itos(p_code);
- status->set_text(TTR("Failed:") + " " + itos(p_code));
- } else if (sha256 != "") {
- String download_sha256 = FileAccess::get_sha256(download->get_download_file());
- if (sha256 != download_sha256) {
- error_text = TTR("Bad download hash, assuming file has been tampered with.") + "\n";
- error_text += TTR("Expected:") + " " + sha256 + "\n" + TTR("Got:") + " " + download_sha256;
- status->set_text(TTR("Failed sha256 hash check"));
- }
- }
- } break;
- }
-
- if (error_text != String()) {
- download_error->set_text(TTR("Asset Download Error:") + "\n" + error_text);
- download_error->popup_centered_minsize();
- return;
- }
-
- progress->set_max(download->get_body_size());
- progress->set_value(download->get_downloaded_bytes());
-
- print_line("max: " + itos(download->get_body_size()) + " bytes: " + itos(download->get_downloaded_bytes()));
- install->set_disabled(false);
-
- progress->set_value(download->get_downloaded_bytes());
-
- status->set_text(TTR("Success!") + " (" + String::humanize_size(download->get_downloaded_bytes()) + ")");
- set_process(false);
-}
-
-void EditorAssetLibraryItemDownload::configure(const String &p_title, int p_asset_id, const Ref<Texture> &p_preview, const String &p_download_url, const String &p_sha256_hash) {
-
- title->set_text(p_title);
- icon->set_texture(p_preview);
- asset_id = p_asset_id;
- if (!p_preview.is_valid())
- icon->set_texture(get_icon("GodotAssetDefault", "EditorIcons"));
- host = p_download_url;
- sha256 = p_sha256_hash;
- asset_installer->connect("confirmed", this, "_close");
- dismiss->set_normal_texture(get_icon("Close", "EditorIcons"));
- _make_request();
-}
-
-void EditorAssetLibraryItemDownload::_notification(int p_what) {
-
- if (p_what == NOTIFICATION_PROCESS) {
-
- progress->set_max(download->get_body_size());
- progress->set_value(download->get_downloaded_bytes());
-
- int cstatus = download->get_http_client_status();
-
- if (cstatus == HTTPClient::STATUS_BODY)
- status->set_text(TTR("Fetching:") + " " + String::humanize_size(download->get_downloaded_bytes()));
-
- if (cstatus != prev_status) {
- switch (cstatus) {
-
- case HTTPClient::STATUS_RESOLVING: {
- status->set_text(TTR("Resolving.."));
- } break;
- case HTTPClient::STATUS_CONNECTING: {
- status->set_text(TTR("Connecting.."));
- } break;
- case HTTPClient::STATUS_REQUESTING: {
- status->set_text(TTR("Requesting.."));
- } break;
- default: {}
- }
- prev_status = cstatus;
- }
- }
-}
-void EditorAssetLibraryItemDownload::_close() {
-
- DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
- da->remove(download->get_download_file()); //clean up removed file
- memdelete(da);
- queue_delete();
-}
-
-void EditorAssetLibraryItemDownload::_install() {
-
- String file = download->get_download_file();
-
- if (external_install) {
- emit_signal("install_asset", file, title->get_text());
- return;
- }
-
- asset_installer->open(file, 1);
-}
-
-void EditorAssetLibraryItemDownload::_make_request() {
- download->cancel_request();
- download->set_download_file(EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("tmp_asset_" + itos(asset_id)) + ".zip");
-
- Error err = download->request(host);
- if (err != OK) {
- status->set_text(TTR("Error making request"));
- } else {
- set_process(true);
- }
-}
-
-void EditorAssetLibraryItemDownload::_bind_methods() {
-
- ClassDB::bind_method("_http_download_completed", &EditorAssetLibraryItemDownload::_http_download_completed);
- ClassDB::bind_method("_install", &EditorAssetLibraryItemDownload::_install);
- ClassDB::bind_method("_close", &EditorAssetLibraryItemDownload::_close);
- ClassDB::bind_method("_make_request", &EditorAssetLibraryItemDownload::_make_request);
-
- ADD_SIGNAL(MethodInfo("install_asset", PropertyInfo(Variant::STRING, "zip_path"), PropertyInfo(Variant::STRING, "name")));
-}
-
-EditorAssetLibraryItemDownload::EditorAssetLibraryItemDownload() {
-
- HBoxContainer *hb = memnew(HBoxContainer);
- add_child(hb);
- icon = memnew(TextureRect);
- hb->add_child(icon);
-
- VBoxContainer *vb = memnew(VBoxContainer);
- hb->add_child(vb);
- vb->set_h_size_flags(SIZE_EXPAND_FILL);
-
- HBoxContainer *title_hb = memnew(HBoxContainer);
- vb->add_child(title_hb);
- title = memnew(Label);
- title_hb->add_child(title);
- title->set_h_size_flags(SIZE_EXPAND_FILL);
-
- dismiss = memnew(TextureButton);
- dismiss->connect("pressed", this, "_close");
- title_hb->add_child(dismiss);
-
- title->set_clip_text(true);
-
- vb->add_spacer();
-
- status = memnew(Label(TTR("Idle")));
- vb->add_child(status);
- status->add_color_override("font_color", Color(0.5, 0.5, 0.5));
- progress = memnew(ProgressBar);
- vb->add_child(progress);
-
- HBoxContainer *hb2 = memnew(HBoxContainer);
- vb->add_child(hb2);
- hb2->add_spacer();
-
- install = memnew(Button);
- install->set_text(TTR("Install"));
- install->set_disabled(true);
- install->connect("pressed", this, "_install");
-
- retry = memnew(Button);
- retry->set_text(TTR("Retry"));
- retry->connect("pressed", this, "_make_request");
-
- hb2->add_child(retry);
- hb2->add_child(install);
- set_custom_minimum_size(Size2(250, 0));
-
- download = memnew(HTTPRequest);
- add_child(download);
- download->connect("request_completed", this, "_http_download_completed");
-
- download_error = memnew(AcceptDialog);
- add_child(download_error);
- download_error->set_title(TTR("Download Error"));
-
- asset_installer = memnew(EditorAssetInstaller);
- add_child(asset_installer);
-
- prev_status = -1;
-
- external_install = false;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-void EditorAssetLibrary::_notification(int p_what) {
-
- if (p_what == NOTIFICATION_READY) {
- TextureRect *tf = memnew(TextureRect);
- tf->set_texture(get_icon("Error", "EditorIcons"));
- reverse->set_icon(get_icon("Updown", "EditorIcons"));
-
- error_hb->add_child(tf);
- error_label->raise();
- }
-
- if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
- if (is_visible()) {
- _repository_changed(0); // Update when shown for the first time
- }
- }
-
- if (p_what == NOTIFICATION_PROCESS) {
-
- HTTPClient::Status s = request->get_http_client_status();
- bool visible = s != HTTPClient::STATUS_DISCONNECTED;
-
- if (visible != load_status->is_visible()) {
- load_status->set_visible(visible);
- }
-
- if (visible) {
- switch (s) {
-
- case HTTPClient::STATUS_RESOLVING: {
- load_status->set_value(0.1);
- } break;
- case HTTPClient::STATUS_CONNECTING: {
- load_status->set_value(0.2);
- } break;
- case HTTPClient::STATUS_REQUESTING: {
- load_status->set_value(0.3);
- } break;
- case HTTPClient::STATUS_BODY: {
- load_status->set_value(0.4);
- } break;
- default: {}
- }
- }
-
- bool no_downloads = downloads_hb->get_child_count() == 0;
- if (no_downloads == downloads_scroll->is_visible()) {
- downloads_scroll->set_visible(!no_downloads);
- }
- }
-}
-
-void EditorAssetLibrary::_install_asset() {
-
- ERR_FAIL_COND(!description);
-
- for (int i = 0; i < downloads_hb->get_child_count(); i++) {
-
- EditorAssetLibraryItemDownload *d = downloads_hb->get_child(i)->cast_to<EditorAssetLibraryItemDownload>();
- if (d && d->get_asset_id() == description->get_asset_id()) {
-
- if (EditorNode::get_singleton() != NULL)
- EditorNode::get_singleton()->show_warning(TTR("Download for this asset is already in progress!"));
- return;
- }
- }
-
- EditorAssetLibraryItemDownload *download = memnew(EditorAssetLibraryItemDownload);
- downloads_hb->add_child(download);
- download->configure(description->get_title(), description->get_asset_id(), description->get_preview_icon(), description->get_download_url(), description->get_sha256());
-
- if (templates_only) {
- download->set_external_install(true);
- download->connect("install_asset", this, "_install_external_asset");
- }
-}
-
-const char *EditorAssetLibrary::sort_key[SORT_MAX] = {
- "rating",
- "downloads",
- "name",
- "cost",
- "updated"
-};
-
-const char *EditorAssetLibrary::sort_text[SORT_MAX] = {
- "Rating",
- "Downloads",
- "Name",
- "Cost",
- "Updated"
-};
-
-const char *EditorAssetLibrary::support_key[SUPPORT_MAX] = {
- "official",
- "community",
- "testing"
-};
-
-void EditorAssetLibrary::_select_author(int p_id) {
-
- //opemn author window
-}
-
-void EditorAssetLibrary::_select_category(int p_id) {
-
- for (int i = 0; i < categories->get_item_count(); i++) {
-
- if (i == 0)
- continue;
- int id = categories->get_item_metadata(i);
- if (id == p_id) {
- categories->select(i);
- _search();
- break;
- }
- }
-}
-void EditorAssetLibrary::_select_asset(int p_id) {
-
- _api_request("asset/" + itos(p_id), REQUESTING_ASSET);
-
- /*
- if (description) {
- memdelete(description);
- }
-
-
- description = memnew( EditorAssetLibraryItemDescription );
- add_child(description);
- description->popup_centered_minsize();*/
-}
-
-void EditorAssetLibrary::_image_update(bool use_cache, bool final, const PoolByteArray &p_data, int p_queue_id) {
- Object *obj = ObjectDB::get_instance(image_queue[p_queue_id].target);
-
- if (obj) {
- bool image_set = false;
- PoolByteArray image_data = p_data;
-
- if (use_cache) {
- String cache_filename_base = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("assetimage_" + image_queue[p_queue_id].image_url.md5_text());
-
- FileAccess *file = FileAccess::open(cache_filename_base + ".data", FileAccess::READ);
-
- if (file) {
- PoolByteArray cached_data;
- int len = file->get_32();
- cached_data.resize(len);
-
- PoolByteArray::Write w = cached_data.write();
- file->get_buffer(w.ptr(), len);
-
- image_data = cached_data;
- file->close();
- }
- }
-
- int len = image_data.size();
- PoolByteArray::Read r = image_data.read();
- Ref<Image> image = Ref<Image>(memnew(Image(r.ptr(), len)));
-
- if (!image->empty()) {
- float max_height = 10000;
- switch (image_queue[p_queue_id].image_type) {
- case IMAGE_QUEUE_ICON: max_height = 80; break;
- case IMAGE_QUEUE_THUMBNAIL: max_height = 80; break;
- case IMAGE_QUEUE_SCREENSHOT: max_height = 345; break;
- }
- float scale_ratio = max_height / image->get_height();
- if (scale_ratio < 1) {
- image->resize(image->get_width() * scale_ratio, image->get_height() * scale_ratio, Image::INTERPOLATE_CUBIC);
- }
-
- Ref<ImageTexture> tex;
- tex.instance();
- tex->create_from_image(image);
-
- obj->call("set_image", image_queue[p_queue_id].image_type, image_queue[p_queue_id].image_index, tex);
- image_set = true;
- }
-
- if (!image_set && final) {
- obj->call("set_image", image_queue[p_queue_id].image_type, image_queue[p_queue_id].image_index, get_icon("ErrorSign", "EditorIcons"));
- }
- }
-}
-
-void EditorAssetLibrary::_image_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data, int p_queue_id) {
-
- ERR_FAIL_COND(!image_queue.has(p_queue_id));
-
- if (p_status == HTTPRequest::RESULT_SUCCESS) {
-
- print_line("GOT IMAGE YAY!");
-
- if (p_code != HTTPClient::RESPONSE_NOT_MODIFIED) {
- for (int i = 0; i < headers.size(); i++) {
- if (headers[i].findn("ETag:") == 0) { // Save etag
- String cache_filename_base = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("assetimage_" + image_queue[p_queue_id].image_url.md5_text());
- String new_etag = headers[i].substr(headers[i].find(":") + 1, headers[i].length()).strip_edges();
- FileAccess *file;
-
- file = FileAccess::open(cache_filename_base + ".etag", FileAccess::WRITE);
- if (file) {
- file->store_line(new_etag);
- file->close();
- }
-
- int len = p_data.size();
- PoolByteArray::Read r = p_data.read();
- file = FileAccess::open(cache_filename_base + ".data", FileAccess::WRITE);
- if (file) {
- file->store_32(len);
- file->store_buffer(r.ptr(), len);
- file->close();
- }
-
- break;
- }
- }
- }
- _image_update(p_code == HTTPClient::RESPONSE_NOT_MODIFIED, true, p_data, p_queue_id);
-
- } else {
- WARN_PRINTS("Error getting PNG file for asset id " + itos(image_queue[p_queue_id].asset_id));
- Object *obj = ObjectDB::get_instance(image_queue[p_queue_id].target);
- if (obj) {
- obj->call("set_image", image_queue[p_queue_id].image_type, image_queue[p_queue_id].image_index, get_icon("ErrorSign", "EditorIcons"));
- }
- }
-
- image_queue[p_queue_id].request->queue_delete();
- image_queue.erase(p_queue_id);
-
- _update_image_queue();
-}
-
-void EditorAssetLibrary::_update_image_queue() {
-
- int max_images = 2;
- int current_images = 0;
-
- List<int> to_delete;
- for (Map<int, ImageQueue>::Element *E = image_queue.front(); E; E = E->next()) {
- if (!E->get().active && current_images < max_images) {
-
- String cache_filename_base = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("assetimage_" + E->get().image_url.md5_text());
- Vector<String> headers;
-
- if (FileAccess::exists(cache_filename_base + ".etag") && FileAccess::exists(cache_filename_base + ".data")) {
- FileAccess *file = FileAccess::open(cache_filename_base + ".etag", FileAccess::READ);
- if (file) {
- headers.push_back("If-None-Match: " + file->get_line());
- file->close();
- }
- }
-
- print_line("REQUEST ICON FOR: " + itos(E->get().asset_id));
- Error err = E->get().request->request(E->get().image_url, headers);
- if (err != OK) {
- to_delete.push_back(E->key());
- } else {
- E->get().active = true;
- }
- current_images++;
- } else if (E->get().active) {
- current_images++;
- }
- }
-
- while (to_delete.size()) {
- image_queue[to_delete.front()->get()].request->queue_delete();
- image_queue.erase(to_delete.front()->get());
- to_delete.pop_front();
- }
-}
-
-void EditorAssetLibrary::_request_image(ObjectID p_for, String p_image_url, ImageType p_type, int p_image_index) {
-
- ImageQueue iq;
- iq.image_url = p_image_url;
- iq.image_index = p_image_index;
- iq.image_type = p_type;
- iq.request = memnew(HTTPRequest);
-
- iq.target = p_for;
- iq.queue_id = ++last_queue_id;
- iq.active = false;
-
- iq.request->connect("request_completed", this, "_image_request_completed", varray(iq.queue_id));
-
- image_queue[iq.queue_id] = iq;
-
- add_child(iq.request);
-
- _image_update(true, false, PoolByteArray(), iq.queue_id);
- _update_image_queue();
-}
-
-void EditorAssetLibrary::_repository_changed(int p_repository_id) {
- host = repository->get_item_metadata(p_repository_id);
- print_line(".." + host);
- if (templates_only) {
- _api_request("configure", REQUESTING_CONFIG, "?type=project");
- } else {
- _api_request("configure", REQUESTING_CONFIG);
- }
-}
-
-void EditorAssetLibrary::_support_toggled(int p_support) {
- support->get_popup()->set_item_checked(p_support, !support->get_popup()->is_item_checked(p_support));
- _search();
-}
-
-void EditorAssetLibrary::_rerun_search(int p_ignore) {
- _search();
-}
-
-void EditorAssetLibrary::_search(int p_page) {
-
- String args;
-
- if (templates_only) {
- args += "?type=project&";
- } else {
- args += "?";
- }
- args += String() + "sort=" + sort_key[sort->get_selected()];
-
- String support_list;
- for (int i = 0; i < SUPPORT_MAX; i++) {
- if (support->get_popup()->is_item_checked(i)) {
- support_list += String(support_key[i]) + "+";
- }
- }
- if (support_list != String()) {
- args += "&support=" + support_list.substr(0, support_list.length() - 1);
- }
-
- if (categories->get_selected() > 0) {
-
- args += "&category=" + itos(categories->get_item_metadata(categories->get_selected()));
- }
-
- if (reverse->is_pressed()) {
-
- args += "&reverse=true";
- }
-
- if (filter->get_text() != String()) {
- args += "&filter=" + filter->get_text().http_escape();
- }
-
- if (p_page > 0) {
- args += "&page=" + itos(p_page);
- }
-
- _api_request("asset", REQUESTING_SEARCH, args);
-}
-
-HBoxContainer *EditorAssetLibrary::_make_pages(int p_page, int p_page_count, int p_page_len, int p_total_items, int p_current_items) {
-
- HBoxContainer *hbc = memnew(HBoxContainer);
-
- //do the mario
- int from = p_page - 5;
- if (from < 0)
- from = 0;
- int to = from + 10;
- if (to > p_page_count)
- to = p_page_count;
-
- Color gray = Color(0.65, 0.65, 0.65);
-
- hbc->add_spacer();
- hbc->add_constant_override("separation", 10);
-
- if (p_page != 0) {
- LinkButton *first = memnew(LinkButton);
- first->set_text(TTR("first"));
- first->add_color_override("font_color", gray);
- first->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- first->connect("pressed", this, "_search", varray(0));
- hbc->add_child(first);
- }
-
- if (p_page > 0) {
- LinkButton *prev = memnew(LinkButton);
- prev->set_text(TTR("prev"));
- prev->add_color_override("font_color", gray);
- prev->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- prev->connect("pressed", this, "_search", varray(p_page - 1));
- hbc->add_child(prev);
- }
-
- for (int i = from; i < to; i++) {
-
- if (i == p_page) {
-
- Label *current = memnew(Label);
- current->set_text(itos(i + 1));
- hbc->add_child(current);
- } else {
-
- LinkButton *current = memnew(LinkButton);
- current->add_color_override("font_color", gray);
- current->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- current->set_text(itos(i + 1));
- current->connect("pressed", this, "_search", varray(i));
-
- hbc->add_child(current);
- }
- }
-
- if (p_page < p_page_count - 1) {
- LinkButton *next = memnew(LinkButton);
- next->set_text(TTR("next"));
- next->add_color_override("font_color", gray);
- next->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- next->connect("pressed", this, "_search", varray(p_page + 1));
-
- hbc->add_child(next);
- }
-
- if (p_page != p_page_count - 1) {
- LinkButton *last = memnew(LinkButton);
- last->set_text(TTR("last"));
- last->add_color_override("font_color", gray);
- last->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
- hbc->add_child(last);
- last->connect("pressed", this, "_search", varray(p_page_count - 1));
- }
-
- Label *totals = memnew(Label);
- totals->set_text("( " + itos(from * p_page_len) + " - " + itos(from * p_page_len + p_current_items - 1) + " / " + itos(p_total_items) + " )");
- hbc->add_child(totals);
-
- hbc->add_spacer();
-
- return hbc;
-}
-
-void EditorAssetLibrary::_api_request(const String &p_request, RequestType p_request_type, const String &p_arguments) {
-
- if (requesting != REQUESTING_NONE) {
- request->cancel_request();
- }
-
- requesting = p_request_type;
-
- error_hb->hide();
- request->request(host + "/" + p_request + p_arguments);
-}
-
-void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data) {
-
- String str;
-
- {
- int datalen = p_data.size();
- PoolByteArray::Read r = p_data.read();
- str.parse_utf8((const char *)r.ptr(), datalen);
- }
-
- bool error_abort = true;
-
- switch (p_status) {
-
- case HTTPRequest::RESULT_CANT_RESOLVE: {
- error_label->set_text(TTR("Can't resolve hostname:") + " " + host);
- } break;
- case HTTPRequest::RESULT_BODY_SIZE_LIMIT_EXCEEDED:
- case HTTPRequest::RESULT_CONNECTION_ERROR:
- case HTTPRequest::RESULT_CHUNKED_BODY_SIZE_MISMATCH: {
- error_label->set_text(TTR("Connection error, please try again."));
- } break;
- case HTTPRequest::RESULT_SSL_HANDSHAKE_ERROR:
- case HTTPRequest::RESULT_CANT_CONNECT: {
- error_label->set_text(TTR("Can't connect to host:") + " " + host);
- } break;
- case HTTPRequest::RESULT_NO_RESPONSE: {
- error_label->set_text(TTR("No response from host:") + " " + host);
- } break;
- case HTTPRequest::RESULT_REQUEST_FAILED: {
- error_label->set_text(TTR("Request failed, return code:") + " " + itos(p_code));
- } break;
- case HTTPRequest::RESULT_REDIRECT_LIMIT_REACHED: {
- error_label->set_text(TTR("Request failed, too many redirects"));
-
- } break;
- default: {
- if (p_code != 200) {
- error_label->set_text(TTR("Request failed, return code:") + " " + itos(p_code));
- } else {
-
- error_abort = false;
- }
- } break;
- }
-
- if (error_abort) {
- error_hb->show();
- return;
- }
-
- print_line("response: " + itos(p_status) + " code: " + itos(p_code));
-
- Dictionary d;
- {
- Variant js;
- String errs;
- int errl;
- JSON::parse(str, js, errs, errl);
- d = js;
- }
-
- print_line(Variant(d).get_construct_string());
-
- RequestType requested = requesting;
- requesting = REQUESTING_NONE;
-
- switch (requested) {
- case REQUESTING_CONFIG: {
-
- categories->clear();
- categories->add_item(TTR("All"));
- categories->set_item_metadata(0, 0);
- if (d.has("categories")) {
- Array clist = d["categories"];
- for (int i = 0; i < clist.size(); i++) {
- Dictionary cat = clist[i];
- if (!cat.has("name") || !cat.has("id"))
- continue;
- String name = cat["name"];
- int id = cat["id"];
- categories->add_item(name);
- categories->set_item_metadata(categories->get_item_count() - 1, id);
- category_map[cat["id"]] = name;
- }
- }
-
- _search();
- } break;
- case REQUESTING_SEARCH: {
- if (asset_items) {
- memdelete(asset_items);
- }
-
- if (asset_top_page) {
- memdelete(asset_top_page);
- }
-
- if (asset_bottom_page) {
- memdelete(asset_bottom_page);
- }
-
- int page = 0;
- int pages = 1;
- int page_len = 10;
- int total_items = 1;
- Array result;
-
- if (d.has("page")) {
- page = d["page"];
- }
- if (d.has("pages")) {
- pages = d["pages"];
- }
- if (d.has("page_length")) {
- page_len = d["page_length"];
- }
- if (d.has("total")) {
- total_items = d["total"];
- }
- if (d.has("result")) {
- result = d["result"];
- }
-
- asset_top_page = _make_pages(page, pages, page_len, total_items, result.size());
- library_vb->add_child(asset_top_page);
-
- asset_items = memnew(GridContainer);
- asset_items->set_columns(2);
- asset_items->add_constant_override("hseparation", 10);
- asset_items->add_constant_override("vseparation", 10);
-
- library_vb->add_child(asset_items);
-
- asset_bottom_page = _make_pages(page, pages, page_len, total_items, result.size());
- library_vb->add_child(asset_bottom_page);
-
- for (int i = 0; i < result.size(); i++) {
-
- Dictionary r = result[i];
-
- ERR_CONTINUE(!r.has("title"));
- ERR_CONTINUE(!r.has("asset_id"));
- ERR_CONTINUE(!r.has("author"));
- ERR_CONTINUE(!r.has("author_id"));
- ERR_CONTINUE(!r.has("category_id"));
- ERR_FAIL_COND(!category_map.has(r["category_id"]));
- ERR_CONTINUE(!r.has("rating"));
- ERR_CONTINUE(!r.has("cost"));
-
- EditorAssetLibraryItem *item = memnew(EditorAssetLibraryItem);
- asset_items->add_child(item);
- item->configure(r["title"], r["asset_id"], category_map[r["category_id"]], r["category_id"], r["author"], r["author_id"], r["rating"], r["cost"]);
- item->connect("asset_selected", this, "_select_asset");
- item->connect("author_selected", this, "_select_author");
- item->connect("category_selected", this, "_select_category");
-
- if (r.has("icon_url") && r["icon_url"] != "") {
- _request_image(item->get_instance_id(), r["icon_url"], IMAGE_QUEUE_ICON, 0);
- }
- }
- } break;
- case REQUESTING_ASSET: {
- Dictionary r = d;
-
- ERR_FAIL_COND(!r.has("title"));
- ERR_FAIL_COND(!r.has("asset_id"));
- ERR_FAIL_COND(!r.has("author"));
- ERR_FAIL_COND(!r.has("author_id"));
- ERR_FAIL_COND(!r.has("version"));
- ERR_FAIL_COND(!r.has("version_string"));
- ERR_FAIL_COND(!r.has("category_id"));
- ERR_FAIL_COND(!category_map.has(r["category_id"]));
- ERR_FAIL_COND(!r.has("rating"));
- ERR_FAIL_COND(!r.has("cost"));
- ERR_FAIL_COND(!r.has("description"));
- ERR_FAIL_COND(!r.has("download_url"));
- ERR_FAIL_COND(!r.has("download_hash"));
- ERR_FAIL_COND(!r.has("browse_url"));
-
- if (description) {
- memdelete(description);
- }
-
- description = memnew(EditorAssetLibraryItemDescription);
- add_child(description);
- description->popup_centered_minsize();
- description->connect("confirmed", this, "_install_asset");
-
- description->configure(r["title"], r["asset_id"], category_map[r["category_id"]], r["category_id"], r["author"], r["author_id"], r["rating"], r["cost"], r["version"], r["version_string"], r["description"], r["download_url"], r["browse_url"], r["download_hash"]);
- /*item->connect("asset_selected",this,"_select_asset");
- item->connect("author_selected",this,"_select_author");
- item->connect("category_selected",this,"_category_selected");*/
-
- if (r.has("icon_url") && r["icon_url"] != "") {
- _request_image(description->get_instance_id(), r["icon_url"], IMAGE_QUEUE_ICON, 0);
- }
-
- if (d.has("previews")) {
- Array previews = d["previews"];
-
- for (int i = 0; i < previews.size(); i++) {
-
- Dictionary p = previews[i];
-
- ERR_CONTINUE(!p.has("type"));
- ERR_CONTINUE(!p.has("link"));
-
- bool is_video = p.has("type") && String(p["type"]) == "video";
- String video_url;
- if (is_video && p.has("link")) {
- video_url = p["link"];
- }
-
- description->add_preview(i, is_video, video_url);
-
- if (p.has("thumbnail")) {
- _request_image(description->get_instance_id(), p["thumbnail"], IMAGE_QUEUE_THUMBNAIL, i);
- }
- if (is_video) {
- //_request_image(description->get_instance_id(),p["link"],IMAGE_QUEUE_SCREENSHOT,i);
- } else {
- _request_image(description->get_instance_id(), p["link"], IMAGE_QUEUE_SCREENSHOT, i);
- }
- }
- }
- } break;
- default: break;
- }
-}
-
-void EditorAssetLibrary::_asset_file_selected(const String &p_file) {
-
- if (asset_installer) {
- memdelete(asset_installer);
- asset_installer = NULL;
- }
-
- asset_installer = memnew(EditorAssetInstaller);
- add_child(asset_installer);
- asset_installer->open(p_file);
-}
-
-void EditorAssetLibrary::_asset_open() {
-
- asset_open->popup_centered_ratio();
-}
-
-void EditorAssetLibrary::_manage_plugins() {
-
- ProjectSettingsEditor::get_singleton()->popup_project_settings();
- ProjectSettingsEditor::get_singleton()->set_plugins_page();
-}
-
-void EditorAssetLibrary::_install_external_asset(String p_zip_path, String p_title) {
-
- emit_signal("install_asset", p_zip_path, p_title);
-}
-
-void EditorAssetLibrary::_bind_methods() {
-
- ClassDB::bind_method("_http_request_completed", &EditorAssetLibrary::_http_request_completed);
- ClassDB::bind_method("_select_asset", &EditorAssetLibrary::_select_asset);
- ClassDB::bind_method("_select_author", &EditorAssetLibrary::_select_author);
- ClassDB::bind_method("_select_category", &EditorAssetLibrary::_select_category);
- ClassDB::bind_method("_image_request_completed", &EditorAssetLibrary::_image_request_completed);
- ClassDB::bind_method("_search", &EditorAssetLibrary::_search, DEFVAL(0));
- ClassDB::bind_method("_install_asset", &EditorAssetLibrary::_install_asset);
- ClassDB::bind_method("_manage_plugins", &EditorAssetLibrary::_manage_plugins);
- ClassDB::bind_method("_asset_open", &EditorAssetLibrary::_asset_open);
- ClassDB::bind_method("_asset_file_selected", &EditorAssetLibrary::_asset_file_selected);
- ClassDB::bind_method("_repository_changed", &EditorAssetLibrary::_repository_changed);
- ClassDB::bind_method("_support_toggled", &EditorAssetLibrary::_support_toggled);
- ClassDB::bind_method("_rerun_search", &EditorAssetLibrary::_rerun_search);
- ClassDB::bind_method("_install_external_asset", &EditorAssetLibrary::_install_external_asset);
-
- ADD_SIGNAL(MethodInfo("install_asset", PropertyInfo(Variant::STRING, "zip_path"), PropertyInfo(Variant::STRING, "name")));
-}
-
-EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) {
-
- templates_only = p_templates_only;
-
- VBoxContainer *library_main = memnew(VBoxContainer);
-
- add_child(library_main);
-
- HBoxContainer *search_hb = memnew(HBoxContainer);
-
- library_main->add_child(search_hb);
- library_main->add_constant_override("separation", 10);
-
- search_hb->add_child(memnew(Label(TTR("Search:") + " ")));
- filter = memnew(LineEdit);
- search_hb->add_child(filter);
- filter->set_h_size_flags(SIZE_EXPAND_FILL);
- filter->connect("text_entered", this, "_search");
- search = memnew(Button(TTR("Search")));
- search->connect("pressed", this, "_search");
- search_hb->add_child(search);
-
- if (!p_templates_only)
- search_hb->add_child(memnew(VSeparator));
-
- Button *open_asset = memnew(Button);
- open_asset->set_text(TTR("Import"));
- search_hb->add_child(open_asset);
- open_asset->connect("pressed", this, "_asset_open");
-
- Button *plugins = memnew(Button);
- plugins->set_text(TTR("Plugins"));
- search_hb->add_child(plugins);
- plugins->connect("pressed", this, "_manage_plugins");
-
- if (p_templates_only) {
- open_asset->hide();
- plugins->hide();
- }
-
- HBoxContainer *search_hb2 = memnew(HBoxContainer);
- library_main->add_child(search_hb2);
-
- search_hb2->add_child(memnew(Label(TTR("Sort:") + " ")));
- sort = memnew(OptionButton);
- for (int i = 0; i < SORT_MAX; i++) {
- sort->add_item(sort_text[i]);
- }
-
- search_hb2->add_child(sort);
-
- sort->set_h_size_flags(SIZE_EXPAND_FILL);
- sort->connect("item_selected", this, "_rerun_search");
-
- reverse = memnew(ToolButton);
- reverse->set_toggle_mode(true);
- reverse->connect("toggled", this, "_rerun_search");
- //reverse->set_text(TTR("Reverse"));
- search_hb2->add_child(reverse);
-
- search_hb2->add_child(memnew(VSeparator));
-
- //search_hb2->add_spacer();
-
- search_hb2->add_child(memnew(Label(TTR("Category:") + " ")));
- categories = memnew(OptionButton);
- categories->add_item(TTR("All"));
- search_hb2->add_child(categories);
- categories->set_h_size_flags(SIZE_EXPAND_FILL);
- //search_hb2->add_spacer();
- categories->connect("item_selected", this, "_rerun_search");
-
- search_hb2->add_child(memnew(VSeparator));
-
- search_hb2->add_child(memnew(Label(TTR("Site:") + " ")));
- repository = memnew(OptionButton);
-
- // FIXME: Reenable me once GH-7147 is fixed.
- /*
- repository->add_item("godotengine.org");
- repository->set_item_metadata(0, "https://godotengine.org/asset-library/api");
- */
- repository->add_item("localhost");
- repository->set_item_metadata(/*1*/ 0, "http://127.0.0.1/asset-library/api");
- repository->connect("item_selected", this, "_repository_changed");
-
- search_hb2->add_child(repository);
- repository->set_h_size_flags(SIZE_EXPAND_FILL);
-
- search_hb2->add_child(memnew(VSeparator));
-
- support = memnew(MenuButton);
- search_hb2->add_child(support);
- support->set_text(TTR("Support.."));
- support->get_popup()->add_check_item(TTR("Official"), SUPPORT_OFFICIAL);
- support->get_popup()->add_check_item(TTR("Community"), SUPPORT_COMMUNITY);
- support->get_popup()->add_check_item(TTR("Testing"), SUPPORT_TESTING);
- support->get_popup()->set_item_checked(SUPPORT_OFFICIAL, true);
- support->get_popup()->set_item_checked(SUPPORT_COMMUNITY, true);
- support->get_popup()->connect("id_pressed", this, "_support_toggled");
-
- /////////
-
- PanelContainer *library_scroll_bg = memnew(PanelContainer);
- library_main->add_child(library_scroll_bg);
- library_scroll_bg->add_style_override("panel", get_stylebox("normal", "TextEdit"));
- library_scroll_bg->set_v_size_flags(SIZE_EXPAND_FILL);
-
- library_scroll = memnew(ScrollContainer);
- library_scroll->set_enable_v_scroll(true);
- library_scroll->set_enable_h_scroll(false);
-
- library_scroll_bg->add_child(library_scroll);
-
- Ref<StyleBoxEmpty> border2;
- border2.instance();
- border2->set_default_margin(MARGIN_LEFT, 15);
- border2->set_default_margin(MARGIN_RIGHT, 35);
- border2->set_default_margin(MARGIN_BOTTOM, 15);
- border2->set_default_margin(MARGIN_TOP, 15);
-
- PanelContainer *library_vb_border = memnew(PanelContainer);
- library_scroll->add_child(library_vb_border);
- library_vb_border->add_style_override("panel", border2);
- library_vb_border->set_h_size_flags(SIZE_EXPAND_FILL);
- library_vb_border->set_mouse_filter(MOUSE_FILTER_PASS);
-
- library_vb = memnew(VBoxContainer);
- library_vb->set_h_size_flags(SIZE_EXPAND_FILL);
-
- library_vb_border->add_child(library_vb);
- //margin_panel->set_stop_mouse(false);
-
- asset_top_page = memnew(HBoxContainer);
- library_vb->add_child(asset_top_page);
-
- asset_items = memnew(GridContainer);
- asset_items->set_columns(2);
- asset_items->add_constant_override("hseparation", 10);
- asset_items->add_constant_override("vseparation", 10);
-
- library_vb->add_child(asset_items);
-
- asset_bottom_page = memnew(HBoxContainer);
- library_vb->add_child(asset_bottom_page);
-
- request = memnew(HTTPRequest);
- add_child(request);
- request->set_use_threads(EDITOR_DEF("asset_library/use_threads", true));
- request->connect("request_completed", this, "_http_request_completed");
-
- last_queue_id = 0;
-
- library_vb->add_constant_override("separation", 20);
-
- load_status = memnew(ProgressBar);
- load_status->set_min(0);
- load_status->set_max(1);
- load_status->set_step(0.001);
- library_main->add_child(load_status);
-
- error_hb = memnew(HBoxContainer);
- library_main->add_child(error_hb);
- error_label = memnew(Label);
- error_label->add_color_override("color", Color(1, 0.4, 0.3));
- error_hb->add_child(error_label);
-
- description = NULL;
-
- set_process(true);
-
- downloads_scroll = memnew(ScrollContainer);
- downloads_scroll->set_enable_h_scroll(true);
- downloads_scroll->set_enable_v_scroll(false);
- library_main->add_child(downloads_scroll);
- downloads_hb = memnew(HBoxContainer);
- downloads_scroll->add_child(downloads_hb);
-
- asset_open = memnew(EditorFileDialog);
-
- asset_open->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- asset_open->add_filter("*.zip ; " + TTR("Assets ZIP File"));
- asset_open->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- add_child(asset_open);
- asset_open->connect("file_selected", this, "_asset_file_selected");
-
- asset_installer = NULL;
-}
-
-///////
-
-void AssetLibraryEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
-
- addon_library->show();
- } else {
-
- addon_library->hide();
- }
-}
-
-AssetLibraryEditorPlugin::AssetLibraryEditorPlugin(EditorNode *p_node) {
-
- editor = p_node;
- addon_library = memnew(EditorAssetLibrary);
- addon_library->set_v_size_flags(Control::SIZE_EXPAND_FILL);
- editor->get_viewport()->add_child(addon_library);
- addon_library->set_area_as_parent_rect();
- addon_library->hide();
-}
-
-AssetLibraryEditorPlugin::~AssetLibraryEditorPlugin() {
-}
diff --git a/editor/asset_library_editor_plugin.h b/editor/asset_library_editor_plugin.h
deleted file mode 100644
index 9e4a240101..0000000000
--- a/editor/asset_library_editor_plugin.h
+++ /dev/null
@@ -1,324 +0,0 @@
-/*************************************************************************/
-/* asset_library_editor_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 ASSET_LIBRARY_EDITOR_PLUGIN_H
-#define ASSET_LIBRARY_EDITOR_PLUGIN_H
-
-#include "editor_plugin.h"
-#include "scene/gui/box_container.h"
-#include "scene/gui/check_box.h"
-#include "scene/gui/line_edit.h"
-#include "scene/gui/link_button.h"
-#include "scene/gui/option_button.h"
-#include "scene/gui/panel_container.h"
-#include "scene/gui/progress_bar.h"
-#include "scene/gui/separator.h"
-#include "scene/gui/tab_container.h"
-
-#include "editor_plugin_settings.h"
-#include "scene/gui/grid_container.h"
-#include "scene/gui/rich_text_label.h"
-#include "scene/gui/scroll_container.h"
-#include "scene/gui/texture_button.h"
-
-#include "editor_asset_installer.h"
-#include "scene/main/http_request.h"
-
-class EditorAssetLibraryItem : public PanelContainer {
-
- GDCLASS(EditorAssetLibraryItem, PanelContainer);
-
- TextureButton *icon;
- LinkButton *title;
- LinkButton *category;
- LinkButton *author;
- TextureRect *stars[5];
- Label *price;
-
- int asset_id;
- int category_id;
- int author_id;
-
- void _asset_clicked();
- void _category_clicked();
- void _author_clicked();
-
- void set_image(int p_type, int p_index, const Ref<Texture> &p_image);
-
-protected:
- void _notification(int p_what);
- static void _bind_methods();
-
-public:
- void configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost);
-
- EditorAssetLibraryItem();
-};
-
-class EditorAssetLibraryItemDescription : public ConfirmationDialog {
-
- GDCLASS(EditorAssetLibraryItemDescription, ConfirmationDialog);
-
- EditorAssetLibraryItem *item;
- RichTextLabel *description;
- ScrollContainer *previews;
- HBoxContainer *preview_hb;
-
- struct Preview {
- int id;
- bool is_video;
- String video_link;
- Button *button;
- Ref<Texture> image;
- };
-
- Vector<Preview> preview_images;
- TextureRect *preview;
-
- void set_image(int p_type, int p_index, const Ref<Texture> &p_image);
-
- int asset_id;
- String download_url;
- String title;
- String sha256;
- Ref<Texture> icon;
-
- void _link_click(const String &p_url);
- void _preview_click(int p_index);
-
-protected:
- static void _bind_methods();
-
-public:
- void configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost, int p_version, const String &p_version_string, const String &p_description, const String &p_download_url, const String &p_browse_url, const String &p_sha256_hash);
- void add_preview(int p_id, bool p_video, const String &p_url);
-
- String get_title() { return title; }
- Ref<Texture> get_preview_icon() { return icon; }
- String get_download_url() { return download_url; }
- int get_asset_id() { return asset_id; }
- String get_sha256() { return sha256; }
- EditorAssetLibraryItemDescription();
-};
-
-class EditorAssetLibraryItemDownload : public PanelContainer {
-
- GDCLASS(EditorAssetLibraryItemDownload, PanelContainer);
-
- TextureRect *icon;
- Label *title;
- ProgressBar *progress;
- Button *install;
- Button *retry;
- TextureButton *dismiss;
-
- AcceptDialog *download_error;
- HTTPRequest *download;
- String host;
- String sha256;
- Label *status;
-
- int prev_status;
-
- int asset_id;
-
- bool external_install;
-
- EditorAssetInstaller *asset_installer;
-
- void _close();
- void _install();
- void _make_request();
- void _http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
-
-protected:
- void _notification(int p_what);
- static void _bind_methods();
-
-public:
- void set_external_install(bool p_enable) { external_install = p_enable; }
- int get_asset_id() { return asset_id; }
- void configure(const String &p_title, int p_asset_id, const Ref<Texture> &p_preview, const String &p_download_url, const String &p_sha256_hash);
- EditorAssetLibraryItemDownload();
-};
-
-class EditorAssetLibrary : public PanelContainer {
- GDCLASS(EditorAssetLibrary, PanelContainer);
-
- String host;
-
- EditorFileDialog *asset_open;
- EditorAssetInstaller *asset_installer;
-
- void _asset_open();
- void _asset_file_selected(const String &p_file);
-
- ScrollContainer *library_scroll;
- VBoxContainer *library_vb;
- LineEdit *filter;
- OptionButton *categories;
- OptionButton *repository;
- OptionButton *sort;
- ToolButton *reverse;
- Button *search;
- ProgressBar *load_status;
- HBoxContainer *error_hb;
- Label *error_label;
- MenuButton *support;
-
- HBoxContainer *contents;
-
- HBoxContainer *asset_top_page;
- GridContainer *asset_items;
- HBoxContainer *asset_bottom_page;
-
- HTTPRequest *request;
-
- bool templates_only;
-
- enum Support {
- SUPPORT_OFFICIAL,
- SUPPORT_COMMUNITY,
- SUPPORT_TESTING,
- SUPPORT_MAX
- };
-
- enum SortOrder {
- SORT_RATING,
- SORT_DOWNLOADS,
- SORT_NAME,
- SORT_COST,
- SORT_UPDATED,
- SORT_MAX
- };
-
- static const char *sort_key[SORT_MAX];
- static const char *sort_text[SORT_MAX];
- static const char *support_key[SUPPORT_MAX];
-
- ///MainListing
-
- enum ImageType {
- IMAGE_QUEUE_ICON,
- IMAGE_QUEUE_THUMBNAIL,
- IMAGE_QUEUE_SCREENSHOT,
-
- };
-
- struct ImageQueue {
-
- bool active;
- int queue_id;
- int asset_id;
- ImageType image_type;
- int image_index;
- String image_url;
- HTTPRequest *request;
- ObjectID target;
- };
-
- int last_queue_id;
- Map<int, ImageQueue> image_queue;
-
- void _image_update(bool use_cache, bool final, const PoolByteArray &p_data, int p_queue_id);
- void _image_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data, int p_queue_id);
- void _request_image(ObjectID p_for, String p_image_url, ImageType p_type, int p_image_index);
- void _update_image_queue();
-
- HBoxContainer *_make_pages(int p_page, int p_page_count, int p_page_len, int p_total_items, int p_current_items);
-
- //
- EditorAssetLibraryItemDescription *description;
- //
-
- enum RequestType {
- REQUESTING_NONE,
- REQUESTING_CONFIG,
- REQUESTING_SEARCH,
- REQUESTING_ASSET,
- };
-
- RequestType requesting;
- Dictionary category_map;
-
- ScrollContainer *downloads_scroll;
- HBoxContainer *downloads_hb;
-
- void _install_asset();
-
- void _select_author(int p_id);
- void _select_category(int p_id);
- void _select_asset(int p_id);
-
- void _manage_plugins();
-
- void _search(int p_page = 0);
- void _rerun_search(int p_ignore);
- void _api_request(const String &p_request, RequestType p_request_type, const String &p_arguments = "");
- void _http_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
- void _http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
-
- void _repository_changed(int p_repository_id);
- void _support_toggled(int p_support);
-
- void _install_external_asset(String p_zip_path, String p_title);
-
- friend class EditorAssetLibraryItemDescription;
- friend class EditorAssetLibraryItem;
-
-protected:
- static void _bind_methods();
- void _notification(int p_what);
-
-public:
- EditorAssetLibrary(bool p_templates_only = false);
-};
-
-class AssetLibraryEditorPlugin : public EditorPlugin {
-
- GDCLASS(AssetLibraryEditorPlugin, EditorPlugin);
-
- EditorAssetLibrary *addon_library;
- EditorNode *editor;
-
-public:
- virtual String get_name() const { return "AssetLib"; }
- bool has_main_screen() const { return true; }
- virtual void edit(Object *p_object) {}
- virtual bool handles(Object *p_object) const { return false; }
- virtual void make_visible(bool p_visible);
- //virtual bool get_remove_list(List<Node*> *p_list) { return canvas_item_editor->get_remove_list(p_list); }
- //virtual Dictionary get_state() const;
- //virtual void set_state(const Dictionary& p_state);
-
- AssetLibraryEditorPlugin(EditorNode *p_node);
- ~AssetLibraryEditorPlugin();
-};
-
-#endif // EDITORASSETLIBRARY_H
diff --git a/editor/call_dialog.cpp b/editor/call_dialog.cpp
deleted file mode 100644
index 8cf9ed6ef4..0000000000
--- a/editor/call_dialog.cpp
+++ /dev/null
@@ -1,342 +0,0 @@
-/*************************************************************************/
-/* call_dialog.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "call_dialog.h"
-
-#if 0
-#include "class_db.h"
-#include "print_string.h"
-#include "scene/gui/label.h"
-
-
-class CallDialogParams : public Object {
-
- GDCLASS( CallDialogParams, Object );
-public:
-
- bool _set(const StringName& p_name, const Variant& p_value) {
-
- values[p_name]=p_value;
- return true;
- }
-
- bool _get(const StringName& p_name,Variant &r_ret) const {
-
- if (values.has(p_name)) {
- r_ret=values[p_name];
- return true;
- }
- return false;
- }
-
- void _get_property_list( List<PropertyInfo> *p_list) const {
-
- for(int i=0;i<method.arguments.size();i++)
- p_list->push_back(method.arguments[i]);
- }
-
- MethodInfo method;
- HashMap<String,Variant> values;
-
- CallDialogParams() {}
-};
-
-
-void CallDialog::_notification(int p_what) {
-
- if (p_what==NOTIFICATION_READY) {
-
- call->connect("pressed", this,"_call");
- cancel->connect("pressed", this,"_cancel");
- //filter->get_path()->connect("text_changed", this,"_text_changed");
- _update_method_list();
- }
-
- if (p_what==NOTIFICATION_EXIT_TREE) {
-
- call->disconnect("pressed", this,"_call");
- cancel->disconnect("pressed", this,"_cancel");
-
- //filter->get_path()->connect("text_changed", this,"_text_changed");
- _update_method_list();
- }
-
- if (p_what==NOTIFICATION_DRAW) {
-
- RID ci = get_canvas_item();
- get_stylebox("panel","PopupMenu")->draw(ci,Rect2(Point2(),get_size()));
- }
-}
-
-
-void CallDialog::_call() {
-
- if (!tree->get_selected())
- return;
-
- TreeItem* item=tree->get_selected();
- ERR_FAIL_COND(!item);
- int idx=item->get_metadata(0);
- ERR_FAIL_INDEX(idx,methods.size());
- MethodInfo &m = methods[idx];
-
- Variant args[VARIANT_ARG_MAX];
-
- for(int i=0;i<VARIANT_ARG_MAX;i++) {
-
- if (i>=m.arguments.size())
- continue;
-
- if (call_params->values.has(m.arguments[i].name))
- args[i]=call_params->values[m.arguments[i].name];
- }
-
- Variant ret = object->call(m.name,args[0],args[1],args[2],args[3],args[4]);
- if (ret.get_type()!=Variant::NIL)
- return_value->set_text(ret);
- else
- return_value->set_text("");
-}
-
-void CallDialog::_cancel() {
-
- hide();
-}
-
-
-void CallDialog::_item_selected() {
-
- TreeItem* item=tree->get_selected();
- ERR_FAIL_COND(!item);
-
- if (item->get_metadata(0).get_type()==Variant::NIL) {
-
- call->set_disabled(true);
- return;
- }
-
- call->set_disabled(false);
-
- int idx=item->get_metadata(0);
- ERR_FAIL_INDEX(idx,methods.size());
-
- MethodInfo &m = methods[idx];
-
- call_params->values.clear();
- call_params->method=m;
-
- property_editor->edit(call_params);
- property_editor->update_tree();
-
-
-}
-
-void CallDialog::_update_method_list() {
-
- tree->clear();
- if (!object)
- return;
-
- TreeItem *root = tree->create_item();
-
- List<MethodInfo> method_list;
- object->get_method_list(&method_list);
- method_list.sort();
- methods.clear();
-
- List<String> inheritance_list;
-
- String type = object->get_class();
-
- while(type!="") {
- inheritance_list.push_back( type );
- type=ClassDB::get_parent_class(type);
- }
-
- TreeItem *selected_item=NULL;
-
- for(int i=0;i<inheritance_list.size();i++) {
-
- String type=inheritance_list[i];
- String parent_type=ClassDB::get_parent_class(type);
-
- TreeItem *type_item=NULL;
-
- List<MethodInfo>::Element *N,*E=method_list.front();
-
- while(E) {
-
- N=E->next();
-
- if (parent_type!="" && ClassDB::get_method(parent_type,E->get().name)!=NULL) {
- E=N;
- continue;
- }
-
- if (!type_item) {
- type_item=tree->create_item(root);
- type_item->set_text(0,type);
- if (has_icon(type,"EditorIcons"))
- type_item->set_icon(0,get_icon(type,"EditorIcons"));
- }
-
- TreeItem *method_item = tree->create_item(type_item);
- method_item->set_text(0,E->get().name);
- method_item->set_metadata(0,methods.size());
- if (E->get().name==selected)
- selected_item=method_item;
- methods.push_back( E->get() );
-
- method_list.erase(E);
- E=N;
- }
- }
-
-
-
- if (selected_item)
- selected_item->select(0);
-}
-
-void CallDialog::_bind_methods() {
-
- ClassDB::bind_method("_call",&CallDialog::_call);
- ClassDB::bind_method("_cancel",&CallDialog::_cancel);
- ClassDB::bind_method("_item_selected", &CallDialog::_item_selected);
-
-}
-
-void CallDialog::set_object(Object *p_object,StringName p_selected) {
-
- object=p_object;
- selected=p_selected;
- property_editor->edit(NULL);
- call->set_disabled(true);
- return_value->clear();
-
- _update_method_list();
- method_label->set_text(vformat(TTR("Method List For '%s':"),p_object->get_class()));
-}
-
-CallDialog::CallDialog() {
-
- object=NULL;
-
- call = memnew( Button );
- call->set_anchor( MARGIN_LEFT, ANCHOR_END );
- call->set_anchor( MARGIN_TOP, ANCHOR_END );
- call->set_anchor( MARGIN_RIGHT, ANCHOR_END );
- call->set_anchor( MARGIN_BOTTOM, ANCHOR_END );
- call->set_begin( Point2( 70, 29 ) );
- call->set_end( Point2( 15, 15 ) );
- call->set_text(TTR("Call"));
-
- add_child(call);
-
- cancel = memnew( Button );
- cancel->set_anchor( MARGIN_TOP, ANCHOR_END );
- cancel->set_anchor( MARGIN_BOTTOM, ANCHOR_END );
- cancel->set_begin( Point2( 15, 29 ) );
- cancel->set_end( Point2( 70, 15 ) );
- cancel->set_text(TTR("Close"));
-
- add_child(cancel);
-
- tree = memnew( Tree );
-
- tree->set_anchor( MARGIN_BOTTOM, ANCHOR_END );
- tree->set_begin( Point2( 20,50 ) );
- tree->set_margin(MARGIN_BOTTOM, 44 );
- tree->set_margin(MARGIN_RIGHT, 0.5 );
- tree->set_select_mode( Tree::SELECT_ROW );
- add_child(tree);
-
- tree->connect("item_selected", this,"_item_selected");
- tree->set_hide_root(true);
-
- property_editor = memnew( PropertyEditor );
-
- property_editor->set_anchor_and_margin( MARGIN_RIGHT, ANCHOR_END, 15 );
- property_editor->set_anchor_and_margin( MARGIN_TOP, ANCHOR_BEGIN, 50 );
- //property_editor->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.55 );
- property_editor->set_anchor_and_margin( MARGIN_BOTTOM, ANCHOR_END, 90 );
- property_editor->get_scene_tree()->set_hide_root( true );
- property_editor->hide_top_label();
-
- add_child(property_editor);
- method_label = memnew(Label);
- method_label->set_position(Point2( 15,25));
- method_label->set_text(TTR("Method List:"));
-
- add_child(method_label);
-
- Label *label = memnew( Label );
- //label->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.53 );
- label->set_anchor_and_margin( MARGIN_TOP, ANCHOR_BEGIN, 25 );
- label->set_text(TTR("Arguments:"));
-
- add_child(label);
-
- return_label = memnew( Label );
- //return_label->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.53 );
- return_label->set_anchor_and_margin( MARGIN_TOP, ANCHOR_END, 85 );
- return_label->set_text(TTR("Return:"));
-
- add_child(return_label);
-
- return_value = memnew( LineEdit );
- //return_value->set_anchor_and_margin( MARGIN_LEFT, ANCHOR_RATIO, 0.55 );
- return_value->set_anchor_and_margin( MARGIN_RIGHT, ANCHOR_END, 15 );
- return_value->set_anchor_and_margin( MARGIN_TOP, ANCHOR_END, 65 );
-
- add_child(return_value);
-
- /*
- label = memnew( Label );
- label->set_anchor( MARGIN_TOP, ANCHOR_END );
- label->set_anchor( MARGIN_BOTTOM, ANCHOR_END );
-
- label->set_begin( Point2( 15,54) );
- label->set_end( Point2( 16,44) );
- label->set_text("Parameters:");
-
- add_child(label);
- */
-
-
- call_params = memnew( CallDialogParams );
- set_as_toplevel(true);
-}
-
-
-CallDialog::~CallDialog()
-{
- memdelete(call_params);
-}
-#endif
diff --git a/editor/call_dialog.h b/editor/call_dialog.h
deleted file mode 100644
index ab833c8dd3..0000000000
--- a/editor/call_dialog.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*************************************************************************/
-/* call_dialog.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 CALL_DIALOG_H
-#define CALL_DIALOG_H
-
-#include "editor/property_editor.h"
-#include "scene/gui/button.h"
-#include "scene/gui/label.h"
-#include "scene/gui/line_edit.h"
-#include "scene/gui/popup.h"
-#include "scene/gui/tree.h"
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-
-#if 0
-
-class CallDialogParams;
-
-class CallDialog : public Popup {
-
- GDCLASS( CallDialog, Popup );
-
-
- Label* method_label;
- Tree *tree;
- Button *call;
- Button *cancel;
-
- CallDialogParams *call_params;
- PropertyEditor *property_editor;
-
- Label *return_label;
- LineEdit *return_value;
- Object *object;
- StringName selected;
-
- Vector<MethodInfo> methods;
-
-
- void _item_selected();
- void _update_method_list();
- void _call();
- void _cancel();
-
-protected:
- static void _bind_methods();
- void _notification(int p_what);
-public:
-
- void set_object(Object *p_object,StringName p_selected="");
-
- CallDialog();
- ~CallDialog();
-
-};
-
-#endif
-#endif
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index 2e406fb23d..305e2e9159 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -70,7 +70,7 @@ GotoLineDialog::GotoLineDialog() {
line = memnew(LineEdit);
line->set_anchor(MARGIN_RIGHT, ANCHOR_END);
line->set_begin(Point2(15, 22));
- line->set_end(Point2(15, 35));
+ line->set_end(Point2(-15, 35));
add_child(line);
register_text_enter(line);
text_editor = NULL;
@@ -258,7 +258,6 @@ void FindReplaceBar::_get_search_from(int &r_line, int &r_col) {
int selection_from_col = text_edit->get_selection_from_column();
if (r_col >= selection_from_col && r_col <= text_edit->get_selection_to_column()) {
- r_col = selection_line;
r_col = selection_from_col;
}
}
@@ -887,7 +886,7 @@ FindReplaceDialog::FindReplaceDialog() {
replace_text = memnew(LineEdit);
replace_text->set_anchor(MARGIN_RIGHT, ANCHOR_END);
replace_text->set_begin(Point2(15, 132));
- replace_text->set_end(Point2(15, 135));
+ replace_text->set_end(Point2(-15, 135));
//replace_text->set_self_opacity(0.7);
replace_mc->add_child(replace_text);
@@ -937,8 +936,8 @@ FindReplaceDialog::FindReplaceDialog() {
skip->set_anchor(MARGIN_TOP, ANCHOR_END);
skip->set_anchor(MARGIN_RIGHT, ANCHOR_END);
skip->set_anchor(MARGIN_BOTTOM, ANCHOR_END);
- skip->set_begin(Point2(70, button_margin));
- skip->set_end(Point2(10, margin));
+ skip->set_begin(Point2(-70, -button_margin));
+ skip->set_end(Point2(-10, -margin));
skip->set_text(TTR("Skip"));
add_child(skip);
skip->connect("pressed", this, "_skip_pressed");
@@ -1037,8 +1036,9 @@ void CodeTextEditor::_complete_request() {
List<String> entries;
String ctext = text_editor->get_text_for_completion();
_code_complete_script(ctext, &entries);
+ bool forced = false;
if (code_complete_func) {
- code_complete_func(code_complete_ud, ctext, &entries);
+ code_complete_func(code_complete_ud, ctext, &entries, forced);
}
// print_line("COMPLETE: "+p_request);
if (entries.size() == 0)
@@ -1051,7 +1051,7 @@ void CodeTextEditor::_complete_request() {
strs[i++] = E->get();
}
- text_editor->code_complete(strs);
+ text_editor->code_complete(strs, forced);
}
void CodeTextEditor::_font_resize_timeout() {
@@ -1087,16 +1087,13 @@ void CodeTextEditor::update_editor_settings() {
text_editor->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink_speed"));
text_editor->set_draw_breakpoint_gutter(EditorSettings::get_singleton()->get("text_editor/line_numbers/show_breakpoint_gutter"));
text_editor->cursor_set_block_mode(EditorSettings::get_singleton()->get("text_editor/cursor/block_caret"));
+ text_editor->set_smooth_scroll_enabled(EditorSettings::get_singleton()->get("text_editor/open_scripts/smooth_scrolling"));
+ text_editor->set_v_scroll_speed(EditorSettings::get_singleton()->get("text_editor/open_scripts/v_scroll_speed"));
}
void CodeTextEditor::set_error(const String &p_error) {
- if (p_error != "") {
- error->set_text(p_error);
- error->show();
- } else {
- error->hide();
- }
+ error->set_text(p_error);
}
void CodeTextEditor::_update_font() {
@@ -1221,11 +1218,10 @@ CodeTextEditor::CodeTextEditor() {
error = memnew(Label);
status_bar->add_child(error);
- error->hide();
+ error->set_clip_text(true); //do not change, or else very long errors can push the whole container to the right
error->set_valign(Label::VALIGN_CENTER);
error->add_color_override("font_color", Color(1, 0.7, 0.6, 0.9));
-
- status_bar->add_spacer();
+ error->set_h_size_flags(SIZE_EXPAND_FILL); //required for it to display, given now it's clipping contents, do not touch
Label *line_txt = memnew(Label);
status_bar->add_child(line_txt);
@@ -1238,7 +1234,8 @@ CodeTextEditor::CodeTextEditor() {
status_bar->add_child(line_nb);
line_nb->set_valign(Label::VALIGN_CENTER);
line_nb->set_v_size_flags(SIZE_FILL);
- line_nb->set_autowrap(true); // workaround to prevent resizing the label on each change
+ line_nb->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch
+ line_nb->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch
line_nb->set_custom_minimum_size(Size2(40, 1) * EDSCALE);
Label *col_txt = memnew(Label);
@@ -1252,7 +1249,8 @@ CodeTextEditor::CodeTextEditor() {
status_bar->add_child(col_nb);
col_nb->set_valign(Label::VALIGN_CENTER);
col_nb->set_v_size_flags(SIZE_FILL);
- col_nb->set_autowrap(true); // workaround to prevent resizing the label on each change
+ col_nb->set_autowrap(true); // workaround to prevent resizing the label on each change, do not touch
+ col_nb->set_clip_text(true); // workaround to prevent resizing the label on each change, do not touch
col_nb->set_custom_minimum_size(Size2(40, 1) * EDSCALE);
text_editor->connect("gui_input", this, "_text_editor_gui_input");
@@ -1263,6 +1261,7 @@ CodeTextEditor::CodeTextEditor() {
cs.push_back(".");
cs.push_back(",");
cs.push_back("(");
+ cs.push_back("=");
cs.push_back("$");
text_editor->set_completion(true, cs);
idle->connect("timeout", this, "_text_changed_idle_timeout");
diff --git a/editor/code_editor.h b/editor/code_editor.h
index 8d48c56503..410dd99878 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -186,7 +186,7 @@ public:
FindReplaceDialog();
};
-typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<String> *r_options);
+typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<String> *r_options, bool &r_forced);
class CodeTextEditor : public VBoxContainer {
diff --git a/editor/collada/collada.cpp b/editor/collada/collada.cpp
index 169c34782d..4986d97e8f 100644
--- a/editor/collada/collada.cpp
+++ b/editor/collada/collada.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -31,7 +31,7 @@
#include "collada.h"
-#include "stdio.h"
+#include <stdio.h>
//#define DEBUG_DEFAULT_ANIMATION
//#define DEBUG_COLLADA
@@ -671,15 +671,7 @@ void Collada::_parse_effect_material(XMLParser &parser, Effect &effect, String &
}
} else if (what == "shininess") {
-#if 1
effect.shininess = _parse_param(parser);
-#else
-
- parser.read();
- float shininess = parser.get_node_data().to_double();
- effect.shininess = shininess;
- COLLADA_PRINT("shininess: " + rtos(shininess));
-#endif
}
} else if (parser.get_node_type() == XMLParser::NODE_ELEMENT_END && (parser.get_node_name() == "constant" ||
parser.get_node_name() == "lambert" ||
@@ -2505,7 +2497,7 @@ void Collada::_optimize() {
for (int i = 0; i < vs.root_nodes.size(); i++) {
_create_skeletons(&vs.root_nodes[i]);
}
-#if 1
+
for (int i = 0; i < vs.root_nodes.size(); i++) {
_merge_skeletons(&vs, vs.root_nodes[i]);
}
@@ -2531,7 +2523,7 @@ void Collada::_optimize() {
mgeom.pop_front();
}
}
-#endif
+
for (int i = 0; i < vs.root_nodes.size(); i++) {
_find_morph_nodes(&vs, vs.root_nodes[i]);
}
diff --git a/editor/collada/collada.h b/editor/collada/collada.h
index 8945e14cce..d41a72d7c5 100644
--- a/editor/collada/collada.h
+++ b/editor/collada/collada.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -613,7 +613,7 @@ private: // private stuff
void _parse_curve_geometry(XMLParser &parser, String p_id, String p_name);
void _parse_skin_controller(XMLParser &parser, String p_id);
- void _parse_morph_controller(XMLParser &parser, String id);
+ void _parse_morph_controller(XMLParser &parser, String p_id);
void _parse_controller(XMLParser &parser);
Node *_parse_visual_instance_geometry(XMLParser &parser);
diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp
index 47c2cb5536..b4c2ac95cc 100644
--- a/editor/connections_dialog.cpp
+++ b/editor/connections_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -113,33 +113,7 @@ void ConnectDialog::_tree_node_selected() {
make_callback->hide();
else
make_callback->show();
-#if 0
- List<MethodInfo> methods;
- current->get_method_list(&methods);
- for (List<MethodInfo>::Element *E=methods.front();E;E=E->next()) {
-
- if (E->get().name.length() && E->get().name[0]=='_')
- continue; // hidden method, not show!
-
- if (ClassDB::has_method(node->get_type(),"Node") || ClassDB::has_method(node->get_type(),"Control",true))
- continue; //avoid too much unnecessary stuff
-
- String method=E->get().name+"(";
- for(int i=0;i<E->get().arguments.size();i++) {
-
- if (i!=0)
- method+=", ";
- method+=Variant::get_type_name(E->get().arguments[i].type);
- if (E->get().arguments[i].name.length()) {
- method+=" ";
- method+=E->get().arguments[i].name;
- }
- }
- method+=")";
- //dst_method_list->get_popup()->add_item(method);
- }
-#endif
dst_path->set_text(node->get_path_to(current));
}
@@ -664,7 +638,7 @@ void ConnectionsDock::update_tree() {
if (!(c.flags & CONNECT_PERSIST))
continue;
- Node *target = c.target->cast_to<Node>();
+ Node *target = Object::cast_to<Node>(c.target);
if (!target)
continue;
@@ -800,7 +774,7 @@ ConnectionsDock::ConnectionsDock(EditorNode *p_editor) {
tree->set_v_size_flags(SIZE_EXPAND_FILL);
connect_button = memnew(Button);
- connect_button->set_text("Connect");
+ connect_button->set_text(TTR("Connect"));
HBoxContainer *hb = memnew(HBoxContainer);
vbc->add_child(hb);
hb->add_spacer();
diff --git a/editor/connections_dialog.h b/editor/connections_dialog.h
index bff85941cb..53f4d857bf 100644
--- a/editor/connections_dialog.h
+++ b/editor/connections_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -103,8 +103,6 @@ class ConnectionsDock : public VBoxContainer {
ConfirmationDialog *remove_confirm;
ConnectDialog *connect_dialog;
- void update_tree();
-
void _close();
void _connect();
void _something_selected();
@@ -121,6 +119,7 @@ public:
void set_node(Node *p_node);
String get_selected_type();
+ void update_tree();
ConnectionsDock(EditorNode *p_editor = NULL);
~ConnectionsDock();
diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp
index 1089068344..344cb87aa6 100644
--- a/editor/create_dialog.cpp
+++ b/editor/create_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/create_dialog.h b/editor/create_dialog.h
index 02ce762726..31f106ea22 100644
--- a/editor/create_dialog.h
+++ b/editor/create_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp
index 3533c0993f..890c3d8091 100644
--- a/editor/dependency_editor.cpp
+++ b/editor/dependency_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -50,7 +50,7 @@ void DependencyEditor::_searched(const String &p_path) {
void DependencyEditor::_load_pressed(Object *p_item, int p_cell, int p_button) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
String fname = ti->get_text(0);
replacing = ti->get_text(1);
@@ -626,7 +626,7 @@ void OrphanResourcesDialog::_delete_confirm() {
void OrphanResourcesDialog::_button_pressed(Object *p_item, int p_column, int p_id) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
String path = ti->get_metadata(0);
dep_edit->edit(path);
diff --git a/editor/dependency_editor.h b/editor/dependency_editor.h
index e7344bbf13..4dfb9de268 100644
--- a/editor/dependency_editor.h
+++ b/editor/dependency_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -106,7 +106,7 @@ class DependencyErrorDialog : public ConfirmationDialog {
void custom_action(const String &);
public:
- void show(const String &p_for, const Vector<String> &report);
+ void show(const String &p_for_file, const Vector<String> &report);
DependencyErrorDialog();
};
diff --git a/editor/doc/doc_data.cpp b/editor/doc/doc_data.cpp
index 69d7475f4c..5975e54356 100644
--- a/editor/doc/doc_data.cpp
+++ b/editor/doc/doc_data.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -163,6 +163,43 @@ void DocData::remove_from(const DocData &p_data) {
}
}
+static void return_doc_from_retinfo(DocData::MethodDoc &p_method, const PropertyInfo &p_retinfo) {
+
+ if (p_retinfo.type == Variant::INT && p_retinfo.usage & PROPERTY_USAGE_CLASS_IS_ENUM) {
+ p_method.return_enum = p_retinfo.class_name;
+ p_method.return_type = "int";
+ } else if (p_retinfo.class_name != StringName()) {
+ p_method.return_type = p_retinfo.class_name;
+ } else if (p_retinfo.hint == PROPERTY_HINT_RESOURCE_TYPE) {
+ p_method.return_type = p_retinfo.hint_string;
+ } else if (p_retinfo.type == Variant::NIL && p_retinfo.usage & PROPERTY_USAGE_NIL_IS_VARIANT) {
+ p_method.return_type = "Variant";
+ } else if (p_retinfo.type == Variant::NIL) {
+ p_method.return_type = "void";
+ } else {
+ p_method.return_type = Variant::get_type_name(p_retinfo.type);
+ }
+}
+
+static void argument_doc_from_arginfo(DocData::ArgumentDoc &p_argument, const PropertyInfo &p_arginfo) {
+
+ p_argument.name = p_arginfo.name;
+
+ if (p_arginfo.type == Variant::INT && p_arginfo.usage & PROPERTY_USAGE_CLASS_IS_ENUM) {
+ p_argument.enumeration = p_arginfo.class_name;
+ p_argument.type = "int";
+ } else if (p_arginfo.class_name != StringName()) {
+ p_argument.type = p_arginfo.class_name;
+ } else if (p_arginfo.hint == PROPERTY_HINT_RESOURCE_TYPE) {
+ p_argument.type = p_arginfo.hint_string;
+ } else if (p_arginfo.type == Variant::NIL) {
+ // Parameters cannot be void, so PROPERTY_USAGE_NIL_IS_VARIANT is not necessary
+ p_argument.type = "Variant";
+ } else {
+ p_argument.type = Variant::get_type_name(p_arginfo.type);
+ }
+}
+
void DocData::generate(bool p_basic_types) {
List<StringName> classes;
@@ -196,10 +233,40 @@ void DocData::generate(bool p_basic_types) {
prop.name = E->get().name;
prop.setter = setter;
prop.getter = getter;
- if (E->get().type == Variant::OBJECT && E->get().hint == PROPERTY_HINT_RESOURCE_TYPE)
- prop.type = E->get().hint_string;
- else
- prop.type = Variant::get_type_name(E->get().type);
+
+ bool found_type = false;
+ if (getter != StringName()) {
+ MethodBind *mb = ClassDB::get_method(name, getter);
+ if (mb) {
+ PropertyInfo retinfo = mb->get_return_info();
+
+ found_type = true;
+ if (retinfo.type == Variant::INT && retinfo.usage & PROPERTY_USAGE_CLASS_IS_ENUM) {
+ prop.enumeration = retinfo.class_name;
+ prop.type = "int";
+ } else if (retinfo.class_name != StringName()) {
+ prop.type = retinfo.class_name;
+ } else if (retinfo.hint == PROPERTY_HINT_RESOURCE_TYPE) {
+
+ prop.type = retinfo.hint_string;
+ } else if (retinfo.type == Variant::NIL && retinfo.usage & PROPERTY_USAGE_NIL_IS_VARIANT) {
+
+ prop.type = "Variant";
+ } else if (retinfo.type == Variant::NIL) {
+ prop.type = "void";
+ } else {
+ prop.type = Variant::get_type_name(retinfo.type);
+ }
+ }
+ }
+
+ if (!found_type) {
+
+ if (E->get().type == Variant::OBJECT && E->get().hint == PROPERTY_HINT_RESOURCE_TYPE)
+ prop.type = E->get().hint_string;
+ else
+ prop.type = Variant::get_type_name(E->get().type);
+ }
c.properties.push_back(prop);
}
@@ -217,15 +284,13 @@ void DocData::generate(bool p_basic_types) {
method.name = E->get().name;
- MethodBind *m = ClassDB::get_method(name, E->get().name);
-
if (E->get().flags & METHOD_FLAG_VIRTUAL)
method.qualifiers = "virtual";
+
if (E->get().flags & METHOD_FLAG_CONST) {
if (method.qualifiers != "")
method.qualifiers += " ";
method.qualifiers += "const";
-
} else if (E->get().flags & METHOD_FLAG_VARARG) {
if (method.qualifiers != "")
method.qualifiers += " ";
@@ -234,122 +299,23 @@ void DocData::generate(bool p_basic_types) {
for (int i = -1; i < E->get().arguments.size(); i++) {
- PropertyInfo arginfo;
-
if (i == -1) {
-
- arginfo = E->get().return_val;
#ifdef DEBUG_METHODS_ENABLED
- if (m && m->get_return_type() != StringName())
- method.return_type = m->get_return_type();
- else if (method.name.find(":") != -1) {
- method.return_type = method.name.get_slice(":", 1);
- method.name = method.name.get_slice(":", 0);
-
- } else if (arginfo.type != Variant::NIL) // {
+ return_doc_from_retinfo(method, E->get().return_val);
#endif
- method.return_type = (arginfo.hint == PROPERTY_HINT_RESOURCE_TYPE) ? arginfo.hint_string : Variant::get_type_name(arginfo.type);
- //}
-
} else {
- ArgumentDoc argument;
-
- arginfo = E->get().arguments[i];
-
- String type_name;
-
- if (arginfo.name.find(":") != -1) {
- type_name = arginfo.name.get_slice(":", 1);
- arginfo.name = arginfo.name.get_slice(":", 0);
-
- } else if (arginfo.hint == PROPERTY_HINT_RESOURCE_TYPE) {
- type_name = arginfo.hint_string;
- } else if (arginfo.type == Variant::NIL)
- type_name = "Variant";
- else
- type_name = Variant::get_type_name(arginfo.type);
-
- if (arginfo.type == Variant::OBJECT) {
-
- //print_line("validate: "+cname+"::"+method.name);
- }
+ const PropertyInfo &arginfo = E->get().arguments[i];
- if (m && m->has_default_argument(i)) {
- Variant default_arg = m->get_default_argument(i);
- String default_arg_text = m->get_default_argument(i);
-
- switch (default_arg.get_type()) {
-
- case Variant::NIL:
- default_arg_text = "NULL";
- break;
- // atomic types
- case Variant::BOOL:
- if (bool(default_arg))
- default_arg_text = "true";
- else
- default_arg_text = "false";
- break;
- case Variant::INT:
- case Variant::REAL:
- //keep it
- break;
- case Variant::STRING:
- case Variant::NODE_PATH:
- default_arg_text = "\"" + default_arg_text + "\"";
- break;
- case Variant::TRANSFORM:
- if (default_arg.operator Transform() == Transform()) {
- default_arg_text = "";
- }
-
- default_arg_text = Variant::get_type_name(default_arg.get_type()) + "(" + default_arg_text + ")";
- break;
-
- case Variant::RECT3:
- case Variant::COLOR:
- case Variant::PLANE:
- case Variant::POOL_BYTE_ARRAY:
- case Variant::POOL_INT_ARRAY:
- case Variant::POOL_REAL_ARRAY:
- case Variant::POOL_STRING_ARRAY:
- case Variant::POOL_VECTOR2_ARRAY:
- case Variant::POOL_VECTOR3_ARRAY:
- case Variant::POOL_COLOR_ARRAY:
- default_arg_text = Variant::get_type_name(default_arg.get_type()) + "(" + default_arg_text + ")";
- break;
- case Variant::VECTOR2:
- case Variant::RECT2:
- case Variant::VECTOR3:
- case Variant::QUAT:
- case Variant::BASIS:
- default_arg_text = Variant::get_type_name(default_arg.get_type()) + default_arg_text;
- break;
- case Variant::OBJECT:
- if (default_arg.is_zero()) {
- default_arg_text = "NULL";
- break;
- }
- case Variant::DICTIONARY: // 20
- case Variant::ARRAY:
- case Variant::_RID:
+ ArgumentDoc argument;
- default: {}
- }
+ argument_doc_from_arginfo(argument, arginfo);
- argument.type = type_name;
- argument.name = arginfo.name;
- argument.default_value = default_arg_text;
- } else {
+ int darg_idx = i - (E->get().arguments.size() - E->get().default_arguments.size());
- argument.type = type_name;
- argument.name = arginfo.name;
- }
-
- if (arginfo.type == Variant::OBJECT) {
-
- //print_line("validate: "+cname+"::"+method.name);
+ if (darg_idx >= 0) {
+ Variant default_arg = E->get().default_arguments[darg_idx];
+ argument.default_value = default_arg.get_construct_string();
}
method.arguments.push_back(argument);
@@ -404,6 +370,7 @@ void DocData::generate(bool p_basic_types) {
ConstantDoc constant;
constant.name = E->get();
constant.value = itos(ClassDB::get_integer_constant(name, E->get()));
+ constant.enumeration = ClassDB::get_integer_constant_enum(name, E->get());
c.constants.push_back(constant);
}
@@ -500,26 +467,26 @@ void DocData::generate(bool p_basic_types) {
for (int i = 0; i < mi.arguments.size(); i++) {
- ArgumentDoc arg;
- PropertyInfo pi = mi.arguments[i];
+ PropertyInfo arginfo = mi.arguments[i];
+
+ ArgumentDoc ad;
+ ad.name = arginfo.name;
- arg.name = pi.name;
- //print_line("arg name: "+arg.name);
- if (pi.type == Variant::NIL)
- arg.type = "var";
+ if (arginfo.type == Variant::NIL)
+ ad.type = "var";
else
- arg.type = Variant::get_type_name(pi.type);
+ ad.type = Variant::get_type_name(arginfo.type);
+
int defarg = mi.default_arguments.size() - mi.arguments.size() + i;
if (defarg >= 0)
- arg.default_value = mi.default_arguments[defarg];
+ ad.default_value = mi.default_arguments[defarg];
- method.arguments.push_back(arg);
+ method.arguments.push_back(ad);
}
if (mi.return_val.type == Variant::NIL) {
if (mi.return_val.name != "")
method.return_type = "var";
-
} else {
method.return_type = Variant::get_type_name(mi.return_val.type);
}
@@ -565,6 +532,7 @@ void DocData::generate(bool p_basic_types) {
ConstantDoc cd;
cd.name = GlobalConstants::get_global_constant_name(i);
cd.value = itos(GlobalConstants::get_global_constant_value(i));
+ cd.enumeration = GlobalConstants::get_global_constant_enum(i);
c.constants.push_back(cd);
}
@@ -607,26 +575,19 @@ void DocData::generate(bool p_basic_types) {
MethodInfo &mi = E->get();
MethodDoc md;
md.name = mi.name;
- if (mi.return_val.name != "")
- md.return_type = mi.return_val.name;
- else if (mi.name.find(":") != -1) {
- md.return_type = mi.name.get_slice(":", 1);
- md.name = mi.name.get_slice(":", 0);
- } else
- md.return_type = Variant::get_type_name(mi.return_val.type);
-
- for (int i = 0; i < mi.arguments.size(); i++) {
- PropertyInfo &pi = mi.arguments[i];
+ if (mi.flags & METHOD_FLAG_VARARG) {
+ if (md.qualifiers != "")
+ md.qualifiers += " ";
+ md.qualifiers += "vararg";
+ }
- ArgumentDoc ad;
- ad.name = pi.name;
+ return_doc_from_retinfo(md, mi.return_val);
- if (pi.type == Variant::NIL)
- ad.type = "Variant";
- else
- ad.type = Variant::get_type_name(pi.type);
+ for (int i = 0; i < mi.arguments.size(); i++) {
+ ArgumentDoc ad;
+ argument_doc_from_arginfo(ad, mi.arguments[i]);
md.arguments.push_back(ad);
}
@@ -680,6 +641,9 @@ static Error _parse_methods(Ref<XMLParser> &parser, Vector<DocData::MethodDoc> &
argument.name = parser->get_attribute_value("name");
ERR_FAIL_COND_V(!parser->has_attribute("type"), ERR_FILE_CORRUPT);
argument.type = parser->get_attribute_value("type");
+ if (parser->has_attribute("enum")) {
+ argument.enumeration = parser->get_attribute_value("enum");
+ }
method.arguments.push_back(argument);
@@ -803,7 +767,8 @@ Error DocData::_load(Ref<XMLParser> parser) {
prop.getter = parser->get_attribute_value("getter");
if (parser->has_attribute("brief"))
prop.brief_description = parser->get_attribute_value("brief").xml_unescape();
-
+ if (parser->has_attribute("enum"))
+ prop.enumeration = parser->get_attribute_value("enum");
parser->read();
if (parser->get_node_type() == XMLParser::NODE_TEXT)
prop.description = parser->get_node_data().strip_edges();
@@ -861,6 +826,9 @@ Error DocData::_load(Ref<XMLParser> parser) {
constant.name = parser->get_attribute_value("name");
ERR_FAIL_COND_V(!parser->has_attribute("value"), ERR_FILE_CORRUPT);
constant.value = parser->get_attribute_value("value");
+ if (parser->has_attribute("enum")) {
+ constant.enumeration = parser->get_attribute_value("enum");
+ }
parser->read();
if (parser->get_node_type() == XMLParser::NODE_TEXT)
constant.description = parser->get_node_data().strip_edges();
@@ -955,10 +923,16 @@ Error DocData::save(const String &p_path) {
for (int j = 0; j < m.arguments.size(); j++) {
ArgumentDoc &a = m.arguments[j];
+
+ String enum_text;
+ if (a.enumeration != String()) {
+ enum_text = " enum=\"" + a.enumeration + "\"";
+ }
+
if (a.default_value != "")
- _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\" default=\"" + a.default_value.xml_escape(true) + "\">");
+ _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\"" + enum_text + " default=\"" + a.default_value.xml_escape(true) + "\">");
else
- _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\">");
+ _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\"" + enum_text + ">");
_write_string(f, 3, "</argument>");
}
@@ -980,8 +954,12 @@ Error DocData::save(const String &p_path) {
for (int i = 0; i < c.properties.size(); i++) {
+ String enum_text;
+ if (c.properties[i].enumeration != String()) {
+ enum_text = " enum=\"" + c.properties[i].enumeration + "\"";
+ }
PropertyDoc &p = c.properties[i];
- _write_string(f, 2, "<member name=\"" + p.name + "\" type=\"" + p.type + "\" setter=\"" + p.setter + "\" getter=\"" + p.getter + "\" brief=\"" + p.brief_description.xml_escape(true) + "\">");
+ _write_string(f, 2, "<member name=\"" + p.name + "\" type=\"" + p.type + "\" setter=\"" + p.setter + "\" getter=\"" + p.getter + "\" brief=\"" + p.brief_description.xml_escape(true) + "\"" + enum_text + ">");
if (p.description != "")
_write_string(f, 3, p.description.xml_escape());
_write_string(f, 2, "</member>");
@@ -1021,7 +999,11 @@ Error DocData::save(const String &p_path) {
for (int i = 0; i < c.constants.size(); i++) {
ConstantDoc &k = c.constants[i];
- _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value + "\">");
+ if (k.enumeration != String()) {
+ _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value + "\">");
+ } else {
+ _write_string(f, 2, "<constant name=\"" + k.name + "\" value=\"" + k.value + "\" enum=\"" + k.enumeration + "\">");
+ }
if (k.description != "")
_write_string(f, 3, k.description.xml_escape());
_write_string(f, 2, "</constant>");
diff --git a/editor/doc/doc_data.h b/editor/doc/doc_data.h
index 41dfae428a..efb4ea3040 100644
--- a/editor/doc/doc_data.h
+++ b/editor/doc/doc_data.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,6 +40,7 @@ public:
String name;
String type;
+ String enumeration;
String default_value;
};
@@ -47,6 +48,7 @@ public:
String name;
String return_type;
+ String return_enum;
String qualifiers;
String description;
Vector<ArgumentDoc> arguments;
@@ -59,6 +61,7 @@ public:
String name;
String value;
+ String enumeration;
String description;
};
@@ -66,6 +69,7 @@ public:
String name;
String type;
+ String enumeration;
String brief_description;
String description;
String setter, getter;
diff --git a/editor/doc/doc_dump.cpp b/editor/doc/doc_dump.cpp
index 79a8f79a7c..2ba7e3c779 100644
--- a/editor/doc/doc_dump.cpp
+++ b/editor/doc/doc_dump.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/doc/doc_dump.h b/editor/doc/doc_dump.h
index 300ce916ee..4764a0e0d4 100644
--- a/editor/doc/doc_dump.h
+++ b/editor/doc/doc_dump.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/doc_code_font.h b/editor/doc_code_font.h
index 8fbfa7b1d6..e962351daf 100644
--- a/editor/doc_code_font.h
+++ b/editor/doc_code_font.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/doc_font.h b/editor/doc_font.h
index a3d41bb8ef..4ec8c39db2 100644
--- a/editor/doc_font.h
+++ b/editor/doc_font.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/doc_title_font.h b/editor/doc_title_font.h
index 14da323aa7..dd1bb7ca8e 100644
--- a/editor/doc_title_font.h
+++ b/editor/doc_title_font.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp
index fd90c766fd..8bd7bfb4bd 100644
--- a/editor/editor_about.cpp
+++ b/editor/editor_about.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_about.h b/editor/editor_about.h
index 0bde94531a..d7047c03a3 100644
--- a/editor/editor_about.h
+++ b/editor/editor_about.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp
index 96bfb295ea..a8eee24fe2 100644
--- a/editor/editor_asset_installer.cpp
+++ b/editor/editor_asset_installer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -89,7 +89,7 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) {
unzFile pkg = unzOpen2(p_path.utf8().get_data(), &io);
if (!pkg) {
- error->set_text("Error opening package file, not in zip format.");
+ error->set_text(TTR("Error opening package file, not in zip format."));
return;
}
@@ -100,7 +100,7 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) {
//get filename
unz_file_info info;
char fname[16384];
- ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, NULL, 0, NULL, 0);
+ unzGetCurrentFileInfo(pkg, &info, fname, 16384, NULL, 0, NULL, 0);
String name = fname;
files_sorted.insert(name);
@@ -221,7 +221,7 @@ void EditorAssetInstaller::ok_pressed() {
unzFile pkg = unzOpen2(package_path.utf8().get_data(), &io);
if (!pkg) {
- error->set_text("Error opening package file, not in zip format.");
+ error->set_text(TTR("Error opening package file, not in zip format."));
return;
}
@@ -229,7 +229,7 @@ void EditorAssetInstaller::ok_pressed() {
Vector<String> failed_files;
- ProgressDialog::get_singleton()->add_task("uncompress", "Uncompressing Assets", status_map.size());
+ ProgressDialog::get_singleton()->add_task("uncompress", TTR("Uncompressing Assets"), status_map.size());
int idx = 0;
while (ret == UNZ_OK) {
@@ -304,7 +304,7 @@ void EditorAssetInstaller::ok_pressed() {
EditorNode::get_singleton()->show_warning(msg);
} else {
if (EditorNode::get_singleton() != NULL)
- EditorNode::get_singleton()->show_warning("Package Installed Successfully!", "Success!");
+ EditorNode::get_singleton()->show_warning(TTR("Package Installed Successfully!"), TTR("Success!"));
}
EditorFileSystem::get_singleton()->scan_changes();
}
@@ -325,8 +325,8 @@ EditorAssetInstaller::EditorAssetInstaller() {
error = memnew(AcceptDialog);
add_child(error);
- get_ok()->set_text("Install");
- set_title("Package Installer");
+ get_ok()->set_text(TTR("Install"));
+ set_title(TTR("Package Installer"));
updating = false;
diff --git a/editor/editor_asset_installer.h b/editor/editor_asset_installer.h
index e74bd6925b..cda1b4d2b5 100644
--- a/editor/editor_asset_installer.h
+++ b/editor/editor_asset_installer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index 993429a5a4..b3eb3e23a9 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -128,7 +128,7 @@ void EditorAudioBus::update_send() {
send->clear();
if (get_index() == 0) {
send->set_disabled(true);
- send->set_text("Speakers");
+ send->set_text(TTR("Speakers"));
} else {
send->set_disabled(false);
StringName current_send = AudioServer::get_singleton()->get_bus_send(get_index());
@@ -183,7 +183,7 @@ void EditorAudioBus::update_bus() {
add->set_cell_mode(0, TreeItem::CELL_MODE_CUSTOM);
add->set_editable(0, true);
add->set_selectable(0, false);
- add->set_text(0, "Add Effect");
+ add->set_text(0, TTR("Add Effect"));
update_send();
@@ -221,7 +221,7 @@ void EditorAudioBus::_name_changed(const String &p_new_name) {
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
StringName current = AudioServer::get_singleton()->get_bus_name(get_index());
- ur->create_action("Rename Audio Bus");
+ ur->create_action(TTR("Rename Audio Bus"));
ur->add_do_method(AudioServer::get_singleton(), "set_bus_name", get_index(), attempt);
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_name", get_index(), current);
@@ -264,7 +264,7 @@ void EditorAudioBus::_solo_toggled() {
updating_bus = true;
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Toggle Audio Bus Solo");
+ ur->create_action(TTR("Toggle Audio Bus Solo"));
ur->add_do_method(AudioServer::get_singleton(), "set_bus_solo", get_index(), solo->is_pressed());
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_solo", get_index(), AudioServer::get_singleton()->is_bus_solo(get_index()));
ur->add_do_method(buses, "_update_bus", get_index());
@@ -278,7 +278,7 @@ void EditorAudioBus::_mute_toggled() {
updating_bus = true;
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Toggle Audio Bus Mute");
+ ur->create_action(TTR("Toggle Audio Bus Mute"));
ur->add_do_method(AudioServer::get_singleton(), "set_bus_mute", get_index(), mute->is_pressed());
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_mute", get_index(), AudioServer::get_singleton()->is_bus_mute(get_index()));
ur->add_do_method(buses, "_update_bus", get_index());
@@ -292,7 +292,7 @@ void EditorAudioBus::_bypass_toggled() {
updating_bus = true;
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Toggle Audio Bus Bypass Effects");
+ ur->create_action(TTR("Toggle Audio Bus Bypass Effects"));
ur->add_do_method(AudioServer::get_singleton(), "set_bus_bypass_effects", get_index(), bypass->is_pressed());
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_bypass_effects", get_index(), AudioServer::get_singleton()->is_bus_bypassing_effects(get_index()));
ur->add_do_method(buses, "_update_bus", get_index());
@@ -356,7 +356,7 @@ void EditorAudioBus::_effect_edited() {
updating_bus = true;
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Select Audio Bus Send");
+ ur->create_action(TTR("Select Audio Bus Send"));
ur->add_do_method(AudioServer::get_singleton(), "set_bus_effect_enabled", get_index(), index, effect->is_checked(0));
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_effect_enabled", get_index(), index, AudioServer::get_singleton()->is_bus_effect_enabled(get_index(), index));
ur->add_do_method(buses, "_update_bus", get_index());
@@ -376,14 +376,14 @@ void EditorAudioBus::_effect_add(int p_which) {
Object *fx = ClassDB::instance(name);
ERR_FAIL_COND(!fx);
- AudioEffect *afx = fx->cast_to<AudioEffect>();
+ AudioEffect *afx = Object::cast_to<AudioEffect>(fx);
ERR_FAIL_COND(!afx);
Ref<AudioEffect> afxr = Ref<AudioEffect>(afx);
afxr->set_name(effect_options->get_item_text(p_which));
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Add Audio Bus Effect");
+ ur->create_action(TTR("Add Audio Bus Effect"));
ur->add_do_method(AudioServer::get_singleton(), "add_bus_effect", get_index(), afxr, -1);
ur->add_undo_method(AudioServer::get_singleton(), "remove_bus_effect", get_index(), AudioServer::get_singleton()->get_bus_effect_count(get_index()));
ur->add_do_method(buses, "_update_bus", get_index());
@@ -403,12 +403,13 @@ void EditorAudioBus::_gui_input(const Ref<InputEvent> &p_event) {
if (mb.is_valid() && mb->get_button_index() == 2 && mb->is_pressed()) {
Vector2 pos = Vector2(mb->get_position().x, mb->get_position().y);
- delete_popup->set_position(get_global_position() + pos);
- delete_popup->popup();
+ bus_popup->set_position(get_global_position() + pos);
+ bus_popup->set_item_disabled(1, get_index() == 0);
+ bus_popup->popup();
}
}
-void EditorAudioBus::_delete_pressed(int p_option) {
+void EditorAudioBus::_bus_popup_pressed(int p_option) {
if (p_option == 1) {
emit_signal("delete_request");
@@ -526,7 +527,7 @@ void EditorAudioBus::drop_data_fw(const Point2 &p_point, const Variant &p_data,
bool enabled = AudioServer::get_singleton()->is_bus_effect_enabled(bus, effect);
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Move Bus Effect");
+ ur->create_action(TTR("Move Bus Effect"));
ur->add_do_method(AudioServer::get_singleton(), "remove_bus_effect", bus, effect);
ur->add_do_method(AudioServer::get_singleton(), "add_bus_effect", get_index(), AudioServer::get_singleton()->get_bus_effect(bus, effect), paste_at);
@@ -567,7 +568,7 @@ void EditorAudioBus::_delete_effect_pressed(int p_option) {
int index = item->get_metadata(0);
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Delete Bus Effect");
+ ur->create_action(TTR("Delete Bus Effect"));
ur->add_do_method(AudioServer::get_singleton(), "remove_bus_effect", get_index(), index);
ur->add_undo_method(AudioServer::get_singleton(), "add_bus_effect", get_index(), AudioServer::get_singleton()->get_bus_effect(get_index(), index), index);
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_effect_enabled", get_index(), index, AudioServer::get_singleton()->is_bus_effect_enabled(get_index(), index));
@@ -604,7 +605,7 @@ void EditorAudioBus::_bind_methods() {
ClassDB::bind_method("_effect_selected", &EditorAudioBus::_effect_selected);
ClassDB::bind_method("_effect_add", &EditorAudioBus::_effect_add);
ClassDB::bind_method("_gui_input", &EditorAudioBus::_gui_input);
- ClassDB::bind_method("_delete_pressed", &EditorAudioBus::_delete_pressed);
+ ClassDB::bind_method("_bus_popup_pressed", &EditorAudioBus::_bus_popup_pressed);
ClassDB::bind_method("get_drag_data_fw", &EditorAudioBus::get_drag_data_fw);
ClassDB::bind_method("can_drop_data_fw", &EditorAudioBus::can_drop_data_fw);
ClassDB::bind_method("drop_data_fw", &EditorAudioBus::drop_data_fw);
@@ -705,8 +706,8 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {
effects->set_drag_forwarding(this);
effects->connect("item_rmb_selected", this, "_effect_rmb");
effects->set_allow_rmb_select(true);
- effects->set_single_select_cell_editing_only_when_already_selected(true);
effects->set_focus_mode(FOCUS_CLICK);
+ effects->set_allow_reselect(true);
send = memnew(OptionButton);
send->set_clip_text(true);
@@ -735,14 +736,13 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {
effect_options->set_item_icon(effect_options->get_item_count() - 1, icon);
}
- delete_popup = bus_options->get_popup();
- delete_popup->add_item("Duplicate");
- delete_popup->add_item("Delete");
- add_child(delete_popup);
- delete_popup->connect("index_pressed", this, "_delete_pressed");
+ bus_popup = bus_options->get_popup();
+ bus_popup->add_item(TTR("Duplicate"));
+ bus_popup->add_item(TTR("Delete"));
+ bus_popup->connect("index_pressed", this, "_bus_popup_pressed");
delete_effect_popup = memnew(PopupMenu);
- delete_effect_popup->add_item("Delete Effect");
+ delete_effect_popup->add_item(TTR("Delete Effect"));
add_child(delete_effect_popup);
delete_effect_popup->connect("index_pressed", this, "_delete_effect_pressed");
}
@@ -840,7 +840,7 @@ void EditorAudioBuses::_add_bus() {
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
//need to simulate new name, so we can undi :(
- ur->create_action("Add Audio Bus");
+ ur->create_action(TTR("Add Audio Bus"));
ur->add_do_method(AudioServer::get_singleton(), "set_bus_count", AudioServer::get_singleton()->get_bus_count() + 1);
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_count", AudioServer::get_singleton()->get_bus_count());
ur->add_do_method(this, "_update_buses");
@@ -865,16 +865,16 @@ void EditorAudioBuses::_update_sends() {
void EditorAudioBuses::_delete_bus(Object *p_which) {
- EditorAudioBus *bus = p_which->cast_to<EditorAudioBus>();
+ EditorAudioBus *bus = Object::cast_to<EditorAudioBus>(p_which);
int index = bus->get_index();
if (index == 0) {
- EditorNode::get_singleton()->show_warning("Master bus can't be deleted!");
+ EditorNode::get_singleton()->show_warning(TTR("Master bus can't be deleted!"));
return;
}
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Delete Audio Bus");
+ ur->create_action(TTR("Delete Audio Bus"));
ur->add_do_method(AudioServer::get_singleton(), "remove_bus", index);
ur->add_undo_method(AudioServer::get_singleton(), "add_bus", index);
ur->add_undo_method(AudioServer::get_singleton(), "set_bus_name", index, AudioServer::get_singleton()->get_bus_name(index));
@@ -897,7 +897,7 @@ void EditorAudioBuses::_duplicate_bus(int p_which) {
int add_at_pos = p_which + 1;
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Duplicate Audio Bus");
+ ur->create_action(TTR("Duplicate Audio Bus"));
ur->add_do_method(AudioServer::get_singleton(), "add_bus", add_at_pos);
ur->add_do_method(AudioServer::get_singleton(), "set_bus_name", add_at_pos, AudioServer::get_singleton()->get_bus_name(p_which) + " Copy");
ur->add_do_method(AudioServer::get_singleton(), "set_bus_volume_db", add_at_pos, AudioServer::get_singleton()->get_bus_volume_db(p_which));
@@ -922,7 +922,7 @@ void EditorAudioBuses::_request_drop_end() {
drop_end = memnew(EditorAudioBusDrop);
bus_hb->add_child(drop_end);
- drop_end->set_custom_minimum_size(bus_hb->get_child(0)->cast_to<Control>()->get_size());
+ drop_end->set_custom_minimum_size(Object::cast_to<Control>(bus_hb->get_child(0))->get_size());
drop_end->connect("dropped", this, "_drop_at_index", varray(), CONNECT_DEFERRED);
}
}
@@ -932,7 +932,7 @@ void EditorAudioBuses::_drop_at_index(int p_bus, int p_index) {
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
//need to simulate new name, so we can undi :(
- ur->create_action("Move Audio Bus");
+ ur->create_action(TTR("Move Audio Bus"));
ur->add_do_method(AudioServer::get_singleton(), "move_bus", p_bus, p_index);
int final_pos;
if (p_index == p_bus) {
@@ -993,7 +993,7 @@ void EditorAudioBuses::_load_default_layout() {
Ref<AudioBusLayout> state = ResourceLoader::load("res://default_bus_layout.tres");
if (state.is_null()) {
- EditorNode::get_singleton()->show_warning("There is no 'res://default_bus_layout.tres' file.");
+ EditorNode::get_singleton()->show_warning(TTR("There is no 'res://default_bus_layout.tres' file."));
return;
}
@@ -1010,7 +1010,7 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) {
if (file_dialog->get_mode() == EditorFileDialog::MODE_OPEN_FILE) {
Ref<AudioBusLayout> state = ResourceLoader::load(p_string);
if (state.is_null()) {
- EditorNode::get_singleton()->show_warning("Invalid file, not an audio bus layout.");
+ EditorNode::get_singleton()->show_warning(TTR("Invalid file, not an audio bus layout."));
return;
}
@@ -1144,7 +1144,7 @@ void EditorAudioBuses::open_layout(const String &p_path) {
Ref<AudioBusLayout> state = ResourceLoader::load(p_path);
if (state.is_null()) {
- EditorNode::get_singleton()->show_warning("Invalid file, not an audio bus layout.");
+ EditorNode::get_singleton()->show_warning(TTR("Invalid file, not an audio bus layout."));
return;
}
@@ -1158,9 +1158,9 @@ void EditorAudioBuses::open_layout(const String &p_path) {
void AudioBusesEditorPlugin::edit(Object *p_node) {
- if (p_node->cast_to<AudioBusLayout>()) {
+ if (Object::cast_to<AudioBusLayout>(p_node)) {
- String path = p_node->cast_to<AudioBusLayout>()->get_path();
+ String path = Object::cast_to<AudioBusLayout>(p_node)->get_path();
if (path.is_resource_file()) {
audio_bus_editor->open_layout(path);
}
@@ -1169,7 +1169,7 @@ void AudioBusesEditorPlugin::edit(Object *p_node) {
bool AudioBusesEditorPlugin::handles(Object *p_node) const {
- return (p_node->cast_to<AudioBusLayout>() != NULL);
+ return (Object::cast_to<AudioBusLayout>(p_node) != NULL);
}
void AudioBusesEditorPlugin::make_visible(bool p_visible) {
diff --git a/editor/editor_audio_buses.h b/editor/editor_audio_buses.h
index ef7f5e0adf..e04ba7b89d 100644
--- a/editor/editor_audio_buses.h
+++ b/editor/editor_audio_buses.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -66,7 +66,7 @@ class EditorAudioBus : public PanelContainer {
OptionButton *send;
PopupMenu *effect_options;
- PopupMenu *delete_popup;
+ PopupMenu *bus_popup;
PopupMenu *delete_effect_popup;
Button *solo;
@@ -78,7 +78,7 @@ class EditorAudioBus : public PanelContainer {
bool updating_bus;
void _gui_input(const Ref<InputEvent> &p_event);
- void _delete_pressed(int p_option);
+ void _bus_popup_pressed(int p_option);
void _name_changed(const String &p_new_name);
void _name_focus_exit() { _name_changed(track_name->get_text()); }
diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp
index dde94cb334..82a7fa734a 100644
--- a/editor/editor_autoload_settings.cpp
+++ b/editor/editor_autoload_settings.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -238,7 +238,7 @@ void EditorAutoloadSettings::_autoload_edited() {
void EditorAutoloadSettings::_autoload_button_pressed(Object *p_item, int p_column, int p_button) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
String name = "autoload/" + ti->get_text(0);
@@ -580,7 +580,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() {
tree = memnew(Tree);
tree->set_hide_root(true);
tree->set_select_mode(Tree::SELECT_MULTI);
- tree->set_single_select_cell_editing_only_when_already_selected(true);
+ tree->set_allow_reselect(true);
tree->set_drag_forwarding(this);
diff --git a/editor/editor_autoload_settings.h b/editor/editor_autoload_settings.h
index 4a2e5b48e2..2e0ce8835e 100644
--- a/editor/editor_autoload_settings.h
+++ b/editor/editor_autoload_settings.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -66,7 +66,7 @@ class EditorAutoloadSettings : public VBoxContainer {
EditorLineEditFileChooser *autoload_add_path;
LineEdit *autoload_add_name;
- bool _autoload_name_is_valid(const String &p_string, String *r_error = NULL);
+ bool _autoload_name_is_valid(const String &p_name, String *r_error = NULL);
void _autoload_add();
void _autoload_selected();
@@ -74,9 +74,9 @@ class EditorAutoloadSettings : public VBoxContainer {
void _autoload_button_pressed(Object *p_item, int p_column, int p_button);
void _autoload_file_callback(const String &p_path);
- Variant get_drag_data_fw(const Point2 &p_point, Control *p_from);
- bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
- void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
+ Variant get_drag_data_fw(const Point2 &p_point, Control *p_control);
+ bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_control) const;
+ void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_control);
protected:
void _notification(int p_what);
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp
index e788fe2c13..cb74a7b852 100644
--- a/editor/editor_data.cpp
+++ b/editor/editor_data.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,7 +75,7 @@ void EditorHistory::_add_object(ObjectID p_object, const String &p_property, int
Object *obj = ObjectDB::get_instance(p_object);
ERR_FAIL_COND(!obj);
- Reference *r = obj->cast_to<Reference>();
+ Reference *r = Object::cast_to<Reference>(obj);
Obj o;
if (r)
o.ref = REF(r);
@@ -633,13 +633,13 @@ Vector<EditorData::EditedScene> EditorData::get_edited_scenes() const {
return out_edited_scenes_list;
}
-void EditorData::set_edited_scene_version(uint64_t version, int scene_idx) {
+void EditorData::set_edited_scene_version(uint64_t version, int p_scene_idx) {
ERR_FAIL_INDEX(current_edited_scene, edited_scene.size());
- if (scene_idx < 0) {
+ if (p_scene_idx < 0) {
edited_scene[current_edited_scene].version = version;
} else {
- ERR_FAIL_INDEX(scene_idx, edited_scene.size());
- edited_scene[scene_idx].version = version;
+ ERR_FAIL_INDEX(p_scene_idx, edited_scene.size());
+ edited_scene[p_scene_idx].version = version;
}
}
diff --git a/editor/editor_data.h b/editor/editor_data.h
index a601b5019d..cbba4d60ad 100644
--- a/editor/editor_data.h
+++ b/editor/editor_data.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -236,10 +236,7 @@ public:
T *get_node_editor_data(Node *p_node) {
if (!selection.has(p_node))
return NULL;
- Object *obj = selection[p_node];
- if (!obj)
- return NULL;
- return obj->cast_to<T>();
+ return Object::cast_to<T>(selection[p_node]);
}
void add_editor_plugin(Object *p_object);
diff --git a/editor/editor_dir_dialog.cpp b/editor/editor_dir_dialog.cpp
index 9f8331febd..1b213501aa 100644
--- a/editor/editor_dir_dialog.cpp
+++ b/editor/editor_dir_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -112,19 +112,19 @@ void EditorDirDialog::_notification(int p_what) {
}
}
-void EditorDirDialog::_item_collapsed(Object *_p_item) {
+void EditorDirDialog::_item_collapsed(Object *p_item) {
- TreeItem *p_item = _p_item->cast_to<TreeItem>();
+ TreeItem *item = Object::cast_to<TreeItem>(p_item);
- if (updating || p_item->is_collapsed())
+ if (updating || item->is_collapsed())
return;
- TreeItem *ci = p_item->get_children();
+ TreeItem *ci = item->get_children();
while (ci) {
String p = ci->get_metadata(0);
if (p == "") {
- String pp = p_item->get_metadata(0);
+ String pp = item->get_metadata(0);
ci->set_metadata(0, pp.plus_file(ci->get_text(0)));
_update_dir(ci);
}
@@ -184,7 +184,7 @@ void EditorDirDialog::_make_dir() {
TreeItem *ti = tree->get_selected();
if (!ti) {
- mkdirerr->set_text("Please select a base directory first");
+ mkdirerr->set_text(TTR("Please select a base directory first"));
mkdirerr->popup_centered_minsize();
return;
}
diff --git a/editor/editor_dir_dialog.h b/editor/editor_dir_dialog.h
index 0fdb71b0a1..b8347f75fb 100644
--- a/editor/editor_dir_dialog.h
+++ b/editor/editor_dir_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index 36fd86d88f..e761dce8ab 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -37,7 +37,6 @@
#include "io/resource_loader.h"
#include "io/resource_saver.h"
#include "io/zip_io.h"
-#include "os/dir_access.h"
#include "os/file_access.h"
#include "project_settings.h"
#include "script_language.h"
@@ -230,17 +229,17 @@ void EditorExportPlatform::gen_debug_flags(Vector<String> &r_flags, int p_flags)
if (p_flags & DEBUG_FLAG_DUMB_CLIENT) {
int port = EditorSettings::get_singleton()->get("filesystem/file_server/port");
String passwd = EditorSettings::get_singleton()->get("filesystem/file_server/password");
- r_flags.push_back("-rfs");
+ r_flags.push_back("--remote-fs");
r_flags.push_back(host + ":" + itos(port));
if (passwd != "") {
- r_flags.push_back("-rfs_pass");
+ r_flags.push_back("--remote-fs-password");
r_flags.push_back(passwd);
}
}
if (p_flags & DEBUG_FLAG_REMOTE_DEBUG) {
- r_flags.push_back("-rdebug");
+ r_flags.push_back("--remote-debug");
r_flags.push_back(host + ":" + String::num(remote_port));
@@ -249,7 +248,7 @@ void EditorExportPlatform::gen_debug_flags(Vector<String> &r_flags, int p_flags)
if (breakpoints.size()) {
- r_flags.push_back("-bp");
+ r_flags.push_back("--breakpoints");
String bpoints;
for (const List<String>::Element *E = breakpoints.front(); E; E = E->next()) {
@@ -264,12 +263,12 @@ void EditorExportPlatform::gen_debug_flags(Vector<String> &r_flags, int p_flags)
if (p_flags & DEBUG_FLAG_VIEW_COLLISONS) {
- r_flags.push_back("-debugcol");
+ r_flags.push_back("--debug-collisions");
}
if (p_flags & DEBUG_FLAG_VIEW_NAVIGATION) {
- r_flags.push_back("-debugnav");
+ r_flags.push_back("--debug-navigation");
}
}
@@ -420,6 +419,63 @@ void EditorExportPlatform::_export_find_dependencies(const String &p_path, Set<S
}
}
+void EditorExportPlatform::_edit_files_with_filter(DirAccess *da, const Vector<String> &p_filters, Set<String> &r_list, bool exclude) {
+
+ da->list_dir_begin();
+ String cur_dir = da->get_current_dir().replace("\\", "/");
+ if (!cur_dir.ends_with("/"))
+ cur_dir += "/";
+
+ Vector<String> dirs;
+ String f;
+ while ((f = da->get_next()) != "") {
+ if (da->current_is_dir())
+ dirs.push_back(f);
+ else {
+ String fullpath = cur_dir + f;
+ for (int i = 0; i < p_filters.size(); ++i) {
+ if (fullpath.matchn(p_filters[i])) {
+ if (!exclude) {
+ r_list.insert(fullpath);
+ } else {
+ r_list.erase(fullpath);
+ }
+ }
+ }
+ }
+ }
+
+ da->list_dir_end();
+
+ for (int i = 0; i < dirs.size(); ++i) {
+ String dir = dirs[i];
+ if (dir.begins_with("."))
+ continue;
+ da->change_dir(dir);
+ _edit_files_with_filter(da, p_filters, r_list, exclude);
+ da->change_dir("..");
+ }
+}
+
+void EditorExportPlatform::_edit_filter_list(Set<String> &r_list, const String &p_filter, bool exclude) {
+
+ if (p_filter == "")
+ return;
+ Vector<String> split = p_filter.split(",");
+ Vector<String> filters;
+ for (int i = 0; i < split.size(); i++) {
+ String f = split[i].strip_edges();
+ if (f.empty())
+ continue;
+ filters.push_back(f);
+ }
+
+ DirAccess *da = DirAccess::open("res://");
+ ERR_FAIL_NULL(da);
+ _edit_files_with_filter(da, filters, r_list, exclude);
+ memdelete(da);
+}
+
Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &p_preset, EditorExportSaveFunction p_func, void *p_udata) {
Ref<EditorExportPlatform> platform = p_preset->get_platform();
@@ -449,6 +505,9 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
}
}
+ _edit_filter_list(paths, p_preset->get_include_filter(), false);
+ _edit_filter_list(paths, p_preset->get_exclude_filter(), true);
+
//store everything in the export medium
int idx = 0;
int total = paths.size();
@@ -655,17 +714,17 @@ void EditorExportPlatform::gen_export_flags(Vector<String> &r_flags, int p_flags
if (p_flags & DEBUG_FLAG_DUMB_CLIENT) {
int port = EditorSettings::get_singleton()->get("filesystem/file_server/port");
String passwd = EditorSettings::get_singleton()->get("filesystem/file_server/password");
- r_flags.push_back("-rfs");
+ r_flags.push_back("--remote-fs");
r_flags.push_back(host + ":" + itos(port));
if (passwd != "") {
- r_flags.push_back("-rfs_pass");
+ r_flags.push_back("--remote-fs-password");
r_flags.push_back(passwd);
}
}
if (p_flags & DEBUG_FLAG_REMOTE_DEBUG) {
- r_flags.push_back("-rdebug");
+ r_flags.push_back("--remote-debug");
r_flags.push_back(host + ":" + String::num(remote_port));
@@ -674,7 +733,7 @@ void EditorExportPlatform::gen_export_flags(Vector<String> &r_flags, int p_flags
if (breakpoints.size()) {
- r_flags.push_back("-bp");
+ r_flags.push_back("--breakpoints");
String bpoints;
for (const List<String>::Element *E = breakpoints.front(); E; E = E->next()) {
@@ -689,12 +748,12 @@ void EditorExportPlatform::gen_export_flags(Vector<String> &r_flags, int p_flags
if (p_flags & DEBUG_FLAG_VIEW_COLLISONS) {
- r_flags.push_back("-debugcol");
+ r_flags.push_back("--debug-collisions");
}
if (p_flags & DEBUG_FLAG_VIEW_NAVIGATION) {
- r_flags.push_back("-debugnav");
+ r_flags.push_back("--debug-navigation");
}
}
EditorExportPlatform::EditorExportPlatform() {
@@ -1110,2205 +1169,3 @@ void EditorExportPlatformPC::get_platform_features(List<String> *r_features) {
EditorExportPlatformPC::EditorExportPlatformPC() {
}
-
-////////
-
-#if 0
-#include "editor/editor_file_system.h"
-#include "editor/plugins/script_editor_plugin.h"
-#include "editor_node.h"
-#include "editor_settings.h"
-#include "io/config_file.h"
-#include "io/md5.h"
-#include "io/resource_loader.h"
-#include "io/resource_saver.h"
-#include "io/zip_io.h"
-#include "io_plugins/editor_texture_import_plugin.h"
-#include "os/dir_access.h"
-#include "os/file_access.h"
-#include "project_settings.h"
-#include "script_language.h"
-#include "version.h"
-
-
-String EditorImportPlugin::validate_source_path(const String& p_path) {
-
- String gp = ProjectSettings::get_singleton()->globalize_path(p_path);
- String rp = ProjectSettings::get_singleton()->get_resource_path();
- if (!rp.ends_with("/"))
- rp+="/";
-
- return rp.path_to_file(gp);
-}
-
-String EditorImportPlugin::expand_source_path(const String& p_path) {
-
- if (p_path.is_rel_path()) {
- return ProjectSettings::get_singleton()->get_resource_path().plus_file(p_path).simplify_path();
- } else {
- return p_path;
- }
-}
-
-
-String EditorImportPlugin::_validate_source_path(const String& p_path) {
-
- return validate_source_path(p_path);
-}
-
-String EditorImportPlugin::_expand_source_path(const String& p_path) {
-
- return expand_source_path(p_path);
-}
-
-void EditorImportPlugin::_bind_methods() {
-
-
- ClassDB::bind_method(D_METHOD("validate_source_path","path"),&EditorImportPlugin::_validate_source_path);
- ClassDB::bind_method(D_METHOD("expand_source_path","path"),&EditorImportPlugin::_expand_source_path);
-
- ClassDB::add_virtual_method(get_class_static(),MethodInfo(Variant::STRING,"get_name"));
- ClassDB::add_virtual_method(get_class_static(),MethodInfo(Variant::STRING,"get_visible_name"));
- ClassDB::add_virtual_method(get_class_static(),MethodInfo("import_dialog",PropertyInfo(Variant::STRING,"from")));
- ClassDB::add_virtual_method(get_class_static(),MethodInfo(Variant::INT,"import",PropertyInfo(Variant::STRING,"path"),PropertyInfo(Variant::OBJECT,"from",PROPERTY_HINT_RESOURCE_TYPE,"ResourceImportMetadata")));
- ClassDB::add_virtual_method(get_class_static(),MethodInfo(Variant::POOL_BYTE_ARRAY,"custom_export",PropertyInfo(Variant::STRING,"path"),PropertyInfo(Variant::OBJECT,"platform",PROPERTY_HINT_RESOURCE_TYPE,"EditorExportPlatform")));
- ClassDB::add_virtual_method(get_class_static(),MethodInfo("import_from_drop",PropertyInfo(Variant::POOL_STRING_ARRAY,"files"),PropertyInfo(Variant::STRING,"dest_path")));
- ClassDB::add_virtual_method(get_class_static(),MethodInfo("reimport_multiple_files",PropertyInfo(Variant::POOL_STRING_ARRAY,"files")));
- ClassDB::add_virtual_method(get_class_static(),MethodInfo(Variant::BOOL,"can_reimport_multiple_files"));
-
- //BIND_VMETHOD( mi );
-}
-
-String EditorImportPlugin::get_name() const {
-
- if (get_script_instance() && get_script_instance()->has_method("get_name")) {
- return get_script_instance()->call("get_name");
- }
-
- ERR_FAIL_V("");
-}
-
-String EditorImportPlugin::get_visible_name() const {
-
- if (get_script_instance() && get_script_instance()->has_method("get_visible_name")) {
- return get_script_instance()->call("get_visible_name");
- }
-
- ERR_FAIL_V("");
-}
-
-
-void EditorImportPlugin::import_dialog(const String& p_from) {
-
- if (get_script_instance() && get_script_instance()->has_method("import_dialog")) {
- get_script_instance()->call("import_dialog",p_from);
- return;
- }
-
- ERR_FAIL();
-
-}
-
-Error EditorImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from) {
-
- if (get_script_instance() && get_script_instance()->has_method("import")) {
- return Error(get_script_instance()->call("import",p_path,p_from).operator int());
- }
-
- ERR_FAIL_V(ERR_UNAVAILABLE);
-}
-
-Vector<uint8_t> EditorImportPlugin::custom_export(const String& p_path, const Ref<EditorExportPlatform> &p_platform) {
-
- if (get_script_instance() && get_script_instance()->has_method("custom_export")) {
- get_script_instance()->call("custom_export",p_path,p_platform);
- }
-
- return Vector<uint8_t>();
-}
-
-bool EditorImportPlugin::can_reimport_multiple_files() const {
-
- if (get_script_instance() && get_script_instance()->has_method("can_reimport_multiple_files")) {
- return get_script_instance()->call("can_reimport_multiple_files");
- }
-
- return false;
-}
-void EditorImportPlugin::reimport_multiple_files(const Vector<String>& p_list) {
-
- if (get_script_instance() && get_script_instance()->has_method("reimport_multiple_files")) {
- get_script_instance()->call("reimport_multiple_files",p_list);
- }
-
-}
-
-void EditorImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
- if (get_script_instance() && get_script_instance()->has_method("import_from_drop")) {
- get_script_instance()->call("import_from_drop",p_drop,p_dest_path);
- }
-
-}
-
-EditorImportPlugin::EditorImportPlugin() {
-
-
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-void EditorExportPlugin::_bind_methods() {
-
- MethodInfo mi = MethodInfo("custom_export:Variant",PropertyInfo(Variant::STRING,"name"),PropertyInfo(Variant::OBJECT,"platform",PROPERTY_HINT_RESOURCE_TYPE,"EditorExportPlatform"));
- mi.return_val.type=Variant::POOL_BYTE_ARRAY;
-
- BIND_VMETHOD( mi );
-}
-
-
-Vector<uint8_t> EditorExportPlugin::custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform) {
-
- if (get_script_instance()) {
-
- Variant d = get_script_instance()->call("custom_export",p_path,p_platform);
- if (d.get_type()==Variant::NIL)
- return Vector<uint8_t>();
- if (d.get_type()==Variant::POOL_BYTE_ARRAY)
- return d;
-
- ERR_FAIL_COND_V(d.get_type()!=Variant::DICTIONARY,Vector<uint8_t>());
- Dictionary dict=d;
- ERR_FAIL_COND_V(!dict.has("name"),Vector<uint8_t>());
- ERR_FAIL_COND_V(!dict.has("data"),Vector<uint8_t>());
- p_path=dict["name"];
- return dict["data"];
- }
-
- return Vector<uint8_t>();
-
-}
-
-
-EditorExportPlugin::EditorExportPlugin() {
-
-
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
-static void _add_to_list(EditorFileSystemDirectory *p_efsd,Set<StringName>& r_list) {
-
- for(int i=0;i<p_efsd->get_subdir_count();i++) {
-
- _add_to_list(p_efsd->get_subdir(i),r_list);
- }
-
- for(int i=0;i<p_efsd->get_file_count();i++) {
- r_list.insert(p_efsd->get_file_path(i));
- }
-}
-
-
-struct __EESortDepCmp {
-
- _FORCE_INLINE_ bool operator()(const StringName& p_l,const StringName& p_r) const {
- return p_l.operator String() < p_r.operator String();
- }
-};
-
-
-
-
-static void _edit_files_with_filter(DirAccess *da,const List<String>& p_filters,Set<StringName>& r_list,bool exclude) {
-
-
- List<String> files;
- List<String> dirs;
-
- da->list_dir_begin();
-
- String f = da->get_next();
- while(f!="") {
-
- print_line("HOHO: "+f);
- if (da->current_is_dir())
- dirs.push_back(f);
- else
- files.push_back(f);
-
- f=da->get_next();
- }
-
- String r = da->get_current_dir().replace("\\","/");
- if (!r.ends_with("/"))
- r+="/";
-
- print_line("AT: "+r);
-
- for(List<String>::Element *E=files.front();E;E=E->next()) {
- String fullpath=r+E->get();
- for(const List<String>::Element *F=p_filters.front();F;F=F->next()) {
-
- if (fullpath.matchn(F->get())) {
- String act = TTR("Added:")+" ";
-
- if (!exclude) {
- r_list.insert(fullpath);
- } else {
- act = TTR("Removed:")+" ";
- r_list.erase(fullpath);
- }
-
-
- print_line(act+fullpath);
- }
- }
- }
-
- da->list_dir_end();
-
- for(List<String>::Element *E=dirs.front();E;E=E->next()) {
- if (E->get().begins_with("."))
- continue;
- da->change_dir(E->get());
- _edit_files_with_filter(da,p_filters,r_list,exclude);
- da->change_dir("..");
- }
-
-}
-
-static void _edit_filter_list(Set<StringName>& r_list,const String& p_filter,bool exclude) {
-
- if (p_filter=="")
- return;
- Vector<String> split = p_filter.split(",");
- List<String> filters;
- for(int i=0;i<split.size();i++) {
- String f = split[i].strip_edges();
- if (f.empty())
- continue;
- filters.push_back(f);
- }
-
- DirAccess *da = DirAccess::open("res://");
- ERR_FAIL_NULL(da);
- _edit_files_with_filter(da,filters,r_list,exclude);
- memdelete(da);
-}
-
-static void _add_filter_to_list(Set<StringName>& r_list,const String& p_filter) {
- _edit_filter_list(r_list,p_filter,false);
-}
-
-static void _remove_filter_from_list(Set<StringName>& r_list,const String& p_filter) {
- _edit_filter_list(r_list,p_filter,true);
-}
-
-bool EditorExportPlatform::_set(const StringName& p_name, const Variant& p_value) {
-
- String n = p_name;
-
- if (n=="debug/debugging_enabled") {
- set_debugging_enabled(p_value);
- } else {
- return false;
- }
-
- return true;
-
-}
-
-bool EditorExportPlatform::_get(const StringName& p_name,Variant &r_ret) const {
-
- String n = p_name;
-
- if (n=="debug/debugging_enabled") {
- r_ret=is_debugging_enabled();
- } else {
- return false;
- }
-
- return true;
-
-}
-
-void EditorExportPlatform::_get_property_list( List<PropertyInfo> *p_list) const {
-
- p_list->push_front( PropertyInfo( Variant::BOOL, "debug/debugging_enabled"));
-}
-
-Vector<uint8_t> EditorExportPlatform::get_exported_file_default(String& p_fname) const {
-
- FileAccess *f = FileAccess::open(p_fname,FileAccess::READ);
- ERR_FAIL_COND_V(!f,Vector<uint8_t>());
- Vector<uint8_t> ret;
- ret.resize(f->get_len());
- int rbs = f->get_buffer(ret.ptr(),ret.size());
- memdelete(f);
- return ret;
-}
-
-Vector<uint8_t> EditorExportPlatform::get_exported_file(String& p_fname) const {
-
- Ref<EditorExportPlatform> ep=EditorImportExport::get_singleton()->get_export_platform(get_name());
-
- for(int i=0;i<EditorImportExport::get_singleton()->get_export_plugin_count();i++) {
-
- Vector<uint8_t> data = EditorImportExport::get_singleton()->get_export_plugin(i)->custom_export(p_fname,ep);
- if (data.size())
- return data;
-
- }
-
-
- return get_exported_file_default(p_fname);
-
-
-}
-
-Vector<StringName> EditorExportPlatform::get_dependencies(bool p_bundles) const {
-
-
- Set<StringName> exported;
-
- if (FileAccess::exists("res://project.godot"))
- exported.insert("res://project.godot");
-
- if (EditorImportExport::get_singleton()->get_export_filter()!=EditorImportExport::EXPORT_SELECTED) {
-
- String filter;
- if (EditorImportExport::get_singleton()->get_export_filter()==EditorImportExport::EXPORT_ALL) {
- _add_filter_to_list(exported,"*");
- } else {
- _add_to_list(EditorFileSystem::get_singleton()->get_filesystem(),exported);
- String cf = EditorImportExport::get_singleton()->get_export_custom_filter();
- if (cf!="")
- cf+=",";
- cf+="*.flags";
- _add_filter_to_list(exported,cf);
-
- cf = EditorImportExport::get_singleton()->get_export_custom_filter_exclude();
- _remove_filter_from_list(exported,cf);
- }
-
-
- } else {
-
-
- Map<String,Map<String,String> > remapped_paths;
-
- Set<String> scene_extensions;
- Set<String> resource_extensions;
-
- {
-
- List<String> l;
- /*
- SceneLoader::get_recognized_extensions(&l);
- for(List<String>::Element *E=l.front();E;E=E->next()) {
- scene_extensions.insert(E->get());
- }
- */
- ResourceLoader::get_recognized_extensions_for_type("",&l);
- for(List<String>::Element *E=l.front();E;E=E->next()) {
-
- resource_extensions.insert(E->get());
- }
- }
-
-
- List<StringName> toexport;
-
- EditorImportExport::get_singleton()->get_export_file_list(&toexport);
-
- print_line("TO EXPORT: "+itos(toexport.size()));
-
-
- for (List<StringName>::Element *E=toexport.front();E;E=E->next()) {
-
- print_line("DEP: "+String(E->get()));
- exported.insert(E->get());
- if (p_bundles && EditorImportExport::get_singleton()->get_export_file_action(E->get())==EditorImportExport::ACTION_BUNDLE) {
- print_line("NO BECAUSE OF BUNDLE!");
- continue; //no dependencies needed to be copied
- }
-
- List<String> testsubs;
- testsubs.push_back(E->get());
-
- while(testsubs.size()) {
- //recursive subdep search!
- List<String> deplist;
- ResourceLoader::get_dependencies(testsubs.front()->get(),&deplist);
- testsubs.pop_front();
-
- List<String> subdeps;
-
- for (List<String>::Element *F=deplist.front();F;F=F->next()) {
-
- StringName dep = F->get();
-
- if (exported.has(dep) || EditorImportExport::get_singleton()->get_export_file_action(dep)!=EditorImportExport::ACTION_NONE)
- continue; //dependency added or to be added
- print_line(" SUBDEP: "+String(dep));
-
- exported.insert(dep);
- testsubs.push_back(dep);
- }
- }
- }
- String cf = EditorImportExport::get_singleton()->get_export_custom_filter();
- if (cf!="")
- cf+=",";
- cf+="*.flags";
- _add_filter_to_list(exported,cf);
-
- cf = EditorImportExport::get_singleton()->get_export_custom_filter_exclude();
- _remove_filter_from_list(exported,cf);
-
-
- }
-
- Vector<StringName> ret;
- ret.resize(exported.size());
-
-
- int idx=0;
- for(Set<StringName>::Element *E=exported.front();E;E=E->next()) {
-
- ret[idx++]=E->get();
-
- }
-
- SortArray<StringName,__EESortDepCmp> sort; //some platforms work better if this is sorted
- sort.sort(ret.ptr(),ret.size());
-
- return ret;
-
-}
-
-///////////////////////////////////////
-
-
-
-bool EditorExportPlatform::is_debugging_enabled() const {
-
- return debugging_enabled;
-}
-
-void EditorExportPlatform::set_debugging_enabled(bool p_enabled) {
-
- debugging_enabled = p_enabled;
-}
-
-bool EditorExportPlatformPC::_set(const StringName& p_name, const Variant& p_value) {
-
- String n = p_name;
-
- if (n=="custom_binary/release") {
-
- custom_release_binary=p_value;
- } else if (n=="custom_binary/debug") {
-
- custom_debug_binary=p_value;
- } else if (n=="resources/pack_mode") {
-
- export_mode=ExportMode(int(p_value));
- } else if (n=="resources/bundle_dependencies_(for_optical_disc)") {
-
- bundle=p_value;
- } else if (n=="binary/64_bits") {
-
- use64=p_value;
- } else
- return false;
-
- return true;
-
-}
-
-bool EditorExportPlatformPC::_get(const StringName& p_name,Variant &r_ret) const {
-
- String n = p_name;
-
- if (n=="custom_binary/release") {
-
- r_ret=custom_release_binary;
- } else if (n=="custom_binary/debug") {
-
- r_ret=custom_debug_binary;
- } else if (n=="resources/pack_mode") {
-
- r_ret=export_mode;
- } else if (n=="resources/bundle_dependencies_(for_optical_disc)") {
-
- r_ret=bundle;
- } else if (n=="binary/64_bits") {
-
- r_ret=use64;
- } else
- return false;
-
- return true;
-
-}
-
-void EditorExportPlatformPC::_get_property_list( List<PropertyInfo> *p_list) const {
-
- p_list->push_back( PropertyInfo( Variant::STRING, "custom_binary/debug", PROPERTY_HINT_GLOBAL_FILE,binary_extension));
- p_list->push_back( PropertyInfo( Variant::STRING, "custom_binary/release", PROPERTY_HINT_GLOBAL_FILE,binary_extension));
- p_list->push_back( PropertyInfo( Variant::INT, "resources/pack_mode", PROPERTY_HINT_ENUM,"Pack into executable,Pack into binary file (.pck),Pack into archive file (.zip)"));
- p_list->push_back( PropertyInfo( Variant::BOOL, "resources/bundle_dependencies_(for_optical_disc)"));
- p_list->push_back( PropertyInfo( Variant::BOOL, "binary/64_bits"));
-}
-
-
-
-static void _exp_add_dep(Map<StringName,List<StringName> > &deps,const StringName& p_path) {
-
-
- if (deps.has(p_path))
- return; //already done
-
- deps.insert(p_path,List<StringName>());
-
- List<StringName> &deplist=deps[p_path];
- Set<StringName> depset;
-
- List<String> dl;
- ResourceLoader::get_dependencies(p_path,&dl);
-
- //added in order so child dependencies are always added bfore parent dependencies
- for (List<String>::Element *E=dl.front();E;E=E->next()) {
-
-
- if (!deps.has(E->get()))
- _exp_add_dep(deps,E->get());
-
- for(List<StringName>::Element *F=deps[E->get()].front();F;F=F->next()) {
-
-
- if (!depset.has(F->get())) {
- depset.insert(F->get());
- deplist.push_back(F->get());
- }
- }
-
- if (!depset.has(E->get())) {
- depset.insert(E->get());
- deplist.push_back(E->get());
- }
-
- }
-}
-
-
-
-Error EditorExportPlatform::export_project_files(EditorExportSaveFunction p_func, void* p_udata,bool p_make_bundles) {
-
-/* ALL FILES AND DEPENDENCIES */
-
- Vector<StringName> files=get_dependencies(p_make_bundles);
-
- Map<StringName,List<StringName> > deps;
-
- if (false) {
- for(int i=0;i<files.size();i++) {
-
- _exp_add_dep(deps,files[i]);
-
- }
- }
-
-
-
-/* GROUP ATLAS */
-
-
- List<StringName> groups;
-
- EditorImportExport::get_singleton()->image_export_get_groups(&groups);
-
- Map<StringName,StringName> remap_files;
- Set<StringName> saved;
-
- int counter=0;
-
- for(List<StringName>::Element *E=groups.front();E;E=E->next()) {
-
- if (!EditorImportExport::get_singleton()->image_export_group_get_make_atlas(E->get()))
- continue; //uninterested, only process for atlas!
-
- List<StringName> atlas_images;
- EditorImportExport::get_singleton()->image_export_get_images_in_group(E->get(),&atlas_images);
- atlas_images.sort_custom<StringName::AlphCompare>();
-
- for (List<StringName>::Element *F=atlas_images.front();F;) {
-
- List<StringName>::Element *N=F->next();
-
- if (!FileAccess::exists(F->get())) {
- atlas_images.erase(F);
- }
-
- F=N;
-
- }
-
- if (atlas_images.size()<=1)
- continue;
-
- int group_format=0;
- float group_lossy_quality=EditorImportExport::get_singleton()->image_export_group_get_lossy_quality(E->get());
- int group_shrink=EditorImportExport::get_singleton()->image_export_group_get_shrink(E->get());
- group_shrink*=EditorImportExport::get_singleton()->get_export_image_shrink();
-
- switch(EditorImportExport::get_singleton()->image_export_group_get_image_action(E->get())) {
- case EditorImportExport::IMAGE_ACTION_KEEP:
- case EditorImportExport::IMAGE_ACTION_NONE: {
-
- switch(EditorImportExport::get_singleton()->get_export_image_action()) {
- case EditorImportExport::IMAGE_ACTION_NONE: {
-
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS; //?
-
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_DISK: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY;
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_RAM: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM;
- } break; //use default
- }
-
- group_lossy_quality=EditorImportExport::get_singleton()->get_export_image_quality();
-
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_DISK: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY;
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_RAM: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM;
- } break; //use default
- }
-
- String image_list_md5;
-
- {
- MD5_CTX ctx;
- MD5Init(&ctx);
- for (List<StringName>::Element *F=atlas_images.front();F;F=F->next()) {
-
- String p = F->get();
- MD5Update(&ctx,(unsigned char*)p.utf8().get_data(),p.utf8().length());
-
- }
-
- MD5Final(&ctx);
- image_list_md5=String::md5(ctx.digest);
- }
- //ok see if cached
- String md5;
- bool atlas_valid=true;
- String atlas_name;
-
- {
- MD5_CTX ctx;
- MD5Init(&ctx);
- String path = ProjectSettings::get_singleton()->get_resource_path()+"::"+String(E->get())+"::"+get_name();
- MD5Update(&ctx,(unsigned char*)path.utf8().get_data(),path.utf8().length());
- MD5Final(&ctx);
- md5 = String::md5(ctx.digest);
- }
-
- FileAccess *f=NULL;
-
- if (!FileAccess::exists(EditorSettings::get_singleton()->get_settings_path()+"/tmp/atlas-"+md5)) {
- print_line("NO MD5 INVALID");
- atlas_valid=false;
- }
-
- if (atlas_valid)
- f=FileAccess::open(EditorSettings::get_singleton()->get_settings_path()+"/tmp/atlas-"+md5,FileAccess::READ);
-
- if (atlas_valid) {
- //compare options
- /*Dictionary options;
- options.parse_json(f->get_line());
- if (!options.has("lossy_quality") || float(options["lossy_quality"])!=group_lossy_quality)
- atlas_valid=false;
- else if (!options.has("shrink") || int(options["shrink"])!=group_shrink)
- atlas_valid=false;
- else if (!options.has("image_format") || int(options["image_format"])!=group_format)
- atlas_valid=false;
-
- if (!atlas_valid)
- print_line("JSON INVALID");
-*/
- }
-
-
- if (atlas_valid) {
- //check md5 of list of image /names/
- if (f->get_line().strip_edges()!=image_list_md5) {
- atlas_valid=false;
- print_line("IMAGE MD5 INVALID!");
- }
-
- }
-
- Vector<Rect2> rects;
- bool resave_deps=false;
-
- if (atlas_valid) {
-
- //check if images were not modified
- for (List<StringName>::Element *F=atlas_images.front();F;F=F->next()) {
-
- Vector<String> slices = f->get_line().strip_edges().split("::");
-
- if (slices.size()!=10) {
- atlas_valid=false;
- print_line("CAN'T SLICE IN 10");
- break;
- }
- uint64_t mod_time = slices[0].to_int64();
- uint64_t file_mod_time = FileAccess::get_modified_time(F->get());
- if (mod_time!=file_mod_time) {
-
- String image_md5 = slices[1];
- String file_md5 = FileAccess::get_md5(F->get());
-
- if (image_md5!=file_md5) {
- atlas_valid=false;
- print_line("IMAGE INVALID "+slices[0]);
- break;
- } else {
- resave_deps=true;
- }
- }
-
- if (atlas_valid) {
- //push back region and margin
- rects.push_back(Rect2(slices[2].to_float(),slices[3].to_float(),slices[4].to_float(),slices[5].to_float()));
- rects.push_back(Rect2(slices[6].to_float(),slices[7].to_float(),slices[8].to_float(),slices[9].to_float()));
- }
- }
-
- }
-
- if (f) {
- memdelete(f);
- f=NULL;
- }
-
- print_line("ATLAS VALID? "+itos(atlas_valid)+" RESAVE DEPS? "+itos(resave_deps));
- if (!atlas_valid) {
- rects.clear();
- //oh well, atlas is not valid. need to make new one....
-
- String dst_file = EditorSettings::get_singleton()->get_settings_path()+"/tmp/atlas-"+md5+".tex";
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
- //imd->set_editor();
-
-
- for (List<StringName>::Element *F=atlas_images.front();F;F=F->next()) {
-
- imd->add_source(EditorImportPlugin::validate_source_path(F->get()),FileAccess::get_md5(F->get()));
-
- }
-
-
- imd->set_option("format",group_format);
-
-
- int flags=0;
-
- if (ProjectSettings::get_singleton()->get("image_loader/filter"))
- flags|=EditorTextureImportPlugin::IMAGE_FLAG_FILTER;
- if (!ProjectSettings::get_singleton()->get("image_loader/gen_mipmaps"))
- flags|=EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS;
- if (!ProjectSettings::get_singleton()->get("image_loader/repeat"))
- flags|=EditorTextureImportPlugin::IMAGE_FLAG_REPEAT;
-
- flags|=EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA;
-
- imd->set_option("flags",flags);
- imd->set_option("quality",group_lossy_quality);
- imd->set_option("atlas",true);
- imd->set_option("crop",true);
- imd->set_option("shrink",group_shrink);
-
-
-
- Ref<EditorTextureImportPlugin> plugin = EditorImportExport::get_singleton()->get_import_plugin_by_name("texture");
- Error err = plugin->import2(dst_file,imd,get_image_compression(),true);
- if (err) {
-
- EditorNode::add_io_error(TTR("Error saving atlas:")+" "+dst_file.get_file());
- return ERR_CANT_CREATE;
- }
-
- ERR_FAIL_COND_V(imd->get_option("rects")==Variant(),ERR_BUG);
-
- Array r_rects=imd->get_option("rects");
- rects.resize(r_rects.size());
- for(int i=0;i<r_rects.size();i++) {
- //get back region and margins
- rects[i]=r_rects[i];
- }
-
-
- resave_deps=true;
- }
-
-
- //atlas is valid (or it was just saved i guess), create the atex files and save them
-
- if (resave_deps) {
- f=FileAccess::open(EditorSettings::get_singleton()->get_settings_path()+"/tmp/atlas-"+md5,FileAccess::WRITE);
- Dictionary options;
- options["lossy_quality"]=group_lossy_quality;
- options["shrink"]=EditorImportExport::get_singleton()->image_export_group_get_shrink(E->get());
- options["image_format"]=group_format;
- //f->store_line(options.to_json());
- f->store_line(image_list_md5);
- }
-
- //go through all ATEX files
-
- {
- Ref<ImageTexture> atlas = memnew( ImageTexture ); //fake atlas!
- String atlas_path="res://atlas-"+md5+".tex";
- atlas->set_path(atlas_path);
- int idx=0;
- for (List<StringName>::Element *F=atlas_images.front();F;F=F->next()) {
-
- String p = F->get();
- Ref<AtlasTexture> atex = memnew(AtlasTexture);
- atex->set_atlas(atlas);
- Rect2 region=rects[idx++];
- Rect2 margin=rects[idx++];
- atex->set_region(region);
- atex->set_margin(margin);
-
- String path = EditorSettings::get_singleton()->get_settings_path()+"/tmp/tmpatlas.atlastex";
- Error err = ResourceSaver::save(path,atex);
- if (err!=OK) {
- EditorNode::add_io_error(TTR("Could not save atlas subtexture:")+" "+path);
- return ERR_CANT_CREATE;
- }
- Vector<uint8_t> data = FileAccess::get_file_as_array(path);
- String dst_path = F->get().operator String().get_basename()+".atlastex";
- err = p_func(p_udata,dst_path,data,counter++,files.size());
- saved.insert(dst_path);
- if (err)
- return err;
-
- if (f) {
- //recreating deps..
- String depline;
- //depline=String(F->get())+"::"+itos(FileAccess::get_modified_time(F->get()))+"::"+FileAccess::get_md5(F->get()); name unnecessary by top md5
- depline=itos(FileAccess::get_modified_time(F->get()))+"::"+FileAccess::get_md5(F->get());
- depline+="::"+itos(region.pos.x)+"::"+itos(region.pos.y)+"::"+itos(region.size.x)+"::"+itos(region.size.y);
- depline+="::"+itos(margin.pos.x)+"::"+itos(margin.pos.y)+"::"+itos(margin.size.x)+"::"+itos(margin.size.y);
- f->store_line(depline);
- }
-
- remap_files[F->get()]=dst_path;
- }
-
- Vector<uint8_t> atlas_data = FileAccess::get_file_as_array(EditorSettings::get_singleton()->get_settings_path()+"/tmp/atlas-"+md5+".tex");
- Error err = p_func(p_udata,atlas_path,atlas_data,counter,files.size());
- saved.insert(atlas_path);
- if (err)
- return err;
-
- }
-
-
- if (f) {
- memdelete(f);
- }
-
- }
-
-
- StringName engine_cfg="res://project.godot";
- StringName boot_splash;
- {
- String splash=ProjectSettings::get_singleton()->get("application/boot_splash"); //avoid splash from being converted
- splash=splash.strip_edges();
- if (splash!=String()) {
- if (!splash.begins_with("res://"))
- splash="res://"+splash;
- splash=splash.simplify_path();
- boot_splash=splash;
- }
- }
- StringName custom_cursor;
- {
- String splash=ProjectSettings::get_singleton()->get("display/custom_mouse_cursor"); //avoid splash from being converted
- splash=splash.strip_edges();
- if (splash!=String()) {
- if (!splash.begins_with("res://"))
- splash="res://"+splash;
- splash=splash.simplify_path();
- custom_cursor=splash;
- }
- }
-
-
-
-
- for(int i=0;i<files.size();i++) {
-
- if (remap_files.has(files[i]) || files[i]==engine_cfg) //gonna be remapped (happened before!)
- continue; //from atlas?
- String src=files[i];
- Vector<uint8_t> buf;
-
- if (src==boot_splash || src==custom_cursor)
- buf = get_exported_file_default(src); //bootsplash must be kept if used
- else
- buf = get_exported_file(src);
-
- ERR_CONTINUE( saved.has(src) );
-
- Error err = p_func(p_udata,src,buf,counter++,files.size());
- if (err)
- return err;
-
- saved.insert(src);
- if (src!=String(files[i]))
- remap_files[files[i]]=src;
-
- }
-
-
- {
-
- //make binary project.godot config
- Map<String,Variant> custom;
-
-
- if (remap_files.size()) {
- Vector<String> remapsprop;
- for(Map<StringName,StringName>::Element *E=remap_files.front();E;E=E->next()) {
- print_line("REMAP: "+String(E->key())+" -> "+E->get());
- remapsprop.push_back(E->key());
- remapsprop.push_back(E->get());
- }
-
- custom["remap/all"]=remapsprop;
- }
-
- //add presaved dependencies
- for(Map<StringName,List<StringName> >::Element *E=deps.front();E;E=E->next()) {
-
- if (E->get().size()==0)
- continue; //no deps
- String key;
- Vector<StringName> deps;
- //if bundle continue (when bundles supported obviously)
-
- if (remap_files.has(E->key())) {
- key=remap_files[E->key()];
- } else {
- key=E->key();
- }
-
- deps.resize(E->get().size());
- int i=0;
-
- for(List<StringName>::Element *F=E->get().front();F;F=F->next()) {
- deps[i++]=F->get();
- print_line(" -"+String(F->get()));
- }
-
- NodePath prop(deps,true,String()); //seems best to use this for performance
-
- custom["deps/"+key.md5_text()]=prop;
-
- }
-
- String remap_file="project.binary";
- String engine_cfb =EditorSettings::get_singleton()->get_settings_path()+"/tmp/tmp"+remap_file;
- ProjectSettings::get_singleton()->save_custom(engine_cfb,custom);
- Vector<uint8_t> data = FileAccess::get_file_as_array(engine_cfb);
-
- Error err = p_func(p_udata,"res://"+remap_file,data,counter,files.size());
- if (err)
- return err;
-
- }
-
- return OK;
-}
-
-static int _get_pad(int p_alignment, int p_n) {
-
- int rest = p_n % p_alignment;
- int pad = 0;
- if (rest > 0) {
- pad = p_alignment - rest;
- };
-
- return pad;
-};
-
-void EditorExportPlatform::gen_export_flags(Vector<String> &r_flags, int p_flags) {
-
- String host = EditorSettings::get_singleton()->get("network/debug/remote_host");
- int remote_port = (int)EditorSettings::get_singleton()->get("network/debug/remote_port");
-
- if (p_flags&EXPORT_REMOTE_DEBUG_LOCALHOST)
- host="localhost";
-
- if (p_flags&EXPORT_DUMB_CLIENT) {
- int port = EditorSettings::get_singleton()->get("filesystem/file_server/port");
- String passwd = EditorSettings::get_singleton()->get("filesystem/file_server/password");
- r_flags.push_back("-rfs");
- r_flags.push_back(host+":"+itos(port));
- if (passwd!="") {
- r_flags.push_back("-rfs_pass");
- r_flags.push_back(passwd);
- }
- }
-
- if (p_flags&EXPORT_REMOTE_DEBUG) {
-
- r_flags.push_back("-rdebug");
-
- r_flags.push_back(host+":"+String::num(remote_port));
-
- List<String> breakpoints;
- ScriptEditor::get_singleton()->get_breakpoints(&breakpoints);
-
-
- if (breakpoints.size()) {
-
- r_flags.push_back("-bp");
- String bpoints;
- for(const List<String>::Element *E=breakpoints.front();E;E=E->next()) {
-
- bpoints+=E->get().replace(" ","%20");
- if (E->next())
- bpoints+=",";
- }
-
- r_flags.push_back(bpoints);
- }
-
- }
-
- if (p_flags&EXPORT_VIEW_COLLISONS) {
-
- r_flags.push_back("-debugcol");
- }
-
- if (p_flags&EXPORT_VIEW_NAVIGATION) {
-
- r_flags.push_back("-debugnav");
- }
-
-
-}
-
-Error EditorExportPlatform::save_pack_file(void *p_userdata,const String& p_path, const Vector<uint8_t>& p_data,int p_file,int p_total) {
-
-
- PackData *pd = (PackData*)p_userdata;
-
- CharString cs=p_path.utf8();
- pd->f->store_32(cs.length());
- pd->f->store_buffer((uint8_t*)cs.get_data(),cs.length());
- TempData td;
- td.pos=pd->f->get_pos();
- td.ofs=pd->ftmp->get_pos();
- td.size=p_data.size();
- pd->file_ofs.push_back(td);
- pd->f->store_64(0); //ofs
- pd->f->store_64(0); //size
- {
- MD5_CTX ctx;
- MD5Init(&ctx);
- MD5Update(&ctx,(unsigned char*)p_data.ptr(),p_data.size());
- MD5Final(&ctx);
- pd->f->store_buffer(ctx.digest,16);
- }
- pd->ep->step(TTR("Storing File:")+" "+p_path,2+p_file*100/p_total,false);
- pd->count++;
- pd->ftmp->store_buffer(p_data.ptr(),p_data.size());
- if (pd->alignment > 1) {
-
- int pad = _get_pad(pd->alignment, pd->ftmp->get_pos());
- for (int i=0; i<pad; i++) {
-
- pd->ftmp->store_8(0);
- };
- };
- return OK;
-
-}
-
-Error EditorExportPlatform::save_zip_file(void *p_userdata,const String& p_path, const Vector<uint8_t>& p_data,int p_file,int p_total) {
-
-
- String path=p_path.replace_first("res://","");
-
- ZipData *zd = (ZipData*)p_userdata;
-
- zipFile zip=(zipFile)zd->zip;
-
- zipOpenNewFileInZip(zip,
- path.utf8().get_data(),
- NULL,
- NULL,
- 0,
- NULL,
- 0,
- NULL,
- Z_DEFLATED,
- Z_DEFAULT_COMPRESSION);
-
- zipWriteInFileInZip(zip,p_data.ptr(),p_data.size());
- zipCloseFileInZip(zip);
-
- zd->ep->step(TTR("Storing File:")+" "+p_path,2+p_file*100/p_total,false);
- zd->count++;
- return OK;
-
-}
-
-Error EditorExportPlatform::save_zip(const String& p_path, bool p_make_bundles) {
-
- EditorProgress ep("savezip",TTR("Packing"),102);
-
- //FileAccess *tmp = FileAccess::open(tmppath,FileAccess::WRITE);
-
- FileAccess *src_f;
- zlib_filefunc_def io = zipio_create_io_from_file(&src_f);
- zipFile zip=zipOpen2(p_path.utf8().get_data(),APPEND_STATUS_CREATE,NULL,&io);
-
- ZipData zd;
- zd.count=0;
- zd.ep=&ep;
- zd.zip=zip;
-
-
- Error err = export_project_files(save_zip_file,&zd,p_make_bundles);
-
- zipClose(zip,NULL);
-
- return err;
-}
-
-Error EditorExportPlatform::save_pack(FileAccess *dst,bool p_make_bundles, int p_alignment) {
-
- EditorProgress ep("savepack",TTR("Packing"),102);
-
- String tmppath = EditorSettings::get_singleton()->get_settings_path()+"/tmp/packtmp";
- FileAccess *tmp = FileAccess::open(tmppath,FileAccess::WRITE);
- uint64_t ofs_begin = dst->get_pos();
-
- dst->store_32(0x43504447); //GDPK
- dst->store_32(0); //pack version
- dst->store_32(VERSION_MAJOR);
- dst->store_32(VERSION_MINOR);
- dst->store_32(0); //hmph
- for(int i=0;i<16;i++) {
- //reserved
- dst->store_32(0);
- }
-
- size_t fcountpos = dst->get_pos();
- dst->store_32(0);
-
- PackData pd;
- pd.ep=&ep;
- pd.f=dst;
- pd.ftmp=tmp;
- pd.count=0;
- pd.alignment = p_alignment;
- Error err = export_project_files(save_pack_file,&pd,p_make_bundles);
- memdelete(tmp);
- if (err)
- return err;
-
- if (p_alignment > 1) {
- int pad = _get_pad(p_alignment, dst->get_pos());
- for (int i=0; i<pad; i++) {
-
- dst->store_8(0);
- };
- };
-
- size_t ofsplus = dst->get_pos();
- //append file
-
- tmp = FileAccess::open(tmppath,FileAccess::READ);
-
- ERR_FAIL_COND_V(!tmp,ERR_CANT_OPEN;)
- const int bufsize=16384;
- uint8_t buf[bufsize];
-
- while(true) {
-
- int got = tmp->get_buffer(buf,bufsize);
- if (got<=0)
- break;
- dst->store_buffer(buf,got);
- }
-
- memdelete(tmp);
-
- dst->store_64(dst->get_pos()-ofs_begin);
- dst->store_32(0x43504447); //GDPK
-
- //fix offsets
-
- dst->seek(fcountpos);
- dst->store_32(pd.count);
- for(int i=0;i<pd.file_ofs.size();i++) {
-
- dst->seek(pd.file_ofs[i].pos);
- dst->store_64(pd.file_ofs[i].ofs+ofsplus);
- dst->store_64(pd.file_ofs[i].size);
- }
-
- return OK;
-}
-
-EditorExportPlatform::EditorExportPlatform() {
-
- debugging_enabled = true;
-}
-
-Error EditorExportPlatformPC::export_project(const String& p_path, bool p_debug, int p_flags) {
-
-
-
- EditorProgress ep("export",vformat(TTR("Exporting for %s"),get_name()),102);
-
- const int BUFSIZE = 32768;
-
-
-
- ep.step(TTR("Setting Up.."),0);
-
- String exe_path="";
-
- if (p_debug)
- exe_path=custom_debug_binary;
- else
- exe_path=custom_release_binary;
-
- if (exe_path=="") {
- String fname;
- if (use64) {
- if (p_debug)
- fname=debug_binary64;
- else
- fname=release_binary64;
- } else {
- if (p_debug)
- fname=debug_binary32;
- else
- fname=release_binary32;
- }
- String err="";
- exe_path=find_export_template(fname,&err);
- if (exe_path=="") {
- EditorNode::add_io_error(err);
- return ERR_FILE_CANT_READ;
- }
- }
-
- FileAccess *src_exe=FileAccess::open(exe_path,FileAccess::READ);
- if (!src_exe) {
-
- EditorNode::add_io_error("Couldn't read source executable at:\n "+exe_path);
- return ERR_FILE_CANT_READ;
- }
-
- FileAccess *dst=FileAccess::open(p_path,FileAccess::WRITE);
- if (!dst) {
-
- EditorNode::add_io_error("Can't copy executable file to:\n "+p_path);
- return ERR_FILE_CANT_WRITE;
- }
-
- uint8_t buff[32768];
-
- while(true) {
-
- int c = src_exe->get_buffer(buff,BUFSIZE);
- if (c>0) {
-
- dst->store_buffer(buff,c);
- } else {
- break;
- }
- }
-
- String dstfile = p_path.replace_first("res://","").replace("\\","/");
- if (export_mode!=EXPORT_EXE) {
-
- String dstfile_extension=export_mode==EXPORT_ZIP?".zip":".pck";
- if (dstfile.find("/")!=-1)
- dstfile=dstfile.get_base_dir()+"/data"+dstfile_extension;
- else
- dstfile="data"+dstfile_extension;
- if (export_mode==EXPORT_PACK) {
-
- memdelete(dst);
-
- dst=FileAccess::open(dstfile,FileAccess::WRITE);
- if (!dst) {
-
- EditorNode::add_io_error("Can't write data pack to:\n "+p_path);
- return ERR_FILE_CANT_WRITE;
- }
- }
- }
-
-
-
- memdelete(src_exe);
-
- Error err = export_mode==EXPORT_ZIP?save_zip(dstfile,bundle):save_pack(dst,bundle);
- memdelete(dst);
- return err;
-}
-
-void EditorExportPlatformPC::set_binary_extension(const String& p_extension) {
-
- binary_extension=p_extension;
-}
-
-EditorExportPlatformPC::EditorExportPlatformPC() {
-
- export_mode=EXPORT_PACK;
- use64=true;
-}
-
-
-
-
-
-
-
-
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-EditorImportExport* EditorImportExport::singleton=NULL;
-
-void EditorImportExport::add_import_plugin(const Ref<EditorImportPlugin>& p_plugin) {
-
- // Need to make sure the name is unique if we are going to lookup by it
- ERR_FAIL_COND(by_idx.has(p_plugin->get_name()));
-
- by_idx[ p_plugin->get_name() ]=plugins.size();
- plugins.push_back(p_plugin);
-}
-
-void EditorImportExport::remove_import_plugin(const Ref<EditorImportPlugin>& p_plugin) {
-
- String plugin_name = p_plugin->get_name();
-
- // Keep the indices the same
- // Find the index of the target plugin
- ERR_FAIL_COND(!by_idx.has(plugin_name));
- int idx = by_idx[plugin_name];
- int last_idx = plugins.size() - 1;
-
- // Swap the last plugin and the target one
- SWAP(plugins[idx], plugins[last_idx]);
-
- // Update the index of the old last one
- by_idx[plugins[idx]->get_name()] = idx;
-
- // Remove the target plugin's by_idx entry
- by_idx.erase(plugin_name);
-
- // Erase the plugin
- plugins.remove(last_idx);
-}
-
-int EditorImportExport::get_import_plugin_count() const{
-
- return plugins.size();
-}
-Ref<EditorImportPlugin> EditorImportExport::get_import_plugin(int p_idx) const{
-
- ERR_FAIL_INDEX_V(p_idx,plugins.size(),Ref<EditorImportPlugin>());
- return plugins[p_idx];
-
-}
-
-
-
-Ref<EditorImportPlugin> EditorImportExport::get_import_plugin_by_name(const String& p_string) const{
-
- ERR_FAIL_COND_V( !by_idx.has(p_string), Ref<EditorImportPlugin>());
- return plugins[ by_idx[p_string] ];
-}
-
-void EditorImportExport::add_export_plugin(const Ref<EditorExportPlugin>& p_plugin) {
-
- ERR_FAIL_COND( p_plugin.is_null() );
-
- export_plugins.push_back(p_plugin);
-}
-
-void EditorImportExport::remove_export_plugin(const Ref<EditorExportPlugin>& p_plugin) {
-
- ERR_FAIL_COND( p_plugin.is_null() );
- export_plugins.erase(p_plugin);
-}
-
-int EditorImportExport::get_export_plugin_count() const{
-
- return export_plugins.size();
-}
-Ref<EditorExportPlugin> EditorImportExport::get_export_plugin(int p_idx) const{
-
- ERR_FAIL_INDEX_V(p_idx,export_plugins.size(),Ref<EditorExportPlugin>());
- return export_plugins[p_idx];
-}
-
-void EditorImportExport::set_export_file_action(const StringName& p_file, FileAction p_action) {
-
- if (p_action==ACTION_NONE) {
-
- files.erase(p_file);
- } else {
-
- files[p_file]=p_action;
- }
-
-}
-
-EditorImportExport::FileAction EditorImportExport::get_export_file_action(const StringName& p_file) const{
-
-
- if (files.has(p_file))
- return files[p_file];
-
-
- return ACTION_NONE;
-}
-
-void EditorImportExport::get_export_file_list(List<StringName> *p_files){
-
-
- for (Map<StringName,FileAction>::Element *E=files.front();E;E=E->next()) {
-
- p_files->push_back(E->key());
- }
-
-}
-
-void EditorImportExport::add_export_platform(const Ref<EditorExportPlatform>& p_export) {
-
- exporters[p_export->get_name()]=p_export;
-}
-
-
-void EditorImportExport::get_export_platforms(List<StringName> *r_platforms) {
-
- for (Map<StringName,Ref<EditorExportPlatform> >::Element *E=exporters.front();E;E=E->next()) {
-
- r_platforms->push_back(E->key());
- }
-}
-
-Ref<EditorExportPlatform> EditorImportExport::get_export_platform(const StringName& p_platform) {
-
- if (exporters.has(p_platform)) {
- return exporters[p_platform];
- } else {
- return Ref<EditorExportPlatform>();
- }
-}
-
-
-bool EditorImportExport::poll_export_platforms() {
-
- bool changed=false;
- for (Map<StringName,Ref<EditorExportPlatform> >::Element *E=exporters.front();E;E=E->next()) {
-
- if (E->get()->poll_devices())
- changed=true;
- }
-
- return changed;
-
-}
-
-void EditorImportExport::set_export_filter(ExportFilter p_enable) {
-
- export_filter=p_enable;
-}
-
-EditorImportExport::ExportFilter EditorImportExport::get_export_filter() const{
-
- return export_filter;
-}
-
-void EditorImportExport::set_export_custom_filter(const String& p_custom_filter){
- export_custom_filter=p_custom_filter;
-}
-void EditorImportExport::set_export_custom_filter_exclude(const String& p_custom_filter){
- export_custom_filter_exclude=p_custom_filter;
-}
-String EditorImportExport::get_export_custom_filter() const{
- return export_custom_filter;
-}
-String EditorImportExport::get_export_custom_filter_exclude() const{
- return export_custom_filter_exclude;
-}
-
-void EditorImportExport::set_export_image_action(ImageAction p_action) {
-
- image_action=p_action;
-}
-
-EditorImportExport::ImageAction EditorImportExport::get_export_image_action() const{
-
- return image_action;
-}
-
-void EditorImportExport::set_export_image_shrink(float p_shrink) {
-
- image_shrink=p_shrink;
-}
-
-float EditorImportExport::get_export_image_shrink() const{
-
- return image_shrink;
-}
-
-
-void EditorImportExport::set_export_image_quality(float p_quality){
-
- image_action_compress_quality=p_quality;
-}
-
-float EditorImportExport::get_export_image_quality() const{
-
- return image_action_compress_quality;
-}
-
-void EditorImportExport::image_export_group_create(const StringName& p_name) {
-
- ERR_FAIL_COND(image_groups.has(p_name));
- ImageGroup ig;
- ig.action=IMAGE_ACTION_NONE; //default
- ig.make_atlas=false;
- ig.shrink=1;
- ig.lossy_quality=0.7;
- image_groups[p_name]=ig;
-
-
-}
-
-
-bool EditorImportExport::image_export_has_group(const StringName& p_name) const {
-
- return image_groups.has(p_name);
-}
-void EditorImportExport::image_export_get_groups(List<StringName> *r_name) const {
-
- for (Map<StringName,ImageGroup>::Element *E=image_groups.front();E;E=E->next()) {
-
- r_name->push_back(E->key());
- }
-}
-
-void EditorImportExport::image_export_group_remove(const StringName& p_name){
-
- ERR_FAIL_COND(!image_groups.has(p_name));
- image_groups.erase(p_name);
-}
-void EditorImportExport::image_export_group_set_image_action(const StringName& p_export_group,ImageAction p_action){
-
- ERR_FAIL_COND(!image_groups.has(p_export_group));
- image_groups[p_export_group].action=p_action;
-
-}
-EditorImportExport::ImageAction EditorImportExport::image_export_group_get_image_action(const StringName& p_export_group) const{
-
- ERR_FAIL_COND_V(!image_groups.has(p_export_group),IMAGE_ACTION_NONE);
- return image_groups[p_export_group].action;
-
-}
-void EditorImportExport::image_export_group_set_make_atlas(const StringName& p_export_group,bool p_make){
-
- ERR_FAIL_COND(!image_groups.has(p_export_group));
- image_groups[p_export_group].make_atlas=p_make;
-
-}
-bool EditorImportExport::image_export_group_get_make_atlas(const StringName& p_export_group) const{
-
- ERR_FAIL_COND_V(!image_groups.has(p_export_group),false);
- return image_groups[p_export_group].make_atlas;
-
-}
-void EditorImportExport::image_export_group_set_shrink(const StringName& p_export_group,float p_amount){
- ERR_FAIL_COND(!image_groups.has(p_export_group));
- image_groups[p_export_group].shrink=p_amount;
-
-}
-float EditorImportExport::image_export_group_get_shrink(const StringName& p_export_group) const{
-
- ERR_FAIL_COND_V(!image_groups.has(p_export_group),1);
- return image_groups[p_export_group].shrink;
-
-}
-
-void EditorImportExport::image_export_group_set_lossy_quality(const StringName& p_export_group,float p_amount){
- ERR_FAIL_COND(!image_groups.has(p_export_group));
- image_groups[p_export_group].lossy_quality=p_amount;
-
-}
-float EditorImportExport::image_export_group_get_lossy_quality(const StringName& p_export_group) const{
-
- ERR_FAIL_COND_V(!image_groups.has(p_export_group),1);
- return image_groups[p_export_group].lossy_quality;
-
-}
-
-StringName EditorImportExport::image_get_export_group(const StringName& p_image) const {
-
- if (image_group_files.has(p_image))
- return image_group_files[p_image];
- else
- return StringName();
-
-}
-
-void EditorImportExport::image_add_to_export_group(const StringName& p_image,const StringName& p_export_group) {
-
-
- bool emptygroup = String(p_export_group)==String();
- ERR_FAIL_COND(!emptygroup && !image_groups.has(p_export_group));
-
- if (emptygroup)
- image_group_files.erase(p_image);
- else
- image_group_files[p_image]=p_export_group;
-}
-
-void EditorImportExport::image_export_get_images_in_group(const StringName& p_group,List<StringName> *r_images) const {
-
- for (Map<StringName,StringName>::Element *E=image_group_files.front();E;E=E->next()) {
-
- if (p_group==E->get())
- r_images->push_back(E->key());
- }
-}
-
-void EditorImportExport::set_convert_text_scenes(bool p_convert) {
-
- convert_text_scenes=p_convert;
-}
-
-bool EditorImportExport::get_convert_text_scenes() const{
-
- return convert_text_scenes;
-}
-
-
-void EditorImportExport::load_config() {
-
- Ref<ConfigFile> cf = memnew( ConfigFile );
-
- Error err = cf->load("res://export.cfg");
- if (err!=OK)
- return; //no export config to be loaded!
-
-
- export_custom_filter=cf->get_value("export_filter","filter");
- export_custom_filter_exclude=cf->get_value("export_filter","filter_exclude");
- String t=cf->get_value("export_filter","type");
- if (t=="selected")
- export_filter=EXPORT_SELECTED;
- else if (t=="resources")
- export_filter=EXPORT_RESOURCES;
- else if (t=="all")
- export_filter=EXPORT_ALL;
-
- if (cf->has_section("convert_images")) {
-
- String ci = "convert_images";
- String action = cf->get_value(ci,"action");
- if (action=="none")
- image_action=IMAGE_ACTION_NONE;
- else if (action=="compress_ram")
- image_action=IMAGE_ACTION_COMPRESS_RAM;
- else if (action=="compress_disk")
- image_action=IMAGE_ACTION_COMPRESS_DISK;
-
- image_action_compress_quality = cf->get_value(ci,"compress_quality");
- if (cf->has_section_key(ci,"shrink"))
- image_shrink = cf->get_value(ci,"shrink");
- else
- image_shrink=1;
- String formats=cf->get_value(ci,"formats");
- Vector<String> f = formats.split(",");
- image_formats.clear();
- for(int i=0;i<f.size();i++) {
- image_formats.insert(f[i].strip_edges());
- }
- }
-
- if (cf->has_section("convert_scenes")) {
-
- convert_text_scenes = cf->get_value("convert_scenes","convert_text_scenes");
- }
-
-
- if (cf->has_section("export_filter_files")) {
-
-
- String eff = "export_filter_files";
- List<String> k;
- cf->get_section_keys(eff,&k);
- for(List<String>::Element *E=k.front();E;E=E->next()) {
-
- String val = cf->get_value(eff,E->get());
- if (val=="copy") {
- files[E->get()]=ACTION_COPY;
- } else if (val=="bundle") {
- files[E->get()]=ACTION_BUNDLE;
- }
- }
- }
-
- List<String> sect;
-
- cf->get_sections(&sect);
-
- for(List<String>::Element *E=sect.front();E;E=E->next()) {
-
- String s = E->get();
- if (!s.begins_with("platform:"))
- continue;
- String p = s.substr(s.find(":")+1,s.length());
-
- if (!exporters.has(p))
- continue;
-
- Ref<EditorExportPlatform> ep = exporters[p];
- if (!ep.is_valid()) {
- continue;
- }
- List<String> keys;
- cf->get_section_keys(s,&keys);
- for(List<String>::Element *F=keys.front();F;F=F->next()) {
- ep->set(F->get(),cf->get_value(s,F->get()));
- }
- }
-
- //save image groups
-
- if (cf->has_section("image_groups")) {
-
- sect.clear();
- cf->get_section_keys("image_groups",&sect);
- for(List<String>::Element *E=sect.front();E;E=E->next()) {
-
- Dictionary d = cf->get_value("image_groups",E->get());
- ImageGroup g;
- g.action=IMAGE_ACTION_NONE;
- g.make_atlas=false;
- g.lossy_quality=0.7;
- g.shrink=1;
-
- if (d.has("action")) {
- String action=d["action"];
- if (action=="compress_ram")
- g.action=IMAGE_ACTION_COMPRESS_RAM;
- else if (action=="compress_disk")
- g.action=IMAGE_ACTION_COMPRESS_DISK;
- else if (action=="keep")
- g.action=IMAGE_ACTION_KEEP;
- }
-
- if (d.has("atlas"))
- g.make_atlas=d["atlas"];
- if (d.has("lossy_quality"))
- g.lossy_quality=d["lossy_quality"];
- if (d.has("shrink")) {
-
- g.shrink=d["shrink"];
- g.shrink=CLAMP(g.shrink,1,8);
- }
-
- image_groups[E->get()]=g;
-
- }
-
- if (cf->has_section_key("image_group_files","files")) {
-
- Vector<String> sa=cf->get_value("image_group_files","files");
- if (sa.size()%2==0) {
- for(int i=0;i<sa.size();i+=2) {
- image_group_files[sa[i]]=sa[i+1];
- }
- }
- }
-
- }
-
-
- if (cf->has_section("script")) {
-
- if (cf->has_section_key("script","action")) {
-
- String action = cf->get_value("script","action");
- if (action=="compile")
- script_action=SCRIPT_ACTION_COMPILE;
- else if (action=="encrypt")
- script_action=SCRIPT_ACTION_ENCRYPT;
- else
- script_action=SCRIPT_ACTION_NONE;
-
- }
-
- if (cf->has_section_key("script","encrypt_key")) {
-
- script_key = cf->get_value("script","encrypt_key");
- }
- }
-
- if (cf->has_section("convert_samples")) {
-
- if (cf->has_section_key("convert_samples","action")) {
- String action = cf->get_value("convert_samples","action");
- if (action=="none") {
- sample_action=SAMPLE_ACTION_NONE;
- } else if (action=="compress_ram") {
- sample_action=SAMPLE_ACTION_COMPRESS_RAM;
- }
- }
-
- if (cf->has_section_key("convert_samples","max_hz"))
- sample_action_max_hz=cf->get_value("convert_samples","max_hz");
-
- if (cf->has_section_key("convert_samples","trim"))
- sample_action_trim=cf->get_value("convert_samples","trim");
- }
-
-
-
-}
-
-
-
-
-
-void EditorImportExport::save_config() {
-
- Ref<ConfigFile> cf = memnew( ConfigFile );
-
- switch(export_filter) {
- case EXPORT_SELECTED: cf->set_value("export_filter","type","selected"); break;
- case EXPORT_RESOURCES: cf->set_value("export_filter","type","resources"); break;
- case EXPORT_ALL: cf->set_value("export_filter","type","all"); break;
- }
-
- cf->set_value("export_filter","filter",export_custom_filter);
- cf->set_value("export_filter", "filter_exclude",export_custom_filter_exclude);
-
- String file_action_section = "export_filter_files";
-
- for (Map<StringName,FileAction>::Element *E=files.front();E;E=E->next()) {
-
- String f=E->key();
- String a;
- switch (E->get()) {
- case ACTION_NONE: {}
- case ACTION_COPY: a="copy"; break;
- case ACTION_BUNDLE: a="bundle"; break;
- }
-
- cf->set_value(file_action_section,f,a);
- }
-
-
- for (Map<StringName,Ref<EditorExportPlatform> >::Element *E=exporters.front();E;E=E->next()) {
-
- String pname = "platform:"+String(E->key());
-
- Ref<EditorExportPlatform> ep = E->get();
-
- List<PropertyInfo> pl;
- ep->get_property_list(&pl);
-
- for (List<PropertyInfo>::Element *F=pl.front();F;F=F->next()) {
-
- cf->set_value(pname,F->get().name,ep->get(F->get().name));
- }
-
- }
-
- switch(image_action) {
- case IMAGE_ACTION_NONE: cf->set_value("convert_images","action","none"); break;
- case IMAGE_ACTION_COMPRESS_RAM: cf->set_value("convert_images","action","compress_ram"); break;
- case IMAGE_ACTION_COMPRESS_DISK: cf->set_value("convert_images","action","compress_disk"); break;
- }
-
- cf->set_value("convert_images","shrink",image_shrink);
- cf->set_value("convert_images","compress_quality",image_action_compress_quality);
-
- String formats;
- for(Set<String>::Element *E=image_formats.front();E;E=E->next()) {
-
- if (E!=image_formats.front())
- formats+=",";
- formats+=E->get();
- }
-
- cf->set_value("convert_images","formats",formats);
-
- //save image groups
-
- for(Map<StringName,ImageGroup>::Element *E=image_groups.front();E;E=E->next()) {
-
- Dictionary d;
- switch(E->get().action) {
- case IMAGE_ACTION_NONE: d["action"]="default"; break;
- case IMAGE_ACTION_COMPRESS_RAM: d["action"]="compress_ram"; break;
- case IMAGE_ACTION_COMPRESS_DISK: d["action"]="compress_disk"; break;
- case IMAGE_ACTION_KEEP: d["action"]="keep"; break;
- }
-
-
- d["atlas"]=E->get().make_atlas;
- d["shrink"]=E->get().shrink;
- d["lossy_quality"]=E->get().lossy_quality;
- cf->set_value("image_groups",E->key(),d);
-
- }
-
- if (image_groups.size() && image_group_files.size()){
-
- Vector<String> igfkeys;
- igfkeys.resize(image_group_files.size());
- int idx=0;
- for (Map<StringName,StringName>::Element *E=image_group_files.front();E;E=E->next()) {
- igfkeys[idx++]=E->key();
- }
- igfkeys.sort();
-
- Vector<String> igfsave;
- igfsave.resize(image_group_files.size()*2);
- idx=0;
- for (int i=0;i<igfkeys.size();++i) {
-
- igfsave[idx++]=igfkeys[i];
- igfsave[idx++]=image_group_files[igfkeys[i]];
- }
- cf->set_value("image_group_files","files",igfsave);
- }
-
- switch(script_action) {
- case SCRIPT_ACTION_NONE: cf->set_value("script","action","none"); break;
- case SCRIPT_ACTION_COMPILE: cf->set_value("script","action","compile"); break;
- case SCRIPT_ACTION_ENCRYPT: cf->set_value("script","action","encrypt"); break;
- }
-
- cf->set_value("convert_scenes","convert_text_scenes",convert_text_scenes);
-
- cf->set_value("script","encrypt_key",script_key);
-
- switch(sample_action) {
- case SAMPLE_ACTION_NONE: cf->set_value("convert_samples","action","none"); break;
- case SAMPLE_ACTION_COMPRESS_RAM: cf->set_value("convert_samples","action","compress_ram"); break;
- }
-
- cf->set_value("convert_samples","max_hz",sample_action_max_hz);
- cf->set_value("convert_samples","trim",sample_action_trim);
-
- cf->save("res://export.cfg");
-
-}
-
-
-void EditorImportExport::script_set_action(ScriptAction p_action) {
-
- script_action=p_action;
-}
-
-EditorImportExport::ScriptAction EditorImportExport::script_get_action() const{
-
- return script_action;
-}
-
-void EditorImportExport::script_set_encryption_key(const String& p_key){
-
- script_key=p_key;
-}
-String EditorImportExport::script_get_encryption_key() const{
-
- return script_key;
-}
-
-
-void EditorImportExport::sample_set_action(SampleAction p_action) {
-
- sample_action=p_action;
-}
-
-EditorImportExport::SampleAction EditorImportExport::sample_get_action() const{
-
- return sample_action;
-}
-
-void EditorImportExport::sample_set_max_hz(int p_hz){
-
- sample_action_max_hz=p_hz;
-}
-int EditorImportExport::sample_get_max_hz() const{
-
- return sample_action_max_hz;
-}
-
-void EditorImportExport::sample_set_trim(bool p_trim){
-
- sample_action_trim=p_trim;
-}
-bool EditorImportExport::sample_get_trim() const{
-
- return sample_action_trim;
-}
-
-PoolVector<String> EditorImportExport::_get_export_file_list() {
-
- PoolVector<String> fl;
- for (Map<StringName,FileAction>::Element *E=files.front();E;E=E->next()) {
-
- fl.push_back(E->key());
- }
-
- return fl;
-}
-
-PoolVector<String> EditorImportExport::_get_export_platforms() {
-
- PoolVector<String> ep;
- for (Map<StringName,Ref<EditorExportPlatform> >::Element *E=exporters.front();E;E=E->next()) {
-
- ep.push_back(E->key());
- }
-
- return ep;
-
-}
-
-void EditorImportExport::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("add_import_plugin","plugin"),&EditorImportExport::add_import_plugin);
- ClassDB::bind_method(D_METHOD("remove_import_plugin","plugin"),&EditorImportExport::remove_import_plugin);
- ClassDB::bind_method(D_METHOD("get_import_plugin_count"),&EditorImportExport::get_import_plugin_count);
- ClassDB::bind_method(D_METHOD("get_import_plugin","idx"),&EditorImportExport::get_import_plugin);
- ClassDB::bind_method(D_METHOD("get_import_plugin_by_name","name"),&EditorImportExport::get_import_plugin_by_name);
-
- ClassDB::bind_method(D_METHOD("add_export_plugin","plugin"),&EditorImportExport::add_export_plugin);
- ClassDB::bind_method(D_METHOD("remove_export_plugin","plugin"),&EditorImportExport::remove_export_plugin);
- ClassDB::bind_method(D_METHOD("get_export_plugin_count"),&EditorImportExport::get_export_plugin_count);
- ClassDB::bind_method(D_METHOD("get_export_plugin","idx"),&EditorImportExport::get_export_plugin);
-
- ClassDB::bind_method(D_METHOD("set_export_file_action","file","action"),&EditorImportExport::set_export_file_action);
- ClassDB::bind_method(D_METHOD("get_export_file_action","file"),&EditorImportExport::get_export_file_action);
- ClassDB::bind_method(D_METHOD("get_export_file_list"),&EditorImportExport::_get_export_file_list);
-
- ClassDB::bind_method(D_METHOD("add_export_platform","platform"),&EditorImportExport::add_export_platform);
- //ClassDB::bind_method(D_METHOD("remove_export_platform","platform"),&EditorImportExport::add_export_platform);
- ClassDB::bind_method(D_METHOD("get_export_platform","name"),&EditorImportExport::get_export_platform);
- ClassDB::bind_method(D_METHOD("get_export_platforms"),&EditorImportExport::_get_export_platforms);
-
- ClassDB::bind_method(D_METHOD("set_export_filter","filter"),&EditorImportExport::set_export_filter);
- ClassDB::bind_method(D_METHOD("get_export_filter"),&EditorImportExport::get_export_filter);
-
- ClassDB::bind_method(D_METHOD("set_export_custom_filter","filter"),&EditorImportExport::set_export_custom_filter);
- ClassDB::bind_method(D_METHOD("get_export_custom_filter"),&EditorImportExport::get_export_custom_filter);
-
- ClassDB::bind_method(D_METHOD("set_export_custom_filter_exclude","filter_exclude"),&EditorImportExport::set_export_custom_filter_exclude);
- ClassDB::bind_method(D_METHOD("get_export_custom_filter_exclude"),&EditorImportExport::get_export_custom_filter_exclude);
-
-
- ClassDB::bind_method(D_METHOD("image_export_group_create"),&EditorImportExport::image_export_group_create);
- ClassDB::bind_method(D_METHOD("image_export_group_remove"),&EditorImportExport::image_export_group_remove);
- ClassDB::bind_method(D_METHOD("image_export_group_set_image_action"),&EditorImportExport::image_export_group_set_image_action);
- ClassDB::bind_method(D_METHOD("image_export_group_set_make_atlas"),&EditorImportExport::image_export_group_set_make_atlas);
- ClassDB::bind_method(D_METHOD("image_export_group_set_shrink"),&EditorImportExport::image_export_group_set_shrink);
- ClassDB::bind_method(D_METHOD("image_export_group_get_image_action"),&EditorImportExport::image_export_group_get_image_action);
- ClassDB::bind_method(D_METHOD("image_export_group_get_make_atlas"),&EditorImportExport::image_export_group_get_make_atlas);
- ClassDB::bind_method(D_METHOD("image_export_group_get_shrink"),&EditorImportExport::image_export_group_get_shrink);
- ClassDB::bind_method(D_METHOD("image_add_to_export_group"),&EditorImportExport::image_add_to_export_group);
- ClassDB::bind_method(D_METHOD("script_set_action"),&EditorImportExport::script_set_action);
- ClassDB::bind_method(D_METHOD("script_set_encryption_key"),&EditorImportExport::script_set_encryption_key);
- ClassDB::bind_method(D_METHOD("script_get_action"),&EditorImportExport::script_get_action);
- ClassDB::bind_method(D_METHOD("script_get_encryption_key"),&EditorImportExport::script_get_encryption_key);
-
-
-
- BIND_CONSTANT( ACTION_NONE );
- BIND_CONSTANT( ACTION_COPY );
- BIND_CONSTANT( ACTION_BUNDLE );
-
- BIND_CONSTANT( EXPORT_SELECTED );
- BIND_CONSTANT( EXPORT_RESOURCES );
- BIND_CONSTANT( EXPORT_ALL );
-
- BIND_CONSTANT( IMAGE_ACTION_NONE );
- BIND_CONSTANT( IMAGE_ACTION_COMPRESS_DISK );
- BIND_CONSTANT( IMAGE_ACTION_COMPRESS_RAM );
- BIND_CONSTANT( IMAGE_ACTION_KEEP );
-
- BIND_CONSTANT( SCRIPT_ACTION_NONE );
- BIND_CONSTANT( SCRIPT_ACTION_COMPILE );
- BIND_CONSTANT( SCRIPT_ACTION_ENCRYPT );
-};
-
-
-
-EditorImportExport::EditorImportExport() {
-
- export_filter=EXPORT_RESOURCES;
- singleton=this;
- image_action=IMAGE_ACTION_NONE;
- image_action_compress_quality=0.7;
- image_formats.insert("png");
- image_shrink=1;
-
-
- script_action=SCRIPT_ACTION_COMPILE;
-
- sample_action=SAMPLE_ACTION_NONE;
- sample_action_max_hz=44100;
- sample_action_trim=false;
-
- convert_text_scenes=true;
-
-}
-
-
-
-EditorImportExport::~EditorImportExport() {
-
-
-
-}
-#endif
diff --git a/editor/editor_export.h b/editor/editor_export.h
index dc4b198575..feff9678af 100644
--- a/editor/editor_export.h
+++ b/editor/editor_export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,6 +30,7 @@
#ifndef EDITOR_EXPORT_H
#define EDITOR_EXPORT_H
+#include "os/dir_access.h"
#include "resource.h"
#include "scene/main/node.h"
#include "scene/main/timer.h"
@@ -157,6 +158,9 @@ private:
static Error _save_pack_file(void *p_userdata, const String &p_path, const Vector<uint8_t> &p_data, int p_file, int p_total);
static Error _save_zip_file(void *p_userdata, const String &p_path, const Vector<uint8_t> &p_data, int p_file, int p_total);
+ void _edit_files_with_filter(DirAccess *da, const Vector<String> &p_filters, Set<String> &r_list, bool exclude);
+ void _edit_filter_list(Set<String> &r_list, const String &p_filter, bool exclude);
+
protected:
bool exists_export_template(String template_file_name, String *err) const;
String find_export_template(String template_file_name, String *err = NULL) const;
@@ -290,7 +294,7 @@ public:
void set_name(const String &p_name);
void set_os_name(const String &p_name);
- void set_logo(const Ref<Texture> &p_loco);
+ void set_logo(const Ref<Texture> &p_logo);
void set_release_64(const String &p_file);
void set_release_32(const String &p_file);
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index d572ee8724..ab994dbe75 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -809,27 +809,27 @@ void EditorFileDialog::set_mode(Mode p_mode) {
case MODE_OPEN_FILE:
get_ok()->set_text(TTR("Open"));
- set_title("Open a File");
+ set_title(TTR("Open a File"));
makedir->hide();
break;
case MODE_OPEN_FILES:
get_ok()->set_text(TTR("Open"));
- set_title("Open File(s)");
+ set_title(TTR("Open File(s)"));
makedir->hide();
break;
case MODE_OPEN_DIR:
get_ok()->set_text(TTR("Open"));
- set_title("Open a Directory");
+ set_title(TTR("Open a Directory"));
makedir->show();
break;
case MODE_OPEN_ANY:
get_ok()->set_text(TTR("Open"));
- set_title("Open a File or Directory");
+ set_title(TTR("Open a File or Directory"));
makedir->show();
break;
case MODE_SAVE_FILE:
get_ok()->set_text(TTR("Save"));
- set_title("Save a File");
+ set_title(TTR("Save a File"));
makedir->show();
break;
}
@@ -1187,15 +1187,15 @@ void EditorFileDialog::_bind_methods() {
ADD_SIGNAL(MethodInfo("files_selected", PropertyInfo(Variant::POOL_STRING_ARRAY, "paths")));
ADD_SIGNAL(MethodInfo("dir_selected", PropertyInfo(Variant::STRING, "dir")));
- BIND_CONSTANT(MODE_OPEN_FILE);
- BIND_CONSTANT(MODE_OPEN_FILES);
- BIND_CONSTANT(MODE_OPEN_DIR);
- BIND_CONSTANT(MODE_OPEN_ANY);
- BIND_CONSTANT(MODE_SAVE_FILE);
+ BIND_ENUM_CONSTANT(MODE_OPEN_FILE);
+ BIND_ENUM_CONSTANT(MODE_OPEN_FILES);
+ BIND_ENUM_CONSTANT(MODE_OPEN_DIR);
+ BIND_ENUM_CONSTANT(MODE_OPEN_ANY);
+ BIND_ENUM_CONSTANT(MODE_SAVE_FILE);
- BIND_CONSTANT(ACCESS_RESOURCES);
- BIND_CONSTANT(ACCESS_USERDATA);
- BIND_CONSTANT(ACCESS_FILESYSTEM);
+ BIND_ENUM_CONSTANT(ACCESS_RESOURCES);
+ BIND_ENUM_CONSTANT(ACCESS_USERDATA);
+ BIND_ENUM_CONSTANT(ACCESS_FILESYSTEM);
}
void EditorFileDialog::set_show_hidden_files(bool p_show) {
diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h
index f44193c70b..3b22189014 100644
--- a/editor/editor_file_dialog.h
+++ b/editor/editor_file_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index d873a55f69..c175886d14 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -118,6 +118,12 @@ Vector<String> EditorFileSystemDirectory::get_file_deps(int p_idx) const {
return files[p_idx]->deps;
}
+bool EditorFileSystemDirectory::get_file_import_is_valid(int p_idx) const {
+
+ ERR_FAIL_INDEX_V(p_idx, files.size(), false);
+ return files[p_idx]->import_valid;
+}
+
StringName EditorFileSystemDirectory::get_file_type(int p_idx) const {
ERR_FAIL_INDEX_V(p_idx, files.size(), "");
@@ -142,6 +148,7 @@ void EditorFileSystemDirectory::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_file", "idx"), &EditorFileSystemDirectory::get_file);
ClassDB::bind_method(D_METHOD("get_file_path", "idx"), &EditorFileSystemDirectory::get_file_path);
ClassDB::bind_method(D_METHOD("get_file_type", "idx"), &EditorFileSystemDirectory::get_file_type);
+ ClassDB::bind_method(D_METHOD("get_file_import_is_valid", "idx"), &EditorFileSystemDirectory::get_file_import_is_valid);
ClassDB::bind_method(D_METHOD("get_name"), &EditorFileSystemDirectory::get_name);
ClassDB::bind_method(D_METHOD("get_path"), &EditorFileSystemDirectory::get_path);
ClassDB::bind_method(D_METHOD("get_parent"), &EditorFileSystemDirectory::get_parent);
@@ -181,7 +188,7 @@ void EditorFileSystem::_scan_filesystem() {
String project = ProjectSettings::get_singleton()->get_resource_path();
- String fscache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("filesystem_cache2");
+ String fscache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("filesystem_cache3");
FileAccess *f = FileAccess::open(fscache, FileAccess::READ);
if (f) {
@@ -201,7 +208,7 @@ void EditorFileSystem::_scan_filesystem() {
} else {
Vector<String> split = l.split("::");
- ERR_CONTINUE(split.size() != 5);
+ ERR_CONTINUE(split.size() != 6);
String name = split[0];
String file;
@@ -212,8 +219,9 @@ void EditorFileSystem::_scan_filesystem() {
fc.type = split[1];
fc.modification_time = split[2].to_int64();
fc.import_modification_time = split[3].to_int64();
+ fc.import_valid = split[4].to_int64() != 0;
- String deps = split[4].strip_edges();
+ String deps = split[5].strip_edges();
if (deps.length()) {
Vector<String> dp = deps.split("<>");
for (int i = 0; i < dp.size(); i++) {
@@ -230,6 +238,28 @@ void EditorFileSystem::_scan_filesystem() {
memdelete(f);
}
+ String update_cache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("filesystem_update3");
+
+ print_line("try to see fs update2");
+ if (FileAccess::exists(update_cache)) {
+
+ print_line("it exists");
+
+ {
+ FileAccessRef f = FileAccess::open(update_cache, FileAccess::READ);
+ String l = f->get_line().strip_edges();
+ while (l != String()) {
+
+ print_line("erased cache for: " + l + " " + itos(file_cache.has(l)));
+ file_cache.erase(l); //erase cache for this, so it gets updated
+ l = f->get_line().strip_edges();
+ }
+ }
+
+ DirAccessRef d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+ d->remove(update_cache); //bye bye update cache
+ }
+
EditorProgressBG scan_progress("efs", "ScanFS", 1000);
ScanProgress sp;
@@ -260,7 +290,7 @@ void EditorFileSystem::_scan_filesystem() {
}
void EditorFileSystem::_save_filesystem_cache() {
- String fscache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("filesystem_cache2");
+ String fscache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("filesystem_cache3");
FileAccess *f = FileAccess::open(fscache, FileAccess::WRITE);
_save_filesystem_cache(filesystem, f);
@@ -339,6 +369,7 @@ bool EditorFileSystem::_update_scan_actions() {
int idx = ia.dir->find_file_index(ia.file);
ERR_CONTINUE(idx == -1);
+ _delete_internal_files(ia.dir->files[idx]->file);
memdelete(ia.dir->files[idx]);
ia.dir->files.remove(idx);
@@ -596,11 +627,14 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
if (fc && fc->modification_time == mt && fc->import_modification_time == import_mt && _check_missing_imported_files(path)) {
fi->type = fc->type;
+ fi->deps = fc->deps;
fi->modified_time = fc->modification_time;
fi->import_modified_time = fc->import_modification_time;
+ fi->import_valid = fc->import_valid;
if (fc->type == String()) {
fi->type = ResourceLoader::get_resource_type(path);
//there is also the chance that file type changed due to reimport, must probably check this somehow here (or kind of note it for next time in another file?)
+ //note: I think this should not happen any longer..
}
} else {
@@ -619,9 +653,11 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
}
fi->type = ResourceFormatImporter::get_singleton()->get_resource_type(path);
+ //fi->deps = ResourceLoader::get_dependencies(path); pointless because it will be reimported, but..
print_line("import extension tried resource type for " + path + " and its " + fi->type);
fi->modified_time = 0;
fi->import_modified_time = 0;
+ fi->import_valid = ResourceLoader::is_import_valid(path);
ItemAction ia;
ia.action = ItemAction::ACTION_FILE_REIMPORT;
@@ -630,17 +666,22 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
scan_actions.push_back(ia);
}
} else {
- //not imported, so just update type if changed
- if (fc && fc->modification_time == mt) {
+ if (fc && fc->modification_time == mt) {
+ //not imported, so just update type if changed
fi->type = fc->type;
fi->modified_time = fc->modification_time;
+ fi->deps = fc->deps;
fi->import_modified_time = 0;
+ fi->import_valid = true;
} else {
+ //new or modified time
fi->type = ResourceLoader::get_resource_type(path);
+ fi->deps = _get_dependencies(path);
print_line("regular import tried resource type for " + path + " and its " + fi->type);
fi->modified_time = mt;
fi->import_modified_time = 0;
+ fi->import_valid = true;
}
}
@@ -737,6 +778,7 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
fi->modified_time = FileAccess::get_modified_time(path);
fi->import_modified_time = 0;
fi->type = ResourceLoader::get_resource_type(path);
+ fi->import_valid = ResourceLoader::is_import_valid(path);
{
ItemAction ia;
@@ -838,6 +880,19 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
}
}
+void EditorFileSystem::_delete_internal_files(String p_file) {
+ if (FileAccess::exists(p_file + ".import")) {
+ List<String> paths;
+ ResourceFormatImporter::get_singleton()->get_internal_resource_path_list(p_file, &paths);
+ DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
+ for (List<String>::Element *E = paths.front(); E; E = E->next()) {
+ da->remove(E->get());
+ }
+ da->remove(p_file + ".import");
+ memdelete(da);
+ }
+}
+
void EditorFileSystem::_thread_func_sources(void *_userdata) {
EditorFileSystem *efs = (EditorFileSystem *)_userdata;
@@ -994,7 +1049,7 @@ void EditorFileSystem::_save_filesystem_cache(EditorFileSystemDirectory *p_dir,
for (int i = 0; i < p_dir->files.size(); i++) {
- String s = p_dir->files[i]->file + "::" + p_dir->files[i]->type + "::" + itos(p_dir->files[i]->modified_time) + "::" + itos(p_dir->files[i]->import_modified_time);
+ String s = p_dir->files[i]->file + "::" + p_dir->files[i]->type + "::" + itos(p_dir->files[i]->modified_time) + "::" + itos(p_dir->files[i]->import_modified_time) + "::" + itos(p_dir->files[i]->import_valid);
s += "::";
for (int j = 0; j < p_dir->files[i]->deps.size(); j++) {
@@ -1173,12 +1228,34 @@ EditorFileSystemDirectory *EditorFileSystem::get_filesystem_path(const String &p
return fs;
}
+void EditorFileSystem::_save_late_updated_files() {
+ //files that already existed, and were modified, need re-scanning for dependencies upon project restart. This is done via saving this special file
+ String fscache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("filesystem_update3");
+ FileAccessRef f = FileAccess::open(fscache, FileAccess::WRITE);
+ for (Set<String>::Element *E = late_update_files.front(); E; E = E->next()) {
+ f->store_line(E->get());
+ }
+}
+
void EditorFileSystem::_resource_saved(const String &p_path) {
//print_line("resource saved: "+p_path);
EditorFileSystem::get_singleton()->update_file(p_path);
}
+Vector<String> EditorFileSystem::_get_dependencies(const String &p_path) {
+
+ List<String> deps;
+ ResourceLoader::get_dependencies(p_path, &deps);
+
+ Vector<String> ret;
+ for (List<String>::Element *E = deps.front(); E; E = E->next()) {
+ ret.push_back(E->get());
+ }
+
+ return ret;
+}
+
void EditorFileSystem::update_file(const String &p_file) {
EditorFileSystemDirectory *fs = NULL;
@@ -1192,6 +1269,7 @@ void EditorFileSystem::update_file(const String &p_file) {
if (!FileAccess::exists(p_file)) {
//was removed
+ _delete_internal_files(p_file);
memdelete(fs->files[cpos]);
fs->files.remove(cpos);
call_deferred("emit_signal", "filesystem_changed"); //update later
@@ -1202,6 +1280,9 @@ void EditorFileSystem::update_file(const String &p_file) {
if (cpos == -1) {
+ //the file did not exist, it was added
+
+ late_added_files.insert(p_file); //remember that it was added. This mean it will be scanned and imported on editor restart
int idx = 0;
for (int i = 0; i < fs->files.size(); i++) {
@@ -1213,6 +1294,7 @@ void EditorFileSystem::update_file(const String &p_file) {
EditorFileSystemDirectory::FileInfo *fi = memnew(EditorFileSystemDirectory::FileInfo);
fi->file = p_file.get_file();
fi->import_modified_time = 0;
+ fi->import_valid = ResourceLoader::is_import_valid(p_file);
if (idx == fs->files.size()) {
fs->files.push_back(fi);
@@ -1221,11 +1303,19 @@ void EditorFileSystem::update_file(const String &p_file) {
fs->files.insert(idx, fi);
}
cpos = idx;
+ } else {
+
+ //the file exists and it was updated, and was not added in this step.
+ //this means we must force upon next restart to scan it again, to get proper type and dependencies
+ late_update_files.insert(p_file);
+ _save_late_updated_files(); //files need to be updated in the re-scan
}
//print_line("UPDATING: "+p_file);
fs->files[cpos]->type = type;
fs->files[cpos]->modified_time = FileAccess::get_modified_time(p_file);
+ fs->files[cpos]->deps = _get_dependencies(p_file);
+ fs->files[cpos]->import_valid = ResourceLoader::is_import_valid(p_file);
//if (FileAccess::exists(p_file+".import")) {
// fs->files[cpos]->import_modified_time=FileAccess::get_modified_time(p_file+".import");
//}
@@ -1261,6 +1351,9 @@ void EditorFileSystem::_reimport_file(const String &p_file) {
}
importer_name = cf->get_value("remap", "importer");
}
+
+ } else {
+ late_added_files.insert(p_file); //imported files do not call update_file(), but just in case..
}
Ref<ResourceImporter> importer;
@@ -1326,22 +1419,30 @@ void EditorFileSystem::_reimport_file(const String &p_file) {
f->store_line("type=\"" + importer->get_resource_type() + "\"");
}
- if (importer->get_save_extension() == "") {
- //no path
- } else if (import_variants.size()) {
- //import with variants
- for (List<String>::Element *E = import_variants.front(); E; E = E->next()) {
+ if (err == OK) {
+
+ if (importer->get_save_extension() == "") {
+ //no path
+ } else if (import_variants.size()) {
+ //import with variants
+ for (List<String>::Element *E = import_variants.front(); E; E = E->next()) {
- String path = base_path.c_escape() + "." + E->get() + "." + importer->get_save_extension();
+ String path = base_path.c_escape() + "." + E->get() + "." + importer->get_save_extension();
- f->store_line("path." + E->get() + "=\"" + path + "\"");
+ f->store_line("path." + E->get() + "=\"" + path + "\"");
+ }
+ } else {
+
+ f->store_line("path=\"" + base_path + "." + importer->get_save_extension() + "\"");
}
+
} else {
- f->store_line("path=\"" + base_path + "." + importer->get_save_extension() + "\"");
+ f->store_line("valid=false");
}
f->store_line("");
+
if (gen_files.size()) {
f->store_line("[gen]");
Array genf;
@@ -1374,6 +1475,9 @@ void EditorFileSystem::_reimport_file(const String &p_file) {
//update modified times, to avoid reimport
fs->files[cpos]->modified_time = FileAccess::get_modified_time(p_file);
fs->files[cpos]->import_modified_time = FileAccess::get_modified_time(p_file + ".import");
+ fs->files[cpos]->deps = _get_dependencies(p_file);
+ fs->files[cpos]->type = importer->get_resource_type();
+ fs->files[cpos]->import_valid = ResourceLoader::is_import_valid(p_file);
//if file is currently up, maybe the source it was loaded from changed, so import math must be updated for it
//to reload properly
diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h
index 3522a1ab1d..cee3219b43 100644
--- a/editor/editor_file_system.h
+++ b/editor/editor_file_system.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,6 +54,7 @@ class EditorFileSystemDirectory : public Object {
StringName type;
uint64_t modified_time;
uint64_t import_modified_time;
+ bool import_valid;
Vector<String> deps;
bool verified; //used for checking changes
};
@@ -83,6 +84,7 @@ public:
String get_file_path(int p_idx) const;
StringName get_file_type(int p_idx) const;
Vector<String> get_file_deps(int p_idx) const;
+ bool get_file_import_is_valid(int p_idx) const;
EditorFileSystemDirectory *get_parent();
@@ -137,6 +139,11 @@ class EditorFileSystem : public Node {
void _scan_filesystem();
+ Set<String> late_added_files; //keep track of files that were added, these will be re-scanned
+ Set<String> late_update_files;
+
+ void _save_late_updated_files();
+
EditorFileSystemDirectory *filesystem;
static EditorFileSystem *singleton;
@@ -148,6 +155,7 @@ class EditorFileSystem : public Node {
uint64_t modification_time;
uint64_t import_modification_time;
Vector<String> deps;
+ bool import_valid;
};
HashMap<String, FileCache> file_cache;
@@ -168,6 +176,8 @@ class EditorFileSystem : public Node {
void _scan_fs_changes(EditorFileSystemDirectory *p_dir, const ScanProgress &p_progress);
+ void _delete_internal_files(String p_file);
+
Set<String> valid_extensions;
Set<String> import_extensions;
@@ -194,6 +204,8 @@ class EditorFileSystem : public Node {
bool reimport_on_missing_imported_files;
+ Vector<String> _get_dependencies(const String &p_path);
+
protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp
index 4a85b4e2ef..c4ac4cbca5 100644
--- a/editor/editor_fonts.cpp
+++ b/editor/editor_fonts.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_fonts.h b/editor/editor_fonts.h
index 1698093cca..6a55876fd0 100644
--- a/editor/editor_fonts.h
+++ b/editor/editor_fonts.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index f80c4ee0e2..c7c3a88684 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -294,7 +294,6 @@ EditorHelpSearch::EditorHelpSearch() {
VBoxContainer *vbc = memnew(VBoxContainer);
add_child(vbc);
- HBoxContainer *sb_hb = memnew(HBoxContainer);
search_box = memnew(LineEdit);
vbc->add_child(search_box);
search_box->connect("text_changed", this, "_text_changed");
@@ -531,49 +530,6 @@ void EditorHelp::_search(const String &) {
prev_search = stext;
}
-#if 0
-void EditorHelp::_button_pressed(int p_idx) {
-
- if (p_idx==PAGE_CLASS_LIST) {
-
- //edited_class->set_pressed(false);
- //class_list_button->set_pressed(true);
- //tabs->set_current_tab(PAGE_CLASS_LIST);
-
- } else if (p_idx==PAGE_CLASS_DESC) {
-
- //edited_class->set_pressed(true);
- //class_list_button->set_pressed(false);
- //tabs->set_current_tab(PAGE_CLASS_DESC);
-
- } else if (p_idx==PAGE_CLASS_PREV) {
-
- if (history_pos<2)
- return;
- history_pos--;
- ERR_FAIL_INDEX(history_pos-1,history.size());
- _goto_desc(history[history_pos-1].c,false,history[history_pos-1].scroll);
- _update_history_buttons();
-
-
- } else if (p_idx==PAGE_CLASS_NEXT) {
-
- if (history_pos>=history.size())
- return;
-
- history_pos++;
- ERR_FAIL_INDEX(history_pos-1,history.size());
- _goto_desc(history[history_pos-1].c,false,history[history_pos-1].scroll);
- _update_history_buttons();
-
- } else if (p_idx==PAGE_SEARCH) {
-
- _search("");
- }
-}
-
-#endif
-
void EditorHelp::_class_list_select(const String &p_select) {
_goto_desc(p_select);
@@ -582,7 +538,18 @@ void EditorHelp::_class_list_select(const String &p_select) {
void EditorHelp::_class_desc_select(const String &p_select) {
//print_line("LINK: "+p_select);
- if (p_select.begins_with("#")) {
+ if (p_select.begins_with("$")) { //enum
+ //_goto_desc(p_select.substr(1,p_select.length()));
+ String select = p_select.substr(1, p_select.length());
+ String class_name;
+ if (select.find(".") != -1) {
+ class_name = select.get_slice(".", 0);
+ } else {
+ class_name = "@Global Scope";
+ }
+ emit_signal("go_to_help", "class_enum:" + class_name + ":" + select);
+ return;
+ } else if (p_select.begins_with("#")) {
//_goto_desc(p_select.substr(1,p_select.length()));
emit_signal("go_to_help", "class_name:" + p_select.substr(1, p_select.length()));
return;
@@ -614,33 +581,34 @@ void EditorHelp::_class_desc_input(const Ref<InputEvent> &p_input) {
set_focused();
}
-void EditorHelp::_add_type(const String &p_type) {
+void EditorHelp::_add_type(const String &p_type, const String &p_enum) {
String t = p_type;
if (t == "")
t = "void";
- bool can_ref = (t != "int" && t != "real" && t != "bool" && t != "void");
+ bool can_ref = (t != "int" && t != "real" && t != "bool" && t != "void") || p_enum != String();
+ if (p_enum != String()) {
+ if (p_enum.get_slice_count(".") > 1) {
+ t = p_enum.get_slice(".", 1);
+ } else {
+ t = p_enum.get_slice(".", 0);
+ }
+ }
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color"));
- if (can_ref)
- class_desc->push_meta("#" + t); //class
+ if (can_ref) {
+ if (p_enum == "") {
+ class_desc->push_meta("#" + t); //class
+ } else {
+ class_desc->push_meta("$" + p_enum); //class
+ }
+ }
class_desc->add_text(t);
if (can_ref)
class_desc->pop();
class_desc->pop();
}
-void EditorHelp::_scroll_changed(double p_scroll) {
-
- if (scroll_locked)
- return;
-
- if (!class_desc->get_v_scroll()->is_visible())
- p_scroll = 0;
-
- //history[p].scroll=p_scroll;
-}
-
Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
//ERR_FAIL_COND(!doc->class_list.has(p_class));
@@ -793,7 +761,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
class_desc->push_cell();
class_desc->push_align(RichTextLabel::ALIGN_RIGHT);
class_desc->push_font(doc_code_font);
- _add_type(cd.properties[i].type);
+ _add_type(cd.properties[i].type, cd.properties[i].enumeration);
class_desc->add_text(" ");
class_desc->pop();
class_desc->pop();
@@ -881,12 +849,14 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
for (int i = 0; i < methods.size(); i++) {
+ bool is_vararg = methods[i].qualifiers.find("vararg") != -1;
+
class_desc->push_cell();
method_line[methods[i].name] = class_desc->get_line_count() - 2; //gets overridden if description
class_desc->push_align(RichTextLabel::ALIGN_RIGHT);
class_desc->push_font(doc_code_font);
- _add_type(methods[i].return_type);
+ _add_type(methods[i].return_type, methods[i].return_enum);
//class_desc->add_text(" ");
class_desc->pop(); //align
class_desc->pop(); //font
@@ -904,13 +874,13 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (methods[i].description != "")
class_desc->pop();
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
- class_desc->add_text(methods[i].arguments.size() ? "( " : "(");
+ class_desc->add_text(methods[i].arguments.size() || is_vararg ? "( " : "(");
class_desc->pop();
for (int j = 0; j < methods[i].arguments.size(); j++) {
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"));
if (j > 0)
class_desc->add_text(", ");
- _add_type(methods[i].arguments[j].type);
+ _add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration);
class_desc->add_text(" ");
_add_text(methods[i].arguments[j].name);
if (methods[i].arguments[j].default_value != "") {
@@ -924,17 +894,18 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
class_desc->pop();
}
- if (methods[i].qualifiers.find("vararg") != -1) {
+ if (is_vararg) {
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"));
- class_desc->add_text(",");
+ if (methods[i].arguments.size())
+ class_desc->add_text(", ");
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
- class_desc->add_text(" ... ");
+ class_desc->add_text("...");
class_desc->pop();
class_desc->pop();
}
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
- class_desc->add_text(methods[i].arguments.size() ? " )" : ")");
+ class_desc->add_text(methods[i].arguments.size() || is_vararg ? " )" : ")");
class_desc->pop();
if (methods[i].qualifiers != "") {
@@ -1059,44 +1030,133 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
if (cd.constants.size()) {
- class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"));
- class_desc->push_font(doc_title_font);
- class_desc->add_text(TTR("Constants:"));
- class_desc->pop();
- class_desc->pop();
- class_desc->push_indent(1);
-
- class_desc->add_newline();
- //class_desc->add_newline();
+ Map<String, Vector<DocData::ConstantDoc> > enums;
+ Vector<DocData::ConstantDoc> constants;
for (int i = 0; i < cd.constants.size(); i++) {
- constant_line[cd.constants[i].name] = class_desc->get_line_count() - 2;
- class_desc->push_font(doc_code_font);
- class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color"));
- _add_text(cd.constants[i].name);
+ if (cd.constants[i].enumeration != String()) {
+ if (!enums.has(cd.constants[i].enumeration)) {
+ enums[cd.constants[i].enumeration] = Vector<DocData::ConstantDoc>();
+ }
+
+ enums[cd.constants[i].enumeration].push_back(cd.constants[i]);
+ } else {
+
+ constants.push_back(cd.constants[i]);
+ }
+ }
+
+ if (enums.size()) {
+
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"));
+ class_desc->push_font(doc_title_font);
+ class_desc->add_text(TTR("Enumerations:"));
class_desc->pop();
- class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
- class_desc->add_text(" = ");
class_desc->pop();
+ class_desc->push_indent(1);
+
+ class_desc->add_newline();
+ //class_desc->add_newline();
+
+ for (Map<String, Vector<DocData::ConstantDoc> >::Element *E = enums.front(); E; E = E->next()) {
+
+ enum_line[E->key()] = class_desc->get_line_count() - 2;
+
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"));
+ class_desc->add_text(TTR("enum "));
+ class_desc->pop();
+ class_desc->push_font(doc_code_font);
+ String e = E->key();
+ if (e.get_slice_count(".")) {
+ e = e.get_slice(".", 1);
+ }
+
+ class_desc->add_text(e);
+ class_desc->pop();
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"));
+ class_desc->add_text(":");
+ class_desc->pop();
+ class_desc->add_newline();
+
+ class_desc->push_indent(1);
+ Vector<DocData::ConstantDoc> enum_list = E->get();
+
+ for (int i = 0; i < enum_list.size(); i++) {
+
+ class_desc->push_font(doc_code_font);
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color"));
+ _add_text(enum_list[i].name);
+ class_desc->pop();
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
+ class_desc->add_text(" = ");
+ class_desc->pop();
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"));
+ _add_text(enum_list[i].value);
+ class_desc->pop();
+ class_desc->pop();
+ if (enum_list[i].description != "") {
+ class_desc->push_font(doc_font);
+ class_desc->add_text(" ");
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color"));
+ _add_text(enum_list[i].description);
+ class_desc->pop();
+ class_desc->pop();
+ }
+
+ class_desc->add_newline();
+ }
+
+ class_desc->pop();
+
+ class_desc->add_newline();
+ }
+
+ class_desc->pop();
+ class_desc->add_newline();
+ }
+
+ if (constants.size()) {
+
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"));
- _add_text(cd.constants[i].value);
+ class_desc->push_font(doc_title_font);
+ class_desc->add_text(TTR("Constants:"));
class_desc->pop();
class_desc->pop();
- if (cd.constants[i].description != "") {
- class_desc->push_font(doc_font);
- class_desc->add_text(" ");
- class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color"));
- _add_text(cd.constants[i].description);
+ class_desc->push_indent(1);
+
+ class_desc->add_newline();
+ //class_desc->add_newline();
+
+ for (int i = 0; i < constants.size(); i++) {
+
+ constant_line[constants[i].name] = class_desc->get_line_count() - 2;
+ class_desc->push_font(doc_code_font);
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/base_type_color"));
+ _add_text(constants[i].name);
+ class_desc->pop();
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
+ class_desc->add_text(" = ");
+ class_desc->pop();
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/keyword_color"));
+ _add_text(constants[i].value);
class_desc->pop();
class_desc->pop();
+ if (constants[i].description != "") {
+ class_desc->push_font(doc_font);
+ class_desc->add_text(" ");
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/comment_color"));
+ _add_text(constants[i].description);
+ class_desc->pop();
+ class_desc->pop();
+ }
+
+ class_desc->add_newline();
}
+ class_desc->pop();
class_desc->add_newline();
}
-
- class_desc->pop();
- class_desc->add_newline();
}
if (cd.description != "") {
@@ -1137,7 +1197,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
method_line[cd.properties[i].name] = class_desc->get_line_count() - 2;
class_desc->push_font(doc_code_font);
- _add_type(cd.properties[i].type);
+ _add_type(cd.properties[i].type, cd.properties[i].enumeration);
class_desc->add_text(" ");
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"));
@@ -1212,23 +1272,25 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
for (int i = 0; i < methods.size(); i++) {
+ bool is_vararg = methods[i].qualifiers.find("vararg") != -1;
+
method_line[methods[i].name] = class_desc->get_line_count() - 2;
class_desc->push_font(doc_code_font);
- _add_type(methods[i].return_type);
+ _add_type(methods[i].return_type, methods[i].return_enum);
class_desc->add_text(" ");
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"));
_add_text(methods[i].name);
class_desc->pop();
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
- class_desc->add_text(methods[i].arguments.size() ? "( " : "(");
+ class_desc->add_text(methods[i].arguments.size() || is_vararg ? "( " : "(");
class_desc->pop();
for (int j = 0; j < methods[i].arguments.size(); j++) {
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"));
if (j > 0)
class_desc->add_text(", ");
- _add_type(methods[i].arguments[j].type);
+ _add_type(methods[i].arguments[j].type, methods[i].arguments[j].enumeration);
class_desc->add_text(" ");
_add_text(methods[i].arguments[j].name);
if (methods[i].arguments[j].default_value != "") {
@@ -1242,8 +1304,18 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
class_desc->pop();
}
+ if (is_vararg) {
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/text_color"));
+ if (methods[i].arguments.size())
+ class_desc->add_text(", ");
+ class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
+ class_desc->add_text("...");
+ class_desc->pop();
+ class_desc->pop();
+ }
+
class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/highlighting/symbol_color"));
- class_desc->add_text(methods[i].arguments.size() ? " )" : ")");
+ class_desc->add_text(methods[i].arguments.size() || is_vararg ? " )" : ")");
class_desc->pop();
if (methods[i].qualifiers != "") {
@@ -1306,6 +1378,11 @@ void EditorHelp::_help_callback(const String &p_topic) {
if (property_line.has(name))
line = property_line[name];
+ } else if (what == "class_enum") {
+
+ print_line("go to enum:");
+ if (enum_line.has(name))
+ line = enum_line[name];
} else if (what == "class_theme_item") {
if (theme_property_line.has(name))
@@ -1681,7 +1758,6 @@ void EditorHelp::_bind_methods() {
ClassDB::bind_method("_class_desc_select", &EditorHelp::_class_desc_select);
ClassDB::bind_method("_class_desc_input", &EditorHelp::_class_desc_input);
//ClassDB::bind_method("_button_pressed",&EditorHelp::_button_pressed);
- ClassDB::bind_method("_scroll_changed", &EditorHelp::_scroll_changed);
ClassDB::bind_method("_request_help", &EditorHelp::_request_help);
ClassDB::bind_method("_unhandled_key_input", &EditorHelp::_unhandled_key_input);
ClassDB::bind_method("_search", &EditorHelp::_search);
@@ -1714,7 +1790,6 @@ EditorHelp::EditorHelp() {
class_desc->connect("gui_input", this, "_class_desc_input");
}
- class_desc->get_v_scroll()->connect("value_changed", this, "_scroll_changed");
class_desc->set_selection_enabled(true);
scroll_locked = false;
@@ -1756,8 +1831,20 @@ void EditorHelpBit::_go_to_help(String p_what) {
void EditorHelpBit::_meta_clicked(String p_select) {
+ print_line("got meta " + p_select);
//print_line("LINK: "+p_select);
- if (p_select.begins_with("#")) {
+ if (p_select.begins_with("$")) { //enum
+ //_goto_desc(p_select.substr(1,p_select.length()));
+ String select = p_select.substr(1, p_select.length());
+ String class_name;
+ if (select.find(".") != -1) {
+ class_name = select.get_slice(".", 0);
+ } else {
+ class_name = "@Global";
+ }
+ _go_to_help("class_enum:" + class_name + ":" + select);
+ return;
+ } else if (p_select.begins_with("#")) {
//_goto_desc(p_select.substr(1,p_select.length()));
_go_to_help("class_name:" + p_select.substr(1, p_select.length()));
return;
@@ -1788,7 +1875,7 @@ void EditorHelpBit::_bind_methods() {
void EditorHelpBit::_notification(int p_what) {
if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
- add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("ScriptPanel", "EditorStyles"));
+ add_style_override("panel", get_stylebox("ScriptPanel", "EditorStyles"));
}
}
diff --git a/editor/editor_help.h b/editor/editor_help.h
index de30b543fc..30a535a535 100644
--- a/editor/editor_help.h
+++ b/editor/editor_help.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -123,6 +123,7 @@ class EditorHelp : public VBoxContainer {
Map<String, int> property_line;
Map<String, int> theme_property_line;
Map<String, int> constant_line;
+ Map<String, int> enum_line;
int description_line;
RichTextLabel *class_desc;
@@ -137,13 +138,12 @@ class EditorHelp : public VBoxContainer {
void _help_callback(const String &p_topic);
- void _add_text(const String &p_text);
+ void _add_text(const String &p_bbcode);
bool scroll_locked;
//void _button_pressed(int p_idx);
- void _add_type(const String &p_type);
+ void _add_type(const String &p_type, const String &p_enum = String());
- void _scroll_changed(double p_scroll);
void _class_list_select(const String &p_select);
void _class_desc_select(const String &p_select);
void _class_desc_input(const Ref<InputEvent> &p_input);
@@ -189,7 +189,7 @@ class EditorHelpBit : public Panel {
RichTextLabel *rich_text;
void _go_to_help(String p_what);
- void _meta_clicked(String p_what);
+ void _meta_clicked(String p_select);
protected:
static void _bind_methods();
diff --git a/editor/editor_icons.h b/editor/editor_icons.h
deleted file mode 100644
index 760bb4421c..0000000000
--- a/editor/editor_icons.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*************************************************************************/
-/* editor_icons.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_ICONS_H
-#define EDITOR_ICONS_H
-
-#include "scene/resources/theme.h"
-
-void editor_register_icons(Ref<Theme> p_theme);
-
-#endif
diff --git a/editor/editor_initialize_ssl.cpp b/editor/editor_initialize_ssl.cpp
index 290ade277e..4bc194a47c 100644
--- a/editor/editor_initialize_ssl.cpp
+++ b/editor/editor_initialize_ssl.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_initialize_ssl.h b/editor/editor_initialize_ssl.h
index fb289f5dfd..cad219c56b 100644
--- a/editor/editor_initialize_ssl.h
+++ b/editor/editor_initialize_ssl.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp
index c5e15b97b0..a1f416a17c 100644
--- a/editor/editor_log.cpp
+++ b/editor/editor_log.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_log.h b/editor/editor_log.h
index 1c180df5f7..fd919fd692 100644
--- a/editor/editor_log.h
+++ b/editor/editor_log.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_name_dialog.cpp b/editor/editor_name_dialog.cpp
index 6ebfcbf313..9f3593c269 100644
--- a/editor/editor_name_dialog.cpp
+++ b/editor/editor_name_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -87,6 +87,6 @@ EditorNameDialog::EditorNameDialog() {
makevb->add_child(name);
name->set_margin(MARGIN_TOP, 5);
name->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 5);
- name->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 5);
+ name->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -5);
name->connect("gui_input", this, "_line_gui_input");
}
diff --git a/editor/editor_name_dialog.h b/editor/editor_name_dialog.h
index 57586951d1..2ec8c67169 100644
--- a/editor/editor_name_dialog.h
+++ b/editor/editor_name_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 73000a0116..cee65387f5 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,102 +29,85 @@
/*************************************************************************/
#include "editor_node.h"
-#include "animation_editor.h"
-#include "bind/core_bind.h"
-#include "class_db.h"
+#include "core/bind/core_bind.h"
+#include "core/class_db.h"
+#include "core/io/config_file.h"
#include "core/io/resource_loader.h"
#include "core/io/resource_saver.h"
-#include "editor_file_system.h"
-#include "editor_help.h"
-#include "editor_settings.h"
-#include "editor_themes.h"
-#include "io/config_file.h"
-#include "io/stream_peer_ssl.h"
-#include "io/zip_io.h"
+#include "core/io/stream_peer_ssl.h"
+#include "core/io/zip_io.h"
+#include "core/message_queue.h"
+#include "core/os/file_access.h"
+#include "core/os/input.h"
+#include "core/os/keyboard.h"
+#include "core/os/os.h"
+#include "core/path_remap.h"
+#include "core/print_string.h"
+#include "core/project_settings.h"
+#include "core/translation.h"
+#include "core/version.h"
#include "main/input_default.h"
-#include "message_queue.h"
-#include "os/file_access.h"
-#include "os/input.h"
-#include "os/keyboard.h"
-#include "os/os.h"
-#include "path_remap.h"
-#include "print_string.h"
-#include "project_settings.h"
-#include "pvrtc_compress.h"
-#include "register_exporters.h"
#include "scene/resources/packed_scene.h"
#include "servers/physics_2d_server.h"
-#include "translation.h"
-#include "version.h"
+
+#include "editor/animation_editor.h"
+#include "editor/editor_audio_buses.h"
+#include "editor/editor_file_system.h"
+#include "editor/editor_help.h"
+#include "editor/editor_initialize_ssl.h"
+#include "editor/editor_settings.h"
+#include "editor/editor_themes.h"
+#include "editor/import/editor_import_collada.h"
+#include "editor/import/editor_scene_importer_gltf.h"
+#include "editor/import/resource_importer_csv_translation.h"
+#include "editor/import/resource_importer_obj.h"
+#include "editor/import/resource_importer_scene.h"
+#include "editor/import/resource_importer_texture.h"
+#include "editor/import/resource_importer_wav.h"
+#include "editor/plugins/animation_player_editor_plugin.h"
+#include "editor/plugins/animation_tree_editor_plugin.h"
+#include "editor/plugins/asset_library_editor_plugin.h"
+#include "editor/plugins/camera_editor_plugin.h"
+#include "editor/plugins/canvas_item_editor_plugin.h"
+#include "editor/plugins/collision_polygon_2d_editor_plugin.h"
+#include "editor/plugins/collision_polygon_editor_plugin.h"
+#include "editor/plugins/collision_shape_2d_editor_plugin.h"
+#include "editor/plugins/cube_grid_theme_editor_plugin.h"
+#include "editor/plugins/curve_editor_plugin.h"
+#include "editor/plugins/editor_preview_plugins.h"
+#include "editor/plugins/gi_probe_editor_plugin.h"
+#include "editor/plugins/gradient_editor_plugin.h"
+#include "editor/plugins/item_list_editor_plugin.h"
+#include "editor/plugins/light_occluder_2d_editor_plugin.h"
+#include "editor/plugins/line_2d_editor_plugin.h"
+#include "editor/plugins/material_editor_plugin.h"
+#include "editor/plugins/mesh_editor_plugin.h"
+#include "editor/plugins/mesh_instance_editor_plugin.h"
+#include "editor/plugins/multimesh_editor_plugin.h"
+#include "editor/plugins/navigation_polygon_editor_plugin.h"
+#include "editor/plugins/particles_2d_editor_plugin.h"
+#include "editor/plugins/particles_editor_plugin.h"
+#include "editor/plugins/path_2d_editor_plugin.h"
+#include "editor/plugins/path_editor_plugin.h"
+#include "editor/plugins/polygon_2d_editor_plugin.h"
+#include "editor/plugins/resource_preloader_editor_plugin.h"
+#include "editor/plugins/script_editor_plugin.h"
+#include "editor/plugins/script_text_editor.h"
+#include "editor/plugins/shader_editor_plugin.h"
+#include "editor/plugins/shader_graph_editor_plugin.h"
+#include "editor/plugins/spatial_editor_plugin.h"
+#include "editor/plugins/sprite_frames_editor_plugin.h"
+#include "editor/plugins/style_box_editor_plugin.h"
+#include "editor/plugins/texture_editor_plugin.h"
+#include "editor/plugins/texture_region_editor_plugin.h"
+#include "editor/plugins/theme_editor_plugin.h"
+#include "editor/plugins/tile_map_editor_plugin.h"
+#include "editor/plugins/tile_set_editor_plugin.h"
+#include "editor/pvrtc_compress.h"
+#include "editor/register_exporters.h"
+#include "editor/script_editor_debugger.h"
+
#include <stdio.h>
-// plugins
-#include "asset_library_editor_plugin.h"
-#include "import/resource_importer_csv_translation.h"
-#include "import/resource_importer_obj.h"
-#include "import/resource_importer_scene.h"
-#include "import/resource_importer_texture.h"
-#include "import/resource_importer_wav.h"
-#include "plugins/animation_player_editor_plugin.h"
-#include "plugins/animation_tree_editor_plugin.h"
-#include "plugins/baked_light_editor_plugin.h"
-#include "plugins/camera_editor_plugin.h"
-#include "plugins/canvas_item_editor_plugin.h"
-#include "plugins/collision_polygon_2d_editor_plugin.h"
-#include "plugins/collision_polygon_editor_plugin.h"
-#include "plugins/collision_shape_2d_editor_plugin.h"
-#include "plugins/cube_grid_theme_editor_plugin.h"
-#include "plugins/curve_editor_plugin.h"
-#include "plugins/gi_probe_editor_plugin.h"
-#include "plugins/gradient_editor_plugin.h"
-#include "plugins/item_list_editor_plugin.h"
-#include "plugins/light_occluder_2d_editor_plugin.h"
-#include "plugins/line_2d_editor_plugin.h"
-#include "plugins/material_editor_plugin.h"
-#include "plugins/mesh_editor_plugin.h"
-#include "plugins/mesh_instance_editor_plugin.h"
-#include "plugins/multimesh_editor_plugin.h"
-#include "plugins/navigation_polygon_editor_plugin.h"
-#include "plugins/particles_2d_editor_plugin.h"
-#include "plugins/particles_editor_plugin.h"
-#include "plugins/path_2d_editor_plugin.h"
-#include "plugins/path_editor_plugin.h"
-#include "plugins/polygon_2d_editor_plugin.h"
-#include "plugins/resource_preloader_editor_plugin.h"
-#include "plugins/rich_text_editor_plugin.h"
-#include "plugins/sample_editor_plugin.h"
-#include "plugins/sample_library_editor_plugin.h"
-#include "plugins/sample_player_editor_plugin.h"
-#include "plugins/script_editor_plugin.h"
-#include "plugins/script_text_editor.h"
-#include "plugins/shader_editor_plugin.h"
-#include "plugins/shader_graph_editor_plugin.h"
-#include "plugins/spatial_editor_plugin.h"
-#include "plugins/sprite_frames_editor_plugin.h"
-#include "plugins/stream_editor_plugin.h"
-#include "plugins/style_box_editor_plugin.h"
-#include "plugins/texture_editor_plugin.h"
-#include "plugins/texture_region_editor_plugin.h"
-#include "plugins/theme_editor_plugin.h"
-#include "plugins/tile_map_editor_plugin.h"
-#include "plugins/tile_set_editor_plugin.h"
-// end
-#include "editor_settings.h"
-#include "import/editor_import_collada.h"
-#include "import/editor_scene_importer_gltf.h"
-#include "io_plugins/editor_bitmask_import_plugin.h"
-#include "io_plugins/editor_export_scene.h"
-#include "io_plugins/editor_font_import_plugin.h"
-#include "io_plugins/editor_mesh_import_plugin.h"
-#include "io_plugins/editor_sample_import_plugin.h"
-#include "io_plugins/editor_scene_import_plugin.h"
-#include "io_plugins/editor_scene_importer_fbxconv.h"
-#include "io_plugins/editor_texture_import_plugin.h"
-#include "io_plugins/editor_translation_import_plugin.h"
-
-#include "editor_audio_buses.h"
-#include "editor_initialize_ssl.h"
-#include "plugins/editor_preview_plugins.h"
-#include "script_editor_debugger.h"
EditorNode *EditorNode::singleton = NULL;
@@ -223,18 +206,6 @@ void EditorNode::_notification(int p_what) {
}
if (p_what == NOTIFICATION_PROCESS) {
-//force the whole tree viewport
-#if 0
- {
- Rect2 grect = scene_root_base->get_global_rect();
- Rect2 grectsrp = scene_root_parent->get_global_rect();
- if (grect!=grectsrp) {
- scene_root_parent->set_position(grect.pos);
- scene_root_parent->set_size(grect.size);
- }
- }
-
-#endif
if (opening_prev && !confirmation->is_visible())
opening_prev = false;
@@ -249,8 +220,6 @@ void EditorNode::_notification(int p_what) {
last_checked_version = editor_data.get_undo_redo().get_version();
}
- //get_root_node()->set_rect(viewport->get_global_rect());
-
//update the circle
uint64_t frame = Engine::get_singleton()->get_frames_drawn();
uint32_t tick = OS::get_singleton()->get_ticks_msec();
@@ -277,16 +246,13 @@ void EditorNode::_notification(int p_what) {
}
if (p_what == NOTIFICATION_ENTER_TREE) {
+ Engine::get_singleton()->set_editor_hint(true);
+
get_tree()->get_root()->set_disable_3d(true);
- //MessageQueue::get_singleton()->push_call(this,"_get_scene_metadata");
- get_tree()->set_editor_hint(true);
get_tree()->get_root()->set_as_audio_listener(false);
get_tree()->get_root()->set_as_audio_listener_2d(false);
get_tree()->set_auto_accept_quit(false);
get_tree()->connect("files_dropped", this, "_dropped_files");
- //VisualServer::get_singleton()->viewport_set_hide_canvas(editor->get_scene_root()->get_viewport(),false);
-
- //import_monitor->scan_changes();
}
if (p_what == NOTIFICATION_EXIT_TREE) {
@@ -301,25 +267,6 @@ void EditorNode::_notification(int p_what) {
_editor_select(EDITOR_3D);
_update_debug_options();
-
- /*
- if (defer_optimize!="") {
- Error ok = save_optimized_copy(defer_optimize,defer_optimize_preset);
- defer_optimize_preset="";
- if (ok!=OK)
- OS::get_singleton()->set_exit_code(255);
- get_scene()->quit();
- }
-*/
-
- /* // moved to "_sources_changed"
- if (export_defer.platform!="") {
-
- project_export_settings->export_platform(export_defer.platform,export_defer.path,export_defer.debug,export_defer.password,true);
- export_defer.platform="";
- }
-
- */
}
if (p_what == MainLoop::NOTIFICATION_WM_FOCUS_IN) {
@@ -335,7 +282,7 @@ void EditorNode::_notification(int p_what) {
if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
scene_tabs->set_tab_close_display_policy((bool(EDITOR_DEF("interface/always_show_close_button_in_scene_tabs", false)) ? Tabs::CLOSE_BUTTON_SHOW_ALWAYS : Tabs::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
property_editor->set_enable_capitalize_paths(bool(EDITOR_DEF("interface/capitalize_properties", true)));
- Ref<Theme> theme = create_editor_theme();
+ Ref<Theme> theme = create_editor_theme(theme_base->get_theme());
theme_base->set_theme(theme);
gui_base->add_style_override("panel", gui_base->get_stylebox("Background", "EditorStyles"));
play_button_panel->add_style_override("panel", gui_base->get_stylebox("PlayButtonPanel", "EditorStyles"));
@@ -364,20 +311,38 @@ void EditorNode::_fs_changed() {
E->get()->invalidate();
}
- if (export_defer.platform != "") {
+ if (export_defer.preset != "") {
+ Ref<EditorExportPreset> preset;
+ for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); ++i) {
+ preset = EditorExport::get_singleton()->get_export_preset(i);
+ if (preset->get_name() == export_defer.preset) {
+ break;
+ }
+ preset.unref();
+ }
+ if (preset.is_null()) {
+ String err = "Unknown export preset: " + export_defer.preset;
+ ERR_PRINT(err.utf8().get_data());
+ } else {
+ Ref<EditorExportPlatform> platform = preset->get_platform();
+ if (platform.is_null()) {
+ String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform.";
+ ERR_PRINT(err.utf8().get_data());
+ } else {
+ platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0);
+ }
+ }
- //project_export_settings->export_platform(export_defer.platform,export_defer.path,export_defer.debug,export_defer.password,true);
- export_defer.platform = "";
+ get_tree()->quit();
}
{
-
//reload changed resources
List<Ref<Resource> > changed;
List<Ref<Resource> > cached;
ResourceCache::get_cached_resources(&cached);
- //this should probably be done in a thread..
+ // FIXME: This should be done in a thread.
for (List<Ref<Resource> >::Element *E = cached.front(); E; E = E->next()) {
if (!E->get()->editor_can_reload_from_file())
@@ -390,7 +355,6 @@ void EditorNode::_fs_changed() {
if (E->get()->get_import_path() != String()) {
//imported resource
uint64_t mt = FileAccess::get_modified_time(E->get()->get_import_path());
- print_line("testing modified: " + E->get()->get_import_path() + " " + itos(mt) + " vs " + itos(E->get()->get_import_last_modified_time()));
if (mt != E->get()->get_import_last_modified_time()) {
print_line("success");
@@ -407,11 +371,8 @@ void EditorNode::_fs_changed() {
}
if (changed.size()) {
- //EditorProgress ep("reload_res","Reload Modified Resources",changed.size());
int idx = 0;
for (List<Ref<Resource> >::Element *E = changed.front(); E; E = E->next()) {
-
- //ep.step(E->get()->get_path(),idx++);
E->get()->reload_from_file();
}
}
@@ -501,8 +462,6 @@ void EditorNode::open_resource(const String &p_type) {
file->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- //file->set_current_path(current_path);
-
file->popup_centered_ratio();
current_option = RESOURCE_LOAD;
}
@@ -513,10 +472,6 @@ void EditorNode::save_resource_in_path(const Ref<Resource> &p_resource, const St
int flg = 0;
if (EditorSettings::get_singleton()->get("filesystem/on_save/compress_binary_resources"))
flg |= ResourceSaver::FLAG_COMPRESS;
- /*
- if (EditorSettings::get_singleton()->get("filesystem/on_save/save_paths_as_relative"))
- flg|=ResourceSaver::FLAG_RELATIVE_PATHS;
- */
String path = ProjectSettings::get_singleton()->localize_path(p_path);
Error err = ResourceSaver::save(path, p_resource, flg | ResourceSaver::FLAG_REPLACE_SUBRESOURCE_PATHS);
@@ -526,7 +481,6 @@ void EditorNode::save_resource_in_path(const Ref<Resource> &p_resource, const St
accept->popup_centered_minsize();
return;
}
- //EditorFileSystem::get_singleton()->update_file(path,p_resource->get_type());
((Resource *)p_resource.ptr())->set_path(path);
emit_signal("resource_saved", p_resource);
@@ -562,8 +516,6 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
preferred.push_back(extensions[i]);
}
- //file->set_current_path(current_path);
-
if (p_at_path != String()) {
file->set_current_dir(p_at_path);
@@ -607,12 +559,11 @@ void EditorNode::_menu_confirm_current() {
_menu_option_confirm(current_option, true);
}
-void EditorNode::_dialog_display_file_error(String p_file, Error p_error) {
+void EditorNode::_dialog_display_save_error(String p_file, Error p_error) {
if (p_error) {
current_option = -1;
- //accept->"()->hide();
accept->get_ok()->set_text(TTR("I see.."));
switch (p_error) {
@@ -635,6 +586,41 @@ void EditorNode::_dialog_display_file_error(String p_file, Error p_error) {
}
}
+void EditorNode::_dialog_display_load_error(String p_file, Error p_error) {
+
+ if (p_error) {
+
+ current_option = -1;
+ accept->get_ok()->set_text(TTR("I see.."));
+
+ switch (p_error) {
+
+ case ERR_CANT_OPEN: {
+
+ accept->set_text(vformat(TTR("Can't open '%s'."), p_file.get_file()));
+ } break;
+ case ERR_PARSE_ERROR: {
+
+ accept->set_text(vformat(TTR("Error while parsing '%s'."), p_file.get_file()));
+ } break;
+ case ERR_FILE_CORRUPT: {
+
+ accept->set_text(vformat(TTR("Unexpected end of file '%s'."), p_file.get_file()));
+ } break;
+ case ERR_FILE_NOT_FOUND: {
+
+ accept->set_text(vformat(TTR("Missing '%s' or its dependencies."), p_file.get_file()));
+ } break;
+ default: {
+
+ accept->set_text(vformat(TTR("Error while loading '%s'."), p_file.get_file()));
+ } break;
+ }
+
+ accept->popup_centered_minsize();
+ }
+}
+
void EditorNode::_get_scene_metadata(const String &p_file) {
Node *scene = editor_data.get_edited_scene_root();
@@ -701,34 +687,32 @@ void EditorNode::_set_scene_metadata(const String &p_file, int p_idx) {
ERR_FAIL_COND(err != OK);
}
-bool EditorNode::_find_and_save_resource(RES res, Map<RES, bool> &processed, int32_t flags) {
+bool EditorNode::_find_and_save_resource(RES p_res, Map<RES, bool> &processed, int32_t flags) {
- if (res.is_null())
+ if (p_res.is_null())
return false;
- if (processed.has(res)) {
+ if (processed.has(p_res)) {
- return processed[res];
+ return processed[p_res];
}
- bool changed = res->is_edited();
- res->set_edited(false);
+ bool changed = p_res->is_edited();
+ p_res->set_edited(false);
- bool subchanged = _find_and_save_edited_subresources(res.ptr(), processed, flags);
+ bool subchanged = _find_and_save_edited_subresources(p_res.ptr(), processed, flags);
- //print_line("checking if edited: "+res->get_type()+" :: "+res->get_name()+" :: "+res->get_path()+" :: "+itos(changed)+" :: SR "+itos(subchanged));
-
- if (res->get_path().is_resource_file()) {
+ if (p_res->get_path().is_resource_file()) {
if (changed || subchanged) {
//save
- print_line("Also saving modified external resource: " + res->get_path());
- ResourceSaver::save(res->get_path(), res, flags);
+ print_line("Also saving modified external resource: " + p_res->get_path());
+ ResourceSaver::save(p_res->get_path(), p_res, flags);
}
- processed[res] = false; //because it's a file
+ processed[p_res] = false; //because it's a file
return false;
} else {
- processed[res] = changed;
+ processed[p_res] = changed;
return changed;
}
}
@@ -762,8 +746,6 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool>
RES res = v;
if (_find_and_save_resource(res, processed, flags))
ret_changed = true;
-
- //_find_resources(v);
}
} break;
@@ -816,11 +798,11 @@ void EditorNode::_find_node_types(Node *p_node, int &count_2d, int &count_3d) {
void EditorNode::_save_scene_with_preview(String p_file) {
- int c2d = 0;
- int c3d = 0;
-
EditorProgress save("save", TTR("Saving Scene"), 4);
save.step(TTR("Analyzing"), 0);
+
+ int c2d = 0;
+ int c3d = 0;
_find_node_types(editor_data.get_edited_scene_root(), c2d, c3d);
RID viewport;
@@ -891,9 +873,8 @@ void EditorNode::_save_scene(String p_file, int idx) {
if (!scene) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
- accept->set_text("This operation can't be done without a tree root.");
+ accept->set_text(TTR("This operation can't be done without a tree root."));
accept->popup_centered_minsize();
return;
}
@@ -910,7 +891,7 @@ void EditorNode::_save_scene(String p_file, int idx) {
// we must update it, but also let the previous scene state go, as
// old version still work for referencing changes in instanced or inherited scenes
- sdata = Ref<PackedScene>(ResourceCache::get(p_file)->cast_to<PackedScene>());
+ sdata = Ref<PackedScene>(Object::cast_to<PackedScene>(ResourceCache::get(p_file)));
if (sdata.is_valid())
sdata->recreate_state();
else
@@ -923,7 +904,6 @@ void EditorNode::_save_scene(String p_file, int idx) {
if (err != OK) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."));
accept->popup_centered_minsize();
@@ -938,10 +918,6 @@ void EditorNode::_save_scene(String p_file, int idx) {
int flg = 0;
if (EditorSettings::get_singleton()->get("filesystem/on_save/compress_binary_resources"))
flg |= ResourceSaver::FLAG_COMPRESS;
- /*
- if (EditorSettings::get_singleton()->get("filesystem/on_save/save_paths_as_relative"))
- flg|=ResourceSaver::FLAG_RELATIVE_PATHS;
- */
flg |= ResourceSaver::FLAG_REPLACE_SUBRESOURCE_PATHS;
err = ResourceSaver::save(p_file, sdata, flg);
@@ -950,7 +926,6 @@ void EditorNode::_save_scene(String p_file, int idx) {
editor_data.save_editor_external_data();
if (err == OK) {
scene->set_filename(ProjectSettings::get_singleton()->localize_path(p_file));
- //EditorFileSystem::get_singleton()->update_file(p_file,sdata->get_type());
if (idx < 0 || idx == editor_data.get_edited_scene())
set_current_version(editor_data.get_undo_redo().get_version());
else
@@ -959,7 +934,7 @@ void EditorNode::_save_scene(String p_file, int idx) {
_update_scene_tabs();
} else {
- _dialog_display_file_error(p_file, err);
+ _dialog_display_save_error(p_file, err);
}
}
@@ -968,12 +943,10 @@ void EditorNode::_save_all_scenes() {
for (int i = 0; i < editor_data.get_edited_scene_count(); i++) {
Node *scene = editor_data.get_edited_scene_root(i);
if (scene && scene->get_filename() != "") {
- // save in background if in the script editor
- if (i != editor_data.get_edited_scene() || _get_current_main_editor() == EDITOR_SCRIPT) {
+ if (i != editor_data.get_edited_scene())
_save_scene(scene->get_filename(), i);
- } else {
+ else
_save_scene_with_preview(scene->get_filename());
- }
} // else: ignore new scenes
}
@@ -1003,106 +976,6 @@ void EditorNode::_mark_unsaved_scenes() {
_update_scene_tabs();
}
-void EditorNode::_import_action(const String &p_action) {
-#if 0
- import_confirmation->hide();
-
- if (p_action=="re-import") {
- _import(_tmp_import_path);
- }
- if (p_action=="update") {
-
- Node *src = EditorImport::import_scene(_tmp_import_path);
-
- if (!src) {
-
- current_option=-1;
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text("Ugh");
- accept->set_text("Error importing scene.");
- accept->popup_centered(Size2(300,70));
- return;
- }
-
- //as soon as the scene is imported, version hashes must be generated for comparison against saved scene
- EditorImport::generate_version_hashes(src);
-
-
- Node *dst = SceneLoader::load(editor_data.get_imported_scene(ProjectSettings::get_singleton()->localize_path(_tmp_import_path)));
-
- if (!dst) {
-
- memdelete(src);
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text("Ugh");
- accept->set_text("Error load scene to update.");
- accept->popup_centered(Size2(300,70));
- return;
- }
-
- List<EditorImport::Conflict> conflicts;
- EditorImport::check_conflicts(src,dst,&conflicts);
-
- bool conflicted=false;
- for (List<EditorImport::Conflict>::Element *E=conflicts.front();E;E=E->next()) {
-
-
- if (E->get().status==EditorImport::Conflict::STATUS_CONFLICT) {
-
- conflicted=true;
- break;
- }
- }
-
- if (conflicted) {
- import_conflicts_dialog->popup(src,dst,conflicts);
- return;
- }
-
- _import_with_conflicts(src,dst,conflicts);
- //not conflicted, just reimport!
-
- }
-#endif
-}
-
-void EditorNode::_import(const String &p_file) {
-
-#if 0
- Node *new_scene = EditorImport::import_scene(p_file);
-
- if (!new_scene) {
-
- current_option=-1;
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text("Ugh");
- accept->set_text("Error importing scene.");
- accept->popup_centered(Size2(300,70));
- return;
- }
-
- //as soon as the scene is imported, version hashes must be generated for comparison against saved scene
- EditorImport::generate_version_hashes(new_scene);
-
- Node *old_scene = edited_scene;
- _hide_top_editors();
- set_edited_scene(NULL);
- editor_data.clear_editor_states();
- if (old_scene) {
- memdelete(old_scene);
- }
-
- set_edited_scene(new_scene);
- scene_tree_dock->set_selected(new_scene);
- //_get_scene_metadata();
-
- editor_data.get_undo_redo().clear_history();
- saved_version=editor_data.get_undo_redo().get_version();
- _update_title();
-
-#endif
-}
-
void EditorNode::_dialog_action(String p_file) {
switch (current_option) {
@@ -1113,7 +986,6 @@ void EditorNode::_dialog_action(String p_file) {
if (res.is_null()) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text("ok :(");
accept->set_text(TTR("Failed to load resource."));
return;
@@ -1136,29 +1008,6 @@ void EditorNode::_dialog_action(String p_file) {
//would be nice to show the project manager opened with the highlighted field..
_run(false, ""); // automatically run the project
} break;
- case FILE_SAVE_OPTIMIZED: {
-
- } break;
- case FILE_RUN_SCRIPT: {
-
- Ref<Script> scr = ResourceLoader::load(p_file, "Script", true);
- if (scr.is_null()) {
- add_io_error("Script Failed to Load:\n" + p_file);
- return;
- }
- if (!scr->is_tool()) {
-
- add_io_error("Script is not tool, will not be able to run:\n" + p_file);
- return;
- }
-
- Ref<EditorScript> es = memnew(EditorScript);
- es->set_script(scr.get_ref_ptr());
- es->set_editor(this);
- es->_run();
-
- get_undo_redo()->clear_history();
- } break;
case FILE_CLOSE:
case FILE_CLOSE_ALL_AND_QUIT:
case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER:
@@ -1170,9 +1019,8 @@ void EditorNode::_dialog_action(String p_file) {
if (file->get_mode() == EditorFileDialog::MODE_SAVE_FILE) {
- //_save_scene(p_file);
_save_default_environment();
- if (scene_idx != editor_data.get_edited_scene() || _get_current_main_editor() == EDITOR_SCRIPT)
+ if (scene_idx != editor_data.get_edited_scene())
_save_scene(p_file, scene_idx);
else
_save_scene_with_preview(p_file);
@@ -1186,10 +1034,8 @@ void EditorNode::_dialog_action(String p_file) {
case FILE_SAVE_AND_RUN: {
if (file->get_mode() == EditorFileDialog::MODE_SAVE_FILE) {
- //_save_scene(p_file);
_save_default_environment();
_save_scene_with_preview(p_file);
- _call_build();
_run(true);
}
} break;
@@ -1202,7 +1048,6 @@ void EditorNode::_dialog_action(String p_file) {
if (ml.is_null()) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("Can't load MeshLibrary for merging!"));
accept->popup_centered_minsize();
@@ -1235,7 +1080,6 @@ void EditorNode::_dialog_action(String p_file) {
if (ml.is_null()) {
if (file_export_lib_merge->is_pressed()) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("Can't load TileSet for merging!"));
accept->popup_centered_minsize();
@@ -1261,19 +1105,15 @@ void EditorNode::_dialog_action(String p_file) {
}
} break;
- // case SETTINGS_LOAD_EXPORT_TEMPLATES: {
-
- // } break;
-
case RESOURCE_SAVE:
case RESOURCE_SAVE_AS: {
uint32_t current = editor_history.get_current();
Object *current_obj = current > 0 ? ObjectDB::get_instance(current) : NULL;
- ERR_FAIL_COND(!current_obj->cast_to<Resource>())
+ ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj))
- RES current_res = RES(current_obj->cast_to<Resource>());
+ RES current_res = RES(Object::cast_to<Resource>(current_obj));
save_resource_in_path(current_res, p_file);
@@ -1285,7 +1125,7 @@ void EditorNode::_dialog_action(String p_file) {
Ref<ConfigFile> config;
config.instance();
- Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts.cfg"));
+ Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts-3.cfg"));
if (err == ERR_CANT_OPEN) {
config.instance(); // new config
@@ -1296,7 +1136,7 @@ void EditorNode::_dialog_action(String p_file) {
_save_docks_to_config(config, p_file);
- config->save(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts.cfg"));
+ config->save(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts-3.cfg"));
layout_dialog->hide();
_update_layouts_menu();
@@ -1313,7 +1153,7 @@ void EditorNode::_dialog_action(String p_file) {
Ref<ConfigFile> config;
config.instance();
- Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts.cfg"));
+ Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts-3.cfg"));
if (err != OK || !config->has_section(p_file)) {
show_warning(TTR("Layout name not found!"));
@@ -1327,7 +1167,7 @@ void EditorNode::_dialog_action(String p_file) {
config->set_value(p_file, E->get(), Variant());
}
- config->save(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts.cfg"));
+ config->save(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts-3.cfg"));
layout_dialog->hide();
_update_layouts_menu();
@@ -1340,8 +1180,6 @@ void EditorNode::_dialog_action(String p_file) {
default: { //save scene?
if (file->get_mode() == EditorFileDialog::MODE_SAVE_FILE) {
-
- //_save_scene(p_file);
_save_scene_with_preview(p_file);
}
@@ -1408,8 +1246,8 @@ void EditorNode::_prepare_history() {
icon = base_icon;
String text;
- if (obj->cast_to<Resource>()) {
- Resource *r = obj->cast_to<Resource>();
+ if (Object::cast_to<Resource>(obj)) {
+ Resource *r = Object::cast_to<Resource>(obj);
if (r->get_path().is_resource_file())
text = r->get_path().get_file();
else if (r->get_name() != String()) {
@@ -1417,8 +1255,8 @@ void EditorNode::_prepare_history() {
} else {
text = r->get_class();
}
- } else if (obj->cast_to<Node>()) {
- text = obj->cast_to<Node>()->get_name();
+ } else if (Object::cast_to<Node>(obj)) {
+ text = Object::cast_to<Node>(obj)->get_name();
} else {
text = obj->get_class();
}
@@ -1452,20 +1290,6 @@ void EditorNode::_save_default_environment() {
}
}
-void EditorNode::_imported(Node *p_node) {
-
- /*
- Node *scene = editor_data.get_edited_scene_root();
- add_edited_scene(p_node);
-
- if (scene) {
- String path = scene->get_filename();
- p_node->set_filename(path);
- memdelete(scene);
- }
-*/
-}
-
void EditorNode::_hide_top_editors() {
_display_top_editors(false);
@@ -1516,21 +1340,17 @@ void EditorNode::_edit_current() {
if (is_resource) {
- Resource *current_res = current_obj->cast_to<Resource>();
+ Resource *current_res = Object::cast_to<Resource>(current_obj);
ERR_FAIL_COND(!current_res);
scene_tree_dock->set_selected(NULL);
property_editor->edit(current_res);
node_dock->set_node(NULL);
object_menu->set_disabled(false);
EditorNode::get_singleton()->get_import_dock()->set_edit_path(current_res->get_path());
- //resources_dock->add_resource(Ref<Resource>(current_res));
-
- //top_pallete->set_current_tab(1);
} else if (is_node) {
- Node *current_node = current_obj->cast_to<Node>();
+ Node *current_node = Object::cast_to<Node>(current_obj);
ERR_FAIL_COND(!current_node);
- // ERR_FAIL_COND(!current_node->is_inside_tree());
property_editor->edit(current_node);
if (current_node->is_inside_tree()) {
@@ -1542,14 +1362,10 @@ void EditorNode::_edit_current() {
}
object_menu->get_popup()->clear();
- //top_pallete->set_current_tab(0);
-
} else {
property_editor->edit(current_obj);
node_dock->set_node(NULL);
- //scene_tree_dock->set_selected(current_node);
- //object_menu->get_popup()->clear();
}
/* Take care of PLUGIN EDITOR */
@@ -1604,15 +1420,6 @@ void EditorNode::_edit_current() {
_hide_top_editors();
}
- /*
- if (!plugin || plugin->has_main_screen()) {
- // remove the OVER plugin if exists
- if (editor_plugin_over)
- editor_plugin_over->make_visible(false);
- editor_plugin_over=NULL;
- }
-*/
- /* Take care of OBJECT MENU */
object_menu->set_disabled(false);
@@ -1657,9 +1464,6 @@ void EditorNode::_edit_current() {
}
}
- //p->add_separator();
- //p->add_item("All Methods",OBJECT_CALL_METHOD);
-
update_keying();
}
@@ -1668,7 +1472,7 @@ void EditorNode::_resource_created() {
Object *c = create_dialog->instance_selected();
ERR_FAIL_COND(!c);
- Resource *r = c->cast_to<Resource>();
+ Resource *r = Object::cast_to<Resource>(c);
ERR_FAIL_COND(!r);
REF res(r);
@@ -1696,7 +1500,6 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
play_button->set_pressed(false);
play_button->set_icon(gui_base->get_icon("MainPlay", "EditorIcons"));
- //pause_button->set_pressed(false);
play_scene_button->set_pressed(false);
play_scene_button->set_icon(gui_base->get_icon("PlayScene", "EditorIcons"));
play_custom_scene_button->set_pressed(false);
@@ -1712,7 +1515,6 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (!scene) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("There is no defined scene to run."));
accept->popup_centered_minsize();
@@ -1721,8 +1523,6 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (scene->get_filename() == "") {
current_option = -1;
- //accept->get_cancel()->hide();
- /**/
_menu_option_confirm(FILE_SAVE_BEFORE_RUN, false);
return;
}
@@ -1739,7 +1539,6 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (main_scene == "") {
current_option = -1;
- //accept->get_cancel()->hide();
pick_main_scene->set_text(TTR("No main scene has ever been defined, select one?\nYou can change it later in \"Project Settings\" under the 'application' category."));
pick_main_scene->popup_centered_minsize();
return;
@@ -1748,7 +1547,6 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (!FileAccess::exists(main_scene)) {
current_option = -1;
- //accept->get_cancel()->hide();
pick_main_scene->set_text(vformat(TTR("Selected scene '%s' does not exist, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), main_scene));
pick_main_scene->popup_centered_minsize();
return;
@@ -1757,7 +1555,6 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (ResourceLoader::get_resource_type(main_scene) != "PackedScene") {
current_option = -1;
- //accept->get_cancel()->hide();
pick_main_scene->set_text(vformat(TTR("Selected scene '%s' is not a scene file, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), main_scene));
pick_main_scene->popup_centered_minsize();
return;
@@ -1775,14 +1572,12 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (scene->get_filename() == "") {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("Current scene was never saved, please save it prior to running."));
accept->popup_centered_minsize();
return;
}
- //_save_scene(scene->get_filename());
_save_scene_with_preview(scene->get_filename());
}
}
@@ -1790,6 +1585,9 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
editor_data.save_editor_external_data();
}
+ if (!_call_build())
+ return;
+
if (bool(EDITOR_DEF("run/output/always_clear_output_on_play", true))) {
log->clear();
}
@@ -1808,7 +1606,6 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
if (error != OK) {
current_option = -1;
- //confirmation->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("Could not start subprocess!"));
accept->popup_centered_minsize();
@@ -1831,79 +1628,23 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
_playing_edited = p_current;
}
-void EditorNode::_cleanup_scene() {
-
-#if 0
- Node *scene = editor_data.get_edited_scene_root();
- editor_selection->clear();
- editor_data.clear_editor_states();
- editor_history.clear();
- _hide_top_editors();
- animation_editor->cleanup();
- property_editor->edit(NULL);
- resources_dock->cleanup();
- scene_import_metadata.unref();
- //set_edited_scene(NULL);
- if (scene) {
- if (scene->get_filename()!="") {
- previous_scenes.push_back(scene->get_filename());
- }
-
- memdelete(scene);
- }
- editor_data.get_undo_redo().clear_history();
- saved_version=editor_data.get_undo_redo().get_version();
- run_settings_dialog->set_run_mode(0);
- run_settings_dialog->set_custom_arguments("-l $scene");
-
- List<Ref<Resource> > cached;
- ResourceCache::get_cached_resources(&cached);
-
- for(List<Ref<Resource> >::Element *E=cached.front();E;E=E->next()) {
-
- String path = E->get()->get_path();
- if (path.is_resource_file()) {
- ERR_PRINT(("Stray resource not cleaned:"+path).utf8().get_data());
- }
-
- }
-
- _update_title();
-#endif
-}
-
void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
- //print_line("option "+itos(p_option)+" confirm "+itos(p_confirmed));
if (!p_confirmed) //this may be a hack..
current_option = (MenuOptions)p_option;
switch (p_option) {
case FILE_NEW_SCENE: {
- // TODO: Drop such obsolete commented code
- /*
- if (!p_confirmed) {
- confirmation->get_ok()->set_text("Yes");
- //confirmation->get_cancel()->show();
- confirmation->set_text("Start a New Scene? (Current will be lost)");
- confirmation->popup_centered_minsize();
- break;
- }*/
-
int idx = editor_data.add_edited_scene(-1);
_scene_tab_changed(idx);
editor_data.clear_editor_states();
- //_cleanup_scene();
-
} break;
case FILE_NEW_INHERITED_SCENE:
case FILE_OPEN_SCENE: {
- //print_tree();
file->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- //not for now?
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions);
file->clear_filters();
@@ -1912,7 +1653,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
file->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- //file->set_current_path(current_path);
Node *scene = editor_data.get_edited_scene_root();
if (scene) {
file->set_current_path(scene->get_filename());
@@ -1933,10 +1673,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
quick_open->set_title(TTR("Quick Open Script.."));
} break;
- case FILE_RUN_SCRIPT: {
-
- file_script->popup_centered_ratio();
- } break;
case FILE_OPEN_PREV: {
if (previous_scenes.empty())
@@ -1966,12 +1702,10 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
Node *scene = editor_data.get_edited_scene_root(scene_idx);
if (scene && scene->get_filename() != "") {
- // save in background if in the script editor
- if (scene_idx != editor_data.get_edited_scene() || _get_current_main_editor() == EDITOR_SCRIPT) {
+ if (scene_idx != editor_data.get_edited_scene())
_save_scene(scene->get_filename(), scene_idx);
- } else {
+ else
_save_scene_with_preview(scene->get_filename());
- }
if (scene_idx != -1)
_discard_changes();
@@ -1990,7 +1724,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
current_option = -1;
//confirmation->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
- accept->set_text("This operation can't be done without a tree root.");
+ accept->set_text(TTR("This operation can't be done without a tree root."));
accept->popup_centered_minsize();
break;
}
@@ -2046,44 +1780,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
_menu_option_confirm(FILE_SAVE_AND_RUN, false);
} break;
- case FILE_SAVE_OPTIMIZED: {
-#if 0
- Node *scene = editor_data.get_edited_scene_root();
- if (!scene) {
-
- current_option=-1;
- //confirmation->get_cancel()->hide();
- accept->get_ok()->set_text("I see..");
- accept->set_text("This operation can't be done without a tree root.");
- accept->popup_centered(Size2(300,70));
- break;
- }
-
-
-
- //file->set_current_path(current_path);
-
- String cpath;
- if (scene->get_filename()!="") {
- cpath = scene->get_filename();
-
- String fn = cpath.substr(0,cpath.length() - cpath.extension().size());
- String ext=cpath.extension();
- cpath=fn+".optimized.scn";
- optimized_save->set_optimized_scene(cpath);
- optimized_save->popup_centered(Size2(500,143));
- } else {
- current_option=-1;
- //confirmation->get_cancel()->hide();
- accept->get_ok()->set_text("I see..");
- accept->set_text("Please save the scene first.");
- accept->popup_centered(Size2(300,70));
- break;
-
- }
-#endif
- } break;
-
case FILE_EXPORT_PROJECT: {
project_export->popup_export();
@@ -2096,7 +1792,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
current_option = -1;
//confirmation->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
- accept->set_text("This operation can't be done without a scene.");
+ accept->set_text(TTR("This operation can't be done without a scene."));
accept->popup_centered_minsize();
break;
}
@@ -2139,9 +1835,8 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
if (!editor_data.get_edited_scene_root()) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
- accept->set_text("This operation can't be done without a selected node.");
+ accept->set_text(TTR("This operation can't be done without a selected node."));
accept->popup_centered_minsize();
break;
}
@@ -2228,61 +1923,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
scene_tabs->set_current_tab(cur_idx);
} break;
-
-#if 0
- case NODE_EXTERNAL_INSTANCE: {
-
-
- if (!edited_scene) {
-
- current_option=-1;
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text("I see..");
- accept->set_text("This operation can't be done without a selected node.");
- accept->popup_centered(Size2(300,70));
- break;
- }
-
- Node *parent = scene_tree_editor->get_selected();
-
- if (!parent) {
-
- current_option=-1;
- //confirmation->get_cancel()->hide();
- accept->get_ok()->set_text("I see..");
- accept->set_text("This operation can't be done without a selected node.");
- accept->popup_centered(Size2(300,70));
- break;
- }
-
- Node*instanced_scene=SceneLoader::load(external_file,true);
-
- if (!instanced_scene) {
-
- current_option=-1;
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text("Ugh");
- accept->set_text("Error loading scene from "+external_file);
- accept->popup_centered(Size2(300,70));
- return;
- }
-
- instanced_scene->generate_instance_state();
- instanced_scene->set_filename( ProjectSettings::get_singleton()->localize_path(external_file) );
-
- editor_data.get_undo_redo().create_action("Instance Scene");
- editor_data.get_undo_redo().add_do_method(parent,"add_child",instanced_scene);
- editor_data.get_undo_redo().add_do_method(instanced_scene,"set_owner",edited_scene);
- editor_data.get_undo_redo().add_do_reference(instanced_scene);
- editor_data.get_undo_redo().add_undo_method(parent,"remove_child",instanced_scene);
- editor_data.get_undo_redo().commit_action();
-
- //parent->add_child(instanced_scene);
- //instanced_scene->set_owner(edited_scene);
- _last_instanced_scene=instanced_scene;
-
- } break;
-#endif
case RESOURCE_NEW: {
create_dialog->popup_create(true);
@@ -2296,9 +1936,9 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
uint32_t current = editor_history.get_current();
Object *current_obj = current > 0 ? ObjectDB::get_instance(current) : NULL;
- ERR_FAIL_COND(!current_obj->cast_to<Resource>())
+ ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj))
- RES current_res = RES(current_obj->cast_to<Resource>());
+ RES current_res = RES(Object::cast_to<Resource>(current_obj));
save_resource(current_res);
@@ -2308,9 +1948,9 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
uint32_t current = editor_history.get_current();
Object *current_obj = current > 0 ? ObjectDB::get_instance(current) : NULL;
- ERR_FAIL_COND(!current_obj->cast_to<Resource>())
+ ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj))
- RES current_res = RES(current_obj->cast_to<Resource>());
+ RES current_res = RES(Object::cast_to<Resource>(current_obj));
save_resource_as(current_res);
@@ -2320,9 +1960,9 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
uint32_t current = editor_history.get_current();
Object *current_obj = current > 0 ? ObjectDB::get_instance(current) : NULL;
- ERR_FAIL_COND(!current_obj->cast_to<Resource>())
+ ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj))
- RES current_res = RES(current_obj->cast_to<Resource>());
+ RES current_res = RES(Object::cast_to<Resource>(current_obj));
current_res->set_path("");
_edit_current();
} break;
@@ -2331,9 +1971,9 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
uint32_t current = editor_history.get_current();
Object *current_obj = current > 0 ? ObjectDB::get_instance(current) : NULL;
- ERR_FAIL_COND(!current_obj->cast_to<Resource>())
+ ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj))
- RES current_res = RES(current_obj->cast_to<Resource>());
+ RES current_res = RES(Object::cast_to<Resource>(current_obj));
EditorSettings::get_singleton()->set_resource_clipboard(current_res);
@@ -2407,7 +2047,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
} break;
case RUN_PLAY: {
_menu_option_confirm(RUN_STOP, true);
- _call_build();
_run(false);
} break;
@@ -2437,7 +2076,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
play_scene_button->set_icon(gui_base->get_icon("PlayScene", "EditorIcons"));
play_custom_scene_button->set_pressed(false);
play_custom_scene_button->set_icon(gui_base->get_icon("PlayCustom", "EditorIcons"));
- //pause_button->set_pressed(false);
if (bool(EDITOR_DEF("run/output/always_close_output_on_stop", true))) {
for (int i = 0; i < bottom_panel_items.size(); i++) {
if (bottom_panel_items[i].control == log) {
@@ -2453,7 +2091,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
_save_default_environment();
_menu_option_confirm(RUN_STOP, true);
- _call_build();
_run(true);
} break;
@@ -2465,7 +2102,10 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
}
if (run_native->is_deploy_debug_remote_enabled()) {
_menu_option_confirm(RUN_STOP, true);
- _call_build();
+
+ if (!_call_build())
+ break; // build failed
+
emit_signal("play_pressed");
editor_run.run_native_notify();
}
@@ -2526,19 +2166,14 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
} break;
case RUN_FILE_SERVER: {
- //file_server
bool ischecked = debug_menu->get_popup()->is_item_checked(debug_menu->get_popup()->get_item_index(RUN_FILE_SERVER));
if (ischecked) {
file_server->stop();
run_native->set_deploy_dumb(false);
- //debug_menu->set_icon(gui_base->get_icon("FileServer","EditorIcons"));
- //debug_menu->get_popup()->set_item_text( debug_menu->get_popup()->get_item_index(RUN_FILE_SERVER),"Enable File Server");
} else {
file_server->start();
run_native->set_deploy_dumb(true);
- //debug_menu->set_icon(gui_base->get_icon("FileServerActive","EditorIcons"));
- //debug_menu->get_popup()->set_item_text( debug_menu->get_popup()->get_item_index(RUN_FILE_SERVER),"Disable File Server");
}
debug_menu->get_popup()->set_item_checked(debug_menu->get_popup()->get_item_index(RUN_FILE_SERVER), !ischecked);
@@ -2553,14 +2188,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
EditorSettings::get_singleton()->set_project_metadata("debug_options", "run_live_debug", !ischecked);
} break;
-
- /*case RUN_DEPLOY_DUMB_CLIENTS: {
-
- bool ischecked = debug_menu->get_popup()->is_item_checked( debug_menu->get_popup()->get_item_index(RUN_DEPLOY_DUMB_CLIENTS));
- debug_menu->get_popup()->set_item_checked( debug_menu->get_popup()->get_item_index(RUN_DEPLOY_DUMB_CLIENTS),!ischecked);
- run_native->set_deploy_dumb(!ischecked);
-
- } break;*/
case RUN_DEPLOY_REMOTE_DEBUG: {
bool ischecked = debug_menu->get_popup()->is_item_checked(debug_menu->get_popup()->get_item_index(RUN_DEPLOY_REMOTE_DEBUG));
@@ -2601,25 +2228,31 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
update_menu->get_popup()->set_item_checked(0, true);
update_menu->get_popup()->set_item_checked(1, false);
OS::get_singleton()->set_low_processor_usage_mode(false);
+ EditorSettings::get_singleton()->set_project_metadata("editor_options", "update_always", true);
+
+ current_option = -1;
+ accept->get_ok()->set_text(TTR("I see.."));
+ accept->set_text(TTR("This option is deprecated. Situations where refresh must be forced are now considered a bug. Please report."));
+ accept->popup_centered_minsize();
} break;
case SETTINGS_UPDATE_CHANGES: {
update_menu->get_popup()->set_item_checked(0, false);
update_menu->get_popup()->set_item_checked(1, true);
OS::get_singleton()->set_low_processor_usage_mode(true);
+ EditorSettings::get_singleton()->set_project_metadata("editor_options", "update_always", false);
} break;
case SETTINGS_UPDATE_SPINNER_HIDE: {
+
update_menu->set_icon(gui_base->get_icon("Collapse", "EditorIcons"));
update_menu->get_popup()->toggle_item_checked(3);
+ bool checked = update_menu->get_popup()->is_item_checked(3);
+ EditorSettings::get_singleton()->set_project_metadata("editor_options", "update_spinner_hide", checked);
} break;
case SETTINGS_PREFERENCES: {
settings_config_dialog->popup_edit_settings();
} break;
- case SETTINGS_OPTIMIZED_PRESETS: {
-
- //optimized_presets->popup_centered_ratio();
- } break;
case SETTINGS_MANAGE_EXPORT_TEMPLATES: {
export_template_manager->popup_manager();
@@ -2632,9 +2265,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
} break;
case SETTINGS_PICK_MAIN_SCENE: {
- //print_tree();
file->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- //not for now?
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions);
file->clear_filters();
@@ -2643,7 +2274,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
file->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- //file->set_current_path(current_path);
Node *scene = editor_data.get_edited_scene_root();
if (scene) {
file->set_current_path(scene->get_filename());
@@ -2673,58 +2303,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
case HELP_ABOUT: {
about->popup_centered_minsize(Size2(780, 500) * EDSCALE);
} break;
- case SOURCES_REIMPORT: {
-
- //reimport_dialog->popup_reimport();
- } break;
- case DEPENDENCY_LOAD_CHANGED_IMAGES: {
-
- } break;
- case DEPENDENCY_UPDATE_IMPORTED: {
-
- /*
- bool editing_changed = _find_editing_changed_scene(get_edited_scene());
-
- import_reload_fn="";
-
- if (editing_changed) {
- if (unsaved_cache && !bool(EDITOR_DEF("import/ask_save_before_reimport",false))) {
- if (!p_confirmed) {
-
-
- confirmation->get_ok()->set_text("Open");
- //confirmation->get_cancel()->show();
- confirmation->set_text("Current scene changed, save and re-import ?");
- confirmation->popup_centered(Size2(300,70));
- break;
-
- }
- }
-
- Node *scene = get_edited_scene();
-
- if (scene->get_filename()=="") {
-
- current_option=-1;
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text("I see..");
- accept->set_text("Can't import if edited scene was not saved."); //i don't think this code will ever run
- accept->popup_centered(Size2(300,70));
- break;
-
- }
-
-
- import_reload_fn = scene->get_filename();
- _save_scene(import_reload_fn);
- _cleanup_scene();
-
-
- }
-
-*/
-
- } break;
default: {
@@ -2804,9 +2382,9 @@ void EditorNode::_discard_changes(const String &p_str) {
String exec = OS::get_singleton()->get_executable_path();
List<String> args;
- args.push_back("-path");
+ args.push_back("--path");
args.push_back(exec.get_base_dir());
- args.push_back("-pm");
+ args.push_back("--project-manager");
OS::ProcessID pid = 0;
Error err = OS::get_singleton()->execute(exec, args, false, &pid);
@@ -2889,7 +2467,7 @@ void EditorNode::add_editor_plugin(EditorPlugin *p_editor) {
tb->set_toggle_mode(true);
tb->connect("pressed", singleton, "_editor_select", varray(singleton->main_editor_buttons.size()));
tb->set_text(p_editor->get_name());
- tb->set_icon(p_editor->get_base_control()->get_icon(p_editor->get_name(), "EditorIcons"));
+ tb->set_icon(singleton->gui_base->get_icon(p_editor->get_name(), "EditorIcons"));
tb->set_name(p_editor->get_name());
singleton->main_editor_buttons.push_back(tb);
singleton->main_editor_button_vb->add_child(tb);
@@ -2969,12 +2547,12 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled)
String addon_path = "res://addons/" + p_addon + "/plugin.cfg";
Error err = cf->load(addon_path);
if (err != OK) {
- show_warning("Unable to enable addon plugin at: '" + addon_path + "' parsing of config failed.");
+ show_warning(TTR("Unable to enable addon plugin at: '") + addon_path + TTR("' parsing of config failed."));
return;
}
if (!cf->has_section_key("plugin", "script")) {
- show_warning("Unable to find script field for addon plugin at: 'res://addons/" + p_addon + "''.");
+ show_warning(TTR("Unable to find script field for addon plugin at: 'res://addons/") + p_addon + "''.");
return;
}
@@ -2984,18 +2562,18 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled)
Ref<Script> script = ResourceLoader::load(path);
if (script.is_null()) {
- show_warning("Unable to load addon script from path: '" + path + "'.");
+ show_warning(TTR("Unable to load addon script from path: '") + path + "'.");
return;
}
//could check inheritance..
if (String(script->get_instance_base_type()) != "EditorPlugin") {
- show_warning("Unable to load addon script from path: '" + path + "' Base type is not EditorPlugin.");
+ show_warning(TTR("Unable to load addon script from path: '") + path + "' Base type is not EditorPlugin.");
return;
}
if (!script->is_tool()) {
- show_warning("Unable to load addon script from path: '" + path + "' Script is not in tool mode.");
+ show_warning(TTR("Unable to load addon script from path: '") + path + "' Script is not in tool mode.");
return;
}
@@ -3033,18 +2611,9 @@ void EditorNode::_remove_edited_scene() {
editor_data.get_undo_redo().clear_history();
_update_title();
_update_scene_tabs();
-
- /*
- if (editor_data.get_edited_scene_count()==1) {
- //make new scene appear saved
- set_current_version(editor_data.get_undo_redo().get_version());
- unsaved_cache=false;
- }
- */
}
void EditorNode::_remove_scene(int index) {
- //printf("Attempting to remove scene %d (current is %d)\n", index, editor_data.get_edited_scene());
if (editor_data.get_edited_scene() == index) {
//Scene to remove is current scene
@@ -3063,8 +2632,8 @@ void EditorNode::set_edited_scene(Node *p_scene) {
}
get_editor_data().set_edited_scene_root(p_scene);
- if (p_scene && p_scene->cast_to<Popup>())
- p_scene->cast_to<Popup>()->show(); //show popups
+ if (Object::cast_to<Popup>(p_scene))
+ Object::cast_to<Popup>(p_scene)->show(); //show popups
scene_tree_dock->set_edited_scene(p_scene);
if (get_tree())
get_tree()->set_edited_scene_root(p_scene);
@@ -3093,7 +2662,6 @@ Dictionary EditorNode::_get_main_scene_state() {
state["property_edit_offset"] = get_property_editor()->get_scene_tree()->get_vscroll_bar()->get_value();
state["saved_version"] = saved_version;
state["node_filter"] = scene_tree_dock->get_filter();
- //print_line(" getting main tab: "+itos(state["main_tab"]));
return state;
}
@@ -3102,32 +2670,8 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
if (get_edited_scene() != p_for_scene && p_for_scene != NULL)
return; //not for this scene
- //print_line("set current 7 ");
changing_scene = false;
-#if 0
- if (p_state.has("main_tab")) {
- int idx = p_state["main_tab"];
-
-
- print_line("comes with tab: "+itos(idx));
- int current=-1;
- for(int i=0;i<editor_table.size();i++) {
- if (editor_plugin_screen==editor_table[i]) {
- current=i;
- break;
- }
- }
-
-
- if (idx<2 && current<2) {
- //only set tab for 2D and 3D
- _editor_select(idx);
- //print_line(" setting main tab: "+itos(p_state["main_tab"]));
- }
- }
-#else
-
if (get_edited_scene()) {
int current = -1;
@@ -3150,7 +2694,6 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
}
}
}
-#endif
if (p_state.has("scene_tree_offset"))
scene_tree_dock->get_tree_editor()->get_scene_tree()->get_vscroll_bar()->set_value(p_state["scene_tree_offset"]);
@@ -3159,16 +2702,12 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
if (p_state.has("node_filter"))
scene_tree_dock->set_filter(p_state["node_filter"]);
- //print_line("set current 8 ");
//this should only happen at the very end
- //changing_scene=true; //avoid script change from opening editor
ScriptEditor::get_singleton()->get_debugger()->update_live_edit_root();
ScriptEditor::get_singleton()->set_scene_root_script(editor_data.get_scene_root_script(editor_data.get_edited_scene()));
editor_data.notify_edited_scene_changed();
-
- //changing_scene=false;
}
void EditorNode::set_current_version(uint64_t p_version) {
@@ -3200,17 +2739,13 @@ void EditorNode::set_current_scene(int p_idx) {
scene_root->remove_child(get_editor_data().get_edited_scene_root());
}
- //print_line("set current 2 ");
-
editor_selection->clear();
editor_data.set_edited_scene(p_idx);
Node *new_scene = editor_data.get_edited_scene_root();
- if (new_scene && new_scene->cast_to<Popup>())
- new_scene->cast_to<Popup>()->show(); //show popups
-
- //print_line("set current 3 ");
+ if (Object::cast_to<Popup>(new_scene))
+ Object::cast_to<Popup>(new_scene)->show(); //show popups
scene_tree_dock->set_edited_scene(new_scene);
if (get_tree())
@@ -3220,25 +2755,11 @@ void EditorNode::set_current_scene(int p_idx) {
if (new_scene->get_parent() != scene_root)
scene_root->add_child(new_scene);
}
- //print_line("set current 4 ");
Dictionary state = editor_data.restore_edited_scene_state(editor_selection, &editor_history);
_edit_current();
- /*if (!unsaved) {
- saved_version=editor_data.get_undo_redo().get_version();
- if (p_backwards)
- saved_version--;
- else
- saved_version++;
- print_line("was saved, updating version");
- } else {
- saved_version=state["saved_version"];
- }*/
- //_set_main_scene_state(state);
-
call_deferred("_set_main_scene_state", state, get_edited_scene()); //do after everything else is done setting up
- //print_line("set current 6 ");
}
bool EditorNode::is_scene_open(const String &p_path) {
@@ -3289,7 +2810,6 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
if (!lpath.begins_with("res://")) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("Ugh"));
accept->set_text(TTR("Error loading scene, it must be inside the project path. Use 'Import' to open the scene, then save it inside the project path."));
accept->popup_centered_minsize();
@@ -3299,8 +2819,6 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
int prev = editor_data.get_edited_scene();
int idx = editor_data.add_edited_scene(-1);
- //print_line("load scene callback");
- //set_current_scene(idx);
if (!editor_data.get_edited_scene_root() && editor_data.get_edited_scene_count() == 2) {
_remove_edited_scene();
@@ -3308,18 +2826,13 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
_scene_tab_changed(idx);
}
- //_cleanup_scene(); // i'm sorry but this MUST happen to avoid modified resources to not be reloaded.
-
dependency_errors.clear();
- Ref<PackedScene> sdata = ResourceLoader::load(lpath, "", true);
+ Error err;
+ Ref<PackedScene> sdata = ResourceLoader::load(lpath, "", true, &err);
if (!sdata.is_valid()) {
- current_option = -1;
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text(TTR("Ugh"));
- accept->set_text(TTR("Error loading scene."));
- accept->popup_centered_minsize();
+ _dialog_display_load_error(lpath, err);
opening_prev = false;
if (prev != -1) {
@@ -3360,7 +2873,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
if (ResourceCache::has(lpath)) {
//used from somewhere else? no problem! update state and replace sdata
- Ref<PackedScene> ps = Ref<PackedScene>(ResourceCache::get(lpath)->cast_to<PackedScene>());
+ Ref<PackedScene> ps = Ref<PackedScene>(Object::cast_to<PackedScene>(ResourceCache::get(lpath)));
if (ps.is_valid()) {
ps->replace_state(sdata->get_state());
ps->set_last_modified_time(sdata->get_last_modified_time());
@@ -3376,11 +2889,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
if (!new_scene) {
sdata.unref();
- current_option = -1;
- //accept->get_cancel()->hide();
- accept->get_ok()->set_text(TTR("Ugh"));
- accept->set_text(TTR("Error loading scene."));
- accept->popup_centered_minsize();
+ _dialog_display_load_error(lpath, ERR_FILE_NOT_FOUND);
opening_prev = false;
if (prev != -1) {
set_current_scene(prev);
@@ -3389,46 +2898,18 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
return ERR_FILE_NOT_FOUND;
}
- //guess not needed in the end?
- //new_scene->clear_internal_tree_resource_paths(); //make sure no internal tree paths to internal resources exist
-
- /*
- Node *old_scene = edited_scene;
- _hide_top_editors();
- set_edited_scene(NULL);
- editor_data.clear_editor_states();
- if (old_scene) {
- if (!opening_prev && old_scene->get_filename()!="") {
- previous_scenes.push_back(old_scene->get_filename());
- }
- memdelete(old_scene);
- }
-*/
-
if (p_set_inherited) {
Ref<SceneState> state = sdata->get_state();
state->set_path(lpath);
new_scene->set_scene_inherited_state(state);
new_scene->set_filename(String());
- /*
- if (new_scene->get_scene_instance_state().is_valid())
- new_scene->get_scene_instance_state()->set_path(String());
- */
}
new_scene->set_scene_instance_state(Ref<SceneState>());
set_edited_scene(new_scene);
_get_scene_metadata(p_scene);
- /*
- editor_data.set_edited_scene_root(new_scene);
- scene_tree_dock->set_selected(new_scene, true);
- property_editor->edit(new_scene);
- editor_data.set_edited_scene_root(new_scene);
-*/
-
- //editor_data.get_undo_redo().clear_history();
saved_version = editor_data.get_undo_redo().get_version();
_update_title();
_update_scene_tabs();
@@ -3439,8 +2920,6 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
ScriptEditor::get_singleton()->get_debugger()->update_live_edit_root();
- //top_pallete->set_current_tab(0); //always go to scene
-
push_item(new_scene);
return OK;
@@ -3449,8 +2928,6 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
void EditorNode::open_request(const String &p_path) {
load_scene(p_path); // as it will be opened in separate tab
- //external_file=p_path;
- //_menu_option_confirm(FILE_EXTERNAL_OPEN_SCENE,false);
}
void EditorNode::request_instance_scene(const String &p_path) {
@@ -3488,7 +2965,7 @@ void EditorNode::_property_keyed(const String &p_keyed, const Variant &p_value,
void EditorNode::_transform_keyed(Object *sp, const String &p_sub, const Transform &p_key) {
- Spatial *s = sp->cast_to<Spatial>();
+ Spatial *s = Object::cast_to<Spatial>(sp);
if (!s)
return;
AnimationPlayerEditor::singleton->get_key_editor()->insert_transform_key(s, p_sub, p_key);
@@ -3496,8 +2973,6 @@ void EditorNode::_transform_keyed(Object *sp, const String &p_sub, const Transfo
void EditorNode::update_keying() {
- //print_line("KR: "+itos(p_enabled));
-
bool valid = false;
if (AnimationPlayerEditor::singleton->get_key_editor()->has_keying()) {
@@ -3505,7 +2980,7 @@ void EditorNode::update_keying() {
if (editor_history.get_path_size() >= 1) {
Object *obj = ObjectDB::get_instance(editor_history.get_path_object(0));
- if (obj && obj->cast_to<Node>()) {
+ if (Object::cast_to<Node>(obj)) {
valid = true;
}
@@ -3519,57 +2994,15 @@ void EditorNode::update_keying() {
void EditorNode::_close_messages() {
- //left_split->set_dragger_visible(false);
old_split_ofs = center_split->get_split_offset();
center_split->set_split_offset(0);
- //scene_root_parent->set_anchor_and_margin(MARGIN_BOTTOM,Control::ANCHOR_END,0);
}
void EditorNode::_show_messages() {
- //left_split->set_dragger_visible(true);
center_split->set_split_offset(old_split_ofs);
- //scene_root_parent->set_anchor_and_margin(MARGIN_BOTTOM,Control::ANCHOR_END,log->get_margin(MARGIN_TOP));
-}
-
-#if 0
-void EditorNode::animation_panel_make_visible(bool p_visible) {
-
- if (!p_visible) {
- animation_panel->hide();
- } else {
- animation_panel->show();
- }
-
- int idx = settings_menu->get_popup()->get_item_index(SETTINGS_SHOW_ANIMATION);
- settings_menu->get_popup()->set_item_checked(idx,p_visible);
}
-
-void EditorNode::animation_editor_make_visible(bool p_visible) {
-
- if (p_visible) {
-
- animation_editor->show();
- animation_vb->get_parent_control()->minimum_size_changed();
- //pd_anim->show();
- top_split->set_collapsed(false);
-
- //scene_root_parent->set_margin(MARGIN_TOP,animation_editor->get_margin(MARGIN_BOTTOM));
- } else {
- //pd_anim->hide();
- animation_editor->hide();
- //scene_root_parent->set_margin(MARGIN_TOP,0);
- if (!animation_vb->get_parent_control())
- return;
- animation_vb->get_parent_control()->minimum_size_changed();
- top_split->set_collapsed(true);
- }
-
- animation_editor->set_keying(p_visible);
-
-}
-#endif
void EditorNode::_add_to_recent_scenes(const String &p_scene) {
String base = "_" + ProjectSettings::get_singleton()->get_resource_path().replace("\\", "::").replace("/", "::");
@@ -3598,44 +3031,6 @@ void EditorNode::_open_recent_scene(int p_idx) {
load_scene(path);
}
-void EditorNode::_save_optimized() {
-
-//save_optimized_copy(optimized_save->get_optimized_scene(),optimized_save->get_preset());
-#if 0
- String path = optimized_save->get_optimized_scene();
-
- uint32_t flags=0;
-
- String platform="all";
- Ref<EditorOptimizedSaver> saver=editor_data.get_optimized_saver(optimized_save->get_preset());
-
- if (saver->is_bundle_scenes_enabled())
- flags|=SceneSaver::FLAG_BUNDLE_INSTANCED_SCENES;
- if (saver->is_bundle_resources_enabled())
- flags|=SceneSaver::FLAG_BUNDLE_RESOURCES;
- if (saver->is_remove_editor_data_enabled())
- flags|=SceneSaver::FLAG_OMIT_EDITOR_PROPERTIES;
- if (saver->is_big_endian_data_enabled())
- flags|=SceneSaver::FLAG_SAVE_BIG_ENDIAN;
-
- platform=saver->get_target_platform();
-
- Error err = SceneSaver::save(path,get_edited_scene(),flags,saver);
-
- if (err) {
-
- //accept->"()->hide();
- accept->get_ok()->set_text("I see..");
- accept->set_text("Error saving optimized scene: "+path);
- accept->popup_centered(Size2(300,70));
- return;
-
- }
-
- project_settings->add_remapped_path(ProjectSettings::get_singleton()->localize_path(get_edited_scene()->get_filename()),ProjectSettings::get_singleton()->localize_path(path),platform);
-#endif
-}
-
void EditorNode::_update_recent_scenes() {
String base = "_" + ProjectSettings::get_singleton()->get_resource_path().replace("\\", "::").replace("/", "::");
@@ -3664,7 +3059,6 @@ void EditorNode::_quick_opened() {
void EditorNode::_quick_run() {
- _call_build();
_run(false, quick_run->get_selected());
}
@@ -3675,33 +3069,7 @@ void EditorNode::notify_child_process_exited() {
editor_run.stop();
}
-bool EditorNode::_find_editing_changed_scene(Node *p_from) {
- /*
- if (!p_from)
- return false;
-
- if (p_from->get_filename()!="") {
-
- StringName fn = p_from->get_filename();
- for(int i=0;i<import_monitor->get_changes().size();i++) {
-
- if (fn==import_monitor->get_changes()[i])
- return true;
- }
- }
-
- for(int i=0;i<p_from->get_child_count();i++) {
-
- if (_find_editing_changed_scene(p_from->get_child(i)))
- return true;
- }
-*/
- return false;
-}
-
void EditorNode::add_io_error(const String &p_error) {
- //CharString err_ut = p_error.utf8();
- //ERR_PRINT(!err_ut.get_data());
_load_error_notify(singleton, p_error);
}
@@ -3741,12 +3109,9 @@ void EditorNode::register_editor_types() {
ClassDB::register_class<EditorPlugin>();
ClassDB::register_class<EditorImportPlugin>();
- // ClassDB::register_class<EditorExportPlugin>();
- // ClassDB::register_class<EditorScenePostImport>();
ClassDB::register_class<EditorScript>();
ClassDB::register_class<EditorSelection>();
ClassDB::register_class<EditorFileDialog>();
- //ClassDB::register_type<EditorImportExport>();
ClassDB::register_class<EditorSettings>();
ClassDB::register_class<EditorSpatialGizmo>();
ClassDB::register_class<EditorResourcePreview>();
@@ -3754,9 +3119,12 @@ void EditorNode::register_editor_types() {
ClassDB::register_class<EditorFileSystem>();
ClassDB::register_class<EditorFileSystemDirectory>();
ClassDB::register_virtual_class<ScriptEditor>();
+ ClassDB::register_virtual_class<EditorInterface>();
- //ClassDB::register_type<EditorImporter>();
- //ClassDB::register_type<EditorPostImport>();
+ // FIXME: Is this stuff obsolete, or should it be ported to new APIs?
+ //ClassDB::register_class<EditorExportPlugin>();
+ //ClassDB::register_class<EditorScenePostImport>();
+ //ClassDB::register_type<EditorImportExport>();
}
void EditorNode::unregister_editor_types() {
@@ -3774,9 +3142,9 @@ void EditorNode::progress_add_task(const String &p_task, const String &p_label,
singleton->progress_dialog->add_task(p_task, p_label, p_steps);
}
-void EditorNode::progress_task_step(const String &p_task, const String &p_state, int p_step, bool p_force_redraw) {
+void EditorNode::progress_task_step(const String &p_task, const String &p_state, int p_step, bool p_force_refresh) {
- singleton->progress_dialog->task_step(p_task, p_state, p_step, p_force_redraw);
+ singleton->progress_dialog->task_step(p_task, p_state, p_step, p_force_refresh);
}
void EditorNode::progress_end_task(const String &p_task) {
@@ -3844,9 +3212,9 @@ void EditorNode::_editor_file_dialog_unregister(EditorFileDialog *p_dialog) {
Vector<EditorNodeInitCallback> EditorNode::_init_callbacks;
-Error EditorNode::export_platform(const String &p_platform, const String &p_path, bool p_debug, const String &p_password, bool p_quit_after) {
+Error EditorNode::export_preset(const String &preset, const String &p_path, bool p_debug, const String &p_password, bool p_quit_after) {
- export_defer.platform = p_platform;
+ export_defer.preset = preset;
export_defer.path = p_path;
export_defer.debug = p_debug;
export_defer.password = p_password;
@@ -3921,6 +3289,7 @@ void EditorNode::_dock_select_input(const Ref<InputEvent> &p_input) {
splits[i]->hide();
}
+ _edit_current();
_save_docks();
}
}
@@ -3948,6 +3317,7 @@ void EditorNode::_dock_move_left() {
dock_slot[dock_popup_selected]->move_child(current, prev->get_index());
dock_slot[dock_popup_selected]->set_current_tab(dock_slot[dock_popup_selected]->get_current_tab() - 1);
dock_select->update();
+ _edit_current();
_save_docks();
}
@@ -3960,6 +3330,7 @@ void EditorNode::_dock_move_right() {
dock_slot[dock_popup_selected]->move_child(next, current->get_index());
dock_slot[dock_popup_selected]->set_current_tab(dock_slot[dock_popup_selected]->get_current_tab() + 1);
dock_select->update();
+ _edit_current();
_save_docks();
}
@@ -4191,21 +3562,6 @@ void EditorNode::_update_dock_slots_visibility() {
}
}
-void EditorNode::_update_top_menu_visibility() {
-
- return; // I think removing top menu is too much
- /*
- if (distraction_free->is_pressed()) {
- play_cc->hide();
- menu_hb->hide();
- scene_tabs->hide();
- } else {
- play_cc->show();
- menu_hb->show();
- scene_tabs->show();
- }*/
-}
-
void EditorNode::_load_docks_from_config(Ref<ConfigFile> p_layout, const String &p_section) {
for (int i = 0; i < DOCK_SLOT_MAX; i++) {
@@ -4224,7 +3580,7 @@ void EditorNode::_load_docks_from_config(Ref<ConfigFile> p_layout, const String
for (int k = 0; k < DOCK_SLOT_MAX; k++) {
if (!dock_slot[k]->has_node(name))
continue;
- node = dock_slot[k]->get_node(name)->cast_to<Control>();
+ node = Object::cast_to<Control>(dock_slot[k]->get_node(name));
if (!node)
continue;
atidx = k;
@@ -4313,7 +3669,7 @@ void EditorNode::_update_layouts_menu() {
Ref<ConfigFile> config;
config.instance();
- Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts.cfg"));
+ Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts-3.cfg"));
if (err != OK) {
return; //no config
}
@@ -4361,7 +3717,7 @@ void EditorNode::_layout_menu_option(int p_id) {
Ref<ConfigFile> config;
config.instance();
- Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts.cfg"));
+ Error err = config->load(EditorSettings::get_singleton()->get_settings_path().plus_file("editor_layouts-3.cfg"));
if (err != OK) {
return; //no config
}
@@ -4453,27 +3809,20 @@ void EditorNode::_thumbnail_done(const String &p_path, const Ref<Texture> &p_pre
void EditorNode::_scene_tab_changed(int p_tab) {
tab_preview_panel->hide();
- //print_line("set current 1 ");
bool unsaved = (saved_version != editor_data.get_undo_redo().get_version());
- //print_line("version: "+itos(editor_data.get_undo_redo().get_version())+", saved "+itos(saved_version));
if (p_tab == editor_data.get_edited_scene())
return; //pointless
uint64_t next_scene_version = editor_data.get_scene_version(p_tab);
- //print_line("scene tab changed???");
editor_data.get_undo_redo().create_action(TTR("Switch Scene Tab"));
editor_data.get_undo_redo().add_do_method(this, "set_current_version", unsaved ? saved_version : 0);
editor_data.get_undo_redo().add_do_method(this, "set_current_scene", p_tab);
- //editor_data.get_undo_redo().add_do_method(scene_tabs,"set_current_tab",p_tab);
- //editor_data.get_undo_redo().add_do_method(scene_tabs,"ensure_tab_visible",p_tab);
editor_data.get_undo_redo().add_do_method(this, "set_current_version", next_scene_version == 0 ? editor_data.get_undo_redo().get_version() + 1 : next_scene_version);
editor_data.get_undo_redo().add_undo_method(this, "set_current_version", next_scene_version);
editor_data.get_undo_redo().add_undo_method(this, "set_current_scene", editor_data.get_edited_scene());
- //editor_data.get_undo_redo().add_undo_method(scene_tabs,"set_current_tab",editor_data.get_edited_scene());
- //editor_data.get_undo_redo().add_undo_method(scene_tabs,"ensure_tab_visible",p_tab,editor_data.get_edited_scene());
editor_data.get_undo_redo().add_undo_method(this, "set_current_version", saved_version);
editor_data.get_undo_redo().commit_action();
}
@@ -4654,7 +4003,6 @@ void EditorNode::set_distraction_free_mode(bool p_enter) {
} else {
set_docks_visible(true);
}
- _update_top_menu_visibility();
}
bool EditorNode::get_distraction_free_mode() const {
@@ -4787,11 +4135,14 @@ Variant EditorNode::drag_files_and_dirs(const Vector<String> &p_files, Control *
void EditorNode::_dropped_files(const Vector<String> &p_files, int p_screen) {
+ /*
String cur_path = filesystem_dock->get_current_path();
- // for(int i=0;i<EditorImportExport::get_singleton()->get_import_plugin_count();i++) {
- // EditorImportExport::get_singleton()->get_import_plugin(i)->import_from_drop(p_files,cur_path);
- // }
+ for(int i=0;i<EditorImportExport::get_singleton()->get_import_plugin_count();i++) {
+ EditorImportExport::get_singleton()->get_import_plugin(i)->import_from_drop(p_files,cur_path);
+ }
+ */
}
+
void EditorNode::_file_access_close_error_notify(const String &p_str) {
add_io_error("Unable to write to file '" + p_str + "', file in use, locked or lacking permissions.");
@@ -4809,7 +4160,7 @@ void EditorNode::reload_scene(const String &p_path) {
if (E->get()->get_path().begins_with(p_path + "::")) //subresources of existing scene
to_clear.push_back(E->get());
- if (!E->get()->cast_to<Texture>())
+ if (!cast_to<Texture>(E->get().ptr()))
continue;
if (!E->get()->get_path().is_resource_file() && !E->get()->get_path().is_abs_path())
continue;
@@ -4883,13 +4234,16 @@ void EditorNode::add_build_callback(EditorBuildCallback p_callback) {
build_callbacks[build_callback_count++] = p_callback;
}
-EditorPluginInitializeCallback EditorNode::build_callbacks[EditorNode::MAX_BUILD_CALLBACKS];
+EditorBuildCallback EditorNode::build_callbacks[EditorNode::MAX_BUILD_CALLBACKS];
-void EditorNode::_call_build() {
+bool EditorNode::_call_build() {
for (int i = 0; i < build_callback_count; i++) {
- build_callbacks[i]();
+ if (!build_callbacks[i]())
+ return false;
}
+
+ return true;
}
void EditorNode::_inherit_imported(const String &p_action) {
@@ -4950,13 +4304,13 @@ void EditorNode::_dim_timeout() {
void EditorNode::_check_gui_base_size() {
if (gui_base->get_size().width > 1200 * EDSCALE) {
for (int i = 0; i < singleton->main_editor_button_vb->get_child_count(); i++) {
- ToolButton *btn = singleton->main_editor_button_vb->get_child(i)->cast_to<ToolButton>();
+ ToolButton *btn = Object::cast_to<ToolButton>(singleton->main_editor_button_vb->get_child(i));
if (btn == singleton->distraction_free) continue;
btn->set_text(btn->get_name());
}
} else {
for (int i = 0; i < singleton->main_editor_button_vb->get_child_count(); i++) {
- ToolButton *btn = singleton->main_editor_button_vb->get_child(i)->cast_to<ToolButton>();
+ ToolButton *btn = Object::cast_to<ToolButton>(singleton->main_editor_button_vb->get_child(i));
if (btn == singleton->distraction_free) continue;
btn->set_text("");
}
@@ -4979,7 +4333,6 @@ void EditorNode::_bind_methods() {
ClassDB::bind_method("_editor_select", &EditorNode::_editor_select);
ClassDB::bind_method("_node_renamed", &EditorNode::_node_renamed);
ClassDB::bind_method("edit_node", &EditorNode::edit_node);
- ClassDB::bind_method("_imported", &EditorNode::_imported);
ClassDB::bind_method("_unhandled_input", &EditorNode::_unhandled_input);
ClassDB::bind_method("_get_scene_metadata", &EditorNode::_get_scene_metadata);
@@ -4996,14 +4349,7 @@ void EditorNode::_bind_methods() {
ClassDB::bind_method("_quick_run", &EditorNode::_quick_run);
ClassDB::bind_method("_resource_created", &EditorNode::_resource_created);
-
- ClassDB::bind_method("_import_action", &EditorNode::_import_action);
- //ClassDB::bind_method("_import",&EditorNode::_import);
- //ClassDB::bind_method("_import_conflicts_solved",&EditorNode::_import_conflicts_solved);
ClassDB::bind_method("_open_recent_scene", &EditorNode::_open_recent_scene);
- //ClassDB::bind_method("_open_recent_scene_confirm",&EditorNode::_open_recent_scene_confirm);
-
- ClassDB::bind_method("_save_optimized", &EditorNode::_save_optimized);
ClassDB::bind_method("stop_child_process", &EditorNode::stop_child_process);
@@ -5043,8 +4389,6 @@ void EditorNode::_bind_methods() {
ClassDB::bind_method("_dropped_files", &EditorNode::_dropped_files);
ClassDB::bind_method("_toggle_distraction_free_mode", &EditorNode::_toggle_distraction_free_mode);
- // ClassDB::bind_method(D_METHOD("add_editor_import_plugin", "plugin"), &EditorNode::add_editor_import_plugin);
- //ClassDB::bind_method(D_METHOD("remove_editor_import_plugin", "plugin"), &EditorNode::remove_editor_import_plugin);
ClassDB::bind_method(D_METHOD("get_gui_base"), &EditorNode::get_gui_base);
ClassDB::bind_method(D_METHOD("_bottom_panel_switch"), &EditorNode::_bottom_panel_switch);
@@ -5080,7 +4424,7 @@ EditorNode::EditorNode() {
ResourceLoader::clear_translation_remaps(); //no remaps using during editor
editor_initialize_certificates(); //for asset sharing
- InputDefault *id = Input::get_singleton()->cast_to<InputDefault>();
+ InputDefault *id = Object::cast_to<InputDefault>(Input::get_singleton());
if (id) {
@@ -5219,12 +4563,11 @@ EditorNode::EditorNode() {
main_vbox = memnew(VBoxContainer);
gui_base->add_child(main_vbox);
main_vbox->set_area_as_parent_rect(8);
- main_vbox->set_margin(MARGIN_TOP, 5);
+ main_vbox->set_margin(MARGIN_TOP, 5 * EDSCALE);
menu_hb = memnew(HBoxContainer);
main_vbox->add_child(menu_hb);
- //left
left_l_hsplit = memnew(HSplitContainer);
main_vbox->add_child(left_l_hsplit);
@@ -5248,19 +4591,14 @@ EditorNode::EditorNode() {
left_r_vsplit->add_child(dock_slot[DOCK_SLOT_LEFT_UR]);
dock_slot[DOCK_SLOT_LEFT_BR] = memnew(TabContainer);
left_r_vsplit->add_child(dock_slot[DOCK_SLOT_LEFT_BR]);
- //left_r_vsplit->hide();
- //dock_slot[DOCK_SLOT_LEFT_UR]->hide();
- //dock_slot[DOCK_SLOT_LEFT_BR]->hide();
main_hsplit = memnew(HSplitContainer);
left_r_hsplit->add_child(main_hsplit);
- //main_split->set_v_size_flags(Control::SIZE_EXPAND_FILL);
VBoxContainer *center_vb = memnew(VBoxContainer);
main_hsplit->add_child(center_vb);
center_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
center_split = memnew(VSplitContainer);
- //main_hsplit->add_child(center_split);
center_split->set_v_size_flags(Control::SIZE_EXPAND_FILL);
center_split->set_collapsed(false);
center_vb->add_child(center_split);
@@ -5274,9 +4612,6 @@ EditorNode::EditorNode() {
right_l_vsplit->add_child(dock_slot[DOCK_SLOT_RIGHT_UL]);
dock_slot[DOCK_SLOT_RIGHT_BL] = memnew(TabContainer);
right_l_vsplit->add_child(dock_slot[DOCK_SLOT_RIGHT_BL]);
- //right_l_vsplit->hide();
- //dock_slot[DOCK_SLOT_RIGHT_UL]->hide();
- //dock_slot[DOCK_SLOT_RIGHT_BL]->hide();
right_r_vsplit = memnew(VSplitContainer);
right_hsplit->add_child(right_r_vsplit);
@@ -5308,7 +4643,6 @@ EditorNode::EditorNode() {
dock_tab_move_left->set_icon(theme->get_icon("Back", "EditorIcons"));
dock_tab_move_left->set_focus_mode(Control::FOCUS_NONE);
dock_tab_move_left->connect("pressed", this, "_dock_move_left");
- //dock_tab_move_left->set_h_size_flags(Control::SIZE_EXPAND_FILL);
dock_hb->add_child(dock_tab_move_left);
dock_hb->add_spacer();
dock_tab_move_right = memnew(ToolButton);
@@ -5316,7 +4650,6 @@ EditorNode::EditorNode() {
dock_tab_move_right->set_focus_mode(Control::FOCUS_NONE);
dock_tab_move_right->connect("pressed", this, "_dock_move_right");
- //dock_tab_move_right->set_h_size_flags(Control::SIZE_EXPAND_FILL);
dock_hb->add_child(dock_tab_move_right);
dock_vb->add_child(dock_hb);
@@ -5398,36 +4731,20 @@ EditorNode::EditorNode() {
scene_root_parent = memnew(PanelContainer);
scene_root_parent->set_custom_minimum_size(Size2(0, 80) * EDSCALE);
scene_root_parent->add_style_override("panel", gui_base->get_stylebox("Content", "EditorStyles"));
- // sc->add_style_override("panel", gui_base->get_stylebox("Background", "EditorStyles"));
- //Ref<StyleBox> sp = scene_root_parent->get_stylebox("panel","TabContainer");
- //scene_root_parent->add_style_override("panel",sp);
-
- /*scene_root_parent->set_anchor( MARGIN_RIGHT, Control::ANCHOR_END );
- scene_root_parent->set_anchor( MARGIN_BOTTOM, Control::ANCHOR_END );
- scene_root_parent->set_begin( Point2( 0, 0) );
- scene_root_parent->set_end( Point2( 0,80 ) );*/
srt->add_child(scene_root_parent);
scene_root_parent->set_v_size_flags(Control::SIZE_EXPAND_FILL);
scene_root = memnew(Viewport);
scene_root->set_disable_3d(true);
- //scene_root_base->add_child(scene_root);
- //scene_root->set_meta("_editor_disable_input",true);
VisualServer::get_singleton()->viewport_set_hide_scenario(scene_root->get_viewport_rid(), true);
scene_root->set_disable_input(true);
scene_root->set_as_audio_listener_2d(true);
- //scene_root->set_size_override(true,Size2(ProjectSettings::get_singleton()->get("display/width"),ProjectSettings::get_singleton()->get("display/height")));
-
- //scene_root->set_world_2d( Ref<World2D>( memnew( World2D )) );
viewport = memnew(VBoxContainer);
viewport->set_v_size_flags(Control::SIZE_EXPAND_FILL);
viewport->add_constant_override("separation", 0);
- /*for(int i=0;i<4;i++) {
- viewport->set_margin(Margin(i),sp->get_margin(Margin(i)));
- }*/
scene_root_parent->add_child(viewport);
PanelContainer *top_region = memnew(PanelContainer);
@@ -5436,9 +4753,14 @@ 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_text(TTR("Scene"));
- //file_menu->set_icon(gui_base->get_icon("Save","EditorIcons"));
left_menu_hb->add_child(file_menu);
file_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));
@@ -5446,7 +4768,6 @@ EditorNode::EditorNode() {
prev_scene->set_icon(gui_base->get_icon("PrevScene", "EditorIcons"));
prev_scene->set_tooltip(TTR("Go to previously opened scene."));
prev_scene->set_disabled(true);
- //left_menu_hb->add_child( prev_scene );
prev_scene->connect("pressed", this, "_menu_option", make_binds(FILE_OPEN_PREV));
gui_base->add_child(prev_scene);
prev_scene->set_position(Point2(3, 24));
@@ -5494,11 +4815,6 @@ EditorNode::EditorNode() {
p->add_child(recent_scenes);
recent_scenes->connect("id_pressed", this, "_open_recent_scene");
- {
- Control *sp = memnew(Control);
- sp->set_custom_minimum_size(Size2(30, 0) * EDSCALE);
- menu_hb->add_child(sp);
- }
p->add_separator();
p->add_item(TTR("Quit"), FILE_QUIT, KEY_MASK_CMD + KEY_Q);
@@ -5512,7 +4828,7 @@ EditorNode::EditorNode() {
p->add_item(TTR("Project Settings"), RUN_SETTINGS);
p->add_separator();
p->connect("id_pressed", this, "_menu_option");
- p->add_item(TTR("Run Script"), FILE_RUN_SCRIPT, KEY_MASK_SHIFT + KEY_MASK_CMD + KEY_R);
+ //p->add_item(TTR("Run Script"), FILE_RUN_SCRIPT, KEY_MASK_SHIFT + KEY_MASK_CMD + KEY_R);
p->add_item(TTR("Export"), FILE_EXPORT_PROJECT);
PopupMenu *tool_menu = memnew(PopupMenu);
@@ -5532,7 +4848,6 @@ EditorNode::EditorNode() {
PanelContainer *editor_region = memnew(PanelContainer);
main_editor_button_vb = memnew(HBoxContainer);
editor_region->add_child(main_editor_button_vb);
-
menu_hb->add_spacer();
menu_hb->add_child(editor_region);
@@ -5564,12 +4879,9 @@ EditorNode::EditorNode() {
left_menu_hb->add_child(settings_menu);
settings_menu->set_text(TTR("Editor"));
settings_menu->add_style_override("hover", gui_base->get_stylebox("MenuHover", "EditorStyles"));
- //settings_menu->set_anchor(MARGIN_RIGHT,ANCHOR_END);
p = settings_menu->get_popup();
- //p->add_item("Export Settings",SETTINGS_EXPORT_PREFERENCES);
p->add_item(TTR("Editor Settings"), SETTINGS_PREFERENCES);
- //p->add_item("Optimization Presets",SETTINGS_OPTIMIZED_PRESETS);
p->add_separator();
editor_layouts = memnew(PopupMenu);
editor_layouts->set_name("Layouts");
@@ -5624,7 +4936,6 @@ EditorNode::EditorNode() {
pause_button->set_toggle_mode(true);
pause_button->set_icon(gui_base->get_icon("Pause", "EditorIcons"));
pause_button->set_focus_mode(Control::FOCUS_NONE);
- //pause_button->connect("pressed", this,"_menu_option",make_binds(RUN_PAUSE));
pause_button->set_tooltip(TTR("Pause the scene"));
pause_button->set_disabled(true);
play_hb->add_child(pause_button);
@@ -5632,9 +4943,8 @@ EditorNode::EditorNode() {
stop_button = memnew(ToolButton);
play_hb->add_child(stop_button);
- //stop_button->set_toggle_mode(true);
stop_button->set_focus_mode(Control::FOCUS_NONE);
- stop_button->set_icon(gui_base->get_icon("MainStop", "EditorIcons"));
+ stop_button->set_icon(gui_base->get_icon("Stop", "EditorIcons"));
stop_button->connect("pressed", this, "_menu_option", make_binds(RUN_STOP));
stop_button->set_tooltip(TTR("Stop the scene."));
stop_button->set_shortcut(ED_SHORTCUT("editor/stop", TTR("Stop"), KEY_F8));
@@ -5667,23 +4977,8 @@ 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));
progress_hb = memnew(BackgroundProgress);
- //menu_hb->add_child(progress_hb);
-
- {
- Control *sp = memnew(Control);
- sp->set_custom_minimum_size(Size2(30, 0) * EDSCALE);
- //menu_hb->add_child(sp);
- }
- {
- Control *sp = memnew(Control);
- sp->set_custom_minimum_size(Size2(30, 0) * EDSCALE);
- //menu_hb->add_child(sp);
- }
-
- top_region = memnew(PanelContainer);
HBoxContainer *right_menu_hb = memnew(HBoxContainer);
- //top_region->add_child(right_menu_hb);
menu_hb->add_child(right_menu_hb);
layout_dialog = memnew(EditorNameDialog);
@@ -5702,16 +4997,16 @@ EditorNode::EditorNode() {
p->add_check_item(TTR("Update Changes"), SETTINGS_UPDATE_CHANGES);
p->add_separator();
p->add_check_item(TTR("Disable Update Spinner"), SETTINGS_UPDATE_SPINNER_HIDE);
- p->set_item_checked(1, true);
+ int update_always = EditorSettings::get_singleton()->get_project_metadata("editor_options", "update_always", false);
+ int hide_spinner = EditorSettings::get_singleton()->get_project_metadata("editor_options", "update_spinner_hide", false);
+ _menu_option(update_always ? SETTINGS_UPDATE_ALWAYS : SETTINGS_UPDATE_CHANGES);
+ if (hide_spinner) {
+ _menu_option(SETTINGS_UPDATE_SPINNER_HIDE);
+ }
scene_tree_dock = memnew(SceneTreeDock(this, scene_root, editor_selection, editor_data));
scene_tree_dock->set_name(TTR("Scene"));
dock_slot[DOCK_SLOT_RIGHT_UL]->add_child(scene_tree_dock);
-#if 0
- resources_dock = memnew( ResourcesDock(this) );
- resources_dock->set_name("Resources");
- dock_slot[DOCK_SLOT_RIGHT_BL]->add_child(resources_dock);
-#endif
dock_slot[DOCK_SLOT_LEFT_BR]->hide();
VBoxContainer *prop_editor_base = memnew(VBoxContainer);
@@ -5773,8 +5068,8 @@ EditorNode::EditorNode() {
editor_history_menu->get_popup()->connect("id_pressed", this, "_select_history");
prop_editor_hb = memnew(HBoxContainer); //again...
-
prop_editor_base->add_child(prop_editor_hb);
+
editor_path = memnew(EditorPath(&editor_history));
editor_path->set_h_size_flags(Control::SIZE_EXPAND_FILL);
prop_editor_hb->add_child(editor_path);
@@ -5835,7 +5130,6 @@ EditorNode::EditorNode() {
bool use_single_dock_column = (OS::get_singleton()->get_screen_size(OS::get_singleton()->get_current_screen()).x < 1200);
node_dock = memnew(NodeDock);
- //node_dock->set_undoredo(&editor_data.get_undo_redo());
if (use_single_dock_column) {
dock_slot[DOCK_SLOT_RIGHT_UL]->add_child(node_dock);
} else {
@@ -5879,31 +5173,17 @@ EditorNode::EditorNode() {
bottom_panel_vb = memnew(VBoxContainer);
bottom_panel->add_child(bottom_panel_vb);
- //bottom_panel_vb->set_v_size_flags(Control::SIZE_EXPAND_FILL);
bottom_panel_hb = memnew(HBoxContainer);
bottom_panel_vb->add_child(bottom_panel_hb);
log = memnew(EditorLog);
-
add_bottom_panel_item(TTR("Output"), log);
- //left_split->set_dragger_visible(false);
-
old_split_ofs = 0;
center_split->connect("resized", this, "_vp_resized");
- /*PanelContainer *bottom_pc = memnew( PanelContainer );
- srt->add_child(bottom_pc);
- bottom_hb = memnew( HBoxContainer );
- bottom_pc->add_child(bottom_hb);*/
-
- //center_vb->add_child( log->get_button() );
- //log->get_button()->set_h_size_flags(Control::SIZE_EXPAND_FILL);
-
- //progress_hb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
-
orphan_resources = memnew(OrphanResourcesDialog);
gui_base->add_child(orphan_resources);
@@ -5921,23 +5201,9 @@ EditorNode::EditorNode() {
gui_base->add_child(accept);
accept->connect("confirmed", this, "_menu_confirm_current");
- //optimized_save = memnew( OptimizedSaveDialog(&editor_data) );
- //gui_base->add_child(optimized_save);
- //optimized_save->connect("confirmed",this,"_save_optimized");
-
project_export = memnew(ProjectExportDialog);
gui_base->add_child(project_export);
- //project_export_settings = memnew( ProjectExportDialog(this) );
- //gui_base->add_child(project_export_settings);
-
- //optimized_presets = memnew( OptimizedPresetsDialog(&editor_data) );
- //gui_base->add_child(optimized_presets);
- //optimized_presets->connect("confirmed",this,"_presets_optimized");
-
- //import_subscene = memnew( EditorSubScene );
- //gui_base->add_child(import_subscene);
-
dependency_error = memnew(DependencyErrorDialog);
gui_base->add_child(dependency_error);
@@ -5950,14 +5216,6 @@ EditorNode::EditorNode() {
project_settings = memnew(ProjectSettingsEditor(&editor_data));
gui_base->add_child(project_settings);
- import_confirmation = memnew(ConfirmationDialog);
- import_confirmation->get_ok()->set_text(TTR("Re-Import"));
- import_confirmation->add_button(TTR("Update"), !OS::get_singleton()->get_swap_ok_cancel(), "update");
- import_confirmation->get_label()->set_align(Label::ALIGN_CENTER);
- import_confirmation->connect("confirmed", this, "_import_action", make_binds("re-import"));
- import_confirmation->connect("custom_action", this, "_import_action");
- gui_base->add_child(import_confirmation);
-
run_settings_dialog = memnew(RunSettingsDialog);
gui_base->add_child(run_settings_dialog);
@@ -6017,9 +5275,6 @@ EditorNode::EditorNode() {
gui_base->add_child(file_script);
file_script->connect("file_selected", this, "_dialog_action");
- //reimport_dialog = memnew( EditorReImportDialog );
- //gui_base->add_child(reimport_dialog);
-
property_forward->connect("pressed", this, "_property_editor_forward");
property_back->connect("pressed", this, "_property_editor_back");
@@ -6051,14 +5306,19 @@ EditorNode::EditorNode() {
} else {
WARN_PRINT("Asset Library not available, as it requires SSL to work.");
}
+
+ //add interface before adding plugins
+
+ editor_interface = memnew(EditorInterface);
+ add_child(editor_interface);
+
//more visually meaningful to have this later
raise_bottom_panel_item(AnimationPlayerEditor::singleton);
add_editor_plugin(memnew(ShaderEditorPlugin(this)));
- /* add_editor_plugin( memnew( ShaderGraphEditorPlugin(this,true) ) );
- add_editor_plugin( memnew( ShaderGraphEditorPlugin(this,false) ) );
+ // FIXME: Disabled for Godot 3.0 as made incompatible, it needs to be ported to the new API.
+ //add_editor_plugin(memnew(ShaderGraphEditorPlugin(this)));
- add_editor_plugin( memnew( ShaderEditorPlugin(this,false) ) );*/
add_editor_plugin(memnew(CameraEditorPlugin(this)));
add_editor_plugin(memnew(ThemeEditorPlugin(this)));
add_editor_plugin(memnew(MultiMeshEditorPlugin(this)));
@@ -6069,7 +5329,6 @@ EditorNode::EditorNode() {
add_editor_plugin(memnew(ParticlesEditorPlugin(this)));
add_editor_plugin(memnew(ResourcePreloaderEditorPlugin(this)));
add_editor_plugin(memnew(ItemListEditorPlugin(this)));
- //add_editor_plugin( memnew( RichTextEditorPlugin(this) ) );
add_editor_plugin(memnew(CollisionPolygonEditorPlugin(this)));
add_editor_plugin(memnew(CollisionPolygon2DEditorPlugin(this)));
add_editor_plugin(memnew(TileSetEditorPlugin(this)));
@@ -6088,9 +5347,12 @@ EditorNode::EditorNode() {
add_editor_plugin(memnew(CollisionShape2DEditorPlugin(this)));
add_editor_plugin(memnew(CurveEditorPlugin(this)));
add_editor_plugin(memnew(TextureEditorPlugin(this)));
- add_editor_plugin(memnew(AudioBusesEditorPlugin(audio_bus_editor)));
- //add_editor_plugin( memnew( MaterialEditorPlugin(this) ) );
add_editor_plugin(memnew(MeshEditorPlugin(this)));
+ add_editor_plugin(memnew(AudioBusesEditorPlugin(audio_bus_editor)));
+
+ // FIXME: Disabled as (according to reduz) users were complaining that it gets in the way
+ // Waiting for PropertyEditor rewrite (planned for 3.1) to be refactored.
+ //add_editor_plugin(memnew(MaterialEditorPlugin(this)));
for (int i = 0; i < EditorPlugins::get_plugin_count(); i++)
add_editor_plugin(EditorPlugins::create(i, this));
@@ -6103,6 +5365,7 @@ EditorNode::EditorNode() {
resource_preview->add_preview_generator(Ref<EditorPackedScenePreviewPlugin>(memnew(EditorPackedScenePreviewPlugin)));
resource_preview->add_preview_generator(Ref<EditorMaterialPreviewPlugin>(memnew(EditorMaterialPreviewPlugin)));
resource_preview->add_preview_generator(Ref<EditorScriptPreviewPlugin>(memnew(EditorScriptPreviewPlugin)));
+ // FIXME: Needs to be rewritten for AudioStream in Godot 3.0+
//resource_preview->add_preview_generator( Ref<EditorSamplePreviewPlugin>( memnew(EditorSamplePreviewPlugin )));
resource_preview->add_preview_generator(Ref<EditorMeshPreviewPlugin>(memnew(EditorMeshPreviewPlugin)));
resource_preview->add_preview_generator(Ref<EditorBitmapPreviewPlugin>(memnew(EditorBitmapPreviewPlugin)));
@@ -6115,7 +5378,6 @@ EditorNode::EditorNode() {
editor_plugins_over = memnew(EditorPluginList);
editor_plugins_force_input_forwarding = memnew(EditorPluginList);
- //force_top_viewport(true);
_edit_current();
current = NULL;
@@ -6123,41 +5385,18 @@ EditorNode::EditorNode() {
Physics2DServer::get_singleton()->set_active(false); // no physics by default if editor
ScriptServer::set_scripting_enabled(false); // no scripting by default if editor
- //ProjectSettings::get_singleton()->set("render/room_cull_enabled",false);
-
reference_resource_mem = true;
save_external_resources_mem = true;
set_process(true);
- OS::get_singleton()->set_low_processor_usage_mode(true);
-
- if (0) { //not sure if i want this to happen after all
-
- //store project name in ssettings
- String project_name;
- //figure it out from path
- project_name = ProjectSettings::get_singleton()->get_resource_path().replace("\\", "/");
- print_line("path: " + project_name);
- if (project_name.length() && project_name[project_name.length() - 1] == '/')
- project_name = project_name.substr(0, project_name.length() - 1);
-
- project_name = project_name.replace("/", "::");
-
- if (project_name != "") {
- EditorSettings::get_singleton()->set("projects/" + project_name, ProjectSettings::get_singleton()->get_resource_path());
- EditorSettings::get_singleton()->raise_order("projects/" + project_name);
- EditorSettings::get_singleton()->save();
- }
- }
open_imported = memnew(ConfirmationDialog);
open_imported->get_ok()->set_text(TTR("Open Anyway"));
- new_inherited_button = open_imported->add_button("New Inherited", !OS::get_singleton()->get_swap_ok_cancel(), "inherit");
+ new_inherited_button = open_imported->add_button(TTR("New Inherited"), !OS::get_singleton()->get_swap_ok_cancel(), "inherit");
open_imported->connect("confirmed", this, "_open_imported");
open_imported->connect("custom_action", this, "_inherit_imported");
gui_base->add_child(open_imported);
- //edited_scene=NULL;
saved_version = 1;
unsaved_cache = true;
_last_instanced_scene = NULL;
@@ -6178,17 +5417,12 @@ EditorNode::EditorNode() {
set_process_unhandled_input(true);
_playing_edited = false;
- //Panel *errors = memnew( Panel );
load_errors = memnew(RichTextLabel);
- //load_errors->set_readonly(true);
load_error_dialog = memnew(AcceptDialog);
load_error_dialog->add_child(load_errors);
load_error_dialog->set_title(TTR("Load Errors"));
- //load_error_dialog->set_child_rect(load_errors);
gui_base->add_child(load_error_dialog);
- //EditorImport::add_importer( Ref<EditorImporterCollada>( memnew(EditorImporterCollada )));
-
EditorFileSystem::get_singleton()->connect("sources_changed", this, "_sources_changed");
EditorFileSystem::get_singleton()->connect("filesystem_changed", this, "_fs_changed");
@@ -6208,12 +5442,9 @@ EditorNode::EditorNode() {
pick_main_scene = memnew(ConfirmationDialog);
gui_base->add_child(pick_main_scene);
- pick_main_scene->get_ok()->set_text("Select");
+ pick_main_scene->get_ok()->set_text(TTR("Select"));
pick_main_scene->connect("confirmed", this, "_menu_option", varray(SETTINGS_PICK_MAIN_SCENE));
- //Ref<ImageTexture> it = gui_base->get_icon("logo","Icons");
- //OS::get_singleton()->set_icon( it->get_data() );
-
for (int i = 0; i < _init_callbacks.size(); i++)
_init_callbacks[i]();
@@ -6224,7 +5455,6 @@ EditorNode::EditorNode() {
import_dock->initialize_import_options();
{
-
_initializing_addons = true;
Vector<String> addons;
if (ProjectSettings::get_singleton()->has("editor_plugins/enabled")) {
@@ -6266,6 +5496,7 @@ EditorNode::~EditorNode() {
memdelete(editor_plugins_over);
memdelete(editor_plugins_force_input_forwarding);
memdelete(file_server);
+ memdelete(progress_hb);
EditorSettings::destroy();
}
diff --git a/editor/editor_node.h b/editor/editor_node.h
index a440aaa1e6..445ef4922e 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,21 +30,38 @@
#ifndef EDITOR_NODE_H
#define EDITOR_NODE_H
-#include "editor/call_dialog.h"
#include "editor/connections_dialog.h"
#include "editor/create_dialog.h"
#include "editor/editor_about.h"
#include "editor/editor_data.h"
+#include "editor/editor_export.h"
+#include "editor/editor_log.h"
+#include "editor/editor_name_dialog.h"
#include "editor/editor_path.h"
+#include "editor/editor_plugin.h"
+#include "editor/editor_resource_preview.h"
#include "editor/editor_run.h"
+#include "editor/editor_run_native.h"
+#include "editor/editor_run_script.h"
+#include "editor/editor_scale.h"
+#include "editor/editor_sub_scene.h"
#include "editor/export_template_manager.h"
+#include "editor/fileserver/editor_file_server.h"
#include "editor/filesystem_dock.h"
#include "editor/groups_editor.h"
#include "editor/import_dock.h"
#include "editor/node_dock.h"
+#include "editor/pane_drag.h"
+#include "editor/progress_dialog.h"
+#include "editor/project_export.h"
+#include "editor/project_settings_editor.h"
#include "editor/property_editor.h"
+#include "editor/quick_open.h"
#include "editor/reparent_dialog.h"
+#include "editor/run_settings_dialog.h"
+#include "editor/scene_tree_dock.h"
#include "editor/scene_tree_editor.h"
+#include "editor/script_create_dialog.h"
#include "editor/settings_config_dialog.h"
#include "scene/gui/center_container.h"
#include "scene/gui/control.h"
@@ -56,45 +73,19 @@
#include "scene/gui/separator.h"
#include "scene/gui/split_container.h"
#include "scene/gui/tab_container.h"
+#include "scene/gui/tabs.h"
#include "scene/gui/texture_progress.h"
#include "scene/gui/tool_button.h"
#include "scene/gui/tree.h"
-
-#include "editor/pane_drag.h"
-
-#include "editor/editor_log.h"
-#include "editor/editor_run_script.h"
-#include "editor/project_export.h"
-#include "editor/project_settings_editor.h"
-#include "editor/resources_dock.h"
-#include "editor/run_settings_dialog.h"
-#include "editor/scene_tree_dock.h"
-#include "editor/script_create_dialog.h"
-
-#include "editor/editor_name_dialog.h"
-#include "editor/editor_plugin.h"
-#include "editor/editor_run_native.h"
-#include "editor/editor_sub_scene.h"
-#include "editor/project_export.h"
-#include "editor/quick_open.h"
-#include "editor_export.h"
-#include "editor_reimport_dialog.h"
-#include "scene/gui/tabs.h"
-
-#include "editor_resource_preview.h"
-#include "fileserver/editor_file_server.h"
#include "scene/gui/viewport_container.h"
-#include "progress_dialog.h"
-
-#include "editor_scale.h"
/**
@author Juan Linietsky <reduzio@gmail.com>
*/
typedef void (*EditorNodeInitCallback)();
typedef void (*EditorPluginInitializeCallback)();
-typedef void (*EditorBuildCallback)();
+typedef bool (*EditorBuildCallback)();
class EditorPluginList;
@@ -138,7 +129,6 @@ private:
FILE_OPEN_OLD_SCENE,
FILE_QUICK_OPEN_SCENE,
FILE_QUICK_OPEN_SCRIPT,
- FILE_RUN_SCRIPT,
FILE_OPEN_PREV,
FILE_CLOSE,
FILE_CLOSE_ALL_AND_QUIT,
@@ -170,7 +160,6 @@ private:
RUN_SETTINGS,
RUN_PROJECT_MANAGER,
RUN_FILE_SERVER,
- //RUN_DEPLOY_DUMB_CLIENTS,
RUN_LIVE_DEBUG,
RUN_DEBUG_COLLISONS,
RUN_DEBUG_NAVIGATION,
@@ -181,7 +170,6 @@ private:
SETTINGS_UPDATE_SPINNER_HIDE,
SETTINGS_EXPORT_PREFERENCES,
SETTINGS_PREFERENCES,
- SETTINGS_OPTIMIZED_PRESETS,
SETTINGS_LAYOUT_SAVE,
SETTINGS_LAYOUT_DELETE,
SETTINGS_LAYOUT_DEFAULT,
@@ -189,9 +177,6 @@ private:
SETTINGS_PICK_MAIN_SCENE,
SETTINGS_TOGGLE_FULLSCREN,
SETTINGS_HELP,
- SOURCES_REIMPORT,
- DEPENDENCY_LOAD_CHANGED_IMAGES,
- DEPENDENCY_UPDATE_IMPORTED,
SCENE_TAB_CLOSE,
HELP_CLASSES,
@@ -209,11 +194,8 @@ private:
TOOL_MENU_BASE = 1000
};
- //Node *edited_scene; //scene being edited
Viewport *scene_root; //root of the scene being edited
- //Ref<ResourceImportMetadata> scene_import_metadata;
-
PanelContainer *scene_root_parent;
Control *theme_base;
Control *gui_base;
@@ -247,7 +229,6 @@ private:
HBoxContainer *bottom_hb;
Control *vp_base;
PaneDrag *pd;
- //PaneDrag *pd_anim;
CenterContainer *play_cc;
HBoxContainer *menu_hb;
@@ -269,19 +250,16 @@ private:
ToolButton *play_custom_scene_button;
ToolButton *search_button;
TextureProgress *audio_vu;
- //MenuButton *fileserver_menu;
RichTextLabel *load_errors;
AcceptDialog *load_error_dialog;
- //Control *scene_root_base;
Ref<Theme> theme;
PopupMenu *recent_scenes;
Button *property_back;
Button *property_forward;
SceneTreeDock *scene_tree_dock;
- //ResourcesDock *resources_dock;
PropertyEditor *property_editor;
NodeDock *node_dock;
ImportDock *import_dock;
@@ -294,7 +272,6 @@ private:
CreateDialog *create_dialog;
- //CallDialog *call_dialog;
ConfirmationDialog *confirmation;
ConfirmationDialog *save_confirmation;
ConfirmationDialog *import_confirmation;
@@ -308,7 +285,6 @@ private:
PopupMenu *editor_layouts;
EditorNameDialog *layout_dialog;
- //OptimizedPresetsDialog *optimized_presets;
EditorSettingsDialog *settings_config_dialog;
RunSettingsDialog *run_settings_dialog;
ProjectSettingsEditor *project_settings;
@@ -343,8 +319,6 @@ private:
Vector<ToolButton *> main_editor_buttons;
Vector<EditorPlugin *> editor_table;
- // EditorReImportDialog *reimport_dialog;
-
ProgressDialog *progress_dialog;
BackgroundProgress *progress_hb;
@@ -402,7 +376,6 @@ private:
EditorData editor_data;
EditorRun editor_run;
EditorSelection *editor_selection;
- // ProjectExport *project_export;
ProjectExportDialog *project_export;
EditorResourcePreview *resource_preview;
@@ -420,6 +393,8 @@ private:
HBoxContainer *bottom_panel_hb;
VBoxContainer *bottom_panel_vb;
+ EditorInterface *editor_interface;
+
void _bottom_panel_switch(bool p_enable, int p_idx);
String external_file;
@@ -429,10 +404,10 @@ private:
void _dialog_action(String p_file);
void _edit_current();
- void _dialog_display_file_error(String p_file, Error p_error);
+ void _dialog_display_save_error(String p_file, Error p_error);
+ void _dialog_display_load_error(String p_file, Error p_error);
int current_option;
- //void _animation_visibility_toggle();
void _resource_created();
void _resource_selected(const RES &p_res, const String &p_property = "");
void _menu_option(int p_option);
@@ -448,7 +423,6 @@ private:
void _fs_changed();
void _sources_changed(bool p_exist);
- void _imported(Node *p_node);
void _node_renamed();
void _editor_select_next();
@@ -489,7 +463,6 @@ private:
void _update_recent_scenes();
void _open_recent_scene(int p_idx);
void _dropped_files(const Vector<String> &p_files, int p_screen);
- //void _open_recent_scene_confirm();
String _recent_scene;
bool convert_old;
@@ -500,8 +473,6 @@ private:
bool has_main_screen() const { return true; }
- bool _find_editing_changed_scene(Node *p_from);
-
String import_reload_fn;
Set<FileDialog *> file_dialogs;
@@ -539,7 +510,7 @@ private:
}
struct ExportDefer {
- String platform;
+ String preset;
String path;
bool debug;
String password;
@@ -578,10 +549,9 @@ private:
void _save_docks_to_config(Ref<ConfigFile> p_layout, const String &p_section);
void _load_docks_from_config(Ref<ConfigFile> p_layout, const String &p_section);
void _update_dock_slots_visibility();
- void _update_top_menu_visibility();
void _update_layouts_menu();
- void _layout_menu_option(int p_idx);
+ void _layout_menu_option(int p_id);
void _toggle_search_bar(bool p_pressed);
void _clear_search_box();
@@ -605,7 +575,7 @@ private:
static EditorPluginInitializeCallback plugin_init_callbacks[MAX_INIT_CALLBACKS];
void _save_default_environment();
- void _call_build();
+ bool _call_build();
static int build_callback_count;
static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS];
@@ -684,6 +654,8 @@ public:
void merge_from_scene() { _menu_option_confirm(FILE_IMPORT_SUBSCENE, false); }
+ void show_about() { _menu_option_confirm(HELP_ABOUT, false); }
+
static bool has_unsaved_changes() { return singleton->unsaved_cache; }
static HBoxContainer *get_menu_hb() { return singleton->menu_hb; }
@@ -697,10 +669,6 @@ public:
static EditorLog *get_log() { return singleton->log; }
Control *get_viewport();
- //void animation_editor_make_visible(bool p_visible);
- //void hide_animation_player_editors();
- //void animation_panel_make_visible(bool p_visible);
-
void set_edited_scene(Node *p_scene);
Node *get_edited_scene() { return editor_data.get_edited_scene_root(); }
@@ -742,7 +710,7 @@ public:
void show_warning(const String &p_text, const String &p_title = "Warning!");
- Error export_platform(const String &p_platform, const String &p_path, bool p_debug, const String &p_password, bool p_quit_after = false);
+ Error export_preset(const String &p_platform, const String &p_path, bool p_debug, const String &p_password, bool p_quit_after = false);
static void register_editor_types();
static void unregister_editor_types();
@@ -760,7 +728,12 @@ public:
static void progress_task_step_bg(const String &p_task, int p_step = -1);
static void progress_end_task_bg(const String &p_task);
- void save_scene(String p_file) { _save_scene(p_file); }
+ void save_scene_to_path(String p_file, bool p_with_preview = true) {
+ if (p_with_preview)
+ _save_scene_with_preview(p_file);
+ else
+ _save_scene(p_file);
+ }
bool is_scene_in_use(const String &p_path);
@@ -851,4 +824,4 @@ struct EditorProgressBG {
~EditorProgressBG() { EditorNode::progress_end_task_bg(task); }
};
-#endif
+#endif // EDITOR_NODE_H
diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp
index fdac68ea1f..92768dfe91 100644
--- a/editor/editor_path.cpp
+++ b/editor/editor_path.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -139,9 +139,9 @@ void EditorPath::_notification(int p_what) {
if (left < 0)
continue;
String name;
- if (obj->cast_to<Resource>()) {
+ if (Object::cast_to<Resource>(obj)) {
- Resource *r = obj->cast_to<Resource>();
+ Resource *r = Object::cast_to<Resource>(obj);
if (r->get_path().is_resource_file())
name = r->get_path().get_file();
else
@@ -149,11 +149,11 @@ void EditorPath::_notification(int p_what) {
if (name == "")
name = r->get_class();
- } else if (obj->cast_to<Node>()) {
+ } else if (Object::cast_to<Node>(obj)) {
- name = obj->cast_to<Node>()->get_name();
- } else if (obj->cast_to<Resource>() && obj->cast_to<Resource>()->get_name() != "") {
- name = obj->cast_to<Resource>()->get_name();
+ name = Object::cast_to<Node>(obj)->get_name();
+ } else if (Object::cast_to<Resource>(obj) && Object::cast_to<Resource>(obj)->get_name() != "") {
+ name = Object::cast_to<Resource>(obj)->get_name();
} else {
name = obj->get_class();
}
diff --git a/editor/editor_path.h b/editor/editor_path.h
index 7b73e7ebb6..c79968c5e3 100644
--- a/editor/editor_path.h
+++ b/editor/editor_path.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp
index 19c77ef737..86acfcc50e 100644
--- a/editor/editor_plugin.cpp
+++ b/editor/editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,55 +32,133 @@
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
#include "editor_resource_preview.h"
+#include "main/main.h"
#include "plugins/canvas_item_editor_plugin.h"
#include "plugins/spatial_editor_plugin.h"
#include "scene/3d/camera.h"
#include "scene/gui/popup_menu.h"
+#include "servers/visual_server.h"
+Array EditorInterface::_make_mesh_previews(const Array &p_meshes, int p_preview_size) {
-void EditorPlugin::add_custom_type(const String &p_type, const String &p_base, const Ref<Script> &p_script, const Ref<Texture> &p_icon) {
+ Vector<Ref<Mesh> > meshes;
- EditorNode::get_editor_data().add_custom_type(p_type, p_base, p_script, p_icon);
-}
+ for (int i = 0; i < p_meshes.size(); i++) {
+ meshes.push_back(p_meshes[i]);
+ }
-void EditorPlugin::remove_custom_type(const String &p_type) {
+ Vector<Ref<Texture> > textures = make_mesh_previews(meshes, p_preview_size);
+ Array ret;
+ for (int i = 0; i < textures.size(); i++) {
+ ret.push_back(textures[i]);
+ }
- EditorNode::get_editor_data().remove_custom_type(p_type);
+ return ret;
}
-ToolButton *EditorPlugin::add_control_to_bottom_panel(Control *p_control, const String &p_title) {
+Vector<Ref<Texture> > EditorInterface::make_mesh_previews(const Vector<Ref<Mesh> > &p_meshes, int p_preview_size) {
- return EditorNode::get_singleton()->add_bottom_panel_item(p_title, p_control);
-}
+ int size = p_preview_size;
-void EditorPlugin::add_control_to_dock(DockSlot p_slot, Control *p_control) {
+ RID scenario = VS::get_singleton()->scenario_create();
- ERR_FAIL_NULL(p_control);
- EditorNode::get_singleton()->add_control_to_dock(EditorNode::DockSlot(p_slot), p_control);
-}
+ RID viewport = VS::get_singleton()->viewport_create();
+ VS::get_singleton()->viewport_set_update_mode(viewport, VS::VIEWPORT_UPDATE_ALWAYS);
+ VS::get_singleton()->viewport_set_vflip(viewport, true);
+ VS::get_singleton()->viewport_set_scenario(viewport, scenario);
+ VS::get_singleton()->viewport_set_size(viewport, size, size);
+ VS::get_singleton()->viewport_set_transparent_background(viewport, true);
+ VS::get_singleton()->viewport_set_active(viewport, true);
+ RID viewport_texture = VS::get_singleton()->viewport_get_texture(viewport);
-void EditorPlugin::remove_control_from_docks(Control *p_control) {
+ RID camera = VS::get_singleton()->camera_create();
+ VS::get_singleton()->viewport_attach_camera(viewport, camera);
+ VS::get_singleton()->camera_set_transform(camera, Transform(Basis(), Vector3(0, 0, 3)));
+ //VS::get_singleton()->camera_set_perspective(camera,45,0.1,10);
+ VS::get_singleton()->camera_set_orthogonal(camera, 1.0, 0.01, 1000.0);
- ERR_FAIL_NULL(p_control);
- EditorNode::get_singleton()->remove_control_from_dock(p_control);
-}
+ RID light = VS::get_singleton()->light_create(VS::LIGHT_DIRECTIONAL);
+ RID light_instance = VS::get_singleton()->instance_create2(light, scenario);
+ VS::get_singleton()->instance_set_transform(light_instance, Transform().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
-void EditorPlugin::remove_control_from_bottom_panel(Control *p_control) {
+ RID light2 = VS::get_singleton()->light_create(VS::LIGHT_DIRECTIONAL);
+ VS::get_singleton()->light_set_color(light2, Color(0.7, 0.7, 0.7));
+ //VS::get_singleton()->light_set_color(light2, VS::LIGHT_COLOR_SPECULAR, Color(0.0, 0.0, 0.0));
+ RID light_instance2 = VS::get_singleton()->instance_create2(light2, scenario);
- ERR_FAIL_NULL(p_control);
- EditorNode::get_singleton()->remove_bottom_panel_item(p_control);
+ VS::get_singleton()->instance_set_transform(light_instance2, Transform().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
+
+ //sphere = VS::get_singleton()->mesh_create();
+ RID mesh_instance = VS::get_singleton()->instance_create();
+ VS::get_singleton()->instance_set_scenario(mesh_instance, scenario);
+
+ EditorProgress ep("mlib", TTR("Creating Mesh Previews"), p_meshes.size());
+
+ Vector<Ref<Texture> > textures;
+
+ for (int i = 0; i < p_meshes.size(); i++) {
+
+ Ref<Mesh> mesh = p_meshes[i];
+ if (!mesh.is_valid()) {
+ textures.push_back(Ref<Texture>());
+ continue;
+ }
+ Rect3 aabb = mesh->get_aabb();
+ print_line("aabb: " + aabb);
+ Vector3 ofs = aabb.position + aabb.size * 0.5;
+ aabb.position -= ofs;
+ Transform xform;
+ xform.basis = Basis().rotated(Vector3(0, 1, 0), -Math_PI * 0.25);
+ xform.basis = Basis().rotated(Vector3(1, 0, 0), Math_PI * 0.25) * xform.basis;
+ Rect3 rot_aabb = xform.xform(aabb);
+ print_line("rot_aabb: " + rot_aabb);
+ float m = MAX(rot_aabb.size.x, rot_aabb.size.y) * 0.5;
+ if (m == 0)
+ continue;
+ m = 1.0 / m;
+ m *= 0.5;
+ print_line("scale: " + rtos(m));
+ xform.basis.scale(Vector3(m, m, m));
+ xform.origin = -xform.basis.xform(ofs); //-ofs*m;
+ xform.origin.z -= rot_aabb.size.z * 2;
+ RID inst = VS::get_singleton()->instance_create2(mesh->get_rid(), scenario);
+ VS::get_singleton()->instance_set_transform(inst, xform);
+ ep.step(TTR("Thumbnail.."), i);
+ Main::iteration();
+ Main::iteration();
+ Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture);
+ ERR_CONTINUE(!img.is_valid() || img->empty());
+ Ref<ImageTexture> it(memnew(ImageTexture));
+ it->create_from_image(img);
+
+ //print_line("loaded image, size: "+rtos(m)+" dist: "+rtos(dist)+" empty?"+itos(img.empty())+" w: "+itos(it->get_width())+" h: "+itos(it->get_height()));
+ VS::get_singleton()->free(inst);
+
+ textures.push_back(it);
+ }
+
+ VS::get_singleton()->free(mesh_instance);
+ VS::get_singleton()->free(viewport);
+ VS::get_singleton()->free(light);
+ VS::get_singleton()->free(light_instance);
+ VS::get_singleton()->free(light2);
+ VS::get_singleton()->free(light_instance2);
+ VS::get_singleton()->free(camera);
+ VS::get_singleton()->free(scenario);
+
+ return textures;
}
-Control *EditorPlugin::get_editor_viewport() {
+Control *EditorInterface::get_editor_viewport() {
return EditorNode::get_singleton()->get_viewport();
}
-void EditorPlugin::edit_resource(const Ref<Resource> &p_resource) {
+void EditorInterface::edit_resource(const Ref<Resource> &p_resource) {
EditorNode::get_singleton()->edit_resource(p_resource);
}
-void EditorPlugin::open_scene_from_path(const String &scene_path) {
+void EditorInterface::open_scene_from_path(const String &scene_path) {
if (EditorNode::get_singleton()->is_changing_scene()) {
return;
@@ -89,7 +167,7 @@ void EditorPlugin::open_scene_from_path(const String &scene_path) {
EditorNode::get_singleton()->open_request(scene_path);
}
-void EditorPlugin::reload_scene_from_path(const String &scene_path) {
+void EditorInterface::reload_scene_from_path(const String &scene_path) {
if (EditorNode::get_singleton()->is_changing_scene()) {
return;
@@ -98,6 +176,130 @@ void EditorPlugin::reload_scene_from_path(const String &scene_path) {
EditorNode::get_singleton()->reload_scene(scene_path);
}
+Node *EditorInterface::get_edited_scene_root() {
+ return EditorNode::get_singleton()->get_edited_scene();
+}
+
+Array EditorInterface::get_open_scenes() const {
+
+ Array ret;
+ Vector<EditorData::EditedScene> scenes = EditorNode::get_singleton()->get_editor_data().get_edited_scenes();
+
+ int scns_amount = scenes.size();
+ for (int idx_scn = 0; idx_scn < scns_amount; idx_scn++) {
+ if (scenes[idx_scn].root == NULL)
+ continue;
+ ret.push_back(scenes[idx_scn].root->get_filename());
+ }
+ return ret;
+}
+
+ScriptEditor *EditorInterface::get_script_editor() {
+ return ScriptEditor::get_singleton();
+}
+
+void EditorInterface::inspect_object(Object *p_obj, const String &p_for_property) {
+
+ EditorNode::get_singleton()->push_item(p_obj, p_for_property);
+}
+
+EditorFileSystem *EditorInterface::get_resource_file_system() {
+ return EditorFileSystem::get_singleton();
+}
+
+EditorSelection *EditorInterface::get_selection() {
+ return EditorNode::get_singleton()->get_editor_selection();
+}
+
+EditorSettings *EditorInterface::get_editor_settings() {
+ return EditorSettings::get_singleton();
+}
+
+EditorResourcePreview *EditorInterface::get_resource_previewer() {
+ return EditorResourcePreview::get_singleton();
+}
+
+Control *EditorInterface::get_base_control() {
+
+ return EditorNode::get_singleton()->get_gui_base();
+}
+
+Error EditorInterface::save_scene() {
+ if (!get_edited_scene_root())
+ return ERR_CANT_CREATE;
+ if (get_edited_scene_root()->get_filename() == String())
+ return ERR_CANT_CREATE;
+
+ save_scene_as(get_edited_scene_root()->get_filename());
+ return OK;
+}
+
+void EditorInterface::save_scene_as(const String &p_scene, bool p_with_preview) {
+
+ EditorNode::get_singleton()->save_scene_to_path(p_scene, p_with_preview);
+}
+
+EditorInterface *EditorInterface::singleton = NULL;
+
+void EditorInterface::_bind_methods() {
+
+ ClassDB::bind_method(D_METHOD("inspect_object", "object", "for_property"), &EditorInterface::inspect_object, DEFVAL(String()));
+ ClassDB::bind_method(D_METHOD("get_selection"), &EditorInterface::get_selection);
+ ClassDB::bind_method(D_METHOD("get_editor_settings"), &EditorInterface::get_editor_settings);
+ ClassDB::bind_method(D_METHOD("get_script_editor"), &EditorInterface::get_script_editor);
+ ClassDB::bind_method(D_METHOD("get_base_control"), &EditorInterface::get_base_control);
+ ClassDB::bind_method(D_METHOD("edit_resource", "resource"), &EditorInterface::edit_resource);
+ ClassDB::bind_method(D_METHOD("open_scene_from_path", "scene_filepath"), &EditorInterface::open_scene_from_path);
+ ClassDB::bind_method(D_METHOD("reload_scene_from_path", "scene_filepath"), &EditorInterface::reload_scene_from_path);
+ ClassDB::bind_method(D_METHOD("get_open_scenes"), &EditorInterface::get_open_scenes);
+ ClassDB::bind_method(D_METHOD("get_edited_scene_root"), &EditorInterface::get_edited_scene_root);
+ ClassDB::bind_method(D_METHOD("get_resource_previewer"), &EditorInterface::get_resource_previewer);
+ ClassDB::bind_method(D_METHOD("get_resource_filesystem"), &EditorInterface::get_resource_file_system);
+ ClassDB::bind_method(D_METHOD("get_editor_viewport"), &EditorInterface::get_editor_viewport);
+ ClassDB::bind_method(D_METHOD("make_mesh_previews"), &EditorInterface::_make_mesh_previews);
+
+ ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene);
+ ClassDB::bind_method(D_METHOD("save_scene_as", "path", "with_preview"), &EditorInterface::save_scene_as, DEFVAL(true));
+}
+
+EditorInterface::EditorInterface() {
+ singleton = this;
+}
+
+///////////////////////////////////////////
+void EditorPlugin::add_custom_type(const String &p_type, const String &p_base, const Ref<Script> &p_script, const Ref<Texture> &p_icon) {
+
+ EditorNode::get_editor_data().add_custom_type(p_type, p_base, p_script, p_icon);
+}
+
+void EditorPlugin::remove_custom_type(const String &p_type) {
+
+ EditorNode::get_editor_data().remove_custom_type(p_type);
+}
+
+ToolButton *EditorPlugin::add_control_to_bottom_panel(Control *p_control, const String &p_title) {
+
+ return EditorNode::get_singleton()->add_bottom_panel_item(p_title, p_control);
+}
+
+void EditorPlugin::add_control_to_dock(DockSlot p_slot, Control *p_control) {
+
+ ERR_FAIL_NULL(p_control);
+ EditorNode::get_singleton()->add_control_to_dock(EditorNode::DockSlot(p_slot), p_control);
+}
+
+void EditorPlugin::remove_control_from_docks(Control *p_control) {
+
+ ERR_FAIL_NULL(p_control);
+ EditorNode::get_singleton()->remove_control_from_dock(p_control);
+}
+
+void EditorPlugin::remove_control_from_bottom_panel(Control *p_control) {
+
+ ERR_FAIL_NULL(p_control);
+ EditorNode::get_singleton()->remove_bottom_panel_item(p_control);
+}
+
void EditorPlugin::add_control_to_container(CustomControlContainer p_location, Control *p_control) {
switch (p_location) {
@@ -155,7 +357,7 @@ void EditorPlugin::add_tool_menu_item(const String &p_name, Object *p_handler, c
void EditorPlugin::add_tool_submenu_item(const String &p_name, Object *p_submenu) {
ERR_FAIL_NULL(p_submenu);
- PopupMenu *submenu = p_submenu->cast_to<PopupMenu>();
+ PopupMenu *submenu = Object::cast_to<PopupMenu>(p_submenu);
ERR_FAIL_NULL(submenu);
//EditorNode::get_singleton()->add_tool_submenu_item(p_name, submenu);
}
@@ -171,28 +373,6 @@ void EditorPlugin::set_input_event_forwarding_always_enabled() {
always_input_forwarding_list->add_plugin(this);
}
-Node *EditorPlugin::get_edited_scene_root() {
- return EditorNode::get_singleton()->get_edited_scene();
-}
-
-Array EditorPlugin::get_open_scenes() const {
-
- Array ret;
- Vector<EditorData::EditedScene> scenes = EditorNode::get_singleton()->get_editor_data().get_edited_scenes();
-
- int scns_amount = scenes.size();
- for (int idx_scn = 0; idx_scn < scns_amount; idx_scn++) {
- if (scenes[idx_scn].root == NULL)
- continue;
- ret.push_back(scenes[idx_scn].root->get_filename());
- }
- return ret;
-}
-
-ScriptEditor *EditorPlugin::get_script_editor() {
- return ScriptEditor::get_singleton();
-}
-
void EditorPlugin::notify_scene_changed(const Node *scn_root) {
if (scn_root == NULL) return;
emit_signal("scene_changed", scn_root);
@@ -249,8 +429,8 @@ bool EditorPlugin::forward_spatial_gui_input(Camera *p_camera, const Ref<InputEv
}
String EditorPlugin::get_name() const {
- if (get_script_instance() && get_script_instance()->has_method("get_name")) {
- return get_script_instance()->call("get_name");
+ if (get_script_instance() && get_script_instance()->has_method("get_plugin_name")) {
+ return get_script_instance()->call("get_plugin_name");
}
return String();
@@ -369,23 +549,6 @@ void EditorPlugin::queue_save_layout() const {
EditorNode::get_singleton()->save_layout();
}
-EditorSelection *EditorPlugin::get_selection() {
- return EditorNode::get_singleton()->get_editor_selection();
-}
-
-EditorSettings *EditorPlugin::get_editor_settings() {
- return EditorSettings::get_singleton();
-}
-
-EditorResourcePreview *EditorPlugin::get_resource_previewer() {
- return EditorResourcePreview::get_singleton();
-}
-
-Control *EditorPlugin::get_base_control() {
-
- return EditorNode::get_singleton()->get_gui_base();
-}
-
void EditorPlugin::make_bottom_panel_item_visible(Control *p_item) {
EditorNode::get_singleton()->make_bottom_panel_item_visible(p_item);
@@ -396,13 +559,8 @@ void EditorPlugin::hide_bottom_panel() {
EditorNode::get_singleton()->hide_bottom_panel();
}
-void EditorPlugin::inspect_object(Object *p_obj, const String &p_for_property) {
-
- EditorNode::get_singleton()->push_item(p_obj, p_for_property);
-}
-
-EditorFileSystem *EditorPlugin::get_resource_file_system() {
- return EditorFileSystem::get_singleton();
+EditorInterface *EditorPlugin::get_editor_interface() {
+ return EditorInterface::get_singleton();
}
void EditorPlugin::_bind_methods() {
@@ -417,40 +575,28 @@ void EditorPlugin::_bind_methods() {
//ClassDB::bind_method(D_METHOD("remove_tool_menu_item", "name"),&EditorPlugin::remove_tool_menu_item);
ClassDB::bind_method(D_METHOD("add_custom_type", "type", "base", "script", "icon"), &EditorPlugin::add_custom_type);
ClassDB::bind_method(D_METHOD("remove_custom_type", "type"), &EditorPlugin::remove_custom_type);
- ClassDB::bind_method(D_METHOD("get_editor_viewport"), &EditorPlugin::get_editor_viewport);
- ClassDB::bind_method(D_METHOD("get_resource_previewer"), &EditorPlugin::get_resource_previewer);
- ClassDB::bind_method(D_METHOD("get_resource_filesystem"), &EditorPlugin::get_resource_file_system);
-
- ClassDB::bind_method(D_METHOD("inspect_object", "object", "for_property"), &EditorPlugin::inspect_object, DEFVAL(String()));
ClassDB::bind_method(D_METHOD("update_canvas"), &EditorPlugin::update_canvas);
ClassDB::bind_method(D_METHOD("make_bottom_panel_item_visible", "item"), &EditorPlugin::make_bottom_panel_item_visible);
ClassDB::bind_method(D_METHOD("hide_bottom_panel"), &EditorPlugin::hide_bottom_panel);
- ClassDB::bind_method(D_METHOD("get_base_control"), &EditorPlugin::get_base_control);
ClassDB::bind_method(D_METHOD("get_undo_redo"), &EditorPlugin::_get_undo_redo);
- ClassDB::bind_method(D_METHOD("get_selection"), &EditorPlugin::get_selection);
- ClassDB::bind_method(D_METHOD("get_editor_settings"), &EditorPlugin::get_editor_settings);
- ClassDB::bind_method(D_METHOD("get_script_editor"), &EditorPlugin::get_script_editor);
ClassDB::bind_method(D_METHOD("queue_save_layout"), &EditorPlugin::queue_save_layout);
- ClassDB::bind_method(D_METHOD("edit_resource", "resource"), &EditorPlugin::edit_resource);
- ClassDB::bind_method(D_METHOD("open_scene_from_path", "scene_filepath"), &EditorPlugin::open_scene_from_path);
- ClassDB::bind_method(D_METHOD("reload_scene_from_path", "scene_filepath"), &EditorPlugin::reload_scene_from_path);
ClassDB::bind_method(D_METHOD("add_import_plugin", "importer"), &EditorPlugin::add_import_plugin);
ClassDB::bind_method(D_METHOD("remove_import_plugin", "importer"), &EditorPlugin::remove_import_plugin);
ClassDB::bind_method(D_METHOD("set_input_event_forwarding_always_enabled"), &EditorPlugin::set_input_event_forwarding_always_enabled);
- ClassDB::bind_method(D_METHOD("get_open_scenes"), &EditorPlugin::get_open_scenes);
- ClassDB::bind_method(D_METHOD("get_edited_scene_root"), &EditorPlugin::get_edited_scene_root);
+
+ ClassDB::bind_method(D_METHOD("get_editor_interface"), &EditorPlugin::get_editor_interface);
ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_canvas_gui_input", PropertyInfo(Variant::TRANSFORM2D, "canvas_xform"), PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo("forward_draw_over_canvas", PropertyInfo(Variant::TRANSFORM2D, "canvas_xform"), PropertyInfo(Variant::OBJECT, "canvas:Control")));
+ ClassDB::add_virtual_method(get_class_static(), MethodInfo("forward_draw_over_canvas", PropertyInfo(Variant::TRANSFORM2D, "canvas_xform"), PropertyInfo(Variant::OBJECT, "canvas", PROPERTY_HINT_RESOURCE_TYPE, "Control")));
ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_spatial_gui_input", PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera"), PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
- MethodInfo gizmo = MethodInfo(Variant::OBJECT, "create_spatial_gizmo", PropertyInfo(Variant::OBJECT, "for_spatial:Spatial"));
+ MethodInfo gizmo = MethodInfo(Variant::OBJECT, "create_spatial_gizmo", PropertyInfo(Variant::OBJECT, "for_spatial", PROPERTY_HINT_RESOURCE_TYPE, "Spatial"));
gizmo.return_val.hint = PROPERTY_HINT_RESOURCE_TYPE;
gizmo.return_val.hint_string = "EditorSpatialGizmo";
ClassDB::add_virtual_method(get_class_static(), gizmo);
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::STRING, "get_name"));
+ ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::STRING, "get_plugin_name"));
ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "has_main_screen"));
ClassDB::add_virtual_method(get_class_static(), MethodInfo("make_visible", PropertyInfo(Variant::BOOL, "visible")));
ClassDB::add_virtual_method(get_class_static(), MethodInfo("edit", PropertyInfo(Variant::OBJECT, "object")));
@@ -464,27 +610,27 @@ void EditorPlugin::_bind_methods() {
ClassDB::add_virtual_method(get_class_static(), MethodInfo("set_window_layout", PropertyInfo(Variant::OBJECT, "layout", PROPERTY_HINT_RESOURCE_TYPE, "ConfigFile")));
ClassDB::add_virtual_method(get_class_static(), MethodInfo("get_window_layout", PropertyInfo(Variant::OBJECT, "layout", PROPERTY_HINT_RESOURCE_TYPE, "ConfigFile")));
- ADD_SIGNAL(MethodInfo("scene_changed", PropertyInfo(Variant::OBJECT, "scene_root:Node")));
- ADD_SIGNAL(MethodInfo("scene_closed", PropertyInfo(Variant::STRING, "filepath:String")));
- ADD_SIGNAL(MethodInfo("main_screen_changed", PropertyInfo(Variant::STRING, "screen_name:String")));
-
- BIND_CONSTANT(CONTAINER_TOOLBAR);
- BIND_CONSTANT(CONTAINER_SPATIAL_EDITOR_MENU);
- BIND_CONSTANT(CONTAINER_SPATIAL_EDITOR_SIDE);
- BIND_CONSTANT(CONTAINER_SPATIAL_EDITOR_BOTTOM);
- BIND_CONSTANT(CONTAINER_CANVAS_EDITOR_MENU);
- BIND_CONSTANT(CONTAINER_CANVAS_EDITOR_SIDE);
- BIND_CONSTANT(CONTAINER_PROPERTY_EDITOR_BOTTOM);
-
- BIND_CONSTANT(DOCK_SLOT_LEFT_UL);
- BIND_CONSTANT(DOCK_SLOT_LEFT_BL);
- BIND_CONSTANT(DOCK_SLOT_LEFT_UR);
- BIND_CONSTANT(DOCK_SLOT_LEFT_BR);
- BIND_CONSTANT(DOCK_SLOT_RIGHT_UL);
- BIND_CONSTANT(DOCK_SLOT_RIGHT_BL);
- BIND_CONSTANT(DOCK_SLOT_RIGHT_UR);
- BIND_CONSTANT(DOCK_SLOT_RIGHT_BR);
- BIND_CONSTANT(DOCK_SLOT_MAX);
+ ADD_SIGNAL(MethodInfo("scene_changed", PropertyInfo(Variant::OBJECT, "scene_root", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
+ ADD_SIGNAL(MethodInfo("scene_closed", PropertyInfo(Variant::STRING, "filepath")));
+ ADD_SIGNAL(MethodInfo("main_screen_changed", PropertyInfo(Variant::STRING, "screen_name")));
+
+ BIND_ENUM_CONSTANT(CONTAINER_TOOLBAR);
+ BIND_ENUM_CONSTANT(CONTAINER_SPATIAL_EDITOR_MENU);
+ BIND_ENUM_CONSTANT(CONTAINER_SPATIAL_EDITOR_SIDE);
+ BIND_ENUM_CONSTANT(CONTAINER_SPATIAL_EDITOR_BOTTOM);
+ BIND_ENUM_CONSTANT(CONTAINER_CANVAS_EDITOR_MENU);
+ BIND_ENUM_CONSTANT(CONTAINER_CANVAS_EDITOR_SIDE);
+ BIND_ENUM_CONSTANT(CONTAINER_PROPERTY_EDITOR_BOTTOM);
+
+ BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_UL);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_BL);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_UR);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_BR);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_RIGHT_UL);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_RIGHT_BL);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_RIGHT_UR);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_RIGHT_BR);
+ BIND_ENUM_CONSTANT(DOCK_SLOT_MAX);
}
EditorPlugin::EditorPlugin() {
diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h
index 0baa373b42..99328f8149 100644
--- a/editor/editor_plugin.h
+++ b/editor/editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -55,6 +55,44 @@ class EditorFileSystem;
class EditorToolAddons;
class ScriptEditor;
+class EditorInterface : public Node {
+ GDCLASS(EditorInterface, Node)
+protected:
+ static void _bind_methods();
+ static EditorInterface *singleton;
+
+ Array _make_mesh_previews(const Array &p_meshes, int p_preview_size);
+
+public:
+ static EditorInterface *get_singleton() { return singleton; }
+
+ Control *get_editor_viewport();
+ void edit_resource(const Ref<Resource> &p_resource);
+ void open_scene_from_path(const String &scene_path);
+ void reload_scene_from_path(const String &scene_path);
+
+ Node *get_edited_scene_root();
+ Array get_open_scenes() const;
+ ScriptEditor *get_script_editor();
+
+ void inspect_object(Object *p_obj, const String &p_for_property = String());
+
+ EditorSelection *get_selection();
+ //EditorImportExport *get_import_export();
+ EditorSettings *get_editor_settings();
+ EditorResourcePreview *get_resource_previewer();
+ EditorFileSystem *get_resource_file_system();
+
+ Control *get_base_control();
+
+ Error save_scene();
+ void save_scene_as(const String &p_scene, bool p_with_preview = true);
+
+ Vector<Ref<Texture> > make_mesh_previews(const Vector<Ref<Mesh> > &p_meshes, int p_preview_size);
+
+ EditorInterface();
+};
+
class EditorPlugin : public Node {
GDCLASS(EditorPlugin, Node);
@@ -105,10 +143,6 @@ public:
void add_control_to_dock(DockSlot p_slot, Control *p_control);
void remove_control_from_docks(Control *p_control);
void remove_control_from_bottom_panel(Control *p_control);
- Control *get_editor_viewport();
- void edit_resource(const Ref<Resource> &p_resource);
- void open_scene_from_path(const String &scene_path);
- void reload_scene_from_path(const String &scene_path);
void add_tool_menu_item(const String &p_name, Object *p_handler, const String &p_callback, const Variant &p_ud = Variant());
void add_tool_submenu_item(const String &p_name, Object *p_submenu);
@@ -117,10 +151,6 @@ public:
void set_input_event_forwarding_always_enabled();
bool is_input_event_forwarding_always_enabled() { return input_event_forwarding_always_enabled; }
- Node *get_edited_scene_root();
- Array get_open_scenes() const;
- ScriptEditor *get_script_editor();
-
void notify_main_screen_changed(const String &screen_name);
void notify_scene_changed(const Node *scn_root);
void notify_scene_closed(const String &scene_filepath);
@@ -134,7 +164,7 @@ public:
virtual void make_visible(bool p_visible);
virtual void selected_notify() {} //notify that it was raised by the user, not the editor
virtual void edit(Object *p_object);
- virtual bool handles(Object *p_node) const;
+ virtual bool handles(Object *p_object) const;
virtual Dictionary get_state() const; //save editor state so it can't be reloaded when reloading scene
virtual void set_state(const Dictionary &p_state); //restore editor state (likely was saved with the scene)
virtual void clear(); // clear any temporary data in te editor, reset it (likely new scene or load another scene)
@@ -146,23 +176,15 @@ public:
virtual void get_window_layout(Ref<ConfigFile> p_layout);
virtual void edited_scene_changed() {} // if changes are pending in editor, apply them
- void update_canvas();
+ EditorInterface *get_editor_interface();
- virtual void inspect_object(Object *p_obj, const String &p_for_property = String());
+ void update_canvas();
void queue_save_layout() const;
- Control *get_base_control();
-
void make_bottom_panel_item_visible(Control *p_item);
void hide_bottom_panel();
- EditorSelection *get_selection();
- //EditorImportExport *get_import_export();
- EditorSettings *get_editor_settings();
- EditorResourcePreview *get_resource_previewer();
- EditorFileSystem *get_resource_file_system();
-
virtual void restore_global_state();
virtual void save_global_state();
diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp
index 712a3ac001..6732d7048f 100644
--- a/editor/editor_plugin_settings.cpp
+++ b/editor/editor_plugin_settings.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_plugin_settings.h b/editor/editor_plugin_settings.h
index 472be4c007..f24b2b8781 100644
--- a/editor/editor_plugin_settings.h
+++ b/editor/editor_plugin_settings.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp
index 78bc99caae..6b972262b9 100644
--- a/editor/editor_profiler.cpp
+++ b/editor/editor_profiler.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_profiler.h b/editor/editor_profiler.h
index 4998d45a89..e2d781f125 100644
--- a/editor/editor_profiler.h
+++ b/editor/editor_profiler.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_reimport_dialog.cpp b/editor/editor_reimport_dialog.cpp
deleted file mode 100644
index 4b71f7046f..0000000000
--- a/editor/editor_reimport_dialog.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/*************************************************************************/
-/* editor_reimport_dialog.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_reimport_dialog.h"
-
-#include "editor_file_system.h"
-#include "editor_node.h"
-
-#if 0
-void EditorReImportDialog::popup_reimport() {
-
- if (EditorFileSystem::get_singleton()->is_scanning()) {
- error->set_text(TTR("Please wait for scan to complete."));
- error->popup_centered_minsize();
- return;
- }
-
- tree->clear();
- items.clear();
- List<String> ril;
- EditorFileSystem::get_singleton()->get_changed_sources(&ril);
-
- scene_must_save=false;
-
-
- TreeItem *root = tree->create_item();
- for(List<String>::Element *E=ril.front();E;E=E->next()) {
-
- TreeItem *item = tree->create_item(root);
- item->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
- item->set_metadata(0,E->get());
- item->set_text(0,E->get().replace_first("res://",""));
- item->set_tooltip(0,E->get());
- item->set_checked(0,true);
- item->set_editable(0,true);
- items.push_back(item);
-
- String name = E->get();
-
- if (EditorFileSystem::get_singleton()->get_file_type(name)=="PackedScene" && EditorNode::get_singleton()->is_scene_in_use(name)) {
-
- scene_must_save=true;
- }
- }
-
-
- if (scene_must_save) {
- if (EditorNode::get_singleton()->get_edited_scene() && EditorNode::get_singleton()->get_edited_scene()->get_filename()=="") {
-
- error->set_text(TTR("Current scene must be saved to re-import."));
- error->popup_centered_minsize();
- get_ok()->set_text(TTR("Re-Import"));
- get_ok()->set_disabled(true);
- return;
-
- }
- get_ok()->set_disabled(false);
- get_ok()->set_text(TTR("Save & Re-Import"));
- } else {
- get_ok()->set_text(TTR("Re-Import"));
- get_ok()->set_disabled(false);
- }
-
- popup_centered(Size2(600,400));
-
-
-}
-
-
-void EditorReImportDialog::ok_pressed() {
-
- if (EditorFileSystem::get_singleton()->is_scanning()) {
- error->set_text(TTR("Please wait for scan to complete."));
- error->popup_centered_minsize();
- return;
- }
-
-
-
- EditorProgress ep("reimport",TTR("Re-Importing"),items.size());
- String reload_fname;
- if (scene_must_save && EditorNode::get_singleton()->get_edited_scene()) {
- reload_fname = EditorNode::get_singleton()->get_edited_scene()->get_filename();
- EditorNode::get_singleton()->save_scene(reload_fname);
- EditorNode::get_singleton()->clear_scene();
- }
-
- for(int i=0;i<items.size();i++) {
-
- String it = items[i]->get_metadata(0);
- ep.step(items[i]->get_text(0),i);
- print_line("reload import from: "+it);
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(it);
- ERR_CONTINUE(rimd.is_null());
- String editor = rimd->get_editor();
- Ref<EditorImportPlugin> eip = EditorImportExport::get_singleton()->get_import_plugin_by_name(editor);
- ERR_CONTINUE(eip.is_null());
- Error err = eip->import(it,rimd);
- if (err!=OK) {
- EditorNode::add_io_error("Error Importing:\n "+it);
- }
-
- }
- if (reload_fname!="") {
- EditorNode::get_singleton()->load_scene(reload_fname);
- }
-
- EditorFileSystem::get_singleton()->scan_sources();
-}
-
-EditorReImportDialog::EditorReImportDialog() {
-
- tree = memnew( Tree );
- add_child(tree);
- tree->set_hide_root(true);
- //set_child_rect(tree);
- set_title(TTR("Re-Import Changed Resources"));
- error = memnew( AcceptDialog);
- add_child(error);
- scene_must_save=false;
-
-}
-#endif
diff --git a/editor/editor_reimport_dialog.h b/editor/editor_reimport_dialog.h
deleted file mode 100644
index b067630ded..0000000000
--- a/editor/editor_reimport_dialog.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*************************************************************************/
-/* editor_reimport_dialog.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_REIMPORT_DIALOG_H
-#define EDITOR_REIMPORT_DIALOG_H
-
-#if 0
-#include "scene/gui/dialogs.h"
-#include "scene/gui/tree.h"
-
-class EditorReImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorReImportDialog,ConfirmationDialog);
-
- Tree *tree;
- Vector<TreeItem*> items;
- AcceptDialog *error;
- bool scene_must_save;
-
- void ok_pressed();
-public:
-
- void popup_reimport();
- EditorReImportDialog();
-};
-
-#endif // EDITOR_REIMPORT_DIALOG_H
-#endif
diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp
index dcfe68b286..437ad5ac3f 100644
--- a/editor/editor_resource_preview.cpp
+++ b/editor/editor_resource_preview.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -69,8 +69,8 @@ Ref<Texture> EditorResourcePreviewGenerator::generate_from_path(const String &p_
void EditorResourcePreviewGenerator::_bind_methods() {
ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "handles", PropertyInfo(Variant::STRING, "type")));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::OBJECT, "generate:Texture", PropertyInfo(Variant::OBJECT, "from", PROPERTY_HINT_RESOURCE_TYPE, "Resource")));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::OBJECT, "generate_from_path:Texture", PropertyInfo(Variant::STRING, "path", PROPERTY_HINT_FILE)));
+ ClassDB::add_virtual_method(get_class_static(), MethodInfo(CLASS_INFO(Texture), "generate", PropertyInfo(Variant::OBJECT, "from", PROPERTY_HINT_RESOURCE_TYPE, "Resource")));
+ ClassDB::add_virtual_method(get_class_static(), MethodInfo(CLASS_INFO(Texture), "generate_from_path", PropertyInfo(Variant::STRING, "path", PROPERTY_HINT_FILE)));
}
EditorResourcePreviewGenerator::EditorResourcePreviewGenerator() {
@@ -180,11 +180,13 @@ void EditorResourcePreview::_thread() {
if (cache.has(item.path)) {
//already has it because someone loaded it, just let it know it's ready
+ String path = item.path;
if (item.resource.is_valid()) {
- item.path += ":" + itos(cache[item.path].last_hash); //keep last hash (see description of what this is in condition below)
+ path += ":" + itos(cache[item.path].last_hash); //keep last hash (see description of what this is in condition below)
}
- _preview_ready(item.path, cache[item.path].preview, item.id, item.function, item.userdata);
+ print_line("cached: " + item.path);
+ _preview_ready(path, cache[item.path].preview, item.id, item.function, item.userdata);
preview_mutex->unlock();
} else {
@@ -199,12 +201,16 @@ void EditorResourcePreview::_thread() {
if (item.resource.is_valid()) {
+ print_line("generated: " + item.path);
+
texture = _generate_preview(item, String());
//adding hash to the end of path (should be ID:<objid>:<hash>) because of 5 argument limit to call_deferred
_preview_ready(item.path + ":" + itos(item.resource->hash_edited_version()), texture, item.id, item.function, item.userdata);
} else {
+ print_line("from file: " + item.path);
+
String temp_path = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp");
String cache_base = ProjectSettings::get_singleton()->globalize_path(item.path).md5_text();
cache_base = temp_path.plus_file("resthumb-" + cache_base);
diff --git a/editor/editor_resource_preview.h b/editor/editor_resource_preview.h
index 1bfa094a38..60eaee9c5e 100644
--- a/editor/editor_resource_preview.h
+++ b/editor/editor_resource_preview.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -115,8 +115,8 @@ public:
static EditorResourcePreview *get_singleton();
//callback function is callback(String p_path,Ref<Texture> preview,Variant udata) preview null if could not load
- void queue_resource_preview(const String &p_res, Object *p_receiver, const StringName &p_receiver_func, const Variant &p_userdata);
- void queue_edited_resource_preview(const Ref<Resource> &p_path, Object *p_receiver, const StringName &p_receiver_func, const Variant &p_userdata);
+ void queue_resource_preview(const String &p_path, Object *p_receiver, const StringName &p_receiver_func, const Variant &p_userdata);
+ void queue_edited_resource_preview(const Ref<Resource> &p_res, Object *p_receiver, const StringName &p_receiver_func, const Variant &p_userdata);
void add_preview_generator(const Ref<EditorResourcePreviewGenerator> &p_generator);
void remove_preview_generator(const Ref<EditorResourcePreviewGenerator> &p_generator);
diff --git a/editor/editor_run.cpp b/editor/editor_run.cpp
index 4954b1f741..e377fa1a8e 100644
--- a/editor/editor_run.cpp
+++ b/editor/editor_run.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -45,28 +45,27 @@ Error EditorRun::run(const String &p_scene, const String p_custom_args, const Li
int remote_port = (int)EditorSettings::get_singleton()->get("network/debug/remote_port");
if (resource_path != "") {
- args.push_back("-path");
+ args.push_back("--path");
args.push_back(resource_path.replace(" ", "%20"));
}
if (true) {
- args.push_back("-rdebug");
+ args.push_back("--remote-debug");
args.push_back(remote_host + ":" + String::num(remote_port));
}
- args.push_back("-epid");
- args.push_back(String::num(OS::get_singleton()->get_process_id()));
+ args.push_back("--allow_focus_steal_pid");
+ args.push_back(itos(OS::get_singleton()->get_process_id()));
if (debug_collisions) {
- args.push_back("-debugcol");
+ args.push_back("--debug-collisions");
}
if (debug_navigation) {
- args.push_back("-debugnav");
+ args.push_back("--debug-navigation");
}
int screen = EditorSettings::get_singleton()->get("run/window_placement/screen");
-
if (screen == 0) {
screen = OS::get_singleton()->get_current_screen();
} else {
@@ -78,7 +77,6 @@ Error EditorRun::run(const String &p_scene, const String p_custom_args, const Li
screen_rect.size = OS::get_singleton()->get_screen_size(screen);
Size2 desired_size;
-
desired_size.x = ProjectSettings::get_singleton()->get("display/window/size/width");
desired_size.y = ProjectSettings::get_singleton()->get("display/window/size/height");
@@ -93,41 +91,41 @@ Error EditorRun::run(const String &p_scene, const String p_custom_args, const Li
int window_placement = EditorSettings::get_singleton()->get("run/window_placement/rect");
switch (window_placement) {
- case 0: { // default
+ case 0: { // top left
- args.push_back("-p");
- args.push_back(itos(screen_rect.position.x) + "x" + itos(screen_rect.position.y));
+ args.push_back("--position");
+ args.push_back(itos(screen_rect.position.x) + "," + itos(screen_rect.position.y));
} break;
case 1: { // centered
Vector2 pos = screen_rect.position + ((screen_rect.size - desired_size) / 2).floor();
- args.push_back("-p");
- args.push_back(itos(pos.x) + "x" + itos(pos.y));
+ args.push_back("--position");
+ args.push_back(itos(pos.x) + "," + itos(pos.y));
} break;
case 2: { // custom pos
Vector2 pos = EditorSettings::get_singleton()->get("run/window_placement/rect_custom_position");
pos += screen_rect.position;
- args.push_back("-p");
- args.push_back(itos(pos.x) + "x" + itos(pos.y));
+ args.push_back("--position");
+ args.push_back(itos(pos.x) + "," + itos(pos.y));
} break;
case 3: { // force maximized
Vector2 pos = screen_rect.position;
- args.push_back("-p");
- args.push_back(itos(pos.x) + "x" + itos(pos.y));
- args.push_back("-mx");
+ args.push_back("--position");
+ args.push_back(itos(pos.x) + "," + itos(pos.y));
+ args.push_back("--maximized");
} break;
case 4: { // force fullscreen
Vector2 pos = screen_rect.position;
- args.push_back("-p");
- args.push_back(itos(pos.x) + "x" + itos(pos.y));
- args.push_back("-f");
+ args.push_back("--position");
+ args.push_back(itos(pos.x) + "," + itos(pos.y));
+ args.push_back("--fullscreen");
} break;
}
if (p_breakpoints.size()) {
- args.push_back("-bp");
+ args.push_back("--breakpoints");
String bpoints;
for (const List<String>::Element *E = p_breakpoints.front(); E; E = E->next()) {
@@ -152,7 +150,7 @@ Error EditorRun::run(const String &p_scene, const String p_custom_args, const Li
String exec = OS::get_singleton()->get_executable_path();
- printf("running: %ls", exec.c_str());
+ printf("Running: %ls", exec.c_str());
for (List<String>::Element *E = args.front(); E; E = E->next()) {
printf(" %ls", E->get().c_str());
diff --git a/editor/editor_run.h b/editor/editor_run.h
index aa698ffad1..3745a76ea3 100644
--- a/editor/editor_run.h
+++ b/editor/editor_run.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp
index 52b7e6992d..95700915d5 100644
--- a/editor/editor_run_native.cpp
+++ b/editor/editor_run_native.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -80,7 +80,7 @@ void EditorRunNative::_notification(int p_what) {
} else {
mb->get_popup()->clear();
mb->show();
- mb->set_tooltip("Select device from the list");
+ mb->set_tooltip(TTR("Select device from the list"));
for (int i = 0; i < dc; i++) {
mb->get_popup()->add_icon_item(get_icon("Play", "EditorIcons"), eep->get_device_name(i));
mb->get_popup()->set_item_tooltip(mb->get_popup()->get_item_count() - 1, eep->get_device_info(i).strip_edges());
@@ -118,7 +118,7 @@ void EditorRunNative::_run_native(int p_idx, int p_platform) {
}
if (preset.is_null()) {
- EditorNode::get_singleton()->show_warning("No runnable export preset found for this platform.\nPlease add a runnable preset in the export menu.");
+ EditorNode::get_singleton()->show_warning(TTR("No runnable export preset found for this platform.\nPlease add a runnable preset in the export menu."));
return;
}
diff --git a/editor/editor_run_native.h b/editor/editor_run_native.h
index 9dcfd88eb8..de0cec7f34 100644
--- a/editor/editor_run_native.h
+++ b/editor/editor_run_native.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_run_script.cpp b/editor/editor_run_script.cpp
index 8bd1b8f4fd..87eba78a3e 100644
--- a/editor/editor_run_script.cpp
+++ b/editor/editor_run_script.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -46,6 +46,11 @@ void EditorScript::add_root_node(Node *p_node) {
//editor->set_edited_scene(p_node);
}
+EditorInterface *EditorScript::get_editor_interface() {
+
+ return EditorInterface::get_singleton();
+}
+
Node *EditorScript::get_scene() {
if (!editor) {
@@ -83,6 +88,7 @@ void EditorScript::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_root_node", "node"), &EditorScript::add_root_node);
ClassDB::bind_method(D_METHOD("get_scene"), &EditorScript::get_scene);
+ ClassDB::bind_method(D_METHOD("get_editor_interface"), &EditorScript::get_editor_interface);
BIND_VMETHOD(MethodInfo("_run"));
}
diff --git a/editor/editor_run_script.h b/editor/editor_run_script.h
index 2c3b4b85ce..52905ccc86 100644
--- a/editor/editor_run_script.h
+++ b/editor/editor_run_script.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,8 +30,8 @@
#ifndef EDITOR_RUN_SCRIPT_H
#define EDITOR_RUN_SCRIPT_H
+#include "editor_plugin.h"
#include "reference.h"
-
class EditorNode;
class EditorScript : public Reference {
@@ -45,7 +45,7 @@ protected:
public:
void add_root_node(Node *p_node);
Node *get_scene();
-
+ EditorInterface *get_editor_interface();
virtual void _run();
void set_editor(EditorNode *p_editor);
diff --git a/editor/editor_scale.cpp b/editor/editor_scale.cpp
index 1238cbb405..6b4d6192f5 100644
--- a/editor/editor_scale.cpp
+++ b/editor/editor_scale.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_scale.h b/editor/editor_scale.h
index 953be2ef81..a47539dc31 100644
--- a/editor/editor_scale.h
+++ b/editor/editor_scale.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 07af60d634..6398bd1623 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -29,23 +29,23 @@
/*************************************************************************/
#include "editor_settings.h"
-#include "editor_node.h"
-#include "io/compression.h"
-#include "io/config_file.h"
-#include "io/file_access_memory.h"
-#include "io/resource_loader.h"
-#include "io/resource_saver.h"
-#include "io/translation_loader_po.h"
-#include "os/dir_access.h"
-#include "os/file_access.h"
-#include "os/keyboard.h"
-#include "os/os.h"
-#include "project_settings.h"
+#include "core/io/compression.h"
+#include "core/io/config_file.h"
+#include "core/io/file_access_memory.h"
+#include "core/io/resource_loader.h"
+#include "core/io/resource_saver.h"
+#include "core/io/translation_loader_po.h"
+#include "core/os/dir_access.h"
+#include "core/os/file_access.h"
+#include "core/os/keyboard.h"
+#include "core/os/os.h"
+#include "core/project_settings.h"
+#include "core/version.h"
+#include "editor/editor_node.h"
+#include "editor/translations.gen.h"
#include "scene/main/node.h"
#include "scene/main/scene_tree.h"
#include "scene/main/viewport.h"
-#include "translations.gen.h"
-#include "version.h"
Ref<EditorSettings> EditorSettings::singleton = NULL;
@@ -93,6 +93,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) {
emit_signal("settings_changed");
return true;
}
+
bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const {
_THREAD_SAFE_METHOD_
@@ -216,6 +217,12 @@ Variant _EDITOR_DEF(const String &p_var, const Variant &p_default) {
return p_default;
}
+Variant _EDITOR_GET(const String &p_var) {
+
+ ERR_FAIL_COND_V(!EditorSettings::get_singleton()->has(p_var), Variant())
+ return EditorSettings::get_singleton()->get(p_var);
+}
+
static Dictionary _get_builtin_script_templates() {
Dictionary templates;
@@ -246,13 +253,14 @@ static void _create_script_templates(const String &p_path) {
dir->change_dir(p_path);
for (int i = 0; i < keys.size(); i++) {
if (!dir->file_exists(keys[i])) {
- file->reopen(p_path.plus_file((String)keys[i]), FileAccess::WRITE);
- ERR_FAIL_COND(!file);
+ Error err = file->reopen(p_path.plus_file((String)keys[i]), FileAccess::WRITE);
+ ERR_FAIL_COND(err != OK);
file->store_string(templates[keys[i]]);
file->close();
}
}
+ memdelete(dir);
memdelete(file);
}
@@ -266,7 +274,6 @@ void EditorSettings::create() {
String config_path;
String config_dir;
- //String config_file="editor_settings.xml";
Ref<ConfigFile> extra_config = memnew(ConfigFile);
String exe_path = OS::get_singleton()->get_executable_path().get_base_dir();
@@ -280,6 +287,7 @@ void EditorSettings::create() {
self_contained = true;
extra_config->load(exe_path + "/_sc_");
}
+ memdelete(d);
if (self_contained) {
// editor is self contained
@@ -593,6 +601,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
hints["text_editor/theme/color_theme"] = PropertyInfo(Variant::STRING, "text_editor/theme/color_theme", PROPERTY_HINT_ENUM, "Default");
set("text_editor/theme/line_spacing", 4);
+ set("text_editor/theme/adapted_code_editor_background_color", true);
_load_default_text_editor_theme();
@@ -615,6 +624,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
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, 10");
+ set("text_editor/open_scripts/smooth_scrolling", true);
+ set("text_editor/open_scripts/v_scroll_speed", 80);
set("text_editor/open_scripts/show_members_overview", true);
set("text_editor/files/trim_trailing_whitespace_on_save", false);
@@ -635,7 +646,6 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
set("text_editor/files/maximum_recent_files", 20);
hints["text_editor/files/maximum_recent_files"] = PropertyInfo(Variant::INT, "text_editor/files/maximum_recent_files", PROPERTY_HINT_RANGE, "1, 200, 0");
- //set("docks/scene_tree/display_old_action_buttons",false);
set("docks/scene_tree/start_create_dialog_fully_expanded", false);
set("docks/scene_tree/draw_relationship_lines", false);
set("docks/scene_tree/relationship_line_color", Color::html("464646"));
@@ -663,6 +673,9 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
set("editors/3d/emulate_3_button_mouse", false);
set("editors/3d/warped_mouse_panning", true);
+ set("editors/3d/orbit_sensitivity", 0.4);
+ set("editors/3d/freelook_inertia", 3);
+
set("editors/3d/freelook_base_speed", 1);
set("editors/3d/freelook_activation_modifier", 0);
@@ -681,9 +694,10 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
set("editors/2d/pan_speed", 20);
set("editors/poly_editor/point_grab_radius", 8);
+ set("editors/poly_editor/show_previous_outline", true);
set("run/window_placement/rect", 1);
- hints["run/window_placement/rect"] = PropertyInfo(Variant::INT, "run/window_placement/rect", PROPERTY_HINT_ENUM, "Default,Centered,Custom Position,Force Maximized,Force Full Screen");
+ 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 = TTR("Default (Same as Editor)");
for (int i = 0; i < OS::get_singleton()->get_screen_count(); i++) {
screen_hints += ",Monitor " + itos(i + 1);
@@ -694,8 +708,6 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
set("filesystem/on_save/compress_binary_resources", true);
set("filesystem/on_save/save_modified_external_resources", true);
- //set("filesystem/on_save/save_paths_as_relative",false);
- //set("filesystem/on_save/save_paths_without_extension",false);
set("text_editor/tools/create_signal_callbacks", true);
@@ -721,11 +733,10 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
set("filesystem/import/pvrtc_texture_tool", "");
#ifdef WINDOWS_ENABLED
- hints["filesystem/import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "*.exe");
+ hints["filesystem/import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "filesystem/import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "*.exe");
#else
- hints["import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "");
+ hints["filesystem/import/pvrtc_texture_tool"] = PropertyInfo(Variant::STRING, "filesystem/import/pvrtc_texture_tool", PROPERTY_HINT_GLOBAL_FILE, "");
#endif
- // TODO: Rename to "filesystem/import/pvrtc_fast_conversion" to match other names?
set("filesystem/import/pvrtc_fast_conversion", false);
set("run/auto_save/save_before_running", true);
@@ -800,10 +811,7 @@ void EditorSettings::notify_changes() {
_THREAD_SAFE_METHOD_
- SceneTree *sml = NULL;
-
- if (OS::get_singleton()->get_main_loop())
- sml = OS::get_singleton()->get_main_loop()->cast_to<SceneTree>();
+ SceneTree *sml = Object::cast_to<SceneTree>(OS::get_singleton()->get_main_loop());
if (!sml) {
return;
@@ -843,9 +851,9 @@ void EditorSettings::add_property_hint(const PropertyInfo &p_hint) {
hints[p_hint.name] = p_hint;
}
-void EditorSettings::set_favorite_dirs(const Vector<String> &p_favorites) {
+void EditorSettings::set_favorite_dirs(const Vector<String> &p_favorites_dirs) {
- favorite_dirs = p_favorites;
+ favorite_dirs = p_favorites_dirs;
FileAccess *f = FileAccess::open(get_project_settings_path().plus_file("favorite_dirs"), FileAccess::WRITE);
if (f) {
for (int i = 0; i < favorite_dirs.size(); i++)
@@ -859,9 +867,9 @@ Vector<String> EditorSettings::get_favorite_dirs() const {
return favorite_dirs;
}
-void EditorSettings::set_recent_dirs(const Vector<String> &p_recent) {
+void EditorSettings::set_recent_dirs(const Vector<String> &p_recent_dirs) {
- recent_dirs = p_recent;
+ recent_dirs = p_recent_dirs;
FileAccess *f = FileAccess::open(get_project_settings_path().plus_file("recent_dirs"), FileAccess::WRITE);
if (f) {
for (int i = 0; i < recent_dirs.size(); i++)
@@ -1144,7 +1152,6 @@ void EditorSettings::_bind_methods() {
EditorSettings::EditorSettings() {
- //singleton=this;
last_order = 0;
optimize_save = true;
save_changed_setting = true;
@@ -1174,8 +1181,6 @@ EditorSettings::EditorSettings() {
}
EditorSettings::~EditorSettings() {
-
- //singleton=NULL;
}
Ref<ShortCut> ED_GET_SHORTCUT(const String &p_path) {
diff --git a/editor/editor_settings.h b/editor/editor_settings.h
index d5adb84b63..177ec4760d 100644
--- a/editor/editor_settings.h
+++ b/editor/editor_settings.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -35,7 +35,7 @@
#include "core/io/config_file.h"
#include "os/thread_safe.h"
#include "resource.h"
-#include "scene/gui/input_action.h"
+#include "scene/gui/shortcut.h"
#include "translation.h"
class EditorPlugin;
@@ -145,7 +145,7 @@ public:
void add_property_hint(const PropertyInfo &p_hint);
- void set_favorite_dirs(const Vector<String> &p_favorite_dirs);
+ void set_favorite_dirs(const Vector<String> &p_favorites_dirs);
Vector<String> get_favorite_dirs() const;
void set_recent_dirs(const Vector<String> &p_recent_dirs);
@@ -180,6 +180,9 @@ public:
#define EDITOR_DEF(m_var, m_val) _EDITOR_DEF(m_var, Variant(m_val))
Variant _EDITOR_DEF(const String &p_var, const Variant &p_default);
+#define EDITOR_GET(m_var) _EDITOR_GET(m_var)
+Variant _EDITOR_GET(const String &p_var);
+
#define ED_IS_SHORTCUT(p_name, p_ev) (EditorSettings::get_singleton()->is_shortcut(p_name, p_ev))
Ref<ShortCut> ED_SHORTCUT(const String &p_path, const String &p_name, uint32_t p_keycode = 0);
Ref<ShortCut> ED_GET_SHORTCUT(const String &p_path);
diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp
index c107d3687e..b81dfd3f46 100644
--- a/editor/editor_sub_scene.cpp
+++ b/editor/editor_sub_scene.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_sub_scene.h b/editor/editor_sub_scene.h
index 3a11a13b53..13ce19bbb2 100644
--- a/editor/editor_sub_scene.h
+++ b/editor/editor_sub_scene.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index 7b1a6a8e27..aa2b8913df 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -31,9 +31,11 @@
#include "core/io/resource_loader.h"
#include "editor_fonts.h"
-#include "editor_icons.h"
+#include "editor_icons.gen.h"
#include "editor_scale.h"
#include "editor_settings.h"
+#include "modules/svg/image_loader_svg.h"
+#include "time.h"
static Ref<StyleBoxTexture> make_stylebox(Ref<Texture> texture, float p_left, float p_top, float p_right, float p_botton, float p_margin_left = -1, float p_margin_top = -1, float p_margin_right = -1, float p_margin_botton = -1, bool p_draw_center = true) {
Ref<StyleBoxTexture> style(memnew(StyleBoxTexture));
@@ -80,28 +82,54 @@ static Ref<StyleBoxLine> make_line_stylebox(Color color, int thickness = 1, floa
static Ref<StyleBoxFlat> change_border_color(Ref<StyleBoxFlat> p_style, Color p_color) {
Ref<StyleBoxFlat> style = p_style->duplicate();
- style->set_light_color(p_color);
- style->set_dark_color(p_color);
- return style;
-}
-
-static Ref<StyleBoxFlat> add_additional_border(Ref<StyleBoxFlat> p_style, int p_left, int p_top, int p_right, int p_bottom) {
- Ref<StyleBoxFlat> style = p_style->duplicate();
- style->_set_additional_border_size(MARGIN_LEFT, p_left * EDSCALE);
- style->_set_additional_border_size(MARGIN_RIGHT, p_right * EDSCALE);
- style->_set_additional_border_size(MARGIN_TOP, p_top * EDSCALE);
- style->_set_additional_border_size(MARGIN_BOTTOM, p_bottom * EDSCALE);
+ style->set_border_color_all(p_color);
return style;
}
#define HIGHLIGHT_COLOR_LIGHT highlight_color.linear_interpolate(Color(1, 1, 1, 1), 0.3)
#define HIGHLIGHT_COLOR_DARK highlight_color.linear_interpolate(Color(0, 0, 0, 1), 0.5)
-Ref<Theme> create_editor_theme() {
+Ref<ImageTexture> editor_generate_icon(int p_index, bool dark_theme = true) {
+ Ref<ImageTexture> icon = memnew(ImageTexture);
+ Ref<Image> img = memnew(Image);
+
+ // dumb gizmo check
+ bool is_gizmo = String(editor_icons_names[p_index]).begins_with("Gizmo");
+
+ ImageLoaderSVG::create_image_from_string(img, dark_theme ? editor_icons_sources[p_index] : editor_icons_sources_dark[p_index], EDSCALE, true);
+ if ((EDSCALE - (float)((int)EDSCALE)) > 0.0 || is_gizmo)
+ icon->create_from_image(img); // in this case filter really helps
+ else
+ icon->create_from_image(img, 0);
+
+ return icon;
+}
+
+void editor_register_icons(Ref<Theme> p_theme, bool dark_theme = true) {
+
+#ifdef SVG_ENABLED
+ print_line(rtos(EDSCALE));
+
+ clock_t begin_time = clock();
+
+ for (int i = 0; i < editor_icons_count; i++) {
+
+ Ref<ImageTexture> icon = editor_generate_icon(i, dark_theme);
+ p_theme->set_icon(editor_icons_names[i], "EditorIcons", icon);
+ }
+ clock_t end_time = clock();
+ double time_d = (double)(end_time - begin_time) / CLOCKS_PER_SEC;
+ print_line("SVG_GENERATION TIME: " + rtos(time_d));
+#else
+ print_line("Sorry no icons for you");
+#endif
+}
+
+Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
+
Ref<Theme> theme = Ref<Theme>(memnew(Theme));
editor_register_fonts(theme);
- editor_register_icons(theme);
const float default_contrast = 0.25;
@@ -150,10 +178,21 @@ Ref<Theme> create_editor_theme() {
title_color_hl = base_color.linear_interpolate(Color(1, 1, 1, 1), contrast / default_contrast / 10);
bool dark_bg = ((title_color_hl.r + title_color_hl.g + title_color_hl.b) / 3.0) < 0.5;
Color title_color_hl_text_color = dark_bg ? Color(1, 1, 1, 0.9) : Color(0, 0, 0, 0.9);
- Ref<Texture> title_hl_close_icon = theme->get_icon((dark_bg ? "GuiCloseLight" : "GuiCloseDark"), "EditorIcons");
- bool dark_base = ((base_color.r + base_color.g + base_color.b) / 3.0) < 0.5;
- Color separator_color = dark_base ? Color(1, 1, 1, 0.1) : Color(0, 0, 0, 0.1);
+ bool dark_theme = ((base_color.r + base_color.g + base_color.b) / 3.0) < 0.5;
+ Color separator_color = dark_theme ? Color(1, 1, 1, 0.1) : Color(0, 0, 0, 0.1);
+
+ // the resolution or the dark theme parameter has not changed, so we do not regenerate the icons
+ if (p_theme != NULL && fabs(p_theme->get_constant("scale", "Editor") - EDSCALE) < 0.00001 && p_theme->get_constant("dark_theme", "Editor") == dark_theme) {
+ for (int i = 0; i < editor_icons_count; i++) {
+ theme->set_icon(editor_icons_names[i], "EditorIcons", p_theme->get_icon(editor_icons_names[i], "EditorIcons"));
+ }
+ } else {
+ editor_register_icons(theme, dark_theme);
+ }
+
+ theme->set_constant("scale", "Editor", EDSCALE);
+ theme->set_constant("dark_theme", "Editor", dark_theme);
theme->set_color("highlight_color", "Editor", highlight_color);
theme->set_color("base_color", "Editor", base_color);
@@ -186,8 +225,8 @@ Ref<Theme> create_editor_theme() {
// Focus
Ref<StyleBoxFlat> focus_sbt = make_flat_stylebox(light_color_1, 4, 4, 4, 4);
- focus_sbt->set_draw_center(false);
- focus_sbt->set_border_size(border_width);
+ focus_sbt->set_filled(false);
+ focus_sbt->set_border_width_all(1 * EDSCALE);
focus_sbt = change_border_color(focus_sbt, light_color_2);
theme->set_stylebox("Focus", "EditorStyles", focus_sbt);
@@ -202,8 +241,10 @@ Ref<Theme> create_editor_theme() {
Ref<StyleBoxFlat> style_menu_hover_border = make_flat_stylebox(highlight_color, 4, 4, 4, 4);
Ref<StyleBoxFlat> style_menu_hover_bg = make_flat_stylebox(dark_color_2, 4, 4, 4, 4);
- style_menu_hover_border->set_draw_center(false);
- style_menu_hover_border->_set_additional_border_size(MARGIN_BOTTOM, border_width);
+ style_menu_hover_border->set_filled(false);
+ style_menu_hover_border->set_border_width(MARGIN_BOTTOM, border_width);
+ style_menu_hover_border->set_expand_margin_size(MARGIN_BOTTOM, border_width);
+
theme->set_stylebox("normal", "MenuButton", style_menu);
theme->set_stylebox("hover", "MenuButton", style_menu);
theme->set_stylebox("pressed", "MenuButton", style_menu);
@@ -230,24 +271,18 @@ Ref<Theme> create_editor_theme() {
// Content of each tab
Ref<StyleBoxFlat> style_content_panel = make_flat_stylebox(base_color, 4, 5, 4, 4);
- style_content_panel->set_dark_color(title_color_hl);
- style_content_panel->set_light_color(title_color_hl);
- style_content_panel->set_border_size(border_width);
- style_content_panel->set_border_blend(false);
+ style_content_panel->set_border_color_all(title_color_hl);
+ style_content_panel->set_border_width_all(border_width);
Ref<StyleBoxFlat> style_content_panel_vp = make_flat_stylebox(base_color, border_width, 5, border_width, border_width);
- style_content_panel_vp->set_dark_color(title_color_hl);
- style_content_panel_vp->set_light_color(title_color_hl);
- style_content_panel_vp->set_border_size(border_width);
- style_content_panel_vp->set_border_blend(false);
+ style_content_panel_vp->set_border_color_all(title_color_hl);
+ style_content_panel_vp->set_border_width_all(border_width);
theme->set_stylebox("panel", "TabContainer", style_content_panel);
theme->set_stylebox("Content", "EditorStyles", style_content_panel_vp);
Ref<StyleBoxFlat> style_button_type = make_flat_stylebox(dark_color_1, 6, 4, 6, 4);
- style_button_type->set_draw_center(true);
- style_button_type->set_border_size(border_width);
- style_button_type->set_light_color(light_color_1);
- style_button_type->set_dark_color(light_color_1);
- style_button_type->set_border_blend(false);
+ style_button_type->set_filled(true);
+ style_button_type->set_border_width_all(border_width);
+ style_button_type->set_border_color_all(light_color_1);
Ref<StyleBoxFlat> style_button_type_disabled = change_border_color(style_button_type, dark_color_2);
@@ -260,6 +295,7 @@ Ref<Theme> create_editor_theme() {
theme->set_stylebox("focus", "Button", change_border_color(style_button_type, highlight_color));
theme->set_stylebox("disabled", "Button", style_button_type_disabled);
theme->set_color("font_color", "Button", button_font_color);
+
theme->set_color("font_color_hover", "Button", HIGHLIGHT_COLOR_LIGHT);
theme->set_color("font_color_pressed", "Button", highlight_color);
theme->set_color("icon_color_hover", "Button", HIGHLIGHT_COLOR_LIGHT);
@@ -267,11 +303,9 @@ Ref<Theme> create_editor_theme() {
theme->set_color("icon_color_pressed", "Button", Color(highlight_color.r * 1.15, highlight_color.g * 1.15, highlight_color.b * 1.15, highlight_color.a));
// OptionButton
- Ref<StyleBoxFlat> style_option_button = make_flat_stylebox(dark_color_1, 4, 4, 8, 4);
- style_option_button->set_border_size(border_width);
- style_option_button->set_light_color(light_color_1);
- style_option_button->set_dark_color(light_color_1);
- style_option_button->set_border_blend(false);
+ Ref<StyleBoxFlat> style_option_button = make_flat_stylebox(dark_color_1, 4, 4, 4, 4);
+ style_option_button->set_border_width_all(border_width);
+ style_option_button->set_border_color_all(light_color_1);
theme->set_stylebox("hover", "OptionButton", change_border_color(style_button_type, HIGHLIGHT_COLOR_LIGHT));
theme->set_stylebox("pressed", "OptionButton", change_border_color(style_button_type, highlight_color));
theme->set_stylebox("focus", "OptionButton", change_border_color(style_button_type, highlight_color));
@@ -291,24 +325,20 @@ Ref<Theme> create_editor_theme() {
// PopupMenu
Ref<StyleBoxFlat> style_popup_menu = make_flat_stylebox(dark_color_1, 8, 8, 8, 8);
- style_popup_menu->set_border_size(MAX(EDSCALE, border_width));
- style_popup_menu->set_light_color(light_color_1);
- style_popup_menu->set_dark_color(light_color_1);
- style_popup_menu->set_border_blend(false);
+ style_popup_menu->set_border_width_all(MAX(EDSCALE, border_width));
+ style_popup_menu->set_border_color_all(light_color_1);
theme->set_stylebox("panel", "PopupMenu", style_popup_menu);
theme->set_stylebox("separator", "PopupMenu", make_line_stylebox(separator_color, MAX(EDSCALE, border_width), 8 - MAX(EDSCALE, border_width)));
// Tree & ItemList background
Ref<StyleBoxFlat> style_tree_bg = make_flat_stylebox(dark_color_1, 2, 4, 2, 4);
- style_tree_bg->set_border_size(border_width);
- style_tree_bg->set_light_color(dark_color_3);
- style_tree_bg->set_dark_color(dark_color_3);
+ style_tree_bg->set_border_width_all(border_width);
+ style_tree_bg->set_border_color_all(dark_color_3);
theme->set_stylebox("bg", "Tree", style_tree_bg);
// Script background
Ref<StyleBoxFlat> style_script_bg = make_flat_stylebox(dark_color_1, 0, 0, 0, 0);
- style_script_bg->set_border_size(border_width);
- style_script_bg->set_light_color(dark_color_3);
- style_script_bg->set_dark_color(dark_color_3);
+ style_script_bg->set_border_width_all(border_width);
+ style_script_bg->set_border_color_all(dark_color_3);
theme->set_stylebox("ScriptPanel", "EditorStyles", style_script_bg);
// Tree
@@ -333,10 +363,10 @@ Ref<Theme> create_editor_theme() {
theme->set_stylebox("selected", "Tree", style_tree_selected);
Ref<StyleBoxFlat> style_tree_cursor = make_flat_stylebox(HIGHLIGHT_COLOR_DARK, 4, 4, 4, 4);
- style_tree_cursor->set_draw_center(false);
- style_tree_cursor->set_border_size(border_width);
- style_tree_cursor->set_light_color(light_color_1);
- style_tree_cursor->set_dark_color(light_color_1);
+ style_tree_cursor->set_filled(false);
+ style_tree_cursor->set_border_width_all(border_width);
+ style_tree_cursor->set_border_color_all(light_color_1);
+
Ref<StyleBoxFlat> style_tree_title = make_flat_stylebox(dark_color_3, 4, 4, 4, 4);
theme->set_stylebox("cursor", "Tree", style_tree_cursor);
theme->set_stylebox("cursor_unfocused", "Tree", style_tree_cursor);
@@ -348,19 +378,18 @@ Ref<Theme> create_editor_theme() {
theme->set_color("prop_section", "Editor", dark_color_1.linear_interpolate(Color(1, 1, 1, 1), 0.09));
theme->set_color("prop_subsection", "Editor", dark_color_1.linear_interpolate(Color(1, 1, 1, 1), 0.06));
theme->set_color("fg_selected", "Editor", HIGHLIGHT_COLOR_DARK);
- theme->set_color("fg_error", "Editor", Color::html("ffbd8e8e"));
+ theme->set_color("fg_error", "Editor", theme->get_color("error_color", "Editor"));
theme->set_color("drop_position_color", "Tree", highlight_color);
// ItemList
Ref<StyleBoxFlat> style_itemlist_bg = make_flat_stylebox(dark_color_1, 4, 4, 4, 4);
- style_itemlist_bg->set_border_size(border_width);
- style_itemlist_bg->set_light_color(dark_color_3);
- style_itemlist_bg->set_dark_color(dark_color_3);
+ style_itemlist_bg->set_border_width_all(border_width);
+ style_itemlist_bg->set_border_color_all(dark_color_3);
+
Ref<StyleBoxFlat> style_itemlist_cursor = make_flat_stylebox(highlight_color, 0, 0, 0, 0);
- style_itemlist_cursor->set_draw_center(false);
- style_itemlist_cursor->set_border_size(border_width);
- style_itemlist_cursor->set_light_color(HIGHLIGHT_COLOR_DARK);
- style_itemlist_cursor->set_dark_color(HIGHLIGHT_COLOR_DARK);
+ style_itemlist_cursor->set_filled(false);
+ style_itemlist_cursor->set_border_width_all(border_width);
+ style_itemlist_cursor->set_border_color_all(HIGHLIGHT_COLOR_DARK);
theme->set_stylebox("cursor", "ItemList", style_itemlist_cursor);
theme->set_stylebox("cursor_unfocused", "ItemList", style_itemlist_cursor);
theme->set_stylebox("selected_focus", "ItemList", style_tree_focus);
@@ -371,7 +400,7 @@ Ref<Theme> create_editor_theme() {
Ref<StyleBoxFlat> style_tab_fg = make_flat_stylebox(title_color_hl, 15, 5, 15, 5);
Ref<StyleBoxFlat> style_tab_bg = make_flat_stylebox(base_color, 15, 5, 15, 5);
- style_tab_bg->set_draw_center(false);
+ style_tab_bg->set_filled(false);
// Tabs & TabContainer
theme->set_stylebox("tab_fg", "TabContainer", style_tab_fg);
@@ -384,7 +413,9 @@ Ref<Theme> create_editor_theme() {
theme->set_icon("menu_hl", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons"));
theme->set_stylebox("SceneTabFG", "EditorStyles", make_flat_stylebox(title_color_hl, 10, 5, 10, 5));
theme->set_stylebox("SceneTabBG", "EditorStyles", make_empty_stylebox(6, 5, 6, 5));
- theme->set_icon("close", "Tabs", title_hl_close_icon);
+ theme->set_icon("close", "Tabs", theme->get_icon("GuiClose", "EditorIcons"));
+ theme->set_stylebox("button_pressed", "Tabs", style_menu);
+ theme->set_stylebox("button", "Tabs", style_menu);
// Separators (no separators)
theme->set_stylebox("separator", "HSeparator", make_line_stylebox(separator_color, border_width));
@@ -396,7 +427,7 @@ Ref<Theme> create_editor_theme() {
Ref<StyleBoxFlat> style_tab_fg_debugger = make_flat_stylebox(dark_color_2, 10, 5, 10, 5);
Ref<StyleBoxFlat> style_tab_bg_debugger = make_flat_stylebox(dark_color_2, 10, 5, 10, 5);
- style_tab_bg_debugger->set_draw_center(false);
+ style_tab_bg_debugger->set_filled(false);
theme->set_stylebox("DebuggerTabFG", "EditorStyles", style_tab_fg_debugger);
theme->set_stylebox("DebuggerTabBG", "EditorStyles", style_tab_bg_debugger);
@@ -435,15 +466,14 @@ Ref<Theme> create_editor_theme() {
// WindowDialog
Ref<StyleBoxFlat> style_window = make_flat_stylebox(dark_color_2, 4, 4, 4, 4);
- style_window->set_border_size(MAX(EDSCALE, border_width));
- style_window->set_border_blend(false);
- style_window->set_light_color(title_color_hl);
- style_window->set_dark_color(title_color_hl);
- style_window->_set_additional_border_size(MARGIN_TOP, 24 * EDSCALE);
+ style_window->set_border_width_all(MAX(EDSCALE, border_width));
+ style_window->set_border_color_all(title_color_hl);
+ style_window->set_border_width(MARGIN_TOP, 24 * EDSCALE);
+ style_window->set_expand_margin_size(MARGIN_TOP, 24 * EDSCALE);
theme->set_stylebox("panel", "WindowDialog", style_window);
theme->set_color("title_color", "WindowDialog", title_color_hl_text_color);
- theme->set_icon("close", "WindowDialog", title_hl_close_icon);
- theme->set_icon("close_highlight", "WindowDialog", title_hl_close_icon);
+ theme->set_icon("close", "WindowDialog", theme->get_icon("GuiClose", "EditorIcons"));
+ theme->set_icon("close_highlight", "WindowDialog", theme->get_icon("GuiClose", "EditorIcons"));
theme->set_constant("close_h_ofs", "WindowDialog", 22 * EDSCALE);
theme->set_constant("close_v_ofs", "WindowDialog", 20 * EDSCALE);
theme->set_constant("title_height", "WindowDialog", 24 * EDSCALE);
@@ -455,6 +485,7 @@ Ref<Theme> create_editor_theme() {
theme->set_stylebox("scroll_focus", "HScrollBar", make_stylebox(theme->get_icon("GuiScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0));
theme->set_stylebox("grabber", "HScrollBar", make_stylebox(theme->get_icon("GuiScrollGrabber", "EditorIcons"), 6, 6, 6, 6, 2, 2, 2, 2));
theme->set_stylebox("grabber_highlight", "HScrollBar", make_stylebox(theme->get_icon("GuiScrollGrabberHl", "EditorIcons"), 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("grabber_pressed", "HScrollBar", make_stylebox(theme->get_icon("GuiScrollGrabberPressed", "EditorIcons"), 6, 6, 6, 6, 2, 2, 2, 2));
theme->set_icon("increment", "HScrollBar", empty_icon);
theme->set_icon("increment_highlight", "HScrollBar", empty_icon);
@@ -466,6 +497,7 @@ Ref<Theme> create_editor_theme() {
theme->set_stylebox("scroll_focus", "VScrollBar", make_stylebox(theme->get_icon("GuiScrollBg", "EditorIcons"), 5, 5, 5, 5, 0, 0, 0, 0));
theme->set_stylebox("grabber", "VScrollBar", make_stylebox(theme->get_icon("GuiScrollGrabber", "EditorIcons"), 6, 6, 6, 6, 2, 2, 2, 2));
theme->set_stylebox("grabber_highlight", "VScrollBar", make_stylebox(theme->get_icon("GuiScrollGrabberHl", "EditorIcons"), 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("grabber_pressed", "VScrollBar", make_stylebox(theme->get_icon("GuiScrollGrabberPressed", "EditorIcons"), 6, 6, 6, 6, 2, 2, 2, 2));
theme->set_icon("increment", "VScrollBar", empty_icon);
theme->set_icon("increment_highlight", "VScrollBar", empty_icon);
@@ -490,17 +522,15 @@ Ref<Theme> create_editor_theme() {
// TooltipPanel
Ref<StyleBoxFlat> style_tooltip = make_flat_stylebox(Color(1, 1, 1, 0.8), 8, 8, 8, 8);
- style_tooltip->set_border_size(border_width);
- style_tooltip->set_border_blend(false);
- style_tooltip->set_light_color(Color(1, 1, 1, 0.9));
- style_tooltip->set_dark_color(Color(1, 1, 1, 0.9));
+ style_tooltip->set_border_width_all(border_width);
+ style_tooltip->set_border_color_all(Color(1, 1, 1, 0.9));
theme->set_stylebox("panel", "TooltipPanel", style_tooltip);
// PopupPanel
Ref<StyleBoxFlat> style_dock_select = make_flat_stylebox(base_color);
- style_dock_select->set_light_color(light_color_1);
- style_dock_select->set_dark_color(light_color_1);
- style_dock_select = add_additional_border(style_dock_select, 2, 2, 2, 2);
+ style_dock_select->set_border_color_all(light_color_1);
+ style_dock_select->set_expand_margin_size_all(2);
+ style_dock_select->set_border_width_all(2);
theme->set_stylebox("panel", "PopupPanel", style_dock_select);
// SpinBox
@@ -520,29 +550,21 @@ Ref<Theme> create_editor_theme() {
// GraphNode
Ref<StyleBoxFlat> graphsb = make_flat_stylebox(Color(0, 0, 0, 0.3), 16, 24, 16, 5);
- graphsb->set_border_blend(false);
- graphsb->set_border_size(border_width);
- graphsb->set_light_color(Color(1, 1, 1, 0.6));
- graphsb->set_dark_color(Color(1, 1, 1, 0.6));
- graphsb = add_additional_border(graphsb, 0, -22, 0, 0);
+ graphsb->set_border_width_all(border_width);
+ graphsb->set_border_color_all(Color(1, 1, 1, 0.6));
+ graphsb->set_border_width(MARGIN_TOP, 22 * EDSCALE + border_width);
Ref<StyleBoxFlat> graphsbselected = make_flat_stylebox(Color(0, 0, 0, 0.4), 16, 24, 16, 5);
- graphsbselected->set_border_blend(false);
- graphsbselected->set_border_size(border_width);
- graphsbselected->set_light_color(Color(1, 1, 1, 0.9));
- graphsbselected->set_dark_color(Color(1, 1, 1, 0.9));
- graphsbselected = add_additional_border(graphsbselected, 0, -22, 0, 0);
+ graphsbselected->set_border_width_all(border_width);
+ graphsbselected->set_border_color_all(Color(1, 1, 1, 0.9));
+ graphsbselected->set_border_width(MARGIN_TOP, 22 * EDSCALE + border_width);
Ref<StyleBoxFlat> graphsbcomment = make_flat_stylebox(Color(0, 0, 0, 0.3), 16, 24, 16, 5);
- graphsbcomment->set_border_blend(false);
- graphsbcomment->set_border_size(border_width);
- graphsbcomment->set_light_color(Color(1, 1, 1, 0.6));
- graphsbcomment->set_dark_color(Color(1, 1, 1, 0.6));
- graphsbcomment = add_additional_border(graphsbcomment, 0, -22, 0, 0);
+ graphsbcomment->set_border_width_all(border_width);
+ graphsbcomment->set_border_color_all(Color(1, 1, 1, 0.6));
+ graphsbcomment->set_border_width(MARGIN_TOP, 22 * EDSCALE + border_width);
Ref<StyleBoxFlat> graphsbcommentselected = make_flat_stylebox(Color(0, 0, 0, 0.4), 16, 24, 16, 5);
- graphsbcommentselected->set_border_blend(false);
- graphsbcommentselected->set_border_size(border_width);
- graphsbcommentselected->set_light_color(Color(1, 1, 1, 0.9));
- graphsbcommentselected->set_dark_color(Color(1, 1, 1, 0.9));
- graphsbcommentselected = add_additional_border(graphsbcommentselected, 0, -22, 0, 0);
+ graphsbcommentselected->set_border_width_all(border_width);
+ graphsbcommentselected->set_border_color_all(Color(1, 1, 1, 0.9));
+ graphsbcommentselected->set_border_width(MARGIN_TOP, 22 * EDSCALE + border_width);
theme->set_stylebox("frame", "GraphNode", graphsb);
theme->set_stylebox("selectedframe", "GraphNode", graphsbselected);
theme->set_stylebox("comment", "GraphNode", graphsbcomment);
diff --git a/editor/editor_themes.h b/editor/editor_themes.h
index 2ebefee6f3..a644c5936f 100644
--- a/editor/editor_themes.h
+++ b/editor/editor_themes.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,7 +32,7 @@
#include "scene/resources/theme.h"
-Ref<Theme> create_editor_theme();
+Ref<Theme> create_editor_theme(Ref<Theme> p_theme = NULL);
Ref<Theme> create_custom_theme();
diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp
index e6f15d1712..147d5f90c6 100644
--- a/editor/export_template_manager.cpp
+++ b/editor/export_template_manager.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -195,7 +195,7 @@ void ExportTemplateManager::_install_from_file(const String &p_file) {
data.resize(info.uncompressed_size);
//read
- ret = unzOpenCurrentFile(pkg);
+ unzOpenCurrentFile(pkg);
ret = unzReadCurrentFile(pkg, data.ptr(), data.size());
unzCloseCurrentFile(pkg);
@@ -257,7 +257,7 @@ void ExportTemplateManager::_install_from_file(const String &p_file) {
//get filename
unz_file_info info;
char fname[16384];
- ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, NULL, 0, NULL, 0);
+ unzGetCurrentFileInfo(pkg, &info, fname, 16384, NULL, 0, NULL, 0);
String file = fname;
@@ -265,8 +265,8 @@ void ExportTemplateManager::_install_from_file(const String &p_file) {
data.resize(info.uncompressed_size);
//read
- ret = unzOpenCurrentFile(pkg);
- ret = unzReadCurrentFile(pkg, data.ptr(), data.size());
+ unzOpenCurrentFile(pkg);
+ unzReadCurrentFile(pkg, data.ptr(), data.size());
unzCloseCurrentFile(pkg);
print_line(fname);
@@ -313,77 +313,6 @@ void ExportTemplateManager::_bind_methods() {
ClassDB::bind_method("_uninstall_template", &ExportTemplateManager::_uninstall_template);
ClassDB::bind_method("_uninstall_template_confirm", &ExportTemplateManager::_uninstall_template_confirm);
ClassDB::bind_method("_install_from_file", &ExportTemplateManager::_install_from_file);
-
-#if 0
- FileAccess *fa = NULL;
- zlib_filefunc_def io = zipio_create_io_from_file(&fa);
-
- unzFile pkg = unzOpen2(p_file.utf8().get_data(), &io);
- if (!pkg) {
-
- current_option = -1;
- //confirmation->get_cancel()->hide();
- accept->get_ok()->set_text(TTR("I see.."));
- accept->set_text(TTR("Can't open export templates zip."));
- accept->popup_centered_minsize();
- return;
- }
- int ret = unzGoToFirstFile(pkg);
-
- int fc = 0; //count them
-
- while (ret == UNZ_OK) {
- fc++;
- ret = unzGoToNextFile(pkg);
- }
-
- ret = unzGoToFirstFile(pkg);
-
- EditorProgress p("ltask", TTR("Loading Export Templates"), fc);
-
- fc = 0;
-
- while (ret == UNZ_OK) {
-
- //get filename
- unz_file_info info;
- char fname[16384];
- ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, NULL, 0, NULL, 0);
-
- String file = fname;
-
- Vector<uint8_t> data;
- data.resize(info.uncompressed_size);
-
- //read
- ret = unzOpenCurrentFile(pkg);
- ret = unzReadCurrentFile(pkg, data.ptr(), data.size());
- unzCloseCurrentFile(pkg);
-
- print_line(fname);
- /*
- for(int i=0;i<512;i++) {
- print_line(itos(data[i]));
- }
- */
-
- file = file.get_file();
-
- p.step(TTR("Importing:") + " " + file, fc);
-
- FileAccess *f = FileAccess::open(EditorSettings::get_singleton()->get_settings_path() + "/templates/" + file, FileAccess::WRITE);
-
- ERR_CONTINUE(!f);
- f->store_buffer(data.ptr(), data.size());
-
- memdelete(f);
-
- ret = unzGoToNextFile(pkg);
- fc++;
- }
-
- unzClose(pkg);
-#endif
}
ExportTemplateManager::ExportTemplateManager() {
diff --git a/editor/export_template_manager.h b/editor/export_template_manager.h
index 480c73e123..ce6d8024ae 100644
--- a/editor/export_template_manager.h
+++ b/editor/export_template_manager.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/file_type_cache.cpp b/editor/file_type_cache.cpp
index 728e80bba7..c8b21acb36 100644
--- a/editor/file_type_cache.cpp
+++ b/editor/file_type_cache.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/file_type_cache.h b/editor/file_type_cache.h
index a434384eb4..307e8e27bb 100644
--- a/editor/file_type_cache.h
+++ b/editor/file_type_cache.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/fileserver/editor_file_server.cpp b/editor/fileserver/editor_file_server.cpp
index 7e168c54be..ba90beee22 100644
--- a/editor/fileserver/editor_file_server.cpp
+++ b/editor/fileserver/editor_file_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/fileserver/editor_file_server.h b/editor/fileserver/editor_file_server.h
index 01b84627b7..32c28b4358 100644
--- a/editor/fileserver/editor_file_server.h
+++ b/editor/fileserver/editor_file_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 8e40850a0c..9aa856119d 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -367,6 +367,7 @@ void FileSystemDock::_search(EditorFileSystemDirectory *p_path, List<FileInfo> *
fi.name = file;
fi.type = p_path->get_file_type(i);
fi.path = p_path->get_file_path(i);
+ fi.import_broken = !p_path->get_file_import_is_valid(i);
fi.import_status = 0;
matches->push_back(fi);
@@ -401,6 +402,7 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
thumbnail_size *= EDSCALE;
Ref<Texture> folder_thumbnail;
Ref<Texture> file_thumbnail;
+ Ref<Texture> file_thumbnail_broken;
bool use_thumbnails = (display_mode == DISPLAY_THUMBNAILS);
bool use_folders = search_box->get_text().length() == 0 && split_mode;
@@ -434,8 +436,18 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
Theme::get_default()->set_icon("ResizedFile", "EditorIcons", resized_file);
}
+ if (!has_icon("ResizedFileBroken", "EditorIcons")) {
+ Ref<ImageTexture> file = get_icon("FileBigBroken", "EditorIcons");
+ Ref<Image> img = file->get_data();
+ img->resize(thumbnail_size, thumbnail_size);
+ Ref<ImageTexture> resized_file = Ref<ImageTexture>(memnew(ImageTexture));
+ resized_file->create_from_image(img, 0);
+ Theme::get_default()->set_icon("ResizedFileBroken", "EditorIcons", resized_file);
+ }
+
file_thumbnail = get_icon("ResizedFile", "EditorIcons");
+ file_thumbnail_broken = get_icon("ResizedFileBroken", "EditorIcons");
} else {
files->set_icon_mode(ItemList::ICON_MODE_LEFT);
@@ -496,6 +508,7 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
fi.name = efd->get_file(i);
fi.path = path.plus_file(fi.name);
fi.type = efd->get_file_type(i);
+ fi.import_broken = !efd->get_file_import_is_valid(i);
fi.import_status = 0;
filelist.push_back(fi);
@@ -511,41 +524,40 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
StringName type = E->get().type;
Ref<Texture> type_icon;
+ Ref<Texture> big_icon = file_thumbnail;
String tooltip = fname;
- if (E->get().import_status == 0) {
+ if (!E->get().import_broken) {
if (has_icon(type, ei)) {
type_icon = get_icon(type, ei);
} else {
type_icon = get_icon(oi, ei);
}
- } else if (E->get().import_status == 1) {
- type_icon = get_icon("DependencyOk", "EditorIcons");
- } else if (E->get().import_status == 2) {
- type_icon = get_icon("DependencyChanged", "EditorIcons");
- tooltip + "\nStatus: Needs Re-Import";
- } else if (E->get().import_status == 3) {
+ } else {
type_icon = get_icon("ImportFail", "EditorIcons");
- tooltip + "\nStatus: Missing Dependencies";
+ big_icon = file_thumbnail_broken;
+ tooltip += TTR("\nStatus: Import of file failed. Please fix file and reimport manually.");
}
if (E->get().sources.size()) {
for (int i = 0; i < E->get().sources.size(); i++) {
- tooltip += "\nSource: " + E->get().sources[i];
+ tooltip += TTR("\nSource: ") + E->get().sources[i];
}
}
if (use_thumbnails) {
- files->add_item(fname, file_thumbnail, true);
+ files->add_item(fname, big_icon, true);
files->set_item_metadata(files->get_item_count() - 1, fp);
files->set_item_tag_icon(files->get_item_count() - 1, type_icon);
Array udata;
udata.resize(2);
udata[0] = files->get_item_count() - 1;
udata[1] = fname;
- EditorResourcePreview::get_singleton()->queue_resource_preview(fp, this, "_thumbnail_done", udata);
+ if (!E->get().import_broken) {
+ EditorResourcePreview::get_singleton()->queue_resource_preview(fp, this, "_thumbnail_done", udata);
+ }
} else {
files->add_item(fname, type_icon, true);
files->set_item_metadata(files->get_item_count() - 1, fp);
@@ -729,7 +741,7 @@ void FileSystemDock::_rename_operation(const String &p_to_path) {
return;
}
if (FileAccess::exists(p_to_path)) {
- EditorNode::get_singleton()->show_warning("Target file exists, can't overwrite. Delete first.");
+ EditorNode::get_singleton()->show_warning(TTR("Target file exists, can't overwrite. Delete first."));
return;
}
@@ -818,7 +830,7 @@ void FileSystemDock::_move_operation(const String &p_to_path) {
print_line("remapping: " + E->get());
if (err != OK) {
- EditorNode::get_singleton()->add_io_error("Can't rename deps for:\n" + E->get() + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Can't rename deps for:\n") + E->get() + "\n");
}
}
@@ -832,7 +844,7 @@ void FileSystemDock::_move_operation(const String &p_to_path) {
Error err = da->rename(move_files[i], to);
print_line("moving file " + move_files[i] + " to " + to);
if (err != OK) {
- EditorNode::get_singleton()->add_io_error("Error moving file:\n" + move_files[i] + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Error moving file:\n") + move_files[i] + "\n");
}
}
@@ -850,7 +862,7 @@ void FileSystemDock::_move_operation(const String &p_to_path) {
Error err = da->rename(mdir, to);
print_line("moving dir " + mdir + " to " + to);
if (err != OK) {
- EditorNode::get_singleton()->add_io_error("Error moving dir:\n" + move_dirs[i] + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Error moving dir:\n") + move_dirs[i] + "\n");
}
}
@@ -1465,10 +1477,9 @@ void FileSystemDock::_files_list_rmb_select(int p_item, const Vector2 &p_pos) {
return;
}
- EditorFileSystemDirectory *efsd = NULL;
int pos;
- efsd = EditorFileSystem::get_singleton()->find_file(path, &pos);
+ EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(path, &pos);
if (efsd) {
@@ -1756,7 +1767,7 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
scanning_vb = memnew(VBoxContainer);
Label *slabel = memnew(Label);
- slabel->set_text("Scanning Files,\nPlease Wait..");
+ slabel->set_text(TTR("Scanning Files,\nPlease Wait.."));
slabel->set_align(Label::ALIGN_CENTER);
scanning_vb->add_child(slabel);
scanning_progress = memnew(ProgressBar);
diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h
index 77898aa6c2..a35b145085 100644
--- a/editor/filesystem_dock.h
+++ b/editor/filesystem_dock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -158,7 +158,7 @@ private:
void _favorites_pressed();
void _open_pressed();
- void _dir_rmb_pressed(const Vector2 &local_mouse_pos);
+ void _dir_rmb_pressed(const Vector2 &p_pos);
void _search_changed(const String &p_text);
void _files_list_rmb_select(int p_item, const Vector2 &p_pos);
@@ -169,6 +169,7 @@ private:
StringName type;
int import_status; //0 not imported, 1 - ok, 2- must reimport, 3- broken
Vector<String> sources;
+ bool import_broken;
bool operator<(const FileInfo &fi) const {
return name < fi.name;
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index ea1827f16f..dcb96f3531 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -65,7 +65,7 @@ void GroupsEditor::_remove_group(Object *p_item, int p_column, int p_id) {
if (!node)
return;
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
if (!ti)
return;
diff --git a/editor/groups_editor.h b/editor/groups_editor.h
index acbe60c21f..c9b37a405d 100644
--- a/editor/groups_editor.h
+++ b/editor/groups_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/icons/2x/icon_2_d.png b/editor/icons/2x/icon_2_d.png
deleted file mode 100644
index 9b2ed64665..0000000000
--- a/editor/icons/2x/icon_2_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_3_d.png b/editor/icons/2x/icon_3_d.png
deleted file mode 100644
index 218c246870..0000000000
--- a/editor/icons/2x/icon_3_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_checked.png b/editor/icons/2x/icon_GUI_checked.png
deleted file mode 100644
index d51f20b867..0000000000
--- a/editor/icons/2x/icon_GUI_checked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_dropdown.png b/editor/icons/2x/icon_GUI_dropdown.png
deleted file mode 100644
index 78d3352e4e..0000000000
--- a/editor/icons/2x/icon_GUI_dropdown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_hslider_bg.png b/editor/icons/2x/icon_GUI_hslider_bg.png
deleted file mode 100644
index 38af962095..0000000000
--- a/editor/icons/2x/icon_GUI_hslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_hsplitter.png b/editor/icons/2x/icon_GUI_hsplitter.png
deleted file mode 100644
index 063f0c90fc..0000000000
--- a/editor/icons/2x/icon_GUI_hsplitter.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_mini_tab_menu.png b/editor/icons/2x/icon_GUI_mini_tab_menu.png
deleted file mode 100644
index 8c3aa73aaf..0000000000
--- a/editor/icons/2x/icon_GUI_mini_tab_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_option_arrow.png b/editor/icons/2x/icon_GUI_option_arrow.png
deleted file mode 100644
index 87fdc8aa51..0000000000
--- a/editor/icons/2x/icon_GUI_option_arrow.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_play_button_group.png b/editor/icons/2x/icon_GUI_play_button_group.png
deleted file mode 100644
index 6a569d5e80..0000000000
--- a/editor/icons/2x/icon_GUI_play_button_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_progress_bar.png b/editor/icons/2x/icon_GUI_progress_bar.png
deleted file mode 100644
index ca53eba8d0..0000000000
--- a/editor/icons/2x/icon_GUI_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_progress_fill.png b/editor/icons/2x/icon_GUI_progress_fill.png
deleted file mode 100644
index ac6c562650..0000000000
--- a/editor/icons/2x/icon_GUI_progress_fill.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_radio_checked.png b/editor/icons/2x/icon_GUI_radio_checked.png
deleted file mode 100644
index 1b38071c00..0000000000
--- a/editor/icons/2x/icon_GUI_radio_checked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_radio_unchecked.png b/editor/icons/2x/icon_GUI_radio_unchecked.png
deleted file mode 100644
index b76bf63f2d..0000000000
--- a/editor/icons/2x/icon_GUI_radio_unchecked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_scroll_bg.png b/editor/icons/2x/icon_GUI_scroll_bg.png
deleted file mode 100644
index 58369d6f96..0000000000
--- a/editor/icons/2x/icon_GUI_scroll_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_scroll_grabber.png b/editor/icons/2x/icon_GUI_scroll_grabber.png
deleted file mode 100644
index 6f74a9365f..0000000000
--- a/editor/icons/2x/icon_GUI_scroll_grabber.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_scroll_grabber_hl.png b/editor/icons/2x/icon_GUI_scroll_grabber_hl.png
deleted file mode 100644
index c03ca1adf9..0000000000
--- a/editor/icons/2x/icon_GUI_scroll_grabber_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_slider_grabber.png b/editor/icons/2x/icon_GUI_slider_grabber.png
deleted file mode 100644
index 97e97cb536..0000000000
--- a/editor/icons/2x/icon_GUI_slider_grabber.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_slider_grabber_hl.png b/editor/icons/2x/icon_GUI_slider_grabber_hl.png
deleted file mode 100644
index 2229e25a60..0000000000
--- a/editor/icons/2x/icon_GUI_slider_grabber_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_spinbox_updown.png b/editor/icons/2x/icon_GUI_spinbox_updown.png
deleted file mode 100644
index a20b43f9c3..0000000000
--- a/editor/icons/2x/icon_GUI_spinbox_updown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_tab_menu.png b/editor/icons/2x/icon_GUI_tab_menu.png
deleted file mode 100644
index 3887615fee..0000000000
--- a/editor/icons/2x/icon_GUI_tab_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_toggle_off.png b/editor/icons/2x/icon_GUI_toggle_off.png
deleted file mode 100644
index 9da02707d1..0000000000
--- a/editor/icons/2x/icon_GUI_toggle_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_toggle_on.png b/editor/icons/2x/icon_GUI_toggle_on.png
deleted file mode 100644
index 41a25e9345..0000000000
--- a/editor/icons/2x/icon_GUI_toggle_on.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_tree_arrow_down.png b/editor/icons/2x/icon_GUI_tree_arrow_down.png
deleted file mode 100644
index c71c6f4159..0000000000
--- a/editor/icons/2x/icon_GUI_tree_arrow_down.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_tree_arrow_right.png b/editor/icons/2x/icon_GUI_tree_arrow_right.png
deleted file mode 100644
index 66331c730a..0000000000
--- a/editor/icons/2x/icon_GUI_tree_arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_unchecked.png b/editor/icons/2x/icon_GUI_unchecked.png
deleted file mode 100644
index f76b6351d8..0000000000
--- a/editor/icons/2x/icon_GUI_unchecked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_vslider_bg.png b/editor/icons/2x/icon_GUI_vslider_bg.png
deleted file mode 100644
index eeb68e2d7a..0000000000
--- a/editor/icons/2x/icon_GUI_vslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_vsplit_bg.png b/editor/icons/2x/icon_GUI_vsplit_bg.png
deleted file mode 100644
index 09524bd25a..0000000000
--- a/editor/icons/2x/icon_GUI_vsplit_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_GUI_vsplitter.png b/editor/icons/2x/icon_GUI_vsplitter.png
deleted file mode 100644
index 84920525b7..0000000000
--- a/editor/icons/2x/icon_GUI_vsplitter.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_accept_dialog.png b/editor/icons/2x/icon_accept_dialog.png
deleted file mode 100644
index fca344aefc..0000000000
--- a/editor/icons/2x/icon_accept_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_add.png b/editor/icons/2x/icon_add.png
deleted file mode 100644
index a46c521f2a..0000000000
--- a/editor/icons/2x/icon_add.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_add_track.png b/editor/icons/2x/icon_add_track.png
deleted file mode 100644
index a46c521f2a..0000000000
--- a/editor/icons/2x/icon_add_track.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_anchor.png b/editor/icons/2x/icon_anchor.png
deleted file mode 100644
index 7e9e259c13..0000000000
--- a/editor/icons/2x/icon_anchor.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_animated_sprite.png b/editor/icons/2x/icon_animated_sprite.png
deleted file mode 100644
index 461dac8f13..0000000000
--- a/editor/icons/2x/icon_animated_sprite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_animated_sprite_3d.png b/editor/icons/2x/icon_animated_sprite_3d.png
deleted file mode 100644
index 6c79c38875..0000000000
--- a/editor/icons/2x/icon_animated_sprite_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_animation.png b/editor/icons/2x/icon_animation.png
deleted file mode 100644
index ef18959a74..0000000000
--- a/editor/icons/2x/icon_animation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_animation_player.png b/editor/icons/2x/icon_animation_player.png
deleted file mode 100644
index 1a9373938b..0000000000
--- a/editor/icons/2x/icon_animation_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_animation_tree.png b/editor/icons/2x/icon_animation_tree.png
deleted file mode 100644
index ba7930b88f..0000000000
--- a/editor/icons/2x/icon_animation_tree.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_animation_tree_player.png b/editor/icons/2x/icon_animation_tree_player.png
deleted file mode 100644
index ba7930b88f..0000000000
--- a/editor/icons/2x/icon_animation_tree_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_area.png b/editor/icons/2x/icon_area.png
deleted file mode 100644
index d9cefe8fc4..0000000000
--- a/editor/icons/2x/icon_area.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_area_2d.png b/editor/icons/2x/icon_area_2d.png
deleted file mode 100644
index 22616cc754..0000000000
--- a/editor/icons/2x/icon_area_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_arrow_left.png b/editor/icons/2x/icon_arrow_left.png
deleted file mode 100644
index 64bb9c81c0..0000000000
--- a/editor/icons/2x/icon_arrow_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_arrow_right.png b/editor/icons/2x/icon_arrow_right.png
deleted file mode 100644
index c3d6e66482..0000000000
--- a/editor/icons/2x/icon_arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_arrow_up.png b/editor/icons/2x/icon_arrow_up.png
deleted file mode 100644
index 008ef633ba..0000000000
--- a/editor/icons/2x/icon_arrow_up.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_asset_lib.png b/editor/icons/2x/icon_asset_lib.png
deleted file mode 100644
index 22c31fb2d5..0000000000
--- a/editor/icons/2x/icon_asset_lib.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_atlas_texture.png b/editor/icons/2x/icon_atlas_texture.png
deleted file mode 100644
index bd5bdc3148..0000000000
--- a/editor/icons/2x/icon_atlas_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_bus_bypass.png b/editor/icons/2x/icon_audio_bus_bypass.png
deleted file mode 100644
index b44c40fb35..0000000000
--- a/editor/icons/2x/icon_audio_bus_bypass.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_bus_layout.png b/editor/icons/2x/icon_audio_bus_layout.png
deleted file mode 100644
index d6a5cba5c1..0000000000
--- a/editor/icons/2x/icon_audio_bus_layout.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_bus_mute.png b/editor/icons/2x/icon_audio_bus_mute.png
deleted file mode 100644
index 4b334682f0..0000000000
--- a/editor/icons/2x/icon_audio_bus_mute.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_bus_solo.png b/editor/icons/2x/icon_audio_bus_solo.png
deleted file mode 100644
index b09a15351a..0000000000
--- a/editor/icons/2x/icon_audio_bus_solo.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_effect_amplify.png b/editor/icons/2x/icon_audio_effect_amplify.png
deleted file mode 100644
index 868bc6ddde..0000000000
--- a/editor/icons/2x/icon_audio_effect_amplify.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_stream_gibberish.png b/editor/icons/2x/icon_audio_stream_gibberish.png
deleted file mode 100644
index da200740a4..0000000000
--- a/editor/icons/2x/icon_audio_stream_gibberish.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_stream_player.png b/editor/icons/2x/icon_audio_stream_player.png
deleted file mode 100644
index 799b93cc5d..0000000000
--- a/editor/icons/2x/icon_audio_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_stream_player_2_d.png b/editor/icons/2x/icon_audio_stream_player_2_d.png
deleted file mode 100644
index f2eaa41769..0000000000
--- a/editor/icons/2x/icon_audio_stream_player_2_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_stream_player_3_d.png b/editor/icons/2x/icon_audio_stream_player_3_d.png
deleted file mode 100644
index 917719f54b..0000000000
--- a/editor/icons/2x/icon_audio_stream_player_3_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_audio_stream_sample.png b/editor/icons/2x/icon_audio_stream_sample.png
deleted file mode 100644
index baaa7bf86f..0000000000
--- a/editor/icons/2x/icon_audio_stream_sample.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_auto_play.png b/editor/icons/2x/icon_auto_play.png
deleted file mode 100644
index ec31dee958..0000000000
--- a/editor/icons/2x/icon_auto_play.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_back.png b/editor/icons/2x/icon_back.png
deleted file mode 100644
index b3c9b302b4..0000000000
--- a/editor/icons/2x/icon_back.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_back_buffer_copy.png b/editor/icons/2x/icon_back_buffer_copy.png
deleted file mode 100644
index 8b5c37b7e5..0000000000
--- a/editor/icons/2x/icon_back_buffer_copy.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bake.png b/editor/icons/2x/icon_bake.png
deleted file mode 100644
index 3c1cba5586..0000000000
--- a/editor/icons/2x/icon_bake.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_baked_light.png b/editor/icons/2x/icon_baked_light.png
deleted file mode 100644
index 9b13ed8ff1..0000000000
--- a/editor/icons/2x/icon_baked_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_baked_light_instance.png b/editor/icons/2x/icon_baked_light_instance.png
deleted file mode 100644
index 9b13ed8ff1..0000000000
--- a/editor/icons/2x/icon_baked_light_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_baked_light_sampler.png b/editor/icons/2x/icon_baked_light_sampler.png
deleted file mode 100644
index 8dfc1793f1..0000000000
--- a/editor/icons/2x/icon_baked_light_sampler.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bit_map.png b/editor/icons/2x/icon_bit_map.png
deleted file mode 100644
index 864d09991e..0000000000
--- a/editor/icons/2x/icon_bit_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bitmap_font.png b/editor/icons/2x/icon_bitmap_font.png
deleted file mode 100644
index c533b5f40e..0000000000
--- a/editor/icons/2x/icon_bitmap_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_blend.png b/editor/icons/2x/icon_blend.png
deleted file mode 100644
index 8dd30d1a04..0000000000
--- a/editor/icons/2x/icon_blend.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bone.png b/editor/icons/2x/icon_bone.png
deleted file mode 100644
index 0a8ceb4ce1..0000000000
--- a/editor/icons/2x/icon_bone.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bone_attachment.png b/editor/icons/2x/icon_bone_attachment.png
deleted file mode 100644
index 4e9333d3d1..0000000000
--- a/editor/icons/2x/icon_bone_attachment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bone_track.png b/editor/icons/2x/icon_bone_track.png
deleted file mode 100644
index a956923a07..0000000000
--- a/editor/icons/2x/icon_bone_track.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bool.png b/editor/icons/2x/icon_bool.png
deleted file mode 100644
index e2383809d8..0000000000
--- a/editor/icons/2x/icon_bool.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_box_shape.png b/editor/icons/2x/icon_box_shape.png
deleted file mode 100644
index 7d5356ad94..0000000000
--- a/editor/icons/2x/icon_box_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bus_vu_db.png b/editor/icons/2x/icon_bus_vu_db.png
deleted file mode 100644
index 8856b026f0..0000000000
--- a/editor/icons/2x/icon_bus_vu_db.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bus_vu_empty.png b/editor/icons/2x/icon_bus_vu_empty.png
deleted file mode 100644
index dfa1536fb4..0000000000
--- a/editor/icons/2x/icon_bus_vu_empty.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bus_vu_frozen.png b/editor/icons/2x/icon_bus_vu_frozen.png
deleted file mode 100644
index 94d5d335d6..0000000000
--- a/editor/icons/2x/icon_bus_vu_frozen.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_bus_vu_full.png b/editor/icons/2x/icon_bus_vu_full.png
deleted file mode 100644
index 2c2f0bca06..0000000000
--- a/editor/icons/2x/icon_bus_vu_full.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_button.png b/editor/icons/2x/icon_button.png
deleted file mode 100644
index dc07e92b73..0000000000
--- a/editor/icons/2x/icon_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_button_group.png b/editor/icons/2x/icon_button_group.png
deleted file mode 100644
index 15bcae7690..0000000000
--- a/editor/icons/2x/icon_button_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_camera.png b/editor/icons/2x/icon_camera.png
deleted file mode 100644
index ea17779784..0000000000
--- a/editor/icons/2x/icon_camera.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_camera_2d.png b/editor/icons/2x/icon_camera_2d.png
deleted file mode 100644
index c5c881c435..0000000000
--- a/editor/icons/2x/icon_camera_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_canvas_item.png b/editor/icons/2x/icon_canvas_item.png
deleted file mode 100644
index 42863020f0..0000000000
--- a/editor/icons/2x/icon_canvas_item.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_canvas_item_material.png b/editor/icons/2x/icon_canvas_item_material.png
deleted file mode 100644
index a9f7948060..0000000000
--- a/editor/icons/2x/icon_canvas_item_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_canvas_item_shader.png b/editor/icons/2x/icon_canvas_item_shader.png
deleted file mode 100644
index 5091a947c0..0000000000
--- a/editor/icons/2x/icon_canvas_item_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_canvas_item_shader_graph.png b/editor/icons/2x/icon_canvas_item_shader_graph.png
deleted file mode 100644
index a26a9754fe..0000000000
--- a/editor/icons/2x/icon_canvas_item_shader_graph.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_canvas_layer.png b/editor/icons/2x/icon_canvas_layer.png
deleted file mode 100644
index 8a4b31cd7d..0000000000
--- a/editor/icons/2x/icon_canvas_layer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_canvas_modulate.png b/editor/icons/2x/icon_canvas_modulate.png
deleted file mode 100644
index 6cc15e2655..0000000000
--- a/editor/icons/2x/icon_canvas_modulate.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_capsule_mesh.png b/editor/icons/2x/icon_capsule_mesh.png
deleted file mode 100644
index ebc48ee736..0000000000
--- a/editor/icons/2x/icon_capsule_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_capsule_shape.png b/editor/icons/2x/icon_capsule_shape.png
deleted file mode 100644
index f8844ecef4..0000000000
--- a/editor/icons/2x/icon_capsule_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_capsule_shape_2d.png b/editor/icons/2x/icon_capsule_shape_2d.png
deleted file mode 100644
index e449ce4985..0000000000
--- a/editor/icons/2x/icon_capsule_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_center_container.png b/editor/icons/2x/icon_center_container.png
deleted file mode 100644
index c715f0959e..0000000000
--- a/editor/icons/2x/icon_center_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_check_box.png b/editor/icons/2x/icon_check_box.png
deleted file mode 100644
index bade572304..0000000000
--- a/editor/icons/2x/icon_check_box.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_check_button.png b/editor/icons/2x/icon_check_button.png
deleted file mode 100644
index 4f498bb9ad..0000000000
--- a/editor/icons/2x/icon_check_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_checked.png b/editor/icons/2x/icon_checked.png
deleted file mode 100644
index 6083540ffe..0000000000
--- a/editor/icons/2x/icon_checked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_circle_shape_2d.png b/editor/icons/2x/icon_circle_shape_2d.png
deleted file mode 100644
index feb84d2f1c..0000000000
--- a/editor/icons/2x/icon_circle_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_class_list.png b/editor/icons/2x/icon_class_list.png
deleted file mode 100644
index 4ae0b3edab..0000000000
--- a/editor/icons/2x/icon_class_list.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_close.png b/editor/icons/2x/icon_close.png
deleted file mode 100644
index 62ab763fec..0000000000
--- a/editor/icons/2x/icon_close.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_collapse.png b/editor/icons/2x/icon_collapse.png
deleted file mode 100644
index 18486c03f5..0000000000
--- a/editor/icons/2x/icon_collapse.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_collision_2d.png b/editor/icons/2x/icon_collision_2d.png
deleted file mode 100644
index 491ebfaa78..0000000000
--- a/editor/icons/2x/icon_collision_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_collision_polygon.png b/editor/icons/2x/icon_collision_polygon.png
deleted file mode 100644
index ef786f6a3d..0000000000
--- a/editor/icons/2x/icon_collision_polygon.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_collision_polygon_2d.png b/editor/icons/2x/icon_collision_polygon_2d.png
deleted file mode 100644
index 491ebfaa78..0000000000
--- a/editor/icons/2x/icon_collision_polygon_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_collision_shape.png b/editor/icons/2x/icon_collision_shape.png
deleted file mode 100644
index 23bec8cdd9..0000000000
--- a/editor/icons/2x/icon_collision_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_collision_shape_2d.png b/editor/icons/2x/icon_collision_shape_2d.png
deleted file mode 100644
index c91456b58e..0000000000
--- a/editor/icons/2x/icon_collision_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_color.png b/editor/icons/2x/icon_color.png
deleted file mode 100644
index 125dd86ec0..0000000000
--- a/editor/icons/2x/icon_color.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_color_pick.png b/editor/icons/2x/icon_color_pick.png
deleted file mode 100644
index c61f2d4174..0000000000
--- a/editor/icons/2x/icon_color_pick.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_color_picker.png b/editor/icons/2x/icon_color_picker.png
deleted file mode 100644
index 2b683c75ea..0000000000
--- a/editor/icons/2x/icon_color_picker.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_color_picker_button.png b/editor/icons/2x/icon_color_picker_button.png
deleted file mode 100644
index 8d9bd17ccc..0000000000
--- a/editor/icons/2x/icon_color_picker_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_color_ramp.png b/editor/icons/2x/icon_color_ramp.png
deleted file mode 100644
index d0056f0c7d..0000000000
--- a/editor/icons/2x/icon_color_ramp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_color_rect.png b/editor/icons/2x/icon_color_rect.png
deleted file mode 100644
index 7f258d5d92..0000000000
--- a/editor/icons/2x/icon_color_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_concave_polygon_shape.png b/editor/icons/2x/icon_concave_polygon_shape.png
deleted file mode 100644
index 82a67ca4d0..0000000000
--- a/editor/icons/2x/icon_concave_polygon_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_concave_polygon_shape_2d.png b/editor/icons/2x/icon_concave_polygon_shape_2d.png
deleted file mode 100644
index 1ad3f30950..0000000000
--- a/editor/icons/2x/icon_concave_polygon_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_cone_twist_joint.png b/editor/icons/2x/icon_cone_twist_joint.png
deleted file mode 100644
index 3aeba5855d..0000000000
--- a/editor/icons/2x/icon_cone_twist_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_confirmation_dialog.png b/editor/icons/2x/icon_confirmation_dialog.png
deleted file mode 100644
index ebf5886445..0000000000
--- a/editor/icons/2x/icon_confirmation_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_connect.png b/editor/icons/2x/icon_connect.png
deleted file mode 100644
index 2a36b1716a..0000000000
--- a/editor/icons/2x/icon_connect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_connection_and_groups.png b/editor/icons/2x/icon_connection_and_groups.png
deleted file mode 100644
index e7619327f6..0000000000
--- a/editor/icons/2x/icon_connection_and_groups.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_container.png b/editor/icons/2x/icon_container.png
deleted file mode 100644
index baa09bbea9..0000000000
--- a/editor/icons/2x/icon_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control.png b/editor/icons/2x/icon_control.png
deleted file mode 100644
index 82d7457f3b..0000000000
--- a/editor/icons/2x/icon_control.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_bottom_center.png b/editor/icons/2x/icon_control_align_bottom_center.png
deleted file mode 100644
index 9dc738c746..0000000000
--- a/editor/icons/2x/icon_control_align_bottom_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_bottom_left.png b/editor/icons/2x/icon_control_align_bottom_left.png
deleted file mode 100644
index a11a13528d..0000000000
--- a/editor/icons/2x/icon_control_align_bottom_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_bottom_right.png b/editor/icons/2x/icon_control_align_bottom_right.png
deleted file mode 100644
index 7fee3f0752..0000000000
--- a/editor/icons/2x/icon_control_align_bottom_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_bottom_wide.png b/editor/icons/2x/icon_control_align_bottom_wide.png
deleted file mode 100644
index 573619ccbb..0000000000
--- a/editor/icons/2x/icon_control_align_bottom_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_center.png b/editor/icons/2x/icon_control_align_center.png
deleted file mode 100644
index 9850ecd775..0000000000
--- a/editor/icons/2x/icon_control_align_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_center_left.png b/editor/icons/2x/icon_control_align_center_left.png
deleted file mode 100644
index 2c48b889ad..0000000000
--- a/editor/icons/2x/icon_control_align_center_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_center_right.png b/editor/icons/2x/icon_control_align_center_right.png
deleted file mode 100644
index 4f87a68ad3..0000000000
--- a/editor/icons/2x/icon_control_align_center_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_left_center.png b/editor/icons/2x/icon_control_align_left_center.png
deleted file mode 100644
index c4250dcb37..0000000000
--- a/editor/icons/2x/icon_control_align_left_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_left_wide.png b/editor/icons/2x/icon_control_align_left_wide.png
deleted file mode 100644
index 5436397189..0000000000
--- a/editor/icons/2x/icon_control_align_left_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_right_center.png b/editor/icons/2x/icon_control_align_right_center.png
deleted file mode 100644
index b1fd9a075d..0000000000
--- a/editor/icons/2x/icon_control_align_right_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_right_wide.png b/editor/icons/2x/icon_control_align_right_wide.png
deleted file mode 100644
index 0ce81d3a50..0000000000
--- a/editor/icons/2x/icon_control_align_right_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_top_center.png b/editor/icons/2x/icon_control_align_top_center.png
deleted file mode 100644
index baa2601531..0000000000
--- a/editor/icons/2x/icon_control_align_top_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_top_left.png b/editor/icons/2x/icon_control_align_top_left.png
deleted file mode 100644
index 90f3cb6105..0000000000
--- a/editor/icons/2x/icon_control_align_top_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_top_right.png b/editor/icons/2x/icon_control_align_top_right.png
deleted file mode 100644
index 040b7b27ee..0000000000
--- a/editor/icons/2x/icon_control_align_top_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_top_wide.png b/editor/icons/2x/icon_control_align_top_wide.png
deleted file mode 100644
index 5c14782fc2..0000000000
--- a/editor/icons/2x/icon_control_align_top_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_align_wide.png b/editor/icons/2x/icon_control_align_wide.png
deleted file mode 100644
index 383b63d069..0000000000
--- a/editor/icons/2x/icon_control_align_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_hcenter_wide.png b/editor/icons/2x/icon_control_hcenter_wide.png
deleted file mode 100644
index 840ac557f5..0000000000
--- a/editor/icons/2x/icon_control_hcenter_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_control_vcenter_wide.png b/editor/icons/2x/icon_control_vcenter_wide.png
deleted file mode 100644
index a9e406d4b5..0000000000
--- a/editor/icons/2x/icon_control_vcenter_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_convex_polygon_shape.png b/editor/icons/2x/icon_convex_polygon_shape.png
deleted file mode 100644
index 40dd40f299..0000000000
--- a/editor/icons/2x/icon_convex_polygon_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_convex_polygon_shape_2d.png b/editor/icons/2x/icon_convex_polygon_shape_2d.png
deleted file mode 100644
index 6d46a96f9d..0000000000
--- a/editor/icons/2x/icon_convex_polygon_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_copy_node_path.png b/editor/icons/2x/icon_copy_node_path.png
deleted file mode 100644
index 29180d017c..0000000000
--- a/editor/icons/2x/icon_copy_node_path.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_create_new_scene_from.png b/editor/icons/2x/icon_create_new_scene_from.png
deleted file mode 100644
index cc3be48033..0000000000
--- a/editor/icons/2x/icon_create_new_scene_from.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_cube_map.png b/editor/icons/2x/icon_cube_map.png
deleted file mode 100644
index 0edf82a88e..0000000000
--- a/editor/icons/2x/icon_cube_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_cube_mesh.png b/editor/icons/2x/icon_cube_mesh.png
deleted file mode 100644
index b2acdd156d..0000000000
--- a/editor/icons/2x/icon_cube_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve.png b/editor/icons/2x/icon_curve.png
deleted file mode 100644
index fb8c209d1e..0000000000
--- a/editor/icons/2x/icon_curve.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_2d.png b/editor/icons/2x/icon_curve_2d.png
deleted file mode 100644
index 69a6f9a9dc..0000000000
--- a/editor/icons/2x/icon_curve_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_3d.png b/editor/icons/2x/icon_curve_3d.png
deleted file mode 100644
index e989df4769..0000000000
--- a/editor/icons/2x/icon_curve_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_close.png b/editor/icons/2x/icon_curve_close.png
deleted file mode 100644
index bd2de0edc8..0000000000
--- a/editor/icons/2x/icon_curve_close.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_constant.png b/editor/icons/2x/icon_curve_constant.png
deleted file mode 100644
index a6e32e0467..0000000000
--- a/editor/icons/2x/icon_curve_constant.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_create.png b/editor/icons/2x/icon_curve_create.png
deleted file mode 100644
index 39f10fd8db..0000000000
--- a/editor/icons/2x/icon_curve_create.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_curve.png b/editor/icons/2x/icon_curve_curve.png
deleted file mode 100644
index 6476579a64..0000000000
--- a/editor/icons/2x/icon_curve_curve.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_delete.png b/editor/icons/2x/icon_curve_delete.png
deleted file mode 100644
index 60c081bbd0..0000000000
--- a/editor/icons/2x/icon_curve_delete.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_edit.png b/editor/icons/2x/icon_curve_edit.png
deleted file mode 100644
index f9701e05cb..0000000000
--- a/editor/icons/2x/icon_curve_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_in.png b/editor/icons/2x/icon_curve_in.png
deleted file mode 100644
index a018d28035..0000000000
--- a/editor/icons/2x/icon_curve_in.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_in_out.png b/editor/icons/2x/icon_curve_in_out.png
deleted file mode 100644
index 8b8b8d7d8a..0000000000
--- a/editor/icons/2x/icon_curve_in_out.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_linear.png b/editor/icons/2x/icon_curve_linear.png
deleted file mode 100644
index 9733ec6f49..0000000000
--- a/editor/icons/2x/icon_curve_linear.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_out.png b/editor/icons/2x/icon_curve_out.png
deleted file mode 100644
index 49e62ef471..0000000000
--- a/editor/icons/2x/icon_curve_out.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_out_in.png b/editor/icons/2x/icon_curve_out_in.png
deleted file mode 100644
index cc716cdbe8..0000000000
--- a/editor/icons/2x/icon_curve_out_in.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_curve_texture.png b/editor/icons/2x/icon_curve_texture.png
deleted file mode 100644
index ccdebe89f5..0000000000
--- a/editor/icons/2x/icon_curve_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_cylinder_mesh.png b/editor/icons/2x/icon_cylinder_mesh.png
deleted file mode 100644
index b36f599522..0000000000
--- a/editor/icons/2x/icon_cylinder_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_damped_spring_joint_2d.png b/editor/icons/2x/icon_damped_spring_joint_2d.png
deleted file mode 100644
index a51081efca..0000000000
--- a/editor/icons/2x/icon_damped_spring_joint_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_debug.png b/editor/icons/2x/icon_debug.png
deleted file mode 100644
index c007d54b6e..0000000000
--- a/editor/icons/2x/icon_debug.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_debug_continue.png b/editor/icons/2x/icon_debug_continue.png
deleted file mode 100644
index be460bd61d..0000000000
--- a/editor/icons/2x/icon_debug_continue.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_debug_next.png b/editor/icons/2x/icon_debug_next.png
deleted file mode 100644
index b52e276f36..0000000000
--- a/editor/icons/2x/icon_debug_next.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_debug_step.png b/editor/icons/2x/icon_debug_step.png
deleted file mode 100644
index e06a1ad56b..0000000000
--- a/editor/icons/2x/icon_debug_step.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dependency_changed.png b/editor/icons/2x/icon_dependency_changed.png
deleted file mode 100644
index 3ec13e0e3b..0000000000
--- a/editor/icons/2x/icon_dependency_changed.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dependency_changed_hl.png b/editor/icons/2x/icon_dependency_changed_hl.png
deleted file mode 100644
index 630ea40554..0000000000
--- a/editor/icons/2x/icon_dependency_changed_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dependency_local_changed.png b/editor/icons/2x/icon_dependency_local_changed.png
deleted file mode 100644
index 9bc2545439..0000000000
--- a/editor/icons/2x/icon_dependency_local_changed.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dependency_local_changed_hl.png b/editor/icons/2x/icon_dependency_local_changed_hl.png
deleted file mode 100644
index 385371df9f..0000000000
--- a/editor/icons/2x/icon_dependency_local_changed_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dependency_ok.png b/editor/icons/2x/icon_dependency_ok.png
deleted file mode 100644
index 80fe7f573a..0000000000
--- a/editor/icons/2x/icon_dependency_ok.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dependency_ok_hl.png b/editor/icons/2x/icon_dependency_ok_hl.png
deleted file mode 100644
index 9d496688cc..0000000000
--- a/editor/icons/2x/icon_dependency_ok_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_directional_light.png b/editor/icons/2x/icon_directional_light.png
deleted file mode 100644
index 9a35325aec..0000000000
--- a/editor/icons/2x/icon_directional_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_distraction_free.png b/editor/icons/2x/icon_distraction_free.png
deleted file mode 100644
index 034239a4e7..0000000000
--- a/editor/icons/2x/icon_distraction_free.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dropdown.png b/editor/icons/2x/icon_dropdown.png
deleted file mode 100644
index 626dba79ec..0000000000
--- a/editor/icons/2x/icon_dropdown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_duplicate.png b/editor/icons/2x/icon_duplicate.png
deleted file mode 100644
index 37996482ae..0000000000
--- a/editor/icons/2x/icon_duplicate.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dynamic_font.png b/editor/icons/2x/icon_dynamic_font.png
deleted file mode 100644
index 1f1dc52dfb..0000000000
--- a/editor/icons/2x/icon_dynamic_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_dynamic_font_data.png b/editor/icons/2x/icon_dynamic_font_data.png
deleted file mode 100644
index 6d76303c81..0000000000
--- a/editor/icons/2x/icon_dynamic_font_data.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_edit.png b/editor/icons/2x/icon_edit.png
deleted file mode 100644
index b9ed2c3e58..0000000000
--- a/editor/icons/2x/icon_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_edit_key.png b/editor/icons/2x/icon_edit_key.png
deleted file mode 100644
index 58b9a6e749..0000000000
--- a/editor/icons/2x/icon_edit_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_edit_pivot.png b/editor/icons/2x/icon_edit_pivot.png
deleted file mode 100644
index ac5a2cafb9..0000000000
--- a/editor/icons/2x/icon_edit_pivot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_edit_resource.png b/editor/icons/2x/icon_edit_resource.png
deleted file mode 100644
index f0c7570160..0000000000
--- a/editor/icons/2x/icon_edit_resource.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_editor_3d_handle.png b/editor/icons/2x/icon_editor_3d_handle.png
deleted file mode 100644
index f76af85cc1..0000000000
--- a/editor/icons/2x/icon_editor_3d_handle.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_editor_handle.png b/editor/icons/2x/icon_editor_handle.png
deleted file mode 100644
index 355d8fe155..0000000000
--- a/editor/icons/2x/icon_editor_handle.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_editor_pivot.png b/editor/icons/2x/icon_editor_pivot.png
deleted file mode 100644
index e1666e38de..0000000000
--- a/editor/icons/2x/icon_editor_pivot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_editor_plugin.png b/editor/icons/2x/icon_editor_plugin.png
deleted file mode 100644
index f6411bb323..0000000000
--- a/editor/icons/2x/icon_editor_plugin.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_enum.png b/editor/icons/2x/icon_enum.png
deleted file mode 100644
index d9df3a3ec3..0000000000
--- a/editor/icons/2x/icon_enum.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_environment.png b/editor/icons/2x/icon_environment.png
deleted file mode 100644
index b8438202c1..0000000000
--- a/editor/icons/2x/icon_environment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_error.png b/editor/icons/2x/icon_error.png
deleted file mode 100644
index c915da1d27..0000000000
--- a/editor/icons/2x/icon_error.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_error_sign.png b/editor/icons/2x/icon_error_sign.png
deleted file mode 100644
index f1d16ea669..0000000000
--- a/editor/icons/2x/icon_error_sign.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_event_player.png b/editor/icons/2x/icon_event_player.png
deleted file mode 100644
index 2482c576db..0000000000
--- a/editor/icons/2x/icon_event_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_favorites.png b/editor/icons/2x/icon_favorites.png
deleted file mode 100644
index 7a63835b3d..0000000000
--- a/editor/icons/2x/icon_favorites.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_file.png b/editor/icons/2x/icon_file.png
deleted file mode 100644
index a10fe2cc60..0000000000
--- a/editor/icons/2x/icon_file.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_file_big.png b/editor/icons/2x/icon_file_big.png
deleted file mode 100644
index 092132ff36..0000000000
--- a/editor/icons/2x/icon_file_big.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_file_dialog.png b/editor/icons/2x/icon_file_dialog.png
deleted file mode 100644
index ca34090296..0000000000
--- a/editor/icons/2x/icon_file_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_file_list.png b/editor/icons/2x/icon_file_list.png
deleted file mode 100644
index d9df3a3ec3..0000000000
--- a/editor/icons/2x/icon_file_list.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_file_server.png b/editor/icons/2x/icon_file_server.png
deleted file mode 100644
index d8021a4067..0000000000
--- a/editor/icons/2x/icon_file_server.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_file_server_active.png b/editor/icons/2x/icon_file_server_active.png
deleted file mode 100644
index f503fe406b..0000000000
--- a/editor/icons/2x/icon_file_server_active.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_file_thumbnail.png b/editor/icons/2x/icon_file_thumbnail.png
deleted file mode 100644
index 5a8d282fe1..0000000000
--- a/editor/icons/2x/icon_file_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_filesystem.png b/editor/icons/2x/icon_filesystem.png
deleted file mode 100644
index 4ae0b3edab..0000000000
--- a/editor/icons/2x/icon_filesystem.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_fixed_material.png b/editor/icons/2x/icon_fixed_material.png
deleted file mode 100644
index 21bfb15838..0000000000
--- a/editor/icons/2x/icon_fixed_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_fixed_spatial_material.png b/editor/icons/2x/icon_fixed_spatial_material.png
deleted file mode 100644
index 65509a590e..0000000000
--- a/editor/icons/2x/icon_fixed_spatial_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_folder.png b/editor/icons/2x/icon_folder.png
deleted file mode 100644
index 2e797c448b..0000000000
--- a/editor/icons/2x/icon_folder.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_folder_big.png b/editor/icons/2x/icon_folder_big.png
deleted file mode 100644
index b89600619a..0000000000
--- a/editor/icons/2x/icon_folder_big.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_font.png b/editor/icons/2x/icon_font.png
deleted file mode 100644
index b78c95a827..0000000000
--- a/editor/icons/2x/icon_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_forward.png b/editor/icons/2x/icon_forward.png
deleted file mode 100644
index 6029449354..0000000000
--- a/editor/icons/2x/icon_forward.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_g_d_native_library.png b/editor/icons/2x/icon_g_d_native_library.png
deleted file mode 100644
index 1deb0664ed..0000000000
--- a/editor/icons/2x/icon_g_d_native_library.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_g_d_native_script.png b/editor/icons/2x/icon_g_d_native_script.png
deleted file mode 100644
index 31cc130867..0000000000
--- a/editor/icons/2x/icon_g_d_native_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_g_d_script.png b/editor/icons/2x/icon_g_d_script.png
deleted file mode 100644
index 6143191fc7..0000000000
--- a/editor/icons/2x/icon_g_d_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_g_i_probe.png b/editor/icons/2x/icon_g_i_probe.png
deleted file mode 100644
index 921f1cca42..0000000000
--- a/editor/icons/2x/icon_g_i_probe.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_g_i_probe_data.png b/editor/icons/2x/icon_g_i_probe_data.png
deleted file mode 100644
index 69c4ed7184..0000000000
--- a/editor/icons/2x/icon_g_i_probe_data.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_generic_6_d_o_f_joint.png b/editor/icons/2x/icon_generic_6_d_o_f_joint.png
deleted file mode 100644
index 506c873376..0000000000
--- a/editor/icons/2x/icon_generic_6_d_o_f_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gizmo_directional_light.png b/editor/icons/2x/icon_gizmo_directional_light.png
deleted file mode 100644
index 0d02788040..0000000000
--- a/editor/icons/2x/icon_gizmo_directional_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gizmo_light.png b/editor/icons/2x/icon_gizmo_light.png
deleted file mode 100644
index 2ba9689107..0000000000
--- a/editor/icons/2x/icon_gizmo_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gizmo_listener.png b/editor/icons/2x/icon_gizmo_listener.png
deleted file mode 100644
index bc2908824d..0000000000
--- a/editor/icons/2x/icon_gizmo_listener.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gizmo_spatial_sample_player.png b/editor/icons/2x/icon_gizmo_spatial_sample_player.png
deleted file mode 100644
index 78a88c55c1..0000000000
--- a/editor/icons/2x/icon_gizmo_spatial_sample_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gizmo_spatial_stream_player.png b/editor/icons/2x/icon_gizmo_spatial_stream_player.png
deleted file mode 100644
index 631f03e874..0000000000
--- a/editor/icons/2x/icon_gizmo_spatial_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_godot.png b/editor/icons/2x/icon_godot.png
deleted file mode 100644
index d40c25cae7..0000000000
--- a/editor/icons/2x/icon_godot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_godot_docs.png b/editor/icons/2x/icon_godot_docs.png
deleted file mode 100644
index be30f092ef..0000000000
--- a/editor/icons/2x/icon_godot_docs.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gradient.png b/editor/icons/2x/icon_gradient.png
deleted file mode 100644
index caf6da5836..0000000000
--- a/editor/icons/2x/icon_gradient.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gradient_texture.png b/editor/icons/2x/icon_gradient_texture.png
deleted file mode 100644
index d002c8534c..0000000000
--- a/editor/icons/2x/icon_gradient_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_color_ramp.png b/editor/icons/2x/icon_graph_color_ramp.png
deleted file mode 100644
index d0056f0c7d..0000000000
--- a/editor/icons/2x/icon_graph_color_ramp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_comment.png b/editor/icons/2x/icon_graph_comment.png
deleted file mode 100644
index 3dedbfab52..0000000000
--- a/editor/icons/2x/icon_graph_comment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_cube_uniform.png b/editor/icons/2x/icon_graph_cube_uniform.png
deleted file mode 100644
index 43ec1fa6d6..0000000000
--- a/editor/icons/2x/icon_graph_cube_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_curve_map.png b/editor/icons/2x/icon_graph_curve_map.png
deleted file mode 100644
index f29086e503..0000000000
--- a/editor/icons/2x/icon_graph_curve_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_default_texture.png b/editor/icons/2x/icon_graph_default_texture.png
deleted file mode 100644
index 45e4470502..0000000000
--- a/editor/icons/2x/icon_graph_default_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_edit.png b/editor/icons/2x/icon_graph_edit.png
deleted file mode 100644
index bd4386839d..0000000000
--- a/editor/icons/2x/icon_graph_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_input.png b/editor/icons/2x/icon_graph_input.png
deleted file mode 100644
index 3eeb29a3e7..0000000000
--- a/editor/icons/2x/icon_graph_input.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_node.png b/editor/icons/2x/icon_graph_node.png
deleted file mode 100644
index 7ce633af4d..0000000000
--- a/editor/icons/2x/icon_graph_node.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_rgb.png b/editor/icons/2x/icon_graph_rgb.png
deleted file mode 100644
index a9c39f0222..0000000000
--- a/editor/icons/2x/icon_graph_rgb.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_rgb_op.png b/editor/icons/2x/icon_graph_rgb_op.png
deleted file mode 100644
index 44812d8dd8..0000000000
--- a/editor/icons/2x/icon_graph_rgb_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_rgb_uniform.png b/editor/icons/2x/icon_graph_rgb_uniform.png
deleted file mode 100644
index b06f1d4d8d..0000000000
--- a/editor/icons/2x/icon_graph_rgb_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_scalar.png b/editor/icons/2x/icon_graph_scalar.png
deleted file mode 100644
index 382c429d35..0000000000
--- a/editor/icons/2x/icon_graph_scalar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_scalar_interp.png b/editor/icons/2x/icon_graph_scalar_interp.png
deleted file mode 100644
index 430e35470f..0000000000
--- a/editor/icons/2x/icon_graph_scalar_interp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_scalar_op.png b/editor/icons/2x/icon_graph_scalar_op.png
deleted file mode 100644
index b90b6a6190..0000000000
--- a/editor/icons/2x/icon_graph_scalar_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_scalar_uniform.png b/editor/icons/2x/icon_graph_scalar_uniform.png
deleted file mode 100644
index dff850df03..0000000000
--- a/editor/icons/2x/icon_graph_scalar_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_scalars_to_vec.png b/editor/icons/2x/icon_graph_scalars_to_vec.png
deleted file mode 100644
index 7363a47db3..0000000000
--- a/editor/icons/2x/icon_graph_scalars_to_vec.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_texscreen.png b/editor/icons/2x/icon_graph_texscreen.png
deleted file mode 100644
index 8b1d250129..0000000000
--- a/editor/icons/2x/icon_graph_texscreen.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_texture_uniform.png b/editor/icons/2x/icon_graph_texture_uniform.png
deleted file mode 100644
index ee211b6c03..0000000000
--- a/editor/icons/2x/icon_graph_texture_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_time.png b/editor/icons/2x/icon_graph_time.png
deleted file mode 100644
index 3cf9bf2035..0000000000
--- a/editor/icons/2x/icon_graph_time.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vec_dp.png b/editor/icons/2x/icon_graph_vec_dp.png
deleted file mode 100644
index e339f6a1e8..0000000000
--- a/editor/icons/2x/icon_graph_vec_dp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vec_interp.png b/editor/icons/2x/icon_graph_vec_interp.png
deleted file mode 100644
index 02e7915748..0000000000
--- a/editor/icons/2x/icon_graph_vec_interp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vec_length.png b/editor/icons/2x/icon_graph_vec_length.png
deleted file mode 100644
index 857e006b6e..0000000000
--- a/editor/icons/2x/icon_graph_vec_length.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vec_op.png b/editor/icons/2x/icon_graph_vec_op.png
deleted file mode 100644
index 282336f9d0..0000000000
--- a/editor/icons/2x/icon_graph_vec_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vec_scalar_op.png b/editor/icons/2x/icon_graph_vec_scalar_op.png
deleted file mode 100644
index 38d355ef06..0000000000
--- a/editor/icons/2x/icon_graph_vec_scalar_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vec_to_scalars.png b/editor/icons/2x/icon_graph_vec_to_scalars.png
deleted file mode 100644
index 6d16ea72fe..0000000000
--- a/editor/icons/2x/icon_graph_vec_to_scalars.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vecs_to_xform.png b/editor/icons/2x/icon_graph_vecs_to_xform.png
deleted file mode 100644
index 0f2ad7a83a..0000000000
--- a/editor/icons/2x/icon_graph_vecs_to_xform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vector.png b/editor/icons/2x/icon_graph_vector.png
deleted file mode 100644
index eb4e94acee..0000000000
--- a/editor/icons/2x/icon_graph_vector.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_vector_uniform.png b/editor/icons/2x/icon_graph_vector_uniform.png
deleted file mode 100644
index 94cde72904..0000000000
--- a/editor/icons/2x/icon_graph_vector_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform.png b/editor/icons/2x/icon_graph_xform.png
deleted file mode 100644
index 4d823e2aa9..0000000000
--- a/editor/icons/2x/icon_graph_xform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform_mult.png b/editor/icons/2x/icon_graph_xform_mult.png
deleted file mode 100644
index a6d41e43a4..0000000000
--- a/editor/icons/2x/icon_graph_xform_mult.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform_scalar_func.png b/editor/icons/2x/icon_graph_xform_scalar_func.png
deleted file mode 100644
index 06826a1ca2..0000000000
--- a/editor/icons/2x/icon_graph_xform_scalar_func.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform_to_vecs.png b/editor/icons/2x/icon_graph_xform_to_vecs.png
deleted file mode 100644
index d274ad99a6..0000000000
--- a/editor/icons/2x/icon_graph_xform_to_vecs.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform_uniform.png b/editor/icons/2x/icon_graph_xform_uniform.png
deleted file mode 100644
index b87f9936b8..0000000000
--- a/editor/icons/2x/icon_graph_xform_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform_vec_func.png b/editor/icons/2x/icon_graph_xform_vec_func.png
deleted file mode 100644
index 007555ff7b..0000000000
--- a/editor/icons/2x/icon_graph_xform_vec_func.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform_vec_imult.png b/editor/icons/2x/icon_graph_xform_vec_imult.png
deleted file mode 100644
index 39e25ef9b3..0000000000
--- a/editor/icons/2x/icon_graph_xform_vec_imult.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_graph_xform_vec_mult.png b/editor/icons/2x/icon_graph_xform_vec_mult.png
deleted file mode 100644
index 32802fa1ed..0000000000
--- a/editor/icons/2x/icon_graph_xform_vec_mult.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_grid.png b/editor/icons/2x/icon_grid.png
deleted file mode 100644
index 99d896c012..0000000000
--- a/editor/icons/2x/icon_grid.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_grid_container.png b/editor/icons/2x/icon_grid_container.png
deleted file mode 100644
index b83b1f4347..0000000000
--- a/editor/icons/2x/icon_grid_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_grid_map.png b/editor/icons/2x/icon_grid_map.png
deleted file mode 100644
index 83baf36c1b..0000000000
--- a/editor/icons/2x/icon_grid_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_groove_joint_2d.png b/editor/icons/2x/icon_groove_joint_2d.png
deleted file mode 100644
index ab9cd4f3eb..0000000000
--- a/editor/icons/2x/icon_groove_joint_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_group.png b/editor/icons/2x/icon_group.png
deleted file mode 100644
index 158efa5fe4..0000000000
--- a/editor/icons/2x/icon_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_groups.png b/editor/icons/2x/icon_groups.png
deleted file mode 100644
index 203d36071b..0000000000
--- a/editor/icons/2x/icon_groups.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gui_close_dark.png b/editor/icons/2x/icon_gui_close_dark.png
deleted file mode 100644
index fe47e003f9..0000000000
--- a/editor/icons/2x/icon_gui_close_dark.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_gui_close_light.png b/editor/icons/2x/icon_gui_close_light.png
deleted file mode 100644
index 2d93123f20..0000000000
--- a/editor/icons/2x/icon_gui_close_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_h_box_container.png b/editor/icons/2x/icon_h_box_container.png
deleted file mode 100644
index 3767cab1cf..0000000000
--- a/editor/icons/2x/icon_h_box_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_h_button_array.png b/editor/icons/2x/icon_h_button_array.png
deleted file mode 100644
index 3e4464f33e..0000000000
--- a/editor/icons/2x/icon_h_button_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_h_scroll_bar.png b/editor/icons/2x/icon_h_scroll_bar.png
deleted file mode 100644
index 6186d23742..0000000000
--- a/editor/icons/2x/icon_h_scroll_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_h_separator.png b/editor/icons/2x/icon_h_separator.png
deleted file mode 100644
index 7dd7e1e314..0000000000
--- a/editor/icons/2x/icon_h_separator.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_h_slider.png b/editor/icons/2x/icon_h_slider.png
deleted file mode 100644
index dee580d909..0000000000
--- a/editor/icons/2x/icon_h_slider.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_h_split_container.png b/editor/icons/2x/icon_h_split_container.png
deleted file mode 100644
index 33e18946c1..0000000000
--- a/editor/icons/2x/icon_h_split_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_h_t_t_p_request.png b/editor/icons/2x/icon_h_t_t_p_request.png
deleted file mode 100644
index a334dea4e2..0000000000
--- a/editor/icons/2x/icon_h_t_t_p_request.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_headphones.png b/editor/icons/2x/icon_headphones.png
deleted file mode 100644
index eca62b9372..0000000000
--- a/editor/icons/2x/icon_headphones.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_help.png b/editor/icons/2x/icon_help.png
deleted file mode 100644
index 771b815020..0000000000
--- a/editor/icons/2x/icon_help.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_help_search.png b/editor/icons/2x/icon_help_search.png
deleted file mode 100644
index a35c4b6070..0000000000
--- a/editor/icons/2x/icon_help_search.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_hidden.png b/editor/icons/2x/icon_hidden.png
deleted file mode 100644
index 09d38c5bef..0000000000
--- a/editor/icons/2x/icon_hidden.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_hinge_joint.png b/editor/icons/2x/icon_hinge_joint.png
deleted file mode 100644
index b888102573..0000000000
--- a/editor/icons/2x/icon_hinge_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_history.png b/editor/icons/2x/icon_history.png
deleted file mode 100644
index 153a2b4edf..0000000000
--- a/editor/icons/2x/icon_history.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_hsize.png b/editor/icons/2x/icon_hsize.png
deleted file mode 100644
index 3b096dce88..0000000000
--- a/editor/icons/2x/icon_hsize.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_hslider_bg.png b/editor/icons/2x/icon_hslider_bg.png
deleted file mode 100644
index e3c61f25e0..0000000000
--- a/editor/icons/2x/icon_hslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_image.png b/editor/icons/2x/icon_image.png
deleted file mode 100644
index 951b2242f1..0000000000
--- a/editor/icons/2x/icon_image.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_image_sky_box.png b/editor/icons/2x/icon_image_sky_box.png
deleted file mode 100644
index 487178afab..0000000000
--- a/editor/icons/2x/icon_image_sky_box.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_image_texture.png b/editor/icons/2x/icon_image_texture.png
deleted file mode 100644
index ad5d04dfee..0000000000
--- a/editor/icons/2x/icon_image_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_immediate_geometry.png b/editor/icons/2x/icon_immediate_geometry.png
deleted file mode 100644
index 5fafecadc3..0000000000
--- a/editor/icons/2x/icon_immediate_geometry.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_import_check.png b/editor/icons/2x/icon_import_check.png
deleted file mode 100644
index 98e76e2640..0000000000
--- a/editor/icons/2x/icon_import_check.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_import_fail.png b/editor/icons/2x/icon_import_fail.png
deleted file mode 100644
index f89c2f5c75..0000000000
--- a/editor/icons/2x/icon_import_fail.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_instance.png b/editor/icons/2x/icon_instance.png
deleted file mode 100644
index 9b4731de03..0000000000
--- a/editor/icons/2x/icon_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_instance_options.png b/editor/icons/2x/icon_instance_options.png
deleted file mode 100644
index 28e2db25f2..0000000000
--- a/editor/icons/2x/icon_instance_options.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_integer.png b/editor/icons/2x/icon_integer.png
deleted file mode 100644
index 7ad2f62458..0000000000
--- a/editor/icons/2x/icon_integer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_interp_cubic.png b/editor/icons/2x/icon_interp_cubic.png
deleted file mode 100644
index e33bb65577..0000000000
--- a/editor/icons/2x/icon_interp_cubic.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_interp_linear.png b/editor/icons/2x/icon_interp_linear.png
deleted file mode 100644
index 205f7febd5..0000000000
--- a/editor/icons/2x/icon_interp_linear.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_interp_raw.png b/editor/icons/2x/icon_interp_raw.png
deleted file mode 100644
index 848ef07be6..0000000000
--- a/editor/icons/2x/icon_interp_raw.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_interp_wrap_clamp.png b/editor/icons/2x/icon_interp_wrap_clamp.png
deleted file mode 100644
index 93a5bc56ee..0000000000
--- a/editor/icons/2x/icon_interp_wrap_clamp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_interp_wrap_loop.png b/editor/icons/2x/icon_interp_wrap_loop.png
deleted file mode 100644
index 3e656f7b07..0000000000
--- a/editor/icons/2x/icon_interp_wrap_loop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_interpolated_camera.png b/editor/icons/2x/icon_interpolated_camera.png
deleted file mode 100644
index e4551a84ce..0000000000
--- a/editor/icons/2x/icon_interpolated_camera.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_invalid_key.png b/editor/icons/2x/icon_invalid_key.png
deleted file mode 100644
index c34f2bc276..0000000000
--- a/editor/icons/2x/icon_invalid_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_inverse_kinematics.png b/editor/icons/2x/icon_inverse_kinematics.png
deleted file mode 100644
index 3b10c9590c..0000000000
--- a/editor/icons/2x/icon_inverse_kinematics.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_item_list.png b/editor/icons/2x/icon_item_list.png
deleted file mode 100644
index 11a375caac..0000000000
--- a/editor/icons/2x/icon_item_list.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_joy_axis.png b/editor/icons/2x/icon_joy_axis.png
deleted file mode 100644
index 90f3d7a444..0000000000
--- a/editor/icons/2x/icon_joy_axis.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_joy_button.png b/editor/icons/2x/icon_joy_button.png
deleted file mode 100644
index a6b911ba1b..0000000000
--- a/editor/icons/2x/icon_joy_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_joypad.png b/editor/icons/2x/icon_joypad.png
deleted file mode 100644
index 285d048544..0000000000
--- a/editor/icons/2x/icon_joypad.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_key.png b/editor/icons/2x/icon_key.png
deleted file mode 100644
index d0c07bb1ea..0000000000
--- a/editor/icons/2x/icon_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_key_hover.png b/editor/icons/2x/icon_key_hover.png
deleted file mode 100644
index 5dd96e8dca..0000000000
--- a/editor/icons/2x/icon_key_hover.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_key_invalid.png b/editor/icons/2x/icon_key_invalid.png
deleted file mode 100644
index c34f2bc276..0000000000
--- a/editor/icons/2x/icon_key_invalid.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_key_next.png b/editor/icons/2x/icon_key_next.png
deleted file mode 100644
index d35b52d3c7..0000000000
--- a/editor/icons/2x/icon_key_next.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_key_selected.png b/editor/icons/2x/icon_key_selected.png
deleted file mode 100644
index 7fc9ffdeb4..0000000000
--- a/editor/icons/2x/icon_key_selected.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_key_value.png b/editor/icons/2x/icon_key_value.png
deleted file mode 100644
index 94921e2446..0000000000
--- a/editor/icons/2x/icon_key_value.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_key_xform.png b/editor/icons/2x/icon_key_xform.png
deleted file mode 100644
index 5749aac8f4..0000000000
--- a/editor/icons/2x/icon_key_xform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_keyboard.png b/editor/icons/2x/icon_keyboard.png
deleted file mode 100644
index a7daa06cc2..0000000000
--- a/editor/icons/2x/icon_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_kinematic_body.png b/editor/icons/2x/icon_kinematic_body.png
deleted file mode 100644
index 59298dfa72..0000000000
--- a/editor/icons/2x/icon_kinematic_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_kinematic_body_2d.png b/editor/icons/2x/icon_kinematic_body_2d.png
deleted file mode 100644
index 5fd3b319ac..0000000000
--- a/editor/icons/2x/icon_kinematic_body_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_label.png b/editor/icons/2x/icon_label.png
deleted file mode 100644
index c5e3bc844d..0000000000
--- a/editor/icons/2x/icon_label.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_large_texture.png b/editor/icons/2x/icon_large_texture.png
deleted file mode 100644
index dd1ec86d39..0000000000
--- a/editor/icons/2x/icon_large_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_light_2d.png b/editor/icons/2x/icon_light_2d.png
deleted file mode 100644
index d441659354..0000000000
--- a/editor/icons/2x/icon_light_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_light_occluder_2d.png b/editor/icons/2x/icon_light_occluder_2d.png
deleted file mode 100644
index 90e4387297..0000000000
--- a/editor/icons/2x/icon_light_occluder_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_line_2d.png b/editor/icons/2x/icon_line_2d.png
deleted file mode 100644
index 66e5bbc5ba..0000000000
--- a/editor/icons/2x/icon_line_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_line_edit.png b/editor/icons/2x/icon_line_edit.png
deleted file mode 100644
index e6a0bc4777..0000000000
--- a/editor/icons/2x/icon_line_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_line_shape_2d.png b/editor/icons/2x/icon_line_shape_2d.png
deleted file mode 100644
index 490db5ca5b..0000000000
--- a/editor/icons/2x/icon_line_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_link_button.png b/editor/icons/2x/icon_link_button.png
deleted file mode 100644
index 20f300a553..0000000000
--- a/editor/icons/2x/icon_link_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_list_select.png b/editor/icons/2x/icon_list_select.png
deleted file mode 100644
index 9f7fa5b865..0000000000
--- a/editor/icons/2x/icon_list_select.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_listener.png b/editor/icons/2x/icon_listener.png
deleted file mode 100644
index 1441a81bdd..0000000000
--- a/editor/icons/2x/icon_listener.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_load.png b/editor/icons/2x/icon_load.png
deleted file mode 100644
index 759381d636..0000000000
--- a/editor/icons/2x/icon_load.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_lock.png b/editor/icons/2x/icon_lock.png
deleted file mode 100644
index 912eaf9eb9..0000000000
--- a/editor/icons/2x/icon_lock.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_loop.png b/editor/icons/2x/icon_loop.png
deleted file mode 100644
index bd1322ae00..0000000000
--- a/editor/icons/2x/icon_loop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_loop_interpolation.png b/editor/icons/2x/icon_loop_interpolation.png
deleted file mode 100644
index 6009b50300..0000000000
--- a/editor/icons/2x/icon_loop_interpolation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_main_play.png b/editor/icons/2x/icon_main_play.png
deleted file mode 100644
index 1f69ce6f17..0000000000
--- a/editor/icons/2x/icon_main_play.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_main_stop.png b/editor/icons/2x/icon_main_stop.png
deleted file mode 100644
index 5048141485..0000000000
--- a/editor/icons/2x/icon_main_stop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_margin_container.png b/editor/icons/2x/icon_margin_container.png
deleted file mode 100644
index 10eda265e0..0000000000
--- a/editor/icons/2x/icon_margin_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_cube.png b/editor/icons/2x/icon_material_preview_cube.png
deleted file mode 100644
index 2507c969c3..0000000000
--- a/editor/icons/2x/icon_material_preview_cube.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_cube_off.png b/editor/icons/2x/icon_material_preview_cube_off.png
deleted file mode 100644
index 079b3a6645..0000000000
--- a/editor/icons/2x/icon_material_preview_cube_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_light_1.png b/editor/icons/2x/icon_material_preview_light_1.png
deleted file mode 100644
index f1d0ccdaca..0000000000
--- a/editor/icons/2x/icon_material_preview_light_1.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_light_1_off.png b/editor/icons/2x/icon_material_preview_light_1_off.png
deleted file mode 100644
index 5a42b7f2a1..0000000000
--- a/editor/icons/2x/icon_material_preview_light_1_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_light_2.png b/editor/icons/2x/icon_material_preview_light_2.png
deleted file mode 100644
index 934e696b51..0000000000
--- a/editor/icons/2x/icon_material_preview_light_2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_light_2_off.png b/editor/icons/2x/icon_material_preview_light_2_off.png
deleted file mode 100644
index 1aa4c0bb79..0000000000
--- a/editor/icons/2x/icon_material_preview_light_2_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_sphere.png b/editor/icons/2x/icon_material_preview_sphere.png
deleted file mode 100644
index f5cc7f7819..0000000000
--- a/editor/icons/2x/icon_material_preview_sphere.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_preview_sphere_off.png b/editor/icons/2x/icon_material_preview_sphere_off.png
deleted file mode 100644
index 7ccef62553..0000000000
--- a/editor/icons/2x/icon_material_preview_sphere_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_shader.png b/editor/icons/2x/icon_material_shader.png
deleted file mode 100644
index f8c2e15fcb..0000000000
--- a/editor/icons/2x/icon_material_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_material_shader_graph.png b/editor/icons/2x/icon_material_shader_graph.png
deleted file mode 100644
index a26a9754fe..0000000000
--- a/editor/icons/2x/icon_material_shader_graph.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_matrix.png b/editor/icons/2x/icon_matrix.png
deleted file mode 100644
index 0ac4ae170b..0000000000
--- a/editor/icons/2x/icon_matrix.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_menu_button.png b/editor/icons/2x/icon_menu_button.png
deleted file mode 100644
index abf9b490e3..0000000000
--- a/editor/icons/2x/icon_menu_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mesh.png b/editor/icons/2x/icon_mesh.png
deleted file mode 100644
index 19b9095619..0000000000
--- a/editor/icons/2x/icon_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mesh_instance.png b/editor/icons/2x/icon_mesh_instance.png
deleted file mode 100644
index 02f3f5ffaa..0000000000
--- a/editor/icons/2x/icon_mesh_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mesh_library.png b/editor/icons/2x/icon_mesh_library.png
deleted file mode 100644
index 2495e4a037..0000000000
--- a/editor/icons/2x/icon_mesh_library.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_aabb.png b/editor/icons/2x/icon_mini_aabb.png
deleted file mode 100644
index 25603eec49..0000000000
--- a/editor/icons/2x/icon_mini_aabb.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_array.png b/editor/icons/2x/icon_mini_array.png
deleted file mode 100644
index 5c7bde2639..0000000000
--- a/editor/icons/2x/icon_mini_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_basis.png b/editor/icons/2x/icon_mini_basis.png
deleted file mode 100644
index 276b48d722..0000000000
--- a/editor/icons/2x/icon_mini_basis.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_boolean.png b/editor/icons/2x/icon_mini_boolean.png
deleted file mode 100644
index a7d00056bb..0000000000
--- a/editor/icons/2x/icon_mini_boolean.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_color.png b/editor/icons/2x/icon_mini_color.png
deleted file mode 100644
index f4059bfb91..0000000000
--- a/editor/icons/2x/icon_mini_color.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_color_array.png b/editor/icons/2x/icon_mini_color_array.png
deleted file mode 100644
index 26f1d9fce4..0000000000
--- a/editor/icons/2x/icon_mini_color_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_dictionary.png b/editor/icons/2x/icon_mini_dictionary.png
deleted file mode 100644
index 241e0587b4..0000000000
--- a/editor/icons/2x/icon_mini_dictionary.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_float.png b/editor/icons/2x/icon_mini_float.png
deleted file mode 100644
index 6edf76ece1..0000000000
--- a/editor/icons/2x/icon_mini_float.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_float_array.png b/editor/icons/2x/icon_mini_float_array.png
deleted file mode 100644
index 5a79fab721..0000000000
--- a/editor/icons/2x/icon_mini_float_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_image.png b/editor/icons/2x/icon_mini_image.png
deleted file mode 100644
index 98faebeef2..0000000000
--- a/editor/icons/2x/icon_mini_image.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_input.png b/editor/icons/2x/icon_mini_input.png
deleted file mode 100644
index 48536e156c..0000000000
--- a/editor/icons/2x/icon_mini_input.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_int_array.png b/editor/icons/2x/icon_mini_int_array.png
deleted file mode 100644
index 790ed44c30..0000000000
--- a/editor/icons/2x/icon_mini_int_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_integer.png b/editor/icons/2x/icon_mini_integer.png
deleted file mode 100644
index cd9118f024..0000000000
--- a/editor/icons/2x/icon_mini_integer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_matrix3.png b/editor/icons/2x/icon_mini_matrix3.png
deleted file mode 100644
index 276b48d722..0000000000
--- a/editor/icons/2x/icon_mini_matrix3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_matrix32.png b/editor/icons/2x/icon_mini_matrix32.png
deleted file mode 100644
index c2f7ea3817..0000000000
--- a/editor/icons/2x/icon_mini_matrix32.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_object.png b/editor/icons/2x/icon_mini_object.png
deleted file mode 100644
index 7987f750ff..0000000000
--- a/editor/icons/2x/icon_mini_object.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_path.png b/editor/icons/2x/icon_mini_path.png
deleted file mode 100644
index 2e60a46086..0000000000
--- a/editor/icons/2x/icon_mini_path.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_plane.png b/editor/icons/2x/icon_mini_plane.png
deleted file mode 100644
index 12b5cd26cc..0000000000
--- a/editor/icons/2x/icon_mini_plane.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_quat.png b/editor/icons/2x/icon_mini_quat.png
deleted file mode 100644
index 9a33902e59..0000000000
--- a/editor/icons/2x/icon_mini_quat.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_raw_array.png b/editor/icons/2x/icon_mini_raw_array.png
deleted file mode 100644
index 629b01e72a..0000000000
--- a/editor/icons/2x/icon_mini_raw_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_rect2.png b/editor/icons/2x/icon_mini_rect2.png
deleted file mode 100644
index 88b12e3a3a..0000000000
--- a/editor/icons/2x/icon_mini_rect2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_rid.png b/editor/icons/2x/icon_mini_rid.png
deleted file mode 100644
index 5388c19817..0000000000
--- a/editor/icons/2x/icon_mini_rid.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_string.png b/editor/icons/2x/icon_mini_string.png
deleted file mode 100644
index 2264451c73..0000000000
--- a/editor/icons/2x/icon_mini_string.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_string_array.png b/editor/icons/2x/icon_mini_string_array.png
deleted file mode 100644
index fa8109b88a..0000000000
--- a/editor/icons/2x/icon_mini_string_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_transform.png b/editor/icons/2x/icon_mini_transform.png
deleted file mode 100644
index 5144871c5c..0000000000
--- a/editor/icons/2x/icon_mini_transform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_transform2D.png b/editor/icons/2x/icon_mini_transform2D.png
deleted file mode 100644
index 4237eced18..0000000000
--- a/editor/icons/2x/icon_mini_transform2D.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_variant.png b/editor/icons/2x/icon_mini_variant.png
deleted file mode 100644
index ae0aad16cf..0000000000
--- a/editor/icons/2x/icon_mini_variant.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_vector2.png b/editor/icons/2x/icon_mini_vector2.png
deleted file mode 100644
index 9e608e61c1..0000000000
--- a/editor/icons/2x/icon_mini_vector2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_vector2_array.png b/editor/icons/2x/icon_mini_vector2_array.png
deleted file mode 100644
index 247c0e2592..0000000000
--- a/editor/icons/2x/icon_mini_vector2_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_vector3.png b/editor/icons/2x/icon_mini_vector3.png
deleted file mode 100644
index 0b84b4628f..0000000000
--- a/editor/icons/2x/icon_mini_vector3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mini_vector3_array.png b/editor/icons/2x/icon_mini_vector3_array.png
deleted file mode 100644
index 68058e4232..0000000000
--- a/editor/icons/2x/icon_mini_vector3_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mirror_x.png b/editor/icons/2x/icon_mirror_x.png
deleted file mode 100644
index b5a8867a16..0000000000
--- a/editor/icons/2x/icon_mirror_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mirror_y.png b/editor/icons/2x/icon_mirror_y.png
deleted file mode 100644
index 4a0483eb70..0000000000
--- a/editor/icons/2x/icon_mirror_y.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_mouse.png b/editor/icons/2x/icon_mouse.png
deleted file mode 100644
index 9c4a76bd4f..0000000000
--- a/editor/icons/2x/icon_mouse.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_move_down.png b/editor/icons/2x/icon_move_down.png
deleted file mode 100644
index 2a17aab204..0000000000
--- a/editor/icons/2x/icon_move_down.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_move_point.png b/editor/icons/2x/icon_move_point.png
deleted file mode 100644
index 5d135ae294..0000000000
--- a/editor/icons/2x/icon_move_point.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_move_up.png b/editor/icons/2x/icon_move_up.png
deleted file mode 100644
index d8d7f5a207..0000000000
--- a/editor/icons/2x/icon_move_up.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_multi_edit.png b/editor/icons/2x/icon_multi_edit.png
deleted file mode 100644
index 93360b93f7..0000000000
--- a/editor/icons/2x/icon_multi_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_multi_line.png b/editor/icons/2x/icon_multi_line.png
deleted file mode 100644
index 5d43b79e8a..0000000000
--- a/editor/icons/2x/icon_multi_line.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_multi_mesh.png b/editor/icons/2x/icon_multi_mesh.png
deleted file mode 100644
index 35b99d6698..0000000000
--- a/editor/icons/2x/icon_multi_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_multi_mesh_instance.png b/editor/icons/2x/icon_multi_mesh_instance.png
deleted file mode 100644
index f69768c6e3..0000000000
--- a/editor/icons/2x/icon_multi_mesh_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_multi_node_edit.png b/editor/icons/2x/icon_multi_node_edit.png
deleted file mode 100644
index 93360b93f7..0000000000
--- a/editor/icons/2x/icon_multi_node_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_multi_script.png b/editor/icons/2x/icon_multi_script.png
deleted file mode 100644
index 8a7dd4ee11..0000000000
--- a/editor/icons/2x/icon_multi_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_native_script.png b/editor/icons/2x/icon_native_script.png
deleted file mode 100644
index 31cc130867..0000000000
--- a/editor/icons/2x/icon_native_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_navigation.png b/editor/icons/2x/icon_navigation.png
deleted file mode 100644
index 3cd838d2fc..0000000000
--- a/editor/icons/2x/icon_navigation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_navigation_2d.png b/editor/icons/2x/icon_navigation_2d.png
deleted file mode 100644
index 9efbeaaef0..0000000000
--- a/editor/icons/2x/icon_navigation_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_navigation_mesh.png b/editor/icons/2x/icon_navigation_mesh.png
deleted file mode 100644
index 35b893c3bb..0000000000
--- a/editor/icons/2x/icon_navigation_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_navigation_mesh_instance.png b/editor/icons/2x/icon_navigation_mesh_instance.png
deleted file mode 100644
index 404fad2d31..0000000000
--- a/editor/icons/2x/icon_navigation_mesh_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_navigation_polygon.png b/editor/icons/2x/icon_navigation_polygon.png
deleted file mode 100644
index 3f4845e206..0000000000
--- a/editor/icons/2x/icon_navigation_polygon.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_navigation_polygon_instance.png b/editor/icons/2x/icon_navigation_polygon_instance.png
deleted file mode 100644
index 5556835d76..0000000000
--- a/editor/icons/2x/icon_navigation_polygon_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_new.png b/editor/icons/2x/icon_new.png
deleted file mode 100644
index a10fe2cc60..0000000000
--- a/editor/icons/2x/icon_new.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_nine_patch_rect.png b/editor/icons/2x/icon_nine_patch_rect.png
deleted file mode 100644
index 95edb79936..0000000000
--- a/editor/icons/2x/icon_nine_patch_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_node.png b/editor/icons/2x/icon_node.png
deleted file mode 100644
index e487f988a2..0000000000
--- a/editor/icons/2x/icon_node.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_node_2d.png b/editor/icons/2x/icon_node_2d.png
deleted file mode 100644
index 967d4b7da6..0000000000
--- a/editor/icons/2x/icon_node_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_node_warning.png b/editor/icons/2x/icon_node_warning.png
deleted file mode 100644
index 397a57bf1f..0000000000
--- a/editor/icons/2x/icon_node_warning.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_non_favorite.png b/editor/icons/2x/icon_non_favorite.png
deleted file mode 100644
index 18aa94e6b9..0000000000
--- a/editor/icons/2x/icon_non_favorite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_object.png b/editor/icons/2x/icon_object.png
deleted file mode 100644
index dc0a94aacd..0000000000
--- a/editor/icons/2x/icon_object.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_occluder_polygon_2d.png b/editor/icons/2x/icon_occluder_polygon_2d.png
deleted file mode 100644
index e5e27dda32..0000000000
--- a/editor/icons/2x/icon_occluder_polygon_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_omni_light.png b/editor/icons/2x/icon_omni_light.png
deleted file mode 100644
index 2c44252b9c..0000000000
--- a/editor/icons/2x/icon_omni_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_open.png b/editor/icons/2x/icon_open.png
deleted file mode 100644
index 759381d636..0000000000
--- a/editor/icons/2x/icon_open.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_option_arrow.png b/editor/icons/2x/icon_option_arrow.png
deleted file mode 100644
index ed177a4451..0000000000
--- a/editor/icons/2x/icon_option_arrow.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_option_button.png b/editor/icons/2x/icon_option_button.png
deleted file mode 100644
index 0e9998f856..0000000000
--- a/editor/icons/2x/icon_option_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_override.png b/editor/icons/2x/icon_override.png
deleted file mode 100644
index d735a1c734..0000000000
--- a/editor/icons/2x/icon_override.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_p_hash_translation.png b/editor/icons/2x/icon_p_hash_translation.png
deleted file mode 100644
index 0ddc1da282..0000000000
--- a/editor/icons/2x/icon_p_hash_translation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_packed_data_container.png b/editor/icons/2x/icon_packed_data_container.png
deleted file mode 100644
index 958e41ede2..0000000000
--- a/editor/icons/2x/icon_packed_data_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_packed_scene.png b/editor/icons/2x/icon_packed_scene.png
deleted file mode 100644
index 00778e8c0a..0000000000
--- a/editor/icons/2x/icon_packed_scene.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panel.png b/editor/icons/2x/icon_panel.png
deleted file mode 100644
index 23491a7358..0000000000
--- a/editor/icons/2x/icon_panel.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panel_container.png b/editor/icons/2x/icon_panel_container.png
deleted file mode 100644
index fb2980ee8b..0000000000
--- a/editor/icons/2x/icon_panel_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panels_1.png b/editor/icons/2x/icon_panels_1.png
deleted file mode 100644
index b8386daa2e..0000000000
--- a/editor/icons/2x/icon_panels_1.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panels_2.png b/editor/icons/2x/icon_panels_2.png
deleted file mode 100644
index 4d9f3ef724..0000000000
--- a/editor/icons/2x/icon_panels_2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panels_2_alt.png b/editor/icons/2x/icon_panels_2_alt.png
deleted file mode 100644
index 69aeecce34..0000000000
--- a/editor/icons/2x/icon_panels_2_alt.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panels_3.png b/editor/icons/2x/icon_panels_3.png
deleted file mode 100644
index e889504f15..0000000000
--- a/editor/icons/2x/icon_panels_3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panels_3_alt.png b/editor/icons/2x/icon_panels_3_alt.png
deleted file mode 100644
index 1e9a17ca75..0000000000
--- a/editor/icons/2x/icon_panels_3_alt.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panels_4.png b/editor/icons/2x/icon_panels_4.png
deleted file mode 100644
index 62e77e417a..0000000000
--- a/editor/icons/2x/icon_panels_4.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_panorama_sky.png b/editor/icons/2x/icon_panorama_sky.png
deleted file mode 100644
index 984b92c682..0000000000
--- a/editor/icons/2x/icon_panorama_sky.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_parallax_background.png b/editor/icons/2x/icon_parallax_background.png
deleted file mode 100644
index a81046e805..0000000000
--- a/editor/icons/2x/icon_parallax_background.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_parallax_layer.png b/editor/icons/2x/icon_parallax_layer.png
deleted file mode 100644
index 285999df61..0000000000
--- a/editor/icons/2x/icon_parallax_layer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_particle_attractor_2d.png b/editor/icons/2x/icon_particle_attractor_2d.png
deleted file mode 100644
index b985a0ba57..0000000000
--- a/editor/icons/2x/icon_particle_attractor_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_particles.png b/editor/icons/2x/icon_particles.png
deleted file mode 100644
index 68f30b4213..0000000000
--- a/editor/icons/2x/icon_particles.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_particles_2d.png b/editor/icons/2x/icon_particles_2d.png
deleted file mode 100644
index 13fc8a35e6..0000000000
--- a/editor/icons/2x/icon_particles_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_particles_material.png b/editor/icons/2x/icon_particles_material.png
deleted file mode 100644
index 26ce8f6809..0000000000
--- a/editor/icons/2x/icon_particles_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_particles_shader.png b/editor/icons/2x/icon_particles_shader.png
deleted file mode 100644
index 26ce8f6809..0000000000
--- a/editor/icons/2x/icon_particles_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_patch_9_rect.png b/editor/icons/2x/icon_patch_9_rect.png
deleted file mode 100644
index 5762a0392e..0000000000
--- a/editor/icons/2x/icon_patch_9_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_path.png b/editor/icons/2x/icon_path.png
deleted file mode 100644
index d10cb37bcd..0000000000
--- a/editor/icons/2x/icon_path.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_path_2d.png b/editor/icons/2x/icon_path_2d.png
deleted file mode 100644
index dabf5ccc49..0000000000
--- a/editor/icons/2x/icon_path_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_path_follow.png b/editor/icons/2x/icon_path_follow.png
deleted file mode 100644
index 8538b1f3b9..0000000000
--- a/editor/icons/2x/icon_path_follow.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_path_follow_2d.png b/editor/icons/2x/icon_path_follow_2d.png
deleted file mode 100644
index a83ed837ba..0000000000
--- a/editor/icons/2x/icon_path_follow_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_pause.png b/editor/icons/2x/icon_pause.png
deleted file mode 100644
index 35e6b25294..0000000000
--- a/editor/icons/2x/icon_pause.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_pin.png b/editor/icons/2x/icon_pin.png
deleted file mode 100644
index d19fe7afef..0000000000
--- a/editor/icons/2x/icon_pin.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_pin_joint.png b/editor/icons/2x/icon_pin_joint.png
deleted file mode 100644
index 304cb39724..0000000000
--- a/editor/icons/2x/icon_pin_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_pin_joint_2d.png b/editor/icons/2x/icon_pin_joint_2d.png
deleted file mode 100644
index a2302c4756..0000000000
--- a/editor/icons/2x/icon_pin_joint_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_pin_pressed.png b/editor/icons/2x/icon_pin_pressed.png
deleted file mode 100644
index d19fe7afef..0000000000
--- a/editor/icons/2x/icon_pin_pressed.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_plane.png b/editor/icons/2x/icon_plane.png
deleted file mode 100644
index a096e30065..0000000000
--- a/editor/icons/2x/icon_plane.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_plane_mesh.png b/editor/icons/2x/icon_plane_mesh.png
deleted file mode 100644
index d7692eae72..0000000000
--- a/editor/icons/2x/icon_plane_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_plane_shape.png b/editor/icons/2x/icon_plane_shape.png
deleted file mode 100644
index 8ebd38fe83..0000000000
--- a/editor/icons/2x/icon_plane_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_play.png b/editor/icons/2x/icon_play.png
deleted file mode 100644
index b84ed23091..0000000000
--- a/editor/icons/2x/icon_play.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_play_backwards.png b/editor/icons/2x/icon_play_backwards.png
deleted file mode 100644
index 42aeca74e5..0000000000
--- a/editor/icons/2x/icon_play_backwards.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_play_button_group.png b/editor/icons/2x/icon_play_button_group.png
deleted file mode 100644
index e28cb52e64..0000000000
--- a/editor/icons/2x/icon_play_button_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_play_custom.png b/editor/icons/2x/icon_play_custom.png
deleted file mode 100644
index 299ac3ffbc..0000000000
--- a/editor/icons/2x/icon_play_custom.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_play_scene.png b/editor/icons/2x/icon_play_scene.png
deleted file mode 100644
index 948a2e9ba5..0000000000
--- a/editor/icons/2x/icon_play_scene.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_play_start.png b/editor/icons/2x/icon_play_start.png
deleted file mode 100644
index 227e1b6f19..0000000000
--- a/editor/icons/2x/icon_play_start.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_play_start_backwards.png b/editor/icons/2x/icon_play_start_backwards.png
deleted file mode 100644
index e9a46325f6..0000000000
--- a/editor/icons/2x/icon_play_start_backwards.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_polygon_2d.png b/editor/icons/2x/icon_polygon_2d.png
deleted file mode 100644
index 491ebfaa78..0000000000
--- a/editor/icons/2x/icon_polygon_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_polygon_path_finder.png b/editor/icons/2x/icon_polygon_path_finder.png
deleted file mode 100644
index ee6423c265..0000000000
--- a/editor/icons/2x/icon_polygon_path_finder.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_popup.png b/editor/icons/2x/icon_popup.png
deleted file mode 100644
index 7bcfb114da..0000000000
--- a/editor/icons/2x/icon_popup.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_popup_dialog.png b/editor/icons/2x/icon_popup_dialog.png
deleted file mode 100644
index 6920fa27bf..0000000000
--- a/editor/icons/2x/icon_popup_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_popup_menu.png b/editor/icons/2x/icon_popup_menu.png
deleted file mode 100644
index 4e0246879b..0000000000
--- a/editor/icons/2x/icon_popup_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_popup_panel.png b/editor/icons/2x/icon_popup_panel.png
deleted file mode 100644
index 15d977cc81..0000000000
--- a/editor/icons/2x/icon_popup_panel.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_portal.png b/editor/icons/2x/icon_portal.png
deleted file mode 100644
index c934e65fc4..0000000000
--- a/editor/icons/2x/icon_portal.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_position_2d.png b/editor/icons/2x/icon_position_2d.png
deleted file mode 100644
index 176a2300ef..0000000000
--- a/editor/icons/2x/icon_position_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_position_3d.png b/editor/icons/2x/icon_position_3d.png
deleted file mode 100644
index ed19f011b0..0000000000
--- a/editor/icons/2x/icon_position_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_prism_mesh.png b/editor/icons/2x/icon_prism_mesh.png
deleted file mode 100644
index fcf34ba7a6..0000000000
--- a/editor/icons/2x/icon_prism_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_procedural_sky.png b/editor/icons/2x/icon_procedural_sky.png
deleted file mode 100644
index b615c16ecb..0000000000
--- a/editor/icons/2x/icon_procedural_sky.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_1.png b/editor/icons/2x/icon_progress_1.png
deleted file mode 100644
index b73dded521..0000000000
--- a/editor/icons/2x/icon_progress_1.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_2.png b/editor/icons/2x/icon_progress_2.png
deleted file mode 100644
index 19d89bd369..0000000000
--- a/editor/icons/2x/icon_progress_2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_3.png b/editor/icons/2x/icon_progress_3.png
deleted file mode 100644
index ca6b270ef7..0000000000
--- a/editor/icons/2x/icon_progress_3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_4.png b/editor/icons/2x/icon_progress_4.png
deleted file mode 100644
index 3afa1f845e..0000000000
--- a/editor/icons/2x/icon_progress_4.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_5.png b/editor/icons/2x/icon_progress_5.png
deleted file mode 100644
index 8230048771..0000000000
--- a/editor/icons/2x/icon_progress_5.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_6.png b/editor/icons/2x/icon_progress_6.png
deleted file mode 100644
index 6c21a5d053..0000000000
--- a/editor/icons/2x/icon_progress_6.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_7.png b/editor/icons/2x/icon_progress_7.png
deleted file mode 100644
index 96316b54ca..0000000000
--- a/editor/icons/2x/icon_progress_7.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_8.png b/editor/icons/2x/icon_progress_8.png
deleted file mode 100644
index 95133b380d..0000000000
--- a/editor/icons/2x/icon_progress_8.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_progress_bar.png b/editor/icons/2x/icon_progress_bar.png
deleted file mode 100644
index f9a243032e..0000000000
--- a/editor/icons/2x/icon_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_proximity_group.png b/editor/icons/2x/icon_proximity_group.png
deleted file mode 100644
index 6602afa7ce..0000000000
--- a/editor/icons/2x/icon_proximity_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_quad.png b/editor/icons/2x/icon_quad.png
deleted file mode 100644
index a4074cd5b6..0000000000
--- a/editor/icons/2x/icon_quad.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_quad_mesh.png b/editor/icons/2x/icon_quad_mesh.png
deleted file mode 100644
index a8a3513b6d..0000000000
--- a/editor/icons/2x/icon_quad_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_quat.png b/editor/icons/2x/icon_quat.png
deleted file mode 100644
index f909e134f4..0000000000
--- a/editor/icons/2x/icon_quat.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_range.png b/editor/icons/2x/icon_range.png
deleted file mode 100644
index 92c0934df6..0000000000
--- a/editor/icons/2x/icon_range.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rating_no_star.png b/editor/icons/2x/icon_rating_no_star.png
deleted file mode 100644
index f855fd8b56..0000000000
--- a/editor/icons/2x/icon_rating_no_star.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rating_star.png b/editor/icons/2x/icon_rating_star.png
deleted file mode 100644
index bfe082d330..0000000000
--- a/editor/icons/2x/icon_rating_star.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_ray_cast.png b/editor/icons/2x/icon_ray_cast.png
deleted file mode 100644
index 26d958ac2b..0000000000
--- a/editor/icons/2x/icon_ray_cast.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_ray_cast_2d.png b/editor/icons/2x/icon_ray_cast_2d.png
deleted file mode 100644
index e496cdcc2b..0000000000
--- a/editor/icons/2x/icon_ray_cast_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_ray_shape.png b/editor/icons/2x/icon_ray_shape.png
deleted file mode 100644
index 54a1cf8fe9..0000000000
--- a/editor/icons/2x/icon_ray_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_ray_shape_2d.png b/editor/icons/2x/icon_ray_shape_2d.png
deleted file mode 100644
index 2dc7041a93..0000000000
--- a/editor/icons/2x/icon_ray_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rayito.png b/editor/icons/2x/icon_rayito.png
deleted file mode 100644
index 1959b8bf00..0000000000
--- a/editor/icons/2x/icon_rayito.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_real.png b/editor/icons/2x/icon_real.png
deleted file mode 100644
index 5ec56ebcac..0000000000
--- a/editor/icons/2x/icon_real.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rectangle_shape_2d.png b/editor/icons/2x/icon_rectangle_shape_2d.png
deleted file mode 100644
index 51a93cdb1d..0000000000
--- a/editor/icons/2x/icon_rectangle_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_reference_rect.png b/editor/icons/2x/icon_reference_rect.png
deleted file mode 100644
index 41130f7fdd..0000000000
--- a/editor/icons/2x/icon_reference_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_reflection_probe.png b/editor/icons/2x/icon_reflection_probe.png
deleted file mode 100644
index 5604b403df..0000000000
--- a/editor/icons/2x/icon_reflection_probe.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_region_edit.png b/editor/icons/2x/icon_region_edit.png
deleted file mode 100644
index bcaba769d4..0000000000
--- a/editor/icons/2x/icon_region_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_reload.png b/editor/icons/2x/icon_reload.png
deleted file mode 100644
index b13c858124..0000000000
--- a/editor/icons/2x/icon_reload.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_reload_small.png b/editor/icons/2x/icon_reload_small.png
deleted file mode 100644
index a278c34e4c..0000000000
--- a/editor/icons/2x/icon_reload_small.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_remote.png b/editor/icons/2x/icon_remote.png
deleted file mode 100644
index 87883ed7e1..0000000000
--- a/editor/icons/2x/icon_remote.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_remote_transform.png b/editor/icons/2x/icon_remote_transform.png
deleted file mode 100644
index 38bfaad644..0000000000
--- a/editor/icons/2x/icon_remote_transform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_remote_transform_2d.png b/editor/icons/2x/icon_remote_transform_2d.png
deleted file mode 100644
index 022da8a9ef..0000000000
--- a/editor/icons/2x/icon_remote_transform_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_remove.png b/editor/icons/2x/icon_remove.png
deleted file mode 100644
index dbed177745..0000000000
--- a/editor/icons/2x/icon_remove.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rename.png b/editor/icons/2x/icon_rename.png
deleted file mode 100644
index a306a7b8c8..0000000000
--- a/editor/icons/2x/icon_rename.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_reparent.png b/editor/icons/2x/icon_reparent.png
deleted file mode 100644
index 3063da4b43..0000000000
--- a/editor/icons/2x/icon_reparent.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_resource_preloader.png b/editor/icons/2x/icon_resource_preloader.png
deleted file mode 100644
index d48f37d21f..0000000000
--- a/editor/icons/2x/icon_resource_preloader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rich_text_label.png b/editor/icons/2x/icon_rich_text_label.png
deleted file mode 100644
index 598913d896..0000000000
--- a/editor/icons/2x/icon_rich_text_label.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rigid_body.png b/editor/icons/2x/icon_rigid_body.png
deleted file mode 100644
index 3b682f0033..0000000000
--- a/editor/icons/2x/icon_rigid_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rigid_body_2d.png b/editor/icons/2x/icon_rigid_body_2d.png
deleted file mode 100644
index bd45d2f01a..0000000000
--- a/editor/icons/2x/icon_rigid_body_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_room.png b/editor/icons/2x/icon_room.png
deleted file mode 100644
index 946f95e955..0000000000
--- a/editor/icons/2x/icon_room.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_room_bounds.png b/editor/icons/2x/icon_room_bounds.png
deleted file mode 100644
index 94da9c437d..0000000000
--- a/editor/icons/2x/icon_room_bounds.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rotate_0.png b/editor/icons/2x/icon_rotate_0.png
deleted file mode 100644
index a4524b7856..0000000000
--- a/editor/icons/2x/icon_rotate_0.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rotate_180.png b/editor/icons/2x/icon_rotate_180.png
deleted file mode 100644
index a00e1b727c..0000000000
--- a/editor/icons/2x/icon_rotate_180.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rotate_270.png b/editor/icons/2x/icon_rotate_270.png
deleted file mode 100644
index be56f080a9..0000000000
--- a/editor/icons/2x/icon_rotate_270.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_rotate_90.png b/editor/icons/2x/icon_rotate_90.png
deleted file mode 100644
index a3a937892d..0000000000
--- a/editor/icons/2x/icon_rotate_90.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sample.png b/editor/icons/2x/icon_sample.png
deleted file mode 100644
index b01674f923..0000000000
--- a/editor/icons/2x/icon_sample.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sample_library.png b/editor/icons/2x/icon_sample_library.png
deleted file mode 100644
index 3f76a78aca..0000000000
--- a/editor/icons/2x/icon_sample_library.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sample_player.png b/editor/icons/2x/icon_sample_player.png
deleted file mode 100644
index aac4c1bbed..0000000000
--- a/editor/icons/2x/icon_sample_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sample_player_2d.png b/editor/icons/2x/icon_sample_player_2d.png
deleted file mode 100644
index 9308d43128..0000000000
--- a/editor/icons/2x/icon_sample_player_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_save.png b/editor/icons/2x/icon_save.png
deleted file mode 100644
index 0a643f2c88..0000000000
--- a/editor/icons/2x/icon_save.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_script.png b/editor/icons/2x/icon_script.png
deleted file mode 100644
index 6f54c20442..0000000000
--- a/editor/icons/2x/icon_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_script_create.png b/editor/icons/2x/icon_script_create.png
deleted file mode 100644
index f1e25efe1c..0000000000
--- a/editor/icons/2x/icon_script_create.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_script_remove.png b/editor/icons/2x/icon_script_remove.png
deleted file mode 100644
index f9a1bb19a4..0000000000
--- a/editor/icons/2x/icon_script_remove.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_scroll_bar.png b/editor/icons/2x/icon_scroll_bar.png
deleted file mode 100644
index d15a36bb16..0000000000
--- a/editor/icons/2x/icon_scroll_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_scroll_container.png b/editor/icons/2x/icon_scroll_container.png
deleted file mode 100644
index 4ffe2f78f5..0000000000
--- a/editor/icons/2x/icon_scroll_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_search.png b/editor/icons/2x/icon_search.png
deleted file mode 100644
index 0c4a6a8c84..0000000000
--- a/editor/icons/2x/icon_search.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_segment_shape_2d.png b/editor/icons/2x/icon_segment_shape_2d.png
deleted file mode 100644
index 43d5d837cc..0000000000
--- a/editor/icons/2x/icon_segment_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_shader.png b/editor/icons/2x/icon_shader.png
deleted file mode 100644
index f8c2e15fcb..0000000000
--- a/editor/icons/2x/icon_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_shader_material.png b/editor/icons/2x/icon_shader_material.png
deleted file mode 100644
index f8c2e15fcb..0000000000
--- a/editor/icons/2x/icon_shader_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_short_cut.png b/editor/icons/2x/icon_short_cut.png
deleted file mode 100644
index 58c3e08ca4..0000000000
--- a/editor/icons/2x/icon_short_cut.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_signal.png b/editor/icons/2x/icon_signal.png
deleted file mode 100644
index 22b6da361e..0000000000
--- a/editor/icons/2x/icon_signal.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_skeleton.png b/editor/icons/2x/icon_skeleton.png
deleted file mode 100644
index 5345dfbd5c..0000000000
--- a/editor/icons/2x/icon_skeleton.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_slider_grabber.png b/editor/icons/2x/icon_slider_grabber.png
deleted file mode 100644
index 64cf83270a..0000000000
--- a/editor/icons/2x/icon_slider_grabber.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_slider_grabber_hl.png b/editor/icons/2x/icon_slider_grabber_hl.png
deleted file mode 100644
index d68da0d12a..0000000000
--- a/editor/icons/2x/icon_slider_grabber_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_slider_joint.png b/editor/icons/2x/icon_slider_joint.png
deleted file mode 100644
index d3bb501bac..0000000000
--- a/editor/icons/2x/icon_slider_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_slot.png b/editor/icons/2x/icon_slot.png
deleted file mode 100644
index 2176544c79..0000000000
--- a/editor/icons/2x/icon_slot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_snap.png b/editor/icons/2x/icon_snap.png
deleted file mode 100644
index 509b1c73f3..0000000000
--- a/editor/icons/2x/icon_snap.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sound_room_params.png b/editor/icons/2x/icon_sound_room_params.png
deleted file mode 100644
index 32927eaabc..0000000000
--- a/editor/icons/2x/icon_sound_room_params.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spatial.png b/editor/icons/2x/icon_spatial.png
deleted file mode 100644
index 999771a7fe..0000000000
--- a/editor/icons/2x/icon_spatial.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spatial_material.png b/editor/icons/2x/icon_spatial_material.png
deleted file mode 100644
index 68f6cf8dac..0000000000
--- a/editor/icons/2x/icon_spatial_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spatial_sample_player.png b/editor/icons/2x/icon_spatial_sample_player.png
deleted file mode 100644
index f1926c446e..0000000000
--- a/editor/icons/2x/icon_spatial_sample_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spatial_shader.png b/editor/icons/2x/icon_spatial_shader.png
deleted file mode 100644
index 68f6cf8dac..0000000000
--- a/editor/icons/2x/icon_spatial_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spatial_stream_player.png b/editor/icons/2x/icon_spatial_stream_player.png
deleted file mode 100644
index 835c5c0bbc..0000000000
--- a/editor/icons/2x/icon_spatial_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sphere_mesh.png b/editor/icons/2x/icon_sphere_mesh.png
deleted file mode 100644
index 29b01ebd1b..0000000000
--- a/editor/icons/2x/icon_sphere_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sphere_shape.png b/editor/icons/2x/icon_sphere_shape.png
deleted file mode 100644
index bdb7881e70..0000000000
--- a/editor/icons/2x/icon_sphere_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spin_box.png b/editor/icons/2x/icon_spin_box.png
deleted file mode 100644
index 3d12664b86..0000000000
--- a/editor/icons/2x/icon_spin_box.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spinbox_updown.png b/editor/icons/2x/icon_spinbox_updown.png
deleted file mode 100644
index e711fbf08b..0000000000
--- a/editor/icons/2x/icon_spinbox_updown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_spot_light.png b/editor/icons/2x/icon_spot_light.png
deleted file mode 100644
index e7aa35cbbf..0000000000
--- a/editor/icons/2x/icon_spot_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sprite.png b/editor/icons/2x/icon_sprite.png
deleted file mode 100644
index 3f18d313e7..0000000000
--- a/editor/icons/2x/icon_sprite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sprite_3d.png b/editor/icons/2x/icon_sprite_3d.png
deleted file mode 100644
index d3a491b9ee..0000000000
--- a/editor/icons/2x/icon_sprite_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_sprite_frames.png b/editor/icons/2x/icon_sprite_frames.png
deleted file mode 100644
index 263f5c4aad..0000000000
--- a/editor/icons/2x/icon_sprite_frames.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_static_body.png b/editor/icons/2x/icon_static_body.png
deleted file mode 100644
index 74f65ef490..0000000000
--- a/editor/icons/2x/icon_static_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_static_body_2d.png b/editor/icons/2x/icon_static_body_2d.png
deleted file mode 100644
index 220c829edd..0000000000
--- a/editor/icons/2x/icon_static_body_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_stream_player.png b/editor/icons/2x/icon_stream_player.png
deleted file mode 100644
index 8ff471cb8a..0000000000
--- a/editor/icons/2x/icon_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_stream_texture.png b/editor/icons/2x/icon_stream_texture.png
deleted file mode 100644
index 85cc3e7206..0000000000
--- a/editor/icons/2x/icon_stream_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_string.png b/editor/icons/2x/icon_string.png
deleted file mode 100644
index e25a81f24e..0000000000
--- a/editor/icons/2x/icon_string.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_style_box_empty.png b/editor/icons/2x/icon_style_box_empty.png
deleted file mode 100644
index e790af4de4..0000000000
--- a/editor/icons/2x/icon_style_box_empty.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_style_box_flat.png b/editor/icons/2x/icon_style_box_flat.png
deleted file mode 100644
index 1cd5c7f69a..0000000000
--- a/editor/icons/2x/icon_style_box_flat.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_style_box_texture.png b/editor/icons/2x/icon_style_box_texture.png
deleted file mode 100644
index a93e0228bd..0000000000
--- a/editor/icons/2x/icon_style_box_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tab_container.png b/editor/icons/2x/icon_tab_container.png
deleted file mode 100644
index 93b7161a69..0000000000
--- a/editor/icons/2x/icon_tab_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tab_menu.png b/editor/icons/2x/icon_tab_menu.png
deleted file mode 100644
index becad9db76..0000000000
--- a/editor/icons/2x/icon_tab_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tabs.png b/editor/icons/2x/icon_tabs.png
deleted file mode 100644
index af61bc5ab1..0000000000
--- a/editor/icons/2x/icon_tabs.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_test_cube.png b/editor/icons/2x/icon_test_cube.png
deleted file mode 100644
index f2e523be3f..0000000000
--- a/editor/icons/2x/icon_test_cube.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_text_edit.png b/editor/icons/2x/icon_text_edit.png
deleted file mode 100644
index 4fd92e518e..0000000000
--- a/editor/icons/2x/icon_text_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_texture.png b/editor/icons/2x/icon_texture.png
deleted file mode 100644
index ad5d04dfee..0000000000
--- a/editor/icons/2x/icon_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_texture_button.png b/editor/icons/2x/icon_texture_button.png
deleted file mode 100644
index 84494209d7..0000000000
--- a/editor/icons/2x/icon_texture_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_texture_progress.png b/editor/icons/2x/icon_texture_progress.png
deleted file mode 100644
index c11c1bbe4b..0000000000
--- a/editor/icons/2x/icon_texture_progress.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_texture_rect.png b/editor/icons/2x/icon_texture_rect.png
deleted file mode 100644
index 4eba75c4e7..0000000000
--- a/editor/icons/2x/icon_texture_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_theme.png b/editor/icons/2x/icon_theme.png
deleted file mode 100644
index 55b51428dd..0000000000
--- a/editor/icons/2x/icon_theme.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tile_map.png b/editor/icons/2x/icon_tile_map.png
deleted file mode 100644
index fd98fb6a39..0000000000
--- a/editor/icons/2x/icon_tile_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tile_set.png b/editor/icons/2x/icon_tile_set.png
deleted file mode 100644
index 9fbd0b4719..0000000000
--- a/editor/icons/2x/icon_tile_set.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_timer.png b/editor/icons/2x/icon_timer.png
deleted file mode 100644
index bc07f41828..0000000000
--- a/editor/icons/2x/icon_timer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tool_button.png b/editor/icons/2x/icon_tool_button.png
deleted file mode 100644
index b9dd65518f..0000000000
--- a/editor/icons/2x/icon_tool_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tool_move.png b/editor/icons/2x/icon_tool_move.png
deleted file mode 100644
index 86419cb6a9..0000000000
--- a/editor/icons/2x/icon_tool_move.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tool_pan.png b/editor/icons/2x/icon_tool_pan.png
deleted file mode 100644
index b7a6c3566f..0000000000
--- a/editor/icons/2x/icon_tool_pan.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tool_rotate.png b/editor/icons/2x/icon_tool_rotate.png
deleted file mode 100644
index b13c858124..0000000000
--- a/editor/icons/2x/icon_tool_rotate.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tool_scale.png b/editor/icons/2x/icon_tool_scale.png
deleted file mode 100644
index 1bc29f4acc..0000000000
--- a/editor/icons/2x/icon_tool_scale.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tool_select.png b/editor/icons/2x/icon_tool_select.png
deleted file mode 100644
index 7421b98ef6..0000000000
--- a/editor/icons/2x/icon_tool_select.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tools.png b/editor/icons/2x/icon_tools.png
deleted file mode 100644
index be76e8fc3a..0000000000
--- a/editor/icons/2x/icon_tools.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_touch_screen_button.png b/editor/icons/2x/icon_touch_screen_button.png
deleted file mode 100644
index b1af644e42..0000000000
--- a/editor/icons/2x/icon_touch_screen_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_track_add_key.png b/editor/icons/2x/icon_track_add_key.png
deleted file mode 100644
index 9b7bd14fb4..0000000000
--- a/editor/icons/2x/icon_track_add_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_track_add_key_hl.png b/editor/icons/2x/icon_track_add_key_hl.png
deleted file mode 100644
index 0763836c3a..0000000000
--- a/editor/icons/2x/icon_track_add_key_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_track_continuous.png b/editor/icons/2x/icon_track_continuous.png
deleted file mode 100644
index 5b4515f642..0000000000
--- a/editor/icons/2x/icon_track_continuous.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_track_discrete.png b/editor/icons/2x/icon_track_discrete.png
deleted file mode 100644
index 19f479657b..0000000000
--- a/editor/icons/2x/icon_track_discrete.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_track_trigger.png b/editor/icons/2x/icon_track_trigger.png
deleted file mode 100644
index c04d47f9a4..0000000000
--- a/editor/icons/2x/icon_track_trigger.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_translation.png b/editor/icons/2x/icon_translation.png
deleted file mode 100644
index 0ddc1da282..0000000000
--- a/editor/icons/2x/icon_translation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_transparent.png b/editor/icons/2x/icon_transparent.png
deleted file mode 100644
index 627607039b..0000000000
--- a/editor/icons/2x/icon_transparent.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_transpose.png b/editor/icons/2x/icon_transpose.png
deleted file mode 100644
index 589dc54919..0000000000
--- a/editor/icons/2x/icon_transpose.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tree.png b/editor/icons/2x/icon_tree.png
deleted file mode 100644
index 7fb4f97f83..0000000000
--- a/editor/icons/2x/icon_tree.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tree_arrow_down.png b/editor/icons/2x/icon_tree_arrow_down.png
deleted file mode 100644
index 00012dea39..0000000000
--- a/editor/icons/2x/icon_tree_arrow_down.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tree_arrow_right.png b/editor/icons/2x/icon_tree_arrow_right.png
deleted file mode 100644
index baaf016784..0000000000
--- a/editor/icons/2x/icon_tree_arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_tween.png b/editor/icons/2x/icon_tween.png
deleted file mode 100644
index 1f020a0e79..0000000000
--- a/editor/icons/2x/icon_tween.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_unbone.png b/editor/icons/2x/icon_unbone.png
deleted file mode 100644
index c20d6d9b2c..0000000000
--- a/editor/icons/2x/icon_unbone.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_unchecked.png b/editor/icons/2x/icon_unchecked.png
deleted file mode 100644
index cd8b781000..0000000000
--- a/editor/icons/2x/icon_unchecked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_ungroup.png b/editor/icons/2x/icon_ungroup.png
deleted file mode 100644
index bb46185370..0000000000
--- a/editor/icons/2x/icon_ungroup.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_uninstance.png b/editor/icons/2x/icon_uninstance.png
deleted file mode 100644
index bf3dc00368..0000000000
--- a/editor/icons/2x/icon_uninstance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_unlock.png b/editor/icons/2x/icon_unlock.png
deleted file mode 100644
index 40ff3f25a0..0000000000
--- a/editor/icons/2x/icon_unlock.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_uv.png b/editor/icons/2x/icon_uv.png
deleted file mode 100644
index e06be54edd..0000000000
--- a/editor/icons/2x/icon_uv.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_v_box_container.png b/editor/icons/2x/icon_v_box_container.png
deleted file mode 100644
index 97eb18c528..0000000000
--- a/editor/icons/2x/icon_v_box_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_v_button_array.png b/editor/icons/2x/icon_v_button_array.png
deleted file mode 100644
index c91d7ec1cb..0000000000
--- a/editor/icons/2x/icon_v_button_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_v_scroll_bar.png b/editor/icons/2x/icon_v_scroll_bar.png
deleted file mode 100644
index 2601f681b7..0000000000
--- a/editor/icons/2x/icon_v_scroll_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_v_separator.png b/editor/icons/2x/icon_v_separator.png
deleted file mode 100644
index 58cdc3e8de..0000000000
--- a/editor/icons/2x/icon_v_separator.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_v_slider.png b/editor/icons/2x/icon_v_slider.png
deleted file mode 100644
index fb7d8c2e56..0000000000
--- a/editor/icons/2x/icon_v_slider.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_v_split_container.png b/editor/icons/2x/icon_v_split_container.png
deleted file mode 100644
index b0f68381fc..0000000000
--- a/editor/icons/2x/icon_v_split_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_variant.png b/editor/icons/2x/icon_variant.png
deleted file mode 100644
index bb8075a069..0000000000
--- a/editor/icons/2x/icon_variant.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_vector.png b/editor/icons/2x/icon_vector.png
deleted file mode 100644
index 9950d950ac..0000000000
--- a/editor/icons/2x/icon_vector.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_vector2.png b/editor/icons/2x/icon_vector2.png
deleted file mode 100644
index 73c1ca007f..0000000000
--- a/editor/icons/2x/icon_vector2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_vehicle_body.png b/editor/icons/2x/icon_vehicle_body.png
deleted file mode 100644
index 215f7ac021..0000000000
--- a/editor/icons/2x/icon_vehicle_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_vehicle_wheel.png b/editor/icons/2x/icon_vehicle_wheel.png
deleted file mode 100644
index 6f7fecac4a..0000000000
--- a/editor/icons/2x/icon_vehicle_wheel.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_video_player.png b/editor/icons/2x/icon_video_player.png
deleted file mode 100644
index 4c1961f2ae..0000000000
--- a/editor/icons/2x/icon_video_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_viewport.png b/editor/icons/2x/icon_viewport.png
deleted file mode 100644
index 7e588333fb..0000000000
--- a/editor/icons/2x/icon_viewport.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_viewport_container.png b/editor/icons/2x/icon_viewport_container.png
deleted file mode 100644
index c43e53c34e..0000000000
--- a/editor/icons/2x/icon_viewport_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_viewport_sprite.png b/editor/icons/2x/icon_viewport_sprite.png
deleted file mode 100644
index adb336103f..0000000000
--- a/editor/icons/2x/icon_viewport_sprite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_viewport_texture.png b/editor/icons/2x/icon_viewport_texture.png
deleted file mode 100644
index f798f1d221..0000000000
--- a/editor/icons/2x/icon_viewport_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_visibility_enabler.png b/editor/icons/2x/icon_visibility_enabler.png
deleted file mode 100644
index 4be06a5123..0000000000
--- a/editor/icons/2x/icon_visibility_enabler.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_visibility_enabler_2d.png b/editor/icons/2x/icon_visibility_enabler_2d.png
deleted file mode 100644
index 3d592e8983..0000000000
--- a/editor/icons/2x/icon_visibility_enabler_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_visibility_notifier.png b/editor/icons/2x/icon_visibility_notifier.png
deleted file mode 100644
index aa73402d8e..0000000000
--- a/editor/icons/2x/icon_visibility_notifier.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_visibility_notifier_2d.png b/editor/icons/2x/icon_visibility_notifier_2d.png
deleted file mode 100644
index 5f3b7ecf42..0000000000
--- a/editor/icons/2x/icon_visibility_notifier_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_visible.png b/editor/icons/2x/icon_visible.png
deleted file mode 100644
index 761ff12c66..0000000000
--- a/editor/icons/2x/icon_visible.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_visual_script.png b/editor/icons/2x/icon_visual_script.png
deleted file mode 100644
index eefd214811..0000000000
--- a/editor/icons/2x/icon_visual_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_visual_shader_port.png b/editor/icons/2x/icon_visual_shader_port.png
deleted file mode 100644
index 3f9bf96b01..0000000000
--- a/editor/icons/2x/icon_visual_shader_port.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_vslider_bg.png b/editor/icons/2x/icon_vslider_bg.png
deleted file mode 100644
index a7e0e78564..0000000000
--- a/editor/icons/2x/icon_vslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_vu_empty.png b/editor/icons/2x/icon_vu_empty.png
deleted file mode 100644
index 7ecf215933..0000000000
--- a/editor/icons/2x/icon_vu_empty.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_vu_full.png b/editor/icons/2x/icon_vu_full.png
deleted file mode 100644
index cfd29fa833..0000000000
--- a/editor/icons/2x/icon_vu_full.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_warning.png b/editor/icons/2x/icon_warning.png
deleted file mode 100644
index e953c02ce3..0000000000
--- a/editor/icons/2x/icon_warning.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_window_dialog.png b/editor/icons/2x/icon_window_dialog.png
deleted file mode 100644
index 995381ed5f..0000000000
--- a/editor/icons/2x/icon_window_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_world.png b/editor/icons/2x/icon_world.png
deleted file mode 100644
index 51b587c01e..0000000000
--- a/editor/icons/2x/icon_world.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_world_2d.png b/editor/icons/2x/icon_world_2d.png
deleted file mode 100644
index e9cfa10461..0000000000
--- a/editor/icons/2x/icon_world_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_world_environment.png b/editor/icons/2x/icon_world_environment.png
deleted file mode 100644
index c680dd99bd..0000000000
--- a/editor/icons/2x/icon_world_environment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_y_sort.png b/editor/icons/2x/icon_y_sort.png
deleted file mode 100644
index a38cbbe863..0000000000
--- a/editor/icons/2x/icon_y_sort.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_zoom.png b/editor/icons/2x/icon_zoom.png
deleted file mode 100644
index 0de25b4db7..0000000000
--- a/editor/icons/2x/icon_zoom.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_zoom_less.png b/editor/icons/2x/icon_zoom_less.png
deleted file mode 100644
index d483db55ce..0000000000
--- a/editor/icons/2x/icon_zoom_less.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_zoom_more.png b/editor/icons/2x/icon_zoom_more.png
deleted file mode 100644
index 8f9ef77849..0000000000
--- a/editor/icons/2x/icon_zoom_more.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/2x/icon_zoom_reset.png b/editor/icons/2x/icon_zoom_reset.png
deleted file mode 100644
index 092215b3e2..0000000000
--- a/editor/icons/2x/icon_zoom_reset.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/README.md b/editor/icons/README.md
new file mode 100644
index 0000000000..f3aaa23666
--- /dev/null
+++ b/editor/icons/README.md
@@ -0,0 +1,12 @@
+The icons here are optimized SVGs, because the editor renders the svgs at runtime, they need
+to be small in size, so they can be efficiently parsed.
+
+The original icons can be found at:
+https://github.com/djrm/godot-design/tree/master/assets/icons
+
+There you can find the optimizer script.
+
+If you add a new icon, please make a pull request to this repo:
+https://github.com/djrm/godot-design/
+
+and store the the optimized SVG version here.
diff --git a/editor/icons/SCsub b/editor/icons/SCsub
index 182624a80d..07fe45ce11 100644
--- a/editor/icons/SCsub
+++ b/editor/icons/SCsub
@@ -1,96 +1,90 @@
#!/usr/bin/env python
Import('env')
-
+from compat import StringIO
def make_editor_icons_action(target, source, env):
import os
- import cStringIO
dst = target[0].srcnode().abspath
- pixmaps = source
-
- s = cStringIO.StringIO()
-
- s.write("#include \"editor_icons.h\"\n\n")
- s.write("#include \"editor_scale.h\"\n\n")
- s.write("#include \"scene/resources/theme.h\"\n\n")
-
- hidpi_list = []
-
- for x in pixmaps:
+ svg_icons = source
- x = str(x)
- var_str = os.path.basename(x)[:-4] + "_png"
- # print(var_str)
+ whites = StringIO()
+ darks = StringIO()
- s.write("static const unsigned char " + var_str + "[]={\n")
-
- pngf = open(x, "rb")
-
- b = pngf.read(1)
- while(len(b) == 1):
- s.write(hex(ord(b)))
- b = pngf.read(1)
- if (len(b) == 1):
- s.write(",")
-
- s.write("\n};\n\n")
-
- pngf.close()
- var_str = os.path.basename(x)[:-4] + "_hidpi_png"
- try:
+ for f in svg_icons:
- pngf = open(os.path.dirname(x) + "/2x/" + os.path.basename(x), "rb")
+ fname = str(f)
- s.write("static const unsigned char " + var_str + "[]={\n")
+ whites.write('\t"')
+ darks.write('\t"')
- b = pngf.read(1)
+ with open(fname, 'rb') as svgf:
+ b = svgf.read(1)
while(len(b) == 1):
- s.write(hex(ord(b)))
- b = pngf.read(1)
- if (len(b) == 1):
- s.write(",")
-
- s.write("\n};\n\n\n")
- hidpi_list.append(x)
-
- except:
- s.write("static const unsigned char* " + var_str + "=NULL;\n\n\n")
-
- s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png,const uint8_t* p_hidpi_png) {\n")
- s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n")
- s.write("\tbool use_hidpi_image=(editor_get_scale()>1.0&&p_hidpi_png);\n")
- s.write("\tRef<Image> img = memnew(Image(use_hidpi_image?p_hidpi_png:p_png));\n")
- s.write("\tif (editor_get_scale()>1.0 && !p_hidpi_png) { img->convert(Image::FORMAT_RGBA8); img->expand_x2_hq2x(); use_hidpi_image=true;}\n")
- s.write("\timg->resize(img->get_width()*EDSCALE/(use_hidpi_image?2:1),img->get_height()*EDSCALE/(use_hidpi_image?2:1));\n")
- s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n")
- s.write("\treturn texture;\n")
- s.write("}\n\n")
-
- s.write("void editor_register_icons(Ref<Theme> p_theme) {\n\n")
-
- for x in pixmaps:
-
- x = os.path.basename(str(x))
- type = x[5:-4].title().replace("_", "")
- var_str = x[:-4] + "_png"
- var_str_hidpi = x[:-4] + "_hidpi_png"
- s.write("\tp_theme->set_icon(\"" + type + "\",\"EditorIcons\",make_icon(" + var_str + "," + var_str_hidpi + "));\n")
-
- s.write("\n\n}\n\n")
-
- f = open(dst, "wb")
+ whites.write("\\" + str(hex(ord(b)))[1:])
+ b = svgf.read(1)
+ try:
+ with open(os.path.dirname(fname) + "/dark/" + os.path.basename(fname), 'rb') as svgf:
+ b = svgf.read(1)
+ while(len(b) == 1):
+ darks.write("\\" + str(hex(ord(b)))[1:])
+ b = svgf.read(1)
+ except IOError:
+ with open(fname, 'rb') as svgf:
+ b = svgf.read(1)
+ while(len(b) == 1):
+ darks.write("\\" + str(hex(ord(b)))[1:])
+ b = svgf.read(1)
+
+
+ whites.write('"')
+ darks.write('"')
+ if fname != svg_icons[-1]:
+ whites.write(",")
+ darks.write(",")
+ whites.write('\n')
+ darks.write('\n')
+
+ s = StringIO()
+ s.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
+ s.write("#ifndef _EDITOR_ICONS_H\n")
+ s.write("#define _EDITOR_ICONS_H\n")
+ s.write("static const int editor_icons_count = %s;\n" % len(svg_icons))
+ s.write("static const char *editor_icons_sources[] = {\n")
+ s.write(whites.getvalue())
+ s.write('};\n\n')
+ s.write("static const char *editor_icons_sources_dark[] = {\n")
+ s.write(darks.getvalue())
+ s.write('};\n\n')
+ s.write("static const char *editor_icons_names[] = {\n")
+ for f in svg_icons:
+
+ fname = str(f)
+
+ icon_name = os.path.basename(fname)[5:-4].title().replace("_", "")
+
+ s.write('\t"%s"' % icon_name)
+
+ if fname != svg_icons[-1]:
+ s.write(",")
+ s.write('\n')
+ s.write('};\n')
+ s.write("#endif\n")
+
+
+ f = open(dst, "w")
f.write(s.getvalue())
f.close()
s.close()
+ whites.close()
+ darks.close()
make_editor_icons_builder = Builder(action=make_editor_icons_action,
- suffix='.cpp',
- src_suffix='.png')
+ suffix='.h',
+ src_suffix='.svg')
env['BUILDERS']['MakeEditorIconsBuilder'] = make_editor_icons_builder
-env.Alias('editor_icons', [env.MakeEditorIconsBuilder('#editor/editor_icons.gen.cpp', Glob("*.png"))])
+env.Alias('editor_icons', [env.MakeEditorIconsBuilder('#editor/editor_icons.gen.h', Glob("*.svg"))])
-env.editor_sources.append("#editor/editor_icons.gen.cpp")
Export('env')
diff --git a/editor/icons/dark/icon_2_d.svg b/editor/icons/dark/icon_2_d.svg
new file mode 100644
index 0000000000..2f2bfbff8a
--- /dev/null
+++ b/editor/icons/dark/icon_2_d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.9844 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l0.29297-0.29297v8.5859h8.5859l-0.29297 0.29297a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l2-2a1.0001 1.0001 0 0 0 0 -1.4141l-2-2a1 1 0 0 0 -0.7207 -0.29102 1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l0.29297 0.29297h-6.5859v-6.5859l0.29297 0.29297a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_3_d.svg b/editor/icons/dark/icon_3_d.svg
new file mode 100644
index 0000000000..be55e1d90f
--- /dev/null
+++ b/editor/icons/dark/icon_3_d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.9902 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l0.29297-0.29297v8.5859h8.5859l-0.29297 0.29297a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l2-2a1.0001 1.0001 0 0 0 0 -1.4141l-2-2a1 1 0 0 0 -0.72266 -0.29102 1 1 0 0 0 -0.69141 0.29102 1 1 0 0 0 0 1.4141l0.29297 0.29297h-5.1719l5.5859-5.5859v0.41602a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-2.8301a1.0001 1.0001 0 0 0 -1 -1h-2.8301a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h0.41602l-5.5859 5.5859v-5.1719l0.29297 0.29297a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_checked.svg b/editor/icons/dark/icon_GUI_checked.svg
new file mode 100644
index 0000000000..5ae9a8c57c
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_checked.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 2c-1.1046 0-2 0.89543-2 2v8c0 1.1046 0.89543 2 2 2h8c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2h-8zm7.293 2.293l1.4141 1.4141-6.707 6.707-2.707-2.707 1.4141-1.4141 1.293 1.293 5.293-5.293z" fill="#4f4f4f" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_dropdown.svg b/editor/icons/dark/icon_GUI_dropdown.svg
new file mode 100644
index 0000000000..9115b5d83f
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_dropdown.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#000000" fill-opacity=".58824" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="2">
+<circle cx="7.5" cy="1040.9" r="1.5"/>
+<circle cx="7.5" cy="1045.9" r="1.5"/>
+<circle cx="7.5" cy="1050.9" r="1.5"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_hslider_bg.svg b/editor/icons/dark/icon_GUI_hslider_bg.svg
new file mode 100644
index 0000000000..e298d06c4c
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_hslider_bg.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1041.4" width="14" height="6" ry="0" fill-opacity=".39216" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_hsplitter.svg b/editor/icons/dark/icon_GUI_hsplitter.svg
new file mode 100644
index 0000000000..73f3f483d8
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_hsplitter.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="64" version="1.1" viewBox="0 0 8 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path d="m4 990.36v60" fill="none" stroke="#000000" stroke-linecap="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_mini_tab_menu.svg b/editor/icons/dark/icon_GUI_mini_tab_menu.svg
new file mode 100644
index 0000000000..44236ebab9
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_mini_tab_menu.svg
@@ -0,0 +1,7 @@
+<svg width="6" height="16" version="1.1" viewBox="0 0 6 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#000000" fill-opacity=".39216">
+<circle cx="3" cy="1038.4" r="2"/>
+<circle cx="3" cy="1044.4" r="2"/>
+<circle cx="3" cy="1050.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_option_arrow.svg b/editor/icons/dark/icon_GUI_option_arrow.svg
new file mode 100644
index 0000000000..2942998a8d
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_option_arrow.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m10 1043.4c-0.26378 0.01-0.5144 0.1165-0.69726 0.3067l-3.293 3.2929-3.293-3.2929c-0.18826-0.1936-0.44679-0.3028-0.7168-0.3028-0.89742 2e-4 -1.3404 1.0909-0.69727 1.7168l4 4c0.39053 0.3904 1.0235 0.3904 1.4141 0l4-4c0.65734-0.6321 0.19491-1.7422-0.7168-1.7207z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#000000" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_play_button_group.svg b/editor/icons/dark/icon_GUI_play_button_group.svg
new file mode 100644
index 0000000000..1d67816b3a
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_play_button_group.svg
@@ -0,0 +1,5 @@
+<svg width="32" height="32" version="1.1" viewBox="0 0 32 31.999998" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<circle cx="16" cy="1036.4" r="14" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_progress_bar.svg b/editor/icons/dark/icon_GUI_progress_bar.svg
new file mode 100644
index 0000000000..b052cfb50e
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_progress_bar.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1036.4c-1.0907-2e-4 -2 0.9073-2 1.998v12.002c0 1.0907 0.9093 2 2 2h12c1.0907 0 2-0.9093 2-2v-12c0-1.0907-0.9093-1.9978-2-1.998zm0 2h12v11.998h-12z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".39216" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_progress_fill.svg b/editor/icons/dark/icon_GUI_progress_fill.svg
new file mode 100644
index 0000000000..91e6722c33
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_progress_fill.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="4" y="1040.4" width="8" height="8" ry=".99999" fill="#4f4f4f" fill-opacity=".39216"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_radio_checked.svg b/editor/icons/dark/icon_GUI_radio_checked.svg
new file mode 100644
index 0000000000..5b5fd23a78
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_radio_checked.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="5" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".78431" stroke-width="2"/>
+<circle cx="8" cy="1044.4" r="3" fill="#4f4f4f" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_radio_unchecked.svg b/editor/icons/dark/icon_GUI_radio_unchecked.svg
new file mode 100644
index 0000000000..f3deacc992
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_radio_unchecked.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="5" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".78431" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_scroll_bg.svg b/editor/icons/dark/icon_GUI_scroll_bg.svg
new file mode 100644
index 0000000000..302368b19a
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_scroll_bg.svg
@@ -0,0 +1 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg"></svg>
diff --git a/editor/icons/dark/icon_GUI_scroll_grabber.svg b/editor/icons/dark/icon_GUI_scroll_grabber.svg
new file mode 100644
index 0000000000..bf1bc19523
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_scroll_grabber.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<circle cx="6" cy="1046.4" r="2" fill="#000000" fill-opacity=".27451"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_scroll_grabber_hl.svg b/editor/icons/dark/icon_GUI_scroll_grabber_hl.svg
new file mode 100644
index 0000000000..e165cf3cfb
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_scroll_grabber_hl.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<circle cx="6" cy="1046.4" r="3" fill="#f9f9f9" fill-opacity=".73"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_scroll_grabber_pressed.svg b/editor/icons/dark/icon_GUI_scroll_grabber_pressed.svg
new file mode 100644
index 0000000000..729289e756
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_scroll_grabber_pressed.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<circle cx="6" cy="1046.4" r="3" d="m 8.9999952,1046.3623 c 0,1.6569 -1.3431436,3 -2.9999952,3 -1.6568516,0 -2.9999952,-1.3431 -2.9999952,-3 0,-1.6568 1.3431436,-3 2.9999952,-3 1.6568516,0 2.9999952,1.3432 2.9999952,3 z" fill="#afafaf" fill-opacity=".72941"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_slider_grabber.svg b/editor/icons/dark/icon_GUI_slider_grabber.svg
new file mode 100644
index 0000000000..63332d7da9
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_slider_grabber.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="3" fill="#000000" fill-opacity=".78431" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_slider_grabber_hl.svg b/editor/icons/dark/icon_GUI_slider_grabber_hl.svg
new file mode 100644
index 0000000000..5ba266ce06
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_slider_grabber_hl.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 0.5 0.025391 5 5 0 0 1 0.49414 0.074219 5 5 0 0 1 0.48438 0.12305 5 5 0 0 1 0.46875 0.17188 5 5 0 0 1 0.44922 0.2168 5 5 0 0 1 0.42578 0.26172 5 5 0 0 1 0.39844 0.30273 5 5 0 0 1 0.36524 0.33984 5 5 0 0 1 0.33008 0.37695 5 5 0 0 1 0.29102 0.40625 5 5 0 0 1 0.24805 0.43359 5 5 0 0 1 0.20508 0.45508 5 5 0 0 1 0.1582 0.47461 5 5 0 0 1 0.10938 0.48828 5 5 0 0 1 0.060547 0.49609 5 5 0 0 1 0.011719 0.35352 5 5 0 0 1 -0.025391 0.5 5 5 0 0 1 -0.074218 0.49414 5 5 0 0 1 -0.12305 0.48438 5 5 0 0 1 -0.17188 0.46875 5 5 0 0 1 -0.2168 0.44922 5 5 0 0 1 -0.26172 0.42578 5 5 0 0 1 -0.30273 0.39844 5 5 0 0 1 -0.33984 0.36524 5 5 0 0 1 -0.37695 0.33008 5 5 0 0 1 -0.40625 0.29102 5 5 0 0 1 -0.43359 0.24805 5 5 0 0 1 -0.45508 0.20508 5 5 0 0 1 -0.47461 0.1582 5 5 0 0 1 -0.48828 0.10938 5 5 0 0 1 -0.49609 0.060547 5 5 0 0 1 -0.35352 0.011719 5 5 0 0 1 -0.5 -0.025391 5 5 0 0 1 -0.49414 -0.074218 5 5 0 0 1 -0.48438 -0.12305 5 5 0 0 1 -0.46875 -0.17188 5 5 0 0 1 -0.44922 -0.2168 5 5 0 0 1 -0.42578 -0.26172 5 5 0 0 1 -0.39844 -0.30273 5 5 0 0 1 -0.36523 -0.33984 5 5 0 0 1 -0.33008 -0.37695 5 5 0 0 1 -0.29102 -0.40625 5 5 0 0 1 -0.24805 -0.43359 5 5 0 0 1 -0.20508 -0.45508 5 5 0 0 1 -0.1582 -0.47461 5 5 0 0 1 -0.10938 -0.48828 5 5 0 0 1 -0.060547 -0.49609 5 5 0 0 1 -0.011719 -0.35352 5 5 0 0 1 0.025391 -0.5 5 5 0 0 1 0.074219 -0.49414 5 5 0 0 1 0.12305 -0.48438 5 5 0 0 1 0.17188 -0.46875 5 5 0 0 1 0.2168 -0.44922 5 5 0 0 1 0.26172 -0.42578 5 5 0 0 1 0.30273 -0.39844 5 5 0 0 1 0.33984 -0.36523 5 5 0 0 1 0.37695 -0.33008 5 5 0 0 1 0.40625 -0.29102 5 5 0 0 1 0.43359 -0.24805 5 5 0 0 1 0.45508 -0.20508 5 5 0 0 1 0.47461 -0.1582 5 5 0 0 1 0.48828 -0.10938 5 5 0 0 1 0.49609 -0.060547 5 5 0 0 1 0.35352 -0.011719z" fill="#4f4f4f"/>
+<circle cx="8" cy="1044.4" r="3" fill="#000000" fill-opacity=".58824" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_spinbox_updown.svg b/editor/icons/dark/icon_GUI_spinbox_updown.svg
new file mode 100644
index 0000000000..94d2044284
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_spinbox_updown.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9844 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-4 4a1.0001 1.0001 0 1 0 1.4141 1.4141l3.293-3.293 3.293 3.293a1.0001 1.0001 0 1 0 1.4141 -1.4141l-4-4a1.0001 1.0001 0 0 0 -0.72266 -0.29102zm4.0059 7.9844a1.0001 1.0001 0 0 0 -0.69726 0.30664l-3.293 3.293-3.293-3.293a1.0001 1.0001 0 0 0 -0.7168 -0.30273 1.0001 1.0001 0 0 0 -0.69727 1.7168l4 4a1.0001 1.0001 0 0 0 1.4141 0l4-4a1.0001 1.0001 0 0 0 -0.7168 -1.7207z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_tab_menu.svg b/editor/icons/dark/icon_GUI_tab_menu.svg
new file mode 100644
index 0000000000..7075713425
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_tab_menu.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#000000" fill-opacity=".39216">
+<circle cx="8" cy="1038.4" r="2"/>
+<circle cx="8" cy="1044.4" r="2"/>
+<circle cx="8" cy="1050.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_toggle_off.svg b/editor/icons/dark/icon_GUI_toggle_off.svg
new file mode 100644
index 0000000000..bf479e62d7
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_toggle_off.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="32" version="1.1" viewBox="0 0 64 31.999998" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<path transform="translate(0 1020.4)" d="m24 4.002c-6.6307 0-12 5.3654-12 11.996v0.003906c0 6.6307 5.3693 12 12 12h16c6.6307 0 12-5.3693 12-12v-0.003906c0-6.6307-5.3693-11.996-12-11.996h-16zm0 2h16c5.5573 0 10 4.4388 10 9.9961v0.003906c0 5.5573-4.4427 10-10 10h-16c-5.5573 0-10-4.4427-10-10v-0.003906c0-5.5573 4.4427-9.9961 10-9.9961zm7 4.9961a1.0001 1.0001 0 0 0 -1 1v8a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-3h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2v-2h4a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-5zm9 0a1.0001 1.0001 0 0 0 -1 1v4 4a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-3h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2v-2h4a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-5zm-17 0.003906c-2.7496 0-5 2.2504-5 5s2.2504 5 5 5 5-2.2504 5-5-2.2504-5-5-5zm0 2c1.6687 0 3 1.3313 3 3s-1.3313 3-3 3-3-1.3313-3-3 1.3313-3 3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_toggle_on.svg b/editor/icons/dark/icon_GUI_toggle_on.svg
new file mode 100644
index 0000000000..b81391c88d
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_toggle_on.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="32" version="1.1" viewBox="0 0 64 31.999998" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<path transform="translate(0 1020.4)" d="m24 4.002c-6.6307 0-12 5.3654-12 11.996 0 6.6307 5.3693 12 12 12h16c6.6307 0 12-5.3693 12-12 0-6.6307-5.3693-11.996-12-11.996h-16zm17 6.9961a1 1 0 0 1 1 1v8a1.0001 1.0001 0 0 1 -1.752 0.66211l-5.248-6v5.3379a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-8a1.0001 1.0001 0 0 1 1.752 -0.6582l5.248 6v-5.3418a1 1 0 0 1 1 -1zm-15 0.003906c2.7496 0 5 2.2504 5 5s-2.2504 5-5 5-5-2.2504-5-5 2.2504-5 5-5zm0 2c-1.6687 0-3 1.3313-3 3s1.3313 3 3 3 3-1.3313 3-3-1.3313-3-3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_tree_arrow_down.svg b/editor/icons/dark/icon_GUI_tree_arrow_down.svg
new file mode 100644
index 0000000000..fc071c84ca
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_tree_arrow_down.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3 1045.4 3 3 3-3" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_tree_arrow_right.svg b/editor/icons/dark/icon_GUI_tree_arrow_right.svg
new file mode 100644
index 0000000000..ffd84f5774
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_tree_arrow_right.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m4 1049.4 3-3-3-3" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_unchecked.svg b/editor/icons/dark/icon_GUI_unchecked.svg
new file mode 100644
index 0000000000..cbf3bd3dc0
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_unchecked.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 2a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2v-8a2 2 0 0 0 -2 -2h-8zm0.80078 2h6.3984a0.8 0.8 0 0 1 0.80078 0.80078v6.3984a0.8 0.8 0 0 1 -0.80078 0.80078h-6.3984a0.8 0.8 0 0 1 -0.80078 -0.80078v-6.3984a0.8 0.8 0 0 1 0.80078 -0.80078z" fill="#4f4f4f" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_vslider_bg.svg b/editor/icons/dark/icon_GUI_vslider_bg.svg
new file mode 100644
index 0000000000..99d01420b6
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_vslider_bg.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="6" y="1037.4" width="4" height="14" ry="0" fill-opacity=".39216" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_vsplit_bg.svg b/editor/icons/dark/icon_GUI_vsplit_bg.svg
new file mode 100644
index 0000000000..8294c44611
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_vsplit_bg.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 7.9999995" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect y="1044.4" width="8" height="8" fill-opacity=".098039"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_GUI_vsplitter.svg b/editor/icons/dark/icon_GUI_vsplitter.svg
new file mode 100644
index 0000000000..002108a24a
--- /dev/null
+++ b/editor/icons/dark/icon_GUI_vsplitter.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="8" version="1.1" viewBox="0 0 64 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1048.4h60" fill="none" stroke="#000000" stroke-linecap="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_accept_dialog.svg b/editor/icons/dark/icon_accept_dialog.svg
new file mode 100644
index 0000000000..ad33c8e97f
--- /dev/null
+++ b/editor/icons/dark/icon_accept_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2zm9 1h1v1h-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8zm9.4746 1.6367 1.4141 1.4141-4.9492 4.9492-2.8281-2.8281 1.4141-1.4141 1.4141 1.4141z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_add.svg b/editor/icons/dark/icon_add.svg
new file mode 100644
index 0000000000..762c95df8f
--- /dev/null
+++ b/editor/icons/dark/icon_add.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v6h-6v2h6v6h2v-6h6v-2h-6v-6h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_anchor.svg b/editor/icons/dark/icon_anchor.svg
new file mode 100644
index 0000000000..1c00b027d8
--- /dev/null
+++ b/editor/icons/dark/icon_anchor.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8262v0.17383h-2v2h2v3.8984a5 5 0 0 1 -3.8281 -3.6035l-1.9336 0.51758a7 7 0 0 0 6.7617 5.1875 7 7 0 0 0 6.7617 -5.1875l-1.9375-0.51953a5 5 0 0 1 -3.8242 3.6035v-3.8965h2v-2h-2v-0.17578a3 3 0 0 0 2 -2.8242 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_animated_sprite.svg b/editor/icons/dark/icon_animated_sprite.svg
new file mode 100644
index 0000000000..a90181fa45
--- /dev/null
+++ b/editor/icons/dark/icon_animated_sprite.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#6d90ff">
+<path transform="translate(0 1036.4)" d="m10.5 0a5.5 5.5 0 0 0 -5.3301 4.1699 5.5 5.5 0 0 1 1.3301 -0.16992 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.16992 1.3301 5.5 5.5 0 0 0 4.1699 -5.3301 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m8.5 2a5.5 5.5 0 0 0 -4.7559 2.748 5.5 5.5 0 0 1 2.7559 -0.74805 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.74414 2.752 5.5 5.5 0 0 0 2.7441 -4.752 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".58824"/>
+<path transform="translate(0 1036.4)" d="m6.5 4a5.5 5.5 0 0 0 -5.5 5.5 5.5 5.5 0 0 0 5.5 5.5 5.5 5.5 0 0 0 5.5 -5.5 5.5 5.5 0 0 0 -5.5 -5.5zm-2.5 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-5 3h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_animated_sprite_3d.svg b/editor/icons/dark/icon_animated_sprite_3d.svg
new file mode 100644
index 0000000000..40dad30a7e
--- /dev/null
+++ b/editor/icons/dark/icon_animated_sprite_3d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f">
+<path transform="translate(0 1036.4)" d="m10.5 0a5.5 5.5 0 0 0 -5.3301 4.1699 5.5 5.5 0 0 1 1.3301 -0.16992 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.16992 1.3301 5.5 5.5 0 0 0 4.1699 -5.3301 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m8.5 2a5.5 5.5 0 0 0 -4.7559 2.748 5.5 5.5 0 0 1 2.7559 -0.74805 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.74414 2.752 5.5 5.5 0 0 0 2.7441 -4.752 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".58824"/>
+<path transform="translate(0 1036.4)" d="m6.5 4a5.5 5.5 0 0 0 -5.5 5.5 5.5 5.5 0 0 0 5.5 5.5 5.5 5.5 0 0 0 5.5 -5.5 5.5 5.5 0 0 0 -5.5 -5.5zm-2.5 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-5 3h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_animation.svg b/editor/icons/dark/icon_animation.svg
new file mode 100644
index 0000000000..39b7a44d02
--- /dev/null
+++ b/editor/icons/dark/icon_animation.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 4 -1.5352v1.5352h0.001953a2 2 0 0 0 0.26562 1 2 2 0 0 0 1.7324 1h1v-1-1h-0.5a0.5 0.49999 0 0 1 -0.5 -0.5v-0.5-5a6 6 0 0 0 -6 -6zm0 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm3.4414 2a1 1 0 0 1 0.88867 0.5 1 1 0 0 1 -0.36523 1.3652 1 1 0 0 1 -1.3672 -0.36523 1 1 0 0 1 0.36719 -1.3652 1 1 0 0 1 0.47656 -0.13477zm-6.9531 0.0019531a1 1 0 0 1 0.54688 0.13281 1 1 0 0 1 0.36719 1.3652 1 1 0 0 1 -1.3672 0.36523 1 1 0 0 1 -0.36523 -1.3652 1 1 0 0 1 0.81836 -0.49805zm0.023438 3.998a1 1 0 0 1 0.89062 0.5 1 1 0 0 1 -0.36719 1.3652 1 1 0 0 1 -1.3652 -0.36523 1 1 0 0 1 0.36523 -1.3652 1 1 0 0 1 0.47656 -0.13477zm6.9043 0.0019531a1 1 0 0 1 0.54883 0.13281 1 1 0 0 1 0.36523 1.3652 1 1 0 0 1 -1.3652 0.36523 1 1 0 0 1 -0.36719 -1.3652 1 1 0 0 1 0.81836 -0.49805zm-3.416 1.998a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_animation_player.svg b/editor/icons/dark/icon_animation_player.svg
new file mode 100644
index 0000000000..4de8694a9b
--- /dev/null
+++ b/editor/icons/dark/icon_animation_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v14h1.1667v-2h1.8333v2h8v-2h2v2h1v-14h-1v2h-2v-2h-8v2h-1.8333v-2zm1.1667 4h1.8333v2h-1.8333zm9.8333 0h2v2h-2zm-9.8333 4h1.8333v2h-1.8333zm9.8333 0h2v2h-2z" fill="#bb6dff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_animation_tree_player.svg b/editor/icons/dark/icon_animation_tree_player.svg
new file mode 100644
index 0000000000..c475b16127
--- /dev/null
+++ b/editor/icons/dark/icon_animation_tree_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v14h1.166v-2h1.834v2h8v-2h2v2h1v-14h-1v2h-2v-2h-8v2h-1.834v-2h-1.166zm4 3h2v1 1h1 3v2h-2v1 1h1 1v2h-1-2a1.0001 1.0001 0 0 1 -1 -1v-1-2h-1a1.0001 1.0001 0 0 1 -1 -1v-1-1-1zm-2.834 1h1.834v2h-1.834v-2zm9.834 0h2v2h-2v-2zm-9.834 4h1.834v2h-1.834v-2zm9.834 0h2v2h-2v-2z" fill="#bb6dff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_area.svg b/editor/icons/dark/icon_area.svg
new file mode 100644
index 0000000000..ebea4e4008
--- /dev/null
+++ b/editor/icons/dark/icon_area.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 2h2v-2h2v-2h-4zm10 0v2h2v2h2v-4h-4zm-7 3v2 4 2h8v-2-6h-8zm2 2h4v4h-4v-4zm-5 5v2 2h2 2v-2h-2v-2h-2zm12 0v2h-2v2h4v-2-2h-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_area_2d.svg b/editor/icons/dark/icon_area_2d.svg
new file mode 100644
index 0000000000..f8d5cddef4
--- /dev/null
+++ b/editor/icons/dark/icon_area_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 2h2v-2h2v-2h-4zm10 0v2h2v2h2v-4h-4zm-7 3v2 4 2h8v-2-6h-8zm2 2h4v4h-4v-4zm-5 5v2 2h2 2v-2h-2v-2h-2zm12 0v2h-2v2h4v-2-2h-2z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_array_mesh.svg b/editor/icons/dark/icon_array_mesh.svg
new file mode 100644
index 0000000000..39f11880a8
--- /dev/null
+++ b/editor/icons/dark/icon_array_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm10 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-2 7v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2zm-8 3a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fea900" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_arrow_left.svg b/editor/icons/dark/icon_arrow_left.svg
new file mode 100644
index 0000000000..12d9360c51
--- /dev/null
+++ b/editor/icons/dark/icon_arrow_left.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9863 3.002a1 1 0 0 0 -0.69336 0.29102l-4 4a1.0001 1.0001 0 0 0 0 1.4141l4 4a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2.293-2.293h4.5859a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-4.5859l2.293-2.293a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -0.7207 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_arrow_right.svg b/editor/icons/dark/icon_arrow_right.svg
new file mode 100644
index 0000000000..ca3b4a0267
--- /dev/null
+++ b/editor/icons/dark/icon_arrow_right.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 3.002a1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l2.293 2.293h-4.5859c-0.55228 0-1 0.4477-1 1s0.44772 1 1 1h4.5859l-2.293 2.293a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l4-4a1.0001 1.0001 0 0 0 0 -1.4141l-4-4a1 1 0 0 0 -0.7207 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_arrow_up.svg b/editor/icons/dark/icon_arrow_up.svg
new file mode 100644
index 0000000000..08e77d2c65
--- /dev/null
+++ b/editor/icons/dark/icon_arrow_up.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2.9875 1044.4a1.0001 1.0001 0 0 0 1.7168 0.6972l2.293-2.2929v4.5859a1.0001 1.0001 0 1 0 2 0v-4.5859l2.293 2.2929a1.0001 1.0001 0 1 0 1.4141 -1.414l-3.9141-3.9141a1.0001 1.0001 0 0 0 -1.5859 0 1.0001 1.0001 0 0 0 -0.00391 0.01l-3.9102 3.9102a1.0001 1.0001 0 0 0 -0.30273 0.7168z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_asset_lib.svg b/editor/icons/dark/icon_asset_lib.svg
new file mode 100644
index 0000000000..b9ef0db316
--- /dev/null
+++ b/editor/icons/dark/icon_asset_lib.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1c-1.6569 0-3 1.3431-3 3v2h-4v7c0 1.108 0.89199 2 2 2h10c1.108 0 2-0.89199 2-2v-7h-4v-2c0-1.6569-1.3431-3-3-3zm0 2c0.55228 0 1 0.44772 1 1v2h-2v-2c0-0.55228 0.44772-1 1-1z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_atlas_texture.svg b/editor/icons/dark/icon_atlas_texture.svg
new file mode 100644
index 0000000000..1d2de12446
--- /dev/null
+++ b/editor/icons/dark/icon_atlas_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m6 1037.4-5 2v12l5-2 4 2 5-2v-12l-5 2zm0 2 4 2v8l-4-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_bus_bypass.svg b/editor/icons/dark/icon_audio_bus_bypass.svg
new file mode 100644
index 0000000000..d683928e27
--- /dev/null
+++ b/editor/icons/dark/icon_audio_bus_bypass.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6.9707 2c-0.25474 0.01-0.49715 0.11122-0.67773 0.29102l-2.707 2.707h-1.5859c-0.55226 1e-4 -0.99994 0.4477-1 1v4c5.52e-5 0.5523 0.44774 0.9999 1 1h1.5859l2.707 2.707c0.63002 0.6296 1.7067 0.18367 1.707-0.70703v-10c-9.424e-4 -0.5631-0.46642-1.0144-1.0293-0.99805zm3.0293 5v1 1h4v-1-1h-4z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_bus_layout.svg b/editor/icons/dark/icon_audio_bus_layout.svg
new file mode 100644
index 0000000000..c6fa4b21ee
--- /dev/null
+++ b/editor/icons/dark/icon_audio_bus_layout.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.108 0-2 0.89199-2 2v10c0 1.108 0.89199 2 2 2h2c1.108 0 2-0.89199 2-2v-10c0-1.108-0.89199-2-2-2h-2zm8 0c-1.108 0-2 0.89199-2 2v10c0 1.108 0.89199 2 2 2h2c1.108 0 2-0.89199 2-2v-10c0-1.108-0.89199-2-2-2h-2zm-8 1h2c0.55401 0 1 0.44599 1 1v10c0 0.55401-0.44599 1-1 1h-2c-0.55401 0-1-0.44599-1-1v-10c0-0.55401 0.44599-1 1-1z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_bus_mute.svg b/editor/icons/dark/icon_audio_bus_mute.svg
new file mode 100644
index 0000000000..3f8f0888cc
--- /dev/null
+++ b/editor/icons/dark/icon_audio_bus_mute.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6.9707 2c-0.25474 0.01-0.49715 0.11122-0.67773 0.29102l-2.707 2.707h-1.5859c-0.55226 1e-4 -0.99994 0.4477-1 1v4c5.52e-5 0.5523 0.44774 0.9999 1 1h1.5859l2.707 2.707c0.63002 0.6296 1.7067 0.18367 1.707-0.70703v-10c-9.424e-4 -0.5631-0.46642-1.0144-1.0293-0.99805zm4.0195 2.9902a1.0001 1.0001 0 0 0 -0.69726 1.7168l1.293 1.293-1.293 1.293a1.0001 1.0001 0 1 0 1.4141 1.4141l1.293-1.293 1.293 1.293a1.0001 1.0001 0 1 0 1.4141 -1.4141l-1.293-1.293 1.293-1.293a1.0001 1.0001 0 0 0 -0.72656 -1.7148 1.0001 1.0001 0 0 0 -0.6875 0.30078l-1.293 1.293-1.293-1.293a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_bus_solo.svg b/editor/icons/dark/icon_audio_bus_solo.svg
new file mode 100644
index 0000000000..c4a3f16c04
--- /dev/null
+++ b/editor/icons/dark/icon_audio_bus_solo.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6.9707 2c-0.25474 0.01-0.49715 0.11122-0.67773 0.29102l-2.707 2.707h-1.5859c-0.55226 1e-4 -0.99994 0.4477-1 1v4c5.52e-5 0.5523 0.44774 0.9999 1 1h1.5859l2.707 2.707c0.63002 0.6296 1.7067 0.18367 1.707-0.70703v-10c-9.424e-4 -0.5631-0.46642-1.0144-1.0293-0.99805zm8.0293 2a3 3 0 0 0 -3 3v2a1 1 0 0 1 -1 1h-1v2h1a3 3 0 0 0 3 -3v-2a1 1 0 0 1 1 -1h1v-2h-1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_effect_amplify.svg b/editor/icons/dark/icon_audio_effect_amplify.svg
new file mode 100644
index 0000000000..be4a4721c1
--- /dev/null
+++ b/editor/icons/dark/icon_audio_effect_amplify.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="9" x2="9" y1="1037.4" y2="1051.4" gradientTransform="translate(0 -1036.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v8h2v-2h2v-2h-2v-2h3v-2zm6 0 2 4-2 4h2l1-2 1 2h2l-2-4 2-4h-2l-1 2-1-2zm-6 9v1h2v-1zm2 1v1h-2v-1h-1v4h1v-2h2v2h1v-4zm2-1v5h1v-4h1v4h1v-4h1v-1zm4 1v4h1v-4zm2-1v5h1v-2h2v-3zm1 1h1v1h-1z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_stream_gibberish.svg b/editor/icons/dark/icon_audio_stream_gibberish.svg
new file mode 100644
index 0000000000..69704c1bbc
--- /dev/null
+++ b/editor/icons/dark/icon_audio_stream_gibberish.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2a2 2 0 0 0 -2 2v5a2 2 0 0 0 2 2h3v3l3-3h4a2 2 0 0 0 2 -2v-5a2 2 0 0 0 -2 -2h-10zm0 4h2v1h-2v-1zm5 0a1 1 0 0 1 1 1v1a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1zm3 0h2v1h-2v-1z" fill="#4f4f4f" fill-opacity=".99216"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_stream_player.svg b/editor/icons/dark/icon_audio_stream_player.svg
new file mode 100644
index 0000000000..76fb1d8308
--- /dev/null
+++ b/editor/icons/dark/icon_audio_stream_player.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)" shape-rendering="auto">
+<path d="m10.023 1044.4c-0.56139-0.013-1.0235 0.4264-1.0234 0.9724v5.0542c6.911e-4 0.7482 0.83361 1.2154 1.5 0.8414l4-2.5262c0.66694-0.3743 0.66694-1.3104 0-1.6847l-4-2.5261c-0.14505-0.082-0.30893-0.1269-0.47656-0.131z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -0.24609 0.037109l-7 2a1.0001 1.0001 0 0 0 -0.72461 0.96094v5.5508a2.5 2.5 0 0 0 -0.5 -0.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961 -2.4121 1.0001 1.0001 0 0 0 0.0039062 -0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293 -0.99805z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_stream_player_2_d.svg b/editor/icons/dark/icon_audio_stream_player_2_d.svg
new file mode 100644
index 0000000000..09b137d901
--- /dev/null
+++ b/editor/icons/dark/icon_audio_stream_player_2_d.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)" shape-rendering="auto">
+<path d="m10.023 1044.4c-0.56139-0.013-1.0235 0.4264-1.0234 0.9724v5.0542c6.911e-4 0.7482 0.83361 1.2154 1.5 0.8414l4-2.5262c0.66694-0.3743 0.66694-1.3104 0-1.6847l-4-2.5261c-0.14505-0.082-0.30893-0.1269-0.47656-0.131z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#6d90ff" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -0.24609 0.037109l-7 2a1.0001 1.0001 0 0 0 -0.72461 0.96094v5.5508a2.5 2.5 0 0 0 -0.5 -0.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961 -2.4121 1.0001 1.0001 0 0 0 0.0039062 -0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293 -0.99805z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_stream_player_3_d.svg b/editor/icons/dark/icon_audio_stream_player_3_d.svg
new file mode 100644
index 0000000000..aa2da200da
--- /dev/null
+++ b/editor/icons/dark/icon_audio_stream_player_3_d.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)" shape-rendering="auto">
+<path d="m10.023 1044.4c-0.56139-0.013-1.0235 0.4264-1.0234 0.9724v5.0542c6.911e-4 0.7482 0.83361 1.2154 1.5 0.8414l4-2.5262c0.66694-0.3743 0.66694-1.3104 0-1.6847l-4-2.5261c-0.14505-0.082-0.30893-0.1269-0.47656-0.131z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ff5f5f" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -0.24609 0.037109l-7 2a1.0001 1.0001 0 0 0 -0.72461 0.96094v5.5508a2.5 2.5 0 0 0 -0.5 -0.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961 -2.4121 1.0001 1.0001 0 0 0 0.0039062 -0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293 -0.99805z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_audio_stream_sample.svg b/editor/icons/dark/icon_audio_stream_sample.svg
new file mode 100644
index 0000000000..7d99e5405e
--- /dev/null
+++ b/editor/icons/dark/icon_audio_stream_sample.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m11.971 1.002c-0.08326 0.00207-0.16593 0.014541-0.24609 0.037109l-7 2c-0.42881 0.12287-0.7244 0.51487-0.72461 0.96094v5.5508c-0.16454-0.033679-0.33205-0.050692-0.5-0.050781-1.3807 0-2.5 1.1193-2.5 2.5-4.75e-6 1.3807 1.1193 2.5 2.5 2.5 1.3456-0.0013 2.4488-1.0674 2.4961-2.4121 0.0025906-0.029226 0.003894-0.058551 0.0039062-0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5c-9.16e-4 -0.56314-0.4664-1.0145-1.0293-0.99805zm-1.4707 6.998c-0.277 0-0.5 0.223-0.5 0.5v5c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-5c0-0.277-0.223-0.5-0.5-0.5zm2 1c-0.277 0-0.5 0.223-0.5 0.5v3c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3c0-0.277-0.223-0.5-0.5-0.5zm-4 1c-0.277 0-0.5 0.223-0.5 0.5v1c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-1c0-0.277-0.223-0.5-0.5-0.5zm6 0c-0.277 0-0.5 0.223-0.5 0.5v1c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-1c0-0.277-0.223-0.5-0.5-0.5z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_auto_play.svg b/editor/icons/dark/icon_auto_play.svg
new file mode 100644
index 0000000000..1842a2784c
--- /dev/null
+++ b/editor/icons/dark/icon_auto_play.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2a1.0001 1.0001 0 0 0 -1 1v10a1.0001 1.0001 0 0 0 1 1h8a1.0001 1.0001 0 0 0 0.78125 -0.375l4-5a1.0001 1.0001 0 0 0 0 -1.248l-4-5a1.0001 1.0001 0 0 0 -0.78125 -0.37695h-8zm1 2h6.5195l3.1992 4-3.1992 4h-6.5195v-8zm3 1c-1.1046 0-2 0.8954-2 2v4h1v-2h2v2h1v-4c0-1.1046-0.89543-2-2-2zm0 1a1 1 0 0 1 1 1v1h-2v-1a1 1 0 0 1 1 -1zm3 0v4l2-2-2-2z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_back.svg b/editor/icons/dark/icon_back.svg
new file mode 100644
index 0000000000..b28962f321
--- /dev/null
+++ b/editor/icons/dark/icon_back.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="16" version="1.1" viewBox="0 0 8 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m6 1038.4-4 6 4 6" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_back_buffer_copy.svg b/editor/icons/dark/icon_back_buffer_copy.svg
new file mode 100644
index 0000000000..601c1446df
--- /dev/null
+++ b/editor/icons/dark/icon_back_buffer_copy.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v11h5v-2h-3v-7h6v-2zm6 3v11h8v-11zm2 2h4v7h-4z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bake.svg b/editor/icons/dark/icon_bake.svg
new file mode 100644
index 0000000000..ec1cbc66ae
--- /dev/null
+++ b/editor/icons/dark/icon_bake.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-9 2h10v6h-10v-6zm3 1v1h4v-1h-4z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_baked_light.svg b/editor/icons/dark/icon_baked_light.svg
new file mode 100644
index 0000000000..d6c6bbf903
--- /dev/null
+++ b/editor/icons/dark/icon_baked_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-9 2h10v6h-10v-6zm3 1v1h4v-1h-4z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_baked_light_instance.svg b/editor/icons/dark/icon_baked_light_instance.svg
new file mode 100644
index 0000000000..d6c6bbf903
--- /dev/null
+++ b/editor/icons/dark/icon_baked_light_instance.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-9 2h10v6h-10v-6zm3 1v1h4v-1h-4z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_baked_light_sampler.svg b/editor/icons/dark/icon_baked_light_sampler.svg
new file mode 100644
index 0000000000..a2db34b648
--- /dev/null
+++ b/editor/icons/dark/icon_baked_light_sampler.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h4v-2h-4v-6h4 6 2v-3h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-6 3v1h1v-1h-1zm4 1a1 1 0 0 0 -1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1 -1v-4a1 1 0 0 0 -1 -1h-4zm3 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-2 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bit_map.svg b/editor/icons/dark/icon_bit_map.svg
new file mode 100644
index 0000000000..beed73c550
--- /dev/null
+++ b/editor/icons/dark/icon_bit_map.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2h2v-2h-2zm2 2v2h2v-2h-2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm2 0h2v-2h-2v2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm-2 0h-2v2h2v-2zm-2 0v-2h-2v2h2zm-2 0h-2v2h2v-2zm-2 0v-2h-2v2h2zm-2 0h-2v2h2v-2zm0-2v-2h-2v2h2zm0-2h2v-2h-2v2zm0-2v-2h-2v2h2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm2 0h2v-2h-2v2zm0 2v2h2v-2h-2zm-2 0h-2v2h2v-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bitmap_font.svg b/editor/icons/dark/icon_bitmap_font.svg
new file mode 100644
index 0000000000..8d38bf7699
--- /dev/null
+++ b/editor/icons/dark/icon_bitmap_font.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v4h1v-1h1v-1h4v10h-1v1h-1v1h6v-1h-1v-1h-1v-10h4v1h1v1h1v-4z" fill="#5caeff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_blend.svg b/editor/icons/dark/icon_blend.svg
new file mode 100644
index 0000000000..9e9b7259ed
--- /dev/null
+++ b/editor/icons/dark/icon_blend.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1v2h2.5859l-3.5859 3.5859-4.293-4.293-1.4141 1.4141 4.293 4.293-4.293 4.293 1.4141 1.4141 4.293-4.293 3.5859 3.5859h-2.5859v2h5a1.0001 1.0001 0 0 0 1 -1v-5h-2v2.5859l-3.5859-3.5859 3.5859-3.5859v2.5859h2v-5a1.0001 1.0001 0 0 0 -1 -1h-5z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bone.svg b/editor/icons/dark/icon_bone.svg
new file mode 100644
index 0000000000..43deb5fc4a
--- /dev/null
+++ b/editor/icons/dark/icon_bone.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804 0.7205 2.4664 2.4663 0 0 0 -0.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023 0.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397 0.6955 2.4664 2.4663 0 0 0 0.69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 0.31408 -3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004 -0.3102 2.4664 2.4663 0 0 0 0 -3.4875 2.4664 2.4663 0 0 0 -1.397 -0.6974 2.4664 2.4663 0 0 0 -0.69561 -1.3971 2.4664 2.4663 0 0 0 -1.7072 -0.7205z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bone_attachment.svg b/editor/icons/dark/icon_bone_attachment.svg
new file mode 100644
index 0000000000..7209cf603b
--- /dev/null
+++ b/editor/icons/dark/icon_bone_attachment.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804 0.7205 2.4664 2.4663 0 0 0 -0.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023 0.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397 0.6955 2.4664 2.4663 0 0 0 0.69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 0.31408 -3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004 -0.3102 2.4664 2.4663 0 0 0 0 -3.4875 2.4664 2.4663 0 0 0 -1.397 -0.6974 2.4664 2.4663 0 0 0 -0.69561 -1.3971 2.4664 2.4663 0 0 0 -1.7072 -0.7205z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bone_track.svg b/editor/icons/dark/icon_bone_track.svg
new file mode 100644
index 0000000000..850826ea5e
--- /dev/null
+++ b/editor/icons/dark/icon_bone_track.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804 0.7205 2.4664 2.4663 0 0 0 -0.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023 0.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397 0.6955 2.4664 2.4663 0 0 0 0.69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 0.31408 -3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004 -0.3102 2.4664 2.4663 0 0 0 0 -3.4875 2.4664 2.4663 0 0 0 -1.397 -0.6974 2.4664 2.4663 0 0 0 -0.69561 -1.3971 2.4664 2.4663 0 0 0 -1.7072 -0.7205z" fill="#bb6dff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bool.svg b/editor/icons/dark/icon_bool.svg
new file mode 100644
index 0000000000..56fcba5833
--- /dev/null
+++ b/editor/icons/dark/icon_bool.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m0 4v4 4h2a3 3 0 0 0 2.5 -1.3457 3 3 0 0 0 2.5 1.3457 3 3 0 0 0 2 -0.76758 3 3 0 0 0 2 0.76758 3 3 0 0 0 2.5 -1.3457 3 3 0 0 0 2.5 1.3457v-2a1 1 0 0 1 -1 -1v-5h-2v2.7695a3 3 0 0 0 -2 -0.76953 3 3 0 0 0 -2 0.76758 3 3 0 0 0 -2 -0.76758 3 3 0 0 0 -2.5 1.3457 3 3 0 0 0 -2.5 -1.3457v-2h-2zm2 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm4 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#cf68ea"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_box_shape.svg b/editor/icons/dark/icon_box_shape.svg
new file mode 100644
index 0000000000..b11edb16ca
--- /dev/null
+++ b/editor/icons/dark/icon_box_shape.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#2998ff"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fill="#68b6ff"/>
+<path d="m1 1040.4 7 3 7-3-7-3z" fill="#a2d2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bus_vu_db.svg b/editor/icons/dark/icon_bus_vu_db.svg
new file mode 100644
index 0000000000..83163a2c28
--- /dev/null
+++ b/editor/icons/dark/icon_bus_vu_db.svg
@@ -0,0 +1,12 @@
+<svg width="32" height="128" version="1.1" viewBox="0 0 32 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="16" x2="16" y2="128" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m1.5 0c-0.831 0-1.5 0.669-1.5 1.5 0 0.831 0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5 0-0.831-0.669-1.5-1.5-1.5h-2zm0 7c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm22.5 3.75c-1.5 0-3 1.3056-3 3.25-0.01912 1.3523 2.0191 1.3523 2 0 0-1.0556 0.5-1.25 1-1.25s1 0.19444 1 1.25c0 0.59157-0.35893 1.156-1.1914 1.8633-0.83248 0.70724-2.0616 1.4518-3.3574 2.3008-0.82974 0.54516-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.01912 1.3523-2.0191 0-2h-1.7852c0.28375-0.20667 0.63106-0.39443 0.88867-0.61328 1.0302-0.87519 1.8965-1.9783 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm-7.0293 0.25195c-0.14519 0.0037-0.28782 0.03907-0.41797 0.10352l-2 1c-1.1924 0.59646-0.29787 2.3855 0.89453 1.7891l0.55273-0.27539v5.3809c-0.01913 1.3523 2.0191 1.3523 2 0v-7c-9.16e-4 -0.56314-0.4664-1.0145-1.0293-0.99805zm-15.471 2.998c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm0 7c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm21.5 3c-0.554 0-1 0.446-1 1v1 2h-0.92969c-0.02343-8.24e-4 -0.046882-8.24e-4 -0.070312 0-1.0702 0-2.0626 0.57318-2.5977 1.5-0.5351 0.92681-0.5351 2.0732 0 3 0.5351 0.92681 1.5275 1.5 2.5977 1.5h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1zm4 0c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2c1.0702 0 2.0626-0.57319 2.5977-1.5 0.5351-0.92682 0.5351-2.0732 0-3-0.10504-0.18193-0.23173-0.34698-0.36914-0.5 0.1378-0.15331 0.26385-0.31764 0.36914-0.5 0.5351-0.92682 0.5351-2.0732 0-3-0.5351-0.92682-1.5275-1.5-2.5977-1.5h-2zm-14 1c-1.6447 0-3 1.3553-3 3v3c0 1.6447 1.3553 3 3 3s3-1.3553 3-3v-3c0-1.6447-1.3553-3-3-3zm15 1h1c0.35887 0 0.6858 0.18921 0.86523 0.5 0.17944 0.31079 0.17944 0.68921 0 1-0.17943 0.31079-0.50636 0.5-0.86523 0.5h-0.070312-0.92969v-2zm-15 1c0.5713 0 1 0.4287 1 1v3c0 0.5713-0.4287 1-1 1s-1-0.4287-1-1v-3c0-0.5713 0.4287-1 1-1zm-11.5 1c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm19.5 2h1v2h-0.92969c-0.02343-8.24e-4 -0.046882-8.24e-4 -0.070312 0-0.35887 0-0.6858-0.18921-0.86523-0.5-0.17944-0.31079-0.17944-0.68921 0-1 0.17943-0.31079 0.50636-0.5 0.86523-0.5zm7 0h1c0.35887 0 0.6858 0.18921 0.86523 0.5 0.17944 0.31079 0.17944 0.68921 0 1-0.17943 0.31079-0.50636 0.5-0.86523 0.5h-1v-2zm-26.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm22.5 2.75c-1.5 0-3 1.3056-3 3.25-0.01912 1.3523 2.0191 1.3523 2 0 0-1.0556 0.5-1.25 1-1.25s1 0.19444 1 1.25c0 0.59157-0.35893 1.156-1.1914 1.8633-0.83248 0.70724-2.0616 1.4518-3.3574 2.3008-0.82974 0.54516-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.01913 1.3523-2.0191 0-2h-1.7852c0.28375-0.20667 0.63106-0.39443 0.88867-0.61328 1.0302-0.87519 1.8965-1.9783 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm-7.0293 0.25195c-0.14519 0.0037-0.28782 0.03907-0.41797 0.10352l-2 1c-1.1924 0.59646-0.29787 2.3855 0.89453 1.7891l0.55273-0.27539v5.3809c-0.01913 1.3523 2.0191 1.3523 2 0v-7c-9.16e-4 -0.56314-0.4664-1.0145-1.0293-0.99805zm-15.471 3.998c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 1v2h3v-2h-3zm-7 6c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm15.986 3.75c-1.5 0-3 1.3056-3 3.25-0.01913 1.3523 2.0191 1.3523 2 0 0-1.0556 0.5-1.25 1-1.25s1 0.19444 1 1.25c0 0.59157-0.35893 1.156-1.1914 1.8633s-2.0616 1.4518-3.3574 2.3008c-0.82974 0.54516-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.01913 1.3523-2.0191 0-2h-1.7871c0.2841-0.20689 0.63273-0.39419 0.89062-0.61328 1.0302-0.87519 1.8965-1.9783 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm7.0469 0.23828c-0.36561-0.0093-0.70715 0.18167-0.89062 0.49805l-3 5c-0.39877 0.66633 0.080888 1.5131 0.85742 1.5137h3v1c-0.01912 1.3523 2.0191 1.3523 2 0v-2c-5.5e-5 -0.55226-0.44774-0.99994-1-1h-2.2324l2.0898-3.4844c0.40768-0.65656-0.05163-1.5077-0.82422-1.5273zm-23.533 3.0117c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm-7.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm24.547 4.9961c-0.12355-0.0037-0.24673 0.01547-0.36328 0.05664 0 0-0.98349 0.3331-1.8906 1.2402-0.90714 0.90717-1.793 2.457-1.793 4.707-6.13e-4 0.07218 0.006604 0.14421 0.021484 0.21484 0.11389 1.5445 1.4072 2.7852 2.9785 2.7852 1.645 0 3-1.355 3-3 0-1.645-1.355-3-3-3-0.01533 0-0.029642 0.003706-0.044922 0.003906 0.084-0.10099 0.16695-0.21188 0.25195-0.29688 0.59286-0.59287 1.1094-0.75781 1.1094-0.75781 1.0726-0.33926 0.85487-1.9171-0.26953-1.9531zm-9.0605 0.005859c-1.0407 0.006928-2.0405 0.55674-2.584 1.498a1 1 0 0 0 0.36523 1.3672 1 1 0 0 0 1.3672 -0.36719c0.24596-0.42602 0.74477-0.6077 1.207-0.43945 0.46226 0.16824 0.728 0.62882 0.64258 1.1133-0.085422 0.48445-0.49245 0.82617-0.98438 0.82617a1 1 0 0 0 -1 1 1 1 0 0 0 1 1c0.49193 0 0.89896 0.34368 0.98438 0.82812 0.085422 0.48446-0.18032 0.94508-0.64258 1.1133-0.46226 0.1683-0.96107-0.015436-1.207-0.44141-0.27644-0.47871-0.88884-0.6423-1.3672-0.36523-0.47752 0.27639-0.64095 0.88733-0.36523 1.3652 0.72462 1.2553 2.2612 1.816 3.623 1.3203 1.3618-0.4956 2.1813-1.9126 1.9297-3.3398-0.1003-0.56884-0.37254-1.0676-0.74023-1.4746 0.37098-0.40777 0.63937-0.91234 0.74023-1.4844 0.25166-1.4272-0.56786-2.8442-1.9297-3.3398-0.34046-0.12392-0.69218-0.182-1.0391-0.17969zm-15.486 1.998c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm16 1c0.56413 0 1 0.43587 1 1s-0.43587 1-1 1-1-0.43587-1-1 0.43587-1 1-1zm-23.5 4c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm16.533 3.9883c-0.36561-0.0093-0.70715 0.18167-0.89062 0.49805l-3 5c-0.39877 0.66633 0.080888 1.5131 0.85742 1.5137h3v1c-0.01912 1.3523 2.0191 1.3523 2 0v-2c-5.5e-5 -0.55226-0.44774-0.99994-1-1h-2.2324l2.0898-3.4844c0.40768-0.65656-0.05163-1.5077-0.82422-1.5273zm6.9668 0.011719c-1.645 0-3 1.355-3 3 0 0.769 0.30369 1.4666 0.78711 2-0.48282 0.53332-0.78711 1.2315-0.78711 2 0 1.645 1.355 3 3 3s3-1.355 3-3c0-0.76846-0.30429-1.4667-0.78711-2 0.48342-0.53345 0.78711-1.231 0.78711-2 0-1.645-1.355-3-3-3zm0 2c0.56413 0 1 0.4359 1 1 0 0.5642-0.43587 1-1 1s-1-0.4358-1-1c0-0.5641 0.43587-1 1-1zm-23.5 1c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm16 1c0.56413 0 1 0.4359 1 1 0 0.5642-0.43587 1-1 1s-1-0.4358-1-1c0-0.5641 0.43587-1 1-1zm-23.5 4c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm16.447 3.9824c-0.08995 0.0063-0.17865 0.024647-0.26367 0.054687 0 0-0.98349 0.33509-1.8906 1.2422-0.90714 0.9068-1.793 2.457-1.793 4.707-6.13e-4 0.0722 0.006604 0.14421 0.021484 0.21484 0.11389 1.5445 1.4072 2.7852 2.9785 2.7852 1.645 0 3-1.355 3-3 0-1.6451-1.355-3-3-3-0.01533 0-0.029642 0.003706-0.044922 0.003906 0.084-0.10099 0.16695-0.21187 0.25195-0.29688 0.59286-0.5929 1.1094-0.75781 1.1094-0.75781 1.0726-0.33926 0.85487-1.9171-0.26953-1.9531-0.03318-0.0017-0.066429-0.0017-0.099609 0zm7.0527 0.017578c-1.6447 0-3 1.3553-3 3v3c0 1.6447 1.3553 3 3 3s3-1.3553 3-3v-3c0-1.6447-1.3553-3-3-3zm0 2c0.5713 0 1 0.4287 1 1v3c0 0.5713-0.4287 1-1 1s-1-0.4287-1-1v-3c0-0.5713 0.4287-1 1-1zm-23.5 1c-0.831 0-1.5 0.669-1.5 1.5 0 0.831 0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5 0-0.831-0.669-1.5-1.5-1.5h-2zm15.5 1.9863c0.56413 0 1 0.4358 1 1 0 0.5641-0.43587 1-1 1s-1-0.4359-1-1c0-0.5642 0.43587-1 1-1zm-8 0.013672v2h3v-2h-3zm-7.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm22.5 3.75c-1.5 0-3 1.3056-3 3.25-0.01912 1.3523 2.0191 1.3523 2 0 0-1.0555 0.5-1.25 1-1.25s1 0.1945 1 1.25c0 0.5916-0.35893 1.1561-1.1914 1.8633-0.83248 0.7072-2.0616 1.4518-3.3574 2.3008-0.82975 0.54515-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.0191 1.3523-2.0191 0-2h-1.7852c0.28375-0.2066 0.63106-0.39438 0.88867-0.61328 1.0302-0.8751 1.8965-1.9782 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm-10 0.25c-1.3523-0.0191-1.3523 2.0191 0 2h3.3828l-3.2773 6.5527c-0.59596 1.1926 1.1931 2.0871 1.7891 0.89454l4-8c0.33239-0.66495-0.15113-1.4472-0.89453-1.4473h-5zm-12.5 3c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm-7.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bus_vu_empty.svg b/editor/icons/dark/icon_bus_vu_empty.svg
new file mode 100644
index 0000000000..15d8274461
--- /dev/null
+++ b/editor/icons/dark/icon_bus_vu_empty.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="128" version="1.1" viewBox="0 0 16 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="2" y2="126" gradientTransform="translate(0 924.36)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path d="m3 926.36c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1z" fill="url(#a)"/>
+<path transform="translate(0 924.36)" d="m3 2c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bus_vu_frozen.svg b/editor/icons/dark/icon_bus_vu_frozen.svg
new file mode 100644
index 0000000000..99884d33fc
--- /dev/null
+++ b/editor/icons/dark/icon_bus_vu_frozen.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="128" version="1.1" viewBox="0 0 16 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="2" y2="126" gradientUnits="userSpaceOnUse">
+<stop stop-color="#62aeff" offset="0"/>
+<stop stop-color="#75d1e6" offset=".5"/>
+<stop stop-color="#84ffee" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m3 2c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10z" fill="url(#a)" opacity=".7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_bus_vu_full.svg b/editor/icons/dark/icon_bus_vu_full.svg
new file mode 100644
index 0000000000..1187841d71
--- /dev/null
+++ b/editor/icons/dark/icon_bus_vu_full.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="128" version="1.1" viewBox="0 0 16 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="2" y2="126" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff4040" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#00f010" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m3 2c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_button.svg b/editor/icons/dark/icon_button.svg
new file mode 100644
index 0000000000..078f47b396
--- /dev/null
+++ b/editor/icons/dark/icon_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v3.1328l-1.4453-0.96484-1.1094 1.6641 3 2a1.0001 1.0001 0 0 0 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-3.1328h-2zm-1.5 8c-0.831 0-1.5 0.669-1.5 1.5v1.5h-2v2h12v-2h-2v-1.5c0-0.831-0.669-1.5-1.5-1.5h-5z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_button_group.svg b/editor/icons/dark/icon_button_group.svg
new file mode 100644
index 0000000000..ceb9d3ada8
--- /dev/null
+++ b/editor/icons/dark/icon_button_group.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1c-0.554 0-1 0.446-1 1v12c0 0.554 0.446 1 1 1h8c0.554 0 1-0.446 1-1v-12c0-0.554-0.446-1-1-1h-8zm1 1h2c0.554 0 1 0.446 1 1s-0.446 1-1 1h-2c-0.554 0-1-0.446-1-1s0.446-1 1-1zm6 0c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm-5 4a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm5 0c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm0 4c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm-7 2h1v2h-1v-2zm2 0h1v2h-1v-2zm2 0h1v2h-1v-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_camera.svg b/editor/icons/dark/icon_camera.svg
new file mode 100644
index 0000000000..ee80e38cf2
--- /dev/null
+++ b/editor/icons/dark/icon_camera.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m9 1038.4a3 3 0 0 0 -2.9883 2.7774 3 3 0 0 0 -2.0117 -0.7774 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8243v2.1757c0 0.554 0.44599 1 1 1h6c0.55401 0 1-0.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1 -2.2305 3 3 0 0 0 -3 -3z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_camera_2d.svg b/editor/icons/dark/icon_camera_2d.svg
new file mode 100644
index 0000000000..978f5b8964
--- /dev/null
+++ b/editor/icons/dark/icon_camera_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m9 1038.4a3 3 0 0 0 -2.9883 2.7774 3 3 0 0 0 -2.0117 -0.7774 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8243v2.1757c0 0.554 0.44599 1 1 1h6c0.55401 0 1-0.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1 -2.2305 3 3 0 0 0 -3 -3z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_canvas_item.svg b/editor/icons/dark/icon_canvas_item.svg
new file mode 100644
index 0000000000..a8c9910867
--- /dev/null
+++ b/editor/icons/dark/icon_canvas_item.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2.9208 1046.4c-0.26373 0.3-0.4204 0.7296-0.4204 1.2383 0 1.6277-3.1381-0.1781-0.33757 2.6703 0.88382 0.899 2.6544 0.6701 3.5382-0.2288 0.88384-0.899 0.88382-2.3565 0-3.2554-1.1002-1.1191-2.2001-1.0845-2.7803-0.4244zm2.3802-1.6103 2.4005 2.4416 6.8014-6.9177c0.66286-0.6742 0.66286-1.7673 0-2.4415-0.66288-0.6741-1.7376-0.6741-2.4005 0z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_canvas_item_material.svg b/editor/icons/dark/icon_canvas_item_material.svg
new file mode 100644
index 0000000000..821d882471
--- /dev/null
+++ b/editor/icons/dark/icon_canvas_item_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.1035 3a7 7 0 0 0 -1.418 2h12.631a7 7 0 0 0 -1.4277 -2h-9.7852z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m1.6855 5a7 7 0 0 0 -0.60547 2h13.842a7 7 0 0 0 -0.60547 -2h-12.631z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1.0801 7a7 7 0 0 0 -0.080078 1 7 7 0 0 0 0.078125 1h13.842a7 7 0 0 0 0.080078 -1 7 7 0 0 0 -0.078125 -1h-13.842z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1.0781 9a7 7 0 0 0 0.60547 2h12.631a7 7 0 0 0 0.60547 -2h-13.842z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m3.1113 13a7 7 0 0 0 4.8887 2 7 7 0 0 0 4.8965 -2h-9.7852z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m1.6836 11a7 7 0 0 0 1.4277 2h9.7852a7 7 0 0 0 1.418 -2h-12.631z" fill="#702aff"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -4.8965 2h9.7852a7 7 0 0 0 -4.8887 -2z" fill="#ff2929"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_canvas_item_shader.svg b/editor/icons/dark/icon_canvas_item_shader.svg
new file mode 100644
index 0000000000..f1dbc569f4
--- /dev/null
+++ b/editor/icons/dark/icon_canvas_item_shader.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.303 1c-0.4344 0-0.86973 0.16881-1.2012 0.50586l-1.4688 1.4941h4.3418c0.082839-0.52789-0.072596-1.0872-0.47266-1.4941-0.33144-0.33705-0.76482-0.50586-1.1992-0.50586z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m10.633 3l-1.9668 2h4.8008l1.0352-1.0527c0.2628-0.2673 0.41824-0.60049 0.47266-0.94727h-4.3418z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m8.666 5l-1.9648 2h4.7988l1.9668-2h-4.8008z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m6.7012 7l-1.4004 1.4238 0.56641 0.57617h3.668l1.9648-2h-4.7988z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m5.8672 9l1.834 1.8652 1.834-1.8652h-3.668zm-1.752 0.57812c-0.48501-0.048725-0.90521 0.12503-1.1953 0.45508-0.21472 0.24426-0.35243 0.57797-0.39844 0.9668h3.5625c-0.10223-0.1935-0.22224-0.37965-0.38281-0.54297-0.55011-0.55955-1.1009-0.83018-1.5859-0.87891z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m1.3242 13c0.18414 0.24071 0.43707 0.53374 0.83789 0.94141 0.88382 0.899 2.6552 0.67038 3.5391-0.22852 0.20747-0.21103 0.36064-0.45476 0.4707-0.71289h-4.8477z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m2.5215 11c-0.0105 0.088737-0.021484 0.17696-0.021484 0.27148 0 1.3947-2.2782 0.28739-1.1758 1.7285h4.8477c0.27363-0.64173 0.24047-1.3785-0.087891-2h-3.5625z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_canvas_item_shader_graph.svg b/editor/icons/dark/icon_canvas_item_shader_graph.svg
new file mode 100644
index 0000000000..015765c775
--- /dev/null
+++ b/editor/icons/dark/icon_canvas_item_shader_graph.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<defs>
+<clipPath id="a">
+<path d="m8.0625 1025.9a3.375 3 0 0 0 -3.375 3 3.375 3 0 0 0 1.6875 2.5957v9.8115a3.375 3 0 0 0 -1.6875 2.5928 3.375 3 0 0 0 3.375 3 3.375 3 0 0 0 3.375 -3 3.375 3 0 0 0 -1.6875 -2.5957v-8.7832l11.931 10.605a3.375 3 0 0 0 -0.11865 0.7735 3.375 3 0 0 0 3.375 3 3.375 3 0 0 0 3.375 -3 3.375 3 0 0 0 -3.375 -3 3.375 3 0 0 0 -0.87341 0.1025l-11.928-10.602h9.8844a3.375 3 0 0 0 2.9169 1.5 3.375 3 0 0 0 3.375 -3 3.375 3 0 0 0 -3.375 -3 3.375 3 0 0 0 -2.9202 1.5h-11.038a3.375 3 0 0 0 -2.9169 -1.5z" fill="#000000"/>
+</clipPath>
+</defs>
+<g transform="translate(0 -1036.4)">
+<g transform="matrix(.59259 0 0 .66667 -1.7778 353.45)" clip-path="url(#a)">
+<rect x="3" y="1025.9" width="27" height="3" fil#ff2929070"/>
+<rect x="3" y="1028.9" width="27" height="3" fil#ffe337b70"/>
+<rect x="3" y="1031.9" width="27" height="3" fil#74ff34f70"/>
+<rect x="3" y="1034.9" width="27" height="3" fil#2cff98fb9"/>
+<rect x="3" y="1037.9" width="27" height="3" fil#22ccffeff"/>
+<rect x="3" y="1043.9" width="27" height="3" fil#ff27810ac"/>
+<rect x="3" y="1040.9" width="27" height="3" fil#702aff0ff"/>
+</g>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_canvas_layer.svg b/editor/icons/dark/icon_canvas_layer.svg
new file mode 100644
index 0000000000..6a12976100
--- /dev/null
+++ b/editor/icons/dark/icon_canvas_layer.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2v6h1v-6a1 1 0 0 1 1 -1h6v-1h-6zm10.303 0c-0.4344 0-0.86973 0.16881-1.2012 0.50586l-6.8008 6.918 2.4004 2.4414 6.8008-6.918c0.66286-0.6742 0.66286-1.7672 0-2.4414-0.33144-0.33705-0.76482-0.50586-1.1992-0.50586zm0.69727 6v6a1 1 0 0 1 -1 1h-6v1h6a2 2 0 0 0 2 -2v-6h-1zm-9.8848 2.5781c-0.48501-0.048725-0.90521 0.12503-1.1953 0.45508-0.26373 0.3-0.41992 0.72958-0.41992 1.2383 0 1.6277-3.1385-0.17848-0.33789 2.6699 0.88382 0.899 2.6552 0.67038 3.5391-0.22852 0.88384-0.899 0.88382-2.357 0-3.2559-0.55011-0.55955-1.1009-0.83018-1.5859-0.87891z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_canvas_modulate.svg b/editor/icons/dark/icon_canvas_modulate.svg
new file mode 100644
index 0000000000..997992ef85
--- /dev/null
+++ b/editor/icons/dark/icon_canvas_modulate.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v14h14v-14zm2 2h10v10h-10z" fill="#6d90ff"/>
+<path d="m12 1048.4h-5l5-5z" fill="#70bfff" fill-rule="evenodd"/>
+<path d="m4 1040.4h5l-5 5z" fill="#ff2929" fill-rule="evenodd"/>
+<path d="m4 1048.4v-3l5-5h3v3l-5 5z" fill="#7aff70" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_capsule_mesh.svg b/editor/icons/dark/icon_capsule_mesh.svg
new file mode 100644
index 0000000000..512a307b9c
--- /dev/null
+++ b/editor/icons/dark/icon_capsule_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4c-2.7527 0-5 2.2419-5 4.9903v4.0175c0 2.7484 2.2473 4.9922 5 4.9922 2.7527 0 5-2.2438 5-4.9922v-4.0175c0-2.7484-2.2473-4.9903-5-4.9903zm-1.0059 2.1264v4.8576c-0.66556-0.1047-1.2973-0.372-1.9941-0.6618v-1.3222c0-1.3474 0.79838-2.4648 1.9941-2.8736zm2.0118 0c1.1957 0.4088 1.9941 1.5262 1.9941 2.8736v1.3451c-0.68406 0.3054-1.3142 0.5732-1.9941 0.6663zm-4.0059 6.334c0.67836 0.2231 1.3126 0.447 1.9941 0.5264v2.8848c-1.1957-0.4092-1.9941-1.5242-1.9941-2.8716zm6 0.03v0.5094c0 1.3474-0.79838 2.4619-1.9941 2.8711v-2.8711c0.68606-0.068 1.3207-0.2828 1.9941-0.5094z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fea900" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_capsule_shape.svg b/editor/icons/dark/icon_capsule_shape.svg
new file mode 100644
index 0000000000..2940816d60
--- /dev/null
+++ b/editor/icons/dark/icon_capsule_shape.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4c-2.7527 0-5 2.2419-5 4.9903v4.0175c0 2.7484 2.2473 4.9922 5 4.9922 2.7527 0 5-2.2438 5-4.9922v-4.0175c0-2.7484-2.2473-4.9903-5-4.9903z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#68b6ff" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<circle cx="6.5" cy="1040.9" r="1.5" fill="#a2d2ff" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_capsule_shape_2d.svg b/editor/icons/dark/icon_capsule_shape_2d.svg
new file mode 100644
index 0000000000..3549a289e0
--- /dev/null
+++ b/editor/icons/dark/icon_capsule_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1c-2.77 0-5 2.23-5 5v4c0 2.77 2.23 5 5 5s5-2.23 5-5v-4c0-2.77-2.23-5-5-5zm0 2c1.662 0 3 1.338 3 3v4c0 1.662-1.338 3-3 3s-3-1.338-3-3v-4c0-1.662 1.338-3 3-3z" fill="#68b6ff" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_center_container.svg b/editor/icons/dark/icon_center_container.svg
new file mode 100644
index 0000000000..6c847f1db9
--- /dev/null
+++ b/editor/icons/dark/icon_center_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm3 1l2 2 2-2h-4zm-2 2v4l2-2-2-2zm8 0l-2 2 2 2v-4zm-4 4l-2 2h4l-2-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_check_box.svg b/editor/icons/dark/icon_check_box.svg
new file mode 100644
index 0000000000..0b7bbdb8a6
--- /dev/null
+++ b/editor/icons/dark/icon_check_box.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-1.1046 0-2 0.89543-2 2v9c0 1.1046 0.89543 2 2 2h9c1.1046 0 2-0.89543 2-2v-4.9277l-2 2v2.9277h-9v-9h6.5859l2-2zm9.3633 2.0508-4.9492 4.9492-1.4141-1.4141-1.4141 1.4141 2.8281 2.8281 6.3633-6.3633z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_check_button.svg b/editor/icons/dark/icon_check_button.svg
new file mode 100644
index 0000000000..c49beca262
--- /dev/null
+++ b/editor/icons/dark/icon_check_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4h6a4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4h-6zm0 2h2.541a4 4 0 0 0 -0.54102 2 4 4 0 0 0 0.54102 2h-2.541a2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_checkerboard.svg b/editor/icons/dark/icon_checkerboard.svg
new file mode 100644
index 0000000000..dcb8adb2d7
--- /dev/null
+++ b/editor/icons/dark/icon_checkerboard.svg
@@ -0,0 +1,6 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)" fill="#000000" stroke-linecap="round" stroke-linejoin="round">
+<rect y="988.36" width="64" height="64" fill-opacity=".19608" stroke-width="2"/>
+<path transform="translate(0 988.36)" d="m0 0v16h16v-16h-16zm16 16v16h16v-16h-16zm16 0h16v-16h-16v16zm16 0v16h16v-16h-16zm0 16h-16v16h16v-16zm0 16v16h16v-16h-16zm-16 0h-16v16h16v-16zm-16 0v-16h-16v16h16z" fill-opacity=".39216" stroke-width="8"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_circle_shape_2d.svg b/editor/icons/dark/icon_circle_shape_2d.svg
new file mode 100644
index 0000000000..bfe5aec81a
--- /dev/null
+++ b/editor/icons/dark/icon_circle_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1038.4a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_class_list.svg b/editor/icons/dark/icon_class_list.svg
new file mode 100644
index 0000000000..84c80faded
--- /dev/null
+++ b/editor/icons/dark/icon_class_list.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="1" y="1038.4" width="5" height=".99998"/>
+<rect x="6" y="1037.4" width="6" height="3"/>
+<rect x="3" y="1038.4" width="1" height="11"/>
+<rect x="4" y="1043.4" width="5" height="1"/>
+<rect x="9" y="1042.4" width="6" height="3"/>
+<rect x="4" y="1048.4" width="5" height="1"/>
+<rect x="9" y="1047.4" width="6" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_clear.svg b/editor/icons/dark/icon_clear.svg
new file mode 100644
index 0000000000..7f7564b876
--- /dev/null
+++ b/editor/icons/dark/icon_clear.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a1 1 0 0 0 -1 1v5h-2c-1.108 0-2 0.892-2 2v1h10v-1c0-1.108-0.892-2-2-2h-2v-5a1 1 0 0 0 -1 -1zm-5 10v4l10-1v-3h-10z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_close.svg b/editor/icons/dark/icon_close.svg
new file mode 100644
index 0000000000..351bdc5547
--- /dev/null
+++ b/editor/icons/dark/icon_close.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.7578 2.3438l-1.4141 1.4141 4.2422 4.2422-4.2422 4.2422 1.4141 1.4141 4.2422-4.2422 4.2422 4.2422 1.4141-1.4141-4.2422-4.2422 4.2422-4.2422-1.4141-1.4141-4.2422 4.2422-4.2422-4.2422z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_collapse.svg b/editor/icons/dark/icon_collapse.svg
new file mode 100644
index 0000000000..7c9be68c44
--- /dev/null
+++ b/editor/icons/dark/icon_collapse.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1040.4v3.9375l6 5.0625 6-5.0625v-3.9375h-12z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_collision_polygon.svg b/editor/icons/dark/icon_collision_polygon.svg
new file mode 100644
index 0000000000..7b46cf030e
--- /dev/null
+++ b/editor/icons/dark/icon_collision_polygon.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#ff5f5f" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_collision_polygon_2d.svg b/editor/icons/dark/icon_collision_polygon_2d.svg
new file mode 100644
index 0000000000..a1e6d9fbef
--- /dev/null
+++ b/editor/icons/dark/icon_collision_polygon_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#6d90ff" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_collision_shape.svg b/editor/icons/dark/icon_collision_shape.svg
new file mode 100644
index 0000000000..340b182cf5
--- /dev/null
+++ b/editor/icons/dark/icon_collision_shape.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 1.1802e-5)" stroke="#ff5f5f" stroke-opacity=".99608">
+<path d="m8 1050.4-6-3v-6l6-3 6 3v6z" fill="none" stroke="#ff5f5f" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_collision_shape_2d.svg b/editor/icons/dark/icon_collision_shape_2d.svg
new file mode 100644
index 0000000000..5e672ab1a8
--- /dev/null
+++ b/editor/icons/dark/icon_collision_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12z" fill="none" stroke="#6d90ff" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_color.svg b/editor/icons/dark/icon_color.svg
new file mode 100644
index 0000000000..4a6b354849
--- /dev/null
+++ b/editor/icons/dark/icon_color.svg
@@ -0,0 +1,24 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<defs>
+<clipPath id="a">
+<path d="m8 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 3a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#000000"/>
+</clipPath>
+</defs>
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="8" fil#000000fff"/>
+<g clip-path="url(#a)">
+<path d="m6.1883 1037.6a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#f00"/>
+<path transform="matrix(.86603 .5 -.5 .86603 0 0)" d="m527.3 893.68a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ff4d00"/>
+<path transform="matrix(.5 .86603 -.86603 .5 0 0)" d="m906.63 508.49a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#f90"/>
+<path transform="rotate(90)" d="m1042.6-14.761a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ffca00"/>
+<path transform="matrix(-.5 .86603 -.86603 -.5 0 0)" d="m898.63-535.87a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ff0"/>
+<path transform="matrix(-.86603 .5 -.5 -.86603 0 0)" d="m513.44-915.21a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#9fff00"/>
+<path transform="scale(-1)" d="m-9.8118-1051.1a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#0f0"/>
+<path transform="matrix(-.86603 -.5 .5 -.86603 0 0)" d="m-530.92-907.21a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#0fa"/>
+<path transform="matrix(-.5 -.86603 .86603 -.5 0 0)" d="m-910.26-522.01a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#00f"/>
+<path transform="rotate(-90)" d="m-1046.2 1.2385a7 7 0 0 1 3.6235 1e-7l-1.8118 6.7615z" fill="#9000ff"/>
+<path transform="matrix(.5 -.86603 .86603 .5 0 0)" d="m-902.26 522.35a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#f0e"/>
+<path transform="matrix(.86603 -.5 .5 .86603 0 0)" d="m-517.06 901.68a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ff009a"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_color_pick.svg b/editor/icons/dark/icon_color_pick.svg
new file mode 100644
index 0000000000..e2a9f30853
--- /dev/null
+++ b/editor/icons/dark/icon_color_pick.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211l1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_color_picker.svg b/editor/icons/dark/icon_color_picker.svg
new file mode 100644
index 0000000000..775678e644
--- /dev/null
+++ b/editor/icons/dark/icon_color_picker.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211l1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_color_picker_button.svg b/editor/icons/dark/icon_color_picker_button.svg
new file mode 100644
index 0000000000..3b0643ef4c
--- /dev/null
+++ b/editor/icons/dark/icon_color_picker_button.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211 1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#29d739"/>
+<path transform="translate(0 1036.4)" d="m1 3v6.3438l4.9492-4.9512-1.3926-1.3926h-3.5566zm14 6.4863l-1.5137 1.5137h-0.92969l-0.94922-0.94922-2.9492 2.9492h6.3418v-3.5137z" fill="#29d739"/>
+<path transform="translate(0 1036.4)" d="m10.658 11l-2 2h6.3418v-2h-1.5137-0.92969-1.8984z" fill-opacity=".078431"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_color_ramp.svg b/editor/icons/dark/icon_color_ramp.svg
new file mode 100644
index 0000000000..d05355d8c7
--- /dev/null
+++ b/editor/icons/dark/icon_color_ramp.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="4" x2="30" y1="14" y2="14" gradientTransform="matrix(.51852 0 0 .7 -.55556 1034.6)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#afff68" offset="0"/>
+<stop stop-color="#ff6b6b" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path d="m1 1051.4h14v-14z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_color_rect.svg b/editor/icons/dark/icon_color_rect.svg
new file mode 100644
index 0000000000..ca913c123e
--- /dev/null
+++ b/editor/icons/dark/icon_color_rect.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1037.4" width="2" height="14" fill="#29d739"/>
+<rect x="1" y="1049.4" width="14" height="2" fill="#29d739"/>
+<rect x="1" y="1037.4" width="14" height="2" fill="#29d739"/>
+<rect x="13" y="1037.4" width="2" height="14" fill="#29d739"/>
+<path d="m12 1048.4h-4.8l4.8-4.8z" fill="#70bfff" fill-rule="evenodd"/>
+<path d="m4 1040.4h4.8l-4.8 4.8z" fill="#ff2929" fill-rule="evenodd"/>
+<path d="m4 1048.4v-3.2l4.8-4.8h3.2v3.2l-4.8 4.8z" fill="#7aff70" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_concave_polygon_shape.svg b/editor/icons/dark/icon_concave_polygon_shape.svg
new file mode 100644
index 0000000000..0df696f8b7
--- /dev/null
+++ b/editor/icons/dark/icon_concave_polygon_shape.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#2998ff"/>
+<path d="m8 1037.4-7 3v8l7 3 7-3v-8l-7-3z" fill="#2998ff"/>
+<path d="m3 1041.4v6l5 2 5-2v-6l-5-2z" fill="#2998ff"/>
+<path d="m8 1049.4 5-2-5-2-5 2z" fill="#a2d2ff"/>
+<path d="m8 1045.4 5 2v-6l-5-2z" fill="#68b6ff"/>
+<path transform="translate(0 1036.4)" d="m8 1-7 3 2 1 5-2 5 2 2-1z" fill="#a2d2ff"/>
+<path transform="translate(0 1036.4)" d="m1 4v8l7 3v-2l-5-2v-6z" fill="#68b6ff"/>
+<path transform="translate(0 1036.4)" d="m15 4-2 1v6l-5 2v2l7-3z" fill="#2998ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_concave_polygon_shape_2d.svg b/editor/icons/dark/icon_concave_polygon_shape_2d.svg
new file mode 100644
index 0000000000..3264e69ffc
--- /dev/null
+++ b/editor/icons/dark/icon_concave_polygon_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12l6 6 6-6z" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_cone_twist_joint.svg b/editor/icons/dark/icon_cone_twist_joint.svg
new file mode 100644
index 0000000000..1ec0abb830
--- /dev/null
+++ b/editor/icons/dark/icon_cone_twist_joint.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#ff5f5f" stroke-linecap="round" stroke-width="2">
+<path transform="translate(0 1036.4)" d="m8 2l-6 9a6 3 0 0 0 3 2.5977 6 3 0 0 0 6 0 6 3 0 0 0 3 -2.5977l-6-9z" stroke-linejoin="round"/>
+<ellipse cx="8" cy="1047.4" rx="6" ry="3" stroke-linejoin="round"/>
+<path d="m8 1039.4v8"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_confirmation_dialog.svg b/editor/icons/dark/icon_confirmation_dialog.svg
new file mode 100644
index 0000000000..0520d3101f
--- /dev/null
+++ b/editor/icons/dark/icon_confirmation_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2h-10zm9 1h1v1h-1v-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8h-14zm6.9863 1.002c0.34689-0.0022844 0.6986 0.055762 1.0391 0.17969 1.3618 0.4956 2.1813 1.9126 1.9297 3.3398-0.19105 1.0835-0.96172 1.9461-1.9551 2.3008v0.17773h-1-1v-0.8418a1.0001 1.0001 0 0 1 1 -1.1582c0.49193 0 0.89895-0.34177 0.98438-0.82617 0.085424-0.4845-0.18031-0.94508-0.64258-1.1133-0.46227-0.1683-0.96106 0.013453-1.207 0.43945a1.0002 1.0002 0 0 1 -1.7324 -1c0.54346-0.94148 1.5433-1.4912 2.584-1.498zm-0.98633 6.998h2v1h-2v-1z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_connect.svg b/editor/icons/dark/icon_connect.svg
new file mode 100644
index 0000000000..1c96a195f0
--- /dev/null
+++ b/editor/icons/dark/icon_connect.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="4" cy="1048.4" r="2" fill="#4f4f4f"/>
+<path d="m4 1043.4a5 5 0 0 1 5 5" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m4 1039.4a9 9 0 0 1 9 9" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_connection_and_groups.svg b/editor/icons/dark/icon_connection_and_groups.svg
new file mode 100644
index 0000000000..2ae14d9bdd
--- /dev/null
+++ b/editor/icons/dark/icon_connection_and_groups.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 0v1 5 1h12v-1-6h-11-1zm1 1h10v5h-10v-5zm2.5 1a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm5 0a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm-0.5 7a2 2 0 0 0 -2 2v1h-6v1h6v1a2 2 0 0 0 2 2h2v-1h2v-1h-2v-3h2v-1h-2v-1h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_container.svg b/editor/icons/dark/icon_container.svg
new file mode 100644
index 0000000000..07382b3bf7
--- /dev/null
+++ b/editor/icons/dark/icon_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2h2v-2zm2 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2c0-1.1046-0.89543-2-2-2zm-12 4v2h2v-2h-2zm12 0v2h2v-2h-2zm-12 4v2h2v-2h-2zm12 0v2h2v-2h-2zm-12 4c0 1.1046 0.89543 2 2 2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2c1.1046 0 2-0.89543 2-2h-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control.svg b/editor/icons/dark/icon_control.svg
new file mode 100644
index 0000000000..94518d5d75
--- /dev/null
+++ b/editor/icons/dark/icon_control.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_bottom_center.svg b/editor/icons/dark/icon_control_align_bottom_center.svg
new file mode 100644
index 0000000000..9d1219078e
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_bottom_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="6" y="1046.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_bottom_left.svg b/editor/icons/dark/icon_control_align_bottom_left.svg
new file mode 100644
index 0000000000..fc8e7adb3e
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_bottom_left.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1046.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_bottom_right.svg b/editor/icons/dark/icon_control_align_bottom_right.svg
new file mode 100644
index 0000000000..9a9bc0f2ec
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_bottom_right.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1046.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_bottom_wide.svg b/editor/icons/dark/icon_control_align_bottom_wide.svg
new file mode 100644
index 0000000000..111ea52be7
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_bottom_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1046.4" width="12" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_center.svg b/editor/icons/dark/icon_control_align_center.svg
new file mode 100644
index 0000000000..5dd012c389
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="6" y="1042.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_center_left.svg b/editor/icons/dark/icon_control_align_center_left.svg
new file mode 100644
index 0000000000..38542419cf
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_center_left.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1042.4" width="6" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_center_right.svg b/editor/icons/dark/icon_control_align_center_right.svg
new file mode 100644
index 0000000000..371436a6ad
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_center_right.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="8" y="1042.4" width="6" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_left_center.svg b/editor/icons/dark/icon_control_align_left_center.svg
new file mode 100644
index 0000000000..dbf11be914
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_left_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1042.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_left_wide.svg b/editor/icons/dark/icon_control_align_left_wide.svg
new file mode 100644
index 0000000000..7020a8a406
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_left_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="4" height="12" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_right_center.svg b/editor/icons/dark/icon_control_align_right_center.svg
new file mode 100644
index 0000000000..2ce0ebdf30
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_right_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1042.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_right_wide.svg b/editor/icons/dark/icon_control_align_right_wide.svg
new file mode 100644
index 0000000000..0c1713cfe8
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_right_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1038.4" width="4" height="12" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_top_center.svg b/editor/icons/dark/icon_control_align_top_center.svg
new file mode 100644
index 0000000000..4b13ab28b9
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_top_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="6" y="1038.4" width="4" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_top_left.svg b/editor/icons/dark/icon_control_align_top_left.svg
new file mode 100644
index 0000000000..cd06aaad82
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_top_left.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="4" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_top_right.svg b/editor/icons/dark/icon_control_align_top_right.svg
new file mode 100644
index 0000000000..3bbbb89eca
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_top_right.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1038.4" width="4" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_top_wide.svg b/editor/icons/dark/icon_control_align_top_wide.svg
new file mode 100644
index 0000000000..d704d5cc81
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_top_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="12" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_align_wide.svg b/editor/icons/dark/icon_control_align_wide.svg
new file mode 100644
index 0000000000..683504128c
--- /dev/null
+++ b/editor/icons/dark/icon_control_align_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_hcenter_wide.svg b/editor/icons/dark/icon_control_hcenter_wide.svg
new file mode 100644
index 0000000000..c96ba7ca11
--- /dev/null
+++ b/editor/icons/dark/icon_control_hcenter_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1042.4" width="12" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_control_vcenter_wide.svg b/editor/icons/dark/icon_control_vcenter_wide.svg
new file mode 100644
index 0000000000..892bfcc50d
--- /dev/null
+++ b/editor/icons/dark/icon_control_vcenter_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect transform="rotate(90)" x="1038.4" y="-10" width="12" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_convex_polygon_shape.svg b/editor/icons/dark/icon_convex_polygon_shape.svg
new file mode 100644
index 0000000000..143780da53
--- /dev/null
+++ b/editor/icons/dark/icon_convex_polygon_shape.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3-7-11z" fill="#2998ff"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fill="#68b6ff"/>
+<path transform="translate(0 1036.4)" d="m8 1-7 3 7 11 7-3z" fill="#2998ff"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_convex_polygon_shape_2d.svg b/editor/icons/dark/icon_convex_polygon_shape_2d.svg
new file mode 100644
index 0000000000..5bd177d1c6
--- /dev/null
+++ b/editor/icons/dark/icon_convex_polygon_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-6l6-6 6 6z" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_copy_node_path.svg b/editor/icons/dark/icon_copy_node_path.svg
new file mode 100644
index 0000000000..6716a34f02
--- /dev/null
+++ b/editor/icons/dark/icon_copy_node_path.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<circle cx="3" cy="1048.4" rx="1" ry="1"/>
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v12c5.52e-5 0.5523 0.44774 0.9999 1 1h12c0.55226-1e-4 0.99994-0.4477 1-1v-8l-5-5h-8zm1 2h6v3c0 0.554 0.44599 1 1 1h3v6h-10v-10zm3 5l-2 4h2l2-4h-2zm4 0l-2 4h2l2-4h-2z" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_create_new_scene_from.svg b/editor/icons/dark/icon_create_new_scene_from.svg
new file mode 100644
index 0000000000..5b09b402b0
--- /dev/null
+++ b/editor/icons/dark/icon_create_new_scene_from.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 7v6c0 1.1046 0.89543 2 2 2h7v-1h-2v-4h2v-2h4v2h1v-3z" fill="#4f4f4f"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z" fill="#4f4f4f"/>
+<circle cx="-14" cy="1047.4" r="0" fill="#4f4f4f"/>
+<path d="m13 1049.4h2v-2h-2v-2h-2v2h-2v2h2v2h2z" fill="#00f010" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_cube_map.svg b/editor/icons/dark/icon_cube_map.svg
new file mode 100644
index 0000000000..39c1debecd
--- /dev/null
+++ b/editor/icons/dark/icon_cube_map.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1042.4" width="4" height="4" fill="#00f010"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="#ff4040"/>
+<rect x="8" y="1042.4" width="4" height="4" fill="#00f010"/>
+<rect x="12" y="1042.4" width="4" height="4" fill="#ff4040"/>
+<rect x="4" y="1038.4" width="4" height="4" fill="#5caeff"/>
+<rect x="4" y="1046.4" width="4" height="4" fill="#5caeff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_cube_mesh.svg b/editor/icons/dark/icon_cube_mesh.svg
new file mode 100644
index 0000000000..770e4c33e8
--- /dev/null
+++ b/editor/icons/dark/icon_cube_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 14.999999 14.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1037.4)">
+<path d="m7.5 1038.2-6.5625 3.2804v6.772l6.5625 3.2804 6.5625-3.2804v-6.772zm0 1.9831 3.6926 1.8463-3.6926 1.8463-3.6926-1.8463zm-4.7889 3.2804 3.9022 1.9502v3.6944l-3.9022-1.952zm9.5779 0v3.6926l-3.9022 1.952v-3.6944z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fea900" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve.svg b/editor/icons/dark/icon_curve.svg
new file mode 100644
index 0000000000..9cc935c38f
--- /dev/null
+++ b/editor/icons/dark/icon_curve.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#4f4f4f" stroke-width="2">
+<path d="m2 1038.4v12h12" stroke-linecap="square" stroke-opacity=".32549"/>
+<path d="m2 1050.4c8 0 12-4 12-12" stroke-linecap="round"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_2d.svg b/editor/icons/dark/icon_curve_2d.svg
new file mode 100644
index 0000000000..9697918d32
--- /dev/null
+++ b/editor/icons/dark/icon_curve_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1037.4c-3.1667 0-5.1045 0.854-6.082 2.3203-0.97757 1.4664-0.91797 3.1797-0.91797 4.6797s-0.059601 2.7867-0.58203 3.5703c-0.52243 0.7837-1.5846 1.4297-4.418 1.4297a1.0001 1.0001 0 1 0 0 2c3.1667 0 5.1045-0.8539 6.082-2.3203 0.97757-1.4663 0.91797-3.1797 0.91797-4.6797s0.059601-2.7866 0.58203-3.5703c0.52243-0.7836 1.5846-1.4297 4.418-1.4297a1.0001 1.0001 0 1 0 0 -2z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_3d.svg b/editor/icons/dark/icon_curve_3d.svg
new file mode 100644
index 0000000000..9aa63ff537
--- /dev/null
+++ b/editor/icons/dark/icon_curve_3d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8.0039 1037.4a1.0001 1.0001 0 0 0 -0.45117 0.1113l-6 3a1.0001 1.0001 0 0 0 0 1.7891l6 3a1.0001 1.0001 0 0 0 0.89453 0l4.5527-2.2754v3.7636l-5 2.5-5.5527-2.7773a1.0001 1.0001 0 0 0 -0.89453 1.7891l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.8946v-6a1.0001 1.0001 0 0 0 -1.4473 -0.8945l-5.5527 2.7773-3.7637-1.8828 4.2109-2.1054a1.0001 1.0001 0 0 0 -0.44336 -1.9004z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_close.svg b/editor/icons/dark/icon_curve_close.svg
new file mode 100644
index 0000000000..42817f31b0
--- /dev/null
+++ b/editor/icons/dark/icon_curve_close.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#4f4f4f"/>
+<circle cx="5" cy="1041.4" r="2" fill="#f5f5f5"/>
+<rect x="8" y="1044.4" width="2" height="2" fill="#5caeff"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<rect x="6" y="1046.4" width="2" height="2" fill="#5caeff"/>
+<rect x="10" y="1042.4" width="2" height="2" fill="#5caeff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_constant.svg b/editor/icons/dark/icon_curve_constant.svg
new file mode 100644
index 0000000000..08436b14e8
--- /dev/null
+++ b/editor/icons/dark/icon_curve_constant.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1046.4h8" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_create.svg b/editor/icons/dark/icon_curve_create.svg
new file mode 100644
index 0000000000..8b2f7edb51
--- /dev/null
+++ b/editor/icons/dark/icon_curve_create.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#4f4f4f"/>
+<circle cx="5" cy="1041.4" r="2" fill="#00f010"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<rect x="8" y="1047.4" width="8" height="2" fill="#00f010"/>
+<rect transform="rotate(90)" x="1044.4" y="-13" width="8" height="2" fill="#00f010"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_curve.svg b/editor/icons/dark/icon_curve_curve.svg
new file mode 100644
index 0000000000..fdbf9409e5
--- /dev/null
+++ b/editor/icons/dark/icon_curve_curve.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#4f4f4f"/>
+<circle cx="5" cy="1041.4" r="2" fill="#5caeff"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<path d="m1 1045.4 8-8" fill="#5caeff" fill-rule="evenodd" stroke="#5caeff" stroke-width="1px"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_delete.svg b/editor/icons/dark/icon_curve_delete.svg
new file mode 100644
index 0000000000..c666b5f6d1
--- /dev/null
+++ b/editor/icons/dark/icon_curve_delete.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#4f4f4f"/>
+<circle cx="5" cy="1041.4" r="2" fill="#ff4040"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<path d="m8.4645 1046.2 2.1213 2.1213-2.1213 2.1213 1.4142 1.4142l2.1213-2.1213 2.1213 2.1213 1.4142-1.4142-2.1213-2.1213 2.1213-2.1213-1.4142-1.4142-2.1213 2.1213-2.1213-2.1213-1.4142 1.4142z" fill="#ff4040"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_edit.svg b/editor/icons/dark/icon_curve_edit.svg
new file mode 100644
index 0000000000..f24840f054
--- /dev/null
+++ b/editor/icons/dark/icon_curve_edit.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#4f4f4f"/>
+<circle cx="5" cy="1041.4" r="2" fill="#5caeff"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<path d="m16 1047.7-8-3.291 3.291 8 0.9471-2.8201 1.8836 1.8835 0.9418-0.9418-1.8836-1.8835z" fill="#5caeff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_in.svg b/editor/icons/dark/icon_curve_in.svg
new file mode 100644
index 0000000000..a79664642e
--- /dev/null
+++ b/editor/icons/dark/icon_curve_in.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c5 0 8-3 8-8" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_in_out.svg b/editor/icons/dark/icon_curve_in_out.svg
new file mode 100644
index 0000000000..c1b4db7787
--- /dev/null
+++ b/editor/icons/dark/icon_curve_in_out.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c5 0 3-8 8-8" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_linear.svg b/editor/icons/dark/icon_curve_linear.svg
new file mode 100644
index 0000000000..21770628a9
--- /dev/null
+++ b/editor/icons/dark/icon_curve_linear.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4 8-8" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_out.svg b/editor/icons/dark/icon_curve_out.svg
new file mode 100644
index 0000000000..69cbef8bce
--- /dev/null
+++ b/editor/icons/dark/icon_curve_out.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c0-5 3-8 8-8" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_out_in.svg b/editor/icons/dark/icon_curve_out_in.svg
new file mode 100644
index 0000000000..833deed675
--- /dev/null
+++ b/editor/icons/dark/icon_curve_out_in.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c0-5 8-3 8-8" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_curve_texture.svg b/editor/icons/dark/icon_curve_texture.svg
new file mode 100644
index 0000000000..3648f5c73b
--- /dev/null
+++ b/editor/icons/dark/icon_curve_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55228 0-1 0.44772-1 1v9.1602c0.32185-0.10966 0.66-0.16382 1-0.16016 0.33117 0 0.66575-0.007902 1-0.013672v-7.9863h10v1.1348c0.29007-0.10393 0.59442-0.16256 0.90234-0.17383 0.37315-0.012796 0.74541 0.044169 1.0977 0.16797v-2.1289c0-0.55228-0.44772-1-1-1h-12zm7 4v1h-1v1h-2v1h-1v1h-1v1h2 2 0.39062c1.1119-0.56677 1.9678-1.4538 2.6094-3.4727v-0.52734h-1v-1h-1zm4.9668 0.98828a1.0001 1.0001 0 0 0 -0.92774 0.73828c-0.92743 3.246-2.6356 4.6825-4.6523 5.4668-2.0168 0.7843-4.3867 0.80664-6.3867 0.80664a1.0001 1.0001 0 1 0 0 2c2 0 4.6301 0.023994 7.1133-0.94141 2.4832-0.9657 4.7751-3.0292 5.8477-6.7832a1.0001 1.0001 0 0 0 -0.99414 -1.2871z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_cylinder_mesh.svg b/editor/icons/dark/icon_cylinder_mesh.svg
new file mode 100644
index 0000000000..01b6571884
--- /dev/null
+++ b/editor/icons/dark/icon_cylinder_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 14.999999 14.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1037.4)">
+<path transform="matrix(.9375 0 0 .9375 0 1037.4)" d="m8 1c-1.7469 0-3.328 0.22648-4.5586 0.63672-0.61528 0.20512-1.1471 0.45187-1.5898 0.80078s-0.85156 0.88101-0.85156 1.5625v8c0 0.68149 0.40884 1.2155 0.85156 1.5645s0.97457 0.59577 1.5898 0.80078c1.2306 0.41024 2.8117 0.63477 4.5586 0.63477s3.328-0.22453 4.5586-0.63477c0.61527-0.20501 1.1471-0.45187 1.5898-0.80078 0.44272-0.34891 0.85156-0.88296 0.85156-1.5645v-8c0-0.68149-0.40884-1.2136-0.85156-1.5625-0.44272-0.34891-0.97457-0.59566-1.5898-0.80078-1.2306-0.41024-2.8117-0.63672-4.5586-0.63672zm0 2c1.5668 0 2.9867 0.22145 3.9277 0.53516 0.46368 0.15456 0.80138 0.33741 0.96875 0.4668-0.16752 0.12928-0.50546 0.3105-0.96875 0.46484-0.94102 0.31371-2.361 0.5332-3.9277 0.5332s-2.9867-0.2195-3.9277-0.5332c-0.46329-0.15435-0.80123-0.33556-0.96875-0.46484 0.16737-0.12939 0.50507-0.31224 0.96875-0.4668 0.94102-0.31371 2.361-0.53516 3.9277-0.53516zm-5 3.1875c0.1468 0.059071 0.2835 0.12512 0.44141 0.17773 1.2306 0.41024 2.8117 0.63477 4.5586 0.63477s3.328-0.22453 4.5586-0.63477c0.15791-0.052617 0.29461-0.11866 0.44141-0.17773v5.8125c-0.16752 0.12928-0.60898 0.31245-1.0723 0.4668-0.94102 0.31371-2.361 0.5332-3.9277 0.5332s-2.9867-0.2195-3.9277-0.5332c-0.46329-0.15435-0.90474-0.33752-1.0723-0.4668z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fea900" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_damped_spring_joint_2d.svg b/editor/icons/dark/icon_damped_spring_joint_2d.svg
new file mode 100644
index 0000000000..b3a8e89ef9
--- /dev/null
+++ b/editor/icons/dark/icon_damped_spring_joint_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".98824">
+<path transform="translate(0 1036.4)" d="m4 3v2l8 3v-2zm0 5v2l8 3v-2z" fill="#0843ff"/>
+<path transform="translate(0 1036.4)" d="m4 3v2l8-2v-2zm0 5v2l8-2v-2zm0 5v2l8-2v-2z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_debug.svg b/editor/icons/dark/icon_debug.svg
new file mode 100644
index 0000000000..3819c10c18
--- /dev/null
+++ b/editor/icons/dark/icon_debug.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="scale(1,-1)" d="m10.828-1039.5a4 4 0 0 1 -2.8284 1.1716 4 4 0 0 1 -2.8284 -1.1716" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<ellipse cx="8" cy="1047.4" rx="3.6445" ry="1.6348" fill="none" stroke-width="0"/>
+<circle cx="8" cy="1047.4" r="4" fill="#4f4f4f" stroke-width="0"/>
+<path d="m5 1047.4h-3" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+<path d="m10 1047.4h4" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+<path d="m6 1045.4c-2 0-3-2-3-3" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+<path d="m10 1045.4c2 0 3-2 3-3" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+<path d="m6 1049.4c-1 0-2 1-3 2" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+<path d="m10 1049.4c1 0 2 1 3 2" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+<circle cx="8" cy="1043.4" r="2" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_debug_continue.svg b/editor/icons/dark/icon_debug_continue.svg
new file mode 100644
index 0000000000..94c14d80dd
--- /dev/null
+++ b/editor/icons/dark/icon_debug_continue.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="5" y="1043.4" width="6" height="2" fill="#ff4040"/>
+<g transform="matrix(-.71429 0 0 .88889 2.4999 121.82)" fill="#ff4040">
+<path transform="matrix(0 1.4412 1.2943 0 1331.1 1030.7)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z" fill="#ff4040"/>
+</g>
+<circle cx="4" cy="1044.4" r="3" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_debug_next.svg b/editor/icons/dark/icon_debug_next.svg
new file mode 100644
index 0000000000..2c1a7d2496
--- /dev/null
+++ b/editor/icons/dark/icon_debug_next.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect transform="rotate(90)" x="1037.4" y="-5" width="10" height="2" fill="#ff4040"/>
+<g transform="matrix(0 -.57144 -.66666 0 695.91 1041.4)" fill="#ff4040">
+<path transform="matrix(0 1.4412 1.2943 0 1331.1 1030.7)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z" fill="#ff4040"/>
+</g>
+<rect x="7" y="1037.4" width="8" height="2" fill="#4f4f4f"/>
+<rect x="9" y="1041.4" width="6" height="2" fill="#4f4f4f"/>
+<rect x="9" y="1045.4" width="6" height="2" fill="#4f4f4f"/>
+<rect x="7" y="1049.4" width="8" height="2" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_debug_step.svg b/editor/icons/dark/icon_debug_step.svg
new file mode 100644
index 0000000000..ca708b5f35
--- /dev/null
+++ b/editor/icons/dark/icon_debug_step.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect transform="rotate(90)" x="1037.4" y="-3" width="10" height="2" fill="#ff4040"/>
+<g transform="matrix(-.57144 0 0 .66666 -2.0001 354.46)" fill="#ff4040">
+<path transform="matrix(0 1.4412 1.2943 0 1331.1 1030.7)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z" fill="#ff4040"/>
+</g>
+<rect x="7" y="1037.4" width="8" height="2" fill="#4f4f4f"/>
+<rect x="9" y="1041.4" width="6" height="2" fill="#4f4f4f"/>
+<rect x="9" y="1045.4" width="6" height="2" fill="#4f4f4f"/>
+<rect x="7" y="1049.4" width="8" height="2" fill="#4f4f4f"/>
+<rect transform="rotate(90)" x="1045.4" y="-4" width="2" height="3" fill="#ff4040"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_default_project_icon.svg b/editor/icons/dark/icon_default_project_icon.svg
new file mode 100644
index 0000000000..d16d137550
--- /dev/null
+++ b/editor/icons/dark/icon_default_project_icon.svg
@@ -0,0 +1,33 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path transform="translate(0 988.36)" d="m8 0c-4.432 0-8 3.568-8 8v48c0 4.432 3.568 8 8 8h48c4.432 0 8-3.568 8-8v-48c0-4.432-3.568-8-8-8z" fill="#355570" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path transform="translate(0 988.36)" d="m8 0c-4.432 0-8 3.568-8 8v48c0 4.432 3.568 8 8 8h48c4.432 0 8-3.568 8-8v-48c0-4.432-3.568-8-8-8zm0 2h48c3.324 0 6 2.676 6 6v48c0 3.324-2.676 6-6 6h-48c-3.324 0-6-2.676-6-6v-48c0-3.324 2.676-6 6-6z" fill-opacity=".19608" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path transform="translate(0 988.36)" d="m27.254 10c-2.1314 0.47383-4.2401 1.134-6.2168 2.1289 0.04521 1.7455 0.15796 3.4164 0.38672 5.1152-0.76768 0.4919-1.574 0.91443-2.291 1.4902-0.72854 0.5604-1.4731 1.0965-2.1328 1.752-1.3179-0.8716-2.7115-1.691-4.1484-2.4141-1.549 1.667-2.9985 3.4672-4.1816 5.4805 0.89011 1.4399 1.8209 2.7894 2.8242 4.0703h0.027343v9.9453 1.2617 1.1504l-0.009765 1.6309h-0.001953c0.0031 0.7321 0.011718 1.5356 0.011718 1.6953 0 7.1942 9.1264 10.652 20.465 10.691h0.013672 0.013672c11.338-0.04 20.461-3.4972 20.461-10.691 0-0.1626 0.010282-0.96271 0.013672-1.6953h-0.001953l-0.011719-1.6309v-0.98633l0.003907-0.001953v-11.369h0.027343c1.0035-1.2809 1.9337-2.6304 2.8242-4.0703-1.1827-2.0133-2.6327-3.8135-4.1816-5.4805-1.4366 0.7231-2.8325 1.5425-4.1504 2.4141-0.65947-0.6555-1.4013-1.1916-2.1309-1.752-0.71682-0.5758-1.5248-0.99833-2.291-1.4902 0.22813-1.6988 0.3413-3.3697 0.38672-5.1152-1.977-0.99494-4.0863-1.6551-6.2188-2.1289-0.85139 1.4309-1.6285 2.9812-2.3066 4.4961-0.80409-0.1344-1.613-0.18571-2.4219-0.19531h-0.015625-0.015625c-0.81037 0.01-1.6176 0.060513-2.4219 0.19531-0.67768-1.5149-1.4559-3.0652-2.3086-4.4961z" fill="#fff" stroke="#fff" stroke-linejoin="round" stroke-width="3"/>
+<g transform="matrix(.050279 0 0 .050279 6.2574 989.54)" stroke-width=".32031">
+<g transform="matrix(4.1626 0 0 -4.1626 919.24 771.67)">
+<path d="m0 0s-0.325 1.994-0.515 1.976l-36.182-3.491c-2.879-0.278-5.115-2.574-5.317-5.459l-0.994-14.247-27.992-1.997-1.904 12.912c-0.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-0.994 14.247c-0.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-0.187 0.018-0.324-1.978-0.511-1.978l-0.049-7.83 30.658-4.944 1.004-14.374c0.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c0.146-0.01 0.29-0.016 0.434-0.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c0.423-2.871 2.93-5.037 5.831-5.037 0.142 0 0.284 5e-3 0.423 0.015l38.556 2.75c2.911 0.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 104.7 525.91)">
+<path d="m0 0v-59.041c0.108-1e-3 0.216-5e-3 0.323-0.015l36.196-3.49c1.896-0.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c0.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c0.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c0.107 0.01 0.214 0.014 0.322 0.015v4.711l0.015 5e-3v54.325h0.134c4.795 6.12 9.232 12.569 13.487 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842 0.642-7.702 0.88-11.567 0.926v6e-3c-0.027 0-0.052-6e-3 -0.075-6e-3 -0.024 0-0.049 6e-3 -0.073 6e-3v-6e-3c-3.872-0.046-7.729-0.284-11.572-0.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17 0.216-8.34 0.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.253-6.88 8.693-13.329 13.487-19.449z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 784.07 817.24)">
+<path d="m0 0-1.121-16.063c-0.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-0.094-7e-3 -0.188-0.01-0.281-0.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-0.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936 0.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c0.015-3.498 0.06-7.33 0.06-8.093 0-34.374 43.605-50.896 97.781-51.086h0.133c54.176 0.19 97.766 16.712 97.766 51.086 0 0.777 0.047 4.593 0.063 8.093z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 389.21 625.67)">
+<path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 367.37 631.06)">
+<path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 511.99 724.74)">
+<path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 634.79 625.67)">
+<path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 656.64 631.06)">
+<path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042"/>
+</g>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dependency_changed.svg b/editor/icons/dark/icon_dependency_changed.svg
new file mode 100644
index 0000000000..bba1f032ca
--- /dev/null
+++ b/editor/icons/dark/icon_dependency_changed.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1 2h2v7h-2v-7zm0 8h2v2h-2v-2z" fill="#ff4040"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1 2h2v7h-2v-7zm0 8h2v2h-2v-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dependency_changed_hl.svg b/editor/icons/dark/icon_dependency_changed_hl.svg
new file mode 100644
index 0000000000..b8c45153ca
--- /dev/null
+++ b/editor/icons/dark/icon_dependency_changed_hl.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1 2h2v7h-2v-7zm0 8h2v2h-2v-2z" fill="#ff4040"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dependency_local_changed.svg b/editor/icons/dark/icon_dependency_local_changed.svg
new file mode 100644
index 0000000000..e6021b9a80
--- /dev/null
+++ b/editor/icons/dark/icon_dependency_local_changed.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -3 3.8672v0.13281h-2v-2h1a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -2 2h-2a4 4 0 0 1 4 -4zm-1 9h2v2h-2v-2z" fill="#fea900"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -3 3.8672v0.13281h-2v-2h1a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -2 2h-2a4 4 0 0 1 4 -4zm-1 9h2v2h-2v-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dependency_local_changed_hl.svg b/editor/icons/dark/icon_dependency_local_changed_hl.svg
new file mode 100644
index 0000000000..89d9c663cb
--- /dev/null
+++ b/editor/icons/dark/icon_dependency_local_changed_hl.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -3 3.8672v0.13281h-2v-2h1a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -2 2h-2a4 4 0 0 1 4 -4zm-1 9h2v2h-2v-2z" fill="#fea900"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dependency_ok.svg b/editor/icons/dark/icon_dependency_ok.svg
new file mode 100644
index 0000000000..aecdbb63ba
--- /dev/null
+++ b/editor/icons/dark/icon_dependency_ok.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm3.1816 3.9297l1.4141 1.4141-4.2422 4.2422-0.70703 0.70703-0.70703 0.70703-3.5352-3.5352 1.4141-1.4141 2.1211 2.1211 4.2422-4.2422z" fill="#00f010"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm3.1816 3.9297l1.4141 1.4141-4.2422 4.2422-0.70703 0.70703-0.70703 0.70703-3.5352-3.5352 1.4141-1.4141 2.1211 2.1211 4.2422-4.2422z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dependency_ok_hl.svg b/editor/icons/dark/icon_dependency_ok_hl.svg
new file mode 100644
index 0000000000..8de94755b1
--- /dev/null
+++ b/editor/icons/dark/icon_dependency_ok_hl.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm3.1816 3.9297l1.4141 1.4141-4.2422 4.2422-0.70703 0.70703-0.70703 0.70703-3.5352-3.5352 1.4141-1.4141 2.1211 2.1211 4.2422-4.2422z" fill="#00f010"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_directional_light.svg b/editor/icons/dark/icon_directional_light.svg
new file mode 100644
index 0000000000..a595465534
--- /dev/null
+++ b/editor/icons/dark/icon_directional_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v3h2v-3h-2zm-2.5352 2.0508l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm7.0703 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-3.5352 1.9492c-1.6569 0-3 1.3432-3 3s1.3431 3 3 3 3-1.3432 3-3-1.3431-3-3-3zm-7 2v2h3v-2h-3zm11 0v2h3v-2h-3zm-7.5352 3.1211l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm7.0703 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.5352 1.8789v3h2v-3h-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_distraction_free.svg b/editor/icons/dark/icon_distraction_free.svg
new file mode 100644
index 0000000000..2ec6f20fd2
--- /dev/null
+++ b/editor/icons/dark/icon_distraction_free.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m3.7578 2.3438l-1.4141 1.4141 2.9492 2.9492 1.4141-1.4141-2.9492-2.9492zm8.4844 0l-2.9492 2.9492 1.4141 1.4141 2.9492-2.9492-1.4141-1.4141zm-6.9492 6.9492l-2.9492 2.9492 1.4141 1.4141 2.9492-2.9492-1.4141-1.4141zm5.4141 0l-1.4141 1.4141 2.9492 2.9492 1.4141-1.4141-2.9492-2.9492z"/>
+<path d="m1 1051.4v-5l5 5z" fill-rule="evenodd"/>
+<path d="m15 1051.4v-5l-5 5z" fill-rule="evenodd"/>
+<path d="m15 1037.4v5l-5-5z" fill-rule="evenodd"/>
+<path d="m1 1037.4v5l5-5z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_duplicate.svg b/editor/icons/dark/icon_duplicate.svg
new file mode 100644
index 0000000000..9bb1e24b30
--- /dev/null
+++ b/editor/icons/dark/icon_duplicate.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1v11h9v-6h-5v-5h-4zm5 0v4h4l-4-4zm-8 3v11h2 8v-2h-8v-9h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dynamic_font.svg b/editor/icons/dark/icon_dynamic_font.svg
new file mode 100644
index 0000000000..a7fb18c9cc
--- /dev/null
+++ b/editor/icons/dark/icon_dynamic_font.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m4 5v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4z" fill="#5caeff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_dynamic_font_data.svg b/editor/icons/dark/icon_dynamic_font_data.svg
new file mode 100644
index 0000000000..9655726f11
--- /dev/null
+++ b/editor/icons/dark/icon_dynamic_font_data.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4zm0 5v2h2v-2h-2zm0 3v2h2v-2h-2zm0 3v2h2v-2h-2zm3 0v2h2v-2h-2z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m4 5v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4z" fill="#ff4040"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_edit.svg b/editor/icons/dark/icon_edit.svg
new file mode 100644
index 0000000000..5d03cdfa29
--- /dev/null
+++ b/editor/icons/dark/icon_edit.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_edit_key.svg b/editor/icons/dark/icon_edit_key.svg
new file mode 100644
index 0000000000..ad4e626ace
--- /dev/null
+++ b/editor/icons/dark/icon_edit_key.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z"/>
+<ellipse cx="3.5" cy="1039.9" rx="2.5" ry="2.5"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_edit_pivot.svg b/editor/icons/dark/icon_edit_pivot.svg
new file mode 100644
index 0000000000..bac968e3a2
--- /dev/null
+++ b/editor/icons/dark/icon_edit_pivot.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v4h2v-4h-2zm-6 6v2h4v-2h-4zm10 0v0.61328l3.3711 1.3867h0.62891v-2h-4zm-3 1l3.291 8 0.94726-2.8203 1.8828 1.8828 0.94336-0.94141-1.8848-1.8828 2.8203-0.94726-8-3.291zm-1 3v4h2v-0.625l-1.3887-3.375h-0.61133z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_edit_resource.svg b/editor/icons/dark/icon_edit_resource.svg
new file mode 100644
index 0000000000..996b1bf7d6
--- /dev/null
+++ b/editor/icons/dark/icon_edit_resource.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path transform="translate(0 1044.4)" d="m3.9902-0.0097656a1.0001 1.0001 0 0 0 -0.69727 1.7168l1.293 1.293h-3.5859v2h3.5859l-1.293 1.293a1.0001 1.0001 0 1 0 1.4141 1.4141l3-3a1.0001 1.0001 0 0 0 0 -1.4141l-3-3a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_editor_3d_handle.svg b/editor/icons/dark/icon_editor_3d_handle.svg
new file mode 100644
index 0000000000..189baf3dad
--- /dev/null
+++ b/editor/icons/dark/icon_editor_3d_handle.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="7" fill="#fff"/>
+<circle cx="8" cy="1044.4" r="5" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_editor_control_anchor.svg b/editor/icons/dark/icon_editor_control_anchor.svg
new file mode 100644
index 0000000000..eeee2c182f
--- /dev/null
+++ b/editor/icons/dark/icon_editor_control_anchor.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8.832 6.1445a4 4 0 0 1 -2.6914 2.6855l9.8594 7.1699-7.168-9.8555z" fill="#a5efac" fill-rule="evenodd"/>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<ellipse cx="4" cy="1040.4" rx="4" ry="4" fill="#a5efac" style="paint-order:fill markers stroke"/>
+<circle cx="5" cy="1041.4" r="0" fill="#a5efac" style="paint-order:fill markers stroke"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_editor_handle.svg b/editor/icons/dark/icon_editor_handle.svg
new file mode 100644
index 0000000000..7e58aaa803
--- /dev/null
+++ b/editor/icons/dark/icon_editor_handle.svg
@@ -0,0 +1,6 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<ellipse cx="4" cy="1048.4" rx="4" ry="4" fill="#fff"/>
+<ellipse cx="4" cy="1048.4" rx="2.8572" ry="2.8571" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_editor_pivot.svg b/editor/icons/dark/icon_editor_pivot.svg
new file mode 100644
index 0000000000..d59d2d804d
--- /dev/null
+++ b/editor/icons/dark/icon_editor_pivot.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 0v6h-6v4h6v6h4v-6h6v-4h-6v-6h-4zm1 7h2v2h-2v-2z" fill="#fff" fill-opacity=".70588"/>
+<path transform="translate(0 1036.4)" d="m7 1v5h2v-5h-2zm-6 6v2h5v-2h-5zm9 0v2h5v-2h-5zm-3 3v5h2v-5h-2z" fill="#ff8484" fill-opacity=".58824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_editor_plugin.svg b/editor/icons/dark/icon_editor_plugin.svg
new file mode 100644
index 0000000000..7c91902998
--- /dev/null
+++ b/editor/icons/dark/icon_editor_plugin.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path d="m2 1038.4v8h8v-8z" fill-rule="evenodd" stroke="#4f4f4f" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
+<circle cx="13" cy="1042.4" r="2"/>
+<circle cx="6" cy="1049.4" r="2"/>
+<rect x="5" y="1046.4" width="2" height="2"/>
+<rect x="10" y="1041.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_environment.svg b/editor/icons/dark/icon_environment.svg
new file mode 100644
index 0000000000..833346bd28
--- /dev/null
+++ b/editor/icons/dark/icon_environment.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#4f4f4f">
+<circle cx="8" cy="1044.4" r="6" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m2 1044.4c4.5932 1.582 8.3985 1.0627 12 0" stroke-width="1.5"/>
+<path d="m8 1038.4c-3 4-3 8 0 12" stroke-width="1.5"/>
+<path d="m8 1038.4c3 4 3 8 0 12" stroke-width="1.5"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_error.svg b/editor/icons/dark/icon_error.svg
new file mode 100644
index 0000000000..ae74328509
--- /dev/null
+++ b/editor/icons/dark/icon_error.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect x="2.2204e-16" y="1044.4" width="8" height="8" ry="4" fill="#ff4040"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_error_sign.svg b/editor/icons/dark/icon_error_sign.svg
new file mode 100644
index 0000000000..ae384978a5
--- /dev/null
+++ b/editor/icons/dark/icon_error_sign.svg
@@ -0,0 +1,7 @@
+<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<path d="m10 1048.4h12l6-6v-12l-6-6h-12l-6 6v12z" fill="#ff4040" fill-rule="evenodd"/>
+<rect x="14" y="1028.4" width="4" height="9" fill="#000000"/>
+<rect x="14" y="1040.4" width="4" height="4" fil#000000fff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_event_player.svg b/editor/icons/dark/icon_event_player.svg
new file mode 100644
index 0000000000..2d13800c91
--- /dev/null
+++ b/editor/icons/dark/icon_event_player.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m1 1v14h14v-14h-14zm2 2h10v10h-10v-10z"/>
+<path transform="translate(0 1036.4)" d="m5 3v6h2v-6h-2zm4 0v6h2v-6h-2z"/>
+<rect x="5" y="1039.4" width="1" height="10"/>
+<rect x="9" y="1039.4" width="1" height="10"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_favorites.svg b/editor/icons/dark/icon_favorites.svg
new file mode 100644
index 0000000000..3343ca69ec
--- /dev/null
+++ b/editor/icons/dark/icon_favorites.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1038.1-2.3741 4.0973-4.6259 1.0978l3.2361 3.4074-0.35866 4.6735 4.1389-1.9766 4.1572 1.9421-0.39534-4.6532 3.2218-3.3932-4.6259-1.0978-2.3741-4.0973z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_big.svg b/editor/icons/dark/icon_file_big.svg
new file mode 100644
index 0000000000..52c224f6a5
--- /dev/null
+++ b/editor/icons/dark/icon_file_big.svg
@@ -0,0 +1,7 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 988.36)" d="m14 5c-2.1987 0-4 1.8013-4 4v46c0 2.1987 1.8013 4 4 4h36c2.1987 0 4-1.8013 4-4v-33h-0.007812c0.00212-0.24832-0.079273-0.50098-0.28516-0.70703l-16-16c-0.18786-0.18693-0.44246-0.28939-0.70703-0.28906v-0.0039062h-23zm0 2h22v2 10c0 2.1987 1.8013 4 4 4h10 2v32c0 1.1253-0.87472 2-2 2h-36c-1.1253 0-2-0.8747-2-2v-46c0-1.1253 0.87472-2 2-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#000000" fill-opacity=".58824" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_big_broken.svg b/editor/icons/dark/icon_file_big_broken.svg
new file mode 100644
index 0000000000..50fe2772df
--- /dev/null
+++ b/editor/icons/dark/icon_file_big_broken.svg
@@ -0,0 +1,7 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 988.36)" d="m14 5c-2.1987 0-4 1.8013-4 4v26.172a1.0001 1.0001 0 0 0 1.707 0.70703l3.293-3.293 9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l9.293-9.293 9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l8-8a1.0001 1.0001 0 0 0 0.29297 -0.70703v-11.172a1.0001 1.0001 0 0 0 -0.29297 -0.70703l-16-16a1.0001 1.0001 0 0 0 -0.70703 -0.29297h-23zm0 2h22v12c0 2.1987 1.8013 4 4 4h12v9.7578l-7 7-9.293-9.293a1.0001 1.0001 0 0 0 -1.4141 0l-9.293 9.293-9.293-9.293a1.0001 1.0001 0 0 0 -1.4141 0l-2.293 2.293v-23.758c0-1.1253 0.87473-2 2-2zm0.98438 28.83a1.0001 1.0001 0 0 0 -0.69141 0.29297l-4 4a1.0001 1.0001 0 0 0 -0.29297 0.70703v14.17c0 2.1987 1.8013 4 4 4h36c2.1987 0 4-1.8013 4-4v-16.17a1.0001 1.0001 0 0 0 -1.707 -0.70703l-7.293 7.293-9.293-9.293a1.0001 1.0001 0 0 0 -1.4141 0l-9.293 9.293-9.293-9.293a1.0001 1.0001 0 0 0 -0.72266 -0.29297zm0.015625 2.4141l9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l9.293-9.293 9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l6.293-6.293v13.756c0 1.1253-0.87473 2-2 2h-36c-1.1253 0-2-0.87473-2-2v-13.756l3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ff4040" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_big_dead.svg b/editor/icons/dark/icon_file_big_dead.svg
new file mode 100644
index 0000000000..f6dabc0440
--- /dev/null
+++ b/editor/icons/dark/icon_file_big_dead.svg
@@ -0,0 +1,7 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<g transform="translate(0 -1.6949e-5)">
+<path d="m14 993.36c-2.1987 0-4 1.8013-4 4v46c0 2.1987 1.8013 4 4 4h36c2.1987 0 4-1.8013 4-4v-33h-0.0078c2e-3 -0.2483-0.0793-0.501-0.28516-0.707l-16-16c-0.18788-0.18693-0.44247-0.28939-0.70704-0.28907v-4e-3zm0 2h22v12c0 2.1987 1.8013 4 4 4h12v32c0 1.1253-0.87472 2-2 2h-36c-1.1253 0-2-0.8747-2-2v-46c0-1.1253 0.87472-2 2-2zm2.9512 22.002a1 1 0 0 0 -0.60938 0.2461 1 1 0 0 0 -0.09375 1.4121l2.9238 3.3398-2.9238 3.3418a1 1 0 0 0 0.09375 1.4121 1 1 0 0 0 1.4102 -0.094l2.748-3.1407 2.748 3.1407a1 1 0 0 0 1.4102 0.094 1 1 0 0 0 0.09375 -1.4121l-2.9238-3.3418 2.9238-3.3398a1 1 0 0 0 -0.09375 -1.4121 1 1 0 0 0 -0.63867 -0.2461 1 1 0 0 0 -0.77148 0.3398l-2.748 3.1406-2.748-3.1406a1 1 0 0 0 -0.80078 -0.3398zm23 0a1 1 0 0 0 -0.60938 0.2461 1 1 0 0 0 -0.09375 1.4121l2.9238 3.3398-2.9238 3.3418a1 1 0 0 0 0.09375 1.4121 1 1 0 0 0 1.4102 -0.094l2.748-3.1407 2.748 3.1407a1 1 0 0 0 1.4102 0.094 1 1 0 0 0 0.09375 -1.4121l-2.9238-3.3418 2.9238-3.3398a1 1 0 0 0 -0.09375 -1.4121 1 1 0 0 0 -0.63867 -0.2461 1 1 0 0 0 -0.77148 0.3398l-2.748 3.1406-2.748-3.1406a1 1 0 0 0 -0.80078 -0.3398zm-18.951 13.998a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h3v3c0 2.7527 2.2473 5 5 5s5-2.2473 5-5v-3h9a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm5 2h6v3c0 1.6793-1.3207 3-3 3s-3-1.3207-3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ff4040" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_broken.svg b/editor/icons/dark/icon_file_broken.svg
new file mode 100644
index 0000000000..cc5358e433
--- /dev/null
+++ b/editor/icons/dark/icon_file_broken.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 1036.4)" d="m2 1v8.5859l1.293-1.293a1.0001 1.0001 0 0 1 0.69141 -0.29102 1.0001 1.0001 0 0 1 0.72266 0.29102l2.293 2.293 2.293-2.293a1.0001 1.0001 0 0 1 1.4141 0l2.293 2.293 1-1v-3.5859h-5v-5h-7zm8 0v4h4l-4-4zm-6 9.4141l-2 2v2.5859h12v-2.5859l-0.29297 0.29297a1.0001 1.0001 0 0 1 -1.4141 0l-2.293-2.293-2.293 2.293a1.0001 1.0001 0 0 1 -1.4141 0l-2.293-2.293z" fill="#ff4040"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_dialog.svg b/editor/icons/dark/icon_file_dialog.svg
new file mode 100644
index 0000000000..542894b906
--- /dev/null
+++ b/editor/icons/dark/icon_file_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2zm9 1h1v1h-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8zm3 2h3c1 0 1 2 2 2h3v4h-8z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_list.svg b/editor/icons/dark/icon_file_list.svg
new file mode 100644
index 0000000000..12678c2873
--- /dev/null
+++ b/editor/icons/dark/icon_file_list.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2v2h2v-2h-2zm4 0v2h8v-2h-8zm-4 5v2h2v-2h-2zm4 0v2h8v-2h-8zm-4 5v2h2v-2h-2zm4 0v2h8v-2h-8z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_server.svg b/editor/icons/dark/icon_file_server.svg
new file mode 100644
index 0000000000..02bc363c19
--- /dev/null
+++ b/editor/icons/dark/icon_file_server.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#c5c5c5">
+<path transform="translate(0 1036.4)" d="m1 8v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1zm-3 3v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1z"/>
+<rect x="5" y="1038.4" width="6" height="4"/>
+<rect x="5" y="1037.4" width="3" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_server_active.svg b/editor/icons/dark/icon_file_server_active.svg
new file mode 100644
index 0000000000..ccb9b97336
--- /dev/null
+++ b/editor/icons/dark/icon_file_server_active.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#00f010">
+<path transform="translate(0 1036.4)" d="m1 8v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1zm-3 3v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1z"/>
+<rect x="5" y="1038.4" width="6" height="4"/>
+<rect x="5" y="1037.4" width="3" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_file_thumbnail.svg b/editor/icons/dark/icon_file_thumbnail.svg
new file mode 100644
index 0000000000..bd1d4d2fc3
--- /dev/null
+++ b/editor/icons/dark/icon_file_thumbnail.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2v5h5v-5h-5zm7 0v5h5v-5h-5zm-7 7v5h5v-5h-5zm7 0v5h5v-5h-5z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_fixed_material.svg b/editor/icons/dark/icon_fixed_material.svg
new file mode 100644
index 0000000000..47cf9189d6
--- /dev/null
+++ b/editor/icons/dark/icon_fixed_material.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-2 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_fixed_spatial_material.svg b/editor/icons/dark/icon_fixed_spatial_material.svg
new file mode 100644
index 0000000000..4e634280bf
--- /dev/null
+++ b/editor/icons/dark/icon_fixed_spatial_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -4.8887 2h2.8887 6.8965a7 7 0 0 0 -4.8965 -2z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m3.1113 3a7 7 0 0 0 -1.4277 2h2.3164a2 2 0 0 1 2 -2h-2.8887zm2.8887 0a2 2 0 0 1 2 2h6.3145a7 7 0 0 0 -1.418 -2h-6.8965z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m1.6836 5a7 7 0 0 0 -0.60547 2h4.9219a2 2 0 0 1 -2 -2h-2.3164zm4.3164 2h8.9199a7 7 0 0 0 -0.60547 -2h-6.3145a2 2 0 0 1 -2 2z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1.0781 7a7 7 0 0 0 -0.078125 1 7 7 0 0 0 0.080078 1h13.842a7 7 0 0 0 0.078125 -1 7 7 0 0 0 -0.080078 -1h-8.9199-4.9219z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1.0801 9a7 7 0 0 0 0.60547 2h12.631a7 7 0 0 0 0.60547 -2h-13.842z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m3.1035 13a7 7 0 0 0 4.8965 2 7 7 0 0 0 4.8887 -2h-9.7852z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m1.6855 11a7 7 0 0 0 1.418 2h9.7852a7 7 0 0 0 1.4277 -2h-12.631z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_folder.svg b/editor/icons/dark/icon_folder.svg
new file mode 100644
index 0000000000..a127f00ae1
--- /dev/null
+++ b/editor/icons/dark/icon_folder.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2a1 1 0 0 0 -1 1v2 6 2a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-7a1 1 0 0 0 -1 -1h-4a1 1 0 0 1 -1 -1v-1a1 1 0 0 0 -1 -1h-6z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_folder_big.svg b/editor/icons/dark/icon_folder_big.svg
new file mode 100644
index 0000000000..440907e33b
--- /dev/null
+++ b/editor/icons/dark/icon_folder_big.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path transform="translate(0 988.36)" d="m13 11.996a5.0039 5.0039 0 0 0 -5.0039 5.0039 5.0039 5.0039 0 0 0 0.0039062 0.11719v2.8828 8 22.92a5.0039 5.0039 0 0 0 -0.0039062 0.076172 5.0039 5.0039 0 0 0 5.0039 5.0039h37.996a5.0039 5.0039 0 0 0 5.0039 -5.0039v-25.916a5.0039 5.0039 0 0 0 0.003906 -0.076172 5.0039 5.0039 0 0 0 -5.0039 -5.0039h-11v-0.039062a3.5 3.5 0 0 1 -0.5 0.039062 3.5 3.5 0 0 1 -3.5 -3.5v0.38281a5.0039 5.0039 0 0 0 -5 -4.8867 5.0039 5.0039 0 0 0 -0.11719 0.003906h-17.807a5.0039 5.0039 0 0 0 -0.076172 -0.003906zm23 4.5039a3.5 3.5 0 0 1 0.041016 -0.5h-0.041016v0.5z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_font.svg b/editor/icons/dark/icon_font.svg
new file mode 100644
index 0000000000..f89b408383
--- /dev/null
+++ b/editor/icons/dark/icon_font.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="1" y="1037.4" width="14" height="2"/>
+<rect x="7" y="1037.4" width="2" height="14"/>
+<rect x="5" y="1050.4" width="6" height="1"/>
+<rect transform="rotate(90)" x="1037.4" y="-2" width="4" height="1"/>
+<rect transform="rotate(90)" x="1037.4" y="-15" width="4" height="1"/>
+<path transform="translate(0 1036.4)" d="m2 3v2a2 2 0 0 1 2 -2h-2z"/>
+<path transform="translate(0 1036.4)" d="m12 3a2 2 0 0 1 2 2v-2h-2z"/>
+<path d="m5 1050.4a2 2 0 0 0 2 -2v2h-2z"/>
+<path d="m11 1050.4a2 2 0 0 1 -2 -2v2h2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_forward.svg b/editor/icons/dark/icon_forward.svg
new file mode 100644
index 0000000000..a02f36d314
--- /dev/null
+++ b/editor/icons/dark/icon_forward.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="16" version="1.1" viewBox="0 0 8 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1038.4 4 6-4 6" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_g_d_native_library.svg b/editor/icons/dark/icon_g_d_native_library.svg
new file mode 100644
index 0000000000..24a18eceb0
--- /dev/null
+++ b/editor/icons/dark/icon_g_d_native_library.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-1.1934 1.9902 1.4141 1.4141 1.9941-1.1953a5 5 0 0 0 0.68555 0.28516l0.5625 2.2539v-5.2695a2 2 0 0 1 -1 -1.7305 2 2 0 0 1 1 -1.7285v-0.27148h1 4.5762a5 5 0 0 0 -0.11328 -0.25195l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm2 7v1 5 1h5c0.55228 0 1-0.4477 1-1v-5c0-0.5523-0.44772-1-1-1v4l-1-1-1 1v-4h-3z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_g_d_script.svg b/editor/icons/dark/icon_g_d_script.svg
new file mode 100644
index 0000000000..07718e87b2
--- /dev/null
+++ b/editor/icons/dark/icon_g_d_script.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-1.1934 1.9902 1.4141 1.4141 1.9941-1.1953a5 5 0 0 0 0.68555 0.28516l0.5625 2.2539h2l0.56445-2.2578a5 5 0 0 0 0.6875 -0.2793l1.9902 1.1934 1.4141-1.4141-1.1953-1.9941a5 5 0 0 0 0.28516 -0.68555l2.2539-0.5625v-2l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm1 5a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_g_i_probe.svg b/editor/icons/dark/icon_g_i_probe.svg
new file mode 100644
index 0000000000..d88cc782ad
--- /dev/null
+++ b/editor/icons/dark/icon_g_i_probe.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4v-2h-3v-10h9v-2h-10zm9 3a4 4 0 0 0 -4 4 4 4 0 0 0 2 3.459v0.54102c0 0.55401 0.44599 1 1 1h2c0.55401 0 1-0.44599 1-1v-0.54102a4 4 0 0 0 2 -3.459 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-1 8v1h2v-1h-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_g_i_probe_data.svg b/editor/icons/dark/icon_g_i_probe_data.svg
new file mode 100644
index 0000000000..a7c8253448
--- /dev/null
+++ b/editor/icons/dark/icon_g_i_probe_data.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4v-2h-3v-10h9v-2h-10zm2 3v2h2v-2h-2zm7 0a4 4 0 0 0 -4 4 4 4 0 0 0 2 3.459v0.54102c0 0.55401 0.44599 1 1 1h2c0.55401 0 1-0.44599 1-1v-0.54102a4 4 0 0 0 2 -3.459 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-7 1v2h2v-2h-2zm0 3v2h2v-2h-2zm6 4v1h2v-1h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_generic_6_d_o_f_joint.svg b/editor/icons/dark/icon_generic_6_d_o_f_joint.svg
new file mode 100644
index 0000000000..e5671afa84
--- /dev/null
+++ b/editor/icons/dark/icon_generic_6_d_o_f_joint.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a1 1 0 0 0 -1 1v4.8828l-3.5527-1.7773a1 1 0 0 0 -0.48438 -0.10352 1 1 0 0 0 -0.85742 0.55078 1 1 0 0 0 0.44727 1.3418l3.2109 1.6055-3.2109 1.6055a1 1 0 0 0 -0.44727 1.3418 1 1 0 0 0 1.3418 0.44726l3.5527-1.7773v3.8828a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-3.8828l3.5527 1.7773a1 1 0 0 0 1.3418 -0.44726 1 1 0 0 0 -0.44726 -1.3418l-3.2109-1.6055 3.2109-1.6055a1 1 0 0 0 0.44726 -1.3418 1 1 0 0 0 -0.88672 -0.55273 1 1 0 0 0 -0.45508 0.10547l-3.5527 1.7773v-4.8828a1 1 0 0 0 -1 -1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ff5f5f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_camera.svg b/editor/icons/dark/icon_gizmo_camera.svg
new file mode 100644
index 0000000000..f6e5f885e7
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_camera.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path d="m76 944.36a24 24 0 0 0 -23.906 22.219 24 24 0 0 0 -16.094 -6.2192 24 24 0 0 0 -24 24 24 24 0 0 0 16 22.594v17.406c0 4.432 3.5679 8 8 8h48c4.4321 0 8-3.568 8-8v-8l24 16v-48l-24 16v-14.156a24 24 0 0 0 8 -17.844 24 24 0 0 0 -24 -24z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_directional_light.svg b/editor/icons/dark/icon_gizmo_directional_light.svg
new file mode 100644
index 0000000000..f7fa732501
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_directional_light.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m64 8c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4zm-36.77 15.227c-1.0225 0-2.0447 0.39231-2.8281 1.1758-1.5669 1.5669-1.5669 4.0893 0 5.6562l11.312 11.314c1.5669 1.5669 4.0913 1.5669 5.6582 0s1.5669-4.0913 0-5.6582l-11.314-11.312c-0.78348-0.78348-1.8056-1.1758-2.8281-1.1758zm73.539 0c-1.0225 0-2.0446 0.39231-2.8281 1.1758l-11.314 11.312c-1.5669 1.5669-1.5669 4.0913 0 5.6582s4.0913 1.5669 5.6582 0l11.313-11.314c1.5669-1.5669 1.5669-4.0893 0-5.6562-0.78348-0.78348-1.8056-1.1758-2.8281-1.1758zm-36.77 20.773c-11.046 1e-5 -20 8.9543-20 20 7e-6 11.046 8.9543 20 20 20s20-8.9543 20-20c-8e-6 -11.046-8.9543-20-20-20zm-52 16c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4h-16zm88 0c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4h-16zm-61.455 25.453c-1.0225 0-2.0466 0.39035-2.8301 1.1738l-11.312 11.314c-1.5669 1.5669-1.5669 4.0893 0 5.6563 1.5669 1.5669 4.0893 1.5669 5.6562 0l11.314-11.313c1.5669-1.5669 1.5669-4.0913 0-5.6582-0.78347-0.78347-1.8056-1.1738-2.8281-1.1738zm50.91 0c-1.0225 0-2.0447 0.39035-2.8281 1.1738-1.5669 1.5669-1.5669 4.0913 0 5.6582l11.314 11.313c1.5669 1.5669 4.0893 1.5669 5.6563 0 1.5669-1.567 1.5669-4.0893 0-5.6563l-11.313-11.314c-0.78347-0.78347-1.8076-1.1738-2.8301-1.1738zm-25.455 10.547c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_g_i_probe.svg b/editor/icons/dark/icon_gizmo_g_i_probe.svg
new file mode 100644
index 0000000000..7d3adf4196
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_g_i_probe.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m12 8a4.0004 4.0004 0 0 0 -4 4v104a4.0004 4.0004 0 0 0 4 4h60v-8h-56v-96h96v8h8v-12a4.0004 4.0004 0 0 0 -4 -4h-104zm27.715 17.951c-1.2324 0.086154-2.3996 0.76492-3.0664 1.9199l-0.14844 0.25781c-1.0669 1.848-0.43784 4.1948 1.4102 5.2617l10.648 6.1484c1.848 1.0669 4.1948 0.43784 5.2617-1.4102l0.14844-0.25781c1.0669-1.848 0.43784-4.1948-1.4102-5.2617l-10.648-6.1484c-0.693-0.4001-1.4558-0.56146-2.1953-0.50977zm52.285 2.0488a32 32 0 0 0 -32 32 32 32 0 0 0 16 27.668v8.332c0 4.432 3.568 8 8 8h16c4.432 0 8-3.568 8-8v-8.3223a32 32 0 0 0 16 -27.678 32 32 0 0 0 -32 -32zm0 12a20 20 0 0 1 20 20 20 20 0 0 1 -20 20 20 20 0 0 1 -20 -20 20 20 0 0 1 20 -20zm-60.148 16c-2.1339 0-3.8516 1.7177-3.8516 3.8516v0.29688c0 2.1339 1.7177 3.8516 3.8516 3.8516h12.297c2.1339 0 3.8516-1.7177 3.8516-3.8516v-0.29688c0-2.1339-1.7177-3.8516-3.8516-3.8516h-12.297zm18.902 23.951c-0.73947-0.051693-1.5023 0.10966-2.1953 0.50977l-10.648 6.1484c-1.848 1.0669-2.4771 3.4137-1.4102 5.2617l0.14844 0.25781c1.0669 1.848 3.4137 2.4771 5.2617 1.4102l10.648-6.1484c1.848-1.0669 2.4771-3.4137 1.4102-5.2617l-0.14844-0.25781c-0.66684-1.155-1.834-1.8338-3.0664-1.9199zm33.246 32.049v8h16v-8h-16z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#f7f5cf" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_light.svg b/editor/icons/dark/icon_gizmo_light.svg
new file mode 100644
index 0000000000..c411d13dc7
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_light.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m64 6a40 40 0 0 0 -40 40 40 40 0 0 0 24 36.607v15.393a8 8 0 0 0 8 8h16a8 8 0 0 0 8 -8v-15.363a40 40 0 0 0 24 -36.637 40 40 0 0 0 -40 -40zm0 12a28 28 0 0 1 28 28 28 28 0 0 1 -28 28 28 28 0 0 1 -28 -28 28 28 0 0 1 28 -28zm-8 96v8h16v-8h-16z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_listener.svg b/editor/icons/dark/icon_gizmo_listener.svg
new file mode 100644
index 0000000000..adb6aebaec
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_listener.svg
@@ -0,0 +1,7 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<g transform="matrix(2 0 0 2 -16 -1040.4)">
+<path transform="matrix(.5 0 0 .5 8 982.36)" d="m48 8a40 39.998 0 0 0 -40 39.998h16a24 23.999 0 0 1 24 -23.998 24 23.999 0 0 1 24 23.998c0 13.999-4.33 18.859-9.1211 22.852-2.3955 1.9962-5.0363 3.5302-7.8125 5.5352-1.3881 1.0024-2.8661 2.126-4.3047 3.9414-1.4385 1.8152-2.7617 4.6719-2.7617 7.6719 0 10.221-2.5383 12.59-5.1172 14.137-2.5789 1.5472-6.8828 1.8594-10.883 1.8594v0.00195h-8v16h8v-0.00195c4 0 11.696 0.31158 19.117-4.1406 7.0602-4.236 12.198-13.279 12.695-26 0.1835-0.1636 0.14883-0.15489 0.62109-0.49609 1.7238-1.245 5.083-3.2112 8.6875-6.2148 7.209-6.0072 14.879-17.145 14.879-35.145a40 39.998 0 0 0 -40 -39.998zm63.426 8l-13.906 8.0312a48 47.998 0 0 1 6.4844 23.967 48 47.998 0 0 1 -6.4688 23.984l13.891 8.0137a64 63.997 0 0 0 0 -63.996z" fill="#f7f5cf"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_particles.svg b/editor/icons/dark/icon_gizmo_particles.svg
new file mode 100644
index 0000000000..05fc84619e
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_particles.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m64 8a36 40 0 0 0 -35.311 32.256 24 24 0 0 0 -20.689 23.744 24 24 0 0 0 24 24h64a24 24 0 0 0 24 -24 24 24 0 0 0 -20.715 -23.746 36 40 0 0 0 -35.285 -32.254zm-32 88a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8zm64 0a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8zm-32 8a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_reflection_probe.svg b/editor/icons/dark/icon_gizmo_reflection_probe.svg
new file mode 100644
index 0000000000..6d80e73b8c
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_reflection_probe.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m12 8a4.0004 4.0004 0 0 0 -4 4v24h8v-20h96v8h8v-12a4.0004 4.0004 0 0 0 -4 -4h-104zm76 28a4 4 0 0 0 -4 4 4 4 0 0 0 4 4h18.732l-42.957 50.119-44.947-44.947-5.6562 5.6582 48 48a4.0004 4.0004 0 0 0 5.8652 -0.22656l44.963-52.457v17.854a4 4 0 0 0 4 4 4 4 0 0 0 4 -4v-28a4.0004 4.0004 0 0 0 -4 -4h-28zm-80 52v28a4.0004 4.0004 0 0 0 4 4h104a4.0004 4.0004 0 0 0 4 -4v-28h-8v24h-96v-24h-8z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#f7f5cf" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_spatial_sample_player.svg b/editor/icons/dark/icon_gizmo_spatial_sample_player.svg
new file mode 100644
index 0000000000..7dbb4744be
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_spatial_sample_player.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m63.883 12.004c-1.0195 0.0295-1.9892 0.4473-2.7109 1.168l-30.828 30.83h-14.344c-2.209 2.21e-4 -3.9998 1.791-4 4v32c2.21e-4 2.209 1.791 3.9998 4 4h14.344l30.828 30.828c2.52 2.5182 6.8267 0.73442 6.8281-2.8281v-96.002c-0.0015-2.2541-1.8641-4.0619-4.1172-3.9961zm48.117 3.9961a4 4 0 0 0 -4 4v88a4 4 0 0 0 4 4 4 4 0 0 0 4 -4v-88a4 4 0 0 0 -4 -4zm-24 24a4 4 0 0 0 -4 4v40a4 4 0 0 0 4 4 4 4 0 0 0 4 -4v-40a4 4 0 0 0 -4 -4z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#f7f5cf" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_spatial_stream_player.svg b/editor/icons/dark/icon_gizmo_spatial_stream_player.svg
new file mode 100644
index 0000000000..2cf3966364
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_spatial_stream_player.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path d="m99.766 934.36a8.0008 8.0011 0 0 0 -1.9609 0.296l-56 16a8.0008 8.0011 0 0 0 -5.8047 7.6964v48.119a18 18.001 0 0 0 -2 -0.116 18 18.001 0 0 0 -18 18.001 18 18.001 0 0 0 18 18.001 18 18.001 0 0 0 17.875 -16.001h0.125v-2-59.963l40-11.43v37.517a18 18.001 0 0 0 -2 -0.124 18 18.001 0 0 0 -18 18.001 18 18.001 0 0 0 18 18 18 18.001 0 0 0 17.875 -16h0.125v-2-66.003a8.0008 8.0011 0 0 0 -8.2344 -7.9924z" color="#000000" color-rendering="auto" fill="#f7f5cf" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gizmo_spot_light.svg b/editor/icons/dark/icon_gizmo_spot_light.svg
new file mode 100644
index 0000000000..9b4ddadd17
--- /dev/null
+++ b/editor/icons/dark/icon_gizmo_spot_light.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m52 8c-4.432 0-8 3.568-8 8v12 16.875a40 36 0 0 0 -20 31.125h28a12 12 0 0 0 12 12 12 12 0 0 0 12 -12h28a40 36 0 0 0 -20 -31.141v-20.859-8c0-4.432-3.568-8-8-8h-24zm-11.969 78.006c-0.76793-0.053681-1.5596 0.1138-2.2793 0.5293l-10.393 6c-1.9191 1.108-2.5728 3.5457-1.4648 5.4648s3.5457 2.5728 5.4648 1.4648l10.393-6c1.9191-1.108 2.5709-3.5457 1.4629-5.4648-0.6925-1.1994-1.9037-1.9047-3.1836-1.9941zm47.938 0c-1.2799 0.08947-2.4911 0.7947-3.1836 1.9941-1.108 1.9191-0.45622 4.3568 1.4629 5.4648l10.393 6c1.9191 1.108 4.3568 0.45427 5.4648-1.4648s0.45427-4.3568-1.4648-5.4648l-10.393-6c-0.71967-0.4155-1.5114-0.58298-2.2793-0.5293zm-23.969 13.994c-2.216 0-4 1.784-4 4v12c0 2.216 1.784 4 4 4s4-1.784 4-4v-12c0-2.216-1.784-4-4-4z" fill="#f7f5cf" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.1082"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_godot.svg b/editor/icons/dark/icon_godot.svg
new file mode 100644
index 0000000000..32a1eeb6ec
--- /dev/null
+++ b/editor/icons/dark/icon_godot.svg
@@ -0,0 +1,33 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="matrix(.017241 0 0 .017241 -.82759 1033.7)" stroke-width=".32031">
+<g transform="matrix(4.1626 0 0 -4.1626 919.24 771.67)">
+<path d="m0 0s-0.325 1.994-0.515 1.976l-36.182-3.491c-2.879-0.278-5.115-2.574-5.317-5.459l-0.994-14.247-27.992-1.997-1.904 12.912c-0.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-0.994 14.247c-0.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-0.187 0.018-0.324-1.978-0.511-1.978l-0.049-7.83 30.658-4.944 1.004-14.374c0.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c0.146-0.01 0.29-0.016 0.434-0.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c0.423-2.871 2.93-5.037 5.831-5.037 0.142 0 0.284 5e-3 0.423 0.015l38.556 2.75c2.911 0.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 104.7 525.91)">
+<path d="m0 0v-59.041c0.108-1e-3 0.216-5e-3 0.323-0.015l36.196-3.49c1.896-0.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c0.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c0.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c0.107 0.01 0.214 0.014 0.322 0.015v4.711l0.015 5e-3v54.325h0.134c4.795 6.12 9.232 12.569 13.487 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842 0.642-7.702 0.88-11.567 0.926v6e-3c-0.027 0-0.052-6e-3 -0.075-6e-3 -0.024 0-0.049 6e-3 -0.073 6e-3v-6e-3c-3.872-0.046-7.729-0.284-11.572-0.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17 0.216-8.34 0.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.253-6.88 8.693-13.329 13.487-19.449z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 784.07 817.24)">
+<path d="m0 0-1.121-16.063c-0.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-0.094-7e-3 -0.188-0.01-0.281-0.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-0.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936 0.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c0.015-3.498 0.06-7.33 0.06-8.093 0-34.374 43.605-50.896 97.781-51.086h0.133c54.176 0.19 97.766 16.712 97.766 51.086 0 0.777 0.047 4.593 0.063 8.093z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 389.21 625.67)">
+<path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 367.37 631.06)">
+<path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 511.99 724.74)">
+<path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 634.79 625.67)">
+<path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 656.64 631.06)">
+<path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042"/>
+</g>
+</g>
+<path d="m4 1041.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 1a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z"/>
+<path d="m12 1041.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 1a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z"/>
+<rect x="6" y="1043.4" width="4" height="1" ry="0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gradient.svg b/editor/icons/dark/icon_gradient.svg
new file mode 100644
index 0000000000..0fac616d58
--- /dev/null
+++ b/editor/icons/dark/icon_gradient.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="10" x2="10" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#4f4f4f" offset="0"/>
+<stop stop-color="#4f4f4f" stop-opacity="0" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55228 0-1 0.44772-1 1v12c0 0.55228 0.44772 1 1 1h12c0.55228 0 1-0.44772 1-1v-12c0-0.55228-0.44772-1-1-1z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gradient_texture.svg b/editor/icons/dark/icon_gradient_texture.svg
new file mode 100644
index 0000000000..d98f4c01a0
--- /dev/null
+++ b/editor/icons/dark/icon_gradient_texture.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="10" x2="10" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#4f4f4f" offset="0"/>
+<stop stop-color="#4f4f4f" stop-opacity="0" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-12a1 1 0 0 0 -1 -1h-12zm1 2h10v8h-10v-8z" fill="url(#a)"/>
+<rect x="6" y="1043.4" width="2" height="1" fill="#4f4f4f"/>
+<rect x="6" y="1044.4" width="2" height="2" fill="#4f4f4f"/>
+<rect x="4" y="1045.4" width="2" height="1" fill="#4f4f4f"/>
+<rect x="8" y="1044.4" width="2" height="2" fill="#4f4f4f"/>
+<rect x="10" y="1044.4" width="2" height="2" fill="#4f4f4f"/>
+<rect x="8" y="1042.4" width="3" height="2" fill="#4f4f4f"/>
+<rect x="9" y="1041.4" width="1" height="1" fill="#4f4f4f"/>
+<rect x="5" y="1044.4" width="1" height="1" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_comment.svg b/editor/icons/dark/icon_graph_comment.svg
new file mode 100644
index 0000000000..f3faab0c54
--- /dev/null
+++ b/editor/icons/dark/icon_graph_comment.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m3 1v2h-2v2h2v4h-2v2h2v2h2v-2h4v2h2v-2h2v-2h-2v-4h2v-2h-2v-2h-2v2h-4v-2h-2zm2 4h4v4h-4v-4z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_cube_uniform.svg b/editor/icons/dark/icon_graph_cube_uniform.svg
new file mode 100644
index 0000000000..a7ef1499b5
--- /dev/null
+++ b/editor/icons/dark/icon_graph_cube_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm4.9727 2a0.71438 0.71438 0 0 1 0.34766 0.074219l4.2852 2.1426a0.71438 0.71438 0 0 1 0.39453 0.64062v4.2852a0.71438 0.71438 0 0 1 -0.39453 0.63867l-4.2852 2.1426a0.71438 0.71438 0 0 1 -0.64062 0l-4.2852-2.1426a0.71438 0.71438 0 0 1 -0.39453 -0.63867v-4.2852a0.71438 0.71438 0 0 1 0.39453 -0.64062l4.2852-2.1426a0.71438 0.71438 0 0 1 0.29297 -0.074219zm0.027344 1.5137l-2.6895 1.3438 2.6895 1.3438 2.6895-1.3438-2.6895-1.3438zm-3.5723 2.498v2.6895l2.8574 1.4277v-2.6875l-2.8574-1.4297zm7.1445 0l-2.8574 1.4297v2.6875l2.8574-1.4277v-2.6895z" fill="#eac968"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_curve_map.svg b/editor/icons/dark/icon_graph_curve_map.svg
new file mode 100644
index 0000000000..a5a3184926
--- /dev/null
+++ b/editor/icons/dark/icon_graph_curve_map.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1049.4c8 0 9 0 9-9" fill="none" stroke="#f6f6f6" stroke-linecap="round" stroke-width="2"/>
+<path transform="translate(0 1038.4)" d="m11 4a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-5 5a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" fill="#68d0ea"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_default_texture.svg b/editor/icons/dark/icon_graph_default_texture.svg
new file mode 100644
index 0000000000..0a1a0e9673
--- /dev/null
+++ b/editor/icons/dark/icon_graph_default_texture.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 2v10h10v-10h-10zm9 2v5h-8l2-3 2 2 4-4z" fill="#eae068"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_edit.svg b/editor/icons/dark/icon_graph_edit.svg
new file mode 100644
index 0000000000..0abd546971
--- /dev/null
+++ b/editor/icons/dark/icon_graph_edit.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -1 -1.7305v-5.8555l4.793 4.793 1.4141-1.4141-4.793-4.793h5.8574a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm10.656 6.9297l-0.70703 0.70703 1.4141 1.4141 0.70703-0.70703-1.4141-1.4141zm-1.4141 1.4141l-3.8887 3.8887-0.35352 1.7676 1.7676-0.35352 3.8887-3.8887-1.4141-1.4141z" fill="#29d739"/>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_input.svg b/editor/icons/dark/icon_graph_input.svg
new file mode 100644
index 0000000000..c5034ecd2c
--- /dev/null
+++ b/editor/icons/dark/icon_graph_input.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<circle cx="7" cy="1045.4" r="6" fill="#f6f6f6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_node.svg b/editor/icons/dark/icon_graph_node.svg
new file mode 100644
index 0000000000..bdeeefb8e4
--- /dev/null
+++ b/editor/icons/dark/icon_graph_node.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -1 -1.7305v-5.8555l4.0859 4.0859 1.4141-1.4141-4.0859-4.0859h5.8574a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm9.5 9a2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5 -2.5 2.5 2.5 0 0 0 -2.5 -2.5z" fill="#29d739"/>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_rgb.svg b/editor/icons/dark/icon_graph_rgb.svg
new file mode 100644
index 0000000000..c7f2402382
--- /dev/null
+++ b/editor/icons/dark/icon_graph_rgb.svg
@@ -0,0 +1,12 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill-opacity=".39216">
+<path d="m7 1039.4a4 4 0 0 0 -4 4 4 4 0 0 0 0.03906 0.5195 4 4 0 0 0 -2.0391 3.4805 4 4 0 0 0 4 4 4 4 0 0 0 1.998 -0.541 4 4 0 0 0 2.002 0.541 4 4 0 0 0 4 -4 4 4 0 0 0 -2.0371 -3.4824 4 4 0 0 0 0.03711 -0.5176 4 4 0 0 0 -4 -4z" fill="#000000"/>
+<path d="m7 1040.4a3 3 0 0 0 -3 3 3 3 0 0 0 0.21094 1.1055 3 3 0 0 0 -2.2109 2.8945 3 3 0 0 0 3 3 3 3 0 0 0 2 -0.7676 3 3 0 0 0 2 0.7676 3 3 0 0 0 3 -3 3 3 0 0 0 -2.2148 -2.8906 3 3 0 0 0 0.21484 -1.1094 3 3 0 0 0 -3 -3z" fil#000000fff"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_rgb_op.svg b/editor/icons/dark/icon_graph_rgb_op.svg
new file mode 100644
index 0000000000..8ec7782b47
--- /dev/null
+++ b/editor/icons/dark/icon_graph_rgb_op.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m4 1050.4h6v-10h-6z" fill="#000000" fill-rule="evenodd" strok#000000fff" stroke-linejoin="round" stroke-width="2"/>
+<rect x="1" y="1041.4" width="2" height="2" #000000="#fff"/>
+<rect x="1" y="1047.4" width="2" height="#000000ill="#fff"/>
+<rect x="11" y="1044.4" width="2" heigh#000000" fill="#fff"/>
+<rect x="5" y="1041.4" width="4" height="2" fill="#ff4646" fill-opacity=".86275"/>
+<rect x="5" y="1044.4" width="4" height="2" fill="#46ff46" fill-opacity=".86275"/>
+<rect x="5" y="1047.4" width="4" height="2" fill="#4646ff" fill-opacity=".86275"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_rgb_uniform.svg b/editor/icons/dark/icon_graph_rgb_uniform.svg
new file mode 100644
index 0000000000..fb740429e5
--- /dev/null
+++ b/editor/icons/dark/icon_graph_rgb_uniform.svg
@@ -0,0 +1,12 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1038.4c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2z" fill="#000000"/>
+<path transform="translate(0 1038.4)" d="m7 2a3 3 0 0 0 -3 3 3 3 0 0 0 0.21094 1.1055 3 3 0 0 0 -2.2109 2.8945 3 3 0 0 0 3 3 3 3 0 0 0 2 -0.76758 3 3 0 0 0 2 0.76758 3 3 0 0 0 3 -3 3 3 0 0 0 -2.2148 -2.8906 3 3 0 0 0 0.21484 -1.1094 3 3 0 0 0 -3 -3z" fil#000000fff" fill-opacity=".39216"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00" fill-opacity=".39216"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f" fill-opacity=".39216"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0" fill-opacity=".39216"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00" fill-opacity=".39216"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f" fill-opacity=".39216"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0" fill-opacity=".39216"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_scalar.svg b/editor/icons/dark/icon_graph_scalar.svg
new file mode 100644
index 0000000000..ba921a961c
--- /dev/null
+++ b/editor/icons/dark/icon_graph_scalar.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m6 2c-1.6569 0-3 1.3431-3 3s1.3431 3 3 3h2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1h-5v2h5c1.6569 0 3-1.3431 3-3s-1.3431-3-3-3h-2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h5v-2h-5z" fill="#cf68ea"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_scalar_interp.svg b/editor/icons/dark/icon_graph_scalar_interp.svg
new file mode 100644
index 0000000000..edfbe36066
--- /dev/null
+++ b/editor/icons/dark/icon_graph_scalar_interp.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1050.4 10-10" fill="none" stroke="#cf68ea" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_scalar_op.svg b/editor/icons/dark/icon_graph_scalar_op.svg
new file mode 100644
index 0000000000..34f7d9b2b1
--- /dev/null
+++ b/editor/icons/dark/icon_graph_scalar_op.svg
@@ -0,0 +1,8 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<path transform="translate(0 1038.4)" d="m4 1c-0.55226 1e-4 -0.99994 0.4477-1 1v10c5.52e-5 0.5523 0.44774 0.9999 1 1h6c0.55226-1e-4 0.99994-0.4477 1-1v-10c-5.5e-5 -0.5523-0.44774-0.9999-1-1zm1 3 4 3-4 3z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<rect x="1" y="1041.4" width="2" height="2"/>
+<rect x="1" y="1047.4" width="2" height="2"/>
+<rect x="11" y="1044.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_scalar_uniform.svg b/editor/icons/dark/icon_graph_scalar_uniform.svg
new file mode 100644
index 0000000000..d2ee2ec827
--- /dev/null
+++ b/editor/icons/dark/icon_graph_scalar_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2h-10zm4 2h5v2h-5a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2c1.6569 0 3 1.3431 3 3s-1.3431 3-3 3h-5v-2h5a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2c-1.6569 0-3-1.3431-3-3s1.3431-3 3-3z" fill="#cf68ea"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_scalars_to_vec.svg b/editor/icons/dark/icon_graph_scalars_to_vec.svg
new file mode 100644
index 0000000000..bd3bc0424a
--- /dev/null
+++ b/editor/icons/dark/icon_graph_scalars_to_vec.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientUnits="userSpaceOnUse">
+<stop stop-color="#cf68ea" offset="0"/>
+<stop stop-color="#b8ea68" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m1.9902 0.99023a1.0001 1.0001 0 0 0 -0.69727 1.7168l3.293 3.293h-2.5859a1.0001 1.0001 0 1 0 0 2h2.5859l-3.293 3.293a1.0001 1.0001 0 1 0 1.4141 1.4141l4.707-4.707h4.5859a1.0001 1.0001 0 1 0 0 -2h-4.5859l-4.707-4.707a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_texscreen.svg b/editor/icons/dark/icon_graph_texscreen.svg
new file mode 100644
index 0000000000..6c26332203
--- /dev/null
+++ b/editor/icons/dark/icon_graph_texscreen.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1041.4h10v8h-10z" fill="none" stroke="#f6f6f6" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<rect x="3" y="1042.4" width="8" height="1" fill="#f6f6f6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_texture_uniform.svg b/editor/icons/dark/icon_graph_texture_uniform.svg
new file mode 100644
index 0000000000..9e72743432
--- /dev/null
+++ b/editor/icons/dark/icon_graph_texture_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm9 2l-4 4-2-2-2 3h8v-5z" fill="#eae068"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_time.svg b/editor/icons/dark/icon_graph_time.svg
new file mode 100644
index 0000000000..6227b53c62
--- /dev/null
+++ b/editor/icons/dark/icon_graph_time.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#f6f6f6">
+<rect x="6" y="1042.4" width="2" height="4"/>
+<rect x="6" y="1044.4" width="4" height="2"/>
+<path transform="translate(0 1038.4)" d="m7 0a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vec_dp.svg b/editor/icons/dark/icon_graph_vec_dp.svg
new file mode 100644
index 0000000000..0b24b47895
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vec_dp.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m1 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1046.4" r="1" fill="#b8ea68"/>
+<path d="m9 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vec_interp.svg b/editor/icons/dark/icon_graph_vec_interp.svg
new file mode 100644
index 0000000000..a3df7ff93d
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vec_interp.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1050.4 10-10" fill="none" stroke="#b8ea68" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vec_length.svg b/editor/icons/dark/icon_graph_vec_length.svg
new file mode 100644
index 0000000000..cd2a39312a
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vec_length.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<rect y="1039.4" width="2" height="12" fill="#b8ea68"/>
+<rect x="12" y="1039.4" width="2" height="12" fill="#b8ea68"/>
+<path d="m5 1043.4 2 5 2-5" fill="none" stroke="#b8ea68" stroke-linecap="square" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vec_op.svg b/editor/icons/dark/icon_graph_vec_op.svg
new file mode 100644
index 0000000000..2792d63378
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vec_op.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m4 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h-2v2h2v4h-2v2h2v1c5.52e-5 0.5523 0.44774 0.9999 1 1h6c0.55226-1e-4 0.99994-0.4477 1-1v-4h2v-2h-2v-4c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-6zm1 3l4 3-4 3v-6z" color="#000000" color-rendering="auto" fill="#b8ea68" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vec_scalar_op.svg b/editor/icons/dark/icon_graph_vec_scalar_op.svg
new file mode 100644
index 0000000000..effcb596a1
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vec_scalar_op.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill-rule="evenodd" shape-rendering="auto">
+<path transform="translate(0 1038.4)" d="m3 7v2h-2v2h2v1c5.52e-5 0.5523 0.44774 0.9999 1 1h6c0.55226-1e-4 0.99994-0.4477 1-1v-4h2v-1h-4l-4 3v-3h-2z" color="#000000" color-rendering="auto" fill="#cf68ea" image-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m3 1045.4v-2h-2v-2h2v-1c5.52e-5 -0.5523 0.44774-0.9999 1-1h6c0.55226 1e-4 0.99994 0.4477 1 1v4h2v1h-4l-4-3v3h-2z" color="#000000" color-rendering="auto" fill="#b8ea68" image-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vec_to_scalars.svg b/editor/icons/dark/icon_graph_vec_to_scalars.svg
new file mode 100644
index 0000000000..2ecacb8434
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vec_to_scalars.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientTransform="matrix(-1 0 0 1 14 1038.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#cf68ea" offset="0"/>
+<stop stop-color="#b8ea68" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path d="m12.01 1039.4a1.0001 1.0001 0 0 1 0.69726 1.7168l-3.293 3.293h2.5859a1.0001 1.0001 0 1 1 0 2h-2.5859l3.293 3.293a1.0001 1.0001 0 1 1 -1.4141 1.414l-4.707-4.707h-4.5859a1.0001 1.0001 0 1 1 0 -2h4.5859l4.707-4.707a1.0001 1.0001 0 0 1 0.7168 -0.3028z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vecs_to_xform.svg b/editor/icons/dark/icon_graph_vecs_to_xform.svg
new file mode 100644
index 0000000000..8bd533fbf0
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vecs_to_xform.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientTransform="translate(.00074682 1038.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#b8ea68" offset="0"/>
+<stop stop-color="#e3383d" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path d="m1.991 1039.4a1.0001 1.0001 0 0 0 -0.69726 1.7168l3.293 3.293h-2.5859a1.0001 1.0001 0 1 0 0 2h2.5859l-3.293 3.293a1.0001 1.0001 0 1 0 1.4141 1.414l4.707-4.707h4.5859a1.0001 1.0001 0 1 0 0 -2h-4.5859l-4.707-4.707a1.0001 1.0001 0 0 0 -0.7168 -0.3028z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vector.svg b/editor/icons/dark/icon_graph_vector.svg
new file mode 100644
index 0000000000..81772fa4f5
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vector.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m8 1038.4v2h-5v2h5v2l3-3zm-3.6562 5.6289-1.7148 1.0293 0.51367 0.8574 3 5c0.3885 0.647 1.3263 0.647 1.7148 0l3-5 0.51367-0.8574-1.7148-1.0293-0.51367 0.8574-2.1426 3.5703-2.1426-3.5703z" color="#000000" color-rendering="auto" fill="#b8ea68" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_vector_uniform.svg b/editor/icons/dark/icon_graph_vector_uniform.svg
new file mode 100644
index 0000000000..66f31bf5dd
--- /dev/null
+++ b/editor/icons/dark/icon_graph_vector_uniform.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm6 0 3 3-3 3v-2h-5v-2h5zm-3.6562 5.6289 0.51367 0.85742 2.1426 3.5703 2.1426-3.5703 0.51367-0.85742l1.7148 1.0293-0.51367 0.85742-3 5c-0.3885 0.64706-1.3263 0.64706-1.7148 0l-3-5-0.51367-0.85742z" fill="#b8ea68"/>
+<path transform="translate(0 1038.4)" d="m23 0v2h-5v2h5v2l3-3zm-3.6562 5.6289-1.7148 1.0293 0.51367 0.85742 3 5c0.3885 0.64706 1.3263 0.64706 1.7148 0l3-5 0.51367-0.85742-1.7148-1.0293-0.51367 0.85742-2.1426 3.5703-2.1426-3.5703z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform.svg b/editor/icons/dark/icon_graph_xform.svg
new file mode 100644
index 0000000000..0554285612
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<rect x="1" y="1039.4" width="1" height="12" fill="#e3383d"/>
+<rect x="1" y="1039.4" width="3" height="1" fill="#e3383d"/>
+<rect x="1" y="1050.4" width="3" height="1" fill="#e3383d"/>
+<rect x="10" y="1050.4" width="3" height="1" fill="#e3383d"/>
+<rect x="10" y="1039.4" width="3" height="1" fill="#e3383d"/>
+<rect x="12" y="1039.4" width="1" height="12" fill="#e3383d"/>
+<path d="m4 1049.4v-7l3 3 3-3v7" fill="none" stroke="#e3383d" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform_mult.svg b/editor/icons/dark/icon_graph_xform_mult.svg
new file mode 100644
index 0000000000..0e2da7f7c0
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform_mult.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m1 1049.4v-7l2 3 2-3v7" fill="none" stroke="#e3383d" stroke-linejoin="round" stroke-width="2"/>
+<path d="m9 1049.4v-7l2 3 2-3v7" fill="none" stroke="#e3383d" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1045.4" r="1" fill="#e3383d"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform_scalar_func.svg b/editor/icons/dark/icon_graph_xform_scalar_func.svg
new file mode 100644
index 0000000000..350d9e98d7
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform_scalar_func.svg
@@ -0,0 +1,10 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<rect x="6" y="1042.4" width="2" height="5"/>
+<path transform="translate(0 1038.4)" d="m9.0703 1a3 3 0 0 0 -1.5703 0.40234 3 3 0 0 0 -1.5 2.5977h2a1 1 0 0 1 1 -1 1 1 0 0 1 1 1h2a3 3 0 0 0 -1.5 -2.5977 3 3 0 0 0 -1.4297 -0.40234z"/>
+<rect x="10" y="1042.4" width="2" height="1"/>
+<path transform="translate(0 1038.4)" d="m2 10a3 3 0 0 0 1.5 2.5977 3 3 0 0 0 3 0 3 3 0 0 0 1.5 -2.5977h-2a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1h-2z"/>
+<rect transform="scale(1,-1)" x="6" y="-1048.4" width="2" height="1"/>
+<rect x="4" y="1044.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform_to_vecs.svg b/editor/icons/dark/icon_graph_xform_to_vecs.svg
new file mode 100644
index 0000000000..6fb5953b95
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform_to_vecs.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientTransform="matrix(-1 0 0 1 14 1038.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#b8ea68" offset="0"/>
+<stop stop-color="#e3383d" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path d="m12.01 1039.4a1.0001 1.0001 0 0 1 0.69726 1.7168l-3.293 3.293h2.5859a1.0001 1.0001 0 1 1 0 2h-2.5859l3.293 3.293a1.0001 1.0001 0 1 1 -1.4141 1.414l-4.707-4.707h-4.5859a1.0001 1.0001 0 1 1 0 -2h4.5859l4.707-4.707a1.0001 1.0001 0 0 1 0.7168 -0.3028z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform_uniform.svg b/editor/icons/dark/icon_graph_xform_uniform.svg
new file mode 100644
index 0000000000..9fd8eca5b0
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm-1 1h1 2v1h-2v10h2v1h-2-1v-1-10-1zm9 0h3v11 1h-3v-1h2v-10h-2v-1zm-0.029297 2a1.0001 1.0001 0 0 1 1.0293 1v7h-2v-4.5859l-1.293 1.293a1.0001 1.0001 0 0 1 -1.4141 0l-1.293-1.293v4.5859h-2v-7a1.0001 1.0001 0 0 1 0.98438 -0.99805 1.0001 1.0001 0 0 1 0.72266 0.29102l2.293 2.293 2.293-2.293a1.0001 1.0001 0 0 1 0.67773 -0.29297z" fill="#e3383d"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform_vec_func.svg b/editor/icons/dark/icon_graph_xform_vec_func.svg
new file mode 100644
index 0000000000..29bff80cd5
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform_vec_func.svg
@@ -0,0 +1,10 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#b8ea68">
+<rect x="6" y="1042.4" width="2" height="5"/>
+<path transform="translate(0 1038.4)" d="m9.0703 1a3 3 0 0 0 -1.5703 0.40234 3 3 0 0 0 -1.5 2.5977h2a1 1 0 0 1 1 -1 1 1 0 0 1 1 1h2a3 3 0 0 0 -1.5 -2.5977 3 3 0 0 0 -1.4297 -0.40234z"/>
+<rect x="10" y="1042.4" width="2" height="1"/>
+<path transform="translate(0 1038.4)" d="m2 10a3 3 0 0 0 1.5 2.5977 3 3 0 0 0 3 0 3 3 0 0 0 1.5 -2.5977h-2a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1h-2z"/>
+<rect transform="scale(1,-1)" x="6" y="-1048.4" width="2" height="1"/>
+<rect x="4" y="1044.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform_vec_imult.svg b/editor/icons/dark/icon_graph_xform_vec_imult.svg
new file mode 100644
index 0000000000..39d0ea4646
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform_vec_imult.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m1 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1046.4" r="1" fill="#b8ea68"/>
+<path d="m9 1049.4v-7l2 3 2-3v7" fill="none" stroke="#e3383d" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_graph_xform_vec_mult.svg b/editor/icons/dark/icon_graph_xform_vec_mult.svg
new file mode 100644
index 0000000000..5f59622855
--- /dev/null
+++ b/editor/icons/dark/icon_graph_xform_vec_mult.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m9 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1046.4" r="1" fill="#b8ea68"/>
+<path d="m1 1049.4v-7l2 3 2-3v7" fill="none" stroke="#e3383d" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_grid.svg b/editor/icons/dark/icon_grid.svg
new file mode 100644
index 0000000000..b4c7be4678
--- /dev/null
+++ b/editor/icons/dark/icon_grid.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 10 2h2 12v-2-12h-12-2zm2 2h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_grid_container.svg b/editor/icons/dark/icon_grid_container.svg
new file mode 100644
index 0000000000..c16949a03a
--- /dev/null
+++ b/editor/icons/dark/icon_grid_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_grid_map.svg b/editor/icons/dark/icon_grid_map.svg
new file mode 100644
index 0000000000..a84cdf9994
--- /dev/null
+++ b/editor/icons/dark/icon_grid_map.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1-6 3v8l6 3 6-3v-2l-2-1-4 2-2-1v-4l2-1v-2l2-1zm4 2-2 1v2l2 1 2-1v-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_groove_joint_2d.svg b/editor/icons/dark/icon_groove_joint_2d.svg
new file mode 100644
index 0000000000..a84c735300
--- /dev/null
+++ b/editor/icons/dark/icon_groove_joint_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1037.4h-5v6h-5v2h5v6h5zm-7 0h-7v14h7v-4h-5v-6h5z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_group.svg b/editor/icons/dark/icon_group.svg
new file mode 100644
index 0000000000..324de52572
--- /dev/null
+++ b/editor/icons/dark/icon_group.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v6h-6v8h8v-6h6v-8zm2 2h4v4h-4z" fill="#4f4f4f" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m1 1v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm12 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm-12 12v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0zm12 0v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0z" fill="#000000"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_groups.svg b/editor/icons/dark/icon_groups.svg
new file mode 100644
index 0000000000..cb94b0e4d3
--- /dev/null
+++ b/editor/icons/dark/icon_groups.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1040.4" width="14" height="8" fill="none" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+<ellipse cx="5" cy="1044.4" rx="2" ry="2" fill="#4f4f4f"/>
+<ellipse cx="11" cy="1044.4" rx="2" ry="2" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_gui_close.svg b/editor/icons/dark/icon_gui_close.svg
new file mode 100644
index 0000000000..822c59653e
--- /dev/null
+++ b/editor/icons/dark/icon_gui_close.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.7578 2.3438l-1.4141 1.4141 4.2422 4.2422-4.2422 4.2422 1.4141 1.4141 4.2422-4.2422 4.2422 4.2422 1.4141-1.4141-4.2422-4.2422 4.2422-4.2422-1.4141-1.4141-4.2422 4.2422-4.2422-4.2422z" fill="#000000" fill-opacity=".89804"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_h_box_container.svg b/editor/icons/dark/icon_h_box_container.svg
new file mode 100644
index 0000000000..b42fb42236
--- /dev/null
+++ b/editor/icons/dark/icon_h_box_container.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<rect x="5" y="1039.4" width="2" height="10"/>
+<rect x="9" y="1039.4" width="2" height="10"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_h_button_array.svg b/editor/icons/dark/icon_h_button_array.svg
new file mode 100644
index 0000000000..99888a9c02
--- /dev/null
+++ b/editor/icons/dark/icon_h_button_array.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1v3.1328l-1.4453-0.96484-1.1094 1.6641 3 2c0.3359 0.2239 0.77347 0.2239 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-3.1328h-2zm8 4v2h-2v2h2v2h2v-2h2v-2h-2v-2h-2zm-8.5 4c-0.831 0-1.5 0.669-1.5 1.5v0.5 1h-1v2h8v-2h-1v-1-0.5c0-0.831-0.669-1.5-1.5-1.5h-3z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_h_scroll_bar.svg b/editor/icons/dark/icon_h_scroll_bar.svg
new file mode 100644
index 0000000000..69da81e86f
--- /dev/null
+++ b/editor/icons/dark/icon_h_scroll_bar.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1041.4c0-1.108-0.892-2-2-2h-10c-1.108 0-2 0.892-2 2v6c0 1.108 0.892 2 2 2h10c1.108 0 2-0.892 2-2zm-1 2.9883a1.0001 1.0001 0 0 1 -0.168 0.5664l-2 3a1.0001 1.0001 0 1 1 -1.664 -1.1094l1.6289-2.4453-1.6289-2.4453a1.0001 1.0001 0 1 1 1.664 -1.1094l2 3a1.0001 1.0001 0 0 1 0.168 0.543zm-7.9922-2.9981a1.0001 1.0001 0 0 1 -0.1758 0.5645l-1.6308 2.4453 1.6308 2.4453a1.0001 1.0001 0 1 1 -1.664 1.1094l-2-3a1.0001 1.0001 0 0 1 0 -1.1094l2-3a1.0001 1.0001 0 0 1 1.8398 0.5449z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_h_separator.svg b/editor/icons/dark/icon_h_separator.svg
new file mode 100644
index 0000000000..8b6f12a5aa
--- /dev/null
+++ b/editor/icons/dark/icon_h_separator.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<rect x="5" y="1038.4" width="6" height="3"/>
+<rect transform="matrix(0,-1,-1,0,0,0)" x="-1045.4" y="-15" width="2" height="14"/>
+<rect x="5" y="1047.4" width="6" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_h_slider.svg b/editor/icons/dark/icon_h_slider.svg
new file mode 100644
index 0000000000..8c34f93206
--- /dev/null
+++ b/editor/icons/dark/icon_h_slider.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 3c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1s1-0.44772 1-1v-2c0-0.55228-0.44772-1-1-1zm12 0c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1s1-0.44772 1-1v-2c0-0.55228-0.44772-1-1-1zm-6 1c-0.55228 0-1 0.44772-1 1s0.44772 1 1 1 1-0.44772 1-1-0.44772-1-1-1zm5 5c-1.1046 0-2 0.89543-2 2 0 1.1046 0.89543 2 2 2 1.0099-3.37e-4 1.8611-0.75351 1.9844-1.7559 0.04003-0.16104 0.03936-0.32952-2e-3 -0.49024-0.12404-1.0008-0.97388-1.7527-1.9824-1.7539zm-11 1c-1.3523-0.019125-1.3523 2.0191 0 2h7.1309c-0.085635-0.32648-0.1296-0.66248-0.13086-1 0.00189-0.3376 0.046518-0.67361 0.13281-1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#29d739" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_h_split_container.svg b/editor/icons/dark/icon_h_split_container.svg
new file mode 100644
index 0000000000..7ca7c5567f
--- /dev/null
+++ b/editor/icons/dark/icon_h_split_container.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<rect x="7" y="1039.4" width="2" height="10"/>
+<path d="m9 1042.4v4l2-2z"/>
+<path d="m7 1042.4-2 2 2 2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_h_t_t_p_request.svg b/editor/icons/dark/icon_h_t_t_p_request.svg
new file mode 100644
index 0000000000..115d88bae8
--- /dev/null
+++ b/editor/icons/dark/icon_h_t_t_p_request.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m1 10v2 1 2h1v-2h1v2h1v-5h-1v2h-1v-2h-1zm4 0v1h1v4h1v-4h1v-1h-3zm4 0v1h1v4h1v-4h1v-1h-3zm4 0v2 1 2h1v-2h1 1v-1-2h-2-1zm1 1h1v1h-1v-1z"/>
+<path transform="translate(0 1036.4)" d="m4 1l-3 4h2v3h2v-3h2l-3-4zm7 0v3h-2l3 4 3-4h-2v-3h-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_headphones.svg b/editor/icons/dark/icon_headphones.svg
new file mode 100644
index 0000000000..f0c0fd8812
--- /dev/null
+++ b/editor/icons/dark/icon_headphones.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m1 1046.4v3h2v2h2v-5h-4z"/>
+<path d="m11 1046.4v5h2v-2h2v-3h-4z"/>
+<path d="m8 1037.4a7 7 0 0 0 -7 7h2a5 5 0 0 1 5 -5 5 5 0 0 1 5 5h2a7 7 0 0 0 -7 -7z"/>
+<rect x="1" y="1044.4" width="2" height="2"/>
+<rect x="13" y="1044.4" width="2" height="2"/>
+<circle cx="3" cy="1049.4" r="2"/>
+<circle transform="scale(-1,1)" cx="-13" cy="1049.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_help.svg b/editor/icons/dark/icon_help.svg
new file mode 100644
index 0000000000..3c294f92b6
--- /dev/null
+++ b/editor/icons/dark/icon_help.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5.0293 1c-0.99969-0.010925-2.0096 0.31165-3.0293 1v7c2.0172-1.3529 4.0167-1.3136 6 0 1.9833-1.3136 3.9828-1.3529 6 0v-7c-1.0197-0.68835-2.0296-1.0109-3.0293-1-0.6613 0.007227-1.3175 0.1735-1.9707 0.46289v4.5371h-1v-4c-0.98156-0.64465-1.971-0.98908-2.9707-1zm-5.0293 9v6h2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3h-2zm5 3a3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3 3 3 0 0 0 -3 3zm6 0a3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h1v-2h-1a3 3 0 0 0 -3 3zm-9-1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#4f4f4f" fill-opacity=".58824" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_help_search.svg b/editor/icons/dark/icon_help_search.svg
new file mode 100644
index 0000000000..2fea4e2b7d
--- /dev/null
+++ b/editor/icons/dark/icon_help_search.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" stroke-width="2">
+<path transform="translate(0 1036.4)" d="m0 10v6h2c1.6569 0 3-1.3431 3-3s-1.3431-3-3-3zm5 3c0 1.6569 1.3431 3 3 3s3-1.3431 3-3-1.3431-3-3-3-3 1.3431-3 3zm6 0c0 1.6569 1.3431 3 3 3h1v-2h-1c-0.55228-1e-5 -0.99999-0.44772-1-1 1e-5 -0.55228 0.44772-0.99999 1-1h1v-2h-1c-1.6569 0-3 1.3431-3 3zm-9-1c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1zm6 0c0.55228 1e-5 0.99999 0.44772 1 1-9.6e-6 0.55228-0.44772 0.99999-1 1-0.55228-1e-5 -0.99999-0.44772-1-1 9.6e-6 -0.55228 0.44772-0.99999 1-1z" fill="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549"/>
+<path d="m9 1036.4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549"/>
+<path d="m7 1042.4-3 3" fill="none" stroke="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_hidden.svg b/editor/icons/dark/icon_hidden.svg
new file mode 100644
index 0000000000..e726d8863e
--- /dev/null
+++ b/editor/icons/dark/icon_hidden.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2.9609 7.7266l-1.9219 0.54883c0.31999 1.12 0.8236 2.0593 1.4316 2.8398l-0.83398 0.83398 1.4141 1.4141 0.84375-0.84375c0.98585 0.74762 2.0766 1.2067 3.1055 1.3867v1.0938h2v-1.0938c1.0288-0.17998 2.1196-0.6391 3.1055-1.3867l0.84375 0.84375 1.4141-1.4141-0.83398-0.83398c0.60804-0.78055 1.1117-1.7199 1.4316-2.8398l-1.9219-0.54883c-0.8756 3.0646-3.5391 4.2734-5.0391 4.2734s-4.1635-1.2088-5.0391-4.2734z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_hinge_joint.svg b/editor/icons/dark/icon_hinge_joint.svg
new file mode 100644
index 0000000000..b7eddfe22b
--- /dev/null
+++ b/editor/icons/dark/icon_hinge_joint.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.2832 1.3281a1.0001 1.0001 0 0 0 -0.88086 0.51172l-3.6895 6.3906c0.40599-0.13877 0.83411-0.23047 1.2871-0.23047 0.37043 0 0.72206 0.067873 1.0625 0.16211l3.0723-5.3223a1.0001 1.0001 0 0 0 -0.85156 -1.5117zm-3.2832 7.6719a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h10a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-7.1738a3 3 0 0 0 0.17383 -1 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_history.svg b/editor/icons/dark/icon_history.svg
new file mode 100644
index 0000000000..03c0f199d4
--- /dev/null
+++ b/editor/icons/dark/icon_history.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m9 2a6 6 0 0 0 -6 6h2a4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -4 4v2a6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z"/>
+<path transform="matrix(0 -1.1926 1.5492 0 -1617 1049.3)" d="m4.118 1048.3-1.6771-0.9683-1.6771-0.9682 1.6771-0.9683 1.6771-0.9682-1e-7 1.9365z"/>
+<rect x="8" y="1041.4" width="2" height="4"/>
+<rect x="8" y="1043.4" width="4" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_hsize.svg b/editor/icons/dark/icon_hsize.svg
new file mode 100644
index 0000000000..0b5e1c15bb
--- /dev/null
+++ b/editor/icons/dark/icon_hsize.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 7v-2l-3 3 3 3v-2h8v2l3-3-3-3v2z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_image.svg b/editor/icons/dark/icon_image.svg
new file mode 100644
index 0000000000..6a01dd6138
--- /dev/null
+++ b/editor/icons/dark/icon_image.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-12a1 1 0 0 0 -1 -1h-12zm1 2h10v8h-10v-8zm6 2l-1.5 2.5-0.70117 1.168-0.099609-0.16797-0.89844-1.5-0.90039 1.5-0.90039 1.5h1.8008 0.19922 1.5996 1.4004 3l-1.5-2.5-1.5-2.5z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_image_texture.svg b/editor/icons/dark/icon_image_texture.svg
new file mode 100644
index 0000000000..8805df28b9
--- /dev/null
+++ b/editor/icons/dark/icon_image_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-12a1 1 0 0 0 -1 -1h-12zm1 2h10v8h-10v-8zm6 2v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-2h-1v-1h-1z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_immediate_geometry.svg b/editor/icons/dark/icon_immediate_geometry.svg
new file mode 100644
index 0000000000..60b0f8ea36
--- /dev/null
+++ b/editor/icons/dark/icon_immediate_geometry.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2.9208 1046.4c-0.26373 0.3-0.4204 0.7296-0.4204 1.2383 0 1.6277-3.1381-0.1781-0.33757 2.6703 0.88382 0.899 2.6544 0.6701 3.5382-0.2288 0.88384-0.899 0.88382-2.3565 0-3.2554-1.1002-1.1191-2.2001-1.0845-2.7803-0.4244zm2.3802-1.6103 2.4005 2.4416 6.8014-6.9177c0.66286-0.6742 0.66286-1.7673 0-2.4415-0.66288-0.6741-1.7376-0.6741-2.4005 0z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_import_check.svg b/editor/icons/dark/icon_import_check.svg
new file mode 100644
index 0000000000..758572899a
--- /dev/null
+++ b/editor/icons/dark/icon_import_check.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1044.4 4 4 8-8" fill="none" stroke="#00f010" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_import_fail.svg b/editor/icons/dark/icon_import_fail.svg
new file mode 100644
index 0000000000..f7179e1e90
--- /dev/null
+++ b/editor/icons/dark/icon_import_fail.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2.9902 1.9902a1.0001 1.0001 0 0 0 -0.69727 1.7168l4.293 4.293-4.293 4.293a1.0001 1.0001 0 1 0 1.4141 1.4141l4.293-4.293 4.293 4.293a1.0001 1.0001 0 1 0 1.4141 -1.4141l-4.293-4.293 4.293-4.293a1.0001 1.0001 0 0 0 -0.72656 -1.7148 1.0001 1.0001 0 0 0 -0.6875 0.30078l-4.293 4.293-4.293-4.293a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" fill="#ff4040" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_instance.svg b/editor/icons/dark/icon_instance.svg
new file mode 100644
index 0000000000..46446b617f
--- /dev/null
+++ b/editor/icons/dark/icon_instance.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1047.4 6-6" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+<path transform="translate(0 1036.4)" d="m11 1c-2.1973 0-4 1.8027-4 4 0 0.35477 0.062329 0.69321 0.15039 1.0215l2.3945-2.3945c0.36302-0.38506 0.87563-0.62695 1.4551-0.62695 1.1164 0 2 0.8836 2 2 0 0.57388-0.23667 1.0829-0.61523 1.4453l-2.4043 2.4043c0.32773 0.087749 0.66541 0.15039 1.0195 0.15039 2.1973 0 4-1.8027 4-4s-1.8027-4-4-4zm-6 6c-2.1973 0-4 1.8027-4 4s1.8027 4 4 4 4-1.8027 4-4c0-0.35412-0.062641-0.6918-0.15039-1.0195l-2.4043 2.4043c-0.36245 0.37857-0.87143 0.61523-1.4453 0.61523-1.1164 0-2-0.8836-2-2 0-0.57944 0.24189-1.0921 0.62695-1.4551l2.3945-2.3945c-0.32827-0.088062-0.66671-0.15039-1.0215-0.15039z" color="#000000" color-rendering="auto" fill="#4f4f4f" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_instance_options.svg b/editor/icons/dark/icon_instance_options.svg
new file mode 100644
index 0000000000..50444dab54
--- /dev/null
+++ b/editor/icons/dark/icon_instance_options.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m1 7v6c0 1.1046 0.89543 2 2 2h12v-8h-14zm4 2h6l-3 4-3-4z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_integer.svg b/editor/icons/dark/icon_integer.svg
new file mode 100644
index 0000000000..bcd952f635
--- /dev/null
+++ b/editor/icons/dark/icon_integer.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<rect x="6" y="1040.4" width="2" height="10"/>
+<rect x="4" y="1039.4" width="6" height="2"/>
+<rect x="4" y="1049.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_interp_cubic.svg b/editor/icons/dark/icon_interp_cubic.svg
new file mode 100644
index 0000000000..35726ce1e9
--- /dev/null
+++ b/editor/icons/dark/icon_interp_cubic.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4c3 0 3-4 6-4s3 4 6 4" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_interp_linear.svg b/editor/icons/dark/icon_interp_linear.svg
new file mode 100644
index 0000000000..adc3d8212b
--- /dev/null
+++ b/editor/icons/dark/icon_interp_linear.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4 6-4 6 4" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_interp_raw.svg b/editor/icons/dark/icon_interp_raw.svg
new file mode 100644
index 0000000000..46b8b86467
--- /dev/null
+++ b/editor/icons/dark/icon_interp_raw.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4h3v-4h6v4h3" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_interp_wrap_clamp.svg b/editor/icons/dark/icon_interp_wrap_clamp.svg
new file mode 100644
index 0000000000..699266a7c0
--- /dev/null
+++ b/editor/icons/dark/icon_interp_wrap_clamp.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect x="1" y="1045.4" width="2" height="6" rx="1.7383e-5" ry="1.7383e-5" fill="#4f4f4f"/>
+<rect x="13" y="1045.4" width="2" height="6" rx="1.7383e-5" ry="1.7383e-5" fill="#4f4f4f"/>
+<path d="m5 1048.4h6" fill="none" stroke="#4f4f4f" stroke-width="2"/>
+<path d="m6 1046.4-2 2 2 2" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m10 1046.4 2 2-2 2" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_interp_wrap_loop.svg b/editor/icons/dark/icon_interp_wrap_loop.svg
new file mode 100644
index 0000000000..a537d02cb4
--- /dev/null
+++ b/editor/icons/dark/icon_interp_wrap_loop.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)" fill="#4f4f4f">
+<path transform="translate(0 1044.4)" d="m12 1v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3z"/>
+<path transform="translate(0 1044.4)" d="m4 1a3 3 0 0 0 -3 3 3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1v-2z"/>
+<rect x="9" y="1045.4" width="3" height="2" rx="6.5185e-6" ry="1.7383e-5"/>
+<rect x="4" y="1049.4" width="3" height="2" rx="6.5185e-6" ry="1.7383e-5"/>
+<path d="m7 1048.4v4l3-2z" fill-rule="evenodd"/>
+<path d="m9 1044.4v4l-3-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_interpolated_camera.svg b/editor/icons/dark/icon_interpolated_camera.svg
new file mode 100644
index 0000000000..4627633dde
--- /dev/null
+++ b/editor/icons/dark/icon_interpolated_camera.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 0a3 3 0 0 0 -2.9883 2.7773 3 3 0 0 0 -2.0117 -0.77734 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8242v2.1758c0 0.554 0.44599 1 1 1h6c0.55401 0 1-0.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1 -2.2305 3 3 0 0 0 -3 -3zm-6 12v4h1v-4h-1zm3 0v4h1v-1h1a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1-1zm5 0a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h1a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-1zm-4 1h1v1h-1v-1zm4 0h1v2h-1v-2z" fill="#ff5f5f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_invalid_key.svg b/editor/icons/dark/icon_invalid_key.svg
new file mode 100644
index 0000000000..0ff88aa9ee
--- /dev/null
+++ b/editor/icons/dark/icon_invalid_key.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m0.46447 1046.2 2.1213 2.1213-2.1213 2.1213 1.4142 1.4142l2.1213-2.1213 2.1213 2.1213 1.4142-1.4142-2.1213-2.1213 2.1213-2.1213-1.4142-1.4142-2.1213 2.1213-2.1213-2.1213-1.4142 1.4142z" fill="#ff4040"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_inverse_kinematics.svg b/editor/icons/dark/icon_inverse_kinematics.svg
new file mode 100644
index 0000000000..724d98a6f0
--- /dev/null
+++ b/editor/icons/dark/icon_inverse_kinematics.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1039.4v12" fill="none" stroke="#ff5f5f" stroke-width="2"/>
+<circle cx="3" cy="1039.4" r="2" fill="#ff5f5f"/>
+<path d="m10 1039.4h-7" fill="#ff5f5f" fill-rule="evenodd" stroke="#ff5f5f" stroke-width="2"/>
+<circle cx="11" cy="1039.4" r="2" fill="#ff5f5f"/>
+<rect x="8" y="1044.4" width="6" height="2" fill="#ff5f5f"/>
+<path d="m11 1039.4v6" fill="none" stroke="#ff5f5f" stroke-width="2"/>
+<path d="m10 1046.4v4l-3-2 1-2z" fill="#ff5f5f" fill-rule="evenodd"/>
+<path d="m12 1046.4v4l3-2-1-2z" fill="#ff5f5f" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_item_list.svg b/editor/icons/dark/icon_item_list.svg
new file mode 100644
index 0000000000..d5de68a6bf
--- /dev/null
+++ b/editor/icons/dark/icon_item_list.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<rect x="4" y="1040.4" width="2" height="2"/>
+<rect x="7" y="1040.4" width="2" height="2"/>
+<rect x="10" y="1040.4" width="2" height="2"/>
+<rect x="4" y="1043.4" width="2" height="2"/>
+<rect x="7" y="1043.4" width="2" height="2"/>
+<rect x="10" y="1043.4" width="2" height="2"/>
+<rect x="4" y="1046.4" width="2" height="2"/>
+<rect x="7" y="1046.4" width="2" height="2"/>
+<rect x="10" y="1046.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_joy_axis.svg b/editor/icons/dark/icon_joy_axis.svg
new file mode 100644
index 0000000000..e1d9171dbe
--- /dev/null
+++ b/editor/icons/dark/icon_joy_axis.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="27" y="1038.4" width="7" height="14" fill="#000000" fill-opacity=".99608"/>
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h12v-14h-12zm4 2h2a1 1 0 0 1 1 1v2h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-2h-2a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1h2v-2a1 1 0 0 1 1 -1z" fil#4f4f4f0e0" fill-opacity=".99608"/>
+<circle cx="8" cy="1044.4" r="1" fil#4f4f4f0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_joy_button.svg b/editor/icons/dark/icon_joy_button.svg
new file mode 100644
index 0000000000..fd7ca29b77
--- /dev/null
+++ b/editor/icons/dark/icon_joy_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".99608">
+<rect x="27" y="1038.4" width="7" height="14" fill="#000000"/>
+<path transform="translate(0 1036.4)" d="m1 1v14h12c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-12zm7 1a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-4 4a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm8 0a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-4 4a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fil#4f4f4f0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_joypad.svg b/editor/icons/dark/icon_joypad.svg
new file mode 100644
index 0000000000..a6d739c31b
--- /dev/null
+++ b/editor/icons/dark/icon_joypad.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 3c-0.55226 5.52e-5 -0.99994 0.44774-1 1v8c5.52e-5 0.55226 0.44774 0.99994 1 1h14c0.55226-5.5e-5 0.99994-0.44774 1-1v-8c-5.5e-5 -0.55226-0.44774-0.99994-1-1h-14zm2 2h2v2h2v2h-2v2h-2v-2h-2v-2h2v-2zm10.5 0a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1 -1.5 1.5 1.5 1.5 0 0 1 -1.5 -1.5 1.5 1.5 0 0 1 1.5 -1.5zm-3 3a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1 -1.5 1.5 1.5 1.5 0 0 1 -1.5 -1.5 1.5 1.5 0 0 1 1.5 -1.5z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_key.svg b/editor/icons/dark/icon_key.svg
new file mode 100644
index 0000000000..a6fb20d1ef
--- /dev/null
+++ b/editor/icons/dark/icon_key.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m11 4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z"/>
+<rect x="1" y="1043.4" width="8" height="2"/>
+<rect x="2" y="1045.4" width="3" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_key_hover.svg b/editor/icons/dark/icon_key_hover.svg
new file mode 100644
index 0000000000..c38951eae0
--- /dev/null
+++ b/editor/icons/dark/icon_key_hover.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#000000"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_key_invalid.svg b/editor/icons/dark/icon_key_invalid.svg
new file mode 100644
index 0000000000..0ff88aa9ee
--- /dev/null
+++ b/editor/icons/dark/icon_key_invalid.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m0.46447 1046.2 2.1213 2.1213-2.1213 2.1213 1.4142 1.4142l2.1213-2.1213 2.1213 2.1213 1.4142-1.4142-2.1213-2.1213 2.1213-2.1213-1.4142-1.4142-2.1213 2.1213-2.1213-2.1213-1.4142 1.4142z" fill="#ff4040"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_key_next.svg b/editor/icons/dark/icon_key_next.svg
new file mode 100644
index 0000000000..f3ff31f8f9
--- /dev/null
+++ b/editor/icons/dark/icon_key_next.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m11 9v2h-2v2h2v2h2v-2h2v-2h-2v-2h-2z" fill="#00f010"/>
+<path transform="translate(0 1036.4)" d="m11 1a4 4 0 0 0 -3.8691 3h-6.1309v2h1v2h3v-2h2.1328a4 4 0 0 0 2.8672 2.8691v-0.86914h3.6387a4 4 0 0 0 1.3613 -3 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_key_selected.svg b/editor/icons/dark/icon_key_selected.svg
new file mode 100644
index 0000000000..9d16649c67
--- /dev/null
+++ b/editor/icons/dark/icon_key_selected.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#5caeff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_key_value.svg b/editor/icons/dark/icon_key_value.svg
new file mode 100644
index 0000000000..7309f498dd
--- /dev/null
+++ b/editor/icons/dark/icon_key_value.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_key_xform.svg b/editor/icons/dark/icon_key_xform.svg
new file mode 100644
index 0000000000..6161195b33
--- /dev/null
+++ b/editor/icons/dark/icon_key_xform.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#e3383d"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_keyboard.svg b/editor/icons/dark/icon_keyboard.svg
new file mode 100644
index 0000000000..c8d0d6d4b9
--- /dev/null
+++ b/editor/icons/dark/icon_keyboard.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m1 4v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-1v9a0.99998 0.99998 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-9h-1z" fill="#4f4f4f"/>
+<rect x="27" y="1038.4" width="7" height="14" fill="#000000"/>
+<path transform="translate(0 1036.4)" d="m4 2a1 1 0 0 0 -1 1v9.084a1 0.91667 0 0 0 1 0.91602h8a1 0.91667 0 0 0 1 -0.91602v-9.084a1 1 0 0 0 -1 -1h-8zm1 2h2v3l2-3h2l-2 3 2 4h-2l-2-4v4h-2v-7z" fil#4f4f4f0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_kinematic_body.svg b/editor/icons/dark/icon_kinematic_body.svg
new file mode 100644
index 0000000000..a2c85ab7d0
--- /dev/null
+++ b/editor/icons/dark/icon_kinematic_body.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 4v1h1v-1h-1zm1 1v1h-1v1h-1v1h-1v1 2h1v-2h1v1 1h1v-1h5v1h1v-2h1v2h1v-2-1h-1v-1h-1v-1h-1v-1h-1v1h-3v-1h-1zm5 0h1v-1h-1v1zm0 6h-2v1h2v-1zm-5 0v1h2v-1h-2zm0-4h1v1h-1v-1zm4 0h1v1h-1v-1z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_kinematic_body_2d.svg b/editor/icons/dark/icon_kinematic_body_2d.svg
new file mode 100644
index 0000000000..c32e0318fa
--- /dev/null
+++ b/editor/icons/dark/icon_kinematic_body_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 4v1h1v-1h-1zm1 1v1h-1v1h-1v1h-1v1 2h1v-2h1v1 1h1v-1h5v1h1v-2h1v2h1v-2-1h-1v-1h-1v-1h-1v-1h-1v1h-3v-1h-1zm5 0h1v-1h-1v1zm0 6h-2v1h2v-1zm-5 0v1h2v-1h-2zm0-4h1v1h-1v-1zm4 0h1v1h-1v-1z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_label.svg b/editor/icons/dark/icon_label.svg
new file mode 100644
index 0000000000..0142250c0a
--- /dev/null
+++ b/editor/icons/dark/icon_label.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 3a1.0001 1.0001 0 0 0 -0.70703 0.29297l-4 4a1.0001 1.0001 0 0 0 0 1.4141l4 4a1.0001 1.0001 0 0 0 0.70703 0.29297h8a1.0001 1.0001 0 0 0 1 -1v-8a1.0001 1.0001 0 0 0 -1 -1h-8zm-1 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" color="#000000" color-rendering="auto" fill="#29d739" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_large_texture.svg b/editor/icons/dark/icon_large_texture.svg
new file mode 100644
index 0000000000..0bb85cbc23
--- /dev/null
+++ b/editor/icons/dark/icon_large_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v1 2h1v-2h2v-1h-3zm11 0v1h2v2h1v-3h-3zm-3 5v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-1-1h-1v-1h-1zm-8 6v2 1h3v-1h-2v-2h-1zm13 0v2h-2v1h3v-1-2h-1z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_light_2d.svg b/editor/icons/dark/icon_light_2d.svg
new file mode 100644
index 0000000000..814b2325f4
--- /dev/null
+++ b/editor/icons/dark/icon_light_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a5 5 0 0 0 -5 5 5 5 0 0 0 3 4.5762v2.4238h4v-2.4199a5 5 0 0 0 3 -4.5801 5 5 0 0 0 -5 -5zm0 2a3 3 0 0 1 3 3 3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3zm-1 11v1h2v-1h-2z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_light_occluder_2d.svg b/editor/icons/dark/icon_light_occluder_2d.svg
new file mode 100644
index 0000000000..71099c655b
--- /dev/null
+++ b/editor/icons/dark/icon_light_occluder_2d.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#6d90ff" fill-opacity=".98824">
+<rect x="1" y="1039.4" width="14" height="2"/>
+<rect x="1" y="1042.4" width="14" height="2"/>
+<rect x="1" y="1045.4" width="14" height="2"/>
+<rect x="1" y="1048.4" width="14" height="2"/>
+<rect x="2" y="1037.4" width="1" height="14"/>
+<rect x="13" y="1037.4" width="1" height="14"/>
+<rect x="1" y="1037.4" width="14" height=".99998"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_line_2d.svg b/editor/icons/dark/icon_line_2d.svg
new file mode 100644
index 0000000000..319d6bdea7
--- /dev/null
+++ b/editor/icons/dark/icon_line_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1045.4 3 4 3-10 3 6 3-2" fill="none" stroke="#6d90ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_line_edit.svg b/editor/icons/dark/icon_line_edit.svg
new file mode 100644
index 0000000000..0daf666e27
--- /dev/null
+++ b/editor/icons/dark/icon_line_edit.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m1 11c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2h-2-10-2z"/>
+<rect x="2" y="1040.4" width="2" height="5"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_line_shape_2d.svg b/editor/icons/dark/icon_line_shape_2d.svg
new file mode 100644
index 0000000000..f6c036bb2e
--- /dev/null
+++ b/editor/icons/dark/icon_line_shape_2d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" stroke="#68b6ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+<path d="m1 1037.4 14 14" fill="#68b6ff" fill-rule="evenodd" stroke-opacity=".39216"/>
+<path d="m3 1039.4 10 10" fill="none" stroke-opacity=".58824"/>
+<path d="m5 1041.4 6 6" fill="none"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_link_button.svg b/editor/icons/dark/icon_link_button.svg
new file mode 100644
index 0000000000..c8d7e1e5c5
--- /dev/null
+++ b/editor/icons/dark/icon_link_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m6 7a0.99998 0.99998 0 0 0 -1 1 0.99998 0.99998 0 0 0 1 1h4a0.99998 0.99998 0 0 0 1 -1 0.99998 0.99998 0 0 0 -1 -1h-4z"/>
+<path transform="translate(0 1036.4)" d="m6 3a5 5 0 0 0 -4.3301 2.5 5 5 0 0 0 0 5 5 5 0 0 0 4.3301 2.5h1v-2h-1a3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3h1v-2h-1zm3 0v2h1a3 3 0 0 1 3 3 3 3 0 0 1 -3 3h-1v2h1a5 5 0 0 0 4.3301 -2.5 5 5 0 0 0 0 -5 5 5 0 0 0 -4.3301 -2.5h-1z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_list_select.svg b/editor/icons/dark/icon_list_select.svg
new file mode 100644
index 0000000000..c0fe4dd763
--- /dev/null
+++ b/editor/icons/dark/icon_list_select.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m1 1v14h8.2578l-0.82227-2h-5.4355v-2h4.6113l-0.82227-2h-3.7891v-2h3.8867a1.5002 1.5002 0 0 1 1.0977 -0.49805v-0.0019531a1.5002 1.5002 0 0 1 0.58594 0.11133l0.94531 0.38867h0.48438v0.19922l2 0.82227v-7.0215h-11zm2 2h7v2h-7v-2zm7.7559 7.7559l0.52344 1.2734a1.5002 1.5002 0 0 1 0.48047 -0.26953 1.5002 1.5002 0 0 1 0.24023 -0.43945v-0.050781l-1.2441-0.51367z" fill-opacity=".99608"/>
+<path d="m16 1047.7-8-3.291 3.291 8 0.9471-2.8201 1.8836 1.8835 0.9418-0.9418-1.8836-1.8835z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_listener.svg b/editor/icons/dark/icon_listener.svg
new file mode 100644
index 0000000000..5450428686
--- /dev/null
+++ b/editor/icons/dark/icon_listener.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m13.928 1038.4-1.7383 1.0039a6 6 0 0 1 0.81055 2.9961 6 6 0 0 1 -0.80859 2.998l1.7363 1.002a8 8 0 0 0 0 -8z" fill="#ff5f5f"/>
+<rect x="3" y="1049.4" width="1" height="2" fill="#ff5f5f"/>
+<path transform="translate(0 1036.4)" d="m6 1a5 5 0 0 0 -5 5h2a3 3 0 0 1 3 -3 3 3 0 0 1 3 3h2a5 5 0 0 0 -5 -5z" fill="#ff5f5f"/>
+<path d="m10 1042.4c0 4-3 4-3 5 0 3-2 3-3 3" fill="none" stroke="#ff5f5f" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_load.svg b/editor/icons/dark/icon_load.svg
new file mode 100644
index 0000000000..6cee92ad23
--- /dev/null
+++ b/editor/icons/dark/icon_load.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-1.1046 0-2 0.8954-2 2v9c0 1.1046 0.89543 2 2 2h9c1.1046 0 1.8184-0.91043 2-2l1-6c0.003977-0.18354-0.042648-0.3412-0.13477-0.5-0.17849-0.30916-0.50825-0.49972-0.86523-0.5h-8c-0.35698 2.824e-4 -0.68674 0.19084-0.86523 0.5-0.092118 0.1588-0.13874 0.3399-0.13477 0.52344l-1 5.9766c-0.091144 0.54473-0.44772 1-1 1s-1-0.4477-1-1v-9c0-0.5523 0.44772-1 1-1h2c0.55228 0 1 0.4477 1 1a1 1 0 0 0 0.29297 0.70703 1 1 0 0 0 0.70703 0.29297h4 1a1 1 0 0 0 -0.29297 -0.70703 1 1 0 0 0 -0.70703 -0.29297h-4c0-1.1046-0.89543-2-2-2h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_lock.svg b/editor/icons/dark/icon_lock.svg
new file mode 100644
index 0000000000..ea400fbec0
--- /dev/null
+++ b/editor/icons/dark/icon_lock.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m2 8v7h12v-7h-12zm5 2h2v3h-2v-3z"/>
+<path transform="translate(0 1036.4)" d="m8 1a5 5 0 0 0 -5 5h2a3 3 0 0 1 3 -3 3 3 0 0 1 3 3h2a5 5 0 0 0 -5 -5z"/>
+<rect x="3" y="1042.4" width="2" height="2"/>
+<rect x="11" y="1042.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_loop.svg b/editor/icons/dark/icon_loop.svg
new file mode 100644
index 0000000000..988ce491f6
--- /dev/null
+++ b/editor/icons/dark/icon_loop.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1v2h-2a5 5 0 0 0 -5 5 5 5 0 0 0 1.0039 2.9961l1.4355-1.4355a3 3 0 0 1 -0.43945 -1.5605 3 3 0 0 1 3 -3h2v2l2-1.5 2-1.5-2-1.5-2-1.5zm5.9961 4.0039l-1.4355 1.4355a3 3 0 0 1 0.43945 1.5605 3 3 0 0 1 -3 3h-2v-2l-2 1.5-2 1.5 2 1.5 2 1.5v-2h2a5 5 0 0 0 5 -5 5 5 0 0 0 -1.0039 -2.9961z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_loop_interpolation.svg b/editor/icons/dark/icon_loop_interpolation.svg
new file mode 100644
index 0000000000..dfda7d39ba
--- /dev/null
+++ b/editor/icons/dark/icon_loop_interpolation.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<circle cx="3" cy="1048.4" r="2"/>
+<path transform="translate(0 1036.4)" d="m4 3a2 2 0 0 0 -1.7324 1 2 2 0 0 0 -0.26562 1h-0.0019531v0.046875 6.9531h2v-5-2h2v-2h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m6 1037.4v6l4-3z" fill-rule="evenodd"/>
+<circle cx="13" cy="1040.4" r="2"/>
+<path transform="translate(0 1036.4)" d="m12 4v5 2h-2v2h2a2 2 0 0 0 1.7324 -1 2 2 0 0 0 0.26562 -1h0.001953v-7h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m10 1045.4v6l-4-3z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_main_play.svg b/editor/icons/dark/icon_main_play.svg
new file mode 100644
index 0000000000..531d704dac
--- /dev/null
+++ b/editor/icons/dark/icon_main_play.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m4 1048.4v-8l7 4z" fill="#4f4f4f" fill-rule="evenodd" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_margin_container.svg b/editor/icons/dark/icon_margin_container.svg
new file mode 100644
index 0000000000..71fddc2e95
--- /dev/null
+++ b/editor/icons/dark/icon_margin_container.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<path d="m4 1042.4v4l2-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_cube.svg b/editor/icons/dark/icon_material_preview_cube.svg
new file mode 100644
index 0000000000..90ee4fa933
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_cube.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#d5d5d5"/>
+<path d="m1 1040.4 7 3 7-3-7-3z" fill="#000000"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fil#4f4f4f0e0"/>
+<path d="m8 1051.4 7-3v-8l-7 3z" fill="#d5d5d5"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_cube_off.svg b/editor/icons/dark/icon_material_preview_cube_off.svg
new file mode 100644
index 0000000000..45c013103b
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_cube_off.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#d5d5d5"/>
+<path d="m1 1040.4 7 3 7-3-7-3z" fill="#000000"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fil#4f4f4f0e0"/>
+<path d="m8 1051.4 7-3v-8l-7 3z" fill="#d5d5d5"/>
+<path d="m8 1037.4-7 3v8l7 3 7-3v-8l-7-3z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_light_1.svg b/editor/icons/dark/icon_material_preview_light_1.svg
new file mode 100644
index 0000000000..8028b1e798
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_light_1.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v1 5h-1v-5h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_light_1_off.svg b/editor/icons/dark/icon_material_preview_light_1_off.svg
new file mode 100644
index 0000000000..63a2094e67
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_light_1_off.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v1 5h-1v-5h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_light_2.svg b/editor/icons/dark/icon_material_preview_light_2.svg
new file mode 100644
index 0000000000..745f943a17
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_light_2.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v2 1h-2v1h2v1h-2-1v-2-1h2v-1h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_light_2_off.svg b/editor/icons/dark/icon_material_preview_light_2_off.svg
new file mode 100644
index 0000000000..283cad0011
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_light_2_off.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v2 1h-2v1h2v1h-2-1v-2-1h2v-1h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v2 1h-2v1h2v1h-2-1v-2-1h2v-1h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_sphere.svg b/editor/icons/dark/icon_material_preview_sphere.svg
new file mode 100644
index 0000000000..a1bf99f984
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_sphere.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-2 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_material_preview_sphere_off.svg b/editor/icons/dark/icon_material_preview_sphere_off.svg
new file mode 100644
index 0000000000..57e38534ab
--- /dev/null
+++ b/editor/icons/dark/icon_material_preview_sphere_off.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-2 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_matrix.svg b/editor/icons/dark/icon_matrix.svg
new file mode 100644
index 0000000000..5e10864279
--- /dev/null
+++ b/editor/icons/dark/icon_matrix.svg
@@ -0,0 +1,19 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#e3383d">
+<rect x="1" y="1039.4" width="1" height="12"/>
+<rect x="1" y="1039.4" width="3" height="1"/>
+<rect x="1" y="1050.4" width="3" height="1"/>
+<rect x="10" y="1050.4" width="3" height="1"/>
+<rect x="10" y="1039.4" width="3" height="1"/>
+<rect x="12" y="1039.4" width="1" height="12"/>
+<rect x="3" y="1041.4" width="2" height="2"/>
+<rect x="6" y="1041.4" width="2" height="2"/>
+<rect x="9" y="1041.4" width="2" height="2"/>
+<rect x="3" y="1044.4" width="2" height="2"/>
+<rect x="6" y="1044.4" width="2" height="2"/>
+<rect x="9" y="1044.4" width="2" height="2"/>
+<rect x="3" y="1047.4" width="2" height="2"/>
+<rect x="6" y="1047.4" width="2" height="2"/>
+<rect x="9" y="1047.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_menu_button.svg b/editor/icons/dark/icon_menu_button.svg
new file mode 100644
index 0000000000..752e45f761
--- /dev/null
+++ b/editor/icons/dark/icon_menu_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m1 1v4h14v-4h-14zm5 1h4l-2 2-2-2z"/>
+<path transform="translate(0 1036.4)" d="m2 6a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-7a1 1 0 0 0 -1 -1h-12zm1 2h10v2h-10v-2zm0 3h10v2h-10v-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mesh.svg b/editor/icons/dark/icon_mesh.svg
new file mode 100644
index 0000000000..455d34b0cb
--- /dev/null
+++ b/editor/icons/dark/icon_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h6.541a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -1.0312 -1.75h0.03125v-6.5215a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm2.4141 3h5.8574a2 2 0 0 0 0.72852 0.73047v5.8555l-6.5859-6.5859zm-1.4141 1.4141l6.5859 6.5859h-5.8574a2 2 0 0 0 -0.72852 -0.73047v-5.8555z" fill="#fea900"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mesh_instance.svg b/editor/icons/dark/icon_mesh_instance.svg
new file mode 100644
index 0000000000..7233e5099e
--- /dev/null
+++ b/editor/icons/dark/icon_mesh_instance.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="3" cy="1049.4" r="2" fill="#ff5f5f" fill-opacity=".99608"/>
+<rect x="2" y="1039.4" width="2" height="8.5" fill="#ff5f5f" fill-opacity=".99608"/>
+<circle cx="3" cy="1039.4" r="2" fill="#ff5f5f" fill-opacity=".99608"/>
+<rect transform="rotate(90)" x="1038.4" y="-11.5" width="2" height="8.5" fill="#ff5f5f" fill-opacity=".99608"/>
+<circle cx="13" cy="1039.4" r="2" fill="#ff5f5f" fill-opacity=".99608"/>
+<rect x="12" y="1039.1" width="2" height="8.5" fill="#ff5f5f" fill-opacity=".99608"/>
+<circle cx="13" cy="1049.4" r="2" fill="#ff5f5f" fill-opacity=".99608"/>
+<rect transform="rotate(90)" x="1048.4" y="-12.25" width="2" height="8.5" fill="#ff5f5f" fill-opacity=".99608"/>
+<path d="m3 1039.4 10 10" fill="none" stroke="#ff5f5f" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mesh_library.svg b/editor/icons/dark/icon_mesh_library.svg
new file mode 100644
index 0000000000..4c74ec127a
--- /dev/null
+++ b/editor/icons/dark/icon_mesh_library.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h2.2695v-2h-2.2715a2 2 0 0 0 -0.72852 -0.73047v-5.8555l3 3v-0.41406a2.0002 2.0002 0 0 1 0.80859 -1.6055l-2.3945-2.3945h5.8574a2 2 0 0 0 0.72852 0.73047v1.2695a2.0002 2.0002 0 0 1 0.99805 0.27148 2.0002 2.0002 0 0 1 1.002 -0.27148v-1.2715a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm6 7v1 5 1h5c0.55228 0 1-0.4477 1-1v-5c0-0.5523-0.44772-1-1-1v4l-1-1-1 1v-4h-3z" fill="#fea900"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_aabb.svg b/editor/icons/dark/icon_mini_aabb.svg
new file mode 100644
index 0000000000..d9c710ee1c
--- /dev/null
+++ b/editor/icons/dark/icon_mini_aabb.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m5 1041.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h2v-6h-2zm0 2v2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#ee7991"/>
+<path d="m3 1046.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h2v-6h-2zm0 2v2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#f39bad"/>
+<path d="m13 1043.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z" fill="#ee7991"/>
+<path d="m13 1049.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z" fill="#ee7991"/>
+<rect transform="matrix(0,1,1,0,0,0)" x="1041.4" y="11" width="8" height="2" fill="#ee7991"/>
+<path d="m8 1044.4v8h2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3v-2h-2zm2 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2z" fill="#f39bad"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_array.svg b/editor/icons/dark/icon_mini_array.svg
new file mode 100644
index 0000000000..08ab2e77f8
--- /dev/null
+++ b/editor/icons/dark/icon_mini_array.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#4f4f4f">
+<rect x="11" y="1047.4" width="2" height="3"/>
+<path d="m14 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect x="7" y="1047.4" width="2" height="3"/>
+<path d="m10 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m4 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m4 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="4" y="-1050.4" width="2" height="6"/>
+<rect x="10" y="1044.4" width="1" height="2"/>
+<rect x="14" y="1044.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_basis.svg b/editor/icons/dark/icon_mini_basis.svg
new file mode 100644
index 0000000000..e0dc132d12
--- /dev/null
+++ b/editor/icons/dark/icon_mini_basis.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="2" height="6" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="1" height="2" fill="#e3ec69"/>
+<path d="m2 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1z" fill="#e3ec69"/>
+<path d="m2 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1z" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1042.4" width="2" height="3.9999" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-9" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m7 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-7 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-7" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+<rect x="10" y="1046.4" width="2" height="3.9999" fill="#eef39f"/>
+<rect x="10" y="1042.4" width="2" height="2" fill="#eef39f"/>
+<rect transform="scale(-1,1)" x="-16" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m14 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-14 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-14" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_boolean.svg b/editor/icons/dark/icon_mini_boolean.svg
new file mode 100644
index 0000000000..b8861c9f17
--- /dev/null
+++ b/editor/icons/dark/icon_mini_boolean.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#8da6f0">
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="2" height="6"/>
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="1" height="2"/>
+<path d="m2 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<path d="m2 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<rect transform="scale(-1,1)" x="-2" y="1042.4" width="2" height="3.9999"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m7 1044.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z"/>
+<path d="m11 1044.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_color.svg b/editor/icons/dark/icon_mini_color.svg
new file mode 100644
index 0000000000..77526c4a3c
--- /dev/null
+++ b/editor/icons/dark/icon_mini_color.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m4 4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h1v-2h-1z" fill="#ff2929"/>
+<path transform="translate(0 1040.4)" d="m14 4a3 3 0 0 0 -3 3v3h2v-3a1 1 0 0 1 1 -1h1v-2h-1z" fill="#70bfff"/>
+<path transform="translate(0 1040.4)" d="m6 2v5a3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1v-5h-2z" fill="#7aff70"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_color_array.svg b/editor/icons/dark/icon_mini_color_array.svg
new file mode 100644
index 0000000000..12494655ce
--- /dev/null
+++ b/editor/icons/dark/icon_mini_color_array.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<path transform="translate(0 1040.4)" d="m6 3.5a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h1v-2h-1z" fill="#ff2929"/>
+<rect x="10" y="1046.9" width="2" height="3" fill="#70bfff"/>
+<path d="m13 1043.9a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#70bfff"/>
+<path transform="translate(0 1040.4)" d="m7 1.5v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-5h-2z" fill="#7aff70"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_dictionary.svg b/editor/icons/dark/icon_mini_dictionary.svg
new file mode 100644
index 0000000000..eb68709c4f
--- /dev/null
+++ b/editor/icons/dark/icon_mini_dictionary.svg
@@ -0,0 +1,16 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#77edb1">
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="15" y="-1046.4" width="1" height="2"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m11 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m11 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="6" y="1046.4" width="2" height="3.9999"/>
+<rect x="6" y="1042.4" width="2" height="2"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="3" y="1042.4" width="2" height="8"/>
+<rect x="11" y="1044.4" width="1" height="2"/>
+<rect x="11" y="1048.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_float.svg b/editor/icons/dark/icon_mini_float.svg
new file mode 100644
index 0000000000..2eb71fd85e
--- /dev/null
+++ b/editor/icons/dark/icon_mini_float.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#61daf4">
+<rect y="1045.4" width="2" height="5"/>
+<rect x="2" y="1046.4" width="2" height="2"/>
+<path d="m3 1042.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="6" y="-1047.4" width="2" height="5"/>
+<path d="m9 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect transform="scale(1,-1)" x="12" y="-1047.4" width="2" height="5"/>
+<path d="m15 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="9" y="1048.4" width="1" height="2"/>
+<rect x="14" y="1044.4" width="2" height="2"/>
+<rect x="15" y="1048.4" width="1" height="2"/>
+<rect x="3" y="1042.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_float_array.svg b/editor/icons/dark/icon_mini_float_array.svg
new file mode 100644
index 0000000000..7d08903461
--- /dev/null
+++ b/editor/icons/dark/icon_mini_float_array.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<path d="m6 1042.4a3 3 0 0 0 -3 3v5h2v-2h1v-2h-1v-1a1 1 0 0 1 1 -1v-2z" fill="#61daf4"/>
+<path d="m10 1042.4v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-1h1v-2h-1v-2h-2z" fill="#61daf4"/>
+<path d="m7 1042.4v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-5h-2z" fill="#c6f2fb"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_image.svg b/editor/icons/dark/icon_mini_image.svg
new file mode 100644
index 0000000000..a3f273078c
--- /dev/null
+++ b/editor/icons/dark/icon_mini_image.svg
@@ -0,0 +1,17 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#93f1b9">
+<rect y="1045.4" width="2" height="3.9999"/>
+<rect x="3" y="1043.4" width="2" height="6"/>
+<path d="m5 1043.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="6" y="1046.4" width="2" height="3"/>
+<rect y="1041.4" width="2" height="2"/>
+<rect x="6" y="1043.4" width="2" height="6"/>
+<path d="m8 1043.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="9" y="1046.4" width="2" height="3"/>
+<path d="m14 1049.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m14 1043.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="14" y="-1049.4" width="2" height="6"/>
+<path d="m13 1052.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<rect x="12" y="1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_input.svg b/editor/icons/dark/icon_mini_input.svg
new file mode 100644
index 0000000000..c64db97127
--- /dev/null
+++ b/editor/icons/dark/icon_mini_input.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#adf18f">
+<path d="m10 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m10 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(-1)" x="-10" y="-1052.4" width="2" height="8"/>
+<rect y="1046.4" width="2" height="3.9999"/>
+<rect x="3" y="1044.4" width="2" height="6"/>
+<path d="m5 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="6" y="1047.4" width="2" height="3"/>
+<rect y="1042.4" width="2" height="2"/>
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="15" y="-1046.4" width="1" height="2"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_int_array.svg b/editor/icons/dark/icon_mini_int_array.svg
new file mode 100644
index 0000000000..625252bba2
--- /dev/null
+++ b/editor/icons/dark/icon_mini_int_array.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m0 0v2 8 2h2 2v-2h-2v-8h2v-2h-4zm12 0v2h2v8h-2v2h4v-2-8-2h-2-2z" fill="#4f4f4f"/>
+<path transform="translate(0 1040.4)" d="m3 2v2h2v-2h-2zm0 4v4h2v-4h-2z" fill="#7dc6ef"/>
+<path transform="translate(0 1040.4)" d="m5 4v6h2v-4a1 1 0 0 1 1 1v3h2v-3a3 3 0 0 0 -3 -3h-2z" fill="#c8e7f9"/>
+<path transform="translate(0 1040.4)" d="m10 2v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-1h1v-2h-1v-2h-2z" fill="#7dc6ef"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_integer.svg b/editor/icons/dark/icon_mini_integer.svg
new file mode 100644
index 0000000000..05d09d9823
--- /dev/null
+++ b/editor/icons/dark/icon_mini_integer.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#7dc6ef">
+<rect x="1" y="1046.4" width="2" height="3.9999"/>
+<rect x="4" y="1044.4" width="2" height="6"/>
+<path d="m7 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="8" y="1047.4" width="2" height="3"/>
+<rect x="1" y="1042.4" width="2" height="2"/>
+<rect transform="scale(1,-1)" x="12" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="14" y="-1046.4" width="2" height="2"/>
+<path d="m15 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="5" y="1044.4" width="2" height="2"/>
+<rect transform="scale(1,-1)" x="15" y="-1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_matrix3.svg b/editor/icons/dark/icon_mini_matrix3.svg
new file mode 100644
index 0000000000..e0dc132d12
--- /dev/null
+++ b/editor/icons/dark/icon_mini_matrix3.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="2" height="6" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="1" height="2" fill="#e3ec69"/>
+<path d="m2 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1z" fill="#e3ec69"/>
+<path d="m2 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1z" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1042.4" width="2" height="3.9999" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-9" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m7 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-7 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-7" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+<rect x="10" y="1046.4" width="2" height="3.9999" fill="#eef39f"/>
+<rect x="10" y="1042.4" width="2" height="2" fill="#eef39f"/>
+<rect transform="scale(-1,1)" x="-16" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m14 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-14 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-14" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_object.svg b/editor/icons/dark/icon_mini_object.svg
new file mode 100644
index 0000000000..8cbbfa2808
--- /dev/null
+++ b/editor/icons/dark/icon_mini_object.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#79f3e8">
+<path d="m8 1050.4a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3v-2h-2v8h2zm0-2v-2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1z"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m15 1044.4v5a3 3 0 0 1 -3 3v-2a1 1 0 0 0 1 -1v-5h2z"/>
+<path d="m3 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m3 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="11" y="1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_path.svg b/editor/icons/dark/icon_mini_path.svg
new file mode 100644
index 0000000000..d09f56e753
--- /dev/null
+++ b/editor/icons/dark/icon_mini_path.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#6993ec">
+<rect transform="scale(1,-1)" x="6" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="8" y="-1046.4" width="2" height="2"/>
+<path d="m9 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect transform="scale(1,-1)" x="11" y="-1050.4" width="2" height="8"/>
+<path d="m13 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="14" y="-1050.4" width="2" height="3"/>
+<path d="m2 1048.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m2 1042.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(-1)" x="-2" y="-1050.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="9" y="-1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_plane.svg b/editor/icons/dark/icon_mini_plane.svg
new file mode 100644
index 0000000000..5d2ee937c0
--- /dev/null
+++ b/editor/icons/dark/icon_mini_plane.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#f77070">
+<path d="m3 1048.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m3 1042.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(-1)" x="-3" y="-1050.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="7" y="-1047.4" width="2" height="5"/>
+<path d="m10 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="11" y="1044.4" width="2" height="6"/>
+<path d="m13 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="14" y="1047.4" width="2" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_quat.svg b/editor/icons/dark/icon_mini_quat.svg
new file mode 100644
index 0000000000..7baaf44089
--- /dev/null
+++ b/editor/icons/dark/icon_mini_quat.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3 1049.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#ec69a3"/>
+<path d="m3 1043.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#ec69a3"/>
+<rect transform="scale(1,-1)" x="3" y="-1051.4" width="2" height="8" fill="#ec69a3"/>
+<rect transform="scale(1,-1)" x="13" y="-1046.4" width="2" height="5" fill="#ec69a3"/>
+<rect transform="scale(1,-1)" x="15" y="-1045.4" width="1" height="2" fill="#ec69a3"/>
+<path d="m16 1049.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#ec69a3"/>
+<path d="m4 1043.4v3a3 3 0 0 0 3 3h2v-6h-2v4a1 1 0 0 1 -1 -1v-3h-2z" fill="#f298c0"/>
+<path transform="translate(0 1040.4)" d="m11 3a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h2v-6h-2zm0 2v2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#ec69a3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_raw_array.svg b/editor/icons/dark/icon_mini_raw_array.svg
new file mode 100644
index 0000000000..57a225a19b
--- /dev/null
+++ b/editor/icons/dark/icon_mini_raw_array.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m0 0v2 8 2h4v-2h-2v-8h2v-2h-2-2zm12 0v2h2v8h-2v2h4v-2-8-2h-2-2z" fill="#4f4f4f"/>
+<rect x="2" y="1046.4" width="2" height="3" fill="#69ec9e"/>
+<rect x="5" y="1043.4" width="1" height="2" fill="#69ec9e"/>
+<path d="m5 1043.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#69ec9e"/>
+<path d="m6 1049.4v-6h2v4a1 1 0 0 0 1 -1v-3h2v3 1a1 1 0 0 0 1 -1v-3h2v3a3 3 0 0 1 -3 3h-2v-0.1758a3 3 0 0 1 -1 0.1758h-2z" fill="#aaf4c8"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_rect2.svg b/editor/icons/dark/icon_mini_rect2.svg
new file mode 100644
index 0000000000..d9e9413185
--- /dev/null
+++ b/editor/icons/dark/icon_mini_rect2.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#f191a5">
+<rect y="1047.4" width="2" height="3"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="15" y="-1046.4" width="1" height="2"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m7 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="7" y="-1050.4" width="1" height="2"/>
+<path d="m7 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="12" y="1044.4" width="1" height="2"/>
+<path d="m12 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="12" y="-1050.4" width="1" height="2"/>
+<path d="m12 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m7 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="6" y="1046.4" width="2" height="1"/>
+<rect transform="scale(1,-1)" x="3" y="-1046.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_rid.svg b/editor/icons/dark/icon_mini_rid.svg
new file mode 100644
index 0000000000..3fe12d0819
--- /dev/null
+++ b/editor/icons/dark/icon_mini_rid.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#69ec9a">
+<rect x="1" y="1047.4" width="2" height="3"/>
+<rect x="7" y="1042.4" width="2" height="1.9999"/>
+<rect x="7" y="1046.4" width="2" height="4"/>
+<rect x="4" y="1044.4" width="1" height="2"/>
+<path d="m4 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m13 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m13 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="14" y="1042.4" width="2" height="8"/>
+<rect x="13" y="1044.4" width="1" height="2"/>
+<rect x="13" y="1048.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_string.svg b/editor/icons/dark/icon_mini_string.svg
new file mode 100644
index 0000000000..7212058fe6
--- /dev/null
+++ b/editor/icons/dark/icon_mini_string.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#6ba7ec">
+<path d="m5 1042.4a3 3 0 0 0 -3 3v2a1 1 0 0 1 -1 1v2a3 3 0 0 0 3 -3v-2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="7" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="9" y="-1046.4" width="2" height="2"/>
+<path d="m10 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path transform="translate(0 1040.4)" d="m15 4a3 3 0 0 0 -3 3v3h2v-3a1 1 0 0 1 1 -1h1v-2h-1z"/>
+<rect y="1048.4" width="1" height="2"/>
+<rect x="5" y="1042.4" width="1" height="2"/>
+<rect transform="scale(1,-1)" x="10" y="-1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_string_array.svg b/editor/icons/dark/icon_mini_string_array.svg
new file mode 100644
index 0000000000..b64221bd70
--- /dev/null
+++ b/editor/icons/dark/icon_mini_string_array.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m0 0v2 8 2h2 2v-2h-2v-8h2v-2h-2-2zm12 0v2h2v8h-2v2h4v-2-10h-4z" fill="#4f4f4f"/>
+<path d="m7 1042.4a3 3 0 0 0 -3 3v2a1 1 0 0 1 -1 1v2a3 3 0 0 0 3 -3v-2a1 1 0 0 1 1 -1v-2z" fill="#6ba7ec"/>
+<path d="m14 1044.4a3 3 0 0 0 -3 3v3h2v-3a1 1 0 0 1 1 -1v-2z" fill="#6ba7ec"/>
+<path d="m8 1042.4v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-1h1v-2h-1v-2h-2z" fill="#b5d3f6"/>
+<rect x="7" y="1042.4" width="1" height="2" fill="#6ba7ec"/>
+<rect x="2" y="1048.4" width="1" height="2" fill="#6ba7ec"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_transform.svg b/editor/icons/dark/icon_mini_transform.svg
new file mode 100644
index 0000000000..43c4bb4a8f
--- /dev/null
+++ b/editor/icons/dark/icon_mini_transform.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m4 1042.4-0.9082 2.1816-1.0918-2.1816h-2l2 4-2 4h2l0.9082-2.1816 1.0918 2.1816h2l-2-4 2-4z" fill="#f6a86e"/>
+<path d="m9 1042.4a3 3 0 0 0 -3 3v5h2v-2h1v-2h-1v-1a1 1 0 0 1 1 -1h1v-2h-1z" fill="#f8bf95"/>
+<path transform="translate(0 1040.4)" d="m10 4v2 2 2h2v-2l1 1 1-1v2h2v-2-2-2h-2l-1 2-1-2h-2z" fill="#f6a86e"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_transform2D.svg b/editor/icons/dark/icon_mini_transform2D.svg
new file mode 100644
index 0000000000..38921ea85a
--- /dev/null
+++ b/editor/icons/dark/icon_mini_transform2D.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect x="5" y="1048.4" width="5" height="2" fill="#ddf4aa"/>
+<path d="m7 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#ddf4aa"/>
+<path d="m7 1042.4v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5z" fill="#ddf4aa"/>
+<rect y="1042.4" width="6" height="2" fill="#c4ec69"/>
+<rect x="2" y="1043.4" width="2" height="7" fill="#c4ec69"/>
+<path transform="translate(0 1040.4)" d="m10 2v8h2a4 4 0 0 0 3.4648 -2 4 4 0 0 0 0 -4 4 4 0 0 0 -3.4648 -2h-2zm2 2a2 2 0 0 1 1.7324 1 2 2 0 0 1 0 2 2 2 0 0 1 -1.7324 1v-4z" fill="#c4ec69"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_variant.svg b/editor/icons/dark/icon_mini_variant.svg
new file mode 100644
index 0000000000..aeb23ed2bc
--- /dev/null
+++ b/editor/icons/dark/icon_mini_variant.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#69ecbd">
+<rect x="3" y="1044.4" width="2" height="6"/>
+<rect x="6" y="1044.4" width="2" height="6"/>
+<rect x="3" y="1044.4" width="1" height="2"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m14 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect transform="scale(1,-1)" x="14" y="-1052.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="11" y="-1047.4" width="2" height="3"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m8 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="9" y="1047.4" width="2" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_vector2.svg b/editor/icons/dark/icon_mini_vector2.svg
new file mode 100644
index 0000000000..7abc73c41f
--- /dev/null
+++ b/editor/icons/dark/icon_mini_vector2.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z" fill="#bd91f1"/>
+<rect x="4" y="1044.4" width="2" height="3" fill="#bd91f1"/>
+<rect x="11" y="1048.4" width="5" height="2" fill="#dcc5f8"/>
+<rect x="1" y="1044.4" width="2" height="6" fill="#bd91f1"/>
+<rect x="9" y="1044.4" width="1" height="2" fill="#bd91f1"/>
+<path d="m9 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#bd91f1"/>
+<rect transform="scale(1,-1)" x="9" y="-1050.4" width="1" height="2" fill="#bd91f1"/>
+<path d="m9 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#bd91f1"/>
+<path d="m13 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#dcc5f8"/>
+<path d="m13 1042.4v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5z" fill="#dcc5f8"/>
+<rect x="12" y="1042.4" width="1" height="2" fill="#dcc5f8"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_vector2_array.svg b/editor/icons/dark/icon_mini_vector2_array.svg
new file mode 100644
index 0000000000..18af4c551d
--- /dev/null
+++ b/editor/icons/dark/icon_mini_vector2_array.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<path transform="translate(0 1040.4)" d="m3 3v6h2a3 3 0 0 0 3 -3v-3h-2v3a1 1 0 0 1 -1 1v-4h-2z" fill="#bd91f1"/>
+<path d="m9 1042.4v2h1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 2 2 0 0 0 -1.7324 1 2 2 0 0 0 -0.26562 1h-0.00195v0.047 1.9531h2 3v-2h-3a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5001h-1z" fill="#dcc5f8"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_vector3.svg b/editor/icons/dark/icon_mini_vector3.svg
new file mode 100644
index 0000000000..88b6f1f53c
--- /dev/null
+++ b/editor/icons/dark/icon_mini_vector3.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3.0004 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z" fill="#e286f0"/>
+<rect x="4.0004" y="1044.4" width="2" height="3" fill="#e286f0"/>
+<rect x="1.0004" y="1044.4" width="2" height="6" fill="#e286f0"/>
+<rect x="9.0004" y="1044.4" width="1" height="2" fill="#e286f0"/>
+<path d="m9.0004 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#e286f0"/>
+<rect transform="scale(1,-1)" x="9.0004" y="-1050.4" width="1" height="2" fill="#e286f0"/>
+<path d="m9.0004 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#e286f0"/>
+<path transform="translate(0 1040.4)" d="m13 2v1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -0.36328 -0.5h-2.2344z" fill="#eeb9f6"/>
+<rect x="12" y="1042.4" width="3.9996" height="2" fill="#eeb9f6"/>
+<path d="m13 1045.4v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5z" fill="#eeb9f6"/>
+<rect x="12" y="1049.4" width="1" height="2" fill="#eeb9f6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mini_vector3_array.svg b/editor/icons/dark/icon_mini_vector3_array.svg
new file mode 100644
index 0000000000..ffa2be67ec
--- /dev/null
+++ b/editor/icons/dark/icon_mini_vector3_array.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#4f4f4f"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#4f4f4f"/>
+<path transform="translate(0 1040.4)" d="m3 3v6h2a3 3 0 0 0 3 -3v-3h-2v3a1 1 0 0 1 -1 1v-4h-2z" fill="#e286f0"/>
+<path transform="translate(0 1040.4)" d="m8 1v2h1 1a1 1 0 0 1 -1 1v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1h-1v2h1a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -0.36523 -0.50195 3 3 0 0 0 0.36523 -0.49805 3 3 0 0 0 0.39844 -1.5h0.003906v-2h-0.76562-2.2344-1z" fill="#eeb9f6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mirror_x.svg b/editor/icons/dark/icon_mirror_x.svg
new file mode 100644
index 0000000000..3e80728396
--- /dev/null
+++ b/editor/icons/dark/icon_mirror_x.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#4f4f4f" stroke-opacity=".99608" stroke-width="2">
+<path d="m4 1042.4-2 2 2 2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="m2 1044.4h11"/>
+<path d="m12 1042.4 2 2-2 2" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mirror_y.svg b/editor/icons/dark/icon_mirror_y.svg
new file mode 100644
index 0000000000..3070219228
--- /dev/null
+++ b/editor/icons/dark/icon_mirror_y.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m11.012 1048.4a1.0001 1.0001 0 0 0 -1.7168 -0.6973l-0.29297 0.293v-7.1719l0.29297 0.293a1.0001 1.0001 0 0 0 1.7148 -0.7266 1.0001 1.0001 0 0 0 -0.30078 -0.6875l-2-2a1.0001 1.0001 0 0 0 -1.4141 0l-2 2a1.0001 1.0001 0 1 0 1.4141 1.4141l0.29297-0.293v7.1719l-0.29297-0.293a1.0001 1.0001 0 1 0 -1.4141 1.4141l2 2a1.0001 1.0001 0 0 0 1.4141 0l2-2a1.0001 1.0001 0 0 0 0.30273 -0.7168z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_mouse.svg b/editor/icons/dark/icon_mouse.svg
new file mode 100644
index 0000000000..f7490f337e
--- /dev/null
+++ b/editor/icons/dark/icon_mouse.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1.1016a5 5 0 0 0 -4 4.8984h4v-4.8984zm2 0.0039063v4.8945h4a5 5 0 0 0 -4 -4.8945zm-6 6.8945v2a5 5 0 0 0 5 5 5 5 0 0 0 5 -5v-2h-10z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_move_down.svg b/editor/icons/dark/icon_move_down.svg
new file mode 100644
index 0000000000..c060f98597
--- /dev/null
+++ b/editor/icons/dark/icon_move_down.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m7.9964 1051.4a1.0002 1.0001 0 0 1 -0.77738 -0.377l-4.0002-5a1.0001 1 0 0 1 0.15626 -1.4043 1.0001 1 0 0 1 1.4063 0.1563l2.2189 2.7734v-5.1484a1.0001 1 0 0 1 1.0001 -1 1.0001 1 0 0 1 1.0001 1v5.1484l2.2189-2.7734a1.0001 1 0 0 1 1.4063 -0.1563 1.0001 1 0 0 1 0.15626 1.4043l-4.0002 5a1.0002 1.0001 0 0 1 -0.7852 0.377zm0.00391-12a1.0001 1 0 0 1 -1.0001 -1 1.0001 1 0 0 1 1.0001 -1 1.0001 1 0 0 1 1.0001 1 1.0001 1 0 0 1 -1.0001 1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_move_point.svg b/editor/icons/dark/icon_move_point.svg
new file mode 100644
index 0000000000..23ffbdfe8d
--- /dev/null
+++ b/editor/icons/dark/icon_move_point.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 1.2129 -0.10742l-2.5996-6.3203a1.5002 1.5002 0 0 1 1.3711 -2.0703v-0.0019531a1.5002 1.5002 0 0 1 0.58594 0.11133l6.3184 2.5996a7 7 0 0 0 0.11133 -1.2109 7 7 0 0 0 -7 -7zm2.7559 9.7559l0.52344 1.2734a1.5002 1.5002 0 0 1 0.48047 -0.26953 1.5002 1.5002 0 0 1 0.26953 -0.47852l-1.2734-0.52539z" fill="#000000"/>
+<path transform="translate(0 1036.4)" d="m8 3a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 0.42578 -0.021484l-1.8125-4.4063a1.5002 1.5002 0 0 1 1.3711 -2.0703v-0.0019531a1.5002 1.5002 0 0 1 0.58594 0.11133l4.4082 1.8125a5 5 0 0 0 0.021484 -0.42383 5 5 0 0 0 -5 -5zm2.7559 7.7559l0.44336 1.0801a5 5 0 0 0 0.63867 -0.63281l-1.082-0.44727z" fil#ff4040484"/>
+<path d="m16 1047.7-8-3.291 3.291 8 0.9471-2.8201 1.8836 1.8835 0.9418-0.9418-1.8836-1.8835z" fil#4f4f4f0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_move_up.svg b/editor/icons/dark/icon_move_up.svg
new file mode 100644
index 0000000000..c97166020b
--- /dev/null
+++ b/editor/icons/dark/icon_move_up.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m7.9964 1037.4a1.0002 1.0001 0 0 0 -0.77739 0.377l-4.0002 5a1.0001 1 0 0 0 0.15626 1.4043 1.0001 1 0 0 0 1.4063 -0.1563l2.2189-2.7734v5.1484a1.0001 1 0 0 0 1.0001 1 1.0001 1 0 0 0 1.0001 -1v-5.1484l2.2189 2.7734a1.0001 1 0 0 0 1.4063 0.1563 1.0001 1 0 0 0 0.15626 -1.4043l-4.0002-5a1.0002 1.0001 0 0 0 -0.7852 -0.377zm0.00391 12a1.0001 1 0 0 0 -1.0001 1 1.0001 1 0 0 0 1.0001 1 1.0001 1 0 0 0 1.0001 -1 1.0001 1 0 0 0 -1.0001 -1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_multi_edit.svg b/editor/icons/dark/icon_multi_edit.svg
new file mode 100644
index 0000000000..a22bf3b8cf
--- /dev/null
+++ b/editor/icons/dark/icon_multi_edit.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z"/>
+<rect x="1" y="1037.4" width="2" height="2"/>
+<rect x="1" y="1041.4" width="2" height="2"/>
+<rect x="5" y="1037.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_multi_line.svg b/editor/icons/dark/icon_multi_line.svg
new file mode 100644
index 0000000000..0dda39baad
--- /dev/null
+++ b/editor/icons/dark/icon_multi_line.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="10" y="1037.4" width="5" height="1.9999"/>
+<rect transform="rotate(90)" x="1037.4" y="-8" width="2" height="7"/>
+<rect x="1" y="1041.4" width="11" height="1.9999"/>
+<rect x="1" y="1045.4" width="4" height="1.9999"/>
+<rect x="7" y="1045.4" width="8" height="1.9999"/>
+<rect x="1" y="1049.4" width="13" height="1.9999"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_multi_mesh.svg b/editor/icons/dark/icon_multi_mesh.svg
new file mode 100644
index 0000000000..6121886fa0
--- /dev/null
+++ b/editor/icons/dark/icon_multi_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2 5.649e-4 0.71397 0.38169 1.3735 1 1.7305v6.541c-0.61771 0.35663-0.99874 1.0152-1 1.7285 0 1.1046 0.89543 2 2 2 0.71397-5.65e-4 1.3735-0.38169 1.7305-1h1.2695v-2h-1.2715c-0.17478-0.30301-0.42598-0.55488-0.72852-0.73047v-5.8555l3.5859 3.5859h1.4141v-1.4141l-3.5859-3.5859h5.8574c0.17532 0.30158 0.42647 0.55205 0.72852 0.72656v1.2734h2v-1.2695c0.61831-0.35698 0.99944-1.0165 1-1.7305 0-1.1046-0.89543-2-2-2-0.71397 5.648e-4 -1.3735 0.38169-1.7305 1h-6.541c-0.35663-0.61771-1.0152-0.99874-1.7285-1zm8 7v3h-3v2h3v3h2v-3h3v-2h-3v-3z" fill="#fea900"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_multi_mesh_instance.svg b/editor/icons/dark/icon_multi_mesh_instance.svg
new file mode 100644
index 0000000000..96eee34c8f
--- /dev/null
+++ b/editor/icons/dark/icon_multi_mesh_instance.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2 5.649e-4 0.71397 0.38169 1.3735 1 1.7305v6.541c-0.61771 0.35663-0.99874 1.0152-1 1.7285 0 1.1046 0.89543 2 2 2 0.71397-5.65e-4 1.3735-0.38169 1.7305-1h1.2695v-2h-1.2715c-0.17478-0.30301-0.42598-0.55488-0.72852-0.73047v-5.8555l3.5859 3.5859h1.4141v-1.4141l-3.5859-3.5859h5.8574c0.17532 0.30158 0.42647 0.55205 0.72852 0.72656v1.2734h2v-1.2695c0.61831-0.35698 0.99944-1.0165 1-1.7305 0-1.1046-0.89543-2-2-2-0.71397 5.648e-4 -1.3735 0.38169-1.7305 1h-6.541c-0.35663-0.61771-1.0152-0.99874-1.7285-1zm8 7v3h-3v2h3v3h2v-3h3v-2h-3v-3z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_multi_script.svg b/editor/icons/dark/icon_multi_script.svg
new file mode 100644
index 0000000000..a9b577de86
--- /dev/null
+++ b/editor/icons/dark/icon_multi_script.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-1.1934 1.9902 1.4141 1.4141 1.2422-0.74414v-4.9121h1a2 2 0 0 1 2 -2v-1h4.9121l0.74414-1.2422-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2z"/>
+<path d="m10 1043.4v3h-3v2h3v3h2v-3h3v-2h-3v-3z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_native_script.svg b/editor/icons/dark/icon_native_script.svg
new file mode 100644
index 0000000000..3b88105c24
--- /dev/null
+++ b/editor/icons/dark/icon_native_script.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625h3v1 1h2v-0.95117a2 2 0 0 1 0 -0.048828 2 2 0 0 1 2 -2 2 2 0 0 1 2 2v1h5v-2l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm-6 7v4 4h2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3v-2h-2zm6 0v2h2v-2h-2zm3 2v6h2v-4a1 1 0 0 1 1 1v3h2v-3a3 3 0 0 0 -3 -3h-2zm-7 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2zm4 0v4h2v-4h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_navigation.svg b/editor/icons/dark/icon_navigation.svg
new file mode 100644
index 0000000000..21f2d5e73c
--- /dev/null
+++ b/editor/icons/dark/icon_navigation.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1050.4 5-2 5 2-5-12-5 12z" fill="#ff5f5f" fill-opacity=".99608" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_navigation_2d.svg b/editor/icons/dark/icon_navigation_2d.svg
new file mode 100644
index 0000000000..0f945f3402
--- /dev/null
+++ b/editor/icons/dark/icon_navigation_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1050.4 5-2 5 2-5-12-5 12z" fill="#6d90ff" fill-opacity=".98824" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_navigation_mesh.svg b/editor/icons/dark/icon_navigation_mesh.svg
new file mode 100644
index 0000000000..84fa175033
--- /dev/null
+++ b/editor/icons/dark/icon_navigation_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h2.5078l0.75-2h-3.2598a2 2 0 0 0 -0.72852 -0.73047v-5.8555l4.6973 4.6973 0.77148-2.0566-4.0547-4.0547h5.8574a2 2 0 0 0 0.72852 0.73047v0.27148a2.0002 2.0002 0 0 1 0.023438 0 2.0002 2.0002 0 0 1 1.8496 1.2969l0.12695 0.33789v-1.9082a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm9 6l-3 8 3-2 3 2-3-8z" fill="#fea900"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_navigation_mesh_instance.svg b/editor/icons/dark/icon_navigation_mesh_instance.svg
new file mode 100644
index 0000000000..aea815c1c2
--- /dev/null
+++ b/editor/icons/dark/icon_navigation_mesh_instance.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h2.5078l0.75-2h-3.2598a2 2 0 0 0 -0.72852 -0.73047v-5.8555l4.6973 4.6973 0.77148-2.0566-4.0547-4.0547h5.8574a2 2 0 0 0 0.72852 0.73047v0.27148a2.0002 2.0002 0 0 1 0.023438 0 2.0002 2.0002 0 0 1 1.8496 1.2969l0.12695 0.33789v-1.9082a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm9 6l-3 8 3-2 3 2-3-8z"/>
+<rect x="12" y="1040.4" width="2" height="1"/>
+<rect x="12" y="1040.4" width="2" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_navigation_polygon.svg b/editor/icons/dark/icon_navigation_polygon.svg
new file mode 100644
index 0000000000..e3c5183d7b
--- /dev/null
+++ b/editor/icons/dark/icon_navigation_polygon.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill="#4f4f4f" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4.9023a2.1002 2.1002 0 0 1 0.13086 -0.73633l0.47461-1.2637h-4.5078v-10h8.5859l-4.293 4.293a1.0001 1.0001 0 0 0 0 1.4141l1.3262 1.3262 1.4141-3.7695a2.1002 2.1002 0 0 1 1.9922 -1.3613 2.1002 2.1002 0 0 1 0.43555 0.050781l2.2461-2.2461a1.0001 1.0001 0 0 0 -0.70703 -1.707h-12z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m15 1051.4-3-8-3 8 3-2z"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_navigation_polygon_instance.svg b/editor/icons/dark/icon_navigation_polygon_instance.svg
new file mode 100644
index 0000000000..955fb00c62
--- /dev/null
+++ b/editor/icons/dark/icon_navigation_polygon_instance.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#6d90ff" fill-opacity=".98824" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4.9023a2.1002 2.1002 0 0 1 0.13086 -0.73633l0.47461-1.2637h-4.5078v-10h8.5859l-4.293 4.293a1.0001 1.0001 0 0 0 0 1.4141l1.3262 1.3262 1.4141-3.7695a2.1002 2.1002 0 0 1 1.9922 -1.3613 2.1002 2.1002 0 0 1 0.43555 0.050781l2.2461-2.2461a1.0001 1.0001 0 0 0 -0.70703 -1.707h-12z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m15 1051.4-3-8-3 8 3-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_new.svg b/editor/icons/dark/icon_new.svg
new file mode 100644
index 0000000000..0c8652f1f7
--- /dev/null
+++ b/editor/icons/dark/icon_new.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 1036.4)" d="m2 1v14h8v-1h-2v-4h2v-2h4v-2h-5v-5zm8 0v4h4z" fill="#4f4f4f"/>
+<path d="m11 1045.4v2h-2v2h2v2h2v-2h2v-2h-2v-2z" fill="#00f010"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_nine_patch_rect.svg b/editor/icons/dark/icon_nine_patch_rect.svg
new file mode 100644
index 0000000000..0e4a063196
--- /dev/null
+++ b/editor/icons/dark/icon_nine_patch_rect.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<rect x="1" y="1037.4" width="2" height="14"/>
+<rect x="1" y="1049.4" width="14" height="2"/>
+<rect x="1" y="1037.4" width="14" height="2"/>
+<rect x="13" y="1037.4" width="2" height="14"/>
+<rect x="1" y="1041.4" width="14" height=".99998"/>
+<rect x="1" y="1046.4" width="14" height=".99998"/>
+<rect transform="rotate(90)" x="1037.4" y="-6" width="14" height=".99998"/>
+<rect transform="rotate(90)" x="1037.4" y="-11" width="14" height=".99998"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_node.svg b/editor/icons/dark/icon_node.svg
new file mode 100644
index 0000000000..c5e246e01a
--- /dev/null
+++ b/editor/icons/dark/icon_node.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_node_2d.svg b/editor/icons/dark/icon_node_2d.svg
new file mode 100644
index 0000000000..55bc880d18
--- /dev/null
+++ b/editor/icons/dark/icon_node_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_node_warning.svg b/editor/icons/dark/icon_node_warning.svg
new file mode 100644
index 0000000000..981af7e3ba
--- /dev/null
+++ b/editor/icons/dark/icon_node_warning.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 1036.4)" d="m8.0293 2.002a1.0001 1.0001 0 0 0 -0.88672 0.48438l-6 10a1.0001 1.0001 0 0 0 0.85742 1.5137h12a1.0001 1.0001 0 0 0 0.85742 -1.5137l-6-10a1.0001 1.0001 0 0 0 -0.82812 -0.48438zm-1.0293 2.998h2v5h-2v-5zm0 6h2v2h-2v-2z" color="#000000" color-rendering="auto" fill="#fea900" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_non_favorite.svg b/editor/icons/dark/icon_non_favorite.svg
new file mode 100644
index 0000000000..07090d3e1c
--- /dev/null
+++ b/editor/icons/dark/icon_non_favorite.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1.7246l-2.375 4.0977-4.625 1.0977 3.2363 3.4063-0.35938 4.6738 4.1387-1.9766 4.1582 1.9414-0.39648-4.6523 3.2227-3.3926-4.625-1.0977-2.375-4.0977zm0 2.2754l1.6582 2.7773 3.2324 0.74414-2.25 2.3008 0.27539 3.1543-2.9043-1.3164-2.8926 1.3398 0.25195-3.168-2.2617-2.3105 3.2324-0.74414 1.6582-2.7773z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_object.svg b/editor/icons/dark/icon_object.svg
new file mode 100644
index 0000000000..e52f4b7513
--- /dev/null
+++ b/editor/icons/dark/icon_object.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-rule="evenodd">
+<path d="m8 1043.9v6l6-3v-6z"/>
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm0.037109 2.1172l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-5 3.498l4 2v3.7656l-4-2v-3.7656zm10 0v3.7656l-4 2v-3.7656l4-2z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_occluder_polygon_2d.svg b/editor/icons/dark/icon_occluder_polygon_2d.svg
new file mode 100644
index 0000000000..dce4d0e3cd
--- /dev/null
+++ b/editor/icons/dark/icon_occluder_polygon_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path d="m1 1045.4 6 6h8v-8l-6-6h-8z" fill="#3552b1"/>
+<path d="m1 1037.4h8l-3 4 3 4h-8z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_omni_light.svg b/editor/icons/dark/icon_omni_light.svg
new file mode 100644
index 0000000000..56d9191cce
--- /dev/null
+++ b/editor/icons/dark/icon_omni_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a5 5 0 0 0 -5 5 5 5 0 0 0 3 4.5762v2.4238h4v-2.4199a5 5 0 0 0 3 -4.5801 5 5 0 0 0 -5 -5zm0 2a3 3 0 0 1 3 3 3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3zm-1 11v1h2v-1h-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_option_button.svg b/editor/icons/dark/icon_option_button.svg
new file mode 100644
index 0000000000..5e9114af48
--- /dev/null
+++ b/editor/icons/dark/icon_option_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h5 1 1 2 1c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2h-1-2-1-1-5zm8 2.9863a1.0001 1.0001 0 0 1 0.7168 1.7207l-3 3a1.0001 1.0001 0 0 1 -1.4141 0l-3-3a1.0001 1.0001 0 0 1 0.69727 -1.7168 1.0001 1.0001 0 0 1 0.7168 0.30273l2.293 2.293 2.293-2.293a1.0001 1.0001 0 0 1 0.69727 -0.30664z" fill="#29d739"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="none"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_override.svg b/editor/icons/dark/icon_override.svg
new file mode 100644
index 0000000000..34a1aabccd
--- /dev/null
+++ b/editor/icons/dark/icon_override.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1c-1.108 0-2 0.89199-2 2v1h4v-1h2v1h4v-1c0-1.108-0.89199-2-2-2h-6z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m3 6c-1.108 0-2 0.89199-2 2v5c0 1.108 0.89199 2 2 2h10c1.108 0 2-0.89199 2-2v-5c0-1.108-0.89199-2-2-2h-4v3h2l-3 4-3-4h2v-3h-4z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_packed_data_container.svg b/editor/icons/dark/icon_packed_data_container.svg
new file mode 100644
index 0000000000..9e64b3570c
--- /dev/null
+++ b/editor/icons/dark/icon_packed_data_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h12a1.0001 1.0001 0 0 0 1 -1v-12a1.0001 1.0001 0 0 0 -1 -1h-12zm1 2h10v10h-10v-10zm1 1v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-6 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-6 3v2h2v-2h-2zm3 0v2h2v-2h-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_packed_scene.svg b/editor/icons/dark/icon_packed_scene.svg
new file mode 100644
index 0000000000..08efa2b833
--- /dev/null
+++ b/editor/icons/dark/icon_packed_scene.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m1 7v6h2v2h12v-8h-14z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+<circle cx="3" cy="1049.4" r="2"/>
+<circle cx="13" cy="1049.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panel.svg b/editor/icons/dark/icon_panel.svg
new file mode 100644
index 0000000000..c86f6a129d
--- /dev/null
+++ b/editor/icons/dark/icon_panel.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panel_container.svg b/editor/icons/dark/icon_panel_container.svg
new file mode 100644
index 0000000000..14dd0a8bd8
--- /dev/null
+++ b/editor/icons/dark/icon_panel_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panels_1.svg b/editor/icons/dark/icon_panels_1.svg
new file mode 100644
index 0000000000..bfad85ecb9
--- /dev/null
+++ b/editor/icons/dark/icon_panels_1.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panels_2.svg b/editor/icons/dark/icon_panels_2.svg
new file mode 100644
index 0000000000..9ae6c02c96
--- /dev/null
+++ b/editor/icons/dark/icon_panels_2.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect y="1036.4" width="16" height="7"/>
+<rect y="1045.4" width="16" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panels_2_alt.svg b/editor/icons/dark/icon_panels_2_alt.svg
new file mode 100644
index 0000000000..9d5a02d2a3
--- /dev/null
+++ b/editor/icons/dark/icon_panels_2_alt.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="9" y="1036.4" width="7" height="16"/>
+<rect y="1036.4" width="7" height="16"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panels_3.svg b/editor/icons/dark/icon_panels_3.svg
new file mode 100644
index 0000000000..dddf33f324
--- /dev/null
+++ b/editor/icons/dark/icon_panels_3.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect y="1036.4" width="16" height="7"/>
+<rect x="9" y="1045.4" width="7" height="7"/>
+<rect y="1045.4" width="7" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panels_3_alt.svg b/editor/icons/dark/icon_panels_3_alt.svg
new file mode 100644
index 0000000000..9885f5de09
--- /dev/null
+++ b/editor/icons/dark/icon_panels_3_alt.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect y="1045.4" width="7" height="7"/>
+<rect x="9" y="1036.4" width="7" height="16"/>
+<rect y="1036.4" width="7" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panels_4.svg b/editor/icons/dark/icon_panels_4.svg
new file mode 100644
index 0000000000..28090e61d7
--- /dev/null
+++ b/editor/icons/dark/icon_panels_4.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="9" y="1045.4" width="7" height="7"/>
+<rect y="1045.4" width="7" height="7"/>
+<rect x="9" y="1036.4" width="7" height="7"/>
+<rect y="1036.4" width="7" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_panorama_sky.svg b/editor/icons/dark/icon_panorama_sky.svg
new file mode 100644
index 0000000000..f3da955dbd
--- /dev/null
+++ b/editor/icons/dark/icon_panorama_sky.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1038.4" y2="1050.4" gradientTransform="matrix(1.0096 0 0 1.0227 -.0096153 -22.593)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#1ec3ff" offset="0"/>
+<stop stop-color="#b2e1ff" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1037.4)">
+<path d="m1 1039.4c4.2749 2.6091 10.765 2.7449 14 0v12c-3.5849-2.6849-9.7929-2.6544-14 0z" fill="url(#a)" stroke-width="15.242"/>
+<rect x="2" y="1046.4" width="3" height="2" ry="1" fill="#fff"/>
+<rect x="8" y="1044.4" width="4" height="2" ry="1" fill="#fff"/>
+<rect x="10" y="1043.4" width="4" height="2" ry="1" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_parallax_background.svg b/editor/icons/dark/icon_parallax_background.svg
new file mode 100644
index 0000000000..fa2ebc1ce7
--- /dev/null
+++ b/editor/icons/dark/icon_parallax_background.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<path d="m1 1039.4a1 1 0 0 1 1 -1v1z" fill="#4f4f4f" fill-opacity=".99608"/>
+<path transform="scale(-1,1)" d="m-15 1039.4a1 1 0 0 1 1 -1v1z" fill="#4f4f4f" fill-opacity=".99608"/>
+<rect x="2" y="1038.4" width="12" height="1" fill="#4f4f4f" fill-opacity=".99608"/>
+<rect x="2" y="1049.4" width="12" height="1" fill="#4f4f4f" fill-opacity=".99608"/>
+<path transform="scale(1,-1)" d="m1-1049.4a1 1 0 0 1 1 -1v1z" fill="#4f4f4f" fill-opacity=".99608"/>
+<path transform="scale(-1)" d="m-15-1049.4a1 1 0 0 1 1 -1v1z" fill="#4f4f4f" fill-opacity=".99608"/>
+<rect x="1" y="1039.4" width="1" height="10" fill="#4f4f4f" fill-opacity=".99608"/>
+<rect x="14" y="1039.4" width="1" height="10" fill="#4f4f4f" fill-opacity=".99608"/>
+<path d="m7 1041.4-3 3 3 3z" fill="#4f4f4f" fill-opacity=".99608" fill-rule="evenodd"/>
+<path d="m9 1041.4 3 3-3 3z" fill="#4f4f4f" fill-opacity=".99608" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_parallax_layer.svg b/editor/icons/dark/icon_parallax_layer.svg
new file mode 100644
index 0000000000..038eac75c2
--- /dev/null
+++ b/editor/icons/dark/icon_parallax_layer.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<path d="m7 1041.4-3 3 3 3z" fill="#6d90ff" fill-opacity=".98824" fill-rule="evenodd"/>
+<path d="m9 1041.4 3 3-3 3z" fill="#6d90ff" fill-opacity=".98824" fill-rule="evenodd"/>
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v10c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-10c9.6e-6 -0.55228 0.44772-0.99999 1-1z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_particle_attractor_2d.svg b/editor/icons/dark/icon_particle_attractor_2d.svg
new file mode 100644
index 0000000000..436bff9b04
--- /dev/null
+++ b/editor/icons/dark/icon_particle_attractor_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a3 7 0 0 0 -2.0801 1.9668 7 3 45 0 0 -2.8691 0.083984 7 3 45 0 0 -0.080078 2.8633 7 3 0 0 0 -1.9707 2.0859 7 3 0 0 0 1.9668 2.0801 3 7 45 0 0 0.083984 2.8691 3 7 45 0 0 2.8633 0.080078 3 7 0 0 0 2.0859 1.9707 3 7 0 0 0 2.0801 -1.9668 7 3 45 0 0 2.8691 -0.083984 7 3 45 0 0 0.080078 -2.8633 7 3 0 0 0 1.9707 -2.0859 7 3 0 0 0 -1.9668 -2.0801 3 7 45 0 0 -0.083984 -2.8691 3 7 45 0 0 -2.8633 -0.080078 3 7 0 0 0 -2.0859 -1.9707zm0 1a2 6 0 0 1 1.2598 1.3438 3 7 45 0 0 -1.2578 0.75977 7 3 45 0 0 -1.2637 -0.75781 2 6 0 0 1 1.2617 -1.3457zm-3.6348 1.5293a6 2 45 0 1 1.2344 0.28906 3 7 0 0 0 -0.35352 1.4238 7 3 0 0 0 -1.4297 0.35742 6 2 45 0 1 -0.058594 -1.8418 6 2 45 0 1 0.60742 -0.22852zm7.0762 0.0039062a2 6 45 0 1 0.80078 0.22461 2 6 45 0 1 -0.060547 1.8418 7 3 0 0 0 -1.4238 -0.35352 3 7 0 0 0 -0.35742 -1.4297 2 6 45 0 1 1.041 -0.2832zm-4.998 0.70703a6 2 45 0 1 0.74023 0.4707 3 7 45 0 0 -0.41211 0.33984 7 3 0 0 0 -0.52344 0.048828 2 6 0 0 1 0.19531 -0.85938zm3.1152 0.0019531a2 6 0 0 1 0.18945 0.85547 7 3 0 0 0 -0.5293 -0.050781 7 3 45 0 0 -0.4043 -0.33594 2 6 45 0 1 0.74414 -0.46875zm-1.5586 1.7578a6 2 0 0 1 0.82031 0.021484 6 2 45 0 1 0.59375 0.56445 6 2 45 0 1 0.56445 0.59375 2 6 0 0 1 0.021484 0.82031 2 6 0 0 1 -0.021484 0.82031 2 6 45 0 1 -0.56445 0.59375 2 6 45 0 1 -0.59375 0.56445 6 2 0 0 1 -0.82031 0.021484 6 2 0 0 1 -0.82031 -0.021484 6 2 45 0 1 -0.59375 -0.56445 6 2 45 0 1 -0.56445 -0.59375 2 6 0 0 1 -0.021484 -0.82031 2 6 0 0 1 0.021484 -0.82031 2 6 45 0 1 0.56445 -0.59375 2 6 45 0 1 0.59375 -0.56445 6 2 0 0 1 0.82031 -0.021484zm2.9004 0.24805a6 2 0 0 1 0.85938 0.19531 2 6 45 0 1 -0.4707 0.74023 7 3 45 0 0 -0.33984 -0.41211 3 7 0 0 0 -0.048828 -0.52344zm-5.8027 0.0039062a3 7 0 0 0 -0.050781 0.5293 3 7 45 0 0 -0.33594 0.4043 6 2 45 0 1 -0.46875 -0.74414 6 2 0 0 1 0.85547 -0.18945zm7.5566 0.48633a6 2 0 0 1 1.3457 1.2617 6 2 0 0 1 -1.3438 1.2598 7 3 45 0 0 -0.75977 -1.2578 3 7 45 0 0 0.75781 -1.2637zm-9.3105 0.0019532a7 3 45 0 0 0.75977 1.2578 3 7 45 0 0 -0.75781 1.2637 6 2 0 0 1 -1.3457 -1.2617 6 2 0 0 1 1.3438 -1.2598zm4.6562 0.25977a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm3.2891 1.8145a6 2 45 0 1 0.46875 0.74414 6 2 0 0 1 -0.85547 0.18945 3 7 0 0 0 0.050781 -0.5293 3 7 45 0 0 0.33594 -0.4043zm-6.5781 0.0019531a7 3 45 0 0 0.33984 0.41211 3 7 0 0 0 0.048828 0.52344 6 2 0 0 1 -0.85938 -0.19531 2 6 45 0 1 0.4707 -0.74023zm-0.89258 1.584a7 3 0 0 0 1.4238 0.35352 3 7 0 0 0 0.35742 1.4297 2 6 45 0 1 -1.8418 0.058594 2 6 45 0 1 0.060547 -1.8418zm8.3652 0a6 2 45 0 1 0.058594 1.8418 6 2 45 0 1 -1.8418 -0.060547 3 7 0 0 0 0.35352 -1.4238 7 3 0 0 0 1.4297 -0.35742zm-2.4316 0.5a2 6 0 0 1 -0.19531 0.85938 6 2 45 0 1 -0.74023 -0.4707 3 7 45 0 0 0.41211 -0.33984 7 3 0 0 0 0.52344 -0.048828zm-3.5 0.001953a7 3 0 0 0 0.5293 0.050781 7 3 45 0 0 0.4043 0.33594 2 6 45 0 1 -0.74414 0.46875 2 6 0 0 1 -0.18945 -0.85547zm1.7461 0.99414a7 3 45 0 0 1.2637 0.75781 2 6 0 0 1 -1.2617 1.3457 2 6 0 0 1 -1.2598 -1.3438 3 7 45 0 0 1.2578 -0.75977z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_particles.svg b/editor/icons/dark/icon_particles.svg
new file mode 100644
index 0000000000..7755b7519c
--- /dev/null
+++ b/editor/icons/dark/icon_particles.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a4.5 5 0 0 0 -4.4141 4.0312 3 3 0 0 0 -2.5859 2.9688 3 3 0 0 0 3 3h8a3 3 0 0 0 3 -3 3 3 0 0 0 -2.5898 -2.9668 4.5 5 0 0 0 -4.4102 -4.0332zm-4 11a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm8 0a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm-4 1a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_particles_2d.svg b/editor/icons/dark/icon_particles_2d.svg
new file mode 100644
index 0000000000..6ac8c29d15
--- /dev/null
+++ b/editor/icons/dark/icon_particles_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a4.5 5 0 0 0 -4.4141 4.0312 3 3 0 0 0 -2.5859 2.9688 3 3 0 0 0 3 3h8a3 3 0 0 0 3 -3 3 3 0 0 0 -2.5898 -2.9668 4.5 5 0 0 0 -4.4102 -4.0332zm-4 11a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm8 0a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm-4 1a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_particles_material.svg b/editor/icons/dark/icon_particles_material.svg
new file mode 100644
index 0000000000..5aabbb0252
--- /dev/null
+++ b/editor/icons/dark/icon_particles_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a4.5 5 0 0 0 -3.5938 2h7.1816a4.5 5 0 0 0 -3.5879 -2z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m4.4062 3a4.5 5 0 0 0 -0.81445 2h8.8105a4.5 5 0 0 0 -0.81445 -2h-7.1816z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m3.5918 5a4.5 5 0 0 0 -0.0058594 0.03125 3 3 0 0 0 -2.4121 1.9688h13.65a3 3 0 0 0 -2.4141 -1.9668 4.5 5 0 0 0 -0.007812 -0.033203h-8.8105z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1.1738 7a3 3 0 0 0 -0.17383 1 3 3 0 0 0 0.17578 1h13.65a3 3 0 0 0 0.17383 -1 3 3 0 0 0 -0.17578 -1h-13.65z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1.1758 9a3 3 0 0 0 2.8242 2h8a3 3 0 0 0 2.8262 -2h-13.65z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m3 13a1 1 0 0 0 1 1 1 1 0 0 0 1 -1h-2zm5 0a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm3 0a1 1 0 0 0 1 1 1 1 0 0 0 1 -1h-2z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m4 12a1 1 0 0 0 -1 1h2a1 1 0 0 0 -1 -1zm8 0a1 1 0 0 0 -1 1h2a1 1 0 0 0 -1 -1z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_path.svg b/editor/icons/dark/icon_path.svg
new file mode 100644
index 0000000000..86c7fac35a
--- /dev/null
+++ b/editor/icons/dark/icon_path.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="3" cy="1049.4" r="2" fill="#ff5f5f" fill-opacity=".99608"/>
+<circle cx="13" cy="1039.4" r="2" fill="#ff5f5f" fill-opacity=".99608"/>
+<path d="m3 1049.4c0-9 10-1 10-10" fill="none" stroke="#ff5f5f" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_path_2d.svg b/editor/icons/dark/icon_path_2d.svg
new file mode 100644
index 0000000000..06b6caa954
--- /dev/null
+++ b/editor/icons/dark/icon_path_2d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#6d90ff" fill-opacity=".98824">
+<circle cx="3" cy="1049.4" r="2"/>
+<circle cx="13" cy="1039.4" r="2"/>
+<path d="m12 1039.4c0 2.0648-0.49246 2.8244-1.1367 3.2754-0.64426 0.451-1.7129 0.6055-2.9629 0.7305s-2.6814 0.2205-3.9121 1.082c-1.2307 0.8615-1.9883 2.4769-1.9883 4.9121h2c0-2.0648 0.49246-2.8224 1.1367-3.2734 0.64426-0.451 1.7129-0.6055 2.9629-0.7305s2.6814-0.2205 3.9121-1.082c1.2307-0.8615 1.9883-2.4789 1.9883-4.9141h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_path_follow.svg b/editor/icons/dark/icon_path_follow.svg
new file mode 100644
index 0000000000..c5b8176b75
--- /dev/null
+++ b/editor/icons/dark/icon_path_follow.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f" fill-opacity=".99608">
+<circle cx="3" cy="1049.4" r="2"/>
+<path d="m12 1039.4c0 2.0648-0.49246 2.8244-1.1367 3.2754-0.64426 0.451-1.7129 0.6055-2.9629 0.7305s-2.6814 0.2205-3.9121 1.082c-1.2307 0.8615-1.9883 2.4769-1.9883 4.9121h2c0-2.0648 0.49246-2.8224 1.1367-3.2734 0.64426-0.451 1.7129-0.6055 2.9629-0.7305s2.6814-0.2205 3.9121-1.082c1.2307-0.8615 1.9883-2.4789 1.9883-4.9141h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m10 1040.4h6l-3-4z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_path_follow_2d.svg b/editor/icons/dark/icon_path_follow_2d.svg
new file mode 100644
index 0000000000..e296fad421
--- /dev/null
+++ b/editor/icons/dark/icon_path_follow_2d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#6d90ff" fill-opacity=".98824">
+<circle cx="3" cy="1049.4" r="2"/>
+<path d="m12 1039.4c0 2.0648-0.49246 2.8244-1.1367 3.2754-0.64426 0.451-1.7129 0.6055-2.9629 0.7305s-2.6814 0.2205-3.9121 1.082c-1.2307 0.8615-1.9883 2.4769-1.9883 4.9121h2c0-2.0648 0.49246-2.8224 1.1367-3.2734 0.64426-0.451 1.7129-0.6055 2.9629-0.7305s2.6814-0.2205 3.9121-1.082c1.2307-0.8615 1.9883-2.4789 1.9883-4.9141h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m10 1040.4h6l-3-4z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_pause.svg b/editor/icons/dark/icon_pause.svg
new file mode 100644
index 0000000000..344cf12aa1
--- /dev/null
+++ b/editor/icons/dark/icon_pause.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 3a1.0001 1.0001 0 0 0 -1 1v8a1.0001 1.0001 0 0 0 1 1h2a1 1 0 0 0 1 -1v-8a1 1 0 0 0 -1 -1h-2zm6 0a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h2a1.0001 1.0001 0 0 0 1 -1v-8a1.0001 1.0001 0 0 0 -1 -1h-2z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_pin.svg b/editor/icons/dark/icon_pin.svg
new file mode 100644
index 0000000000..c9988452de
--- /dev/null
+++ b/editor/icons/dark/icon_pin.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m3 1046.4h10l-2-3h-6z" fill-rule="evenodd"/>
+<path transform="translate(0 1036.4)" d="m4 1v1l1 1v3h6v-3l1-1v-1h-8z" fill-rule="evenodd"/>
+<rect x="7" y="1047.4" width="2" height="2"/>
+<path d="m7 1049.4 1 2 1-2h-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_pin_joint.svg b/editor/icons/dark/icon_pin_joint.svg
new file mode 100644
index 0000000000..1a2b5dedb2
--- /dev/null
+++ b/editor/icons/dark/icon_pin_joint.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f">
+<path d="m1.9289 1043.3 7.0711 7.071l0.70711-3.5355-4.2426-4.2426z" fill-rule="evenodd"/>
+<path d="m9 1037.6-0.70711 0.7071v1.4142l-2.1213 2.1214 4.2426 4.2426 2.1213-2.1213h1.4142l0.70711-0.7071-5.6569-5.6569z" fill-rule="evenodd"/>
+<rect transform="matrix(.70711 .70711 -.70711 .70711 0 0)" x="743.08" y="737.35" width="2" height="2"/>
+<path d="m2.636 1048.2-0.70711 2.1213 2.1213-0.7071-1.4142-1.4142z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_pin_joint_2d.svg b/editor/icons/dark/icon_pin_joint_2d.svg
new file mode 100644
index 0000000000..0afd1c1541
--- /dev/null
+++ b/editor/icons/dark/icon_pin_joint_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1.2715l-0.70703 0.70703v1.4141l-2.1211 2.123 4.2422 4.2422 2.1211-2.1211h1.4141l0.70703-0.70703-5.6562-5.6582zm-3.5352 4.9512l-3.5352 0.70703 7.0703 7.0703 0.70703-3.5352-4.2422-4.2422zm-1.4141 4.2422l-1.4141 1.4141-0.70703 2.1211 2.1211-0.70703 1.4141-1.4141-1.4141-1.4141z" fill="#6d90ff" fill-opacity=".98824" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_pin_pressed.svg b/editor/icons/dark/icon_pin_pressed.svg
new file mode 100644
index 0000000000..c9988452de
--- /dev/null
+++ b/editor/icons/dark/icon_pin_pressed.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m3 1046.4h10l-2-3h-6z" fill-rule="evenodd"/>
+<path transform="translate(0 1036.4)" d="m4 1v1l1 1v3h6v-3l1-1v-1h-8z" fill-rule="evenodd"/>
+<rect x="7" y="1047.4" width="2" height="2"/>
+<path d="m7 1049.4 1 2 1-2h-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_plane.svg b/editor/icons/dark/icon_plane.svg
new file mode 100644
index 0000000000..3e597419e2
--- /dev/null
+++ b/editor/icons/dark/icon_plane.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1044.4 7 3 7-3-7-3z" fill="#4f4f4f" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_plane_mesh.svg b/editor/icons/dark/icon_plane_mesh.svg
new file mode 100644
index 0000000000..d90b6dd31e
--- /dev/null
+++ b/editor/icons/dark/icon_plane_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1048.4h12l-3-8h-6z" fill="none" stroke="#fea900" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_plane_shape.svg b/editor/icons/dark/icon_plane_shape.svg
new file mode 100644
index 0000000000..27395b6a42
--- /dev/null
+++ b/editor/icons/dark/icon_plane_shape.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1044.4 7 3 7-3-7-3z" fill="#a2d2ff" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_play.svg b/editor/icons/dark/icon_play.svg
new file mode 100644
index 0000000000..531d704dac
--- /dev/null
+++ b/editor/icons/dark/icon_play.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m4 1048.4v-8l7 4z" fill="#4f4f4f" fill-rule="evenodd" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_play_backwards.svg b/editor/icons/dark/icon_play_backwards.svg
new file mode 100644
index 0000000000..2dd2d63fe7
--- /dev/null
+++ b/editor/icons/dark/icon_play_backwards.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m12 1048.4v-8l-7 4z" fill="#4f4f4f" fill-rule="evenodd" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_play_custom.svg b/editor/icons/dark/icon_play_custom.svg
new file mode 100644
index 0000000000..bdb0138d6d
--- /dev/null
+++ b/editor/icons/dark/icon_play_custom.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m1 7v6a2 2 0 0 0 2 2h12v-8h-14zm3 1h4v1h4v5h-4-4v-5-1z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_play_scene.svg b/editor/icons/dark/icon_play_scene.svg
new file mode 100644
index 0000000000..4f0279b07c
--- /dev/null
+++ b/editor/icons/dark/icon_play_scene.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m1 7v6h2v2h12v-8h-14zm5 1l5 3-5 3v-6z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+<circle cx="3" cy="1049.4" r="2"/>
+<circle cx="13" cy="1049.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_play_start.svg b/editor/icons/dark/icon_play_start.svg
new file mode 100644
index 0000000000..2b917aab27
--- /dev/null
+++ b/editor/icons/dark/icon_play_start.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m7.0001 1048.4v-8l7 4z" fill-rule="evenodd" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+<path d="m3 1039.4c0.55226 1e-4 0.99994 0.4477 1 1v8c-5.5e-5 0.5523-0.44774 0.9999-1 1h-1v-1h-1v-8h1v-1z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<circle transform="scale(-1,1)" cx="-2" cy="1040.4" r="1"/>
+<circle transform="scale(-1,1)" cx="-2" cy="1048.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_play_start_backwards.svg b/editor/icons/dark/icon_play_start_backwards.svg
new file mode 100644
index 0000000000..8fb7563169
--- /dev/null
+++ b/editor/icons/dark/icon_play_start_backwards.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m8.9999 1048.4v-8l-7 4z" fill-rule="evenodd" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+<path d="m13 1039.4c-0.55226 1e-4 -0.99994 0.4477-1 1v8c5.5e-5 0.5523 0.44774 0.9999 1 1h1v-1h1v-8h-1v-1z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<circle cx="14" cy="1040.4" r="1"/>
+<circle cx="14" cy="1048.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_polygon_2_d.svg b/editor/icons/dark/icon_polygon_2_d.svg
new file mode 100644
index 0000000000..e1b5bc82aa
--- /dev/null
+++ b/editor/icons/dark/icon_polygon_2_d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#6d90ff" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_polygon_path_finder.svg b/editor/icons/dark/icon_polygon_path_finder.svg
new file mode 100644
index 0000000000..d8e836b13b
--- /dev/null
+++ b/editor/icons/dark/icon_polygon_path_finder.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 5.52e-5 -0.99994 0.44774-1 1v1h2v-2h-1zm3 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h1.4141l0.29297-0.29297c0.62956-0.62999 0.18361-1.7067-0.70703-1.707h-1zm-12 4v2h2v-2h-2zm11 2l-3 8 3-2 3 2-3-8zm-11 2v2h2v-2h-2zm0 4v1c5.52e-5 0.55226 0.44774 0.99994 1 1h1v-2h-2zm4 0v2h1.9023c-7.835e-4 -0.2513 0.043539-0.50069 0.13086-0.73633l0.47461-1.2637h-2.5078z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_popup.svg b/editor/icons/dark/icon_popup.svg
new file mode 100644
index 0000000000..1aa7da9c64
--- /dev/null
+++ b/editor/icons/dark/icon_popup.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm4 2h2v6h-2v-6zm0 8h2v2h-2v-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_popup_dialog.svg b/editor/icons/dark/icon_popup_dialog.svg
new file mode 100644
index 0000000000..5b6988d099
--- /dev/null
+++ b/editor/icons/dark/icon_popup_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2h-10zm9 1h1v1h-1v-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8h-14zm6 1h2v5h-2v-5zm0 6h2v2h-2v-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_popup_menu.svg b/editor/icons/dark/icon_popup_menu.svg
new file mode 100644
index 0000000000..1f8f15f252
--- /dev/null
+++ b/editor/icons/dark/icon_popup_menu.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m2 6a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-7a1 1 0 0 0 -1 -1h-12zm1 2h10v2h-10v-2zm0 3h10v2h-10v-2z"/>
+<path transform="translate(0 1036.4)" d="m1 1v4h6v-4h-6zm1 1h4l-2 2-2-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_popup_panel.svg b/editor/icons/dark/icon_popup_panel.svg
new file mode 100644
index 0000000000..7955c624b3
--- /dev/null
+++ b/editor/icons/dark/icon_popup_panel.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m2 6c-0.55228 0-1 0.44772-1 1v7c0 0.55228 0.44772 1 1 1h12c0.55228 0 1-0.44772 1-1v-7c0-0.55228-0.44772-1-1-1z"/>
+<path transform="translate(0 1036.4)" d="m1 1v4h6v-4h-6zm1 1h4l-2 2-2-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_portal.svg b/editor/icons/dark/icon_portal.svg
new file mode 100644
index 0000000000..58aa904305
--- /dev/null
+++ b/editor/icons/dark/icon_portal.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a5 7 0 0 0 -5 7 5 7 0 0 0 5 7 5 7 0 0 0 5 -7 5 7 0 0 0 -5 -7zm0 2a3 5 0 0 1 3 5 3 5 0 0 1 -3 5 3 5 0 0 1 -3 -5 3 5 0 0 1 3 -5z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_position_2d.svg b/editor/icons/dark/icon_position_2d.svg
new file mode 100644
index 0000000000..35bcb9b389
--- /dev/null
+++ b/editor/icons/dark/icon_position_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v4h2v-4h-2zm-6 6v2h4v-2h-4zm10 0v2h4v-2h-4zm-4 4v4h2v-4h-2z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_position_3d.svg b/editor/icons/dark/icon_position_3d.svg
new file mode 100644
index 0000000000..89cbe40ffc
--- /dev/null
+++ b/editor/icons/dark/icon_position_3d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v4h2v-4h-2zm-6 6v2h4v-2h-4zm10 0v2h4v-2h-4zm-4 4v4h2v-4h-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_prism_mesh.svg b/editor/icons/dark/icon_prism_mesh.svg
new file mode 100644
index 0000000000..c2a64904e9
--- /dev/null
+++ b/editor/icons/dark/icon_prism_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9824 1.002a1.0001 1.0001 0 0 0 -0.81445 0.44336l-5.9727 8.9609-0.027344 0.039062a1 1 0 0 0 -0.0625 0.10742 1 1 0 0 0 0.44727 1.3418l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1 1 0 0 0 0.44726 -1.3418 1 1 0 0 0 -0.0625 -0.10742l-6-9a1.0001 1.0001 0 0 0 -0.84961 -0.44336zm-0.98242 4.3008v7.0801l-3.5391-1.7715 3.5391-5.3086zm2 0l3.5391 5.3086-3.5391 1.7715v-7.0801z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fea900" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_procedural_sky.svg b/editor/icons/dark/icon_procedural_sky.svg
new file mode 100644
index 0000000000..b3bc927409
--- /dev/null
+++ b/editor/icons/dark/icon_procedural_sky.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1040.4" y2="1050.4" gradientUnits="userSpaceOnUse">
+<stop stop-color="#1ec3ff" offset="0"/>
+<stop stop-color="#b2e1ff" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1037.4)">
+<path d="m8 1040.4a7 7 0 0 0 -7 7 7 7 0 0 0 0.68555 3h12.631a7 7 0 0 0 0.68359 -3 7 7 0 0 0 -7 -7z" fill="url(#a)"/>
+<rect x="2" y="1047.4" width="3" height="2" ry="1" fill="#fff"/>
+<rect x="7" y="1045.4" width="4" height="2" ry="1" fill="#fff"/>
+<rect x="9" y="1044.4" width="4" height="2" ry="1" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_1.svg b/editor/icons/dark/icon_progress_1.svg
new file mode 100644
index 0000000000..8b2d9e8b45
--- /dev/null
+++ b/editor/icons/dark/icon_progress_1.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".99608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_2.svg b/editor/icons/dark/icon_progress_2.svg
new file mode 100644
index 0000000000..8f7c358ba1
--- /dev/null
+++ b/editor/icons/dark/icon_progress_2.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".99608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_3.svg b/editor/icons/dark/icon_progress_3.svg
new file mode 100644
index 0000000000..78bd84d642
--- /dev/null
+++ b/editor/icons/dark/icon_progress_3.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".99608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_4.svg b/editor/icons/dark/icon_progress_4.svg
new file mode 100644
index 0000000000..7283ad79cb
--- /dev/null
+++ b/editor/icons/dark/icon_progress_4.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_5.svg b/editor/icons/dark/icon_progress_5.svg
new file mode 100644
index 0000000000..2651292260
--- /dev/null
+++ b/editor/icons/dark/icon_progress_5.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".99608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_6.svg b/editor/icons/dark/icon_progress_6.svg
new file mode 100644
index 0000000000..1b44ececc5
--- /dev/null
+++ b/editor/icons/dark/icon_progress_6.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".99608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_7.svg b/editor/icons/dark/icon_progress_7.svg
new file mode 100644
index 0000000000..7560a605fb
--- /dev/null
+++ b/editor/icons/dark/icon_progress_7.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".99608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_8.svg b/editor/icons/dark/icon_progress_8.svg
new file mode 100644
index 0000000000..d98826dfba
--- /dev/null
+++ b/editor/icons/dark/icon_progress_8.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".99608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_progress_bar.svg b/editor/icons/dark/icon_progress_bar.svg
new file mode 100644
index 0000000000..3da8ff43b8
--- /dev/null
+++ b/editor/icons/dark/icon_progress_bar.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2zm0 2h10v6h-10z"/>
+<rect x="4" y="1042.4" width="1" height="4"/>
+<rect x="6" y="1042.4" width="1" height="4"/>
+<rect x="8" y="1042.4" width="1" height="4"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_proximity_group.svg b/editor/icons/dark/icon_proximity_group.svg
new file mode 100644
index 0000000000..32145798e3
--- /dev/null
+++ b/editor/icons/dark/icon_proximity_group.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f" fill-opacity=".99608">
+<rect x="1" y="1037.4" width="2" height="14"/>
+<rect x="1" y="1037.4" width="14" height="2"/>
+<rect transform="scale(-1)" x="-15" y="-1051.4" width="2" height="14"/>
+<rect transform="scale(-1)" x="-15" y="-1051.4" width="14" height="2"/>
+<circle cx="10.5" cy="1041.9" r="1.5"/>
+<circle cx="5.5" cy="1046.9" r="1.5"/>
+<circle cx="10.5" cy="1046.9" r="1.5"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_quad.svg b/editor/icons/dark/icon_quad.svg
new file mode 100644
index 0000000000..6d8c149558
--- /dev/null
+++ b/editor/icons/dark/icon_quad.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 10 2h2 12v-2-12h-12-2zm3.4141 2h8.5859v8.5859l-8.5859-8.5859zm-1.4141 1.4141l8.5859 8.5859h-8.5859v-8.5859z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_quad_mesh.svg b/editor/icons/dark/icon_quad_mesh.svg
new file mode 100644
index 0000000000..cf7ba9ac0d
--- /dev/null
+++ b/editor/icons/dark/icon_quad_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1037.4v14h-14v-14zm-2 2h-8.5859l8.5859 8.5859zm-10 1.4141v8.5859h8.5859z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fea900" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_quat.svg b/editor/icons/dark/icon_quat.svg
new file mode 100644
index 0000000000..c5c9006d66
--- /dev/null
+++ b/editor/icons/dark/icon_quat.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m7 1v6h2v-6h-2zm0 12v2h2v-2h-2z"/>
+<path d="m11 1039.8v2.0137a5 2 0 0 1 2 1.5957 5 2 0 0 1 -5 2 5 2 0 0 1 -5 -2 5 2 0 0 1 2 -1.5977v-2.0097a7 4 0 0 0 -4 3.6074 7 4 0 0 0 7 4 7 4 0 0 0 7 -4 7 4 0 0 0 -4 -3.6094z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_range.svg b/editor/icons/dark/icon_range.svg
new file mode 100644
index 0000000000..e19ab80f7d
--- /dev/null
+++ b/editor/icons/dark/icon_range.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<rect x="1" y="1039.4" width="2" height="10"/>
+<rect x="1" y="1043.4" width="13" height="2"/>
+<rect x="13" y="1039.4" width="2" height="10"/>
+<rect x="5" y="1041.4" width="2" height="6"/>
+<rect x="9" y="1041.4" width="2" height="6"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rating_no_star.svg b/editor/icons/dark/icon_rating_no_star.svg
new file mode 100644
index 0000000000..d81408b637
--- /dev/null
+++ b/editor/icons/dark/icon_rating_no_star.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill="#c3ae65">
+<path transform="translate(0 1036.4)" d="m8 1.7246-2.375 4.0977-4.625 1.0977 3.2363 3.4063-0.35938 4.6738 4.1387-1.9766 4.1582 1.9414-0.39648-4.6523 3.2227-3.3926-4.625-1.0977z" fill="#fea900" fill-opacity=".58824"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rating_star.svg b/editor/icons/dark/icon_rating_star.svg
new file mode 100644
index 0000000000..3a1e344d4b
--- /dev/null
+++ b/editor/icons/dark/icon_rating_star.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1038.1-2.3741 4.0973-4.6259 1.0978l3.2361 3.4074-0.35866 4.6735 4.1389-1.9766 4.1572 1.9421-0.39534-4.6532 3.2218-3.3932-4.6259-1.0978-2.3741-4.0973z" fill="#fea900"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_ray_cast.svg b/editor/icons/dark/icon_ray_cast.svg
new file mode 100644
index 0000000000..656c02d018
--- /dev/null
+++ b/editor/icons/dark/icon_ray_cast.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f" fill-opacity=".99608">
+<rect x="7" y="1037.4" width="2" height="9"/>
+<path d="m4 1046.4h8l-4 5z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_ray_cast_2d.svg b/editor/icons/dark/icon_ray_cast_2d.svg
new file mode 100644
index 0000000000..434d8cc62a
--- /dev/null
+++ b/editor/icons/dark/icon_ray_cast_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v9h-3l4 5 4-5h-3v-9h-2z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_ray_shape.svg b/editor/icons/dark/icon_ray_shape.svg
new file mode 100644
index 0000000000..4591b0a3f9
--- /dev/null
+++ b/editor/icons/dark/icon_ray_shape.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path d="m8 1051.4-2-2v-7l2 2z" fill="#a2d2ff"/>
+<path d="m8 1047.9-2-1.5v-4l2 2z" fill="#2998ff"/>
+<path d="m8 1037.4-6 5 6 4z" fill="#a2d2ff"/>
+<path d="m8 1051.4 2-2v-7l-2 2z" fill="#2998ff"/>
+<path d="m8 1037.4 6 5-6 4z" fill="#2998ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_ray_shape_2d.svg b/editor/icons/dark/icon_ray_shape_2d.svg
new file mode 100644
index 0000000000..89533b8407
--- /dev/null
+++ b/editor/icons/dark/icon_ray_shape_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#68b6ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+<path d="m8 1038.4v12"/>
+<path d="m5 1047.4 3 3 3-3"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rayito.svg b/editor/icons/dark/icon_rayito.svg
new file mode 100644
index 0000000000..4e1e90eaf9
--- /dev/null
+++ b/editor/icons/dark/icon_rayito.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fea900">
+<rect transform="matrix(1 0 -.14142 .98995 0 0)" x="152.19" y="1047.9" width="7" height="7.0711"/>
+<path d="m6 1043.4h8l-9 8z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_real.svg b/editor/icons/dark/icon_real.svg
new file mode 100644
index 0000000000..68f477f727
--- /dev/null
+++ b/editor/icons/dark/icon_real.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<rect x="3" y="1040.4" width="2" height="11"/>
+<rect x="3" y="1039.4" width="4" height="2"/>
+<path transform="translate(0 1038.4)" d="m7 1v2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2v2a4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4z"/>
+<rect x="3" y="1045.4" width="4" height="2"/>
+<rect transform="rotate(90)" x="1049.4" y="-12" width="2" height="2"/>
+<path transform="translate(0 1038.4)" d="m8 7v2a2 2 0 0 1 2 2h2a4 4 0 0 0 -4 -4z"/>
+<rect transform="rotate(90)" x="1045.4" y="-8" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rectangle_shape_2d.svg b/editor/icons/dark/icon_rectangle_shape_2d.svg
new file mode 100644
index 0000000000..d5cf89f5dc
--- /dev/null
+++ b/editor/icons/dark/icon_rectangle_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1040.4" width="12" height="8" rx="1.7383e-5" ry="1.7383e-5" color="#000000" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_reference_rect.svg b/editor/icons/dark/icon_reference_rect.svg
new file mode 100644
index 0000000000..0bc52b44c8
--- /dev/null
+++ b/editor/icons/dark/icon_reference_rect.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<rect x="1" y="1037.4" width="2" height="2"/>
+<rect x="13" y="1037.4" width="2" height="2"/>
+<rect x="4" y="1037.4" width="8" height="2"/>
+<rect x="4" y="1049.4" width="8" height="2"/>
+<rect x="13" y="1049.4" width="2" height="2"/>
+<rect x="1" y="1049.4" width="2" height="2"/>
+<rect transform="rotate(90)" x="1040.4" y="-3" width="8" height="2"/>
+<rect transform="rotate(90)" x="1040.4" y="-15" width="8" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_reflection_probe.svg b/editor/icons/dark/icon_reflection_probe.svg
new file mode 100644
index 0000000000..0cb1c8e723
--- /dev/null
+++ b/editor/icons/dark/icon_reflection_probe.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#ff5f5f" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2">
+<path d="m2 1045.4v5h12v-4"/>
+<path d="m2 1040.4 5 6 7-7"/>
+<path d="m14 1043.4v-4h-4" stroke-linecap="round"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_region_edit.svg b/editor/icons/dark/icon_region_edit.svg
new file mode 100644
index 0000000000..4cd5fcb8ad
--- /dev/null
+++ b/editor/icons/dark/icon_region_edit.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="6" y="1042.4" width="6" height="6"/>
+<rect x="6" y="1037.4" width="6" height="4" fill-opacity=".32549"/>
+<rect x="1" y="1037.4" width="4" height="4" fill-opacity=".32549"/>
+<rect x="1" y="1042.4" width="4" height="6" fill-opacity=".32549"/>
+<rect x="1" y="1049.4" width="4" height="2" fill-opacity=".32549"/>
+<rect x="6" y="1049.4" width="6" height="2" fill-opacity=".32549"/>
+<rect x="13" y="1042.4" width="2" height="6" fill-opacity=".32549"/>
+<rect x="13" y="1037.4" width="2" height="4" fill-opacity=".32549"/>
+<rect x="13" y="1049.4" width="2" height="2" fill-opacity=".32549"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_reload.svg b/editor/icons/dark/icon_reload.svg
new file mode 100644
index 0000000000..4c5f0e7dbc
--- /dev/null
+++ b/editor/icons/dark/icon_reload.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m9 2a6 6 0 0 0 -6 6h2a4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -4 4v2a6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z"/>
+<path transform="matrix(0 -1.1926 1.5492 0 -1617 1049.3)" d="m4.118 1048.3-1.6771-0.9683-1.6771-0.9682 1.6771-0.9683 1.6771-0.9682-1e-7 1.9365z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_reload_small.svg b/editor/icons/dark/icon_reload_small.svg
new file mode 100644
index 0000000000..5de3537136
--- /dev/null
+++ b/editor/icons/dark/icon_reload_small.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path d="m8 1039.4a6 6 0 0 0 -6 6h2a4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -4 4v2a6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z"/>
+<path transform="matrix(0 -1.1926 1.5492 0 -1618 1050.3)" d="m4.118 1048.3-1.6771-0.9683-1.6771-0.9682 1.6771-0.9683 1.6771-0.9682-1e-7 1.9365z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_remote.svg b/editor/icons/dark/icon_remote.svg
new file mode 100644
index 0000000000..5381ba07da
--- /dev/null
+++ b/editor/icons/dark/icon_remote.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<circle cx="8" cy="1043.4" r="2"/>
+<rect x="7" y="1044.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8.0879 1a6 6 0 0 0 -4.3301 1.7578 6 6 0 0 0 0 8.4844l1.416-1.416a4 4 0 0 1 -1.1738 -2.8262 4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -1.1738 2.8262l1.416 1.416a6 6 0 0 0 0 -8.4844 6 6 0 0 0 -4.1543 -1.7578z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_remote_transform.svg b/editor/icons/dark/icon_remote_transform.svg
new file mode 100644
index 0000000000..cfeadc9bd2
--- /dev/null
+++ b/editor/icons/dark/icon_remote_transform.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m12 1047.4a4 4 0 0 1 -2 3.4641 4 4 0 0 1 -4 0 4 4 0 0 1 -2 -3.4641h4z" fill="#ff5f5f"/>
+<rect x="7" y="1045.4" width="2" height="4" ry="1" fill="#ff5f5f"/>
+<path d="m1.9378 1041.9a7 7 0 0 1 6.0622 -3.5 7 7 0 0 1 6.0622 3.5" fill="none" stroke="#ff5f5f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m5.1022 1044.6a3 3 0 0 1 2.8978 -2.2235 3 3 0 0 1 2.8978 2.2235" fill="none" stroke="#ff5f5f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_remote_transform_2d.svg b/editor/icons/dark/icon_remote_transform_2d.svg
new file mode 100644
index 0000000000..443a21382b
--- /dev/null
+++ b/editor/icons/dark/icon_remote_transform_2d.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m12 1047.4a4 4 0 0 1 -2 3.4641 4 4 0 0 1 -4 0 4 4 0 0 1 -2 -3.4641h4z" fill="#6d90ff" fill-opacity=".98824"/>
+<rect x="7" y="1045.4" width="2" height="4" ry="1" fill="#6d90ff" fill-opacity=".98824"/>
+<path d="m1.9378 1041.9a7 7 0 0 1 6.0622 -3.5 7 7 0 0 1 6.0622 3.5" fill="none" stroke="#6d90ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m5.1022 1044.6a3 3 0 0 1 2.8978 -2.2235 3 3 0 0 1 2.8978 2.2235" fill="none" stroke="#6d90ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_remove.svg b/editor/icons/dark/icon_remove.svg
new file mode 100644
index 0000000000..4d461e251e
--- /dev/null
+++ b/editor/icons/dark/icon_remove.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m2 5v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2v-8h-12zm1 2h2v6h-2v-6zm4 0h2v6h-2v-6zm4 0h2v6h-2v-6z"/>
+<rect x="1" y="1038.4" width="14" height="2"/>
+<rect x="5" y="1037.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rename.svg b/editor/icons/dark/icon_rename.svg
new file mode 100644
index 0000000000..3c013a4e3b
--- /dev/null
+++ b/editor/icons/dark/icon_rename.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 2v2h2v8h-2v2h2c0.55228 0 1-0.4477 1-1 0 0.5523 0.44772 1 1 1h2v-2h-2v-8h2v-2h-2c-0.55228 0-1 0.44772-1 1 0-0.55228-0.44772-1-1-1h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_reparent.svg b/editor/icons/dark/icon_reparent.svg
new file mode 100644
index 0000000000..03094ad341
--- /dev/null
+++ b/editor/icons/dark/icon_reparent.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v5.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h6.541a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -0.72852 -0.73047v-5.541a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m9 1l-4 3 4 3v-2a3 3 0 0 1 3 3v2h2v-2a5 5 0 0 0 -5 -5v-2z" fill="#00f010"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_resource_preloader.svg b/editor/icons/dark/icon_resource_preloader.svg
new file mode 100644
index 0000000000..c7d0b1b542
--- /dev/null
+++ b/editor/icons/dark/icon_resource_preloader.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill="#4f4f4f" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm0.037109 2.1172l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-5 3.5l4 2v3.7637l-4-2v-3.7637zm10 0v3.7637l-4 2v-3.7637l4-2z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m11 1042.4-6-3-3 2 6 3z"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rich_text_label.svg b/editor/icons/dark/icon_rich_text_label.svg
new file mode 100644
index 0000000000..531909d92f
--- /dev/null
+++ b/editor/icons/dark/icon_rich_text_label.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<rect x="1" y="1037.4" width="8" height="2"/>
+<rect x="1" y="1041.4" width="2" height="2"/>
+<rect x="5" y="1041.4" width="4" height="2"/>
+<rect x="1" y="1045.4" width="8" height="2"/>
+<rect x="1" y="1049.4" width="4" height="2"/>
+<rect x="7" y="1049.4" width="2" height="2"/>
+<path d="m12 1048.4h-2l3 3 3-3h-2v-8h2l-3-3-3 3h2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rigid_body.svg b/editor/icons/dark/icon_rigid_body.svg
new file mode 100644
index 0000000000..87fff0b0e4
--- /dev/null
+++ b/editor/icons/dark/icon_rigid_body.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 0.035156 0.69922 7 7 0 0 0 0.27734 1.3691 7 7 0 0 0 0.91016 1.8848 7 7 0 0 0 0.30273 0.4082c7.85e-4 -0.00256 0.0011667-0.005252 0.0019532-0.007812a7 7 0 0 0 5.4727 2.6465 7 7 0 0 0 3.2422 -0.80273c0.001375 3.93e-4 0.002531 0.00156 0.003906 0.001953a7 7 0 0 0 0.035156 -0.021485 7 7 0 0 0 0.42578 -0.25 7 7 0 0 0 0.16992 -0.10352 7 7 0 0 0 0.36914 -0.26953 7 7 0 0 0 0.20508 -0.15625 7 7 0 0 0 0.3418 -0.30859 7 7 0 0 0 0.16406 -0.1543 7 7 0 0 0 0.33008 -0.36133 7 7 0 0 0 0.14062 -0.16016 7 7 0 0 0 0.27734 -0.37305 7 7 0 0 0 0.13867 -0.19531 7 7 0 0 0 0.21875 -0.36133 7 7 0 0 0 0.14258 -0.25 7 7 0 0 0 0.15625 -0.33398 7 7 0 0 0 0.13867 -0.31055 7 7 0 0 0 0.10742 -0.30859 7 7 0 0 0 0.11914 -0.35352 7 7 0 0 0 0.087891 -0.36914 7 7 0 0 0 0.066406 -0.29297 7 7 0 0 0 0.056641 -0.40039 7 7 0 0 0 0.037109 -0.3125 7 7 0 0 0 0.025391 -0.55273 7 7 0 0 0 -4.3848 -6.4883 7 7 0 0 0 -0.007812 -0.0039063 7 7 0 0 0 -0.001953 0 7 7 0 0 0 -0.61523 -0.21289 7 7 0 0 0 -0.044922 -0.015625 7 7 0 0 0 -0.0058594 -0.0019531 7 7 0 0 0 -0.55078 -0.13086 7 7 0 0 0 -0.14062 -0.03125 7 7 0 0 0 -0.55078 -0.072266 7 7 0 0 0 -0.14258 -0.017578 7 7 0 0 0 -0.55469 -0.025391zm1.9512 1.334a6 6 0 0 1 4.0488 5.666h-7a2 2 0 0 1 -0.94922 1.6992c1.345 2.0268 2.6013 3.2645 3.8965 3.9688a6 6 0 0 1 -1.9473 0.33203 6 6 0 0 1 -5.0547 -2.7695c0.23771-0.5785 0.50336-1.1403 0.82617-1.6563a2 2 0 0 1 -0.77148 -1.5742h-1a6 6 0 0 1 1.123 -3.4863c0.14632 0.65093 0.35776 1.2833 0.68359 1.8848a2 2 0 0 1 1.1934 -0.39844 2 2 0 0 1 1.0508 0.30078c1.3464-2.0289 2.6038-3.2631 3.9004-3.9668z"/>
+<circle cx="5" cy="1044.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rigid_body_2d.svg b/editor/icons/dark/icon_rigid_body_2d.svg
new file mode 100644
index 0000000000..5e88969b81
--- /dev/null
+++ b/editor/icons/dark/icon_rigid_body_2d.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 1a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z" fill="#6d90ff" fill-opacity=".98824"/>
+<path d="m8 1037.4a7 7 0 0 0 -5.0879 2.2051c0.10495 1.1207 0.35417 2.1959 0.89453 3.1933a2 2 0 0 1 1.1934 -0.3984 2 2 0 0 1 1.0508 0.3008c1.7873-2.6932 3.4181-3.9904 5.1914-4.4981a7 7 0 0 0 -3.2422 -0.8027zm-7 7a7 7 0 0 0 1.5254 4.3613c0.30281-0.9877 0.71628-1.9403 1.2461-2.7871a2 2 0 0 1 -0.77148 -1.5742h-2zm6 0a2 2 0 0 1 -0.94922 1.6992c1.7887 2.6953 3.4204 3.9932 5.1953 4.5a7 7 0 0 0 3.7539 -6.1992h-8z" fill="#6d90ff" fill-opacity=".98824"/>
+<circle cx="5" cy="1044.4" r="2" fill="#6d90ff" fill-opacity=".98824"/>
+<path d="m45 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 1a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z" fill="#6d90ff" fill-opacity=".98824"/>
+<path d="m38 1044.4c5 0.01 9 0.01 14 0-2-2.9934-5-4-7-4s-5 1.0066-7 4z" fill="#6d90ff" fill-opacity=".98824" fill-rule="evenodd"/>
+<path d="m38 1044.4c0 3.866 3.134 7 7 7s7-3.134 7-7c-2 2.9933-5 4-7 4s-5-1.0067-7-4z" fill="#a3b6f2"/>
+<path d="m-9 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 1a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z" fill="#a3b6f2"/>
+<circle cx="-9" cy="1044.4" r="2" fill="#a3b6f2"/>
+<path d="m-9 1037.4a7 7 0 0 0 -3.5 0.9375l3.5 6.0625 3.5-6.0625a7 7 0 0 0 -3.5 -0.9375zm0 7 3.5 6.0625a7 7 0 0 0 2.5625 -2.5625 7 7 0 0 0 0.9375 -3.5h-7zh-7a7 7 0 0 0 0.9375 3.5 7 7 0 0 0 2.5625 2.5625l3.5-6.0625z" fill="#a3b6f2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_room.svg b/editor/icons/dark/icon_room.svg
new file mode 100644
index 0000000000..d5d32f35d0
--- /dev/null
+++ b/editor/icons/dark/icon_room.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm1.0371 2.6172l4 2v3.7637l-4-2v-3.7637zm-1 5.5l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809z" color="#000000" color-rendering="auto" fill="#ff5f5f" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_room_bounds.svg b/editor/icons/dark/icon_room_bounds.svg
new file mode 100644
index 0000000000..505b10aebf
--- /dev/null
+++ b/editor/icons/dark/icon_room_bounds.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v1 1h1v-1h1v-1h-1-1zm12 0v1h1v1h1v-1-1h-1-1zm-5.0371 0.0019531a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm1.0371 2.6172l4 2v3.7637l-4-2v-3.7637zm-1 5.5l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-7 3.8809v1 1h1 1v-1h-1v-1h-1zm13 0v1h-1v1h1 1v-1-1h-1z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rotate_0.svg b/editor/icons/dark/icon_rotate_0.svg
new file mode 100644
index 0000000000..0afebb7d1e
--- /dev/null
+++ b/editor/icons/dark/icon_rotate_0.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rotate_180.svg b/editor/icons/dark/icon_rotate_180.svg
new file mode 100644
index 0000000000..e6d2d8806a
--- /dev/null
+++ b/editor/icons/dark/icon_rotate_180.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m8 1038.4a6 6 0 0 1 6 6h-6z"/>
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<rect transform="scale(-1)" x="-9" y="-1050.4" width="2" height="7"/>
+<path d="m14 1044.4a6 6 0 0 1 -6 6v-6z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rotate_270.svg b/editor/icons/dark/icon_rotate_270.svg
new file mode 100644
index 0000000000..0b1ac39651
--- /dev/null
+++ b/editor/icons/dark/icon_rotate_270.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m8 1038.4a6 6 0 0 1 6 6h-6z"/>
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<rect transform="rotate(-90)" x="-1045.4" y="2" width="2" height="7"/>
+<path d="m8 1050.4a6 6 0 0 1 -6 -6h6z"/>
+<path d="m14 1044.4a6 6 0 0 1 -6 6v-6z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_rotate_90.svg b/editor/icons/dark/icon_rotate_90.svg
new file mode 100644
index 0000000000..513ef5388c
--- /dev/null
+++ b/editor/icons/dark/icon_rotate_90.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m8 1038.4a6 6 0 0 1 6 6h-6z"/>
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<rect transform="rotate(90)" x="1043.4" y="-14" width="2" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sample_library.svg b/editor/icons/dark/icon_sample_library.svg
new file mode 100644
index 0000000000..5292330aef
--- /dev/null
+++ b/editor/icons/dark/icon_sample_library.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff4040">
+<path transform="translate(0 1036.4)" d="m9 8v1 5 1h5c0.55228 0 1-0.44772 1-1v-5c0-0.55228-0.44772-1-1-1v4l-1-1-1 1v-4z"/>
+<path d="m7.0215 1037.4a1.0001 1.0001 0 0 0 -1 0.875l-0.58984 4.7226-0.52344-1.0468a1.0001 1.0001 0 0 0 -0.89453 -0.5528h-2a1.0001 1.0001 0 1 0 0 2h1.3828l1.7227 3.4473a1.0001 1.0001 0 0 0 1.8867 -0.3223l0.58984-4.7226 0.52344 1.0449a1.0001 1.0001 0 0 0 0.89453 0.5527h3a1.0001 1.0001 0 1 0 0 -2h-2.3809l-1.7246-3.4472a1.0001 1.0001 0 0 0 -0.88672 -0.5508z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_save.svg b/editor/icons/dark/icon_save.svg
new file mode 100644
index 0000000000..831cb8b614
--- /dev/null
+++ b/editor/icons/dark/icon_save.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-8l-4-4zh8v6h-8zm5 8c1.1046 0 2 0.89543 2 2 0 1.1046-0.89543 2-2 2s-2-0.89543-2-2c0-1.1046 0.89543-2 2-2z"/>
+<rect x="4" y="1037.4" width="3" height="5"/>
+<path d="m11 1037.4h1l3 3v2h-4z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_script.svg b/editor/icons/dark/icon_script.svg
new file mode 100644
index 0000000000..04c70b6985
--- /dev/null
+++ b/editor/icons/dark/icon_script.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1v1a1 1 0 0 0 -1 1v10h-1v-2h-2v2a1 1 0 0 0 0.5 0.86523 1 1 0 0 0 0.5 0.13477v1h7a2 2 0 0 0 2 -2v-8h3v-2a2 2 0 0 0 -2 -2h-7z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m6 1c-1.1046 0-2 0.89543-2 2v7h-2-1v1 2c0 1.1046 0.89543 2 2 2s2-0.89543 2-2v-10c0-0.55228 0.44772-1 1-1s1 0.44772 1 1v1 1 1h1 4v-1h-4v-1-1c0-1.1046-0.89543-2-2-2zm-4 10h2v2c0 0.55228-0.44772 1-1 1s-1-0.44772-1-1v-2z" fill="#000000"/>
+<circle cx="3" cy="1048.4" rx="1" ry="1" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_script_create.svg b/editor/icons/dark/icon_script_create.svg
new file mode 100644
index 0000000000..aa9d692d14
--- /dev/null
+++ b/editor/icons/dark/icon_script_create.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1v1c-0.55228 0-1 0.44772-1 1v10h-1v-2h-2v2c2.826e-4 0.35698 0.19084 0.68674 0.5 0.86523 0.15194 0.088045 0.32439 0.13452 0.5 0.13477v1h5 1v-1h-1v-4h2v-2h2v-3h3v-2c0-1.1046-0.89543-2-2-2h-7z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m6 1c-1.1046 0-2 0.89543-2 2v7h-2-1v1 2c0 1.1046 0.89543 2 2 2s2-0.89543 2-2v-10c0-0.55228 0.44772-1 1-1s1 0.44772 1 1v1 1 1h1 4v-1h-4v-1-1c0-1.1046-0.89543-2-2-2zm-4 10h2v2c0 0.55228-0.44772 1-1 1s-1-0.44772-1-1v-2z" fill="#000000"/>
+<circle cx="3" cy="1048.4" rx="1" ry="1" fill="#4f4f4f"/>
+<path d="m13 1049.4h2v-2h-2v-2h-2v2h-2v2h2v2h2z" fill="#00f010" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_script_remove.svg b/editor/icons/dark/icon_script_remove.svg
new file mode 100644
index 0000000000..d619a3f94f
--- /dev/null
+++ b/editor/icons/dark/icon_script_remove.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1v1c-0.55228 0-1 0.44772-1 1v10h-1v-2h-2v2c2.826e-4 0.35698 0.19084 0.68674 0.5 0.86523 0.15194 0.088045 0.32439 0.13452 0.5 0.13477v1h5.6348l-1.584-1.584 1.4141-1.4141-1.4141-1.416 3.5352-3.5352 1.4141 1.4141v-0.46484-3h3v-2c0-1.1046-0.89543-2-2-2h-7z" fill="#4f4f4f"/>
+<path transform="translate(0 1036.4)" d="m6 1c-1.1046 0-2 0.89543-2 2v7h-2-1v1 2c0 1.1046 0.89543 2 2 2s2-0.89543 2-2v-10c0-0.55228 0.44772-1 1-1s1 0.44772 1 1v1 1 1h1 4v-1h-4v-1-1c0-1.1046-0.89543-2-2-2zm-4 10h2v2c0 0.55228-0.44772 1-1 1s-1-0.44772-1-1v-2z" fill="#000000"/>
+<circle cx="3" cy="1048.4" rx="1" ry="1" fill="#4f4f4f"/>
+<path d="m13.414 1048.4 1.4142-1.4142-1.4142-1.4142l-1.4142 1.4142-1.4142-1.4142-1.4142 1.4142 1.4142 1.4142-1.4142 1.4142 1.4142 1.4142 1.4142-1.4142 1.4142 1.4142 1.4142-1.4142z" fill="#ff4040" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_scroll_bar.svg b/editor/icons/dark/icon_scroll_bar.svg
new file mode 100644
index 0000000000..45a37b576a
--- /dev/null
+++ b/editor/icons/dark/icon_scroll_bar.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2zm0 2h10v6h-10z" fill="#29d739"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="none"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_scroll_container.svg b/editor/icons/dark/icon_scroll_container.svg
new file mode 100644
index 0000000000..3c4d3ce47d
--- /dev/null
+++ b/editor/icons/dark/icon_scroll_container.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<path d="m10 1042.4v4l2-2z"/>
+<path d="m6 1042.4v4l-2-2z"/>
+<path d="m6 1042.4h4l-2-2z"/>
+<path d="m6 1046.4h4l-2 2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_search.svg b/editor/icons/dark/icon_search.svg
new file mode 100644
index 0000000000..13ebcd817c
--- /dev/null
+++ b/editor/icons/dark/icon_search.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path d="m6 1037.4a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 5 -5 5 5 0 0 0 -5 -5zm0 2a3 3 0 0 1 3 3 3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3z"/>
+<rect transform="matrix(.70711 -.70711 .70711 .70711 0 0)" x="-733.82" y="745.3" width="2" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_segment_shape_2d.svg b/editor/icons/dark/icon_segment_shape_2d.svg
new file mode 100644
index 0000000000..beb1dd3d3f
--- /dev/null
+++ b/editor/icons/dark/icon_segment_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1050.4 12-12" color="#000000" fill="none" stroke="#68b6ff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_shader.svg b/editor/icons/dark/icon_shader.svg
new file mode 100644
index 0000000000..46fd13c5b3
--- /dev/null
+++ b/editor/icons/dark/icon_shader.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h2 6 3l-2-2h-8z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m1 3v2h2v-2h-2zm8 0v2h5l-2-2h-3z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-2h-2zm8 0v1c0 0.554 0.44599 1 1 1h3 2v-1l-1-1h-5z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h2v-2h-2zm12 0v2h2v-2h-2z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h2v-2h-2zm12 0v2h2v-2h-2z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1c5.52e-5 0.5523 0.44774 0.9999 1 1h12c0.55226-1e-4 0.99994-0.4477 1-1v-1h-2-10-2z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m1 11v2h2v-2h-2zm12 0v2h2v-2h-2z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_short_cut.svg b/editor/icons/dark/icon_short_cut.svg
new file mode 100644
index 0000000000..204b53f9db
--- /dev/null
+++ b/editor/icons/dark/icon_short_cut.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m4 2c-0.55228 0-1 0.4477-1 1v9.084c4.015e-4 0.506 0.448 0.91602 1 0.91602h8c0.552 0 0.9996-0.41002 1-0.91602v-9.084c0-0.5523-0.44772-1-1-1h-8zm-3 2v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-1v9a0.99998 0.99998 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-9h-1zm6 0h3l-1 3h2l-4 4 1-3h-2l1-4z" fill="#4f4f4f"/>
+<rect x="27" y="1038.4" width="7" height="14" fill="#000000"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_signal.svg b/editor/icons/dark/icon_signal.svg
new file mode 100644
index 0000000000..c764bdc1a7
--- /dev/null
+++ b/editor/icons/dark/icon_signal.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff4040">
+<rect x="5" y="1043.4" width="6" height="2"/>
+<path transform="matrix(0 1.281 -.9245 0 -948.3 1038)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z"/>
+<rect x="1" y="1039.4" width="2" height="10"/>
+<rect x="3" y="1047.4" width="4" height="2"/>
+<rect x="3" y="1039.4" width="4" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_skeleton.svg b/editor/icons/dark/icon_skeleton.svg
new file mode 100644
index 0000000000..cfd23a5e51
--- /dev/null
+++ b/editor/icons/dark/icon_skeleton.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m6 2a4 4 0 0 0 -4 4 4 4 0 0 0 3 3.8691v-0.86914h1v1h1v-1h1 1v1h1v-1h1v0.86719a4 4 0 0 0 3 -3.8672 4 4 0 0 0 -4 -4h-4zm-1 3a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-4 2h2v1h-2v-1z"/>
+<path transform="translate(0 1036.4)" d="m4 9v4h1v-4h-1zm7 0v4h1v-4h-1zm-5 3v1 2h4v-2-1h-1v1h-2v-1h-1z"/>
+<path d="m8 1049.4a2 2 0 0 1 -1 1.732 2 2 0 0 1 -2 0 2 2 0 0 1 -1 -1.732h2z"/>
+<path d="m12 1049.4a2 2 0 0 1 -1 1.732 2 2 0 0 1 -2 0 2 2 0 0 1 -1 -1.732h2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_slider_joint.svg b/editor/icons/dark/icon_slider_joint.svg
new file mode 100644
index 0000000000..c46855342e
--- /dev/null
+++ b/editor/icons/dark/icon_slider_joint.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1051.4h5l-1-4z" fill="#ff5f5f" fill-opacity=".99608"/>
+<path d="m6 1048.4 9-9v3l-8 8z" fill="#fb9b9b"/>
+<path d="m10 1040.4-9 9v-3l8-8z" fill="#fb9b9b"/>
+<path d="m13 1037.4h-5l1 4z" fill="#ff5f5f" fill-opacity=".99608"/>
+<path d="m10 1038.4h-5" fill="none" stroke="#fb9b9b" stroke-linecap="round" stroke-width="2"/>
+<path d="m11 1050.4h-5" fill="none" stroke="#fb9b9b" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_slot.svg b/editor/icons/dark/icon_slot.svg
new file mode 100644
index 0000000000..9e8a5038e3
--- /dev/null
+++ b/editor/icons/dark/icon_slot.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#00f010">
+<rect x="1" y="1043.4" width="6" height="2"/>
+<path transform="matrix(0 1.281 -.9245 0 -952.3 1038)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z"/>
+<path d="m15 1039.4v10h-2-4v-2h4v-6h-4v-2h4 2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_snap.svg b/editor/icons/dark/icon_snap.svg
new file mode 100644
index 0000000000..7c3e75f7cd
--- /dev/null
+++ b/editor/icons/dark/icon_snap.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1036.4v3h-3v2h3v4h-3v2h3v3h2v-3-2-4h4 2 3v-2h-3v-3h-2v3h-4v-3h-2z" fill="#f3f3f3"/>
+<path d="m11 1043.4a4 4 0 0 0 -4 4h2a2 2 0 0 1 2 -2 2 2 0 0 1 2 2h2a4 4 0 0 0 -4 -4z" fill="#ff4040"/>
+<rect x="7" y="1047.4" width="2" height="2" fill="#ff4040"/>
+<rect x="13" y="1047.4" width="2" height="2" fill="#ff4040"/>
+<rect x="7" y="1049.4" width="2" height="2" fill="#000000"/>
+<rect x="13" y="1049.4" width="2" height="2" fil#000000fff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sort.svg b/editor/icons/dark/icon_sort.svg
new file mode 100644
index 0000000000..87bab3cad7
--- /dev/null
+++ b/editor/icons/dark/icon_sort.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1v2h6v-2h-6zm-5.0156 0.0019531a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l0.29297-0.29297v7.1719l-0.29297-0.29297a1 1 0 0 0 -0.7207 -0.29102 1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l2 2a1.0001 1.0001 0 0 0 1.4141 0l2-2a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -1.4141 0l-0.29297 0.29297v-7.1719l0.29297 0.29297a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102zm5.0156 5.998v2h4v-2h-4zm0 6v2h2v-2h-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#4f4f4f" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sound_room_params.svg b/editor/icons/dark/icon_sound_room_params.svg
new file mode 100644
index 0000000000..f9c6624284
--- /dev/null
+++ b/editor/icons/dark/icon_sound_room_params.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path d="m8 1037.4-4 5h-3v4h3l4 5v-14z"/>
+<path d="m13 1039.4v10h1v-10h-1z"/>
+<path d="m10 1039.4v10h1v-10h-1z"/>
+<rect x="9" y="1041.4" width="3" height="1"/>
+<rect x="12" y="1046.4" width="3" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_spatial.svg b/editor/icons/dark/icon_spatial.svg
new file mode 100644
index 0000000000..b89620314b
--- /dev/null
+++ b/editor/icons/dark/icon_spatial.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_spatial_material.svg b/editor/icons/dark/icon_spatial_material.svg
new file mode 100644
index 0000000000..57b6fd360d
--- /dev/null
+++ b/editor/icons/dark/icon_spatial_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-3.7891 1.8945h8.4727l-3.7891-1.8945a1.0001 1.0001 0 0 0 -0.48438 -0.10352z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m3.7637 3l-2.2109 1.1055a1.0001 1.0001 0 0 0 -0.55273 0.89453h3.2363l3.7637-1.8809 3.7637 1.8809h3.2363a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-2.2109-1.1055h-8.4727z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-0.38086l0.76172 0.38086h8.4766l0.76172-0.38086v0.38086h2v-2h-3.2363l-3.7637 1.8828-3.7637-1.8828h-3.2363z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h2v-2h-2zm2.7617 0l3.2383 1.6191v0.38086h2v-0.38086l3.2383-1.6191h-8.4766zm9.2383 0v2h2v-2h-2z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h3.2344l-1.2344-0.61719v-1.3828h-2zm6 0v2h2v-2h-2zm6 0v1.3828l-1.2344 0.61719h3.2344v-2h-2z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m3.7637 13l3.7891 1.8945a1.0001 1.0001 0 0 0 0.48438 0.10547 1.0001 1.0001 0 0 0 0.41016 -0.10547l3.7891-1.8945h-8.4727z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m1 11a1.0001 1.0001 0 0 0 0.55273 0.89453l2.2109 1.1055h8.4727l2.2109-1.1055a1.0001 1.0001 0 0 0 0.55273 -0.89453h-3.2344l-2.7656 1.3828v-1.3828h-2v1.3828l-2.7656-1.3828h-3.2344z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_spatial_sample_player.svg b/editor/icons/dark/icon_spatial_sample_player.svg
new file mode 100644
index 0000000000..e0925fdd7a
--- /dev/null
+++ b/editor/icons/dark/icon_spatial_sample_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1l-4 5h-3v4h3l4 5v-14zm5 2v10h1v-10h-1zm-3 3v5h1v-5h-1z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_spatial_stream_player.svg b/editor/icons/dark/icon_spatial_stream_player.svg
new file mode 100644
index 0000000000..60c5749bb8
--- /dev/null
+++ b/editor/icons/dark/icon_spatial_stream_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 2c-0.55228 0-1 0.44772-1 1v1 7h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h2 1c0.55228 0 1-0.44772 1-1v-3-7h6v5h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h3c0.55228 0 1-0.44772 1-1v-3-6c0-0.55228-0.44772-1-1-1h-7z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sphere_mesh.svg b/editor/icons/dark/icon_sphere_mesh.svg
new file mode 100644
index 0000000000..317741595e
--- /dev/null
+++ b/editor/icons/dark/icon_sphere_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1c-3.8541 0-7 3.1459-7 7 0 3.8542 3.1459 7 7 7 3.8541 0 7-3.1458 7-7 0-3.8541-3.1459-7-7-7zm-1 2.0977v4.8711c-1.2931-0.071342-2.6061-0.29819-3.9434-0.69141 0.30081-2.0978 1.8852-3.7665 3.9434-4.1797zm2 0c2.0549 0.41253 3.637 2.0767 3.9414 4.1699-1.3046 0.36677-2.6158 0.60259-3.9414 0.6875v-4.8574zm3.7852 6.2812c-0.50864 1.7788-1.9499 3.1531-3.7852 3.5215v-2.9512c1.2792-0.072301 2.5419-0.26704 3.7852-0.57031zm-9.5645 0.017578c1.2733 0.31892 2.5337 0.50215 3.7793 0.5625v2.9414c-1.8291-0.36719-3.266-1.7339-3.7793-3.5039z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fea900" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sphere_shape.svg b/editor/icons/dark/icon_sphere_shape.svg
new file mode 100644
index 0000000000..f2995ae96a
--- /dev/null
+++ b/editor/icons/dark/icon_sphere_shape.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="7" fill="#68b6ff"/>
+<circle cx="6" cy="1041.4" r="2" fill="#a2d2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_spin_box.svg b/editor/icons/dark/icon_spin_box.svg
new file mode 100644
index 0000000000..2d0376e280
--- /dev/null
+++ b/editor/icons/dark/icon_spin_box.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h7v-2h-7v-6h7v-2z"/>
+<rect x="8" y="1041.4" width="2" height="6"/>
+<path d="m11 1043.4h4l-2-3z" fill-rule="evenodd"/>
+<path d="m11 1045.4h4l-2 3z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_spot_light.svg b/editor/icons/dark/icon_spot_light.svg
new file mode 100644
index 0000000000..9e333acce0
--- /dev/null
+++ b/editor/icons/dark/icon_spot_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1a1 1 0 0 0 -1 1v3.6934c-1.7861 0.86608-3 2.4605-3 4.3066h4a2 2 0 0 0 2 2 2 2 0 0 0 2 -2h4c0-1.8462-1.2139-3.4406-3-4.3066v-3.6934a1 1 0 0 0 -1 -1h-4zm-1.0977 9.6348l-1.7324 1 1 1.7305 1.7324-1-1-1.7305zm6.1953 0l-1 1.7305 1.7324 1 1-1.7305-1.7324-1zm-4.0977 2.3652v2h2v-2h-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sprite.svg b/editor/icons/dark/icon_sprite.svg
new file mode 100644
index 0000000000..7c7f7dde76
--- /dev/null
+++ b/editor/icons/dark/icon_sprite.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-4 5a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm8 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-7 3h6a3 3 0 0 1 -1.5 2.5977 3 3 0 0 1 -3 0 3 3 0 0 1 -1.5 -2.5977z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sprite_3d.svg b/editor/icons/dark/icon_sprite_3d.svg
new file mode 100644
index 0000000000..9f6d4f9fe5
--- /dev/null
+++ b/editor/icons/dark/icon_sprite_3d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-4 5a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm8 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-7 3h6a3 3 0 0 1 -1.5 2.5977 3 3 0 0 1 -3 0 3 3 0 0 1 -1.5 -2.5977z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_sprite_frames.svg b/editor/icons/dark/icon_sprite_frames.svg
new file mode 100644
index 0000000000..ce87ca2b22
--- /dev/null
+++ b/editor/icons/dark/icon_sprite_frames.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 5 -5 5 5 0 0 0 -5 -5zm-3 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm4 2v2h2v-2h-2zm-5.0039 0.49219a0.50005 0.50005 0 0 1 0.35742 0.86133c-0.61785 0.6179-1.4924 0.89648-2.3535 0.89648s-1.7357-0.27858-2.3535-0.89648a0.50005 0.50005 0 0 1 0.34766 -0.85742 0.50005 0.50005 0 0 1 0.35938 0.15039c0.38215 0.3822 1.0076 0.60352 1.6465 0.60352s1.2643-0.22132 1.6465-0.60352a0.50005 0.50005 0 0 1 0.34961 -0.1543zm2.0039 2.5078v2h2v-2h-2zm3 0v2h2v-2h-2zm-6 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_static_body.svg b/editor/icons/dark/icon_static_body.svg
new file mode 100644
index 0000000000..04944fd5c8
--- /dev/null
+++ b/editor/icons/dark/icon_static_body.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -1.4141 0.58594 2 2 0 0 0 -0.58594 1.4141v10a2 2 0 0 0 0.58594 1.4141 2 2 0 0 0 1.4141 0.58594h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2h-10zm0 1h10a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-10a1 1 0 0 1 1 -1zm0 1v2h2v-2h-2zm8 0v2h2v-2h-2zm-8 8v2h2v-2h-2zm8 0v2h2v-2h-2z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_static_body_2d.svg b/editor/icons/dark/icon_static_body_2d.svg
new file mode 100644
index 0000000000..36a63281d2
--- /dev/null
+++ b/editor/icons/dark/icon_static_body_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -1.4141 0.58594 2 2 0 0 0 -0.58594 1.4141v10a2 2 0 0 0 0.58594 1.4141 2 2 0 0 0 1.4141 0.58594h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2h-10zm0 1h10a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-10a1 1 0 0 1 1 -1zm0 1v2h2v-2h-2zm8 0v2h2v-2h-2zm-8 8v2h2v-2h-2zm8 0v2h2v-2h-2z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_stop.svg b/editor/icons/dark/icon_stop.svg
new file mode 100644
index 0000000000..1b856b5153
--- /dev/null
+++ b/editor/icons/dark/icon_stop.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m4 1048.4v-8h8v8z" fill="#4f4f4f" fill-rule="evenodd" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_stream_player.svg b/editor/icons/dark/icon_stream_player.svg
new file mode 100644
index 0000000000..b9592a6cd8
--- /dev/null
+++ b/editor/icons/dark/icon_stream_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 2c-0.55228 0-1 0.44772-1 1v1 7h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h2 1c0.55228 0 1-0.44772 1-1v-3-7h6v5h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h3c0.55228 0 1-0.44772 1-1v-3-6c0-0.55228-0.44772-1-1-1h-7z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_stream_texture.svg b/editor/icons/dark/icon_stream_texture.svg
new file mode 100644
index 0000000000..1a78b5b41a
--- /dev/null
+++ b/editor/icons/dark/icon_stream_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h6v-2h2v-2h-2-5v-8h5v-2h-6zm6 2v2h2v-2h-2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm-2-4v-2h-2v-1h-1v1h-1v1h-1v1h-1v1h2 2v-1h2z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_string.svg b/editor/icons/dark/icon_string.svg
new file mode 100644
index 0000000000..9bb7518995
--- /dev/null
+++ b/editor/icons/dark/icon_string.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1v2h2v10h-2v2h2a1 1 0 0 0 1 -1 1 1 0 0 0 1 1h2v-2h-2v-10h2v-2h-2a1 1 0 0 0 -1 1 1 1 0 0 0 -1 -1h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_style_box_empty.svg b/editor/icons/dark/icon_style_box_empty.svg
new file mode 100644
index 0000000000..c3791985cf
--- /dev/null
+++ b/editor/icons/dark/icon_style_box_empty.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h2v-2h-1zm3 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2v-1c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-1z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-2h-2zm12 0v0.23242c0.31584 0.1783 0.57817 0.43795 0.75977 0.75195 0.19142 0.33153 0.43699 0.67036 0.69922 1.0156h0.54102v-2h-2z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m12 7c-0.43047 0.7456-0.94451 1.3867-1.4355 2h2.8711c-0.49104-0.6133-1.0051-1.2544-1.4355-2zm2.459 0c0.17438 0.2296 0.352 0.46082 0.54102 0.69922v-0.69922h-0.54102z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h2v-2h-2zm9.5645 0c-0.55248 0.69003-1.0583 1.3421-1.334 2h5.5391c-0.2757-0.65786-0.78151-1.31-1.334-2h-2.8711z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1c5.52e-5 0.5523 0.44774 0.9999 1 1h1v-2h-2zm4 0v2h2v-2h-2zm4.1836 0c0.41312 1.1628 1.5119 2 2.8164 2s2.4033-0.83718 2.8164-2h-5.6328z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m9.2305 11c-0.13656 0.32585-0.23047 0.65576-0.23047 1 0 0.35235 0.07201 0.68593 0.18359 1h5.6328c0.11158-0.31407 0.18359-0.64765 0.18359-1 0-0.34424-0.093909-0.67415-0.23047-1h-5.5391z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_style_box_flat.svg b/editor/icons/dark/icon_style_box_flat.svg
new file mode 100644
index 0000000000..f0270c7cc5
--- /dev/null
+++ b/editor/icons/dark/icon_style_box_flat.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h14v-1c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-12z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m1 3v2h14v-2h-14z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h8.582c0.25686-0.33847 0.49465-0.66934 0.68555-1 0.33885-0.5859 0.95103-0.96109 1.627-0.99609 0.7512-0.04 1.4613 0.34489 1.8379 0.99609 0.18899 0.32737 0.42831 0.66049 0.68555 1h0.58203v-2h-14z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h7.0547c0.14116-0.20345 0.28508-0.40233 0.42383-0.58398 0.38601-0.5053 0.76348-0.96794 1.1035-1.416h-8.582zm11 0c-0.43047 0.7456-0.94451 1.3867-1.4355 2h2.8711c-0.49104-0.6133-1.0051-1.2544-1.4355-2zm2.418 0c0.18626 0.24583 0.37928 0.49419 0.58203 0.75v-0.75h-0.58203z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h6.1172c0.17955-0.78395 0.54577-1.4354 0.9375-2h-7.0547zm9.5645 0c-0.55248 0.69003-1.0583 1.3421-1.334 2h5.5391c-0.2757-0.65786-0.78151-1.31-1.334-2h-2.8711z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1c5.52e-5 0.5523 0.44774 0.9999 1 1h6.0371c-0.44511-0.58388-0.76161-1.2639-0.91992-2h-6.1172zm8.1836 0c0.41312 1.1628 1.5119 2 2.8164 2s2.4033-0.83718 2.8164-2h-5.6328z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m1 11v2h6.1172c-0.06966-0.3239-0.11719-0.65596-0.11719-1 0-0.35655 0.045474-0.68688 0.11719-1h-6.1172zm8.2305 0c-0.13656 0.32585-0.23047 0.65576-0.23047 1 0 0.35235 0.07201 0.68593 0.18359 1h5.6328c0.11158-0.31407 0.18359-0.64765 0.18359-1 0-0.34424-0.093909-0.67415-0.23047-1h-5.5391z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_style_box_texture.svg b/editor/icons/dark/icon_style_box_texture.svg
new file mode 100644
index 0000000000..36fdd7f66b
--- /dev/null
+++ b/editor/icons/dark/icon_style_box_texture.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v1h2 10 2v-1a1.0001 1.0001 0 0 0 -1 -1h-12z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m1 3v2h2v-2h-2zm12 0v2h2v-2h-2zm-4 1v1h1v-1h-1z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-2h-2zm7 0v1h-2v1h3.543c0.26215-0.34438 0.50373-0.68039 0.69727-1.0156a2.0315 2.0315 0 0 1 0.75977 -0.75195v-0.23242h-1-1-1zm5 0v0.23242a2.0315 2.0315 0 0 1 0.75977 0.75195c0.19142 0.33153 0.43699 0.67033 0.69922 1.0156h0.54102v-2h-2z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h2v-2h-2zm4 0v1h-1v1h4.0156c0.14585-0.2113 0.29419-0.41592 0.4375-0.60352 0.38121-0.49904 0.75394-0.95521 1.0898-1.3965h-3.543-1zm7 0c-0.43047 0.7456-0.94451 1.3867-1.4355 2h2.8711c-0.49104-0.6133-1.0051-1.2544-1.4355-2zm2.459 0c0.17438 0.22962 0.352 0.46082 0.54102 0.69922v-0.69922h-0.54102z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h2v-2h-2zm9.5645 0c-0.55248 0.69003-1.0583 1.3421-1.334 2h5.5391c-0.2757-0.65786-0.78151-1.31-1.334-2h-2.8711z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1a1.0001 1.0001 0 0 0 1 1h5.998c-0.4429-0.5864-0.77294-1.2592-0.92578-2h-4.0723-2zm8.1836 0c0.41312 1.1628 1.5119 2 2.8164 2s2.4033-0.83718 2.8164-2h-5.6328z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m1 11v2h2v-2h-2zm8.2305 0c-0.13656 0.32585-0.23047 0.65576-0.23047 1 0 0.35235 0.07201 0.68593 0.18359 1h5.6328c0.11158-0.31407 0.18359-0.64765 0.18359-1 0-0.34424-0.093909-0.67415-0.23047-1h-5.5391z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tab_container.svg b/editor/icons/dark/icon_tab_container.svg
new file mode 100644
index 0000000000..d47e1522c6
--- /dev/null
+++ b/editor/icons/dark/icon_tab_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h5v2 2h5v6h-10v-10zm7 0h3v2h-3v-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tabs.svg b/editor/icons/dark/icon_tabs.svg
new file mode 100644
index 0000000000..b8bfdefa90
--- /dev/null
+++ b/editor/icons/dark/icon_tabs.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 4c-1.108 0-1.8178 0.9071-2 2l-1 6h-1v2h4 6 4v-2h-2l-1-6c-0.18216-1.0929-0.89199-2-2-2h-5z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_test_cube.svg b/editor/icons/dark/icon_test_cube.svg
new file mode 100644
index 0000000000..e6d3ac88f2
--- /dev/null
+++ b/editor/icons/dark/icon_test_cube.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 1.1802e-5)" stroke="#ff5f5f" stroke-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm0.037109 2.1172l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-5 3.5l4 2v3.7637l-4-2v-3.7637zm10 0v3.7637l-4 2v-3.7637l4-2z" color="#000000" color-rendering="auto" fill="#ff5f5f" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" stroke="none" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_text_edit.svg b/editor/icons/dark/icon_text_edit.svg
new file mode 100644
index 0000000000..7c449830b1
--- /dev/null
+++ b/editor/icons/dark/icon_text_edit.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm1 1v4h1v-4h-1z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_texture_button.svg b/editor/icons/dark/icon_texture_button.svg
new file mode 100644
index 0000000000..1de3da6cda
--- /dev/null
+++ b/editor/icons/dark/icon_texture_button.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 3v8h14v-8h-1-12-1zm8 2h1v1h1v2h1v2h-2-2-2-2v-1h1v-1h1v-1h2v-1h1v-1z" fill="#29d739"/>
+<rect transform="scale(1,-1)" x="1" y="-1049.4" width="14" height="2.0001" fill="#29d739"/>
+<rect transform="scale(1,-1)" x="1" y="-1049.4" width="14" height="2.0001" fill-opacity=".078431"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_texture_progress.svg b/editor/icons/dark/icon_texture_progress.svg
new file mode 100644
index 0000000000..17aae8239a
--- /dev/null
+++ b/editor/icons/dark/icon_texture_progress.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2zm0 2h10v6h-10z"/>
+<rect x="4" y="1042.4" width="1" height="2"/>
+<rect x="6" y="1043.4" width="1" height="3"/>
+<rect x="8" y="1042.4" width="1" height="4"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_texture_rect.svg b/editor/icons/dark/icon_texture_rect.svg
new file mode 100644
index 0000000000..540c237f28
--- /dev/null
+++ b/editor/icons/dark/icon_texture_rect.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1038.4" width="12" height="12" fill="none" stroke="#29d739" stroke-linecap="round" stroke-width="2"/>
+<path d="m9 1042.4v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-2h-1v-1h-1z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_theme.svg b/editor/icons/dark/icon_theme.svg
new file mode 100644
index 0000000000..4d5c017f14
--- /dev/null
+++ b/editor/icons/dark/icon_theme.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.5 2h3l-0.5-2h-2zm-3.2422 1.3438l-0.65625 0.65625h1.75l-1.0938-0.65625zm8.4844 0l-1.0957 0.65625h1.752l-0.65625-0.65625z" fill="#ff2929"/>
+<path transform="translate(0 1036.4)" d="m3.1016 3l-0.75781 0.75781 0.74414 1.2422h9.8242l0.74414-1.2422-0.75781-0.75781h-1.752l-0.89844 0.53906a5 5 0 0 0 -0.68555 -0.28516l-0.0625-0.25391h-3l-0.064453 0.25781a5 5 0 0 0 -0.68945 0.2793l-0.89453-0.53711h-1.75z" fill="#ffe337"/>
+<path transform="translate(0 1036.4)" d="m3.0879 5l0.45117 0.75195a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625h5.2695a2 2 0 0 1 1.7305 -1 2 2 0 0 1 1.7285 1h5.2715l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l0.44922-0.74805h-9.8242z" fill="#74ff34"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h5.2715a2 2 0 0 1 -0.27148 -1 2 2 0 0 1 0.26953 -1h-5.2695zm8.7285 0a2 2 0 0 1 0.27148 1 2 2 0 0 1 -0.26953 1h5.2695v-2h-5.2715z" fill="#2cff98"/>
+<path transform="translate(0 1036.4)" d="m1 9l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-0.44922 0.74805h9.8242l-0.45117-0.75195a5 5 0 0 0 0.28516 -0.68555l2.2539-0.5625h-5.2695a2 2 0 0 1 -1.7305 1 2 2 0 0 1 -1.7285 -1h-5.2715z" fill="#22ccff"/>
+<path transform="translate(0 1036.4)" d="m3.1016 13l0.65625 0.65625 1.0957-0.65625h-1.752zm3.3984 0l0.5 2h2l0.5-2h-3zm4.6484 0l1.0938 0.65625 0.65625-0.65625h-1.75z" fill="#ff2781"/>
+<path transform="translate(0 1036.4)" d="m3.0879 11l-0.74414 1.2422 0.75781 0.75781h1.752l0.89844-0.53906a5 5 0 0 0 0.68555 0.28516l0.0625 0.25391h3l0.064453-0.25781a5 5 0 0 0 0.6875 -0.2793l0.89648 0.53711h1.75l0.75781-0.75781-0.74414-1.2422h-9.8242z" fill="#702aff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_thumbnail_wait.svg b/editor/icons/dark/icon_thumbnail_wait.svg
new file mode 100644
index 0000000000..833e6f7f69
--- /dev/null
+++ b/editor/icons/dark/icon_thumbnail_wait.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path transform="translate(0 988.36)" d="m8 0c-4.432 0-8 3.568-8 8v48c0 4.432 3.568 8 8 8h48c4.432 0 8-3.568 8-8v-48c0-4.432-3.568-8-8-8h-48zm0 2h48c3.324 0 6 2.676 6 6v48c0 3.324-2.676 6-6 6h-48c-3.324 0-6-2.676-6-6v-48c0-3.324 2.676-6 6-6zm-0.013672 5.002a1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l8 8a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-8-8a1 1 0 0 0 -0.7207 -0.29102zm48 0a1 1 0 0 0 -0.69336 0.29102l-8 8a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l8-8a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -0.7207 -0.29102zm-33.986 10.998a2.0002 2.0002 0 0 0 -0.37891 0.039062c-0.005702 0.001087-0.011894 8.19e-4 -0.017578 0.001954-0.01402 0.002798-0.027106 0.006677-0.041016 0.009765a2.0002 2.0002 0 0 0 -0.30859 0.095703c-0.024592 0.009869-0.048174 0.020446-0.072265 0.03125a2.0002 2.0002 0 0 0 -0.24609 0.13281c-0.021344 0.013452-0.043669 0.024834-0.064453 0.039062-0.008816 0.006036-0.016678 0.013359-0.025391 0.019532a2.0002 2.0002 0 0 0 -0.21484 0.17578c-0.0215 0.020231-0.04387 0.039386-0.064453 0.060547a2.0002 2.0002 0 0 0 -0.001953 0.001953 2.0002 2.0002 0 0 0 -0.18555 0.22461c-0.017788 0.024669-0.036063 0.048717-0.052734 0.074219a2.0002 2.0002 0 0 0 -0.14258 0.26562c-0.013621 0.029909-0.026892 0.059158-0.039063 0.089844a2.0002 2.0002 0 0 0 -0.09375 0.30078c-0.004203 0.018931-0.008053 0.037509-0.011719 0.056641a2.0002 2.0002 0 0 0 -0.039062 0.38086c0 3 1.9339 5.2454 3.7461 7.3164 1.5217 1.7392 2.8322 3.2888 3.75 4.6836-0.91778 1.3948-2.2283 2.9444-3.75 4.6836-1.8122 2.071-3.7461 4.3164-3.7461 7.3164a2.0002 2.0002 0 0 0 0.041016 0.4043 2.0002 2.0002 0 0 0 0.10547 0.3418c0.008774 0.021862 0.017831 0.042985 0.027344 0.064453a2.0002 2.0002 0 0 0 0.14648 0.27344c0.010017 0.015513 0.018867 0.031664 0.029297 0.046875l0.001953 0.001953a2.0002 2.0002 0 0 0 0.19336 0.23633c0.020231 0.0215 0.039386 0.04387 0.060547 0.064453a2.0002 2.0002 0 0 0 0.001953 0.001953 2.0002 2.0002 0 0 0 0.23438 0.19336c0.021387 0.01522 0.042447 0.030536 0.064453 0.044922a2.0002 2.0002 0 0 0 0.27734 0.15039c0.019743 0.008822 0.038513 0.019147 0.058594 0.027343a2.0002 2.0002 0 0 0 0.33789 0.10352c0.005331 0.001131 0.010278 0.002818 0.015625 0.003906a2.0002 2.0002 0 0 0 0.009766 0 2.0002 2.0002 0 0 0 0.39453 0.041016h20a2.0002 2.0002 0 0 0 0.4043 -0.041016 2.0002 2.0002 0 0 0 0.375 -0.11523 2.0002 2.0002 0 0 0 0.29297 -0.1582c0.018831-0.011984 0.038248-0.022566 0.05664-0.035156a2.0002 2.0002 0 0 0 0.021485 -0.015625 2.0002 2.0002 0 0 0 0.23633 -0.19531c0.013296-0.012808 0.028079-0.023939 0.041015-0.037109a2.0002 2.0002 0 0 0 0.20508 -0.25c0.012127-0.017168 0.025518-0.033217 0.03711-0.050782a2.0002 2.0002 0 0 0 0.15234 -0.28125c0.01106-0.024605 0.021165-0.049089 0.03125-0.074218a2.0002 2.0002 0 0 0 0.097656 -0.31445c0.003563-0.016291 0.0066-0.03239 0.009766-0.048829a2.0002 2.0002 0 0 0 0.039062 -0.38281c0-3-1.9339-5.2454-3.7461-7.3164-1.5217-1.7392-2.8322-3.2888-3.75-4.6836 0.91778-1.3948 2.2283-2.9444 3.75-4.6836 1.8122-2.071 3.7461-4.3164 3.7461-7.3164a2.0002 2.0002 0 0 0 -0.041016 -0.4043v-0.001953a2.0002 2.0002 0 0 0 -0.10156 -0.32617c-0.011965-0.03044-0.023719-0.060163-0.03711-0.089844a2.0002 2.0002 0 0 0 -0.13476 -0.25c-0.011984-0.018831-0.022566-0.038248-0.035156-0.05664a2.0002 2.0002 0 0 0 -0.023438 -0.03125 2.0002 2.0002 0 0 0 -0.1582 -0.19336c-0.025026-0.027154-0.049686-0.054353-0.076172-0.080078a2.0002 2.0002 0 0 0 -0.027344 -0.02539 2.0002 2.0002 0 0 0 -0.18945 -0.1543c-0.031037-0.022641-0.061384-0.04555-0.09375-0.066407l-0.001953-0.001953a2.0002 2.0002 0 0 0 -0.24219 -0.13086c-0.031326-0.014467-0.061564-0.030098-0.09375-0.042969a2.0002 2.0002 0 0 0 -0.29883 -0.091797c-0.021554-0.004877-0.042636-0.009492-0.064453-0.013672a2.0002 2.0002 0 0 0 -0.38086 -0.039062h-20zm3.1758 4h13.648c-0.4756 0.8814-0.611 1.5782-1.5781 2.6836-1.6878 1.929-3.7966 3.9449-5.0352 6.4219a2.0002 2.0002 0 0 0 -0.20898 0.89453h-0.003906a2.0002 2.0002 0 0 0 -0.20898 -0.89453c-1.2385-2.477-3.3473-4.4929-5.0352-6.4219-0.96713-1.1054-1.1025-1.8022-1.5781-2.6836zm-9.1895 25.002a1 1 0 0 0 -0.69336 0.29102l-8 8a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l8-8a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -0.7207 -0.29102zm32 0a1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l8 8a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-8-8a1 1 0 0 0 -0.7207 -0.29102z" fill="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tile_map.svg b/editor/icons/dark/icon_tile_map.svg
new file mode 100644
index 0000000000..9de80deff8
--- /dev/null
+++ b/editor/icons/dark/icon_tile_map.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tile_set.svg b/editor/icons/dark/icon_tile_set.svg
new file mode 100644
index 0000000000..e78867d81d
--- /dev/null
+++ b/editor/icons/dark/icon_tile_set.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm-12 3v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm-12 3v2h2v-2zm3 0v2h2v-2zm5 1v7h5c0.55228 0 1-0.44772 1-1v-5c0-0.55228-0.44772-1-1-1v4l-1-1-1 1v-4zm-8 2v2h2v-2zm3 0v2h2v-2zm-3 3v2h2v-2zm3 0v2h2v-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_timer.svg b/editor/icons/dark/icon_timer.svg
new file mode 100644
index 0000000000..9efb856c7d
--- /dev/null
+++ b/editor/icons/dark/icon_timer.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1037.4" width="12" height="2" ry="1" fill="#4f4f4f"/>
+<rect x="2" y="1049.4" width="12" height="2" ry="1" fill="#4f4f4f"/>
+<path d="m3 1050.4h10l-3-6h-4z" fill="#4f4f4f"/>
+<path d="m3 1038.4h10c0 2-3 4-4 6 1 2 4 4 4 6h-10c0-2 3-4 4-6-1-2-4-4-4-6z" fill="none" stroke="#4f4f4f" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tool_button.svg b/editor/icons/dark/icon_tool_button.svg
new file mode 100644
index 0000000000..541e62aed4
--- /dev/null
+++ b/editor/icons/dark/icon_tool_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m11 1.1738c-1.1979 0.4235-1.999 1.5557-2 2.8262 9.552e-4 1.2705 0.80214 2.4027 2 2.8262v7.1738c0 0.554 0.446 1 1 1s1-0.446 1-1v-7.1758c1.1972-0.4232 1.9982-1.5544 2-2.8242-0.0018-1.2698-0.80282-2.401-2-2.8242v2.8242c0 0.5523-0.44772 1-1 1s-1-0.4477-1-1zm-7 1.8262v3.1328l-1.4453-0.96484-1.1094 1.6641 3 2c0.3359 0.22389 0.77347 0.22389 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-3.1328zm-0.5 8c-0.831 0-1.5 0.669-1.5 1.5v0.5h-1v2h8v-2h-1v-0.5c0-0.831-0.669-1.5-1.5-1.5z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tool_move.svg b/editor/icons/dark/icon_tool_move.svg
new file mode 100644
index 0000000000..e5452a5691
--- /dev/null
+++ b/editor/icons/dark/icon_tool_move.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9844 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2 1.4141 1.4141 1.293-1.293 1.293 1.293 1.4141-1.4141-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102zm-4.6914 4.291l-2 2a1.0001 1.0001 0 0 0 0 1.4141l2 2 1.4141-1.4141-1.293-1.293 1.293-1.293-1.4141-1.4141zm9.4141 0l-1.4141 1.4141 1.293 1.293-1.293 1.293 1.4141 1.4141 2-2a1.0001 1.0001 0 0 0 0 -1.4141l-2-2zm-4.707 0.70703a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-1.293 5.293l-1.4141 1.4141 2 2a1.0001 1.0001 0 0 0 1.4141 0l2-2-1.4141-1.4141-1.293 1.293-1.293-1.293z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tool_pan.svg b/editor/icons/dark/icon_tool_pan.svg
new file mode 100644
index 0000000000..c072e57b00
--- /dev/null
+++ b/editor/icons/dark/icon_tool_pan.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m6 8v7h6v-2h2v-5h-8z"/>
+<rect x="6" y="1039.4" width="2" height="8"/>
+<rect x="9" y="1038.4" width="2" height="8"/>
+<rect x="12" y="1040.4" width="2" height="8"/>
+<circle cx="7" cy="1039.4" r="1"/>
+<circle cx="10" cy="1038.4" r="1"/>
+<circle cx="13" cy="1040.4" r="1"/>
+<circle cx="12" cy="1049.4" r="2"/>
+<path d="m3.5251 1045.6c-0.52015-0.3803-1.1943-0.4556-1.6499 0-0.45566 0.4556-0.45564 1.1943-2.36e-5 1.6499l4.1248 4.1248 1.6499-2.7593z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tool_rotate.svg b/editor/icons/dark/icon_tool_rotate.svg
new file mode 100644
index 0000000000..39a208bb2b
--- /dev/null
+++ b/editor/icons/dark/icon_tool_rotate.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8.0879 1.002a7 7 0 0 0 -0.30469 0.0019531 7 7 0 0 0 -0.69727 0.056641 7 7 0 0 0 -5.9512 5.5742 7 7 0 0 0 1.9707 6.3652h-1.1055v2h4a1.0001 1.0001 0 0 0 0.9707 -1.2422l-1-4-1.9414 0.48633 0.28125 1.1211a5 5 0 0 1 -1.3105 -3.3652 5 5 0 0 1 5 -5 5 5 0 0 1 5 5 5 5 0 0 1 -1.4668 3.5332l1.416 1.416a7 7 0 0 0 1.3281 -8.0449 7 7 0 0 0 -6.1895 -3.9023zm-0.087891 4.998a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" fill="#4f4f4f" fill-opacity=".99608" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tool_scale.svg b/editor/icons/dark/icon_tool_scale.svg
new file mode 100644
index 0000000000..823baf4dda
--- /dev/null
+++ b/editor/icons/dark/icon_tool_scale.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2.5859l-1.293 1.293 1.4141 1.4141 1.293-1.293v2.5859a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-5a1.0001 1.0001 0 0 0 -1 -1h-5zm-1 5a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-6 2a1 1 0 0 0 -1 1v5a1.0001 1.0001 0 0 0 1 1h5a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2.5859l1.293-1.293-1.4141-1.4141-1.293 1.293v-2.5859a1 1 0 0 0 -1 -1z" fill="#4f4f4f" fill-opacity=".99608" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tool_select.svg b/editor/icons/dark/icon_tool_select.svg
new file mode 100644
index 0000000000..cd2a4c9e28
--- /dev/null
+++ b/editor/icons/dark/icon_tool_select.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(-26.001 -9.8683)">
+<path d="m40.001 1053.2-12-4.9365 4.9365 12 1.4207-4.2301 2.8254 2.8252 1.4127-1.4127-2.8254-2.8252z" fill="#4f4f4f"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tools.svg b/editor/icons/dark/icon_tools.svg
new file mode 100644
index 0000000000..70da072dec
--- /dev/null
+++ b/editor/icons/dark/icon_tools.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1l-1 2 1 2v4h-2v3 0.5c0 1.385 1.115 2.5 2.5 2.5s2.5-1.115 2.5-2.5v-1-2.5h-2v-4l1-2-1-2h-1zm6 0.17383a3 3 0 0 0 -2 2.8262 3 3 0 0 0 2 2.8262v6.1738 1c0 0.554 0.446 1 1 1s1-0.446 1-1v-4-3.1758a3 3 0 0 0 2 -2.8242 3 3 0 0 0 -2 -2.8242v2.8242a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-2.8262z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_touch_screen_button.svg b/editor/icons/dark/icon_touch_screen_button.svg
new file mode 100644
index 0000000000..b6b86bf781
--- /dev/null
+++ b/editor/icons/dark/icon_touch_screen_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h2v-1h-1-1v-2h8v2h-2v1h2a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-8zm4 2a1 1 0 0 0 -1 1v7 0.033203l-2.4746-1.8086c-0.52015-0.3803-1.1948-0.4556-1.6504 0-0.45566 0.4556-0.45561 1.1948 0 1.6504l4.125 4.125h6c1.1046 0 2-0.8954 2-2v-5h-6v-4a1 1 0 0 0 -1 -1z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_track_add_key.svg b/editor/icons/dark/icon_track_add_key.svg
new file mode 100644
index 0000000000..91e4230cbe
--- /dev/null
+++ b/editor/icons/dark/icon_track_add_key.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path transform="translate(0 1044.4)" d="m3 0v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2z" fill="#00f010"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_track_add_key_hl.svg b/editor/icons/dark/icon_track_add_key_hl.svg
new file mode 100644
index 0000000000..f710873b43
--- /dev/null
+++ b/editor/icons/dark/icon_track_add_key_hl.svg
@@ -0,0 +1,6 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path transform="translate(0 1044.4)" d="m3 0v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2z" fill="#00f010"/>
+<path transform="translate(0 1044.4)" d="m3 0v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2z" fill="#000000" fill-opacity=".42424"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_track_continuous.svg b/editor/icons/dark/icon_track_continuous.svg
new file mode 100644
index 0000000000..a7b9b13a4c
--- /dev/null
+++ b/editor/icons/dark/icon_track_continuous.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4c6 0 6-4 12-4" fill="none" stroke="#4f4f4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_track_discrete.svg b/editor/icons/dark/icon_track_discrete.svg
new file mode 100644
index 0000000000..0a5c875c40
--- /dev/null
+++ b/editor/icons/dark/icon_track_discrete.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)" fill="#4f4f4f">
+<circle cx="2" cy="1050.4" r="1"/>
+<circle cx="8" cy="1048.4" r="1"/>
+<circle cx="14" cy="1046.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_track_trigger.svg b/editor/icons/dark/icon_track_trigger.svg
new file mode 100644
index 0000000000..439ef84961
--- /dev/null
+++ b/editor/icons/dark/icon_track_trigger.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)" fill="#4f4f4f">
+<circle cx="11" cy="1048.4" r="1"/>
+<circle cx="14" cy="1046.4" r="1"/>
+<rect x="1" y="1045.4" width="6" height="2"/>
+<rect x="3" y="1047.4" width="2" height="4"/>
+<circle cx="8" cy="1050.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_translation.svg b/editor/icons/dark/icon_translation.svg
new file mode 100644
index 0000000000..131ed1b2d3
--- /dev/null
+++ b/editor/icons/dark/icon_translation.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v14h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2v5 2l-2-2-2 2v-2-5h-6z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_transpose.svg b/editor/icons/dark/icon_transpose.svg
new file mode 100644
index 0000000000..c61e0ba3bd
--- /dev/null
+++ b/editor/icons/dark/icon_transpose.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v14h7v-7h7v-7zm2 2h3v3h-3zm0 5h3v5h-3zm12 2-5 5h5z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tree.svg b/editor/icons/dark/icon_tree.svg
new file mode 100644
index 0000000000..7995ce00ee
--- /dev/null
+++ b/editor/icons/dark/icon_tree.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m1 1v13c5.52e-5 0.55226 0.44774 0.99994 1 1h13v-2h-12v-6h2v3c5.52e-5 0.55226 0.44774 0.99994 1 1h9v-2h-8v-2h8v-2h-12v-2h12v-2z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_tween.svg b/editor/icons/dark/icon_tween.svg
new file mode 100644
index 0000000000..1d553c7a53
--- /dev/null
+++ b/editor/icons/dark/icon_tween.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h6v6h2v-8h-8zm-1 4l1.793 1.793-4.793 4.793v-4.5859h-2v8h8v-2h-4.5859l4.793-4.793 1.793 1.793v-5h-5z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#bb6dff" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_unbone.svg b/editor/icons/dark/icon_unbone.svg
new file mode 100644
index 0000000000..1d1fee54cc
--- /dev/null
+++ b/editor/icons/dark/icon_unbone.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m10.479 1a2.4664 2.4663 0 0 0 -1.7813 0.7207 2.4664 2.4663 0 0 0 -0.31445 3.1035l-1.0723 1.0723 2.791 2.791 1.0762-1.0742a2.4664 2.4663 0 0 0 3.0996 -0.31055 2.4664 2.4663 0 0 0 0 -3.4883 2.4664 2.4663 0 0 0 -1.3965 -0.69727 2.4664 2.4663 0 0 0 -0.69531 -1.3965 2.4664 2.4663 0 0 0 -1.707 -0.7207zm-4.582 6.3105l-1.0723 1.0742a2.4664 2.4663 0 0 0 -3.1016 0.3125 2.4664 2.4663 0 0 0 0 3.4883 2.4664 2.4663 0 0 0 1.3965 0.69531 2.4664 2.4663 0 0 0 0.69531 1.3965 2.4664 2.4663 0 0 0 3.4883 0 2.4664 2.4663 0 0 0 0.31445 -3.1035l1.0703-1.0723-2.791-2.791z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_ungroup.svg b/editor/icons/dark/icon_ungroup.svg
new file mode 100644
index 0000000000..7bebe96e76
--- /dev/null
+++ b/editor/icons/dark/icon_ungroup.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m7 1037.4v6h-6v8h8v-6h6v-8zm2 2h4v4h-4z" fill="#4f4f4f" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m7 1v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm6 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm-12 6v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.34e-5 -0.446 0-1 0s-1-2.34e-5 -1 0zm6 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.34e-5 -0.446 0-1 0s-1-2.34e-5 -1 0zm6 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.34e-5 -0.446 0-1 0s-1-2.34e-5 -1 0zm-12 6v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0zm6 0v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0z" fill="#000000"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_unlock.svg b/editor/icons/dark/icon_unlock.svg
new file mode 100644
index 0000000000..1eb65383a5
--- /dev/null
+++ b/editor/icons/dark/icon_unlock.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<path transform="translate(0 1036.4)" d="m2 8v7h12v-7h-12zm5 2h2v3h-2v-3z"/>
+<path transform="translate(0 1036.4)" d="m8 1c-0.87738 0.001545-1.7389 0.23394-2.498 0.67383l1 1.7324c0.45506-0.26449 0.97171-0.40459 1.498-0.40625 1.6569 0 3 1.3431 3 3h2c0-2.7614-2.2386-5-5-5z"/>
+<rect x="11" y="1042.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_uv.svg b/editor/icons/dark/icon_uv.svg
new file mode 100644
index 0000000000..15e76053e0
--- /dev/null
+++ b/editor/icons/dark/icon_uv.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 5v4a3 3 0 0 0 1.5 2.5977 3 3 0 0 0 3 0 3 3 0 0 0 1.5 -2.5977v-4h-2v4a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-4h-2zm8 0l2 7h1 1 1l2-7h-2l-1.5 5.25-1.5-5.25h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_v_box_container.svg b/editor/icons/dark/icon_v_box_container.svg
new file mode 100644
index 0000000000..8cabe8a4a1
--- /dev/null
+++ b/editor/icons/dark/icon_v_box_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1039.4c0-1.1046-0.89543-2-2-2h-10c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10zm-2 0v2h-10v-2h10zm0 4v2h-10v-2h10zm0 4v2h-10v-2h10z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_v_button_array.svg b/editor/icons/dark/icon_v_button_array.svg
new file mode 100644
index 0000000000..9c2e5cecc6
--- /dev/null
+++ b/editor/icons/dark/icon_v_button_array.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#29d739">
+<path transform="translate(0 1036.4)" d="m7 1v2.1328l-1.4453-0.96484-1.1094 1.6641 3 2c0.3359 0.2239 0.77347 0.2239 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-2.1328h-2zm-0.5 6c-0.831 0-1.5 0.669-1.5 1.5v0.5h-1v2h2v-2h4v2h2v-2h-1v-0.5c0-0.831-0.669-1.5-1.5-1.5h-3z"/>
+<path d="m7 1046.4v2h-2v2h2v2h2v-2h2v-2h-2v-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_v_scroll_bar.svg b/editor/icons/dark/icon_v_scroll_bar.svg
new file mode 100644
index 0000000000..3ea3a124c6
--- /dev/null
+++ b/editor/icons/dark/icon_v_scroll_bar.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1c-1.108 0-2 0.89199-2 2v10c0 1.108 0.89199 2 2 2h6c1.108 0 2-0.89199 2-2v-10c0-1.108-0.89199-2-2-2h-6zm2.9883 1a1.0001 1.0001 0 0 1 0.56641 0.16797l3 2a1.0001 1.0001 0 1 1 -1.1094 1.6641l-2.4453-1.6289-2.4453 1.6289a1.0001 1.0001 0 1 1 -1.1094 -1.6641l3-2a1.0001 1.0001 0 0 1 0.54297 -0.16797zm-2.998 7.9922a1.0001 1.0001 0 0 1 0.56445 0.17578l2.4453 1.6309 2.4453-1.6309a1.0001 1.0001 0 1 1 1.1094 1.6641l-3 2a1.0001 1.0001 0 0 1 -1.1094 0l-3-2a1.0001 1.0001 0 0 1 0.54492 -1.8398z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_v_separator.svg b/editor/icons/dark/icon_v_separator.svg
new file mode 100644
index 0000000000..c9d6b879a4
--- /dev/null
+++ b/editor/icons/dark/icon_v_separator.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1047.4h3v-6h-3v6zm5 4h2v-14h-2v14zm4-4h3v-6h-3v6z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_v_slider.svg b/editor/icons/dark/icon_v_slider.svg
new file mode 100644
index 0000000000..1d43e99704
--- /dev/null
+++ b/editor/icons/dark/icon_v_slider.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5.0156 0.98633a1.0001 1.0001 0 0 0 -0.25977 0.029297 2 2 0 0 0 -1.7559 1.9844 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -1.7539 -1.9824 1.0001 1.0001 0 0 0 -0.23047 -0.03125zm4.9844 0.013672a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2zm-4 5.8672a4 4 0 0 1 -1 0.13281 4 4 0 0 1 -1 -0.13086v5 1.1309 1a1.0001 1.0001 0 1 0 2 0v-1-1.1328-5zm5 0.13281a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm-1 6a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#29d739" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_v_split_container.svg b/editor/icons/dark/icon_v_split_container.svg
new file mode 100644
index 0000000000..7be96acf87
--- /dev/null
+++ b/editor/icons/dark/icon_v_split_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v4h-3l-2-2-2 2h-3v-4zm0 6h3l2 2 2-2h3v4h-10v-4z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_variant.svg b/editor/icons/dark/icon_variant.svg
new file mode 100644
index 0000000000..dded24a52d
--- /dev/null
+++ b/editor/icons/dark/icon_variant.svg
@@ -0,0 +1,16 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0,-3)" fill="#4f4f4f">
+<rect x="3" y="1044.4" width="2" height="6"/>
+<rect x="6" y="1044.4" width="2" height="6"/>
+<rect x="3" y="1044.4" width="1" height="2"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1z"/>
+<path d="m14 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1z"/>
+<rect transform="scale(1,-1)" x="14" y="-1052.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="11" y="-1047.4" width="2" height="3"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1z"/>
+<path d="m8 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1z"/>
+<rect x="9" y="1047.4" width="2" height="3"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_vector.svg b/editor/icons/dark/icon_vector.svg
new file mode 100644
index 0000000000..dda46edeaa
--- /dev/null
+++ b/editor/icons/dark/icon_vector.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="none" stroke="#b8ea68" stroke-width="2">
+<path d="m7 1047.4-4 4"/>
+<path d="m7 1040.4v7h7"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_vector2.svg b/editor/icons/dark/icon_vector2.svg
new file mode 100644
index 0000000000..ab92e7bb60
--- /dev/null
+++ b/editor/icons/dark/icon_vector2.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m4 1041.4v9h9" fill="none" stroke="#b8ea68" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_vehicle_body.svg b/editor/icons/dark/icon_vehicle_body.svg
new file mode 100644
index 0000000000..227b354baa
--- /dev/null
+++ b/editor/icons/dark/icon_vehicle_body.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 3a1 1 0 0 0 -1 1l-1 3h-2v4h1.0508c0.23167-1.1411 1.2398-2 2.4492-2s2.2175 0.85893 2.4492 2h2.1016c0.23167-1.1411 1.2398-2 2.4492-2s2.2175 0.85893 2.4492 2h1.0508v-4h-4v-4h-6zm1 1h4v3h-4v-3zm-1.5 6a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm7 0a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5z" fill="#ff5f5f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_vehicle_wheel.svg b/editor/icons/dark/icon_vehicle_wheel.svg
new file mode 100644
index 0000000000..40f28709bc
--- /dev/null
+++ b/editor/icons/dark/icon_vehicle_wheel.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff5f5f" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<path transform="translate(0 1036.4)" d="m8 4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm0 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-2 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm4 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-2 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_video_player.svg b/editor/icons/dark/icon_video_player.svg
new file mode 100644
index 0000000000..1cfd25eea3
--- /dev/null
+++ b/editor/icons/dark/icon_video_player.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1038.4" width="12" height="12" ry="1" fill="none" stroke="#29d739" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m6 1045.4v-4l4 2z" fill="#29d739" fill-rule="evenodd"/>
+<rect x="3" y="1047.4" width="10" height="2" ry="0" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_viewport.svg b/editor/icons/dark/icon_viewport.svg
new file mode 100644
index 0000000000..6e583ca62f
--- /dev/null
+++ b/editor/icons/dark/icon_viewport.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-0.5304 8.01e-5 -1.0391 0.21085-1.4141 0.58594-0.37509 0.37501-0.58586 0.88366-0.58594 1.4141v8c8.03e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.37509 0.88366 0.58586 1.4141 0.58594h10c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v8c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-8c9.6e-6 -0.55228 0.44772-0.99999 1-1z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_viewport_container.svg b/editor/icons/dark/icon_viewport_container.svg
new file mode 100644
index 0000000000..3518756177
--- /dev/null
+++ b/editor/icons/dark/icon_viewport_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10zm3 1c-0.5304 1e-4 -1.0391 0.21084-1.4141 0.58594-0.37509 0.375-0.58586 0.88366-0.58594 1.4141v4c8e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.3751 0.88366 0.58584 1.4141 0.58594h4c1.1046 0 2-0.8954 2-2v-4c0-1.1046-0.89543-2-2-2zm0 1h4c0.55228 0 0.99999 0.4477 1 1v4c-1e-5 0.5523-0.44772 1-1 1h-4c-0.55228 0-0.99999-0.4477-1-1v-4c1e-5 -0.5523 0.44772-1 1-1z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_viewport_sprite.svg b/editor/icons/dark/icon_viewport_sprite.svg
new file mode 100644
index 0000000000..e1c8a9de46
--- /dev/null
+++ b/editor/icons/dark/icon_viewport_sprite.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="20" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m3 2c-0.5304 8.01e-5 -1.0391 0.21085-1.4141 0.58594-0.37509 0.37501-0.58586 0.88366-0.58594 1.4141v8c8.03e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.37509 0.88366 0.58586 1.4141 0.58594h10c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2h-10zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v8c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-8c9.6e-6 -0.55228 0.44772-0.99999 1-1zm1 3v2h2v-2h-2zm6 0v2h2v-2h-2zm-6 3v1h8v-1h-8z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_viewport_texture.svg b/editor/icons/dark/icon_viewport_texture.svg
new file mode 100644
index 0000000000..c4e2a2dbda
--- /dev/null
+++ b/editor/icons/dark/icon_viewport_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-0.5304 8.01e-5 -1.0391 0.21085-1.4141 0.58594-0.37509 0.37501-0.58586 0.88366-0.58594 1.4141v8c8.03e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.37509 0.88366 0.58586 1.4141 0.58594h10c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2h-10zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v8c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-8c9.6e-6 -0.55228 0.44772-0.99999 1-1zm6 3v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-1-1h-1v-1h-1z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_visibility_enabler.svg b/editor/icons/dark/icon_visibility_enabler.svg
new file mode 100644
index 0000000000..35f5ae34f1
--- /dev/null
+++ b/editor/icons/dark/icon_visibility_enabler.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v3h1v-2h2v-1h-3zm11 0v1h2v2h1v-3h-3zm-4 1c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246s5.8365-1.7892 6.9609-5.7246a1.0001 1.0001 0 0 0 0 -0.55273c-1.1003-3.7876-4.4066-5.7227-6.9609-5.7227zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-7 6v3h3v-1h-2v-2h-1zm13 0v2h-2v1h3v-3h-1z" color="#000000" color-rendering="auto" fill="#ff5f5f" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_visibility_enabler_2d.svg b/editor/icons/dark/icon_visibility_enabler_2d.svg
new file mode 100644
index 0000000000..9c627461dc
--- /dev/null
+++ b/editor/icons/dark/icon_visibility_enabler_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v3h1v-2h2v-1h-3zm11 0v1h2v2h1v-3h-3zm-4 1c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246s5.8365-1.7892 6.9609-5.7246a1.0001 1.0001 0 0 0 0 -0.55273c-1.1003-3.7876-4.4066-5.7227-6.9609-5.7227zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-7 6v3h3v-1h-2v-2h-1zm13 0v2h-2v1h3v-3h-1z" color="#000000" color-rendering="auto" fill="#6d90ff" fill-opacity=".98824" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_visibility_notifier.svg b/editor/icons/dark/icon_visibility_notifier.svg
new file mode 100644
index 0000000000..9dddddf8ac
--- /dev/null
+++ b/editor/icons/dark/icon_visibility_notifier.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m12 1v6h2v-6h-2zm-4 2c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246 1.4907 0 3.2717-0.65207 4.7109-2h-0.71094-2v-0.54102a4 4 0 0 1 -2 0.54102 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4 4 4 0 0 1 2 0.54102v-2.1816c-0.68312-0.23834-1.3644-0.35938-2-0.35938zm0 4a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm4 2v2h2v-2h-2z" color="#000000" color-rendering="auto" fill="#ff5f5f" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_visibility_notifier_2d.svg b/editor/icons/dark/icon_visibility_notifier_2d.svg
new file mode 100644
index 0000000000..c84c2dbfca
--- /dev/null
+++ b/editor/icons/dark/icon_visibility_notifier_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m12 1v6h2v-6h-2zm-4 2c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246 1.4907 0 3.2717-0.65207 4.7109-2h-0.71094-2v-0.54102a4 4 0 0 1 -2 0.54102 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4 4 4 0 0 1 2 0.54102v-2.1816c-0.68312-0.23834-1.3644-0.35938-2-0.35938zm0 4a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm4 2v2h2v-2h-2z" color="#000000" color-rendering="auto" fill="#6d90ff" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_visible.svg b/editor/icons/dark/icon_visible.svg
new file mode 100644
index 0000000000..075aa00b8f
--- /dev/null
+++ b/editor/icons/dark/icon_visible.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246s5.8365-1.7892 6.9609-5.7246a1.0001 1.0001 0 0 0 0 -0.55273c-1.1003-3.7876-4.4066-5.7227-6.9609-5.7227zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_visual_script.svg b/editor/icons/dark/icon_visual_script.svg
new file mode 100644
index 0000000000..96fcca46ab
--- /dev/null
+++ b/editor/icons/dark/icon_visual_script.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2h5.2715a2 2 0 0 1 -0.27148 -1 2 2 0 0 1 2 -2 2 2 0 0 1 2 2 2 2 0 0 1 -0.26953 1h5.2695v-2l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm-4 9v6h2a3 3 0 0 0 3 -3v-3h-2v3a1 1 0 0 1 -1 1v-4h-2zm8 0a2 2 0 0 0 -1.7324 1 2 2 0 0 0 0 2 2 2 0 0 0 1.7324 1h-2v2h2a2 2 0 0 0 1.7324 -1 2 2 0 0 0 0 -2 2 2 0 0 0 -1.7324 -1h2v-2h-2z" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_visual_shader_port.svg b/editor/icons/dark/icon_visual_shader_port.svg
new file mode 100644
index 0000000000..0f5d00dbc4
--- /dev/null
+++ b/editor/icons/dark/icon_visual_shader_port.svg
@@ -0,0 +1,5 @@
+<svg width="10" height="10" version="1.1" viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1042.4)">
+<path d="m2 1051.4v-8l6 4z" fill="#f3f3f3" fill-rule="evenodd" stroke="#e4e4e4" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_vu_empty.svg b/editor/icons/dark/icon_vu_empty.svg
new file mode 100644
index 0000000000..ae2163a386
--- /dev/null
+++ b/editor/icons/dark/icon_vu_empty.svg
@@ -0,0 +1,13 @@
+<svg width="128" height="4" version="1.1" viewBox="0 0 128 4" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x2="128" y1="2" y2="2" gradientUnits="userSpaceOnUse">
+<stop stop-color="#00f010" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#ff4040" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1048.4)">
+<path transform="translate(0 1048.4)" d="m2 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2h75 3 2 3 15v-4h-15-3-2-3-75zm100 0v4h24a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2h-24z" fill="url(#a)"/>
+<path transform="translate(0 1048.4)" d="m2 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2h75 3 2 3 15v-4h-15-3-2-3-75zm100 0v4h24a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2h-24z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_vu_full.svg b/editor/icons/dark/icon_vu_full.svg
new file mode 100644
index 0000000000..e4035026d7
--- /dev/null
+++ b/editor/icons/dark/icon_vu_full.svg
@@ -0,0 +1,12 @@
+<svg width="128" height="4" version="1.1" viewBox="0 0 128 4" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x2="128" y1="2" y2="2" gradientUnits="userSpaceOnUse">
+<stop stop-color="#00f010" offset="0"/>
+<stop stop-color="#d6cf4b" offset=".5"/>
+<stop stop-color="#ff4040" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1048.4)">
+<path transform="translate(0 1048.4)" d="m2 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2h75 3 2 3 15v-4h-15-3-2-3-75zm100 0v4h24a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2h-24z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_warning.svg b/editor/icons/dark/icon_warning.svg
new file mode 100644
index 0000000000..0dec9c7bd4
--- /dev/null
+++ b/editor/icons/dark/icon_warning.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect y="1044.4" width="8" height="8" ry="4" fill="#fea900"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_window_dialog.svg b/editor/icons/dark/icon_window_dialog.svg
new file mode 100644
index 0000000000..39d231df9a
--- /dev/null
+++ b/editor/icons/dark/icon_window_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2h-10zm9 1h1v1h-1v-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8h-14z" fill="#29d739"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_world.svg b/editor/icons/dark/icon_world.svg
new file mode 100644
index 0000000000..92e3529efc
--- /dev/null
+++ b/editor/icons/dark/icon_world.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<circle cx="6" cy="1046.4" r="5"/>
+<circle cx="12" cy="1039.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_world_2d.svg b/editor/icons/dark/icon_world_2d.svg
new file mode 100644
index 0000000000..e728ed313c
--- /dev/null
+++ b/editor/icons/dark/icon_world_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1037.4a1.0001 1.0001 0 0 0 -1 1v10a1.0001 1.0001 0 0 0 1 1c2.3667 0 3.9746 0.4629 5.7246 0.9629s3.6421 1.0371 6.2754 1.0371a1.0001 1.0001 0 0 0 1 -1v-10a1.0001 1.0001 0 0 0 -1 -1c-2.3667 0-3.9746-0.4609-5.7246-0.9609-1.75-0.5-3.6421-1.0391-6.2754-1.0391zm1 2.0957c1.7984 0.1158 3.2574 0.448 4.7246 0.8672 1.4977 0.4279 3.194 0.8188 5.2754 0.9414v8.002c-1.7985-0.1158-3.2574-0.448-4.7246-0.8672-1.4977-0.4279-3.194-0.8208-5.2754-0.9434v-8z" color="#000000" color-rendering="auto" fill="#4f4f4f" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_world_environment.svg b/editor/icons/dark/icon_world_environment.svg
new file mode 100644
index 0000000000..878a3184d7
--- /dev/null
+++ b/editor/icons/dark/icon_world_environment.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1.7305 2.3125c-0.83125 1.5372-1.2685 3.1037-1.2695 4.6816-0.64057-0.11251-1.3005-0.27158-1.9766-0.47266a5 5 0 0 1 3.2461 -4.209zm3.4629 0.0039062a5 5 0 0 1 3.2383 4.1875c-0.65187 0.17448-1.3077 0.32867-1.9727 0.44922-0.00845-1.5627-0.44294-3.1141-1.2656-4.6367zm-1.7324 0.0078126c1.0126 1.593 1.5 3.1425 1.5 4.6758 0 0.054042-0.0066161 0.10803-0.0078125 0.16211-0.96392 0.096801-1.9566 0.1103-2.9844 0.027344-0.0016335-0.063192-0.0078125-0.12632-0.0078125-0.18945 0-1.5333 0.48744-3.0828 1.5-4.6758zm4.8789 5.7578a5 5 0 0 1 -3.1484 3.6055c0.57106-1.0564 0.95277-2.1268 1.1367-3.2051 0.68204-0.10905 1.3556-0.23789 2.0117-0.40039zm-9.7461 0.033203c0.68377 0.18153 1.3555 0.33345 2.0098 0.43164 0.18781 1.0551 0.56647 2.1026 1.125 3.1367a5 5 0 0 1 -3.1348 -3.5684zm6.168 0.55469c-0.22615 0.98866-0.65424 1.9884-1.3008 3.0059-0.63811-1.0042-1.0645-1.9908-1.293-2.9668 0.89027 0.054126 1.7517 0.029377 2.5938-0.039062z" fill="#ff5f5f" fill-opacity=".99608"/>
+<path transform="translate(0 1036.4)" d="m8 1v2.3242c1.0126 1.593 1.5 3.1425 1.5 4.6758 0 0.054042-0.0066161 0.10803-0.0078125 0.16211-0.4894 0.049148-0.98713 0.077552-1.4922 0.082031v1.4922c0.43915-0.0075968 0.87287-0.031628 1.3008-0.066406-0.22615 0.98866-0.65424 1.9884-1.3008 3.0059v2.3242a7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm1.7324 2.3164a5 5 0 0 1 3.2383 4.1875c-0.65187 0.17448-1.3077 0.32867-1.9727 0.44922-0.00845-1.5627-0.44294-3.1141-1.2656-4.6367zm3.1465 5.7656a5 5 0 0 1 -3.1484 3.6055c0.57106-1.0564 0.95277-2.1268 1.1367-3.2051 0.68204-0.10905 1.3556-0.23789 2.0117-0.40039z" fill="#6d90ff"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_y_sort.svg b/editor/icons/dark/icon_y_sort.svg
new file mode 100644
index 0000000000..233dafd843
--- /dev/null
+++ b/editor/icons/dark/icon_y_sort.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1l-3 3h2v8h-2l3 3 3-3h-2v-8h2l-3-3zm5 1v2h6v-2h-6zm0 5v2h4v-2h-4zm0 5v2h2v-2h-2z" fill="#6d90ff" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_zoom.svg b/editor/icons/dark/icon_zoom.svg
new file mode 100644
index 0000000000..ac185d3c9e
--- /dev/null
+++ b/editor/icons/dark/icon_zoom.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 2.752 -0.83398l4.3184 4.3184 1.4141-1.4141-4.3184-4.3184a5 5 0 0 0 0.41016 -0.75195h-0.57617v-2h-1a3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3 3 3 0 0 1 2 0.76758v-1.7676h0.99023a5 5 0 0 0 -2.9902 -1zm5 0v2h-2v2h2v2h2v-2h2v-2h-2v-2h-2z" fill="#4f4f4f" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_zoom_less.svg b/editor/icons/dark/icon_zoom_less.svg
new file mode 100644
index 0000000000..ea7190c4ca
--- /dev/null
+++ b/editor/icons/dark/icon_zoom_less.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1043.4" width="14" height="1.9999" fill="#4f4f4f"/>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_zoom_more.svg b/editor/icons/dark/icon_zoom_more.svg
new file mode 100644
index 0000000000..046b569c1a
--- /dev/null
+++ b/editor/icons/dark/icon_zoom_more.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(-201.58 205.03)">
+<g transform="matrix(48.459 0 0 53.968 -126.63 -55836)">
+<g transform="translate(.51853 -.019888)" fill="#4f4f4f" fill-opacity=".99608">
+<rect x="6.3979" y="1050.1" width=".042995" height=".26205" rx="0" ry="0"/>
+<rect x="6.2806" y="1050.2" width=".28011" height=".040944" rx="0" ry="0"/>
+</g>
+</g>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/dark/icon_zoom_reset.svg b/editor/icons/dark/icon_zoom_reset.svg
new file mode 100644
index 0000000000..bb262bca9d
--- /dev/null
+++ b/editor/icons/dark/icon_zoom_reset.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#4f4f4f">
+<rect x="3" y="1037.4" width="2" height="14"/>
+<rect x="12" y="1037.4" width="2" height="14"/>
+<rect x="7" y="1046.4" width="2" height="2"/>
+<rect x="7" y="1040.4" width="2" height="2"/>
+<path d="m1 1040.4 2-3h2v3z" fill-rule="evenodd"/>
+<path d="m10 1040.4 2-3h2v3z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_2_d.png b/editor/icons/icon_2_d.png
deleted file mode 100644
index d8a77ee1c2..0000000000
--- a/editor/icons/icon_2_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_2_d.svg b/editor/icons/icon_2_d.svg
new file mode 100644
index 0000000000..b77c330bff
--- /dev/null
+++ b/editor/icons/icon_2_d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.9844 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l0.29297-0.29297v8.5859h8.5859l-0.29297 0.29297a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l2-2a1.0001 1.0001 0 0 0 0 -1.4141l-2-2a1 1 0 0 0 -0.7207 -0.29102 1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l0.29297 0.29297h-6.5859v-6.5859l0.29297 0.29297a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_3_d.png b/editor/icons/icon_3_d.png
deleted file mode 100644
index e1daf1077b..0000000000
--- a/editor/icons/icon_3_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_3_d.svg b/editor/icons/icon_3_d.svg
new file mode 100644
index 0000000000..91d3abf60d
--- /dev/null
+++ b/editor/icons/icon_3_d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.9902 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l0.29297-0.29297v8.5859h8.5859l-0.29297 0.29297a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l2-2a1.0001 1.0001 0 0 0 0 -1.4141l-2-2a1 1 0 0 0 -0.72266 -0.29102 1 1 0 0 0 -0.69141 0.29102 1 1 0 0 0 0 1.4141l0.29297 0.29297h-5.1719l5.5859-5.5859v0.41602a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-2.8301a1.0001 1.0001 0 0 0 -1 -1h-2.8301a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h0.41602l-5.5859 5.5859v-5.1719l0.29297 0.29297a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_checked.png b/editor/icons/icon_GUI_checked.png
deleted file mode 100644
index aa5e7f6bdb..0000000000
--- a/editor/icons/icon_GUI_checked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_checked.svg b/editor/icons/icon_GUI_checked.svg
new file mode 100644
index 0000000000..7ba83d48d5
--- /dev/null
+++ b/editor/icons/icon_GUI_checked.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 2c-1.1046 0-2 0.89543-2 2v8c0 1.1046 0.89543 2 2 2h8c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2h-8zm7.293 2.293l1.4141 1.4141-6.707 6.707-2.707-2.707 1.4141-1.4141 1.293 1.293 5.293-5.293z" fill="#e0e0e0" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_dropdown.png b/editor/icons/icon_GUI_dropdown.png
deleted file mode 100644
index d21cdb634e..0000000000
--- a/editor/icons/icon_GUI_dropdown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_dropdown.svg b/editor/icons/icon_GUI_dropdown.svg
new file mode 100644
index 0000000000..22db0fa1a7
--- /dev/null
+++ b/editor/icons/icon_GUI_dropdown.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#fff" fill-opacity=".58824" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="2">
+<circle cx="7.5" cy="1040.9" r="1.5"/>
+<circle cx="7.5" cy="1045.9" r="1.5"/>
+<circle cx="7.5" cy="1050.9" r="1.5"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_hslider_bg.png b/editor/icons/icon_GUI_hslider_bg.png
deleted file mode 100644
index 1286b887f6..0000000000
--- a/editor/icons/icon_GUI_hslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_hslider_bg.svg b/editor/icons/icon_GUI_hslider_bg.svg
new file mode 100644
index 0000000000..e298d06c4c
--- /dev/null
+++ b/editor/icons/icon_GUI_hslider_bg.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1041.4" width="14" height="6" ry="0" fill-opacity=".39216" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_hsplitter.png b/editor/icons/icon_GUI_hsplitter.png
deleted file mode 100644
index 3ac1dddf90..0000000000
--- a/editor/icons/icon_GUI_hsplitter.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_hsplitter.svg b/editor/icons/icon_GUI_hsplitter.svg
new file mode 100644
index 0000000000..650e977921
--- /dev/null
+++ b/editor/icons/icon_GUI_hsplitter.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="64" version="1.1" viewBox="0 0 8 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path d="m4 990.36v60" fill="none" stroke="#fff" stroke-linecap="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_mini_tab_menu.png b/editor/icons/icon_GUI_mini_tab_menu.png
deleted file mode 100644
index 1dc793de1a..0000000000
--- a/editor/icons/icon_GUI_mini_tab_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_mini_tab_menu.svg b/editor/icons/icon_GUI_mini_tab_menu.svg
new file mode 100644
index 0000000000..c54eb26115
--- /dev/null
+++ b/editor/icons/icon_GUI_mini_tab_menu.svg
@@ -0,0 +1,7 @@
+<svg width="6" height="16" version="1.1" viewBox="0 0 6 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fff" fill-opacity=".39216">
+<circle cx="3" cy="1038.4" r="2"/>
+<circle cx="3" cy="1044.4" r="2"/>
+<circle cx="3" cy="1050.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_option_arrow.png b/editor/icons/icon_GUI_option_arrow.png
deleted file mode 100644
index b7bc38e03f..0000000000
--- a/editor/icons/icon_GUI_option_arrow.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_option_arrow.svg b/editor/icons/icon_GUI_option_arrow.svg
new file mode 100644
index 0000000000..ee2a77c090
--- /dev/null
+++ b/editor/icons/icon_GUI_option_arrow.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m10 1043.4c-0.26378 0.01-0.5144 0.1165-0.69726 0.3067l-3.293 3.2929-3.293-3.2929c-0.18826-0.1936-0.44679-0.3028-0.7168-0.3028-0.89742 2e-4 -1.3404 1.0909-0.69727 1.7168l4 4c0.39053 0.3904 1.0235 0.3904 1.4141 0l4-4c0.65734-0.6321 0.19491-1.7422-0.7168-1.7207z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fff" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_play_button_group.png b/editor/icons/icon_GUI_play_button_group.png
deleted file mode 100644
index 83820c8e0c..0000000000
--- a/editor/icons/icon_GUI_play_button_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_play_button_group.svg b/editor/icons/icon_GUI_play_button_group.svg
new file mode 100644
index 0000000000..1d67816b3a
--- /dev/null
+++ b/editor/icons/icon_GUI_play_button_group.svg
@@ -0,0 +1,5 @@
+<svg width="32" height="32" version="1.1" viewBox="0 0 32 31.999998" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<circle cx="16" cy="1036.4" r="14" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_progress_bar.png b/editor/icons/icon_GUI_progress_bar.png
deleted file mode 100644
index 7d70e6beb5..0000000000
--- a/editor/icons/icon_GUI_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_progress_bar.svg b/editor/icons/icon_GUI_progress_bar.svg
new file mode 100644
index 0000000000..9ea0cddfb0
--- /dev/null
+++ b/editor/icons/icon_GUI_progress_bar.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1036.4c-1.0907-2e-4 -2 0.9073-2 1.998v12.002c0 1.0907 0.9093 2 2 2h12c1.0907 0 2-0.9093 2-2v-12c0-1.0907-0.9093-1.9978-2-1.998zm0 2h12v11.998h-12z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".39216" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_progress_fill.png b/editor/icons/icon_GUI_progress_fill.png
deleted file mode 100644
index 4b7b4c554c..0000000000
--- a/editor/icons/icon_GUI_progress_fill.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_progress_fill.svg b/editor/icons/icon_GUI_progress_fill.svg
new file mode 100644
index 0000000000..9c68923254
--- /dev/null
+++ b/editor/icons/icon_GUI_progress_fill.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="4" y="1040.4" width="8" height="8" ry=".99999" fill="#e0e0e0" fill-opacity=".39216"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_radio_checked.png b/editor/icons/icon_GUI_radio_checked.png
deleted file mode 100644
index 699d0966a9..0000000000
--- a/editor/icons/icon_GUI_radio_checked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_radio_checked.svg b/editor/icons/icon_GUI_radio_checked.svg
new file mode 100644
index 0000000000..6a65d49eeb
--- /dev/null
+++ b/editor/icons/icon_GUI_radio_checked.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="5" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".78431" stroke-width="2"/>
+<circle cx="8" cy="1044.4" r="3" fill="#e0e0e0" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_radio_unchecked.png b/editor/icons/icon_GUI_radio_unchecked.png
deleted file mode 100644
index e8ce1f8e6d..0000000000
--- a/editor/icons/icon_GUI_radio_unchecked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_radio_unchecked.svg b/editor/icons/icon_GUI_radio_unchecked.svg
new file mode 100644
index 0000000000..6e52a8af77
--- /dev/null
+++ b/editor/icons/icon_GUI_radio_unchecked.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="5" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".78431" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_scroll_bg.png b/editor/icons/icon_GUI_scroll_bg.png
deleted file mode 100644
index 1908fd8aee..0000000000
--- a/editor/icons/icon_GUI_scroll_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_scroll_bg.svg b/editor/icons/icon_GUI_scroll_bg.svg
new file mode 100644
index 0000000000..302368b19a
--- /dev/null
+++ b/editor/icons/icon_GUI_scroll_bg.svg
@@ -0,0 +1 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg"></svg>
diff --git a/editor/icons/icon_GUI_scroll_grabber.png b/editor/icons/icon_GUI_scroll_grabber.png
deleted file mode 100644
index 4be7f4e6cc..0000000000
--- a/editor/icons/icon_GUI_scroll_grabber.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_scroll_grabber.svg b/editor/icons/icon_GUI_scroll_grabber.svg
new file mode 100644
index 0000000000..545ec6782d
--- /dev/null
+++ b/editor/icons/icon_GUI_scroll_grabber.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<circle cx="6" cy="1046.4" r="2" fill="#fff" fill-opacity=".27451"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_scroll_grabber_hl.png b/editor/icons/icon_GUI_scroll_grabber_hl.png
deleted file mode 100644
index 98e357f82a..0000000000
--- a/editor/icons/icon_GUI_scroll_grabber_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_scroll_grabber_hl.svg b/editor/icons/icon_GUI_scroll_grabber_hl.svg
new file mode 100644
index 0000000000..e165cf3cfb
--- /dev/null
+++ b/editor/icons/icon_GUI_scroll_grabber_hl.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<circle cx="6" cy="1046.4" r="3" fill="#f9f9f9" fill-opacity=".73"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_scroll_grabber_pressed.svg b/editor/icons/icon_GUI_scroll_grabber_pressed.svg
new file mode 100644
index 0000000000..729289e756
--- /dev/null
+++ b/editor/icons/icon_GUI_scroll_grabber_pressed.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 11.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<circle cx="6" cy="1046.4" r="3" d="m 8.9999952,1046.3623 c 0,1.6569 -1.3431436,3 -2.9999952,3 -1.6568516,0 -2.9999952,-1.3431 -2.9999952,-3 0,-1.6568 1.3431436,-3 2.9999952,-3 1.6568516,0 2.9999952,1.3432 2.9999952,3 z" fill="#afafaf" fill-opacity=".72941"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_slider_grabber.png b/editor/icons/icon_GUI_slider_grabber.png
deleted file mode 100644
index 76edc3b81f..0000000000
--- a/editor/icons/icon_GUI_slider_grabber.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_slider_grabber.svg b/editor/icons/icon_GUI_slider_grabber.svg
new file mode 100644
index 0000000000..b1dcf980a5
--- /dev/null
+++ b/editor/icons/icon_GUI_slider_grabber.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="3" fill="#fff" fill-opacity=".78431" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_slider_grabber_hl.png b/editor/icons/icon_GUI_slider_grabber_hl.png
deleted file mode 100644
index 97a2f4b67a..0000000000
--- a/editor/icons/icon_GUI_slider_grabber_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_slider_grabber_hl.svg b/editor/icons/icon_GUI_slider_grabber_hl.svg
new file mode 100644
index 0000000000..73252751ce
--- /dev/null
+++ b/editor/icons/icon_GUI_slider_grabber_hl.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 0.5 0.025391 5 5 0 0 1 0.49414 0.074219 5 5 0 0 1 0.48438 0.12305 5 5 0 0 1 0.46875 0.17188 5 5 0 0 1 0.44922 0.2168 5 5 0 0 1 0.42578 0.26172 5 5 0 0 1 0.39844 0.30273 5 5 0 0 1 0.36524 0.33984 5 5 0 0 1 0.33008 0.37695 5 5 0 0 1 0.29102 0.40625 5 5 0 0 1 0.24805 0.43359 5 5 0 0 1 0.20508 0.45508 5 5 0 0 1 0.1582 0.47461 5 5 0 0 1 0.10938 0.48828 5 5 0 0 1 0.060547 0.49609 5 5 0 0 1 0.011719 0.35352 5 5 0 0 1 -0.025391 0.5 5 5 0 0 1 -0.074218 0.49414 5 5 0 0 1 -0.12305 0.48438 5 5 0 0 1 -0.17188 0.46875 5 5 0 0 1 -0.2168 0.44922 5 5 0 0 1 -0.26172 0.42578 5 5 0 0 1 -0.30273 0.39844 5 5 0 0 1 -0.33984 0.36524 5 5 0 0 1 -0.37695 0.33008 5 5 0 0 1 -0.40625 0.29102 5 5 0 0 1 -0.43359 0.24805 5 5 0 0 1 -0.45508 0.20508 5 5 0 0 1 -0.47461 0.1582 5 5 0 0 1 -0.48828 0.10938 5 5 0 0 1 -0.49609 0.060547 5 5 0 0 1 -0.35352 0.011719 5 5 0 0 1 -0.5 -0.025391 5 5 0 0 1 -0.49414 -0.074218 5 5 0 0 1 -0.48438 -0.12305 5 5 0 0 1 -0.46875 -0.17188 5 5 0 0 1 -0.44922 -0.2168 5 5 0 0 1 -0.42578 -0.26172 5 5 0 0 1 -0.39844 -0.30273 5 5 0 0 1 -0.36523 -0.33984 5 5 0 0 1 -0.33008 -0.37695 5 5 0 0 1 -0.29102 -0.40625 5 5 0 0 1 -0.24805 -0.43359 5 5 0 0 1 -0.20508 -0.45508 5 5 0 0 1 -0.1582 -0.47461 5 5 0 0 1 -0.10938 -0.48828 5 5 0 0 1 -0.060547 -0.49609 5 5 0 0 1 -0.011719 -0.35352 5 5 0 0 1 0.025391 -0.5 5 5 0 0 1 0.074219 -0.49414 5 5 0 0 1 0.12305 -0.48438 5 5 0 0 1 0.17188 -0.46875 5 5 0 0 1 0.2168 -0.44922 5 5 0 0 1 0.26172 -0.42578 5 5 0 0 1 0.30273 -0.39844 5 5 0 0 1 0.33984 -0.36523 5 5 0 0 1 0.37695 -0.33008 5 5 0 0 1 0.40625 -0.29102 5 5 0 0 1 0.43359 -0.24805 5 5 0 0 1 0.45508 -0.20508 5 5 0 0 1 0.47461 -0.1582 5 5 0 0 1 0.48828 -0.10938 5 5 0 0 1 0.49609 -0.060547 5 5 0 0 1 0.35352 -0.011719z" fill="#e0e0e0"/>
+<circle cx="8" cy="1044.4" r="3" fill="#fff" fill-opacity=".58824" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_spinbox_updown.png b/editor/icons/icon_GUI_spinbox_updown.png
deleted file mode 100644
index ff65df801b..0000000000
--- a/editor/icons/icon_GUI_spinbox_updown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_spinbox_updown.svg b/editor/icons/icon_GUI_spinbox_updown.svg
new file mode 100644
index 0000000000..24c74ba6cd
--- /dev/null
+++ b/editor/icons/icon_GUI_spinbox_updown.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9844 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-4 4a1.0001 1.0001 0 1 0 1.4141 1.4141l3.293-3.293 3.293 3.293a1.0001 1.0001 0 1 0 1.4141 -1.4141l-4-4a1.0001 1.0001 0 0 0 -0.72266 -0.29102zm4.0059 7.9844a1.0001 1.0001 0 0 0 -0.69726 0.30664l-3.293 3.293-3.293-3.293a1.0001 1.0001 0 0 0 -0.7168 -0.30273 1.0001 1.0001 0 0 0 -0.69727 1.7168l4 4a1.0001 1.0001 0 0 0 1.4141 0l4-4a1.0001 1.0001 0 0 0 -0.7168 -1.7207z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_tab_menu.png b/editor/icons/icon_GUI_tab_menu.png
deleted file mode 100644
index ffc63f2d41..0000000000
--- a/editor/icons/icon_GUI_tab_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_tab_menu.svg b/editor/icons/icon_GUI_tab_menu.svg
new file mode 100644
index 0000000000..3324adf98b
--- /dev/null
+++ b/editor/icons/icon_GUI_tab_menu.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fff" fill-opacity=".39216">
+<circle cx="8" cy="1038.4" r="2"/>
+<circle cx="8" cy="1044.4" r="2"/>
+<circle cx="8" cy="1050.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_toggle_off.png b/editor/icons/icon_GUI_toggle_off.png
deleted file mode 100644
index c4c599172d..0000000000
--- a/editor/icons/icon_GUI_toggle_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_toggle_off.svg b/editor/icons/icon_GUI_toggle_off.svg
new file mode 100644
index 0000000000..0d43b158b5
--- /dev/null
+++ b/editor/icons/icon_GUI_toggle_off.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="32" version="1.1" viewBox="0 0 64 31.999998" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<path transform="translate(0 1020.4)" d="m24 4.002c-6.6307 0-12 5.3654-12 11.996v0.003906c0 6.6307 5.3693 12 12 12h16c6.6307 0 12-5.3693 12-12v-0.003906c0-6.6307-5.3693-11.996-12-11.996h-16zm0 2h16c5.5573 0 10 4.4388 10 9.9961v0.003906c0 5.5573-4.4427 10-10 10h-16c-5.5573 0-10-4.4427-10-10v-0.003906c0-5.5573 4.4427-9.9961 10-9.9961zm7 4.9961a1.0001 1.0001 0 0 0 -1 1v8a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-3h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2v-2h4a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-5zm9 0a1.0001 1.0001 0 0 0 -1 1v4 4a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-3h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2v-2h4a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-5zm-17 0.003906c-2.7496 0-5 2.2504-5 5s2.2504 5 5 5 5-2.2504 5-5-2.2504-5-5-5zm0 2c1.6687 0 3 1.3313 3 3s-1.3313 3-3 3-3-1.3313-3-3 1.3313-3 3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_toggle_on.png b/editor/icons/icon_GUI_toggle_on.png
deleted file mode 100644
index 9dd6ce7bee..0000000000
--- a/editor/icons/icon_GUI_toggle_on.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_toggle_on.svg b/editor/icons/icon_GUI_toggle_on.svg
new file mode 100644
index 0000000000..fd2b915fc3
--- /dev/null
+++ b/editor/icons/icon_GUI_toggle_on.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="32" version="1.1" viewBox="0 0 64 31.999998" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<path transform="translate(0 1020.4)" d="m24 4.002c-6.6307 0-12 5.3654-12 11.996 0 6.6307 5.3693 12 12 12h16c6.6307 0 12-5.3693 12-12 0-6.6307-5.3693-11.996-12-11.996h-16zm17 6.9961a1 1 0 0 1 1 1v8a1.0001 1.0001 0 0 1 -1.752 0.66211l-5.248-6v5.3379a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-8a1.0001 1.0001 0 0 1 1.752 -0.6582l5.248 6v-5.3418a1 1 0 0 1 1 -1zm-15 0.003906c2.7496 0 5 2.2504 5 5s-2.2504 5-5 5-5-2.2504-5-5 2.2504-5 5-5zm0 2c-1.6687 0-3 1.3313-3 3s1.3313 3 3 3 3-1.3313 3-3-1.3313-3-3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_tree_arrow_down.png b/editor/icons/icon_GUI_tree_arrow_down.png
deleted file mode 100644
index 4ef7b41de6..0000000000
--- a/editor/icons/icon_GUI_tree_arrow_down.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_tree_arrow_down.svg b/editor/icons/icon_GUI_tree_arrow_down.svg
new file mode 100644
index 0000000000..332b49d4cf
--- /dev/null
+++ b/editor/icons/icon_GUI_tree_arrow_down.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3 1045.4 3 3 3-3" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_tree_arrow_right.png b/editor/icons/icon_GUI_tree_arrow_right.png
deleted file mode 100644
index 13a42f730d..0000000000
--- a/editor/icons/icon_GUI_tree_arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_tree_arrow_right.svg b/editor/icons/icon_GUI_tree_arrow_right.svg
new file mode 100644
index 0000000000..b3da27f1fa
--- /dev/null
+++ b/editor/icons/icon_GUI_tree_arrow_right.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m4 1049.4 3-3-3-3" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_unchecked.png b/editor/icons/icon_GUI_unchecked.png
deleted file mode 100644
index 8341cdc643..0000000000
--- a/editor/icons/icon_GUI_unchecked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_unchecked.svg b/editor/icons/icon_GUI_unchecked.svg
new file mode 100644
index 0000000000..4adf3dd61e
--- /dev/null
+++ b/editor/icons/icon_GUI_unchecked.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 2a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2v-8a2 2 0 0 0 -2 -2h-8zm0.80078 2h6.3984a0.8 0.8 0 0 1 0.80078 0.80078v6.3984a0.8 0.8 0 0 1 -0.80078 0.80078h-6.3984a0.8 0.8 0 0 1 -0.80078 -0.80078v-6.3984a0.8 0.8 0 0 1 0.80078 -0.80078z" fill="#e0e0e0" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_vslider_bg.png b/editor/icons/icon_GUI_vslider_bg.png
deleted file mode 100644
index fa8c6cac1f..0000000000
--- a/editor/icons/icon_GUI_vslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_vslider_bg.svg b/editor/icons/icon_GUI_vslider_bg.svg
new file mode 100644
index 0000000000..99d01420b6
--- /dev/null
+++ b/editor/icons/icon_GUI_vslider_bg.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="6" y="1037.4" width="4" height="14" ry="0" fill-opacity=".39216" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_vsplit_bg.png b/editor/icons/icon_GUI_vsplit_bg.png
deleted file mode 100644
index 0c29b1e35c..0000000000
--- a/editor/icons/icon_GUI_vsplit_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_vsplit_bg.svg b/editor/icons/icon_GUI_vsplit_bg.svg
new file mode 100644
index 0000000000..8294c44611
--- /dev/null
+++ b/editor/icons/icon_GUI_vsplit_bg.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 7.9999995" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect y="1044.4" width="8" height="8" fill-opacity=".098039"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_GUI_vsplitter.png b/editor/icons/icon_GUI_vsplitter.png
deleted file mode 100644
index 56fb20bc3f..0000000000
--- a/editor/icons/icon_GUI_vsplitter.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_GUI_vsplitter.svg b/editor/icons/icon_GUI_vsplitter.svg
new file mode 100644
index 0000000000..31b4019486
--- /dev/null
+++ b/editor/icons/icon_GUI_vsplitter.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="8" version="1.1" viewBox="0 0 64 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1048.4h60" fill="none" stroke="#fff" stroke-linecap="round" stroke-opacity=".39216" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_accept_dialog.png b/editor/icons/icon_accept_dialog.png
deleted file mode 100644
index 7530127f82..0000000000
--- a/editor/icons/icon_accept_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_accept_dialog.svg b/editor/icons/icon_accept_dialog.svg
new file mode 100644
index 0000000000..331b88dd74
--- /dev/null
+++ b/editor/icons/icon_accept_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2zm9 1h1v1h-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8zm9.4746 1.6367 1.4141 1.4141-4.9492 4.9492-2.8281-2.8281 1.4141-1.4141 1.4141 1.4141z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_add.png b/editor/icons/icon_add.png
deleted file mode 100644
index fa675045bc..0000000000
--- a/editor/icons/icon_add.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_add.svg b/editor/icons/icon_add.svg
new file mode 100644
index 0000000000..685e6e82e8
--- /dev/null
+++ b/editor/icons/icon_add.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v6h-6v2h6v6h2v-6h6v-2h-6v-6h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_add_track.png b/editor/icons/icon_add_track.png
deleted file mode 100644
index fa675045bc..0000000000
--- a/editor/icons/icon_add_track.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anchor.png b/editor/icons/icon_anchor.png
deleted file mode 100644
index 7b02eb448e..0000000000
--- a/editor/icons/icon_anchor.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anchor.svg b/editor/icons/icon_anchor.svg
new file mode 100644
index 0000000000..9818fe31b1
--- /dev/null
+++ b/editor/icons/icon_anchor.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8262v0.17383h-2v2h2v3.8984a5 5 0 0 1 -3.8281 -3.6035l-1.9336 0.51758a7 7 0 0 0 6.7617 5.1875 7 7 0 0 0 6.7617 -5.1875l-1.9375-0.51953a5 5 0 0 1 -3.8242 3.6035v-3.8965h2v-2h-2v-0.17578a3 3 0 0 0 2 -2.8242 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_anim_export.png b/editor/icons/icon_anim_export.png
deleted file mode 100644
index b17ecdeb22..0000000000
--- a/editor/icons/icon_anim_export.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anim_export_all.png b/editor/icons/icon_anim_export_all.png
deleted file mode 100644
index 65a3cf5745..0000000000
--- a/editor/icons/icon_anim_export_all.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anim_get.png b/editor/icons/icon_anim_get.png
deleted file mode 100644
index 7edd883f02..0000000000
--- a/editor/icons/icon_anim_get.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anim_get_hl.png b/editor/icons/icon_anim_get_hl.png
deleted file mode 100644
index fa6e94545b..0000000000
--- a/editor/icons/icon_anim_get_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anim_import.png b/editor/icons/icon_anim_import.png
deleted file mode 100644
index 166e3fecd7..0000000000
--- a/editor/icons/icon_anim_import.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anim_import_all.png b/editor/icons/icon_anim_import_all.png
deleted file mode 100644
index c99893d59d..0000000000
--- a/editor/icons/icon_anim_import_all.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anim_set.png b/editor/icons/icon_anim_set.png
deleted file mode 100644
index c52334c72f..0000000000
--- a/editor/icons/icon_anim_set.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_anim_set_hl.png b/editor/icons/icon_anim_set_hl.png
deleted file mode 100644
index aefaf7f738..0000000000
--- a/editor/icons/icon_anim_set_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animated_sprite.png b/editor/icons/icon_animated_sprite.png
deleted file mode 100644
index 6b6cb2fbfa..0000000000
--- a/editor/icons/icon_animated_sprite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animated_sprite.svg b/editor/icons/icon_animated_sprite.svg
new file mode 100644
index 0000000000..fe7fde5a39
--- /dev/null
+++ b/editor/icons/icon_animated_sprite.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5b7f3">
+<path transform="translate(0 1036.4)" d="m10.5 0a5.5 5.5 0 0 0 -5.3301 4.1699 5.5 5.5 0 0 1 1.3301 -0.16992 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.16992 1.3301 5.5 5.5 0 0 0 4.1699 -5.3301 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m8.5 2a5.5 5.5 0 0 0 -4.7559 2.748 5.5 5.5 0 0 1 2.7559 -0.74805 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.74414 2.752 5.5 5.5 0 0 0 2.7441 -4.752 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".58824"/>
+<path transform="translate(0 1036.4)" d="m6.5 4a5.5 5.5 0 0 0 -5.5 5.5 5.5 5.5 0 0 0 5.5 5.5 5.5 5.5 0 0 0 5.5 -5.5 5.5 5.5 0 0 0 -5.5 -5.5zm-2.5 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-5 3h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_animated_sprite_3d.png b/editor/icons/icon_animated_sprite_3d.png
deleted file mode 100644
index e04d687bfb..0000000000
--- a/editor/icons/icon_animated_sprite_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animated_sprite_3d.svg b/editor/icons/icon_animated_sprite_3d.svg
new file mode 100644
index 0000000000..658ba3e5c2
--- /dev/null
+++ b/editor/icons/icon_animated_sprite_3d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c">
+<path transform="translate(0 1036.4)" d="m10.5 0a5.5 5.5 0 0 0 -5.3301 4.1699 5.5 5.5 0 0 1 1.3301 -0.16992 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.16992 1.3301 5.5 5.5 0 0 0 4.1699 -5.3301 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m8.5 2a5.5 5.5 0 0 0 -4.7559 2.748 5.5 5.5 0 0 1 2.7559 -0.74805 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.74414 2.752 5.5 5.5 0 0 0 2.7441 -4.752 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".58824"/>
+<path transform="translate(0 1036.4)" d="m6.5 4a5.5 5.5 0 0 0 -5.5 5.5 5.5 5.5 0 0 0 5.5 5.5 5.5 5.5 0 0 0 5.5 -5.5 5.5 5.5 0 0 0 -5.5 -5.5zm-2.5 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-5 3h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_animation.png b/editor/icons/icon_animation.png
deleted file mode 100644
index b333f82711..0000000000
--- a/editor/icons/icon_animation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animation.svg b/editor/icons/icon_animation.svg
new file mode 100644
index 0000000000..146403ece5
--- /dev/null
+++ b/editor/icons/icon_animation.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 4 -1.5352v1.5352h0.001953a2 2 0 0 0 0.26562 1 2 2 0 0 0 1.7324 1h1v-1-1h-0.5a0.5 0.49999 0 0 1 -0.5 -0.5v-0.5-5a6 6 0 0 0 -6 -6zm0 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm3.4414 2a1 1 0 0 1 0.88867 0.5 1 1 0 0 1 -0.36523 1.3652 1 1 0 0 1 -1.3672 -0.36523 1 1 0 0 1 0.36719 -1.3652 1 1 0 0 1 0.47656 -0.13477zm-6.9531 0.0019531a1 1 0 0 1 0.54688 0.13281 1 1 0 0 1 0.36719 1.3652 1 1 0 0 1 -1.3672 0.36523 1 1 0 0 1 -0.36523 -1.3652 1 1 0 0 1 0.81836 -0.49805zm0.023438 3.998a1 1 0 0 1 0.89062 0.5 1 1 0 0 1 -0.36719 1.3652 1 1 0 0 1 -1.3652 -0.36523 1 1 0 0 1 0.36523 -1.3652 1 1 0 0 1 0.47656 -0.13477zm6.9043 0.0019531a1 1 0 0 1 0.54883 0.13281 1 1 0 0 1 0.36523 1.3652 1 1 0 0 1 -1.3652 0.36523 1 1 0 0 1 -0.36719 -1.3652 1 1 0 0 1 0.81836 -0.49805zm-3.416 1.998a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_animation_node.png b/editor/icons/icon_animation_node.png
deleted file mode 100644
index 81026b3a98..0000000000
--- a/editor/icons/icon_animation_node.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animation_play.png b/editor/icons/icon_animation_play.png
deleted file mode 100644
index b405bf98f4..0000000000
--- a/editor/icons/icon_animation_play.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animation_player.png b/editor/icons/icon_animation_player.png
deleted file mode 100644
index 474ec2e647..0000000000
--- a/editor/icons/icon_animation_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animation_player.svg b/editor/icons/icon_animation_player.svg
new file mode 100644
index 0000000000..7c54464cd8
--- /dev/null
+++ b/editor/icons/icon_animation_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v14h1.1667v-2h1.8333v2h8v-2h2v2h1v-14h-1v2h-2v-2h-8v2h-1.8333v-2zm1.1667 4h1.8333v2h-1.8333zm9.8333 0h2v2h-2zm-9.8333 4h1.8333v2h-1.8333zm9.8333 0h2v2h-2z" fill="#cea4f1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_animation_set.png b/editor/icons/icon_animation_set.png
deleted file mode 100644
index b603382b0c..0000000000
--- a/editor/icons/icon_animation_set.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animation_tree.png b/editor/icons/icon_animation_tree.png
deleted file mode 100644
index 0bc8e7245a..0000000000
--- a/editor/icons/icon_animation_tree.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animation_tree_player.png b/editor/icons/icon_animation_tree_player.png
deleted file mode 100644
index 0bc8e7245a..0000000000
--- a/editor/icons/icon_animation_tree_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_animation_tree_player.svg b/editor/icons/icon_animation_tree_player.svg
new file mode 100644
index 0000000000..046506fa37
--- /dev/null
+++ b/editor/icons/icon_animation_tree_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v14h1.166v-2h1.834v2h8v-2h2v2h1v-14h-1v2h-2v-2h-8v2h-1.834v-2h-1.166zm4 3h2v1 1h1 3v2h-2v1 1h1 1v2h-1-2a1.0001 1.0001 0 0 1 -1 -1v-1-2h-1a1.0001 1.0001 0 0 1 -1 -1v-1-1-1zm-2.834 1h1.834v2h-1.834v-2zm9.834 0h2v2h-2v-2zm-9.834 4h1.834v2h-1.834v-2zm9.834 0h2v2h-2v-2z" fill="#cea4f1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_area.png b/editor/icons/icon_area.png
deleted file mode 100644
index 31b4473d17..0000000000
--- a/editor/icons/icon_area.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_area.svg b/editor/icons/icon_area.svg
new file mode 100644
index 0000000000..22348d50c1
--- /dev/null
+++ b/editor/icons/icon_area.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 2h2v-2h2v-2h-4zm10 0v2h2v2h2v-4h-4zm-7 3v2 4 2h8v-2-6h-8zm2 2h4v4h-4v-4zm-5 5v2 2h2 2v-2h-2v-2h-2zm12 0v2h-2v2h4v-2-2h-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_area_2d.png b/editor/icons/icon_area_2d.png
deleted file mode 100644
index 2f9c6bb8d4..0000000000
--- a/editor/icons/icon_area_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_area_2d.svg b/editor/icons/icon_area_2d.svg
new file mode 100644
index 0000000000..d6ecb6abe5
--- /dev/null
+++ b/editor/icons/icon_area_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 2h2v-2h2v-2h-4zm10 0v2h2v2h2v-4h-4zm-7 3v2 4 2h8v-2-6h-8zm2 2h4v4h-4v-4zm-5 5v2 2h2 2v-2h-2v-2h-2zm12 0v2h-2v2h4v-2-2h-2z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_array_data.png b/editor/icons/icon_array_data.png
deleted file mode 100644
index 447acaab2b..0000000000
--- a/editor/icons/icon_array_data.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_array_float.png b/editor/icons/icon_array_float.png
deleted file mode 100644
index d1b78b4c3e..0000000000
--- a/editor/icons/icon_array_float.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_array_int.png b/editor/icons/icon_array_int.png
deleted file mode 100644
index 2c4ec5bafb..0000000000
--- a/editor/icons/icon_array_int.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_array_mesh.svg b/editor/icons/icon_array_mesh.svg
new file mode 100644
index 0000000000..68890c4366
--- /dev/null
+++ b/editor/icons/icon_array_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm10 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-2 7v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2zm-8 3a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ffd684" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_array_string.png b/editor/icons/icon_array_string.png
deleted file mode 100644
index a2e3f11c35..0000000000
--- a/editor/icons/icon_array_string.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_array_variant.png b/editor/icons/icon_array_variant.png
deleted file mode 100644
index ab294898ad..0000000000
--- a/editor/icons/icon_array_variant.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_arrow_left.png b/editor/icons/icon_arrow_left.png
deleted file mode 100644
index ad382516c2..0000000000
--- a/editor/icons/icon_arrow_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_arrow_left.svg b/editor/icons/icon_arrow_left.svg
new file mode 100644
index 0000000000..b10afb0986
--- /dev/null
+++ b/editor/icons/icon_arrow_left.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9863 3.002a1 1 0 0 0 -0.69336 0.29102l-4 4a1.0001 1.0001 0 0 0 0 1.4141l4 4a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2.293-2.293h4.5859a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-4.5859l2.293-2.293a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -0.7207 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_arrow_left_disabled.png b/editor/icons/icon_arrow_left_disabled.png
deleted file mode 100644
index f1f9d0f988..0000000000
--- a/editor/icons/icon_arrow_left_disabled.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_arrow_right.png b/editor/icons/icon_arrow_right.png
deleted file mode 100644
index 6260d44fac..0000000000
--- a/editor/icons/icon_arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_arrow_right.svg b/editor/icons/icon_arrow_right.svg
new file mode 100644
index 0000000000..a51b15dc8d
--- /dev/null
+++ b/editor/icons/icon_arrow_right.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 3.002a1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l2.293 2.293h-4.5859c-0.55228 0-1 0.4477-1 1s0.44772 1 1 1h4.5859l-2.293 2.293a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l4-4a1.0001 1.0001 0 0 0 0 -1.4141l-4-4a1 1 0 0 0 -0.7207 -0.29102z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_arrow_right_disabled.png b/editor/icons/icon_arrow_right_disabled.png
deleted file mode 100644
index 840cd0da0a..0000000000
--- a/editor/icons/icon_arrow_right_disabled.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_arrow_up.png b/editor/icons/icon_arrow_up.png
deleted file mode 100644
index 2f02f48e18..0000000000
--- a/editor/icons/icon_arrow_up.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_arrow_up.svg b/editor/icons/icon_arrow_up.svg
new file mode 100644
index 0000000000..77a20e8c50
--- /dev/null
+++ b/editor/icons/icon_arrow_up.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2.9875 1044.4a1.0001 1.0001 0 0 0 1.7168 0.6972l2.293-2.2929v4.5859a1.0001 1.0001 0 1 0 2 0v-4.5859l2.293 2.2929a1.0001 1.0001 0 1 0 1.4141 -1.414l-3.9141-3.9141a1.0001 1.0001 0 0 0 -1.5859 0 1.0001 1.0001 0 0 0 -0.00391 0.01l-3.9102 3.9102a1.0001 1.0001 0 0 0 -0.30273 0.7168z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_arrow_up_disabled.png b/editor/icons/icon_arrow_up_disabled.png
deleted file mode 100644
index fb46aa1373..0000000000
--- a/editor/icons/icon_arrow_up_disabled.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_asset_lib.png b/editor/icons/icon_asset_lib.png
deleted file mode 100644
index 70d708a58c..0000000000
--- a/editor/icons/icon_asset_lib.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_asset_lib.svg b/editor/icons/icon_asset_lib.svg
new file mode 100644
index 0000000000..fcd670817d
--- /dev/null
+++ b/editor/icons/icon_asset_lib.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1c-1.6569 0-3 1.3431-3 3v2h-4v7c0 1.108 0.89199 2 2 2h10c1.108 0 2-0.89199 2-2v-7h-4v-2c0-1.6569-1.3431-3-3-3zm0 2c0.55228 0 1 0.44772 1 1v2h-2v-2c0-0.55228 0.44772-1 1-1z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_atlas_texture.png b/editor/icons/icon_atlas_texture.png
deleted file mode 100644
index 438ac8bfb5..0000000000
--- a/editor/icons/icon_atlas_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_atlas_texture.svg b/editor/icons/icon_atlas_texture.svg
new file mode 100644
index 0000000000..af3e488883
--- /dev/null
+++ b/editor/icons/icon_atlas_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m6 1037.4-5 2v12l5-2 4 2 5-2v-12l-5 2zm0 2 4 2v8l-4-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_bus_bypass.png b/editor/icons/icon_audio_bus_bypass.png
deleted file mode 100644
index 95a3a0177a..0000000000
--- a/editor/icons/icon_audio_bus_bypass.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_bus_bypass.svg b/editor/icons/icon_audio_bus_bypass.svg
new file mode 100644
index 0000000000..75c1caf7f1
--- /dev/null
+++ b/editor/icons/icon_audio_bus_bypass.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6.9707 2c-0.25474 0.01-0.49715 0.11122-0.67773 0.29102l-2.707 2.707h-1.5859c-0.55226 1e-4 -0.99994 0.4477-1 1v4c5.52e-5 0.5523 0.44774 0.9999 1 1h1.5859l2.707 2.707c0.63002 0.6296 1.7067 0.18367 1.707-0.70703v-10c-9.424e-4 -0.5631-0.46642-1.0144-1.0293-0.99805zm3.0293 5v1 1h4v-1-1h-4z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_bus_layout.png b/editor/icons/icon_audio_bus_layout.png
deleted file mode 100644
index bfa5e2c933..0000000000
--- a/editor/icons/icon_audio_bus_layout.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_bus_layout.svg b/editor/icons/icon_audio_bus_layout.svg
new file mode 100644
index 0000000000..9162722eb2
--- /dev/null
+++ b/editor/icons/icon_audio_bus_layout.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.108 0-2 0.89199-2 2v10c0 1.108 0.89199 2 2 2h2c1.108 0 2-0.89199 2-2v-10c0-1.108-0.89199-2-2-2h-2zm8 0c-1.108 0-2 0.89199-2 2v10c0 1.108 0.89199 2 2 2h2c1.108 0 2-0.89199 2-2v-10c0-1.108-0.89199-2-2-2h-2zm-8 1h2c0.55401 0 1 0.44599 1 1v10c0 0.55401-0.44599 1-1 1h-2c-0.55401 0-1-0.44599-1-1v-10c0-0.55401 0.44599-1 1-1z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_bus_mute.png b/editor/icons/icon_audio_bus_mute.png
deleted file mode 100644
index b074d848e0..0000000000
--- a/editor/icons/icon_audio_bus_mute.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_bus_mute.svg b/editor/icons/icon_audio_bus_mute.svg
new file mode 100644
index 0000000000..a7d085d535
--- /dev/null
+++ b/editor/icons/icon_audio_bus_mute.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6.9707 2c-0.25474 0.01-0.49715 0.11122-0.67773 0.29102l-2.707 2.707h-1.5859c-0.55226 1e-4 -0.99994 0.4477-1 1v4c5.52e-5 0.5523 0.44774 0.9999 1 1h1.5859l2.707 2.707c0.63002 0.6296 1.7067 0.18367 1.707-0.70703v-10c-9.424e-4 -0.5631-0.46642-1.0144-1.0293-0.99805zm4.0195 2.9902a1.0001 1.0001 0 0 0 -0.69726 1.7168l1.293 1.293-1.293 1.293a1.0001 1.0001 0 1 0 1.4141 1.4141l1.293-1.293 1.293 1.293a1.0001 1.0001 0 1 0 1.4141 -1.4141l-1.293-1.293 1.293-1.293a1.0001 1.0001 0 0 0 -0.72656 -1.7148 1.0001 1.0001 0 0 0 -0.6875 0.30078l-1.293 1.293-1.293-1.293a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_bus_solo.png b/editor/icons/icon_audio_bus_solo.png
deleted file mode 100644
index 085269f231..0000000000
--- a/editor/icons/icon_audio_bus_solo.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_bus_solo.svg b/editor/icons/icon_audio_bus_solo.svg
new file mode 100644
index 0000000000..e84c1cca25
--- /dev/null
+++ b/editor/icons/icon_audio_bus_solo.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6.9707 2c-0.25474 0.01-0.49715 0.11122-0.67773 0.29102l-2.707 2.707h-1.5859c-0.55226 1e-4 -0.99994 0.4477-1 1v4c5.52e-5 0.5523 0.44774 0.9999 1 1h1.5859l2.707 2.707c0.63002 0.6296 1.7067 0.18367 1.707-0.70703v-10c-9.424e-4 -0.5631-0.46642-1.0144-1.0293-0.99805zm8.0293 2a3 3 0 0 0 -3 3v2a1 1 0 0 1 -1 1h-1v2h1a3 3 0 0 0 3 -3v-2a1 1 0 0 1 1 -1h1v-2h-1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_effect_amplify.png b/editor/icons/icon_audio_effect_amplify.png
deleted file mode 100644
index 6588b90372..0000000000
--- a/editor/icons/icon_audio_effect_amplify.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_effect_amplify.svg b/editor/icons/icon_audio_effect_amplify.svg
new file mode 100644
index 0000000000..20612bbaf3
--- /dev/null
+++ b/editor/icons/icon_audio_effect_amplify.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="9" x2="9" y1="1037.4" y2="1051.4" gradientTransform="translate(0 -1036.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v8h2v-2h2v-2h-2v-2h3v-2zm6 0 2 4-2 4h2l1-2 1 2h2l-2-4 2-4h-2l-1 2-1-2zm-6 9v1h2v-1zm2 1v1h-2v-1h-1v4h1v-2h2v2h1v-4zm2-1v5h1v-4h1v4h1v-4h1v-1zm4 1v4h1v-4zm2-1v5h1v-2h2v-3zm1 1h1v1h-1z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_stream_gibberish.png b/editor/icons/icon_audio_stream_gibberish.png
deleted file mode 100644
index 60c85fa5b4..0000000000
--- a/editor/icons/icon_audio_stream_gibberish.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_gibberish.svg b/editor/icons/icon_audio_stream_gibberish.svg
new file mode 100644
index 0000000000..4b503a211a
--- /dev/null
+++ b/editor/icons/icon_audio_stream_gibberish.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2a2 2 0 0 0 -2 2v5a2 2 0 0 0 2 2h3v3l3-3h4a2 2 0 0 0 2 -2v-5a2 2 0 0 0 -2 -2h-10zm0 4h2v1h-2v-1zm5 0a1 1 0 0 1 1 1v1a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1zm3 0h2v1h-2v-1z" fill="#e0e0e0" fill-opacity=".99216"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_stream_m_p_c.png b/editor/icons/icon_audio_stream_m_p_c.png
deleted file mode 100644
index 665d7b56a1..0000000000
--- a/editor/icons/icon_audio_stream_m_p_c.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_o_g_g_vorbis.png b/editor/icons/icon_audio_stream_o_g_g_vorbis.png
deleted file mode 100644
index 7860e111d0..0000000000
--- a/editor/icons/icon_audio_stream_o_g_g_vorbis.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_opus.png b/editor/icons/icon_audio_stream_opus.png
deleted file mode 100644
index 69b0c83b4d..0000000000
--- a/editor/icons/icon_audio_stream_opus.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_player.png b/editor/icons/icon_audio_stream_player.png
deleted file mode 100644
index c3e6d6cafa..0000000000
--- a/editor/icons/icon_audio_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_player.svg b/editor/icons/icon_audio_stream_player.svg
new file mode 100644
index 0000000000..218fd995a0
--- /dev/null
+++ b/editor/icons/icon_audio_stream_player.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)" shape-rendering="auto">
+<path d="m10.023 1044.4c-0.56139-0.013-1.0235 0.4264-1.0234 0.9724v5.0542c6.911e-4 0.7482 0.83361 1.2154 1.5 0.8414l4-2.5262c0.66694-0.3743 0.66694-1.3104 0-1.6847l-4-2.5261c-0.14505-0.082-0.30893-0.1269-0.47656-0.131z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -0.24609 0.037109l-7 2a1.0001 1.0001 0 0 0 -0.72461 0.96094v5.5508a2.5 2.5 0 0 0 -0.5 -0.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961 -2.4121 1.0001 1.0001 0 0 0 0.0039062 -0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293 -0.99805z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_stream_player_2_d.png b/editor/icons/icon_audio_stream_player_2_d.png
deleted file mode 100644
index a332b876ea..0000000000
--- a/editor/icons/icon_audio_stream_player_2_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_player_2_d.svg b/editor/icons/icon_audio_stream_player_2_d.svg
new file mode 100644
index 0000000000..a431b84a55
--- /dev/null
+++ b/editor/icons/icon_audio_stream_player_2_d.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)" shape-rendering="auto">
+<path d="m10.023 1044.4c-0.56139-0.013-1.0235 0.4264-1.0234 0.9724v5.0542c6.911e-4 0.7482 0.83361 1.2154 1.5 0.8414l4-2.5262c0.66694-0.3743 0.66694-1.3104 0-1.6847l-4-2.5261c-0.14505-0.082-0.30893-0.1269-0.47656-0.131z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#a5b7f3" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -0.24609 0.037109l-7 2a1.0001 1.0001 0 0 0 -0.72461 0.96094v5.5508a2.5 2.5 0 0 0 -0.5 -0.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961 -2.4121 1.0001 1.0001 0 0 0 0.0039062 -0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293 -0.99805z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_stream_player_3_d.png b/editor/icons/icon_audio_stream_player_3_d.png
deleted file mode 100644
index 60e3528ffd..0000000000
--- a/editor/icons/icon_audio_stream_player_3_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_player_3_d.svg b/editor/icons/icon_audio_stream_player_3_d.svg
new file mode 100644
index 0000000000..4ce9d6da58
--- /dev/null
+++ b/editor/icons/icon_audio_stream_player_3_d.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)" shape-rendering="auto">
+<path d="m10.023 1044.4c-0.56139-0.013-1.0235 0.4264-1.0234 0.9724v5.0542c6.911e-4 0.7482 0.83361 1.2154 1.5 0.8414l4-2.5262c0.66694-0.3743 0.66694-1.3104 0-1.6847l-4-2.5261c-0.14505-0.082-0.30893-0.1269-0.47656-0.131z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fc9c9c" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path transform="translate(0 1036.4)" d="m11.971 1.002a1.0001 1.0001 0 0 0 -0.24609 0.037109l-7 2a1.0001 1.0001 0 0 0 -0.72461 0.96094v5.5508a2.5 2.5 0 0 0 -0.5 -0.050781 2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.4961 -2.4121 1.0001 1.0001 0 0 0 0.0039062 -0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5a1.0001 1.0001 0 0 0 -1.0293 -0.99805z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_stream_sample.png b/editor/icons/icon_audio_stream_sample.png
deleted file mode 100644
index 2b97f6198b..0000000000
--- a/editor/icons/icon_audio_stream_sample.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_audio_stream_sample.svg b/editor/icons/icon_audio_stream_sample.svg
new file mode 100644
index 0000000000..f0be1dc303
--- /dev/null
+++ b/editor/icons/icon_audio_stream_sample.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m11.971 1.002c-0.08326 0.00207-0.16593 0.014541-0.24609 0.037109l-7 2c-0.42881 0.12287-0.7244 0.51487-0.72461 0.96094v5.5508c-0.16454-0.033679-0.33205-0.050692-0.5-0.050781-1.3807 0-2.5 1.1193-2.5 2.5-4.75e-6 1.3807 1.1193 2.5 2.5 2.5 1.3456-0.0013 2.4488-1.0674 2.4961-2.4121 0.0025906-0.029226 0.003894-0.058551 0.0039062-0.087891v-7.2441l5-1.4277v3.1719l2-1v-3.5c-9.16e-4 -0.56314-0.4664-1.0145-1.0293-0.99805zm-1.4707 6.998c-0.277 0-0.5 0.223-0.5 0.5v5c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-5c0-0.277-0.223-0.5-0.5-0.5zm2 1c-0.277 0-0.5 0.223-0.5 0.5v3c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3c0-0.277-0.223-0.5-0.5-0.5zm-4 1c-0.277 0-0.5 0.223-0.5 0.5v1c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-1c0-0.277-0.223-0.5-0.5-0.5zm6 0c-0.277 0-0.5 0.223-0.5 0.5v1c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-1c0-0.277-0.223-0.5-0.5-0.5z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_audio_stream_speex.png b/editor/icons/icon_audio_stream_speex.png
deleted file mode 100644
index 6fefe47284..0000000000
--- a/editor/icons/icon_audio_stream_speex.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_auto_play.png b/editor/icons/icon_auto_play.png
deleted file mode 100644
index a6be64a1d1..0000000000
--- a/editor/icons/icon_auto_play.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_auto_play.svg b/editor/icons/icon_auto_play.svg
new file mode 100644
index 0000000000..78e48b2bc3
--- /dev/null
+++ b/editor/icons/icon_auto_play.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2a1.0001 1.0001 0 0 0 -1 1v10a1.0001 1.0001 0 0 0 1 1h8a1.0001 1.0001 0 0 0 0.78125 -0.375l4-5a1.0001 1.0001 0 0 0 0 -1.248l-4-5a1.0001 1.0001 0 0 0 -0.78125 -0.37695h-8zm1 2h6.5195l3.1992 4-3.1992 4h-6.5195v-8zm3 1c-1.1046 0-2 0.8954-2 2v4h1v-2h2v2h1v-4c0-1.1046-0.89543-2-2-2zm0 1a1 1 0 0 1 1 1v1h-2v-1a1 1 0 0 1 1 -1zm3 0v4l2-2-2-2z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_b_c_s_f_x.png b/editor/icons/icon_b_c_s_f_x.png
deleted file mode 100644
index 2100aea6a0..0000000000
--- a/editor/icons/icon_b_c_s_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_b_g_color_f_x.png b/editor/icons/icon_b_g_color_f_x.png
deleted file mode 100644
index 5b7552f6d5..0000000000
--- a/editor/icons/icon_b_g_color_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_b_g_image_f_x.png b/editor/icons/icon_b_g_image_f_x.png
deleted file mode 100644
index 7e8ec86eec..0000000000
--- a/editor/icons/icon_b_g_image_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_back.png b/editor/icons/icon_back.png
deleted file mode 100644
index 8497d2cf4b..0000000000
--- a/editor/icons/icon_back.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_back.svg b/editor/icons/icon_back.svg
new file mode 100644
index 0000000000..184369f1e6
--- /dev/null
+++ b/editor/icons/icon_back.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="16" version="1.1" viewBox="0 0 8 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m6 1038.4-4 6 4 6" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_back_buffer_copy.png b/editor/icons/icon_back_buffer_copy.png
deleted file mode 100644
index 35f04ddac8..0000000000
--- a/editor/icons/icon_back_buffer_copy.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_back_buffer_copy.svg b/editor/icons/icon_back_buffer_copy.svg
new file mode 100644
index 0000000000..8231c7133c
--- /dev/null
+++ b/editor/icons/icon_back_buffer_copy.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v11h5v-2h-3v-7h6v-2zm6 3v11h8v-11zm2 2h4v7h-4z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_back_disabled.png b/editor/icons/icon_back_disabled.png
deleted file mode 100644
index 31aab496e2..0000000000
--- a/editor/icons/icon_back_disabled.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_back_no.png b/editor/icons/icon_back_no.png
deleted file mode 100644
index 539ce4124a..0000000000
--- a/editor/icons/icon_back_no.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bake.png b/editor/icons/icon_bake.png
deleted file mode 100644
index 3b7fce5c9f..0000000000
--- a/editor/icons/icon_bake.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bake.svg b/editor/icons/icon_bake.svg
new file mode 100644
index 0000000000..4a9ccfed12
--- /dev/null
+++ b/editor/icons/icon_bake.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-9 2h10v6h-10v-6zm3 1v1h4v-1h-4z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_baked_light.png b/editor/icons/icon_baked_light.png
deleted file mode 100644
index c667b542c1..0000000000
--- a/editor/icons/icon_baked_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_baked_light.svg b/editor/icons/icon_baked_light.svg
new file mode 100644
index 0000000000..f5bf07a444
--- /dev/null
+++ b/editor/icons/icon_baked_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-9 2h10v6h-10v-6zm3 1v1h4v-1h-4z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_baked_light_instance.png b/editor/icons/icon_baked_light_instance.png
deleted file mode 100644
index c667b542c1..0000000000
--- a/editor/icons/icon_baked_light_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_baked_light_instance.svg b/editor/icons/icon_baked_light_instance.svg
new file mode 100644
index 0000000000..f5bf07a444
--- /dev/null
+++ b/editor/icons/icon_baked_light_instance.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-9 2h10v6h-10v-6zm3 1v1h4v-1h-4z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_baked_light_sampler.png b/editor/icons/icon_baked_light_sampler.png
deleted file mode 100644
index 15ff7b98b9..0000000000
--- a/editor/icons/icon_baked_light_sampler.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_baked_light_sampler.svg b/editor/icons/icon_baked_light_sampler.svg
new file mode 100644
index 0000000000..0bf630039d
--- /dev/null
+++ b/editor/icons/icon_baked_light_sampler.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v2h12v-2h-12zm-1 3v9a2 2 0 0 0 2 2h4v-2h-4v-6h4 6 2v-3h-14zm2 1h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm3 0h1v1h-1v-1zm-6 3v1h1v-1h-1zm4 1a1 1 0 0 0 -1 1v4a1 1 0 0 0 1 1h4a1 1 0 0 0 1 -1v-4a1 1 0 0 0 -1 -1h-4zm3 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-2 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bit_map.png b/editor/icons/icon_bit_map.png
deleted file mode 100644
index 58468c98bd..0000000000
--- a/editor/icons/icon_bit_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bit_map.svg b/editor/icons/icon_bit_map.svg
new file mode 100644
index 0000000000..fbfe0e4b5a
--- /dev/null
+++ b/editor/icons/icon_bit_map.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2h2v-2h-2zm2 2v2h2v-2h-2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm2 0h2v-2h-2v2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm-2 0h-2v2h2v-2zm-2 0v-2h-2v2h2zm-2 0h-2v2h2v-2zm-2 0v-2h-2v2h2zm-2 0h-2v2h2v-2zm0-2v-2h-2v2h2zm0-2h2v-2h-2v2zm0-2v-2h-2v2h2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm2 0h2v-2h-2v2zm0 2v2h2v-2h-2zm-2 0h-2v2h2v-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bitmap_font.png b/editor/icons/icon_bitmap_font.png
deleted file mode 100644
index 5334c335dc..0000000000
--- a/editor/icons/icon_bitmap_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bitmap_font.svg b/editor/icons/icon_bitmap_font.svg
new file mode 100644
index 0000000000..ce5f88b97c
--- /dev/null
+++ b/editor/icons/icon_bitmap_font.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v4h1v-1h1v-1h4v10h-1v1h-1v1h6v-1h-1v-1h-1v-10h4v1h1v1h1v-4z" fill="#84c2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_blend.png b/editor/icons/icon_blend.png
deleted file mode 100644
index 1676c650c2..0000000000
--- a/editor/icons/icon_blend.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_blend.svg b/editor/icons/icon_blend.svg
new file mode 100644
index 0000000000..3d24fc3b6b
--- /dev/null
+++ b/editor/icons/icon_blend.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1v2h2.5859l-3.5859 3.5859-4.293-4.293-1.4141 1.4141 4.293 4.293-4.293 4.293 1.4141 1.4141 4.293-4.293 3.5859 3.5859h-2.5859v2h5a1.0001 1.0001 0 0 0 1 -1v-5h-2v2.5859l-3.5859-3.5859 3.5859-3.5859v2.5859h2v-5a1.0001 1.0001 0 0 0 -1 -1h-5z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bone.png b/editor/icons/icon_bone.png
deleted file mode 100644
index 2d9a7b47f3..0000000000
--- a/editor/icons/icon_bone.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bone.svg b/editor/icons/icon_bone.svg
new file mode 100644
index 0000000000..01662cd9aa
--- /dev/null
+++ b/editor/icons/icon_bone.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804 0.7205 2.4664 2.4663 0 0 0 -0.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023 0.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397 0.6955 2.4664 2.4663 0 0 0 0.69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 0.31408 -3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004 -0.3102 2.4664 2.4663 0 0 0 0 -3.4875 2.4664 2.4663 0 0 0 -1.397 -0.6974 2.4664 2.4663 0 0 0 -0.69561 -1.3971 2.4664 2.4663 0 0 0 -1.7072 -0.7205z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bone_attachment.png b/editor/icons/icon_bone_attachment.png
deleted file mode 100644
index 882bb55f44..0000000000
--- a/editor/icons/icon_bone_attachment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bone_attachment.svg b/editor/icons/icon_bone_attachment.svg
new file mode 100644
index 0000000000..1dbc0f1ed3
--- /dev/null
+++ b/editor/icons/icon_bone_attachment.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804 0.7205 2.4664 2.4663 0 0 0 -0.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023 0.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397 0.6955 2.4664 2.4663 0 0 0 0.69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 0.31408 -3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004 -0.3102 2.4664 2.4663 0 0 0 0 -3.4875 2.4664 2.4663 0 0 0 -1.397 -0.6974 2.4664 2.4663 0 0 0 -0.69561 -1.3971 2.4664 2.4663 0 0 0 -1.7072 -0.7205z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bone_track.png b/editor/icons/icon_bone_track.png
deleted file mode 100644
index 1e55e53d6b..0000000000
--- a/editor/icons/icon_bone_track.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bone_track.svg b/editor/icons/icon_bone_track.svg
new file mode 100644
index 0000000000..a8adbb3dd1
--- /dev/null
+++ b/editor/icons/icon_bone_track.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m10.478 1037.4a2.4664 2.4663 0 0 0 -1.7804 0.7205 2.4664 2.4663 0 0 0 -0.31408 3.1041l-3.559 3.5608a2.4664 2.4663 0 0 0 -3.1023 0.3121 2.4664 2.4663 0 0 0 0 3.4876 2.4664 2.4663 0 0 0 1.397 0.6955 2.4664 2.4663 0 0 0 0.69561 1.397 2.4664 2.4663 0 0 0 3.4877 0 2.4664 2.4663 0 0 0 0.31408 -3.1041l3.5609-3.5608a2.4664 2.4663 0 0 0 3.1004 -0.3102 2.4664 2.4663 0 0 0 0 -3.4875 2.4664 2.4663 0 0 0 -1.397 -0.6974 2.4664 2.4663 0 0 0 -0.69561 -1.3971 2.4664 2.4663 0 0 0 -1.7072 -0.7205z" fill="#cea4f1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bool.png b/editor/icons/icon_bool.png
deleted file mode 100644
index c680bc195a..0000000000
--- a/editor/icons/icon_bool.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bool.svg b/editor/icons/icon_bool.svg
new file mode 100644
index 0000000000..56fcba5833
--- /dev/null
+++ b/editor/icons/icon_bool.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m0 4v4 4h2a3 3 0 0 0 2.5 -1.3457 3 3 0 0 0 2.5 1.3457 3 3 0 0 0 2 -0.76758 3 3 0 0 0 2 0.76758 3 3 0 0 0 2.5 -1.3457 3 3 0 0 0 2.5 1.3457v-2a1 1 0 0 1 -1 -1v-5h-2v2.7695a3 3 0 0 0 -2 -0.76953 3 3 0 0 0 -2 0.76758 3 3 0 0 0 -2 -0.76758 3 3 0 0 0 -2.5 1.3457 3 3 0 0 0 -2.5 -1.3457v-2h-2zm2 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm4 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#cf68ea"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_box_shape.png b/editor/icons/icon_box_shape.png
deleted file mode 100644
index 68ec6088c9..0000000000
--- a/editor/icons/icon_box_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_box_shape.svg b/editor/icons/icon_box_shape.svg
new file mode 100644
index 0000000000..b11edb16ca
--- /dev/null
+++ b/editor/icons/icon_box_shape.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#2998ff"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fill="#68b6ff"/>
+<path d="m1 1040.4 7 3 7-3-7-3z" fill="#a2d2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bus_vu_db.png b/editor/icons/icon_bus_vu_db.png
deleted file mode 100644
index 2c51a2e559..0000000000
--- a/editor/icons/icon_bus_vu_db.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bus_vu_db.svg b/editor/icons/icon_bus_vu_db.svg
new file mode 100644
index 0000000000..23bcd8841c
--- /dev/null
+++ b/editor/icons/icon_bus_vu_db.svg
@@ -0,0 +1,12 @@
+<svg width="32" height="128" version="1.1" viewBox="0 0 32 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="16" x2="16" y2="128" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m1.5 0c-0.831 0-1.5 0.669-1.5 1.5 0 0.831 0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5 0-0.831-0.669-1.5-1.5-1.5h-2zm0 7c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm22.5 3.75c-1.5 0-3 1.3056-3 3.25-0.01912 1.3523 2.0191 1.3523 2 0 0-1.0556 0.5-1.25 1-1.25s1 0.19444 1 1.25c0 0.59157-0.35893 1.156-1.1914 1.8633-0.83248 0.70724-2.0616 1.4518-3.3574 2.3008-0.82974 0.54516-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.01912 1.3523-2.0191 0-2h-1.7852c0.28375-0.20667 0.63106-0.39443 0.88867-0.61328 1.0302-0.87519 1.8965-1.9783 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm-7.0293 0.25195c-0.14519 0.0037-0.28782 0.03907-0.41797 0.10352l-2 1c-1.1924 0.59646-0.29787 2.3855 0.89453 1.7891l0.55273-0.27539v5.3809c-0.01913 1.3523 2.0191 1.3523 2 0v-7c-9.16e-4 -0.56314-0.4664-1.0145-1.0293-0.99805zm-15.471 2.998c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm0 7c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm21.5 3c-0.554 0-1 0.446-1 1v1 2h-0.92969c-0.02343-8.24e-4 -0.046882-8.24e-4 -0.070312 0-1.0702 0-2.0626 0.57318-2.5977 1.5-0.5351 0.92681-0.5351 2.0732 0 3 0.5351 0.92681 1.5275 1.5 2.5977 1.5h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1zm4 0c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2c1.0702 0 2.0626-0.57319 2.5977-1.5 0.5351-0.92682 0.5351-2.0732 0-3-0.10504-0.18193-0.23173-0.34698-0.36914-0.5 0.1378-0.15331 0.26385-0.31764 0.36914-0.5 0.5351-0.92682 0.5351-2.0732 0-3-0.5351-0.92682-1.5275-1.5-2.5977-1.5h-2zm-14 1c-1.6447 0-3 1.3553-3 3v3c0 1.6447 1.3553 3 3 3s3-1.3553 3-3v-3c0-1.6447-1.3553-3-3-3zm15 1h1c0.35887 0 0.6858 0.18921 0.86523 0.5 0.17944 0.31079 0.17944 0.68921 0 1-0.17943 0.31079-0.50636 0.5-0.86523 0.5h-0.070312-0.92969v-2zm-15 1c0.5713 0 1 0.4287 1 1v3c0 0.5713-0.4287 1-1 1s-1-0.4287-1-1v-3c0-0.5713 0.4287-1 1-1zm-11.5 1c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm19.5 2h1v2h-0.92969c-0.02343-8.24e-4 -0.046882-8.24e-4 -0.070312 0-0.35887 0-0.6858-0.18921-0.86523-0.5-0.17944-0.31079-0.17944-0.68921 0-1 0.17943-0.31079 0.50636-0.5 0.86523-0.5zm7 0h1c0.35887 0 0.6858 0.18921 0.86523 0.5 0.17944 0.31079 0.17944 0.68921 0 1-0.17943 0.31079-0.50636 0.5-0.86523 0.5h-1v-2zm-26.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm22.5 2.75c-1.5 0-3 1.3056-3 3.25-0.01912 1.3523 2.0191 1.3523 2 0 0-1.0556 0.5-1.25 1-1.25s1 0.19444 1 1.25c0 0.59157-0.35893 1.156-1.1914 1.8633-0.83248 0.70724-2.0616 1.4518-3.3574 2.3008-0.82974 0.54516-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.01913 1.3523-2.0191 0-2h-1.7852c0.28375-0.20667 0.63106-0.39443 0.88867-0.61328 1.0302-0.87519 1.8965-1.9783 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm-7.0293 0.25195c-0.14519 0.0037-0.28782 0.03907-0.41797 0.10352l-2 1c-1.1924 0.59646-0.29787 2.3855 0.89453 1.7891l0.55273-0.27539v5.3809c-0.01913 1.3523 2.0191 1.3523 2 0v-7c-9.16e-4 -0.56314-0.4664-1.0145-1.0293-0.99805zm-15.471 3.998c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 1v2h3v-2h-3zm-7 6c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm15.986 3.75c-1.5 0-3 1.3056-3 3.25-0.01913 1.3523 2.0191 1.3523 2 0 0-1.0556 0.5-1.25 1-1.25s1 0.19444 1 1.25c0 0.59157-0.35893 1.156-1.1914 1.8633s-2.0616 1.4518-3.3574 2.3008c-0.82974 0.54516-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.01913 1.3523-2.0191 0-2h-1.7871c0.2841-0.20689 0.63273-0.39419 0.89062-0.61328 1.0302-0.87519 1.8965-1.9783 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm7.0469 0.23828c-0.36561-0.0093-0.70715 0.18167-0.89062 0.49805l-3 5c-0.39877 0.66633 0.080888 1.5131 0.85742 1.5137h3v1c-0.01912 1.3523 2.0191 1.3523 2 0v-2c-5.5e-5 -0.55226-0.44774-0.99994-1-1h-2.2324l2.0898-3.4844c0.40768-0.65656-0.05163-1.5077-0.82422-1.5273zm-23.533 3.0117c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm-7.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm24.547 4.9961c-0.12355-0.0037-0.24673 0.01547-0.36328 0.05664 0 0-0.98349 0.3331-1.8906 1.2402-0.90714 0.90717-1.793 2.457-1.793 4.707-6.13e-4 0.07218 0.006604 0.14421 0.021484 0.21484 0.11389 1.5445 1.4072 2.7852 2.9785 2.7852 1.645 0 3-1.355 3-3 0-1.645-1.355-3-3-3-0.01533 0-0.029642 0.003706-0.044922 0.003906 0.084-0.10099 0.16695-0.21188 0.25195-0.29688 0.59286-0.59287 1.1094-0.75781 1.1094-0.75781 1.0726-0.33926 0.85487-1.9171-0.26953-1.9531zm-9.0605 0.005859c-1.0407 0.006928-2.0405 0.55674-2.584 1.498a1 1 0 0 0 0.36523 1.3672 1 1 0 0 0 1.3672 -0.36719c0.24596-0.42602 0.74477-0.6077 1.207-0.43945 0.46226 0.16824 0.728 0.62882 0.64258 1.1133-0.085422 0.48445-0.49245 0.82617-0.98438 0.82617a1 1 0 0 0 -1 1 1 1 0 0 0 1 1c0.49193 0 0.89896 0.34368 0.98438 0.82812 0.085422 0.48446-0.18032 0.94508-0.64258 1.1133-0.46226 0.1683-0.96107-0.015436-1.207-0.44141-0.27644-0.47871-0.88884-0.6423-1.3672-0.36523-0.47752 0.27639-0.64095 0.88733-0.36523 1.3652 0.72462 1.2553 2.2612 1.816 3.623 1.3203 1.3618-0.4956 2.1813-1.9126 1.9297-3.3398-0.1003-0.56884-0.37254-1.0676-0.74023-1.4746 0.37098-0.40777 0.63937-0.91234 0.74023-1.4844 0.25166-1.4272-0.56786-2.8442-1.9297-3.3398-0.34046-0.12392-0.69218-0.182-1.0391-0.17969zm-15.486 1.998c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm16 1c0.56413 0 1 0.43587 1 1s-0.43587 1-1 1-1-0.43587-1-1 0.43587-1 1-1zm-23.5 4c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm16.533 3.9883c-0.36561-0.0093-0.70715 0.18167-0.89062 0.49805l-3 5c-0.39877 0.66633 0.080888 1.5131 0.85742 1.5137h3v1c-0.01912 1.3523 2.0191 1.3523 2 0v-2c-5.5e-5 -0.55226-0.44774-0.99994-1-1h-2.2324l2.0898-3.4844c0.40768-0.65656-0.05163-1.5077-0.82422-1.5273zm6.9668 0.011719c-1.645 0-3 1.355-3 3 0 0.769 0.30369 1.4666 0.78711 2-0.48282 0.53332-0.78711 1.2315-0.78711 2 0 1.645 1.355 3 3 3s3-1.355 3-3c0-0.76846-0.30429-1.4667-0.78711-2 0.48342-0.53345 0.78711-1.231 0.78711-2 0-1.645-1.355-3-3-3zm0 2c0.56413 0 1 0.4359 1 1 0 0.5642-0.43587 1-1 1s-1-0.4358-1-1c0-0.5641 0.43587-1 1-1zm-23.5 1c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm16 1c0.56413 0 1 0.4359 1 1 0 0.5642-0.43587 1-1 1s-1-0.4358-1-1c0-0.5641 0.43587-1 1-1zm-23.5 4c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm16.447 3.9824c-0.08995 0.0063-0.17865 0.024647-0.26367 0.054687 0 0-0.98349 0.33509-1.8906 1.2422-0.90714 0.9068-1.793 2.457-1.793 4.707-6.13e-4 0.0722 0.006604 0.14421 0.021484 0.21484 0.11389 1.5445 1.4072 2.7852 2.9785 2.7852 1.645 0 3-1.355 3-3 0-1.6451-1.355-3-3-3-0.01533 0-0.029642 0.003706-0.044922 0.003906 0.084-0.10099 0.16695-0.21187 0.25195-0.29688 0.59286-0.5929 1.1094-0.75781 1.1094-0.75781 1.0726-0.33926 0.85487-1.9171-0.26953-1.9531-0.03318-0.0017-0.066429-0.0017-0.099609 0zm7.0527 0.017578c-1.6447 0-3 1.3553-3 3v3c0 1.6447 1.3553 3 3 3s3-1.3553 3-3v-3c0-1.6447-1.3553-3-3-3zm0 2c0.5713 0 1 0.4287 1 1v3c0 0.5713-0.4287 1-1 1s-1-0.4287-1-1v-3c0-0.5713 0.4287-1 1-1zm-23.5 1c-0.831 0-1.5 0.669-1.5 1.5 0 0.831 0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5 0-0.831-0.669-1.5-1.5-1.5h-2zm15.5 1.9863c0.56413 0 1 0.4358 1 1 0 0.5641-0.43587 1-1 1s-1-0.4359-1-1c0-0.5642 0.43587-1 1-1zm-8 0.013672v2h3v-2h-3zm-7.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5zm22.5 3.75c-1.5 0-3 1.3056-3 3.25-0.01912 1.3523 2.0191 1.3523 2 0 0-1.0555 0.5-1.25 1-1.25s1 0.1945 1 1.25c0 0.5916-0.35893 1.1561-1.1914 1.8633-0.83248 0.7072-2.0616 1.4518-3.3574 2.3008-0.82975 0.54515-0.44398 1.8356 0.54883 1.8359h5c1.3523 0.0191 1.3523-2.0191 0-2h-1.7852c0.28375-0.2066 0.63106-0.39438 0.88867-0.61328 1.0302-0.8751 1.8965-1.9782 1.8965-3.3867 0-1.9444-1.5-3.25-3-3.25zm-10 0.25c-1.3523-0.0191-1.3523 2.0191 0 2h3.3828l-3.2773 6.5527c-0.59596 1.1926 1.1931 2.0871 1.7891 0.89454l4-8c0.33239-0.66495-0.15113-1.4472-0.89453-1.4473h-5zm-12.5 3c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5h2c0.831 0 1.5-0.669 1.5-1.5s-0.669-1.5-1.5-1.5h-2zm7.5 2v2h3v-2h-3zm-7.5 5c-0.831 0-1.5 0.669-1.5 1.5s0.669 1.5 1.5 1.5 1.5-0.669 1.5-1.5-0.669-1.5-1.5-1.5z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bus_vu_empty.png b/editor/icons/icon_bus_vu_empty.png
deleted file mode 100644
index 32d886b1a2..0000000000
--- a/editor/icons/icon_bus_vu_empty.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bus_vu_empty.svg b/editor/icons/icon_bus_vu_empty.svg
new file mode 100644
index 0000000000..52c86ac704
--- /dev/null
+++ b/editor/icons/icon_bus_vu_empty.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="128" version="1.1" viewBox="0 0 16 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="2" y2="126" gradientTransform="translate(0 924.36)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path d="m3 926.36c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1z" fill="url(#a)"/>
+<path transform="translate(0 924.36)" d="m3 2c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bus_vu_frozen.png b/editor/icons/icon_bus_vu_frozen.png
deleted file mode 100644
index 4e9b8f4b4b..0000000000
--- a/editor/icons/icon_bus_vu_frozen.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bus_vu_frozen.svg b/editor/icons/icon_bus_vu_frozen.svg
new file mode 100644
index 0000000000..99884d33fc
--- /dev/null
+++ b/editor/icons/icon_bus_vu_frozen.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="128" version="1.1" viewBox="0 0 16 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="2" y2="126" gradientUnits="userSpaceOnUse">
+<stop stop-color="#62aeff" offset="0"/>
+<stop stop-color="#75d1e6" offset=".5"/>
+<stop stop-color="#84ffee" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m3 2c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10z" fill="url(#a)" opacity=".7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_bus_vu_full.png b/editor/icons/icon_bus_vu_full.png
deleted file mode 100644
index b47deea254..0000000000
--- a/editor/icons/icon_bus_vu_full.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_bus_vu_full.svg b/editor/icons/icon_bus_vu_full.svg
new file mode 100644
index 0000000000..a91b8a06c6
--- /dev/null
+++ b/editor/icons/icon_bus_vu_full.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="128" version="1.1" viewBox="0 0 16 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="2" y2="126" gradientUnits="userSpaceOnUse">
+<stop stop-color="#ff8484" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#84ffb1" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m3 2c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 5c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10zm0 3c-0.554 0-1 0.446-1 1s0.446 1 1 1h10c0.554 0 1-0.446 1-1s-0.446-1-1-1h-10z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_button.png b/editor/icons/icon_button.png
deleted file mode 100644
index 0c39e003e4..0000000000
--- a/editor/icons/icon_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_button.svg b/editor/icons/icon_button.svg
new file mode 100644
index 0000000000..605546d174
--- /dev/null
+++ b/editor/icons/icon_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v3.1328l-1.4453-0.96484-1.1094 1.6641 3 2a1.0001 1.0001 0 0 0 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-3.1328h-2zm-1.5 8c-0.831 0-1.5 0.669-1.5 1.5v1.5h-2v2h12v-2h-2v-1.5c0-0.831-0.669-1.5-1.5-1.5h-5z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_button_group.png b/editor/icons/icon_button_group.png
deleted file mode 100644
index ac2e484abc..0000000000
--- a/editor/icons/icon_button_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_button_group.svg b/editor/icons/icon_button_group.svg
new file mode 100644
index 0000000000..110688adaf
--- /dev/null
+++ b/editor/icons/icon_button_group.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1c-0.554 0-1 0.446-1 1v12c0 0.554 0.446 1 1 1h8c0.554 0 1-0.446 1-1v-12c0-0.554-0.446-1-1-1h-8zm1 1h2c0.554 0 1 0.446 1 1s-0.446 1-1 1h-2c-0.554 0-1-0.446-1-1s0.446-1 1-1zm6 0c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm-5 4a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm5 0c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm0 4c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm-7 2h1v2h-1v-2zm2 0h1v2h-1v-2zm2 0h1v2h-1v-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_camera.png b/editor/icons/icon_camera.png
deleted file mode 100644
index 4dff1791ad..0000000000
--- a/editor/icons/icon_camera.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_camera.svg b/editor/icons/icon_camera.svg
new file mode 100644
index 0000000000..aaacdec36c
--- /dev/null
+++ b/editor/icons/icon_camera.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m9 1038.4a3 3 0 0 0 -2.9883 2.7774 3 3 0 0 0 -2.0117 -0.7774 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8243v2.1757c0 0.554 0.44599 1 1 1h6c0.55401 0 1-0.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1 -2.2305 3 3 0 0 0 -3 -3z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_camera_2d.png b/editor/icons/icon_camera_2d.png
deleted file mode 100644
index 6497997afe..0000000000
--- a/editor/icons/icon_camera_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_camera_2d.svg b/editor/icons/icon_camera_2d.svg
new file mode 100644
index 0000000000..089f864511
--- /dev/null
+++ b/editor/icons/icon_camera_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m9 1038.4a3 3 0 0 0 -2.9883 2.7774 3 3 0 0 0 -2.0117 -0.7774 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8243v2.1757c0 0.554 0.44599 1 1 1h6c0.55401 0 1-0.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1 -2.2305 3 3 0 0 0 -3 -3z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_canvas_item.png b/editor/icons/icon_canvas_item.png
deleted file mode 100644
index 64f5d8abdf..0000000000
--- a/editor/icons/icon_canvas_item.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_canvas_item.svg b/editor/icons/icon_canvas_item.svg
new file mode 100644
index 0000000000..72503faea3
--- /dev/null
+++ b/editor/icons/icon_canvas_item.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2.9208 1046.4c-0.26373 0.3-0.4204 0.7296-0.4204 1.2383 0 1.6277-3.1381-0.1781-0.33757 2.6703 0.88382 0.899 2.6544 0.6701 3.5382-0.2288 0.88384-0.899 0.88382-2.3565 0-3.2554-1.1002-1.1191-2.2001-1.0845-2.7803-0.4244zm2.3802-1.6103 2.4005 2.4416 6.8014-6.9177c0.66286-0.6742 0.66286-1.7673 0-2.4415-0.66288-0.6741-1.7376-0.6741-2.4005 0z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_canvas_item_material.png b/editor/icons/icon_canvas_item_material.png
deleted file mode 100644
index a04f6e8f5f..0000000000
--- a/editor/icons/icon_canvas_item_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_canvas_item_material.svg b/editor/icons/icon_canvas_item_material.svg
new file mode 100644
index 0000000000..d043e6a5a1
--- /dev/null
+++ b/editor/icons/icon_canvas_item_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.1035 3a7 7 0 0 0 -1.418 2h12.631a7 7 0 0 0 -1.4277 -2h-9.7852z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m1.6855 5a7 7 0 0 0 -0.60547 2h13.842a7 7 0 0 0 -0.60547 -2h-12.631z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1.0801 7a7 7 0 0 0 -0.080078 1 7 7 0 0 0 0.078125 1h13.842a7 7 0 0 0 0.080078 -1 7 7 0 0 0 -0.078125 -1h-13.842z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1.0781 9a7 7 0 0 0 0.60547 2h12.631a7 7 0 0 0 0.60547 -2h-13.842z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m3.1113 13a7 7 0 0 0 4.8887 2 7 7 0 0 0 4.8965 -2h-9.7852z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m1.6836 11a7 7 0 0 0 1.4277 2h9.7852a7 7 0 0 0 1.418 -2h-12.631z" fill="#9f70ff"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -4.8965 2h9.7852a7 7 0 0 0 -4.8887 -2z" fill="#ff7070"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_canvas_item_shader.png b/editor/icons/icon_canvas_item_shader.png
deleted file mode 100644
index 8392f889d1..0000000000
--- a/editor/icons/icon_canvas_item_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_canvas_item_shader.svg b/editor/icons/icon_canvas_item_shader.svg
new file mode 100644
index 0000000000..e92dc7f555
--- /dev/null
+++ b/editor/icons/icon_canvas_item_shader.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.303 1c-0.4344 0-0.86973 0.16881-1.2012 0.50586l-1.4688 1.4941h4.3418c0.082839-0.52789-0.072596-1.0872-0.47266-1.4941-0.33144-0.33705-0.76482-0.50586-1.1992-0.50586z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m10.633 3l-1.9668 2h4.8008l1.0352-1.0527c0.2628-0.2673 0.41824-0.60049 0.47266-0.94727h-4.3418z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m8.666 5l-1.9648 2h4.7988l1.9668-2h-4.8008z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m6.7012 7l-1.4004 1.4238 0.56641 0.57617h3.668l1.9648-2h-4.7988z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m5.8672 9l1.834 1.8652 1.834-1.8652h-3.668zm-1.752 0.57812c-0.48501-0.048725-0.90521 0.12503-1.1953 0.45508-0.21472 0.24426-0.35243 0.57797-0.39844 0.9668h3.5625c-0.10223-0.1935-0.22224-0.37965-0.38281-0.54297-0.55011-0.55955-1.1009-0.83018-1.5859-0.87891z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m1.3242 13c0.18414 0.24071 0.43707 0.53374 0.83789 0.94141 0.88382 0.899 2.6552 0.67038 3.5391-0.22852 0.20747-0.21103 0.36064-0.45476 0.4707-0.71289h-4.8477z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m2.5215 11c-0.0105 0.088737-0.021484 0.17696-0.021484 0.27148 0 1.3947-2.2782 0.28739-1.1758 1.7285h4.8477c0.27363-0.64173 0.24047-1.3785-0.087891-2h-3.5625z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_canvas_item_shader_graph.png b/editor/icons/icon_canvas_item_shader_graph.png
deleted file mode 100644
index f40e3755af..0000000000
--- a/editor/icons/icon_canvas_item_shader_graph.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_canvas_item_shader_graph.svg b/editor/icons/icon_canvas_item_shader_graph.svg
new file mode 100644
index 0000000000..4079dd9f76
--- /dev/null
+++ b/editor/icons/icon_canvas_item_shader_graph.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<defs>
+<clipPath id="a">
+<path d="m8.0625 1025.9a3.375 3 0 0 0 -3.375 3 3.375 3 0 0 0 1.6875 2.5957v9.8115a3.375 3 0 0 0 -1.6875 2.5928 3.375 3 0 0 0 3.375 3 3.375 3 0 0 0 3.375 -3 3.375 3 0 0 0 -1.6875 -2.5957v-8.7832l11.931 10.605a3.375 3 0 0 0 -0.11865 0.7735 3.375 3 0 0 0 3.375 3 3.375 3 0 0 0 3.375 -3 3.375 3 0 0 0 -3.375 -3 3.375 3 0 0 0 -0.87341 0.1025l-11.928-10.602h9.8844a3.375 3 0 0 0 2.9169 1.5 3.375 3 0 0 0 3.375 -3 3.375 3 0 0 0 -3.375 -3 3.375 3 0 0 0 -2.9202 1.5h-11.038a3.375 3 0 0 0 -2.9169 -1.5z" fill="#fff"/>
+</clipPath>
+</defs>
+<g transform="translate(0 -1036.4)">
+<g transform="matrix(.59259 0 0 .66667 -1.7778 353.45)" clip-path="url(#a)">
+<rect x="3" y="1025.9" width="27" height="3" fill="#ff7070"/>
+<rect x="3" y="1028.9" width="27" height="3" fill="#ffeb70"/>
+<rect x="3" y="1031.9" width="27" height="3" fill="#9dff70"/>
+<rect x="3" y="1034.9" width="27" height="3" fill="#70ffb9"/>
+<rect x="3" y="1037.9" width="27" height="3" fill="#70deff"/>
+<rect x="3" y="1043.9" width="27" height="3" fill="#ff70ac"/>
+<rect x="3" y="1040.9" width="27" height="3" fill="#9f70ff"/>
+</g>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_canvas_layer.png b/editor/icons/icon_canvas_layer.png
deleted file mode 100644
index bb32d6d3ad..0000000000
--- a/editor/icons/icon_canvas_layer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_canvas_layer.svg b/editor/icons/icon_canvas_layer.svg
new file mode 100644
index 0000000000..9a2ab5de9f
--- /dev/null
+++ b/editor/icons/icon_canvas_layer.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2v6h1v-6a1 1 0 0 1 1 -1h6v-1h-6zm10.303 0c-0.4344 0-0.86973 0.16881-1.2012 0.50586l-6.8008 6.918 2.4004 2.4414 6.8008-6.918c0.66286-0.6742 0.66286-1.7672 0-2.4414-0.33144-0.33705-0.76482-0.50586-1.1992-0.50586zm0.69727 6v6a1 1 0 0 1 -1 1h-6v1h6a2 2 0 0 0 2 -2v-6h-1zm-9.8848 2.5781c-0.48501-0.048725-0.90521 0.12503-1.1953 0.45508-0.26373 0.3-0.41992 0.72958-0.41992 1.2383 0 1.6277-3.1385-0.17848-0.33789 2.6699 0.88382 0.899 2.6552 0.67038 3.5391-0.22852 0.88384-0.899 0.88382-2.357 0-3.2559-0.55011-0.55955-1.1009-0.83018-1.5859-0.87891z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_canvas_modulate.png b/editor/icons/icon_canvas_modulate.png
deleted file mode 100644
index b76e532268..0000000000
--- a/editor/icons/icon_canvas_modulate.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_canvas_modulate.svg b/editor/icons/icon_canvas_modulate.svg
new file mode 100644
index 0000000000..63c230c2b2
--- /dev/null
+++ b/editor/icons/icon_canvas_modulate.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v14h14v-14zm2 2h10v10h-10z" fill="#a5b7f3"/>
+<path d="m12 1048.4h-5l5-5z" fill="#70bfff" fill-rule="evenodd"/>
+<path d="m4 1040.4h5l-5 5z" fill="#ff7070" fill-rule="evenodd"/>
+<path d="m4 1048.4v-3l5-5h3v3l-5 5z" fill="#7aff70" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_capsule_mesh.png b/editor/icons/icon_capsule_mesh.png
deleted file mode 100644
index e656b4b047..0000000000
--- a/editor/icons/icon_capsule_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_capsule_mesh.svg b/editor/icons/icon_capsule_mesh.svg
new file mode 100644
index 0000000000..bc736200a4
--- /dev/null
+++ b/editor/icons/icon_capsule_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4c-2.7527 0-5 2.2419-5 4.9903v4.0175c0 2.7484 2.2473 4.9922 5 4.9922 2.7527 0 5-2.2438 5-4.9922v-4.0175c0-2.7484-2.2473-4.9903-5-4.9903zm-1.0059 2.1264v4.8576c-0.66556-0.1047-1.2973-0.372-1.9941-0.6618v-1.3222c0-1.3474 0.79838-2.4648 1.9941-2.8736zm2.0118 0c1.1957 0.4088 1.9941 1.5262 1.9941 2.8736v1.3451c-0.68406 0.3054-1.3142 0.5732-1.9941 0.6663zm-4.0059 6.334c0.67836 0.2231 1.3126 0.447 1.9941 0.5264v2.8848c-1.1957-0.4092-1.9941-1.5242-1.9941-2.8716zm6 0.03v0.5094c0 1.3474-0.79838 2.4619-1.9941 2.8711v-2.8711c0.68606-0.068 1.3207-0.2828 1.9941-0.5094z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ffd684" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_capsule_shape.png b/editor/icons/icon_capsule_shape.png
deleted file mode 100644
index bc00e491d3..0000000000
--- a/editor/icons/icon_capsule_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_capsule_shape.svg b/editor/icons/icon_capsule_shape.svg
new file mode 100644
index 0000000000..2940816d60
--- /dev/null
+++ b/editor/icons/icon_capsule_shape.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4c-2.7527 0-5 2.2419-5 4.9903v4.0175c0 2.7484 2.2473 4.9922 5 4.9922 2.7527 0 5-2.2438 5-4.9922v-4.0175c0-2.7484-2.2473-4.9903-5-4.9903z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#68b6ff" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<circle cx="6.5" cy="1040.9" r="1.5" fill="#a2d2ff" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_capsule_shape_2d.png b/editor/icons/icon_capsule_shape_2d.png
deleted file mode 100644
index 6f6554fbc7..0000000000
--- a/editor/icons/icon_capsule_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_capsule_shape_2d.svg b/editor/icons/icon_capsule_shape_2d.svg
new file mode 100644
index 0000000000..3549a289e0
--- /dev/null
+++ b/editor/icons/icon_capsule_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1c-2.77 0-5 2.23-5 5v4c0 2.77 2.23 5 5 5s5-2.23 5-5v-4c0-2.77-2.23-5-5-5zm0 2c1.662 0 3 1.338 3 3v4c0 1.662-1.338 3-3 3s-3-1.338-3-3v-4c0-1.662 1.338-3 3-3z" fill="#68b6ff" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_center_container.png b/editor/icons/icon_center_container.png
deleted file mode 100644
index 61904e7b00..0000000000
--- a/editor/icons/icon_center_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_center_container.svg b/editor/icons/icon_center_container.svg
new file mode 100644
index 0000000000..446e9e0f9c
--- /dev/null
+++ b/editor/icons/icon_center_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm3 1l2 2 2-2h-4zm-2 2v4l2-2-2-2zm8 0l-2 2 2 2v-4zm-4 4l-2 2h4l-2-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_character_body.png b/editor/icons/icon_character_body.png
deleted file mode 100644
index b859a271d5..0000000000
--- a/editor/icons/icon_character_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_character_camera.png b/editor/icons/icon_character_camera.png
deleted file mode 100644
index c238487942..0000000000
--- a/editor/icons/icon_character_camera.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_check_box.png b/editor/icons/icon_check_box.png
deleted file mode 100644
index f0e614d0e7..0000000000
--- a/editor/icons/icon_check_box.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_check_box.svg b/editor/icons/icon_check_box.svg
new file mode 100644
index 0000000000..1bbebe3fb5
--- /dev/null
+++ b/editor/icons/icon_check_box.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-1.1046 0-2 0.89543-2 2v9c0 1.1046 0.89543 2 2 2h9c1.1046 0 2-0.89543 2-2v-4.9277l-2 2v2.9277h-9v-9h6.5859l2-2zm9.3633 2.0508-4.9492 4.9492-1.4141-1.4141-1.4141 1.4141 2.8281 2.8281 6.3633-6.3633z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_check_button.png b/editor/icons/icon_check_button.png
deleted file mode 100644
index 968188f43d..0000000000
--- a/editor/icons/icon_check_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_check_button.svg b/editor/icons/icon_check_button.svg
new file mode 100644
index 0000000000..c6e0aa99c9
--- /dev/null
+++ b/editor/icons/icon_check_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4h6a4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4h-6zm0 2h2.541a4 4 0 0 0 -0.54102 2 4 4 0 0 0 0.54102 2h-2.541a2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_checked.png b/editor/icons/icon_checked.png
deleted file mode 100644
index d3442930bb..0000000000
--- a/editor/icons/icon_checked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_checkerboard.png b/editor/icons/icon_checkerboard.png
deleted file mode 100644
index 5f658c765e..0000000000
--- a/editor/icons/icon_checkerboard.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_checkerboard.svg b/editor/icons/icon_checkerboard.svg
new file mode 100644
index 0000000000..078c54a761
--- /dev/null
+++ b/editor/icons/icon_checkerboard.svg
@@ -0,0 +1,6 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)" fill="#fff" stroke-linecap="round" stroke-linejoin="round">
+<rect y="988.36" width="64" height="64" fill-opacity=".19608" stroke-width="2"/>
+<path transform="translate(0 988.36)" d="m0 0v16h16v-16h-16zm16 16v16h16v-16h-16zm16 0h16v-16h-16v16zm16 0v16h16v-16h-16zm0 16h-16v16h16v-16zm0 16v16h16v-16h-16zm-16 0h-16v16h16v-16zm-16 0v-16h-16v16h16z" fill-opacity=".39216" stroke-width="8"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_circle_shape_2d.png b/editor/icons/icon_circle_shape_2d.png
deleted file mode 100644
index 7865ed3dbe..0000000000
--- a/editor/icons/icon_circle_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_circle_shape_2d.svg b/editor/icons/icon_circle_shape_2d.svg
new file mode 100644
index 0000000000..bfe5aec81a
--- /dev/null
+++ b/editor/icons/icon_circle_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1038.4a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_class_list.png b/editor/icons/icon_class_list.png
deleted file mode 100644
index 5faff250d7..0000000000
--- a/editor/icons/icon_class_list.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_class_list.svg b/editor/icons/icon_class_list.svg
new file mode 100644
index 0000000000..1f2b37bd25
--- /dev/null
+++ b/editor/icons/icon_class_list.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="1" y="1038.4" width="5" height=".99998"/>
+<rect x="6" y="1037.4" width="6" height="3"/>
+<rect x="3" y="1038.4" width="1" height="11"/>
+<rect x="4" y="1043.4" width="5" height="1"/>
+<rect x="9" y="1042.4" width="6" height="3"/>
+<rect x="4" y="1048.4" width="5" height="1"/>
+<rect x="9" y="1047.4" width="6" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_clear.svg b/editor/icons/icon_clear.svg
new file mode 100644
index 0000000000..533054e37b
--- /dev/null
+++ b/editor/icons/icon_clear.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a1 1 0 0 0 -1 1v5h-2c-1.108 0-2 0.892-2 2v1h10v-1c0-1.108-0.892-2-2-2h-2v-5a1 1 0 0 0 -1 -1zm-5 10v4l10-1v-3h-10z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_click2edit.png b/editor/icons/icon_click2edit.png
deleted file mode 100644
index 795756dff0..0000000000
--- a/editor/icons/icon_click2edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_close.png b/editor/icons/icon_close.png
deleted file mode 100644
index 20d9b5c810..0000000000
--- a/editor/icons/icon_close.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_close.svg b/editor/icons/icon_close.svg
new file mode 100644
index 0000000000..f797070e16
--- /dev/null
+++ b/editor/icons/icon_close.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.7578 2.3438l-1.4141 1.4141 4.2422 4.2422-4.2422 4.2422 1.4141 1.4141 4.2422-4.2422 4.2422 4.2422 1.4141-1.4141-4.2422-4.2422 4.2422-4.2422-1.4141-1.4141-4.2422 4.2422-4.2422-4.2422z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_close_hover.png b/editor/icons/icon_close_hover.png
deleted file mode 100644
index cb519691e5..0000000000
--- a/editor/icons/icon_close_hover.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collapse.png b/editor/icons/icon_collapse.png
deleted file mode 100644
index ad2442183d..0000000000
--- a/editor/icons/icon_collapse.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collapse.svg b/editor/icons/icon_collapse.svg
new file mode 100644
index 0000000000..ace258a38a
--- /dev/null
+++ b/editor/icons/icon_collapse.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1040.4v3.9375l6 5.0625 6-5.0625v-3.9375h-12z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_collapse_hl.png b/editor/icons/icon_collapse_hl.png
deleted file mode 100644
index 0dfbc8b175..0000000000
--- a/editor/icons/icon_collapse_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collision.png b/editor/icons/icon_collision.png
deleted file mode 100644
index ccda8b6a25..0000000000
--- a/editor/icons/icon_collision.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collision_2d.png b/editor/icons/icon_collision_2d.png
deleted file mode 100644
index b372749cb0..0000000000
--- a/editor/icons/icon_collision_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collision_polygon.png b/editor/icons/icon_collision_polygon.png
deleted file mode 100644
index 738f80c3f3..0000000000
--- a/editor/icons/icon_collision_polygon.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collision_polygon.svg b/editor/icons/icon_collision_polygon.svg
new file mode 100644
index 0000000000..1c5e0be781
--- /dev/null
+++ b/editor/icons/icon_collision_polygon.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#fc9c9c" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_collision_polygon_2d.png b/editor/icons/icon_collision_polygon_2d.png
deleted file mode 100644
index b372749cb0..0000000000
--- a/editor/icons/icon_collision_polygon_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collision_polygon_2d.svg b/editor/icons/icon_collision_polygon_2d.svg
new file mode 100644
index 0000000000..9d90a66c6f
--- /dev/null
+++ b/editor/icons/icon_collision_polygon_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#a5b7f3" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_collision_shape.png b/editor/icons/icon_collision_shape.png
deleted file mode 100644
index 7bcd61c719..0000000000
--- a/editor/icons/icon_collision_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collision_shape.svg b/editor/icons/icon_collision_shape.svg
new file mode 100644
index 0000000000..7975b288f5
--- /dev/null
+++ b/editor/icons/icon_collision_shape.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 1.1802e-5)" stroke="#fc9c9c" stroke-opacity=".99608">
+<path d="m8 1050.4-6-3v-6l6-3 6 3v6z" fill="none" stroke="#fc9c9c" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_collision_shape_2d.png b/editor/icons/icon_collision_shape_2d.png
deleted file mode 100644
index afc1326959..0000000000
--- a/editor/icons/icon_collision_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_collision_shape_2d.svg b/editor/icons/icon_collision_shape_2d.svg
new file mode 100644
index 0000000000..b5fd8c7105
--- /dev/null
+++ b/editor/icons/icon_collision_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12z" fill="none" stroke="#a5b7f3" stroke-linejoin="round" stroke-opacity=".98824" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_color.png b/editor/icons/icon_color.png
deleted file mode 100644
index 589a6d3ffa..0000000000
--- a/editor/icons/icon_color.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_color.svg b/editor/icons/icon_color.svg
new file mode 100644
index 0000000000..7e2d9216f3
--- /dev/null
+++ b/editor/icons/icon_color.svg
@@ -0,0 +1,24 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<defs>
+<clipPath id="a">
+<path d="m8 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 3a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#fff"/>
+</clipPath>
+</defs>
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="8" fill="#fff"/>
+<g clip-path="url(#a)">
+<path d="m6.1883 1037.6a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#f00"/>
+<path transform="matrix(.86603 .5 -.5 .86603 0 0)" d="m527.3 893.68a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ff4d00"/>
+<path transform="matrix(.5 .86603 -.86603 .5 0 0)" d="m906.63 508.49a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#f90"/>
+<path transform="rotate(90)" d="m1042.6-14.761a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ffca00"/>
+<path transform="matrix(-.5 .86603 -.86603 -.5 0 0)" d="m898.63-535.87a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ff0"/>
+<path transform="matrix(-.86603 .5 -.5 -.86603 0 0)" d="m513.44-915.21a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#9fff00"/>
+<path transform="scale(-1)" d="m-9.8118-1051.1a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#0f0"/>
+<path transform="matrix(-.86603 -.5 .5 -.86603 0 0)" d="m-530.92-907.21a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#0fa"/>
+<path transform="matrix(-.5 -.86603 .86603 -.5 0 0)" d="m-910.26-522.01a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#00f"/>
+<path transform="rotate(-90)" d="m-1046.2 1.2385a7 7 0 0 1 3.6235 1e-7l-1.8118 6.7615z" fill="#9000ff"/>
+<path transform="matrix(.5 -.86603 .86603 .5 0 0)" d="m-902.26 522.35a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#f0e"/>
+<path transform="matrix(.86603 -.5 .5 .86603 0 0)" d="m-517.06 901.68a7 7 0 0 1 3.6235 0l-1.8117 6.7615z" fill="#ff009a"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_color_pick.png b/editor/icons/icon_color_pick.png
deleted file mode 100644
index 15679a9558..0000000000
--- a/editor/icons/icon_color_pick.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_color_pick.svg b/editor/icons/icon_color_pick.svg
new file mode 100644
index 0000000000..893afb4eb4
--- /dev/null
+++ b/editor/icons/icon_color_pick.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211l1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_color_picker.png b/editor/icons/icon_color_picker.png
deleted file mode 100644
index 6d1114054a..0000000000
--- a/editor/icons/icon_color_picker.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_color_picker.svg b/editor/icons/icon_color_picker.svg
new file mode 100644
index 0000000000..272dfeca48
--- /dev/null
+++ b/editor/icons/icon_color_picker.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211l1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_color_picker_button.png b/editor/icons/icon_color_picker_button.png
deleted file mode 100644
index a399128773..0000000000
--- a/editor/icons/icon_color_picker_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_color_picker_button.svg b/editor/icons/icon_color_picker_button.svg
new file mode 100644
index 0000000000..5d734a5b20
--- /dev/null
+++ b/editor/icons/icon_color_picker_button.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211 1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#a5efac"/>
+<path transform="translate(0 1036.4)" d="m1 3v6.3438l4.9492-4.9512-1.3926-1.3926h-3.5566zm14 6.4863l-1.5137 1.5137h-0.92969l-0.94922-0.94922-2.9492 2.9492h6.3418v-3.5137z" fill="#a5efac"/>
+<path transform="translate(0 1036.4)" d="m10.658 11l-2 2h6.3418v-2h-1.5137-0.92969-1.8984z" fill-opacity=".078431"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_color_ramp.png b/editor/icons/icon_color_ramp.png
deleted file mode 100644
index 03d19a56bb..0000000000
--- a/editor/icons/icon_color_ramp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_color_ramp.svg b/editor/icons/icon_color_ramp.svg
new file mode 100644
index 0000000000..d05355d8c7
--- /dev/null
+++ b/editor/icons/icon_color_ramp.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="4" x2="30" y1="14" y2="14" gradientTransform="matrix(.51852 0 0 .7 -.55556 1034.6)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#afff68" offset="0"/>
+<stop stop-color="#ff6b6b" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path d="m1 1051.4h14v-14z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_color_rect.png b/editor/icons/icon_color_rect.png
deleted file mode 100644
index 4199a89049..0000000000
--- a/editor/icons/icon_color_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_color_rect.svg b/editor/icons/icon_color_rect.svg
new file mode 100644
index 0000000000..c0cd07061e
--- /dev/null
+++ b/editor/icons/icon_color_rect.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1037.4" width="2" height="14" fill="#a5efac"/>
+<rect x="1" y="1049.4" width="14" height="2" fill="#a5efac"/>
+<rect x="1" y="1037.4" width="14" height="2" fill="#a5efac"/>
+<rect x="13" y="1037.4" width="2" height="14" fill="#a5efac"/>
+<path d="m12 1048.4h-4.8l4.8-4.8z" fill="#70bfff" fill-rule="evenodd"/>
+<path d="m4 1040.4h4.8l-4.8 4.8z" fill="#ff7070" fill-rule="evenodd"/>
+<path d="m4 1048.4v-3.2l4.8-4.8h3.2v3.2l-4.8 4.8z" fill="#7aff70" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_concave_polygon_shape.png b/editor/icons/icon_concave_polygon_shape.png
deleted file mode 100644
index dc1ff1d388..0000000000
--- a/editor/icons/icon_concave_polygon_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_concave_polygon_shape.svg b/editor/icons/icon_concave_polygon_shape.svg
new file mode 100644
index 0000000000..0df696f8b7
--- /dev/null
+++ b/editor/icons/icon_concave_polygon_shape.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#2998ff"/>
+<path d="m8 1037.4-7 3v8l7 3 7-3v-8l-7-3z" fill="#2998ff"/>
+<path d="m3 1041.4v6l5 2 5-2v-6l-5-2z" fill="#2998ff"/>
+<path d="m8 1049.4 5-2-5-2-5 2z" fill="#a2d2ff"/>
+<path d="m8 1045.4 5 2v-6l-5-2z" fill="#68b6ff"/>
+<path transform="translate(0 1036.4)" d="m8 1-7 3 2 1 5-2 5 2 2-1z" fill="#a2d2ff"/>
+<path transform="translate(0 1036.4)" d="m1 4v8l7 3v-2l-5-2v-6z" fill="#68b6ff"/>
+<path transform="translate(0 1036.4)" d="m15 4-2 1v6l-5 2v2l7-3z" fill="#2998ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_concave_polygon_shape_2d.png b/editor/icons/icon_concave_polygon_shape_2d.png
deleted file mode 100644
index 2e87eea5aa..0000000000
--- a/editor/icons/icon_concave_polygon_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_concave_polygon_shape_2d.svg b/editor/icons/icon_concave_polygon_shape_2d.svg
new file mode 100644
index 0000000000..3264e69ffc
--- /dev/null
+++ b/editor/icons/icon_concave_polygon_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12l6 6 6-6z" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_cone_twist_joint.png b/editor/icons/icon_cone_twist_joint.png
deleted file mode 100644
index bbf93f2f71..0000000000
--- a/editor/icons/icon_cone_twist_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_cone_twist_joint.svg b/editor/icons/icon_cone_twist_joint.svg
new file mode 100644
index 0000000000..c9d92d6537
--- /dev/null
+++ b/editor/icons/icon_cone_twist_joint.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#fc9c9c" stroke-linecap="round" stroke-width="2">
+<path transform="translate(0 1036.4)" d="m8 2l-6 9a6 3 0 0 0 3 2.5977 6 3 0 0 0 6 0 6 3 0 0 0 3 -2.5977l-6-9z" stroke-linejoin="round"/>
+<ellipse cx="8" cy="1047.4" rx="6" ry="3" stroke-linejoin="round"/>
+<path d="m8 1039.4v8"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_confirmation_dialog.png b/editor/icons/icon_confirmation_dialog.png
deleted file mode 100644
index ffadb9d907..0000000000
--- a/editor/icons/icon_confirmation_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_confirmation_dialog.svg b/editor/icons/icon_confirmation_dialog.svg
new file mode 100644
index 0000000000..491a3bf1f3
--- /dev/null
+++ b/editor/icons/icon_confirmation_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2h-10zm9 1h1v1h-1v-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8h-14zm6.9863 1.002c0.34689-0.0022844 0.6986 0.055762 1.0391 0.17969 1.3618 0.4956 2.1813 1.9126 1.9297 3.3398-0.19105 1.0835-0.96172 1.9461-1.9551 2.3008v0.17773h-1-1v-0.8418a1.0001 1.0001 0 0 1 1 -1.1582c0.49193 0 0.89895-0.34177 0.98438-0.82617 0.085424-0.4845-0.18031-0.94508-0.64258-1.1133-0.46227-0.1683-0.96106 0.013453-1.207 0.43945a1.0002 1.0002 0 0 1 -1.7324 -1c0.54346-0.94148 1.5433-1.4912 2.584-1.498zm-0.98633 6.998h2v1h-2v-1z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_connect.png b/editor/icons/icon_connect.png
deleted file mode 100644
index 0963063bed..0000000000
--- a/editor/icons/icon_connect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_connect.svg b/editor/icons/icon_connect.svg
new file mode 100644
index 0000000000..43ec84646c
--- /dev/null
+++ b/editor/icons/icon_connect.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="4" cy="1048.4" r="2" fill="#e0e0e0"/>
+<path d="m4 1043.4a5 5 0 0 1 5 5" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m4 1039.4a9 9 0 0 1 9 9" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_connection_and_groups.png b/editor/icons/icon_connection_and_groups.png
deleted file mode 100644
index 76e036e5bb..0000000000
--- a/editor/icons/icon_connection_and_groups.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_connection_and_groups.svg b/editor/icons/icon_connection_and_groups.svg
new file mode 100644
index 0000000000..67a73f02b3
--- /dev/null
+++ b/editor/icons/icon_connection_and_groups.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 0v1 5 1h12v-1-6h-11-1zm1 1h10v5h-10v-5zm2.5 1a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm5 0a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm-0.5 7a2 2 0 0 0 -2 2v1h-6v1h6v1a2 2 0 0 0 2 2h2v-1h2v-1h-2v-3h2v-1h-2v-1h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_console.png b/editor/icons/icon_console.png
deleted file mode 100644
index 7dc7407ef7..0000000000
--- a/editor/icons/icon_console.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_container.png b/editor/icons/icon_container.png
deleted file mode 100644
index ae0d76072b..0000000000
--- a/editor/icons/icon_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_container.svg b/editor/icons/icon_container.svg
new file mode 100644
index 0000000000..90b086a215
--- /dev/null
+++ b/editor/icons/icon_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2h2v-2zm2 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2c0-1.1046-0.89543-2-2-2zm-12 4v2h2v-2h-2zm12 0v2h2v-2h-2zm-12 4v2h2v-2h-2zm12 0v2h2v-2h-2zm-12 4c0 1.1046 0.89543 2 2 2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2c1.1046 0 2-0.89543 2-2h-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control.png b/editor/icons/icon_control.png
deleted file mode 100644
index 0d2a82ad0e..0000000000
--- a/editor/icons/icon_control.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control.svg b/editor/icons/icon_control.svg
new file mode 100644
index 0000000000..3db18ac0e5
--- /dev/null
+++ b/editor/icons/icon_control.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_bottom_center.png b/editor/icons/icon_control_align_bottom_center.png
deleted file mode 100644
index 166f122ace..0000000000
--- a/editor/icons/icon_control_align_bottom_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_bottom_center.svg b/editor/icons/icon_control_align_bottom_center.svg
new file mode 100644
index 0000000000..9d1219078e
--- /dev/null
+++ b/editor/icons/icon_control_align_bottom_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="6" y="1046.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_bottom_left.png b/editor/icons/icon_control_align_bottom_left.png
deleted file mode 100644
index 238f33a098..0000000000
--- a/editor/icons/icon_control_align_bottom_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_bottom_left.svg b/editor/icons/icon_control_align_bottom_left.svg
new file mode 100644
index 0000000000..fc8e7adb3e
--- /dev/null
+++ b/editor/icons/icon_control_align_bottom_left.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1046.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_bottom_right.png b/editor/icons/icon_control_align_bottom_right.png
deleted file mode 100644
index ff8b6a0177..0000000000
--- a/editor/icons/icon_control_align_bottom_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_bottom_right.svg b/editor/icons/icon_control_align_bottom_right.svg
new file mode 100644
index 0000000000..9a9bc0f2ec
--- /dev/null
+++ b/editor/icons/icon_control_align_bottom_right.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1046.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_bottom_wide.png b/editor/icons/icon_control_align_bottom_wide.png
deleted file mode 100644
index 309907767e..0000000000
--- a/editor/icons/icon_control_align_bottom_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_bottom_wide.svg b/editor/icons/icon_control_align_bottom_wide.svg
new file mode 100644
index 0000000000..111ea52be7
--- /dev/null
+++ b/editor/icons/icon_control_align_bottom_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1046.4" width="12" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_center.png b/editor/icons/icon_control_align_center.png
deleted file mode 100644
index 964f132ac3..0000000000
--- a/editor/icons/icon_control_align_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_center.svg b/editor/icons/icon_control_align_center.svg
new file mode 100644
index 0000000000..5dd012c389
--- /dev/null
+++ b/editor/icons/icon_control_align_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="6" y="1042.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_center_left.png b/editor/icons/icon_control_align_center_left.png
deleted file mode 100644
index 704b4f504f..0000000000
--- a/editor/icons/icon_control_align_center_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_center_left.svg b/editor/icons/icon_control_align_center_left.svg
new file mode 100644
index 0000000000..38542419cf
--- /dev/null
+++ b/editor/icons/icon_control_align_center_left.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1042.4" width="6" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_center_right.png b/editor/icons/icon_control_align_center_right.png
deleted file mode 100644
index bd7111aec3..0000000000
--- a/editor/icons/icon_control_align_center_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_center_right.svg b/editor/icons/icon_control_align_center_right.svg
new file mode 100644
index 0000000000..371436a6ad
--- /dev/null
+++ b/editor/icons/icon_control_align_center_right.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="8" y="1042.4" width="6" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_left_center.png b/editor/icons/icon_control_align_left_center.png
deleted file mode 100644
index 75c2d8573f..0000000000
--- a/editor/icons/icon_control_align_left_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_left_center.svg b/editor/icons/icon_control_align_left_center.svg
new file mode 100644
index 0000000000..dbf11be914
--- /dev/null
+++ b/editor/icons/icon_control_align_left_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1042.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_left_wide.png b/editor/icons/icon_control_align_left_wide.png
deleted file mode 100644
index 92a13144cb..0000000000
--- a/editor/icons/icon_control_align_left_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_left_wide.svg b/editor/icons/icon_control_align_left_wide.svg
new file mode 100644
index 0000000000..7020a8a406
--- /dev/null
+++ b/editor/icons/icon_control_align_left_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="4" height="12" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_right_center.png b/editor/icons/icon_control_align_right_center.png
deleted file mode 100644
index a859035439..0000000000
--- a/editor/icons/icon_control_align_right_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_right_center.svg b/editor/icons/icon_control_align_right_center.svg
new file mode 100644
index 0000000000..2ce0ebdf30
--- /dev/null
+++ b/editor/icons/icon_control_align_right_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1042.4" width="4" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_right_wide.png b/editor/icons/icon_control_align_right_wide.png
deleted file mode 100644
index b6fef9569e..0000000000
--- a/editor/icons/icon_control_align_right_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_right_wide.svg b/editor/icons/icon_control_align_right_wide.svg
new file mode 100644
index 0000000000..0c1713cfe8
--- /dev/null
+++ b/editor/icons/icon_control_align_right_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1038.4" width="4" height="12" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_top_center.png b/editor/icons/icon_control_align_top_center.png
deleted file mode 100644
index 5cdd6cd2fc..0000000000
--- a/editor/icons/icon_control_align_top_center.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_top_center.svg b/editor/icons/icon_control_align_top_center.svg
new file mode 100644
index 0000000000..4b13ab28b9
--- /dev/null
+++ b/editor/icons/icon_control_align_top_center.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="6" y="1038.4" width="4" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_top_left.png b/editor/icons/icon_control_align_top_left.png
deleted file mode 100644
index 558e3f08cb..0000000000
--- a/editor/icons/icon_control_align_top_left.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_top_left.svg b/editor/icons/icon_control_align_top_left.svg
new file mode 100644
index 0000000000..cd06aaad82
--- /dev/null
+++ b/editor/icons/icon_control_align_top_left.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="4" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_top_right.png b/editor/icons/icon_control_align_top_right.png
deleted file mode 100644
index 5ca294de48..0000000000
--- a/editor/icons/icon_control_align_top_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_top_right.svg b/editor/icons/icon_control_align_top_right.svg
new file mode 100644
index 0000000000..3bbbb89eca
--- /dev/null
+++ b/editor/icons/icon_control_align_top_right.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="10" y="1038.4" width="4" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_top_wide.png b/editor/icons/icon_control_align_top_wide.png
deleted file mode 100644
index ec089d0174..0000000000
--- a/editor/icons/icon_control_align_top_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_top_wide.svg b/editor/icons/icon_control_align_top_wide.svg
new file mode 100644
index 0000000000..d704d5cc81
--- /dev/null
+++ b/editor/icons/icon_control_align_top_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="12" height="3.9999" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_align_wide.png b/editor/icons/icon_control_align_wide.png
deleted file mode 100644
index 45552740bf..0000000000
--- a/editor/icons/icon_control_align_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_align_wide.svg b/editor/icons/icon_control_align_wide.svg
new file mode 100644
index 0000000000..683504128c
--- /dev/null
+++ b/editor/icons/icon_control_align_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_hcenter_wide.png b/editor/icons/icon_control_hcenter_wide.png
deleted file mode 100644
index f298b22f5f..0000000000
--- a/editor/icons/icon_control_hcenter_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_hcenter_wide.svg b/editor/icons/icon_control_hcenter_wide.svg
new file mode 100644
index 0000000000..c96ba7ca11
--- /dev/null
+++ b/editor/icons/icon_control_hcenter_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect x="2" y="1042.4" width="12" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_control_vcenter_wide.png b/editor/icons/icon_control_vcenter_wide.png
deleted file mode 100644
index b6c90646fb..0000000000
--- a/editor/icons/icon_control_vcenter_wide.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_control_vcenter_wide.svg b/editor/icons/icon_control_vcenter_wide.svg
new file mode 100644
index 0000000000..892bfcc50d
--- /dev/null
+++ b/editor/icons/icon_control_vcenter_wide.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#919191"/>
+<rect x="2" y="1038.4" width="12" height="12" fill="#474747"/>
+<rect transform="rotate(90)" x="1038.4" y="-10" width="12" height="4" fill="#d6d6d6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_convex_polygon_shape.png b/editor/icons/icon_convex_polygon_shape.png
deleted file mode 100644
index 4dfc9acc9e..0000000000
--- a/editor/icons/icon_convex_polygon_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_convex_polygon_shape.svg b/editor/icons/icon_convex_polygon_shape.svg
new file mode 100644
index 0000000000..143780da53
--- /dev/null
+++ b/editor/icons/icon_convex_polygon_shape.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3-7-11z" fill="#2998ff"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fill="#68b6ff"/>
+<path transform="translate(0 1036.4)" d="m8 1-7 3 7 11 7-3z" fill="#2998ff"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_convex_polygon_shape_2d.png b/editor/icons/icon_convex_polygon_shape_2d.png
deleted file mode 100644
index e449c6930f..0000000000
--- a/editor/icons/icon_convex_polygon_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_convex_polygon_shape_2d.svg b/editor/icons/icon_convex_polygon_shape_2d.svg
new file mode 100644
index 0000000000..5bd177d1c6
--- /dev/null
+++ b/editor/icons/icon_convex_polygon_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-6l6-6 6 6z" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_copy_node_path.png b/editor/icons/icon_copy_node_path.png
deleted file mode 100644
index 877bb81d81..0000000000
--- a/editor/icons/icon_copy_node_path.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_copy_node_path.svg b/editor/icons/icon_copy_node_path.svg
new file mode 100644
index 0000000000..c3d3e93a6b
--- /dev/null
+++ b/editor/icons/icon_copy_node_path.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<circle cx="3" cy="1048.4" rx="1" ry="1"/>
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v12c5.52e-5 0.5523 0.44774 0.9999 1 1h12c0.55226-1e-4 0.99994-0.4477 1-1v-8l-5-5h-8zm1 2h6v3c0 0.554 0.44599 1 1 1h3v6h-10v-10zm3 5l-2 4h2l2-4h-2zm4 0l-2 4h2l2-4h-2z" fill-opacity=".78431"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_create_new_scene_from.png b/editor/icons/icon_create_new_scene_from.png
deleted file mode 100644
index 45df9b1e25..0000000000
--- a/editor/icons/icon_create_new_scene_from.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_create_new_scene_from.svg b/editor/icons/icon_create_new_scene_from.svg
new file mode 100644
index 0000000000..b41fd38e70
--- /dev/null
+++ b/editor/icons/icon_create_new_scene_from.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 7v6c0 1.1046 0.89543 2 2 2h7v-1h-2v-4h2v-2h4v2h1v-3z" fill="#e0e0e0"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z" fill="#e0e0e0"/>
+<circle cx="-14" cy="1047.4" r="0" fill="#e0e0e0"/>
+<path d="m13 1049.4h2v-2h-2v-2h-2v2h-2v2h2v2h2z" fill="#84ffb1" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_cube_grid_map.png b/editor/icons/icon_cube_grid_map.png
deleted file mode 100644
index fe13222691..0000000000
--- a/editor/icons/icon_cube_grid_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_cube_map.png b/editor/icons/icon_cube_map.png
deleted file mode 100644
index 9c4c6fdc9f..0000000000
--- a/editor/icons/icon_cube_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_cube_map.svg b/editor/icons/icon_cube_map.svg
new file mode 100644
index 0000000000..8afc2e42e9
--- /dev/null
+++ b/editor/icons/icon_cube_map.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1042.4" width="4" height="4" fill="#84ffb1"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="#ff8484"/>
+<rect x="8" y="1042.4" width="4" height="4" fill="#84ffb1"/>
+<rect x="12" y="1042.4" width="4" height="4" fill="#ff8484"/>
+<rect x="4" y="1038.4" width="4" height="4" fill="#84c2ff"/>
+<rect x="4" y="1046.4" width="4" height="4" fill="#84c2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_cube_mesh.png b/editor/icons/icon_cube_mesh.png
deleted file mode 100644
index a52d7a1823..0000000000
--- a/editor/icons/icon_cube_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_cube_mesh.svg b/editor/icons/icon_cube_mesh.svg
new file mode 100644
index 0000000000..45275216ab
--- /dev/null
+++ b/editor/icons/icon_cube_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 14.999999 14.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1037.4)">
+<path d="m7.5 1038.2-6.5625 3.2804v6.772l6.5625 3.2804 6.5625-3.2804v-6.772zm0 1.9831 3.6926 1.8463-3.6926 1.8463-3.6926-1.8463zm-4.7889 3.2804 3.9022 1.9502v3.6944l-3.9022-1.952zm9.5779 0v3.6926l-3.9022 1.952v-3.6944z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ffd684" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve.png b/editor/icons/icon_curve.png
deleted file mode 100644
index a261e00f66..0000000000
--- a/editor/icons/icon_curve.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve.svg b/editor/icons/icon_curve.svg
new file mode 100644
index 0000000000..244b7d5678
--- /dev/null
+++ b/editor/icons/icon_curve.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#e0e0e0" stroke-width="2">
+<path d="m2 1038.4v12h12" stroke-linecap="square" stroke-opacity=".32549"/>
+<path d="m2 1050.4c8 0 12-4 12-12" stroke-linecap="round"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_2d.png b/editor/icons/icon_curve_2d.png
deleted file mode 100644
index ce46dcaad4..0000000000
--- a/editor/icons/icon_curve_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_2d.svg b/editor/icons/icon_curve_2d.svg
new file mode 100644
index 0000000000..3172387555
--- /dev/null
+++ b/editor/icons/icon_curve_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1037.4c-3.1667 0-5.1045 0.854-6.082 2.3203-0.97757 1.4664-0.91797 3.1797-0.91797 4.6797s-0.059601 2.7867-0.58203 3.5703c-0.52243 0.7837-1.5846 1.4297-4.418 1.4297a1.0001 1.0001 0 1 0 0 2c3.1667 0 5.1045-0.8539 6.082-2.3203 0.97757-1.4663 0.91797-3.1797 0.91797-4.6797s0.059601-2.7866 0.58203-3.5703c0.52243-0.7836 1.5846-1.4297 4.418-1.4297a1.0001 1.0001 0 1 0 0 -2z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_3d.png b/editor/icons/icon_curve_3d.png
deleted file mode 100644
index 561837e4de..0000000000
--- a/editor/icons/icon_curve_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_3d.svg b/editor/icons/icon_curve_3d.svg
new file mode 100644
index 0000000000..4f841516d7
--- /dev/null
+++ b/editor/icons/icon_curve_3d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8.0039 1037.4a1.0001 1.0001 0 0 0 -0.45117 0.1113l-6 3a1.0001 1.0001 0 0 0 0 1.7891l6 3a1.0001 1.0001 0 0 0 0.89453 0l4.5527-2.2754v3.7636l-5 2.5-5.5527-2.7773a1.0001 1.0001 0 0 0 -0.89453 1.7891l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.8946v-6a1.0001 1.0001 0 0 0 -1.4473 -0.8945l-5.5527 2.7773-3.7637-1.8828 4.2109-2.1054a1.0001 1.0001 0 0 0 -0.44336 -1.9004z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_close.png b/editor/icons/icon_curve_close.png
deleted file mode 100644
index 9a66015252..0000000000
--- a/editor/icons/icon_curve_close.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_close.svg b/editor/icons/icon_curve_close.svg
new file mode 100644
index 0000000000..415c046fd3
--- /dev/null
+++ b/editor/icons/icon_curve_close.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#e0e0e0"/>
+<circle cx="5" cy="1041.4" r="2" fill="#f5f5f5"/>
+<rect x="8" y="1044.4" width="2" height="2" fill="#84c2ff"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<rect x="6" y="1046.4" width="2" height="2" fill="#84c2ff"/>
+<rect x="10" y="1042.4" width="2" height="2" fill="#84c2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_constant.png b/editor/icons/icon_curve_constant.png
deleted file mode 100644
index 510a01c7ec..0000000000
--- a/editor/icons/icon_curve_constant.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_constant.svg b/editor/icons/icon_curve_constant.svg
new file mode 100644
index 0000000000..153d023dd6
--- /dev/null
+++ b/editor/icons/icon_curve_constant.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1046.4h8" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_create.png b/editor/icons/icon_curve_create.png
deleted file mode 100644
index b07820a5cd..0000000000
--- a/editor/icons/icon_curve_create.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_create.svg b/editor/icons/icon_curve_create.svg
new file mode 100644
index 0000000000..c26361bc9f
--- /dev/null
+++ b/editor/icons/icon_curve_create.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#e0e0e0"/>
+<circle cx="5" cy="1041.4" r="2" fill="#84ffb1"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<rect x="8" y="1047.4" width="8" height="2" fill="#84ffb1"/>
+<rect transform="rotate(90)" x="1044.4" y="-13" width="8" height="2" fill="#84ffb1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_curve.png b/editor/icons/icon_curve_curve.png
deleted file mode 100644
index 7d71af0a23..0000000000
--- a/editor/icons/icon_curve_curve.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_curve.svg b/editor/icons/icon_curve_curve.svg
new file mode 100644
index 0000000000..81c14ec063
--- /dev/null
+++ b/editor/icons/icon_curve_curve.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#e0e0e0"/>
+<circle cx="5" cy="1041.4" r="2" fill="#84c2ff"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<path d="m1 1045.4 8-8" fill="#84c2ff" fill-rule="evenodd" stroke="#84c2ff" stroke-width="1px"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_delete.png b/editor/icons/icon_curve_delete.png
deleted file mode 100644
index 108bfeac35..0000000000
--- a/editor/icons/icon_curve_delete.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_delete.svg b/editor/icons/icon_curve_delete.svg
new file mode 100644
index 0000000000..b24993839b
--- /dev/null
+++ b/editor/icons/icon_curve_delete.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#e0e0e0"/>
+<circle cx="5" cy="1041.4" r="2" fill="#ff8484"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<path d="m8.4645 1046.2 2.1213 2.1213-2.1213 2.1213 1.4142 1.4142l2.1213-2.1213 2.1213 2.1213 1.4142-1.4142-2.1213-2.1213 2.1213-2.1213-1.4142-1.4142-2.1213 2.1213-2.1213-2.1213-1.4142 1.4142z" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_edit.png b/editor/icons/icon_curve_edit.png
deleted file mode 100644
index 51eb583384..0000000000
--- a/editor/icons/icon_curve_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_edit.svg b/editor/icons/icon_curve_edit.svg
new file mode 100644
index 0000000000..d9f89bf15d
--- /dev/null
+++ b/editor/icons/icon_curve_edit.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1049.4c-2-9-1-10 8-8" fill="none" stroke="#e0e0e0"/>
+<circle cx="5" cy="1041.4" r="2" fill="#84c2ff"/>
+<circle cx="5" cy="1049.4" r="2" fill="#f5f5f5"/>
+<circle cx="13" cy="1041.4" r="2" fill="#f5f5f5"/>
+<path d="m16 1047.7-8-3.291 3.291 8 0.9471-2.8201 1.8836 1.8835 0.9418-0.9418-1.8836-1.8835z" fill="#84c2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_in.png b/editor/icons/icon_curve_in.png
deleted file mode 100644
index a809ee43d3..0000000000
--- a/editor/icons/icon_curve_in.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_in.svg b/editor/icons/icon_curve_in.svg
new file mode 100644
index 0000000000..69877bbd09
--- /dev/null
+++ b/editor/icons/icon_curve_in.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c5 0 8-3 8-8" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_in_out.png b/editor/icons/icon_curve_in_out.png
deleted file mode 100644
index 88e07d48a7..0000000000
--- a/editor/icons/icon_curve_in_out.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_in_out.svg b/editor/icons/icon_curve_in_out.svg
new file mode 100644
index 0000000000..6e8bedd27d
--- /dev/null
+++ b/editor/icons/icon_curve_in_out.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c5 0 3-8 8-8" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_linear.png b/editor/icons/icon_curve_linear.png
deleted file mode 100644
index 80306b6e04..0000000000
--- a/editor/icons/icon_curve_linear.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_linear.svg b/editor/icons/icon_curve_linear.svg
new file mode 100644
index 0000000000..92c4de7979
--- /dev/null
+++ b/editor/icons/icon_curve_linear.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4 8-8" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_out.png b/editor/icons/icon_curve_out.png
deleted file mode 100644
index aa05bc8f86..0000000000
--- a/editor/icons/icon_curve_out.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_out.svg b/editor/icons/icon_curve_out.svg
new file mode 100644
index 0000000000..d74c0c6689
--- /dev/null
+++ b/editor/icons/icon_curve_out.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c0-5 3-8 8-8" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_out_in.png b/editor/icons/icon_curve_out_in.png
deleted file mode 100644
index 7be46fc779..0000000000
--- a/editor/icons/icon_curve_out_in.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_out_in.svg b/editor/icons/icon_curve_out_in.svg
new file mode 100644
index 0000000000..e98c50d931
--- /dev/null
+++ b/editor/icons/icon_curve_out_in.svg
@@ -0,0 +1,5 @@
+<svg width="12" height="12" version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m2 1050.4c0-5 8-3 8-8" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_curve_texture.png b/editor/icons/icon_curve_texture.png
deleted file mode 100644
index bc5c7f6bf1..0000000000
--- a/editor/icons/icon_curve_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_curve_texture.svg b/editor/icons/icon_curve_texture.svg
new file mode 100644
index 0000000000..15926087eb
--- /dev/null
+++ b/editor/icons/icon_curve_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55228 0-1 0.44772-1 1v9.1602c0.32185-0.10966 0.66-0.16382 1-0.16016 0.33117 0 0.66575-0.007902 1-0.013672v-7.9863h10v1.1348c0.29007-0.10393 0.59442-0.16256 0.90234-0.17383 0.37315-0.012796 0.74541 0.044169 1.0977 0.16797v-2.1289c0-0.55228-0.44772-1-1-1h-12zm7 4v1h-1v1h-2v1h-1v1h-1v1h2 2 0.39062c1.1119-0.56677 1.9678-1.4538 2.6094-3.4727v-0.52734h-1v-1h-1zm4.9668 0.98828a1.0001 1.0001 0 0 0 -0.92774 0.73828c-0.92743 3.246-2.6356 4.6825-4.6523 5.4668-2.0168 0.7843-4.3867 0.80664-6.3867 0.80664a1.0001 1.0001 0 1 0 0 2c2 0 4.6301 0.023994 7.1133-0.94141 2.4832-0.9657 4.7751-3.0292 5.8477-6.7832a1.0001 1.0001 0 0 0 -0.99414 -1.2871z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_cylinder_mesh.png b/editor/icons/icon_cylinder_mesh.png
deleted file mode 100644
index da147ce7b4..0000000000
--- a/editor/icons/icon_cylinder_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_cylinder_mesh.svg b/editor/icons/icon_cylinder_mesh.svg
new file mode 100644
index 0000000000..92a93ec220
--- /dev/null
+++ b/editor/icons/icon_cylinder_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 14.999999 14.999999" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1037.4)">
+<path transform="matrix(.9375 0 0 .9375 0 1037.4)" d="m8 1c-1.7469 0-3.328 0.22648-4.5586 0.63672-0.61528 0.20512-1.1471 0.45187-1.5898 0.80078s-0.85156 0.88101-0.85156 1.5625v8c0 0.68149 0.40884 1.2155 0.85156 1.5645s0.97457 0.59577 1.5898 0.80078c1.2306 0.41024 2.8117 0.63477 4.5586 0.63477s3.328-0.22453 4.5586-0.63477c0.61527-0.20501 1.1471-0.45187 1.5898-0.80078 0.44272-0.34891 0.85156-0.88296 0.85156-1.5645v-8c0-0.68149-0.40884-1.2136-0.85156-1.5625-0.44272-0.34891-0.97457-0.59566-1.5898-0.80078-1.2306-0.41024-2.8117-0.63672-4.5586-0.63672zm0 2c1.5668 0 2.9867 0.22145 3.9277 0.53516 0.46368 0.15456 0.80138 0.33741 0.96875 0.4668-0.16752 0.12928-0.50546 0.3105-0.96875 0.46484-0.94102 0.31371-2.361 0.5332-3.9277 0.5332s-2.9867-0.2195-3.9277-0.5332c-0.46329-0.15435-0.80123-0.33556-0.96875-0.46484 0.16737-0.12939 0.50507-0.31224 0.96875-0.4668 0.94102-0.31371 2.361-0.53516 3.9277-0.53516zm-5 3.1875c0.1468 0.059071 0.2835 0.12512 0.44141 0.17773 1.2306 0.41024 2.8117 0.63477 4.5586 0.63477s3.328-0.22453 4.5586-0.63477c0.15791-0.052617 0.29461-0.11866 0.44141-0.17773v5.8125c-0.16752 0.12928-0.60898 0.31245-1.0723 0.4668-0.94102 0.31371-2.361 0.5332-3.9277 0.5332s-2.9867-0.2195-3.9277-0.5332c-0.46329-0.15435-0.90474-0.33752-1.0723-0.4668z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ffd684" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_cylinder_shape.png b/editor/icons/icon_cylinder_shape.png
deleted file mode 100644
index fd7d7e26e2..0000000000
--- a/editor/icons/icon_cylinder_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_d_o_f_blur_f_x.png b/editor/icons/icon_d_o_f_blur_f_x.png
deleted file mode 100644
index fda7d48353..0000000000
--- a/editor/icons/icon_d_o_f_blur_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_damped_spring_joint_2d.png b/editor/icons/icon_damped_spring_joint_2d.png
deleted file mode 100644
index b6a9c2b3a1..0000000000
--- a/editor/icons/icon_damped_spring_joint_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_damped_spring_joint_2d.svg b/editor/icons/icon_damped_spring_joint_2d.svg
new file mode 100644
index 0000000000..fa1fb9f348
--- /dev/null
+++ b/editor/icons/icon_damped_spring_joint_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".98824">
+<path transform="translate(0 1036.4)" d="m4 3v2l8 3v-2zm0 5v2l8 3v-2z" fill="#708cea"/>
+<path transform="translate(0 1036.4)" d="m4 3v2l8-2v-2zm0 5v2l8-2v-2zm0 5v2l8-2v-2z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_debug.png b/editor/icons/icon_debug.png
deleted file mode 100644
index b67e306697..0000000000
--- a/editor/icons/icon_debug.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_debug.svg b/editor/icons/icon_debug.svg
new file mode 100644
index 0000000000..bf6e37f4b4
--- /dev/null
+++ b/editor/icons/icon_debug.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="scale(1,-1)" d="m10.828-1039.5a4 4 0 0 1 -2.8284 1.1716 4 4 0 0 1 -2.8284 -1.1716" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<ellipse cx="8" cy="1047.4" rx="3.6445" ry="1.6348" fill="none" stroke-width="0"/>
+<circle cx="8" cy="1047.4" r="4" fill="#e0e0e0" stroke-width="0"/>
+<path d="m5 1047.4h-3" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+<path d="m10 1047.4h4" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+<path d="m6 1045.4c-2 0-3-2-3-3" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+<path d="m10 1045.4c2 0 3-2 3-3" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+<path d="m6 1049.4c-1 0-2 1-3 2" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+<path d="m10 1049.4c1 0 2 1 3 2" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+<circle cx="8" cy="1043.4" r="2" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_debug_continue.png b/editor/icons/icon_debug_continue.png
deleted file mode 100644
index 78a61aa98f..0000000000
--- a/editor/icons/icon_debug_continue.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_debug_continue.svg b/editor/icons/icon_debug_continue.svg
new file mode 100644
index 0000000000..49289d1b28
--- /dev/null
+++ b/editor/icons/icon_debug_continue.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="5" y="1043.4" width="6" height="2" fill="#ff8484"/>
+<g transform="matrix(-.71429 0 0 .88889 2.4999 121.82)" fill="#ff8484">
+<path transform="matrix(0 1.4412 1.2943 0 1331.1 1030.7)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z" fill="#ff8484"/>
+</g>
+<circle cx="4" cy="1044.4" r="3" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_debug_next.png b/editor/icons/icon_debug_next.png
deleted file mode 100644
index c61f221562..0000000000
--- a/editor/icons/icon_debug_next.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_debug_next.svg b/editor/icons/icon_debug_next.svg
new file mode 100644
index 0000000000..6251e174e7
--- /dev/null
+++ b/editor/icons/icon_debug_next.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect transform="rotate(90)" x="1037.4" y="-5" width="10" height="2" fill="#ff8484"/>
+<g transform="matrix(0 -.57144 -.66666 0 695.91 1041.4)" fill="#ff8484">
+<path transform="matrix(0 1.4412 1.2943 0 1331.1 1030.7)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z" fill="#ff8484"/>
+</g>
+<rect x="7" y="1037.4" width="8" height="2" fill="#e0e0e0"/>
+<rect x="9" y="1041.4" width="6" height="2" fill="#e0e0e0"/>
+<rect x="9" y="1045.4" width="6" height="2" fill="#e0e0e0"/>
+<rect x="7" y="1049.4" width="8" height="2" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_debug_step.png b/editor/icons/icon_debug_step.png
deleted file mode 100644
index a1839d56d8..0000000000
--- a/editor/icons/icon_debug_step.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_debug_step.svg b/editor/icons/icon_debug_step.svg
new file mode 100644
index 0000000000..3a98803fc3
--- /dev/null
+++ b/editor/icons/icon_debug_step.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect transform="rotate(90)" x="1037.4" y="-3" width="10" height="2" fill="#ff8484"/>
+<g transform="matrix(-.57144 0 0 .66666 -2.0001 354.46)" fill="#ff8484">
+<path transform="matrix(0 1.4412 1.2943 0 1331.1 1030.7)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z" fill="#ff8484"/>
+</g>
+<rect x="7" y="1037.4" width="8" height="2" fill="#e0e0e0"/>
+<rect x="9" y="1041.4" width="6" height="2" fill="#e0e0e0"/>
+<rect x="9" y="1045.4" width="6" height="2" fill="#e0e0e0"/>
+<rect x="7" y="1049.4" width="8" height="2" fill="#e0e0e0"/>
+<rect transform="rotate(90)" x="1045.4" y="-4" width="2" height="3" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_default_project_icon.png b/editor/icons/icon_default_project_icon.png
deleted file mode 100644
index 4c31fe5cb2..0000000000
--- a/editor/icons/icon_default_project_icon.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_default_project_icon.svg b/editor/icons/icon_default_project_icon.svg
new file mode 100644
index 0000000000..d16d137550
--- /dev/null
+++ b/editor/icons/icon_default_project_icon.svg
@@ -0,0 +1,33 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path transform="translate(0 988.36)" d="m8 0c-4.432 0-8 3.568-8 8v48c0 4.432 3.568 8 8 8h48c4.432 0 8-3.568 8-8v-48c0-4.432-3.568-8-8-8z" fill="#355570" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path transform="translate(0 988.36)" d="m8 0c-4.432 0-8 3.568-8 8v48c0 4.432 3.568 8 8 8h48c4.432 0 8-3.568 8-8v-48c0-4.432-3.568-8-8-8zm0 2h48c3.324 0 6 2.676 6 6v48c0 3.324-2.676 6-6 6h-48c-3.324 0-6-2.676-6-6v-48c0-3.324 2.676-6 6-6z" fill-opacity=".19608" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path transform="translate(0 988.36)" d="m27.254 10c-2.1314 0.47383-4.2401 1.134-6.2168 2.1289 0.04521 1.7455 0.15796 3.4164 0.38672 5.1152-0.76768 0.4919-1.574 0.91443-2.291 1.4902-0.72854 0.5604-1.4731 1.0965-2.1328 1.752-1.3179-0.8716-2.7115-1.691-4.1484-2.4141-1.549 1.667-2.9985 3.4672-4.1816 5.4805 0.89011 1.4399 1.8209 2.7894 2.8242 4.0703h0.027343v9.9453 1.2617 1.1504l-0.009765 1.6309h-0.001953c0.0031 0.7321 0.011718 1.5356 0.011718 1.6953 0 7.1942 9.1264 10.652 20.465 10.691h0.013672 0.013672c11.338-0.04 20.461-3.4972 20.461-10.691 0-0.1626 0.010282-0.96271 0.013672-1.6953h-0.001953l-0.011719-1.6309v-0.98633l0.003907-0.001953v-11.369h0.027343c1.0035-1.2809 1.9337-2.6304 2.8242-4.0703-1.1827-2.0133-2.6327-3.8135-4.1816-5.4805-1.4366 0.7231-2.8325 1.5425-4.1504 2.4141-0.65947-0.6555-1.4013-1.1916-2.1309-1.752-0.71682-0.5758-1.5248-0.99833-2.291-1.4902 0.22813-1.6988 0.3413-3.3697 0.38672-5.1152-1.977-0.99494-4.0863-1.6551-6.2188-2.1289-0.85139 1.4309-1.6285 2.9812-2.3066 4.4961-0.80409-0.1344-1.613-0.18571-2.4219-0.19531h-0.015625-0.015625c-0.81037 0.01-1.6176 0.060513-2.4219 0.19531-0.67768-1.5149-1.4559-3.0652-2.3086-4.4961z" fill="#fff" stroke="#fff" stroke-linejoin="round" stroke-width="3"/>
+<g transform="matrix(.050279 0 0 .050279 6.2574 989.54)" stroke-width=".32031">
+<g transform="matrix(4.1626 0 0 -4.1626 919.24 771.67)">
+<path d="m0 0s-0.325 1.994-0.515 1.976l-36.182-3.491c-2.879-0.278-5.115-2.574-5.317-5.459l-0.994-14.247-27.992-1.997-1.904 12.912c-0.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-0.994 14.247c-0.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-0.187 0.018-0.324-1.978-0.511-1.978l-0.049-7.83 30.658-4.944 1.004-14.374c0.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c0.146-0.01 0.29-0.016 0.434-0.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c0.423-2.871 2.93-5.037 5.831-5.037 0.142 0 0.284 5e-3 0.423 0.015l38.556 2.75c2.911 0.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 104.7 525.91)">
+<path d="m0 0v-59.041c0.108-1e-3 0.216-5e-3 0.323-0.015l36.196-3.49c1.896-0.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c0.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c0.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c0.107 0.01 0.214 0.014 0.322 0.015v4.711l0.015 5e-3v54.325h0.134c4.795 6.12 9.232 12.569 13.487 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842 0.642-7.702 0.88-11.567 0.926v6e-3c-0.027 0-0.052-6e-3 -0.075-6e-3 -0.024 0-0.049 6e-3 -0.073 6e-3v-6e-3c-3.872-0.046-7.729-0.284-11.572-0.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17 0.216-8.34 0.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.253-6.88 8.693-13.329 13.487-19.449z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 784.07 817.24)">
+<path d="m0 0-1.121-16.063c-0.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-0.094-7e-3 -0.188-0.01-0.281-0.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-0.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936 0.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c0.015-3.498 0.06-7.33 0.06-8.093 0-34.374 43.605-50.896 97.781-51.086h0.133c54.176 0.19 97.766 16.712 97.766 51.086 0 0.777 0.047 4.593 0.063 8.093z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 389.21 625.67)">
+<path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 367.37 631.06)">
+<path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 511.99 724.74)">
+<path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 634.79 625.67)">
+<path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 656.64 631.06)">
+<path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042"/>
+</g>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_del.png b/editor/icons/icon_del.png
deleted file mode 100644
index 10e56d5bb8..0000000000
--- a/editor/icons/icon_del.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dependency_changed.png b/editor/icons/icon_dependency_changed.png
deleted file mode 100644
index 1b396457d3..0000000000
--- a/editor/icons/icon_dependency_changed.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dependency_changed.svg b/editor/icons/icon_dependency_changed.svg
new file mode 100644
index 0000000000..6d7787e769
--- /dev/null
+++ b/editor/icons/icon_dependency_changed.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1 2h2v7h-2v-7zm0 8h2v2h-2v-2z" fill="#ff8484"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1 2h2v7h-2v-7zm0 8h2v2h-2v-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dependency_changed_hl.png b/editor/icons/icon_dependency_changed_hl.png
deleted file mode 100644
index 51dfe6b39d..0000000000
--- a/editor/icons/icon_dependency_changed_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dependency_changed_hl.svg b/editor/icons/icon_dependency_changed_hl.svg
new file mode 100644
index 0000000000..fa0f3919ea
--- /dev/null
+++ b/editor/icons/icon_dependency_changed_hl.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1 2h2v7h-2v-7zm0 8h2v2h-2v-2z" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dependency_local_changed.png b/editor/icons/icon_dependency_local_changed.png
deleted file mode 100644
index d8737fd2f4..0000000000
--- a/editor/icons/icon_dependency_local_changed.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dependency_local_changed.svg b/editor/icons/icon_dependency_local_changed.svg
new file mode 100644
index 0000000000..5fef88844a
--- /dev/null
+++ b/editor/icons/icon_dependency_local_changed.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -3 3.8672v0.13281h-2v-2h1a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -2 2h-2a4 4 0 0 1 4 -4zm-1 9h2v2h-2v-2z" fill="#ffd684"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -3 3.8672v0.13281h-2v-2h1a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -2 2h-2a4 4 0 0 1 4 -4zm-1 9h2v2h-2v-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dependency_local_changed_hl.png b/editor/icons/icon_dependency_local_changed_hl.png
deleted file mode 100644
index a87c48ca3e..0000000000
--- a/editor/icons/icon_dependency_local_changed_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dependency_local_changed_hl.svg b/editor/icons/icon_dependency_local_changed_hl.svg
new file mode 100644
index 0000000000..b9ab80fecb
--- /dev/null
+++ b/editor/icons/icon_dependency_local_changed_hl.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -3 3.8672v0.13281h-2v-2h1a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -2 2h-2a4 4 0 0 1 4 -4zm-1 9h2v2h-2v-2z" fill="#ffd684"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dependency_ok.png b/editor/icons/icon_dependency_ok.png
deleted file mode 100644
index 2b9ac389ba..0000000000
--- a/editor/icons/icon_dependency_ok.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dependency_ok.svg b/editor/icons/icon_dependency_ok.svg
new file mode 100644
index 0000000000..91cc398029
--- /dev/null
+++ b/editor/icons/icon_dependency_ok.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm3.1816 3.9297l1.4141 1.4141-4.2422 4.2422-0.70703 0.70703-0.70703 0.70703-3.5352-3.5352 1.4141-1.4141 2.1211 2.1211 4.2422-4.2422z" fill="#84ffb1"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm3.1816 3.9297l1.4141 1.4141-4.2422 4.2422-0.70703 0.70703-0.70703 0.70703-3.5352-3.5352 1.4141-1.4141 2.1211 2.1211 4.2422-4.2422z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dependency_ok_hl.png b/editor/icons/icon_dependency_ok_hl.png
deleted file mode 100644
index 62e48531e4..0000000000
--- a/editor/icons/icon_dependency_ok_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dependency_ok_hl.svg b/editor/icons/icon_dependency_ok_hl.svg
new file mode 100644
index 0000000000..7c3f058dc4
--- /dev/null
+++ b/editor/icons/icon_dependency_ok_hl.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm3.1816 3.9297l1.4141 1.4141-4.2422 4.2422-0.70703 0.70703-0.70703 0.70703-3.5352-3.5352 1.4141-1.4141 2.1211 2.1211 4.2422-4.2422z" fill="#84ffb1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_directional_light.png b/editor/icons/icon_directional_light.png
deleted file mode 100644
index 31f47c974d..0000000000
--- a/editor/icons/icon_directional_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_directional_light.svg b/editor/icons/icon_directional_light.svg
new file mode 100644
index 0000000000..31802ef0c1
--- /dev/null
+++ b/editor/icons/icon_directional_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v3h2v-3h-2zm-2.5352 2.0508l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm7.0703 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-3.5352 1.9492c-1.6569 0-3 1.3432-3 3s1.3431 3 3 3 3-1.3432 3-3-1.3431-3-3-3zm-7 2v2h3v-2h-3zm11 0v2h3v-2h-3zm-7.5352 3.1211l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm7.0703 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.5352 1.8789v3h2v-3h-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_distraction_free.png b/editor/icons/icon_distraction_free.png
deleted file mode 100644
index c6f8a08874..0000000000
--- a/editor/icons/icon_distraction_free.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_distraction_free.svg b/editor/icons/icon_distraction_free.svg
new file mode 100644
index 0000000000..eaf8061f0a
--- /dev/null
+++ b/editor/icons/icon_distraction_free.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m3.7578 2.3438l-1.4141 1.4141 2.9492 2.9492 1.4141-1.4141-2.9492-2.9492zm8.4844 0l-2.9492 2.9492 1.4141 1.4141 2.9492-2.9492-1.4141-1.4141zm-6.9492 6.9492l-2.9492 2.9492 1.4141 1.4141 2.9492-2.9492-1.4141-1.4141zm5.4141 0l-1.4141 1.4141 2.9492 2.9492 1.4141-1.4141-2.9492-2.9492z"/>
+<path d="m1 1051.4v-5l5 5z" fill-rule="evenodd"/>
+<path d="m15 1051.4v-5l-5 5z" fill-rule="evenodd"/>
+<path d="m15 1037.4v5l-5-5z" fill-rule="evenodd"/>
+<path d="m1 1037.4v5l5-5z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_doc_code_font.png b/editor/icons/icon_doc_code_font.png
deleted file mode 100644
index 628654f6e8..0000000000
--- a/editor/icons/icon_doc_code_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_doc_font.png b/editor/icons/icon_doc_font.png
deleted file mode 100644
index 65fbcc5ccc..0000000000
--- a/editor/icons/icon_doc_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_doc_title_font.png b/editor/icons/icon_doc_title_font.png
deleted file mode 100644
index d78b394da0..0000000000
--- a/editor/icons/icon_doc_title_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_down.png b/editor/icons/icon_down.png
deleted file mode 100644
index d2fcdb4c9f..0000000000
--- a/editor/icons/icon_down.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dropdown.png b/editor/icons/icon_dropdown.png
deleted file mode 100644
index b9a324be7c..0000000000
--- a/editor/icons/icon_dropdown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dummy.png b/editor/icons/icon_dummy.png
deleted file mode 100644
index 24998a28af..0000000000
--- a/editor/icons/icon_dummy.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_duplicate.png b/editor/icons/icon_duplicate.png
deleted file mode 100644
index 320b36504e..0000000000
--- a/editor/icons/icon_duplicate.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_duplicate.svg b/editor/icons/icon_duplicate.svg
new file mode 100644
index 0000000000..4b27dcf62d
--- /dev/null
+++ b/editor/icons/icon_duplicate.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1v11h9v-6h-5v-5h-4zm5 0v4h4l-4-4zm-8 3v11h2 8v-2h-8v-9h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dynamic_character_body.png b/editor/icons/icon_dynamic_character_body.png
deleted file mode 100644
index b685841e35..0000000000
--- a/editor/icons/icon_dynamic_character_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dynamic_custom_body.png b/editor/icons/icon_dynamic_custom_body.png
deleted file mode 100644
index d383e7087f..0000000000
--- a/editor/icons/icon_dynamic_custom_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dynamic_font.png b/editor/icons/icon_dynamic_font.png
deleted file mode 100644
index e373553e4e..0000000000
--- a/editor/icons/icon_dynamic_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dynamic_font.svg b/editor/icons/icon_dynamic_font.svg
new file mode 100644
index 0000000000..867939e475
--- /dev/null
+++ b/editor/icons/icon_dynamic_font.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1037.4v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m4 5v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4z" fill="#84c2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dynamic_font_data.png b/editor/icons/icon_dynamic_font_data.png
deleted file mode 100644
index 5cff86c40c..0000000000
--- a/editor/icons/icon_dynamic_font_data.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_dynamic_font_data.svg b/editor/icons/icon_dynamic_font_data.svg
new file mode 100644
index 0000000000..644c987d8a
--- /dev/null
+++ b/editor/icons/icon_dynamic_font_data.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4zm0 5v2h2v-2h-2zm0 3v2h2v-2h-2zm0 3v2h2v-2h-2zm3 0v2h2v-2h-2z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m4 5v2 1h1a1 1 0 0 1 1 -1h2v6a1 1 0 0 1 -1 1v1h1 2 1v-1a1 1 0 0 1 -1 -1v-6h2a1 1 0 0 1 1 1h1v-1-2h-4-2-4z" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_dynamic_rigid_body.png b/editor/icons/icon_dynamic_rigid_body.png
deleted file mode 100644
index f804b29528..0000000000
--- a/editor/icons/icon_dynamic_rigid_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_edit.png b/editor/icons/icon_edit.png
deleted file mode 100644
index c114d2f84d..0000000000
--- a/editor/icons/icon_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_edit.svg b/editor/icons/icon_edit.svg
new file mode 100644
index 0000000000..b1bce158c4
--- /dev/null
+++ b/editor/icons/icon_edit.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_edit_key.png b/editor/icons/icon_edit_key.png
deleted file mode 100644
index 3ebbe75f78..0000000000
--- a/editor/icons/icon_edit_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_edit_key.svg b/editor/icons/icon_edit_key.svg
new file mode 100644
index 0000000000..2959900d04
--- /dev/null
+++ b/editor/icons/icon_edit_key.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z"/>
+<ellipse cx="3.5" cy="1039.9" rx="2.5" ry="2.5"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_edit_pivot.png b/editor/icons/icon_edit_pivot.png
deleted file mode 100644
index 230122b969..0000000000
--- a/editor/icons/icon_edit_pivot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_edit_pivot.svg b/editor/icons/icon_edit_pivot.svg
new file mode 100644
index 0000000000..32c51a491f
--- /dev/null
+++ b/editor/icons/icon_edit_pivot.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v4h2v-4h-2zm-6 6v2h4v-2h-4zm10 0v0.61328l3.3711 1.3867h0.62891v-2h-4zm-3 1l3.291 8 0.94726-2.8203 1.8828 1.8828 0.94336-0.94141-1.8848-1.8828 2.8203-0.94726-8-3.291zm-1 3v4h2v-0.625l-1.3887-3.375h-0.61133z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_edit_resource.png b/editor/icons/icon_edit_resource.png
deleted file mode 100644
index fca57f3e7e..0000000000
--- a/editor/icons/icon_edit_resource.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_edit_resource.svg b/editor/icons/icon_edit_resource.svg
new file mode 100644
index 0000000000..a744685de8
--- /dev/null
+++ b/editor/icons/icon_edit_resource.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path transform="translate(0 1044.4)" d="m3.9902-0.0097656a1.0001 1.0001 0 0 0 -0.69727 1.7168l1.293 1.293h-3.5859v2h3.5859l-1.293 1.293a1.0001 1.0001 0 1 0 1.4141 1.4141l3-3a1.0001 1.0001 0 0 0 0 -1.4141l-3-3a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".78431" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_edit_small.png b/editor/icons/icon_edit_small.png
deleted file mode 100644
index 19c83415f9..0000000000
--- a/editor/icons/icon_edit_small.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_2d.png b/editor/icons/icon_editor_2d.png
deleted file mode 100644
index 1594f5adf0..0000000000
--- a/editor/icons/icon_editor_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_3d_handle.png b/editor/icons/icon_editor_3d_handle.png
deleted file mode 100644
index 6935cc9bc4..0000000000
--- a/editor/icons/icon_editor_3d_handle.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_3d_handle.svg b/editor/icons/icon_editor_3d_handle.svg
new file mode 100644
index 0000000000..189baf3dad
--- /dev/null
+++ b/editor/icons/icon_editor_3d_handle.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="7" fill="#fff"/>
+<circle cx="8" cy="1044.4" r="5" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_editor_control_anchor.svg b/editor/icons/icon_editor_control_anchor.svg
new file mode 100644
index 0000000000..eeee2c182f
--- /dev/null
+++ b/editor/icons/icon_editor_control_anchor.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8.832 6.1445a4 4 0 0 1 -2.6914 2.6855l9.8594 7.1699-7.168-9.8555z" fill="#a5efac" fill-rule="evenodd"/>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<ellipse cx="4" cy="1040.4" rx="4" ry="4" fill="#a5efac" style="paint-order:fill markers stroke"/>
+<circle cx="5" cy="1041.4" r="0" fill="#a5efac" style="paint-order:fill markers stroke"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_editor_focus.png b/editor/icons/icon_editor_focus.png
deleted file mode 100644
index 40ce11f381..0000000000
--- a/editor/icons/icon_editor_focus.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_handle.png b/editor/icons/icon_editor_handle.png
deleted file mode 100644
index 8950a216da..0000000000
--- a/editor/icons/icon_editor_handle.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_handle.svg b/editor/icons/icon_editor_handle.svg
new file mode 100644
index 0000000000..7e58aaa803
--- /dev/null
+++ b/editor/icons/icon_editor_handle.svg
@@ -0,0 +1,6 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<ellipse cx="4" cy="1048.4" rx="4" ry="4" fill="#fff"/>
+<ellipse cx="4" cy="1048.4" rx="2.8572" ry="2.8571" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_editor_node.png b/editor/icons/icon_editor_node.png
deleted file mode 100644
index aec161ed54..0000000000
--- a/editor/icons/icon_editor_node.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_pivot.png b/editor/icons/icon_editor_pivot.png
deleted file mode 100644
index db7feb0be6..0000000000
--- a/editor/icons/icon_editor_pivot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_pivot.svg b/editor/icons/icon_editor_pivot.svg
new file mode 100644
index 0000000000..d59d2d804d
--- /dev/null
+++ b/editor/icons/icon_editor_pivot.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 0v6h-6v4h6v6h4v-6h6v-4h-6v-6h-4zm1 7h2v2h-2v-2z" fill="#fff" fill-opacity=".70588"/>
+<path transform="translate(0 1036.4)" d="m7 1v5h2v-5h-2zm-6 6v2h5v-2h-5zm9 0v2h5v-2h-5zm-3 3v5h2v-5h-2z" fill="#ff8484" fill-opacity=".58824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_editor_plugin.png b/editor/icons/icon_editor_plugin.png
deleted file mode 100644
index ff7004b993..0000000000
--- a/editor/icons/icon_editor_plugin.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_editor_plugin.svg b/editor/icons/icon_editor_plugin.svg
new file mode 100644
index 0000000000..528a583a04
--- /dev/null
+++ b/editor/icons/icon_editor_plugin.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path d="m2 1038.4v8h8v-8z" fill-rule="evenodd" stroke="#e0e0e0" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2"/>
+<circle cx="13" cy="1042.4" r="2"/>
+<circle cx="6" cy="1049.4" r="2"/>
+<rect x="5" y="1046.4" width="2" height="2"/>
+<rect x="10" y="1041.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_editor_rect_2d.png b/editor/icons/icon_editor_rect_2d.png
deleted file mode 100644
index f59d493587..0000000000
--- a/editor/icons/icon_editor_rect_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_empty_control.png b/editor/icons/icon_empty_control.png
deleted file mode 100644
index b43bb14d39..0000000000
--- a/editor/icons/icon_empty_control.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_enum.png b/editor/icons/icon_enum.png
deleted file mode 100644
index a98a33aedf..0000000000
--- a/editor/icons/icon_enum.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_environment.png b/editor/icons/icon_environment.png
deleted file mode 100644
index 265af5e4ad..0000000000
--- a/editor/icons/icon_environment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_environment.svg b/editor/icons/icon_environment.svg
new file mode 100644
index 0000000000..464f2d91a3
--- /dev/null
+++ b/editor/icons/icon_environment.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#e0e0e0">
+<circle cx="8" cy="1044.4" r="6" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m2 1044.4c4.5932 1.582 8.3985 1.0627 12 0" stroke-width="1.5"/>
+<path d="m8 1038.4c-3 4-3 8 0 12" stroke-width="1.5"/>
+<path d="m8 1038.4c3 4 3 8 0 12" stroke-width="1.5"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_error.png b/editor/icons/icon_error.png
deleted file mode 100644
index 8a9130f70b..0000000000
--- a/editor/icons/icon_error.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_error.svg b/editor/icons/icon_error.svg
new file mode 100644
index 0000000000..771a418cfa
--- /dev/null
+++ b/editor/icons/icon_error.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect x="2.2204e-16" y="1044.4" width="8" height="8" ry="4" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_error_sign.png b/editor/icons/icon_error_sign.png
deleted file mode 100644
index 1bfb1f345c..0000000000
--- a/editor/icons/icon_error_sign.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_error_sign.svg b/editor/icons/icon_error_sign.svg
new file mode 100644
index 0000000000..a2d714c31a
--- /dev/null
+++ b/editor/icons/icon_error_sign.svg
@@ -0,0 +1,7 @@
+<svg width="32" height="32" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1020.4)">
+<path d="m10 1048.4h12l6-6v-12l-6-6h-12l-6 6v12z" fill="#ff8484" fill-rule="evenodd"/>
+<rect x="14" y="1028.4" width="4" height="9" fill="#fff"/>
+<rect x="14" y="1040.4" width="4" height="4" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_event_player.png b/editor/icons/icon_event_player.png
deleted file mode 100644
index b5478ca74e..0000000000
--- a/editor/icons/icon_event_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_event_player.svg b/editor/icons/icon_event_player.svg
new file mode 100644
index 0000000000..06630c349a
--- /dev/null
+++ b/editor/icons/icon_event_player.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m1 1v14h14v-14h-14zm2 2h10v10h-10v-10z"/>
+<path transform="translate(0 1036.4)" d="m5 3v6h2v-6h-2zm4 0v6h2v-6h-2z"/>
+<rect x="5" y="1039.4" width="1" height="10"/>
+<rect x="9" y="1039.4" width="1" height="10"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_expand.png b/editor/icons/icon_expand.png
deleted file mode 100644
index 8a604f945b..0000000000
--- a/editor/icons/icon_expand.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_expand_hl.png b/editor/icons/icon_expand_hl.png
deleted file mode 100644
index 6f51806db2..0000000000
--- a/editor/icons/icon_expand_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_favorites.png b/editor/icons/icon_favorites.png
deleted file mode 100644
index 14e05ad9b9..0000000000
--- a/editor/icons/icon_favorites.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_favorites.svg b/editor/icons/icon_favorites.svg
new file mode 100644
index 0000000000..ce42a45732
--- /dev/null
+++ b/editor/icons/icon_favorites.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1038.1-2.3741 4.0973-4.6259 1.0978l3.2361 3.4074-0.35866 4.6735 4.1389-1.9766 4.1572 1.9421-0.39534-4.6532 3.2218-3.3932-4.6259-1.0978-2.3741-4.0973z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_file.png b/editor/icons/icon_file.png
deleted file mode 100644
index b012e1f214..0000000000
--- a/editor/icons/icon_file.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_file_big.png b/editor/icons/icon_file_big.png
deleted file mode 100644
index e0aff764f1..0000000000
--- a/editor/icons/icon_file_big.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_file_big.svg b/editor/icons/icon_file_big.svg
new file mode 100644
index 0000000000..569b449a59
--- /dev/null
+++ b/editor/icons/icon_file_big.svg
@@ -0,0 +1,7 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 988.36)" d="m14 5c-2.1987 0-4 1.8013-4 4v46c0 2.1987 1.8013 4 4 4h36c2.1987 0 4-1.8013 4-4v-33h-0.007812c0.00212-0.24832-0.079273-0.50098-0.28516-0.70703l-16-16c-0.18786-0.18693-0.44246-0.28939-0.70703-0.28906v-0.0039062h-23zm0 2h22v2 10c0 2.1987 1.8013 4 4 4h10 2v32c0 1.1253-0.87472 2-2 2h-36c-1.1253 0-2-0.8747-2-2v-46c0-1.1253 0.87472-2 2-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fff" fill-opacity=".58824" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_big_broken.svg b/editor/icons/icon_file_big_broken.svg
new file mode 100644
index 0000000000..167bb1bb5f
--- /dev/null
+++ b/editor/icons/icon_file_big_broken.svg
@@ -0,0 +1,7 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 988.36)" d="m14 5c-2.1987 0-4 1.8013-4 4v26.172a1.0001 1.0001 0 0 0 1.707 0.70703l3.293-3.293 9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l9.293-9.293 9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l8-8a1.0001 1.0001 0 0 0 0.29297 -0.70703v-11.172a1.0001 1.0001 0 0 0 -0.29297 -0.70703l-16-16a1.0001 1.0001 0 0 0 -0.70703 -0.29297h-23zm0 2h22v12c0 2.1987 1.8013 4 4 4h12v9.7578l-7 7-9.293-9.293a1.0001 1.0001 0 0 0 -1.4141 0l-9.293 9.293-9.293-9.293a1.0001 1.0001 0 0 0 -1.4141 0l-2.293 2.293v-23.758c0-1.1253 0.87473-2 2-2zm0.98438 28.83a1.0001 1.0001 0 0 0 -0.69141 0.29297l-4 4a1.0001 1.0001 0 0 0 -0.29297 0.70703v14.17c0 2.1987 1.8013 4 4 4h36c2.1987 0 4-1.8013 4-4v-16.17a1.0001 1.0001 0 0 0 -1.707 -0.70703l-7.293 7.293-9.293-9.293a1.0001 1.0001 0 0 0 -1.4141 0l-9.293 9.293-9.293-9.293a1.0001 1.0001 0 0 0 -0.72266 -0.29297zm0.015625 2.4141l9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l9.293-9.293 9.293 9.293a1.0001 1.0001 0 0 0 1.4141 0l6.293-6.293v13.756c0 1.1253-0.87473 2-2 2h-36c-1.1253 0-2-0.87473-2-2v-13.756l3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ff8484" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_big_dead.svg b/editor/icons/icon_file_big_dead.svg
new file mode 100644
index 0000000000..c8aab912f1
--- /dev/null
+++ b/editor/icons/icon_file_big_dead.svg
@@ -0,0 +1,7 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<g transform="translate(0 -1.6949e-5)">
+<path d="m14 993.36c-2.1987 0-4 1.8013-4 4v46c0 2.1987 1.8013 4 4 4h36c2.1987 0 4-1.8013 4-4v-33h-0.0078c2e-3 -0.2483-0.0793-0.501-0.28516-0.707l-16-16c-0.18788-0.18693-0.44247-0.28939-0.70704-0.28907v-4e-3zm0 2h22v12c0 2.1987 1.8013 4 4 4h12v32c0 1.1253-0.87472 2-2 2h-36c-1.1253 0-2-0.8747-2-2v-46c0-1.1253 0.87472-2 2-2zm2.9512 22.002a1 1 0 0 0 -0.60938 0.2461 1 1 0 0 0 -0.09375 1.4121l2.9238 3.3398-2.9238 3.3418a1 1 0 0 0 0.09375 1.4121 1 1 0 0 0 1.4102 -0.094l2.748-3.1407 2.748 3.1407a1 1 0 0 0 1.4102 0.094 1 1 0 0 0 0.09375 -1.4121l-2.9238-3.3418 2.9238-3.3398a1 1 0 0 0 -0.09375 -1.4121 1 1 0 0 0 -0.63867 -0.2461 1 1 0 0 0 -0.77148 0.3398l-2.748 3.1406-2.748-3.1406a1 1 0 0 0 -0.80078 -0.3398zm23 0a1 1 0 0 0 -0.60938 0.2461 1 1 0 0 0 -0.09375 1.4121l2.9238 3.3398-2.9238 3.3418a1 1 0 0 0 0.09375 1.4121 1 1 0 0 0 1.4102 -0.094l2.748-3.1407 2.748 3.1407a1 1 0 0 0 1.4102 0.094 1 1 0 0 0 0.09375 -1.4121l-2.9238-3.3418 2.9238-3.3398a1 1 0 0 0 -0.09375 -1.4121 1 1 0 0 0 -0.63867 -0.2461 1 1 0 0 0 -0.77148 0.3398l-2.748 3.1406-2.748-3.1406a1 1 0 0 0 -0.80078 -0.3398zm-18.951 13.998a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h3v3c0 2.7527 2.2473 5 5 5s5-2.2473 5-5v-3h9a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm5 2h6v3c0 1.6793-1.3207 3-3 3s-3-1.3207-3-3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ff8484" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_broken.svg b/editor/icons/icon_file_broken.svg
new file mode 100644
index 0000000000..f352eeb001
--- /dev/null
+++ b/editor/icons/icon_file_broken.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 1036.4)" d="m2 1v8.5859l1.293-1.293a1.0001 1.0001 0 0 1 0.69141 -0.29102 1.0001 1.0001 0 0 1 0.72266 0.29102l2.293 2.293 2.293-2.293a1.0001 1.0001 0 0 1 1.4141 0l2.293 2.293 1-1v-3.5859h-5v-5h-7zm8 0v4h4l-4-4zm-6 9.4141l-2 2v2.5859h12v-2.5859l-0.29297 0.29297a1.0001 1.0001 0 0 1 -1.4141 0l-2.293-2.293-2.293 2.293a1.0001 1.0001 0 0 1 -1.4141 0l-2.293-2.293z" fill="#ff8484"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_dialog.png b/editor/icons/icon_file_dialog.png
deleted file mode 100644
index c918e2b3b2..0000000000
--- a/editor/icons/icon_file_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_file_dialog.svg b/editor/icons/icon_file_dialog.svg
new file mode 100644
index 0000000000..fafb940611
--- /dev/null
+++ b/editor/icons/icon_file_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2zm9 1h1v1h-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8zm3 2h3c1 0 1 2 2 2h3v4h-8z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_list.png b/editor/icons/icon_file_list.png
deleted file mode 100644
index a98a33aedf..0000000000
--- a/editor/icons/icon_file_list.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_file_list.svg b/editor/icons/icon_file_list.svg
new file mode 100644
index 0000000000..6eee2e63cf
--- /dev/null
+++ b/editor/icons/icon_file_list.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2v2h2v-2h-2zm4 0v2h8v-2h-8zm-4 5v2h2v-2h-2zm4 0v2h8v-2h-8zm-4 5v2h2v-2h-2zm4 0v2h8v-2h-8z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_server.png b/editor/icons/icon_file_server.png
deleted file mode 100644
index f5a18fc52d..0000000000
--- a/editor/icons/icon_file_server.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_file_server.svg b/editor/icons/icon_file_server.svg
new file mode 100644
index 0000000000..02bc363c19
--- /dev/null
+++ b/editor/icons/icon_file_server.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#c5c5c5">
+<path transform="translate(0 1036.4)" d="m1 8v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1zm-3 3v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1z"/>
+<rect x="5" y="1038.4" width="6" height="4"/>
+<rect x="5" y="1037.4" width="3" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_server_active.png b/editor/icons/icon_file_server_active.png
deleted file mode 100644
index af5fc0033a..0000000000
--- a/editor/icons/icon_file_server_active.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_file_server_active.svg b/editor/icons/icon_file_server_active.svg
new file mode 100644
index 0000000000..d491df2009
--- /dev/null
+++ b/editor/icons/icon_file_server_active.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#84ffb1">
+<path transform="translate(0 1036.4)" d="m1 8v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1zm-3 3v3h14v-3h-14zm1 1h1v1h-1v-1zm2 0h1v1h-1v-1z"/>
+<rect x="5" y="1038.4" width="6" height="4"/>
+<rect x="5" y="1037.4" width="3" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_file_thumbnail.png b/editor/icons/icon_file_thumbnail.png
deleted file mode 100644
index 6fb4b8f36f..0000000000
--- a/editor/icons/icon_file_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_file_thumbnail.svg b/editor/icons/icon_file_thumbnail.svg
new file mode 100644
index 0000000000..074856ce75
--- /dev/null
+++ b/editor/icons/icon_file_thumbnail.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2v5h5v-5h-5zm7 0v5h5v-5h-5zm-7 7v5h5v-5h-5zm7 0v5h5v-5h-5z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_filesystem.png b/editor/icons/icon_filesystem.png
deleted file mode 100644
index 5faff250d7..0000000000
--- a/editor/icons/icon_filesystem.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_fixed_material.png b/editor/icons/icon_fixed_material.png
deleted file mode 100644
index a9b0ebb568..0000000000
--- a/editor/icons/icon_fixed_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_fixed_material.svg b/editor/icons/icon_fixed_material.svg
new file mode 100644
index 0000000000..e77e89df31
--- /dev/null
+++ b/editor/icons/icon_fixed_material.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-2 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_fixed_spatial_material.png b/editor/icons/icon_fixed_spatial_material.png
deleted file mode 100644
index f26ac3be37..0000000000
--- a/editor/icons/icon_fixed_spatial_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_fixed_spatial_material.svg b/editor/icons/icon_fixed_spatial_material.svg
new file mode 100644
index 0000000000..d69a762d7e
--- /dev/null
+++ b/editor/icons/icon_fixed_spatial_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -4.8887 2h2.8887 6.8965a7 7 0 0 0 -4.8965 -2z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m3.1113 3a7 7 0 0 0 -1.4277 2h2.3164a2 2 0 0 1 2 -2h-2.8887zm2.8887 0a2 2 0 0 1 2 2h6.3145a7 7 0 0 0 -1.418 -2h-6.8965z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m1.6836 5a7 7 0 0 0 -0.60547 2h4.9219a2 2 0 0 1 -2 -2h-2.3164zm4.3164 2h8.9199a7 7 0 0 0 -0.60547 -2h-6.3145a2 2 0 0 1 -2 2z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1.0781 7a7 7 0 0 0 -0.078125 1 7 7 0 0 0 0.080078 1h13.842a7 7 0 0 0 0.078125 -1 7 7 0 0 0 -0.080078 -1h-8.9199-4.9219z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1.0801 9a7 7 0 0 0 0.60547 2h12.631a7 7 0 0 0 0.60547 -2h-13.842z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m3.1035 13a7 7 0 0 0 4.8965 2 7 7 0 0 0 4.8887 -2h-9.7852z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m1.6855 11a7 7 0 0 0 1.418 2h9.7852a7 7 0 0 0 1.4277 -2h-12.631z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_fog_f_x.png b/editor/icons/icon_fog_f_x.png
deleted file mode 100644
index 54691aa9ab..0000000000
--- a/editor/icons/icon_fog_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_folder.png b/editor/icons/icon_folder.png
deleted file mode 100644
index cc05e98ebb..0000000000
--- a/editor/icons/icon_folder.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_folder.svg b/editor/icons/icon_folder.svg
new file mode 100644
index 0000000000..4b5b9359ea
--- /dev/null
+++ b/editor/icons/icon_folder.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 2a1 1 0 0 0 -1 1v2 6 2a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-7a1 1 0 0 0 -1 -1h-4a1 1 0 0 1 -1 -1v-1a1 1 0 0 0 -1 -1h-6z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_folder_big.png b/editor/icons/icon_folder_big.png
deleted file mode 100644
index 05c41720d8..0000000000
--- a/editor/icons/icon_folder_big.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_folder_big.svg b/editor/icons/icon_folder_big.svg
new file mode 100644
index 0000000000..1c0cd3584e
--- /dev/null
+++ b/editor/icons/icon_folder_big.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path transform="translate(0 988.36)" d="m13 11.996a5.0039 5.0039 0 0 0 -5.0039 5.0039 5.0039 5.0039 0 0 0 0.0039062 0.11719v2.8828 8 22.92a5.0039 5.0039 0 0 0 -0.0039062 0.076172 5.0039 5.0039 0 0 0 5.0039 5.0039h37.996a5.0039 5.0039 0 0 0 5.0039 -5.0039v-25.916a5.0039 5.0039 0 0 0 0.003906 -0.076172 5.0039 5.0039 0 0 0 -5.0039 -5.0039h-11v-0.039062a3.5 3.5 0 0 1 -0.5 0.039062 3.5 3.5 0 0 1 -3.5 -3.5v0.38281a5.0039 5.0039 0 0 0 -5 -4.8867 5.0039 5.0039 0 0 0 -0.11719 0.003906h-17.807a5.0039 5.0039 0 0 0 -0.076172 -0.003906zm23 4.5039a3.5 3.5 0 0 1 0.041016 -0.5h-0.041016v0.5z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_folder_scene.png b/editor/icons/icon_folder_scene.png
deleted file mode 100644
index 6f6d706dae..0000000000
--- a/editor/icons/icon_folder_scene.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_font.png b/editor/icons/icon_font.png
deleted file mode 100644
index 543ee01ae4..0000000000
--- a/editor/icons/icon_font.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_font.svg b/editor/icons/icon_font.svg
new file mode 100644
index 0000000000..1389ed4024
--- /dev/null
+++ b/editor/icons/icon_font.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="1" y="1037.4" width="14" height="2"/>
+<rect x="7" y="1037.4" width="2" height="14"/>
+<rect x="5" y="1050.4" width="6" height="1"/>
+<rect transform="rotate(90)" x="1037.4" y="-2" width="4" height="1"/>
+<rect transform="rotate(90)" x="1037.4" y="-15" width="4" height="1"/>
+<path transform="translate(0 1036.4)" d="m2 3v2a2 2 0 0 1 2 -2h-2z"/>
+<path transform="translate(0 1036.4)" d="m12 3a2 2 0 0 1 2 2v-2h-2z"/>
+<path d="m5 1050.4a2 2 0 0 0 2 -2v2h-2z"/>
+<path d="m11 1050.4a2 2 0 0 1 -2 -2v2h2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_forward.png b/editor/icons/icon_forward.png
deleted file mode 100644
index 529964f49d..0000000000
--- a/editor/icons/icon_forward.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_forward.svg b/editor/icons/icon_forward.svg
new file mode 100644
index 0000000000..6b638731a9
--- /dev/null
+++ b/editor/icons/icon_forward.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="16" version="1.1" viewBox="0 0 8 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1038.4 4 6-4 6" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_forward_no.png b/editor/icons/icon_forward_no.png
deleted file mode 100644
index bf62cd6ab2..0000000000
--- a/editor/icons/icon_forward_no.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_func.png b/editor/icons/icon_func.png
deleted file mode 100644
index 45b32def8a..0000000000
--- a/editor/icons/icon_func.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_g_d_native_library.png b/editor/icons/icon_g_d_native_library.png
deleted file mode 100644
index 530e06a982..0000000000
--- a/editor/icons/icon_g_d_native_library.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_g_d_native_library.svg b/editor/icons/icon_g_d_native_library.svg
new file mode 100644
index 0000000000..b494c7af6e
--- /dev/null
+++ b/editor/icons/icon_g_d_native_library.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-1.1934 1.9902 1.4141 1.4141 1.9941-1.1953a5 5 0 0 0 0.68555 0.28516l0.5625 2.2539v-5.2695a2 2 0 0 1 -1 -1.7305 2 2 0 0 1 1 -1.7285v-0.27148h1 4.5762a5 5 0 0 0 -0.11328 -0.25195l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm2 7v1 5 1h5c0.55228 0 1-0.4477 1-1v-5c0-0.5523-0.44772-1-1-1v4l-1-1-1 1v-4h-3z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_g_d_native_script.png b/editor/icons/icon_g_d_native_script.png
deleted file mode 100644
index ea4fe06704..0000000000
--- a/editor/icons/icon_g_d_native_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_g_d_script.png b/editor/icons/icon_g_d_script.png
deleted file mode 100644
index 4db4c53796..0000000000
--- a/editor/icons/icon_g_d_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_g_d_script.svg b/editor/icons/icon_g_d_script.svg
new file mode 100644
index 0000000000..953bb9ae9e
--- /dev/null
+++ b/editor/icons/icon_g_d_script.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-1.1934 1.9902 1.4141 1.4141 1.9941-1.1953a5 5 0 0 0 0.68555 0.28516l0.5625 2.2539h2l0.56445-2.2578a5 5 0 0 0 0.6875 -0.2793l1.9902 1.1934 1.4141-1.4141-1.1953-1.9941a5 5 0 0 0 0.28516 -0.68555l2.2539-0.5625v-2l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm1 5a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_g_i_probe.png b/editor/icons/icon_g_i_probe.png
deleted file mode 100644
index a15ae18675..0000000000
--- a/editor/icons/icon_g_i_probe.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_g_i_probe.svg b/editor/icons/icon_g_i_probe.svg
new file mode 100644
index 0000000000..37b2cda223
--- /dev/null
+++ b/editor/icons/icon_g_i_probe.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4v-2h-3v-10h9v-2h-10zm9 3a4 4 0 0 0 -4 4 4 4 0 0 0 2 3.459v0.54102c0 0.55401 0.44599 1 1 1h2c0.55401 0 1-0.44599 1-1v-0.54102a4 4 0 0 0 2 -3.459 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-1 8v1h2v-1h-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_g_i_probe_data.png b/editor/icons/icon_g_i_probe_data.png
deleted file mode 100644
index 0aabcc49cb..0000000000
--- a/editor/icons/icon_g_i_probe_data.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_g_i_probe_data.svg b/editor/icons/icon_g_i_probe_data.svg
new file mode 100644
index 0000000000..f5a0961a35
--- /dev/null
+++ b/editor/icons/icon_g_i_probe_data.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4v-2h-3v-10h9v-2h-10zm2 3v2h2v-2h-2zm7 0a4 4 0 0 0 -4 4 4 4 0 0 0 2 3.459v0.54102c0 0.55401 0.44599 1 1 1h2c0.55401 0 1-0.44599 1-1v-0.54102a4 4 0 0 0 2 -3.459 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-7 1v2h2v-2h-2zm0 3v2h2v-2h-2zm6 4v1h2v-1h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gamma_f_x.png b/editor/icons/icon_gamma_f_x.png
deleted file mode 100644
index 50474340d1..0000000000
--- a/editor/icons/icon_gamma_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_generic_6_d_o_f_joint.png b/editor/icons/icon_generic_6_d_o_f_joint.png
deleted file mode 100644
index 00ba76c098..0000000000
--- a/editor/icons/icon_generic_6_d_o_f_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_generic_6_d_o_f_joint.svg b/editor/icons/icon_generic_6_d_o_f_joint.svg
new file mode 100644
index 0000000000..dad266fff1
--- /dev/null
+++ b/editor/icons/icon_generic_6_d_o_f_joint.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a1 1 0 0 0 -1 1v4.8828l-3.5527-1.7773a1 1 0 0 0 -0.48438 -0.10352 1 1 0 0 0 -0.85742 0.55078 1 1 0 0 0 0.44727 1.3418l3.2109 1.6055-3.2109 1.6055a1 1 0 0 0 -0.44727 1.3418 1 1 0 0 0 1.3418 0.44726l3.5527-1.7773v3.8828a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-3.8828l3.5527 1.7773a1 1 0 0 0 1.3418 -0.44726 1 1 0 0 0 -0.44726 -1.3418l-3.2109-1.6055 3.2109-1.6055a1 1 0 0 0 0.44726 -1.3418 1 1 0 0 0 -0.88672 -0.55273 1 1 0 0 0 -0.45508 0.10547l-3.5527 1.7773v-4.8828a1 1 0 0 0 -1 -1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#fc9c9c" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_camera.svg b/editor/icons/icon_gizmo_camera.svg
new file mode 100644
index 0000000000..f6e5f885e7
--- /dev/null
+++ b/editor/icons/icon_gizmo_camera.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path d="m76 944.36a24 24 0 0 0 -23.906 22.219 24 24 0 0 0 -16.094 -6.2192 24 24 0 0 0 -24 24 24 24 0 0 0 16 22.594v17.406c0 4.432 3.5679 8 8 8h48c4.4321 0 8-3.568 8-8v-8l24 16v-48l-24 16v-14.156a24 24 0 0 0 8 -17.844 24 24 0 0 0 -24 -24z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_directional_light.png b/editor/icons/icon_gizmo_directional_light.png
deleted file mode 100644
index bdeb120b43..0000000000
--- a/editor/icons/icon_gizmo_directional_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gizmo_directional_light.svg b/editor/icons/icon_gizmo_directional_light.svg
new file mode 100644
index 0000000000..f7fa732501
--- /dev/null
+++ b/editor/icons/icon_gizmo_directional_light.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m64 8c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4zm-36.77 15.227c-1.0225 0-2.0447 0.39231-2.8281 1.1758-1.5669 1.5669-1.5669 4.0893 0 5.6562l11.312 11.314c1.5669 1.5669 4.0913 1.5669 5.6582 0s1.5669-4.0913 0-5.6582l-11.314-11.312c-0.78348-0.78348-1.8056-1.1758-2.8281-1.1758zm73.539 0c-1.0225 0-2.0446 0.39231-2.8281 1.1758l-11.314 11.312c-1.5669 1.5669-1.5669 4.0913 0 5.6582s4.0913 1.5669 5.6582 0l11.313-11.314c1.5669-1.5669 1.5669-4.0893 0-5.6562-0.78348-0.78348-1.8056-1.1758-2.8281-1.1758zm-36.77 20.773c-11.046 1e-5 -20 8.9543-20 20 7e-6 11.046 8.9543 20 20 20s20-8.9543 20-20c-8e-6 -11.046-8.9543-20-20-20zm-52 16c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4h-16zm88 0c-2.216 0-4 1.784-4 4s1.784 4 4 4h16c2.216 0 4-1.784 4-4s-1.784-4-4-4h-16zm-61.455 25.453c-1.0225 0-2.0466 0.39035-2.8301 1.1738l-11.312 11.314c-1.5669 1.5669-1.5669 4.0893 0 5.6563 1.5669 1.5669 4.0893 1.5669 5.6562 0l11.314-11.313c1.5669-1.5669 1.5669-4.0913 0-5.6582-0.78347-0.78347-1.8056-1.1738-2.8281-1.1738zm50.91 0c-1.0225 0-2.0447 0.39035-2.8281 1.1738-1.5669 1.5669-1.5669 4.0913 0 5.6582l11.314 11.313c1.5669 1.5669 4.0893 1.5669 5.6563 0 1.5669-1.567 1.5669-4.0893 0-5.6563l-11.313-11.314c-0.78347-0.78347-1.8076-1.1738-2.8301-1.1738zm-25.455 10.547c-2.216 0-4 1.784-4 4v16c0 2.216 1.784 4 4 4s4-1.784 4-4v-16c0-2.216-1.784-4-4-4z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_g_i_probe.svg b/editor/icons/icon_gizmo_g_i_probe.svg
new file mode 100644
index 0000000000..7d3adf4196
--- /dev/null
+++ b/editor/icons/icon_gizmo_g_i_probe.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m12 8a4.0004 4.0004 0 0 0 -4 4v104a4.0004 4.0004 0 0 0 4 4h60v-8h-56v-96h96v8h8v-12a4.0004 4.0004 0 0 0 -4 -4h-104zm27.715 17.951c-1.2324 0.086154-2.3996 0.76492-3.0664 1.9199l-0.14844 0.25781c-1.0669 1.848-0.43784 4.1948 1.4102 5.2617l10.648 6.1484c1.848 1.0669 4.1948 0.43784 5.2617-1.4102l0.14844-0.25781c1.0669-1.848 0.43784-4.1948-1.4102-5.2617l-10.648-6.1484c-0.693-0.4001-1.4558-0.56146-2.1953-0.50977zm52.285 2.0488a32 32 0 0 0 -32 32 32 32 0 0 0 16 27.668v8.332c0 4.432 3.568 8 8 8h16c4.432 0 8-3.568 8-8v-8.3223a32 32 0 0 0 16 -27.678 32 32 0 0 0 -32 -32zm0 12a20 20 0 0 1 20 20 20 20 0 0 1 -20 20 20 20 0 0 1 -20 -20 20 20 0 0 1 20 -20zm-60.148 16c-2.1339 0-3.8516 1.7177-3.8516 3.8516v0.29688c0 2.1339 1.7177 3.8516 3.8516 3.8516h12.297c2.1339 0 3.8516-1.7177 3.8516-3.8516v-0.29688c0-2.1339-1.7177-3.8516-3.8516-3.8516h-12.297zm18.902 23.951c-0.73947-0.051693-1.5023 0.10966-2.1953 0.50977l-10.648 6.1484c-1.848 1.0669-2.4771 3.4137-1.4102 5.2617l0.14844 0.25781c1.0669 1.848 3.4137 2.4771 5.2617 1.4102l10.648-6.1484c1.848-1.0669 2.4771-3.4137 1.4102-5.2617l-0.14844-0.25781c-0.66684-1.155-1.834-1.8338-3.0664-1.9199zm33.246 32.049v8h16v-8h-16z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#f7f5cf" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_light.png b/editor/icons/icon_gizmo_light.png
deleted file mode 100644
index be9903f8c2..0000000000
--- a/editor/icons/icon_gizmo_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gizmo_light.svg b/editor/icons/icon_gizmo_light.svg
new file mode 100644
index 0000000000..c411d13dc7
--- /dev/null
+++ b/editor/icons/icon_gizmo_light.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m64 6a40 40 0 0 0 -40 40 40 40 0 0 0 24 36.607v15.393a8 8 0 0 0 8 8h16a8 8 0 0 0 8 -8v-15.363a40 40 0 0 0 24 -36.637 40 40 0 0 0 -40 -40zm0 12a28 28 0 0 1 28 28 28 28 0 0 1 -28 28 28 28 0 0 1 -28 -28 28 28 0 0 1 28 -28zm-8 96v8h16v-8h-16z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_listener.png b/editor/icons/icon_gizmo_listener.png
deleted file mode 100644
index 47e978be61..0000000000
--- a/editor/icons/icon_gizmo_listener.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gizmo_listener.svg b/editor/icons/icon_gizmo_listener.svg
new file mode 100644
index 0000000000..adb6aebaec
--- /dev/null
+++ b/editor/icons/icon_gizmo_listener.svg
@@ -0,0 +1,7 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<g transform="matrix(2 0 0 2 -16 -1040.4)">
+<path transform="matrix(.5 0 0 .5 8 982.36)" d="m48 8a40 39.998 0 0 0 -40 39.998h16a24 23.999 0 0 1 24 -23.998 24 23.999 0 0 1 24 23.998c0 13.999-4.33 18.859-9.1211 22.852-2.3955 1.9962-5.0363 3.5302-7.8125 5.5352-1.3881 1.0024-2.8661 2.126-4.3047 3.9414-1.4385 1.8152-2.7617 4.6719-2.7617 7.6719 0 10.221-2.5383 12.59-5.1172 14.137-2.5789 1.5472-6.8828 1.8594-10.883 1.8594v0.00195h-8v16h8v-0.00195c4 0 11.696 0.31158 19.117-4.1406 7.0602-4.236 12.198-13.279 12.695-26 0.1835-0.1636 0.14883-0.15489 0.62109-0.49609 1.7238-1.245 5.083-3.2112 8.6875-6.2148 7.209-6.0072 14.879-17.145 14.879-35.145a40 39.998 0 0 0 -40 -39.998zm63.426 8l-13.906 8.0312a48 47.998 0 0 1 6.4844 23.967 48 47.998 0 0 1 -6.4688 23.984l13.891 8.0137a64 63.997 0 0 0 0 -63.996z" fill="#f7f5cf"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_particles.svg b/editor/icons/icon_gizmo_particles.svg
new file mode 100644
index 0000000000..05fc84619e
--- /dev/null
+++ b/editor/icons/icon_gizmo_particles.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m64 8a36 40 0 0 0 -35.311 32.256 24 24 0 0 0 -20.689 23.744 24 24 0 0 0 24 24h64a24 24 0 0 0 24 -24 24 24 0 0 0 -20.715 -23.746 36 40 0 0 0 -35.285 -32.254zm-32 88a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8zm64 0a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8zm-32 8a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8z" fill="#f7f5cf"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_reflection_probe.svg b/editor/icons/icon_gizmo_reflection_probe.svg
new file mode 100644
index 0000000000..6d80e73b8c
--- /dev/null
+++ b/editor/icons/icon_gizmo_reflection_probe.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m12 8a4.0004 4.0004 0 0 0 -4 4v24h8v-20h96v8h8v-12a4.0004 4.0004 0 0 0 -4 -4h-104zm76 28a4 4 0 0 0 -4 4 4 4 0 0 0 4 4h18.732l-42.957 50.119-44.947-44.947-5.6562 5.6582 48 48a4.0004 4.0004 0 0 0 5.8652 -0.22656l44.963-52.457v17.854a4 4 0 0 0 4 4 4 4 0 0 0 4 -4v-28a4.0004 4.0004 0 0 0 -4 -4h-28zm-80 52v28a4.0004 4.0004 0 0 0 4 4h104a4.0004 4.0004 0 0 0 4 -4v-28h-8v24h-96v-24h-8z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#f7f5cf" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_spatial_sample_player.png b/editor/icons/icon_gizmo_spatial_sample_player.png
deleted file mode 100644
index 0119dbc433..0000000000
--- a/editor/icons/icon_gizmo_spatial_sample_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gizmo_spatial_sample_player.svg b/editor/icons/icon_gizmo_spatial_sample_player.svg
new file mode 100644
index 0000000000..7dbb4744be
--- /dev/null
+++ b/editor/icons/icon_gizmo_spatial_sample_player.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m63.883 12.004c-1.0195 0.0295-1.9892 0.4473-2.7109 1.168l-30.828 30.83h-14.344c-2.209 2.21e-4 -3.9998 1.791-4 4v32c2.21e-4 2.209 1.791 3.9998 4 4h14.344l30.828 30.828c2.52 2.5182 6.8267 0.73442 6.8281-2.8281v-96.002c-0.0015-2.2541-1.8641-4.0619-4.1172-3.9961zm48.117 3.9961a4 4 0 0 0 -4 4v88a4 4 0 0 0 4 4 4 4 0 0 0 4 -4v-88a4 4 0 0 0 -4 -4zm-24 24a4 4 0 0 0 -4 4v40a4 4 0 0 0 4 4 4 4 0 0 0 4 -4v-40a4 4 0 0 0 -4 -4z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#f7f5cf" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_spatial_stream_player.png b/editor/icons/icon_gizmo_spatial_stream_player.png
deleted file mode 100644
index 6a4f85d550..0000000000
--- a/editor/icons/icon_gizmo_spatial_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gizmo_spatial_stream_player.svg b/editor/icons/icon_gizmo_spatial_stream_player.svg
new file mode 100644
index 0000000000..2cf3966364
--- /dev/null
+++ b/editor/icons/icon_gizmo_spatial_stream_player.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path d="m99.766 934.36a8.0008 8.0011 0 0 0 -1.9609 0.296l-56 16a8.0008 8.0011 0 0 0 -5.8047 7.6964v48.119a18 18.001 0 0 0 -2 -0.116 18 18.001 0 0 0 -18 18.001 18 18.001 0 0 0 18 18.001 18 18.001 0 0 0 17.875 -16.001h0.125v-2-59.963l40-11.43v37.517a18 18.001 0 0 0 -2 -0.124 18 18.001 0 0 0 -18 18.001 18 18.001 0 0 0 18 18 18 18.001 0 0 0 17.875 -16h0.125v-2-66.003a8.0008 8.0011 0 0 0 -8.2344 -7.9924z" color="#000000" color-rendering="auto" fill="#f7f5cf" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gizmo_spot_light.svg b/editor/icons/icon_gizmo_spot_light.svg
new file mode 100644
index 0000000000..9b4ddadd17
--- /dev/null
+++ b/editor/icons/icon_gizmo_spot_light.svg
@@ -0,0 +1,5 @@
+<svg width="128" height="128" version="1.1" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -924.36)">
+<path transform="translate(0 924.36)" d="m52 8c-4.432 0-8 3.568-8 8v12 16.875a40 36 0 0 0 -20 31.125h28a12 12 0 0 0 12 12 12 12 0 0 0 12 -12h28a40 36 0 0 0 -20 -31.141v-20.859-8c0-4.432-3.568-8-8-8h-24zm-11.969 78.006c-0.76793-0.053681-1.5596 0.1138-2.2793 0.5293l-10.393 6c-1.9191 1.108-2.5728 3.5457-1.4648 5.4648s3.5457 2.5728 5.4648 1.4648l10.393-6c1.9191-1.108 2.5709-3.5457 1.4629-5.4648-0.6925-1.1994-1.9037-1.9047-3.1836-1.9941zm47.938 0c-1.2799 0.08947-2.4911 0.7947-3.1836 1.9941-1.108 1.9191-0.45622 4.3568 1.4629 5.4648l10.393 6c1.9191 1.108 4.3568 0.45427 5.4648-1.4648s0.45427-4.3568-1.4648-5.4648l-10.393-6c-0.71967-0.4155-1.5114-0.58298-2.2793-0.5293zm-23.969 13.994c-2.216 0-4 1.784-4 4v12c0 2.216 1.784 4 4 4s4-1.784 4-4v-12c0-2.216-1.784-4-4-4z" fill="#f7f5cf" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.1082"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_glow_f_x.png b/editor/icons/icon_glow_f_x.png
deleted file mode 100644
index c970204359..0000000000
--- a/editor/icons/icon_glow_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_godot.png b/editor/icons/icon_godot.png
deleted file mode 100644
index a5e371865c..0000000000
--- a/editor/icons/icon_godot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_godot.svg b/editor/icons/icon_godot.svg
new file mode 100644
index 0000000000..32a1eeb6ec
--- /dev/null
+++ b/editor/icons/icon_godot.svg
@@ -0,0 +1,33 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="matrix(.017241 0 0 .017241 -.82759 1033.7)" stroke-width=".32031">
+<g transform="matrix(4.1626 0 0 -4.1626 919.24 771.67)">
+<path d="m0 0s-0.325 1.994-0.515 1.976l-36.182-3.491c-2.879-0.278-5.115-2.574-5.317-5.459l-0.994-14.247-27.992-1.997-1.904 12.912c-0.424 2.872-2.932 5.037-5.835 5.037h-38.188c-2.902 0-5.41-2.165-5.834-5.037l-1.905-12.912-27.992 1.997-0.994 14.247c-0.202 2.886-2.438 5.182-5.317 5.46l-36.2 3.49c-0.187 0.018-0.324-1.978-0.511-1.978l-0.049-7.83 30.658-4.944 1.004-14.374c0.203-2.91 2.551-5.263 5.463-5.472l38.551-2.75c0.146-0.01 0.29-0.016 0.434-0.016 2.897 0 5.401 2.166 5.825 5.038l1.959 13.286h28.005l1.959-13.286c0.423-2.871 2.93-5.037 5.831-5.037 0.142 0 0.284 5e-3 0.423 0.015l38.556 2.75c2.911 0.209 5.26 2.562 5.463 5.472l1.003 14.374 30.645 4.966z" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 104.7 525.91)">
+<path d="m0 0v-59.041c0.108-1e-3 0.216-5e-3 0.323-0.015l36.196-3.49c1.896-0.183 3.382-1.709 3.514-3.609l1.116-15.978 31.574-2.253 2.175 14.747c0.282 1.912 1.922 3.329 3.856 3.329h38.188c1.933 0 3.573-1.417 3.855-3.329l2.175-14.747 31.575 2.253 1.115 15.978c0.133 1.9 1.618 3.425 3.514 3.609l36.182 3.49c0.107 0.01 0.214 0.014 0.322 0.015v4.711l0.015 5e-3v54.325h0.134c4.795 6.12 9.232 12.569 13.487 19.449-5.651 9.62-12.575 18.217-19.976 26.182-6.864-3.455-13.531-7.369-19.828-11.534-3.151 3.132-6.7 5.694-10.186 8.372-3.425 2.751-7.285 4.768-10.946 7.118 1.09 8.117 1.629 16.108 1.846 24.448-9.446 4.754-19.519 7.906-29.708 10.17-4.068-6.837-7.788-14.241-11.028-21.479-3.842 0.642-7.702 0.88-11.567 0.926v6e-3c-0.027 0-0.052-6e-3 -0.075-6e-3 -0.024 0-0.049 6e-3 -0.073 6e-3v-6e-3c-3.872-0.046-7.729-0.284-11.572-0.926-3.238 7.238-6.956 14.642-11.03 21.479-10.184-2.264-20.258-5.416-29.703-10.17 0.216-8.34 0.755-16.331 1.848-24.448-3.668-2.35-7.523-4.367-10.949-7.118-3.481-2.678-7.036-5.24-10.188-8.372-6.297 4.165-12.962 8.079-19.828 11.534-7.401-7.965-14.321-16.562-19.974-26.182 4.253-6.88 8.693-13.329 13.487-19.449z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 784.07 817.24)">
+<path d="m0 0-1.121-16.063c-0.135-1.936-1.675-3.477-3.611-3.616l-38.555-2.751c-0.094-7e-3 -0.188-0.01-0.281-0.01-1.916 0-3.569 1.406-3.852 3.33l-2.211 14.994h-31.459l-2.211-14.994c-0.297-2.018-2.101-3.469-4.133-3.32l-38.555 2.751c-1.936 0.139-3.476 1.68-3.611 3.616l-1.121 16.063-32.547 3.138c0.015-3.498 0.06-7.33 0.06-8.093 0-34.374 43.605-50.896 97.781-51.086h0.133c54.176 0.19 97.766 16.712 97.766 51.086 0 0.777 0.047 4.593 0.063 8.093z" fill="#478cbf"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 389.21 625.67)">
+<path d="m0 0c0-12.052-9.765-21.815-21.813-21.815-12.042 0-21.81 9.763-21.81 21.815 0 12.044 9.768 21.802 21.81 21.802 12.048 0 21.813-9.758 21.813-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 367.37 631.06)">
+<path d="m0 0c0-7.994-6.479-14.473-14.479-14.473-7.996 0-14.479 6.479-14.479 14.473s6.483 14.479 14.479 14.479c8 0 14.479-6.485 14.479-14.479" fill="#414042"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 511.99 724.74)">
+<path d="m0 0c-3.878 0-7.021 2.858-7.021 6.381v20.081c0 3.52 3.143 6.381 7.021 6.381s7.028-2.861 7.028-6.381v-20.081c0-3.523-3.15-6.381-7.028-6.381" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 634.79 625.67)">
+<path d="m0 0c0-12.052 9.765-21.815 21.815-21.815 12.041 0 21.808 9.763 21.808 21.815 0 12.044-9.767 21.802-21.808 21.802-12.05 0-21.815-9.758-21.815-21.802" fill="#fff"/>
+</g>
+<g transform="matrix(4.1626 0 0 -4.1626 656.64 631.06)">
+<path d="m0 0c0-7.994 6.477-14.473 14.471-14.473 8.002 0 14.479 6.479 14.479 14.473s-6.477 14.479-14.479 14.479c-7.994 0-14.471-6.485-14.471-14.479" fill="#414042"/>
+</g>
+</g>
+<path d="m4 1041.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 1a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z"/>
+<path d="m12 1041.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 1a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z"/>
+<rect x="6" y="1043.4" width="4" height="1" ry="0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_godot_asset_default.png b/editor/icons/icon_godot_asset_default.png
deleted file mode 100644
index 7478399e8b..0000000000
--- a/editor/icons/icon_godot_asset_default.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_godot_docs.png b/editor/icons/icon_godot_docs.png
deleted file mode 100644
index 554280c5b4..0000000000
--- a/editor/icons/icon_godot_docs.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gradient.png b/editor/icons/icon_gradient.png
deleted file mode 100644
index c5e89c3908..0000000000
--- a/editor/icons/icon_gradient.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gradient.svg b/editor/icons/icon_gradient.svg
new file mode 100644
index 0000000000..cf36fc1afd
--- /dev/null
+++ b/editor/icons/icon_gradient.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="10" x2="10" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#e0e0e0" offset="0"/>
+<stop stop-color="#e0e0e0" stop-opacity="0" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55228 0-1 0.44772-1 1v12c0 0.55228 0.44772 1 1 1h12c0.55228 0 1-0.44772 1-1v-12c0-0.55228-0.44772-1-1-1z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gradient_texture.png b/editor/icons/icon_gradient_texture.png
deleted file mode 100644
index fedbf038a3..0000000000
--- a/editor/icons/icon_gradient_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gradient_texture.svg b/editor/icons/icon_gradient_texture.svg
new file mode 100644
index 0000000000..553a2d843b
--- /dev/null
+++ b/editor/icons/icon_gradient_texture.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="10" x2="10" y1="1" y2="15" gradientUnits="userSpaceOnUse">
+<stop stop-color="#e0e0e0" offset="0"/>
+<stop stop-color="#e0e0e0" stop-opacity="0" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-12a1 1 0 0 0 -1 -1h-12zm1 2h10v8h-10v-8z" fill="url(#a)"/>
+<rect x="6" y="1043.4" width="2" height="1" fill="#e0e0e0"/>
+<rect x="6" y="1044.4" width="2" height="2" fill="#e0e0e0"/>
+<rect x="4" y="1045.4" width="2" height="1" fill="#e0e0e0"/>
+<rect x="8" y="1044.4" width="2" height="2" fill="#e0e0e0"/>
+<rect x="10" y="1044.4" width="2" height="2" fill="#e0e0e0"/>
+<rect x="8" y="1042.4" width="3" height="2" fill="#e0e0e0"/>
+<rect x="9" y="1041.4" width="1" height="1" fill="#e0e0e0"/>
+<rect x="5" y="1044.4" width="1" height="1" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_color_ramp.png b/editor/icons/icon_graph_color_ramp.png
deleted file mode 100644
index 03d19a56bb..0000000000
--- a/editor/icons/icon_graph_color_ramp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_comment.png b/editor/icons/icon_graph_comment.png
deleted file mode 100644
index 1686837d1d..0000000000
--- a/editor/icons/icon_graph_comment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_comment.svg b/editor/icons/icon_graph_comment.svg
new file mode 100644
index 0000000000..d83bd62058
--- /dev/null
+++ b/editor/icons/icon_graph_comment.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m3 1v2h-2v2h2v4h-2v2h2v2h2v-2h4v2h2v-2h2v-2h-2v-4h2v-2h-2v-2h-2v2h-4v-2h-2zm2 4h4v4h-4v-4z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_cube_uniform.png b/editor/icons/icon_graph_cube_uniform.png
deleted file mode 100644
index 8b4ad57c31..0000000000
--- a/editor/icons/icon_graph_cube_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_cube_uniform.svg b/editor/icons/icon_graph_cube_uniform.svg
new file mode 100644
index 0000000000..a7ef1499b5
--- /dev/null
+++ b/editor/icons/icon_graph_cube_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm4.9727 2a0.71438 0.71438 0 0 1 0.34766 0.074219l4.2852 2.1426a0.71438 0.71438 0 0 1 0.39453 0.64062v4.2852a0.71438 0.71438 0 0 1 -0.39453 0.63867l-4.2852 2.1426a0.71438 0.71438 0 0 1 -0.64062 0l-4.2852-2.1426a0.71438 0.71438 0 0 1 -0.39453 -0.63867v-4.2852a0.71438 0.71438 0 0 1 0.39453 -0.64062l4.2852-2.1426a0.71438 0.71438 0 0 1 0.29297 -0.074219zm0.027344 1.5137l-2.6895 1.3438 2.6895 1.3438 2.6895-1.3438-2.6895-1.3438zm-3.5723 2.498v2.6895l2.8574 1.4277v-2.6875l-2.8574-1.4297zm7.1445 0l-2.8574 1.4297v2.6875l2.8574-1.4277v-2.6895z" fill="#eac968"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_curve_map.png b/editor/icons/icon_graph_curve_map.png
deleted file mode 100644
index ced27bd62f..0000000000
--- a/editor/icons/icon_graph_curve_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_curve_map.svg b/editor/icons/icon_graph_curve_map.svg
new file mode 100644
index 0000000000..a5a3184926
--- /dev/null
+++ b/editor/icons/icon_graph_curve_map.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1049.4c8 0 9 0 9-9" fill="none" stroke="#f6f6f6" stroke-linecap="round" stroke-width="2"/>
+<path transform="translate(0 1038.4)" d="m11 4a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-5 5a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" fill="#68d0ea"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_default_texture.png b/editor/icons/icon_graph_default_texture.png
deleted file mode 100644
index cad05e8332..0000000000
--- a/editor/icons/icon_graph_default_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_default_texture.svg b/editor/icons/icon_graph_default_texture.svg
new file mode 100644
index 0000000000..0a1a0e9673
--- /dev/null
+++ b/editor/icons/icon_graph_default_texture.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 2v10h10v-10h-10zm9 2v5h-8l2-3 2 2 4-4z" fill="#eae068"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_edit.png b/editor/icons/icon_graph_edit.png
deleted file mode 100644
index f6226b2193..0000000000
--- a/editor/icons/icon_graph_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_edit.svg b/editor/icons/icon_graph_edit.svg
new file mode 100644
index 0000000000..d56fd74b8d
--- /dev/null
+++ b/editor/icons/icon_graph_edit.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -1 -1.7305v-5.8555l4.793 4.793 1.4141-1.4141-4.793-4.793h5.8574a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm10.656 6.9297l-0.70703 0.70703 1.4141 1.4141 0.70703-0.70703-1.4141-1.4141zm-1.4141 1.4141l-3.8887 3.8887-0.35352 1.7676 1.7676-0.35352 3.8887-3.8887-1.4141-1.4141z" fill="#a5efac"/>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_input.png b/editor/icons/icon_graph_input.png
deleted file mode 100644
index 4725bcf7b1..0000000000
--- a/editor/icons/icon_graph_input.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_input.svg b/editor/icons/icon_graph_input.svg
new file mode 100644
index 0000000000..c5034ecd2c
--- /dev/null
+++ b/editor/icons/icon_graph_input.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<circle cx="7" cy="1045.4" r="6" fill="#f6f6f6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_node.png b/editor/icons/icon_graph_node.png
deleted file mode 100644
index fec38cb3eb..0000000000
--- a/editor/icons/icon_graph_node.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_node.svg b/editor/icons/icon_graph_node.svg
new file mode 100644
index 0000000000..e5e1c1dfee
--- /dev/null
+++ b/editor/icons/icon_graph_node.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -1 -1.7305v-5.8555l4.0859 4.0859 1.4141-1.4141-4.0859-4.0859h5.8574a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm9.5 9a2.5 2.5 0 0 0 -2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5 -2.5 2.5 2.5 0 0 0 -2.5 -2.5z" fill="#a5efac"/>
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_rgb.png b/editor/icons/icon_graph_rgb.png
deleted file mode 100644
index 3113a18e8c..0000000000
--- a/editor/icons/icon_graph_rgb.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_rgb.svg b/editor/icons/icon_graph_rgb.svg
new file mode 100644
index 0000000000..403572a82e
--- /dev/null
+++ b/editor/icons/icon_graph_rgb.svg
@@ -0,0 +1,12 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill-opacity=".39216">
+<path d="m7 1039.4a4 4 0 0 0 -4 4 4 4 0 0 0 0.03906 0.5195 4 4 0 0 0 -2.0391 3.4805 4 4 0 0 0 4 4 4 4 0 0 0 1.998 -0.541 4 4 0 0 0 2.002 0.541 4 4 0 0 0 4 -4 4 4 0 0 0 -2.0371 -3.4824 4 4 0 0 0 0.03711 -0.5176 4 4 0 0 0 -4 -4z" fill="#fff"/>
+<path d="m7 1040.4a3 3 0 0 0 -3 3 3 3 0 0 0 0.21094 1.1055 3 3 0 0 0 -2.2109 2.8945 3 3 0 0 0 3 3 3 3 0 0 0 2 -0.7676 3 3 0 0 0 2 0.7676 3 3 0 0 0 3 -3 3 3 0 0 0 -2.2148 -2.8906 3 3 0 0 0 0.21484 -1.1094 3 3 0 0 0 -3 -3z" fill="#fff"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_rgb_op.png b/editor/icons/icon_graph_rgb_op.png
deleted file mode 100644
index 09d633e722..0000000000
--- a/editor/icons/icon_graph_rgb_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_rgb_op.svg b/editor/icons/icon_graph_rgb_op.svg
new file mode 100644
index 0000000000..6dbcd6ee44
--- /dev/null
+++ b/editor/icons/icon_graph_rgb_op.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m4 1050.4h6v-10h-6z" fill="#fff" fill-rule="evenodd" stroke="#fff" stroke-linejoin="round" stroke-width="2"/>
+<rect x="1" y="1041.4" width="2" height="2" fill="#fff"/>
+<rect x="1" y="1047.4" width="2" height="2" fill="#fff"/>
+<rect x="11" y="1044.4" width="2" height="2" fill="#fff"/>
+<rect x="5" y="1041.4" width="4" height="2" fill="#ff4646" fill-opacity=".86275"/>
+<rect x="5" y="1044.4" width="4" height="2" fill="#46ff46" fill-opacity=".86275"/>
+<rect x="5" y="1047.4" width="4" height="2" fill="#4646ff" fill-opacity=".86275"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_rgb_uniform.png b/editor/icons/icon_graph_rgb_uniform.png
deleted file mode 100644
index dbe10c9c8e..0000000000
--- a/editor/icons/icon_graph_rgb_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_rgb_uniform.svg b/editor/icons/icon_graph_rgb_uniform.svg
new file mode 100644
index 0000000000..4244bd408a
--- /dev/null
+++ b/editor/icons/icon_graph_rgb_uniform.svg
@@ -0,0 +1,12 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1038.4c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2z" fill="#fff"/>
+<path transform="translate(0 1038.4)" d="m7 2a3 3 0 0 0 -3 3 3 3 0 0 0 0.21094 1.1055 3 3 0 0 0 -2.2109 2.8945 3 3 0 0 0 3 3 3 3 0 0 0 2 -0.76758 3 3 0 0 0 2 0.76758 3 3 0 0 0 3 -3 3 3 0 0 0 -2.2148 -2.8906 3 3 0 0 0 0.21484 -1.1094 3 3 0 0 0 -3 -3z" fill="#fff" fill-opacity=".39216"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00" fill-opacity=".39216"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f" fill-opacity=".39216"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0" fill-opacity=".39216"/>
+<circle cx="7" cy="1043.4" r="3" fill="#f00" fill-opacity=".39216"/>
+<circle cx="5" cy="1047.4" r="3" fill="#00f" fill-opacity=".39216"/>
+<circle cx="9" cy="1047.4" r="3" fill="#0f0" fill-opacity=".39216"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_scalar.png b/editor/icons/icon_graph_scalar.png
deleted file mode 100644
index d44fd34891..0000000000
--- a/editor/icons/icon_graph_scalar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_scalar.svg b/editor/icons/icon_graph_scalar.svg
new file mode 100644
index 0000000000..ba921a961c
--- /dev/null
+++ b/editor/icons/icon_graph_scalar.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m6 2c-1.6569 0-3 1.3431-3 3s1.3431 3 3 3h2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1h-5v2h5c1.6569 0 3-1.3431 3-3s-1.3431-3-3-3h-2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h5v-2h-5z" fill="#cf68ea"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_scalar_interp.png b/editor/icons/icon_graph_scalar_interp.png
deleted file mode 100644
index adcfc7d857..0000000000
--- a/editor/icons/icon_graph_scalar_interp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_scalar_interp.svg b/editor/icons/icon_graph_scalar_interp.svg
new file mode 100644
index 0000000000..edfbe36066
--- /dev/null
+++ b/editor/icons/icon_graph_scalar_interp.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1050.4 10-10" fill="none" stroke="#cf68ea" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_scalar_op.png b/editor/icons/icon_graph_scalar_op.png
deleted file mode 100644
index 6459cb9759..0000000000
--- a/editor/icons/icon_graph_scalar_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_scalar_op.svg b/editor/icons/icon_graph_scalar_op.svg
new file mode 100644
index 0000000000..34f7d9b2b1
--- /dev/null
+++ b/editor/icons/icon_graph_scalar_op.svg
@@ -0,0 +1,8 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<path transform="translate(0 1038.4)" d="m4 1c-0.55226 1e-4 -0.99994 0.4477-1 1v10c5.52e-5 0.5523 0.44774 0.9999 1 1h6c0.55226-1e-4 0.99994-0.4477 1-1v-10c-5.5e-5 -0.5523-0.44774-0.9999-1-1zm1 3 4 3-4 3z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<rect x="1" y="1041.4" width="2" height="2"/>
+<rect x="1" y="1047.4" width="2" height="2"/>
+<rect x="11" y="1044.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_scalar_uniform.png b/editor/icons/icon_graph_scalar_uniform.png
deleted file mode 100644
index e7e0b9a73c..0000000000
--- a/editor/icons/icon_graph_scalar_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_scalar_uniform.svg b/editor/icons/icon_graph_scalar_uniform.svg
new file mode 100644
index 0000000000..d2ee2ec827
--- /dev/null
+++ b/editor/icons/icon_graph_scalar_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2h-10zm4 2h5v2h-5a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2c1.6569 0 3 1.3431 3 3s-1.3431 3-3 3h-5v-2h5a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2c-1.6569 0-3-1.3431-3-3s1.3431-3 3-3z" fill="#cf68ea"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_scalars_to_vec.png b/editor/icons/icon_graph_scalars_to_vec.png
deleted file mode 100644
index b8893e78ca..0000000000
--- a/editor/icons/icon_graph_scalars_to_vec.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_scalars_to_vec.svg b/editor/icons/icon_graph_scalars_to_vec.svg
new file mode 100644
index 0000000000..bd3bc0424a
--- /dev/null
+++ b/editor/icons/icon_graph_scalars_to_vec.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientUnits="userSpaceOnUse">
+<stop stop-color="#cf68ea" offset="0"/>
+<stop stop-color="#b8ea68" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m1.9902 0.99023a1.0001 1.0001 0 0 0 -0.69727 1.7168l3.293 3.293h-2.5859a1.0001 1.0001 0 1 0 0 2h2.5859l-3.293 3.293a1.0001 1.0001 0 1 0 1.4141 1.4141l4.707-4.707h4.5859a1.0001 1.0001 0 1 0 0 -2h-4.5859l-4.707-4.707a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_texscreen.png b/editor/icons/icon_graph_texscreen.png
deleted file mode 100644
index 628990553a..0000000000
--- a/editor/icons/icon_graph_texscreen.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_texscreen.svg b/editor/icons/icon_graph_texscreen.svg
new file mode 100644
index 0000000000..6c26332203
--- /dev/null
+++ b/editor/icons/icon_graph_texscreen.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1041.4h10v8h-10z" fill="none" stroke="#f6f6f6" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<rect x="3" y="1042.4" width="8" height="1" fill="#f6f6f6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_texture_uniform.png b/editor/icons/icon_graph_texture_uniform.png
deleted file mode 100644
index 9c0c758dc1..0000000000
--- a/editor/icons/icon_graph_texture_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_texture_uniform.svg b/editor/icons/icon_graph_texture_uniform.svg
new file mode 100644
index 0000000000..9e72743432
--- /dev/null
+++ b/editor/icons/icon_graph_texture_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm9 2l-4 4-2-2-2 3h8v-5z" fill="#eae068"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_time.png b/editor/icons/icon_graph_time.png
deleted file mode 100644
index 2a9b73dc2b..0000000000
--- a/editor/icons/icon_graph_time.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_time.svg b/editor/icons/icon_graph_time.svg
new file mode 100644
index 0000000000..6227b53c62
--- /dev/null
+++ b/editor/icons/icon_graph_time.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#f6f6f6">
+<rect x="6" y="1042.4" width="2" height="4"/>
+<rect x="6" y="1044.4" width="4" height="2"/>
+<path transform="translate(0 1038.4)" d="m7 0a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vec_dp.png b/editor/icons/icon_graph_vec_dp.png
deleted file mode 100644
index c395b61bb6..0000000000
--- a/editor/icons/icon_graph_vec_dp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vec_dp.svg b/editor/icons/icon_graph_vec_dp.svg
new file mode 100644
index 0000000000..0b24b47895
--- /dev/null
+++ b/editor/icons/icon_graph_vec_dp.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m1 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1046.4" r="1" fill="#b8ea68"/>
+<path d="m9 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vec_interp.png b/editor/icons/icon_graph_vec_interp.png
deleted file mode 100644
index 00cfe6ed29..0000000000
--- a/editor/icons/icon_graph_vec_interp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vec_interp.svg b/editor/icons/icon_graph_vec_interp.svg
new file mode 100644
index 0000000000..a3df7ff93d
--- /dev/null
+++ b/editor/icons/icon_graph_vec_interp.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m2 1050.4 10-10" fill="none" stroke="#b8ea68" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vec_length.png b/editor/icons/icon_graph_vec_length.png
deleted file mode 100644
index af449109fd..0000000000
--- a/editor/icons/icon_graph_vec_length.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vec_length.svg b/editor/icons/icon_graph_vec_length.svg
new file mode 100644
index 0000000000..cd2a39312a
--- /dev/null
+++ b/editor/icons/icon_graph_vec_length.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<rect y="1039.4" width="2" height="12" fill="#b8ea68"/>
+<rect x="12" y="1039.4" width="2" height="12" fill="#b8ea68"/>
+<path d="m5 1043.4 2 5 2-5" fill="none" stroke="#b8ea68" stroke-linecap="square" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vec_op.png b/editor/icons/icon_graph_vec_op.png
deleted file mode 100644
index c4e3cf409a..0000000000
--- a/editor/icons/icon_graph_vec_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vec_op.svg b/editor/icons/icon_graph_vec_op.svg
new file mode 100644
index 0000000000..2792d63378
--- /dev/null
+++ b/editor/icons/icon_graph_vec_op.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m4 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h-2v2h2v4h-2v2h2v1c5.52e-5 0.5523 0.44774 0.9999 1 1h6c0.55226-1e-4 0.99994-0.4477 1-1v-4h2v-2h-2v-4c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-6zm1 3l4 3-4 3v-6z" color="#000000" color-rendering="auto" fill="#b8ea68" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vec_scalar_op.png b/editor/icons/icon_graph_vec_scalar_op.png
deleted file mode 100644
index f7fc3b054e..0000000000
--- a/editor/icons/icon_graph_vec_scalar_op.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vec_scalar_op.svg b/editor/icons/icon_graph_vec_scalar_op.svg
new file mode 100644
index 0000000000..effcb596a1
--- /dev/null
+++ b/editor/icons/icon_graph_vec_scalar_op.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill-rule="evenodd" shape-rendering="auto">
+<path transform="translate(0 1038.4)" d="m3 7v2h-2v2h2v1c5.52e-5 0.5523 0.44774 0.9999 1 1h6c0.55226-1e-4 0.99994-0.4477 1-1v-4h2v-1h-4l-4 3v-3h-2z" color="#000000" color-rendering="auto" fill="#cf68ea" image-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m3 1045.4v-2h-2v-2h2v-1c5.52e-5 -0.5523 0.44774-0.9999 1-1h6c0.55226 1e-4 0.99994 0.4477 1 1v4h2v1h-4l-4-3v3h-2z" color="#000000" color-rendering="auto" fill="#b8ea68" image-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vec_to_scalars.png b/editor/icons/icon_graph_vec_to_scalars.png
deleted file mode 100644
index b0f2a9c4ae..0000000000
--- a/editor/icons/icon_graph_vec_to_scalars.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vec_to_scalars.svg b/editor/icons/icon_graph_vec_to_scalars.svg
new file mode 100644
index 0000000000..2ecacb8434
--- /dev/null
+++ b/editor/icons/icon_graph_vec_to_scalars.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientTransform="matrix(-1 0 0 1 14 1038.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#cf68ea" offset="0"/>
+<stop stop-color="#b8ea68" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path d="m12.01 1039.4a1.0001 1.0001 0 0 1 0.69726 1.7168l-3.293 3.293h2.5859a1.0001 1.0001 0 1 1 0 2h-2.5859l3.293 3.293a1.0001 1.0001 0 1 1 -1.4141 1.414l-4.707-4.707h-4.5859a1.0001 1.0001 0 1 1 0 -2h4.5859l4.707-4.707a1.0001 1.0001 0 0 1 0.7168 -0.3028z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vecs_to_xform.png b/editor/icons/icon_graph_vecs_to_xform.png
deleted file mode 100644
index b5217badcf..0000000000
--- a/editor/icons/icon_graph_vecs_to_xform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vecs_to_xform.svg b/editor/icons/icon_graph_vecs_to_xform.svg
new file mode 100644
index 0000000000..ba9526231a
--- /dev/null
+++ b/editor/icons/icon_graph_vecs_to_xform.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientTransform="translate(.00074682 1038.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#b8ea68" offset="0"/>
+<stop stop-color="#ea686c" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path d="m1.991 1039.4a1.0001 1.0001 0 0 0 -0.69726 1.7168l3.293 3.293h-2.5859a1.0001 1.0001 0 1 0 0 2h2.5859l-3.293 3.293a1.0001 1.0001 0 1 0 1.4141 1.414l4.707-4.707h4.5859a1.0001 1.0001 0 1 0 0 -2h-4.5859l-4.707-4.707a1.0001 1.0001 0 0 0 -0.7168 -0.3028z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vector.png b/editor/icons/icon_graph_vector.png
deleted file mode 100644
index d78a3fdf5c..0000000000
--- a/editor/icons/icon_graph_vector.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vector.svg b/editor/icons/icon_graph_vector.svg
new file mode 100644
index 0000000000..81772fa4f5
--- /dev/null
+++ b/editor/icons/icon_graph_vector.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m8 1038.4v2h-5v2h5v2l3-3zm-3.6562 5.6289-1.7148 1.0293 0.51367 0.8574 3 5c0.3885 0.647 1.3263 0.647 1.7148 0l3-5 0.51367-0.8574-1.7148-1.0293-0.51367 0.8574-2.1426 3.5703-2.1426-3.5703z" color="#000000" color-rendering="auto" fill="#b8ea68" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_vector_uniform.png b/editor/icons/icon_graph_vector_uniform.png
deleted file mode 100644
index a89166768b..0000000000
--- a/editor/icons/icon_graph_vector_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_vector_uniform.svg b/editor/icons/icon_graph_vector_uniform.svg
new file mode 100644
index 0000000000..66f31bf5dd
--- /dev/null
+++ b/editor/icons/icon_graph_vector_uniform.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm6 0 3 3-3 3v-2h-5v-2h5zm-3.6562 5.6289 0.51367 0.85742 2.1426 3.5703 2.1426-3.5703 0.51367-0.85742l1.7148 1.0293-0.51367 0.85742-3 5c-0.3885 0.64706-1.3263 0.64706-1.7148 0l-3-5-0.51367-0.85742z" fill="#b8ea68"/>
+<path transform="translate(0 1038.4)" d="m23 0v2h-5v2h5v2l3-3zm-3.6562 5.6289-1.7148 1.0293 0.51367 0.85742 3 5c0.3885 0.64706 1.3263 0.64706 1.7148 0l3-5 0.51367-0.85742-1.7148-1.0293-0.51367 0.85742-2.1426 3.5703-2.1426-3.5703z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform.png b/editor/icons/icon_graph_xform.png
deleted file mode 100644
index 142ec3eca5..0000000000
--- a/editor/icons/icon_graph_xform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform.svg b/editor/icons/icon_graph_xform.svg
new file mode 100644
index 0000000000..95b0a2eff8
--- /dev/null
+++ b/editor/icons/icon_graph_xform.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<rect x="1" y="1039.4" width="1" height="12" fill="#ea686c"/>
+<rect x="1" y="1039.4" width="3" height="1" fill="#ea686c"/>
+<rect x="1" y="1050.4" width="3" height="1" fill="#ea686c"/>
+<rect x="10" y="1050.4" width="3" height="1" fill="#ea686c"/>
+<rect x="10" y="1039.4" width="3" height="1" fill="#ea686c"/>
+<rect x="12" y="1039.4" width="1" height="12" fill="#ea686c"/>
+<path d="m4 1049.4v-7l3 3 3-3v7" fill="none" stroke="#ea686c" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform_mult.png b/editor/icons/icon_graph_xform_mult.png
deleted file mode 100644
index 94981d81af..0000000000
--- a/editor/icons/icon_graph_xform_mult.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform_mult.svg b/editor/icons/icon_graph_xform_mult.svg
new file mode 100644
index 0000000000..4d5593084e
--- /dev/null
+++ b/editor/icons/icon_graph_xform_mult.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m1 1049.4v-7l2 3 2-3v7" fill="none" stroke="#ea686c" stroke-linejoin="round" stroke-width="2"/>
+<path d="m9 1049.4v-7l2 3 2-3v7" fill="none" stroke="#ea686c" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1045.4" r="1" fill="#ea686c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform_scalar_func.png b/editor/icons/icon_graph_xform_scalar_func.png
deleted file mode 100644
index d0edded8b0..0000000000
--- a/editor/icons/icon_graph_xform_scalar_func.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform_scalar_func.svg b/editor/icons/icon_graph_xform_scalar_func.svg
new file mode 100644
index 0000000000..350d9e98d7
--- /dev/null
+++ b/editor/icons/icon_graph_xform_scalar_func.svg
@@ -0,0 +1,10 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<rect x="6" y="1042.4" width="2" height="5"/>
+<path transform="translate(0 1038.4)" d="m9.0703 1a3 3 0 0 0 -1.5703 0.40234 3 3 0 0 0 -1.5 2.5977h2a1 1 0 0 1 1 -1 1 1 0 0 1 1 1h2a3 3 0 0 0 -1.5 -2.5977 3 3 0 0 0 -1.4297 -0.40234z"/>
+<rect x="10" y="1042.4" width="2" height="1"/>
+<path transform="translate(0 1038.4)" d="m2 10a3 3 0 0 0 1.5 2.5977 3 3 0 0 0 3 0 3 3 0 0 0 1.5 -2.5977h-2a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1h-2z"/>
+<rect transform="scale(1,-1)" x="6" y="-1048.4" width="2" height="1"/>
+<rect x="4" y="1044.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform_to_vecs.png b/editor/icons/icon_graph_xform_to_vecs.png
deleted file mode 100644
index 9e2909969f..0000000000
--- a/editor/icons/icon_graph_xform_to_vecs.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform_to_vecs.svg b/editor/icons/icon_graph_xform_to_vecs.svg
new file mode 100644
index 0000000000..7da2834f43
--- /dev/null
+++ b/editor/icons/icon_graph_xform_to_vecs.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="1" x2="13.014" y1="7" y2="7" gradientTransform="matrix(-1 0 0 1 14 1038.4)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#b8ea68" offset="0"/>
+<stop stop-color="#ea686c" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1038.4)">
+<path d="m12.01 1039.4a1.0001 1.0001 0 0 1 0.69726 1.7168l-3.293 3.293h2.5859a1.0001 1.0001 0 1 1 0 2h-2.5859l3.293 3.293a1.0001 1.0001 0 1 1 -1.4141 1.414l-4.707-4.707h-4.5859a1.0001 1.0001 0 1 1 0 -2h4.5859l4.707-4.707a1.0001 1.0001 0 0 1 0.7168 -0.3028z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="url(#a)" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform_uniform.png b/editor/icons/icon_graph_xform_uniform.png
deleted file mode 100644
index 36ed91e427..0000000000
--- a/editor/icons/icon_graph_xform_uniform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform_uniform.svg b/editor/icons/icon_graph_xform_uniform.svg
new file mode 100644
index 0000000000..08bd345bc4
--- /dev/null
+++ b/editor/icons/icon_graph_xform_uniform.svg
@@ -0,0 +1,5 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path transform="translate(0 1038.4)" d="m2 0c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm-1 1h1 2v1h-2v10h2v1h-2-1v-1-10-1zm9 0h3v11 1h-3v-1h2v-10h-2v-1zm-0.029297 2a1.0001 1.0001 0 0 1 1.0293 1v7h-2v-4.5859l-1.293 1.293a1.0001 1.0001 0 0 1 -1.4141 0l-1.293-1.293v4.5859h-2v-7a1.0001 1.0001 0 0 1 0.98438 -0.99805 1.0001 1.0001 0 0 1 0.72266 0.29102l2.293 2.293 2.293-2.293a1.0001 1.0001 0 0 1 0.67773 -0.29297z" fill="#ea686c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform_vec_func.png b/editor/icons/icon_graph_xform_vec_func.png
deleted file mode 100644
index 3866430f72..0000000000
--- a/editor/icons/icon_graph_xform_vec_func.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform_vec_func.svg b/editor/icons/icon_graph_xform_vec_func.svg
new file mode 100644
index 0000000000..29bff80cd5
--- /dev/null
+++ b/editor/icons/icon_graph_xform_vec_func.svg
@@ -0,0 +1,10 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#b8ea68">
+<rect x="6" y="1042.4" width="2" height="5"/>
+<path transform="translate(0 1038.4)" d="m9.0703 1a3 3 0 0 0 -1.5703 0.40234 3 3 0 0 0 -1.5 2.5977h2a1 1 0 0 1 1 -1 1 1 0 0 1 1 1h2a3 3 0 0 0 -1.5 -2.5977 3 3 0 0 0 -1.4297 -0.40234z"/>
+<rect x="10" y="1042.4" width="2" height="1"/>
+<path transform="translate(0 1038.4)" d="m2 10a3 3 0 0 0 1.5 2.5977 3 3 0 0 0 3 0 3 3 0 0 0 1.5 -2.5977h-2a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1h-2z"/>
+<rect transform="scale(1,-1)" x="6" y="-1048.4" width="2" height="1"/>
+<rect x="4" y="1044.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform_vec_imult.png b/editor/icons/icon_graph_xform_vec_imult.png
deleted file mode 100644
index 07a7e214c2..0000000000
--- a/editor/icons/icon_graph_xform_vec_imult.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform_vec_imult.svg b/editor/icons/icon_graph_xform_vec_imult.svg
new file mode 100644
index 0000000000..edb68ffc4a
--- /dev/null
+++ b/editor/icons/icon_graph_xform_vec_imult.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m1 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1046.4" r="1" fill="#b8ea68"/>
+<path d="m9 1049.4v-7l2 3 2-3v7" fill="none" stroke="#ea686c" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_graph_xform_vec_mult.png b/editor/icons/icon_graph_xform_vec_mult.png
deleted file mode 100644
index 8048e755c5..0000000000
--- a/editor/icons/icon_graph_xform_vec_mult.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_graph_xform_vec_mult.svg b/editor/icons/icon_graph_xform_vec_mult.svg
new file mode 100644
index 0000000000..1e5cbafdb2
--- /dev/null
+++ b/editor/icons/icon_graph_xform_vec_mult.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)">
+<path d="m9 1042.4 2 6 2-6" fill="none" stroke="#b8ea68" stroke-linejoin="round" stroke-width="2"/>
+<circle cx="7" cy="1046.4" r="1" fill="#b8ea68"/>
+<path d="m1 1049.4v-7l2 3 2-3v7" fill="none" stroke="#ea686c" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_grid.png b/editor/icons/icon_grid.png
deleted file mode 100644
index 1366205fe0..0000000000
--- a/editor/icons/icon_grid.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_grid.svg b/editor/icons/icon_grid.svg
new file mode 100644
index 0000000000..ad18e2f7e9
--- /dev/null
+++ b/editor/icons/icon_grid.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 10 2h2 12v-2-12h-12-2zm2 2h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_grid_container.png b/editor/icons/icon_grid_container.png
deleted file mode 100644
index 027e992770..0000000000
--- a/editor/icons/icon_grid_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_grid_container.svg b/editor/icons/icon_grid_container.svg
new file mode 100644
index 0000000000..0492c7d7fd
--- /dev/null
+++ b/editor/icons/icon_grid_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2zm-8 4h2v2h-2v-2zm4 0h2v2h-2v-2zm4 0h2v2h-2v-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_grid_map.png b/editor/icons/icon_grid_map.png
deleted file mode 100644
index 69a431ccba..0000000000
--- a/editor/icons/icon_grid_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_grid_map.svg b/editor/icons/icon_grid_map.svg
new file mode 100644
index 0000000000..eafe1211f2
--- /dev/null
+++ b/editor/icons/icon_grid_map.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1-6 3v8l6 3 6-3v-2l-2-1-4 2-2-1v-4l2-1v-2l2-1zm4 2-2 1v2l2 1 2-1v-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_grid_map_floor.png b/editor/icons/icon_grid_map_floor.png
deleted file mode 100644
index a75871188b..0000000000
--- a/editor/icons/icon_grid_map_floor.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_groove_joint_2d.png b/editor/icons/icon_groove_joint_2d.png
deleted file mode 100644
index f65dc2b6b8..0000000000
--- a/editor/icons/icon_groove_joint_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_groove_joint_2d.svg b/editor/icons/icon_groove_joint_2d.svg
new file mode 100644
index 0000000000..bedb7fa474
--- /dev/null
+++ b/editor/icons/icon_groove_joint_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1037.4h-5v6h-5v2h5v6h5zm-7 0h-7v14h7v-4h-5v-6h5z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_group.png b/editor/icons/icon_group.png
deleted file mode 100644
index 5ffc90455e..0000000000
--- a/editor/icons/icon_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_group.svg b/editor/icons/icon_group.svg
new file mode 100644
index 0000000000..e607f35660
--- /dev/null
+++ b/editor/icons/icon_group.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v6h-6v8h8v-6h6v-8zm2 2h4v4h-4z" fill="#e0e0e0" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m1 1v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm12 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm-12 12v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0zm12 0v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0z" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_groups.png b/editor/icons/icon_groups.png
deleted file mode 100644
index 84a05560a9..0000000000
--- a/editor/icons/icon_groups.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_groups.svg b/editor/icons/icon_groups.svg
new file mode 100644
index 0000000000..37e40749b8
--- /dev/null
+++ b/editor/icons/icon_groups.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1040.4" width="14" height="8" fill="none" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+<ellipse cx="5" cy="1044.4" rx="2" ry="2" fill="#e0e0e0"/>
+<ellipse cx="11" cy="1044.4" rx="2" ry="2" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gui_close.svg b/editor/icons/icon_gui_close.svg
new file mode 100644
index 0000000000..ac023b7030
--- /dev/null
+++ b/editor/icons/icon_gui_close.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3.7578 2.3438l-1.4141 1.4141 4.2422 4.2422-4.2422 4.2422 1.4141 1.4141 4.2422-4.2422 4.2422 4.2422 1.4141-1.4141-4.2422-4.2422 4.2422-4.2422-1.4141-1.4141-4.2422 4.2422-4.2422-4.2422z" fill="#fff" fill-opacity=".89804"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_gui_close_dark.png b/editor/icons/icon_gui_close_dark.png
deleted file mode 100644
index 8f1d7d8b2c..0000000000
--- a/editor/icons/icon_gui_close_dark.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_gui_close_light.png b/editor/icons/icon_gui_close_light.png
deleted file mode 100644
index b8e3a80e3b..0000000000
--- a/editor/icons/icon_gui_close_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_box_container.png b/editor/icons/icon_h_box_container.png
deleted file mode 100644
index 36cef0a03c..0000000000
--- a/editor/icons/icon_h_box_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_box_container.svg b/editor/icons/icon_h_box_container.svg
new file mode 100644
index 0000000000..48a1fc7d64
--- /dev/null
+++ b/editor/icons/icon_h_box_container.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<rect x="5" y="1039.4" width="2" height="10"/>
+<rect x="9" y="1039.4" width="2" height="10"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_h_button_array.png b/editor/icons/icon_h_button_array.png
deleted file mode 100644
index 81b2bf79e3..0000000000
--- a/editor/icons/icon_h_button_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_button_array.svg b/editor/icons/icon_h_button_array.svg
new file mode 100644
index 0000000000..3f95dbbde1
--- /dev/null
+++ b/editor/icons/icon_h_button_array.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1v3.1328l-1.4453-0.96484-1.1094 1.6641 3 2c0.3359 0.2239 0.77347 0.2239 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-3.1328h-2zm8 4v2h-2v2h2v2h2v-2h2v-2h-2v-2h-2zm-8.5 4c-0.831 0-1.5 0.669-1.5 1.5v0.5 1h-1v2h8v-2h-1v-1-0.5c0-0.831-0.669-1.5-1.5-1.5h-3z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_h_scroll_bar.png b/editor/icons/icon_h_scroll_bar.png
deleted file mode 100644
index c6c6daf7a4..0000000000
--- a/editor/icons/icon_h_scroll_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_scroll_bar.svg b/editor/icons/icon_h_scroll_bar.svg
new file mode 100644
index 0000000000..e0118b1186
--- /dev/null
+++ b/editor/icons/icon_h_scroll_bar.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1041.4c0-1.108-0.892-2-2-2h-10c-1.108 0-2 0.892-2 2v6c0 1.108 0.892 2 2 2h10c1.108 0 2-0.892 2-2zm-1 2.9883a1.0001 1.0001 0 0 1 -0.168 0.5664l-2 3a1.0001 1.0001 0 1 1 -1.664 -1.1094l1.6289-2.4453-1.6289-2.4453a1.0001 1.0001 0 1 1 1.664 -1.1094l2 3a1.0001 1.0001 0 0 1 0.168 0.543zm-7.9922-2.9981a1.0001 1.0001 0 0 1 -0.1758 0.5645l-1.6308 2.4453 1.6308 2.4453a1.0001 1.0001 0 1 1 -1.664 1.1094l-2-3a1.0001 1.0001 0 0 1 0 -1.1094l2-3a1.0001 1.0001 0 0 1 1.8398 0.5449z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_h_separator.png b/editor/icons/icon_h_separator.png
deleted file mode 100644
index 8ab1348c3b..0000000000
--- a/editor/icons/icon_h_separator.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_separator.svg b/editor/icons/icon_h_separator.svg
new file mode 100644
index 0000000000..34689555b3
--- /dev/null
+++ b/editor/icons/icon_h_separator.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<rect x="5" y="1038.4" width="6" height="3"/>
+<rect transform="matrix(0,-1,-1,0,0,0)" x="-1045.4" y="-15" width="2" height="14"/>
+<rect x="5" y="1047.4" width="6" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_h_slider.png b/editor/icons/icon_h_slider.png
deleted file mode 100644
index 156364e920..0000000000
--- a/editor/icons/icon_h_slider.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_slider.svg b/editor/icons/icon_h_slider.svg
new file mode 100644
index 0000000000..ecfb84ebeb
--- /dev/null
+++ b/editor/icons/icon_h_slider.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 3c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1s1-0.44772 1-1v-2c0-0.55228-0.44772-1-1-1zm12 0c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1s1-0.44772 1-1v-2c0-0.55228-0.44772-1-1-1zm-6 1c-0.55228 0-1 0.44772-1 1s0.44772 1 1 1 1-0.44772 1-1-0.44772-1-1-1zm5 5c-1.1046 0-2 0.89543-2 2 0 1.1046 0.89543 2 2 2 1.0099-3.37e-4 1.8611-0.75351 1.9844-1.7559 0.04003-0.16104 0.03936-0.32952-2e-3 -0.49024-0.12404-1.0008-0.97388-1.7527-1.9824-1.7539zm-11 1c-1.3523-0.019125-1.3523 2.0191 0 2h7.1309c-0.085635-0.32648-0.1296-0.66248-0.13086-1 0.00189-0.3376 0.046518-0.67361 0.13281-1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#a5efac" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_h_split_container.png b/editor/icons/icon_h_split_container.png
deleted file mode 100644
index 65ef8655dd..0000000000
--- a/editor/icons/icon_h_split_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_split_container.svg b/editor/icons/icon_h_split_container.svg
new file mode 100644
index 0000000000..9985fcccfe
--- /dev/null
+++ b/editor/icons/icon_h_split_container.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<rect x="7" y="1039.4" width="2" height="10"/>
+<path d="m9 1042.4v4l2-2z"/>
+<path d="m7 1042.4-2 2 2 2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_h_t_t_p_request.png b/editor/icons/icon_h_t_t_p_request.png
deleted file mode 100644
index 60c6845b33..0000000000
--- a/editor/icons/icon_h_t_t_p_request.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_h_t_t_p_request.svg b/editor/icons/icon_h_t_t_p_request.svg
new file mode 100644
index 0000000000..27812cdd68
--- /dev/null
+++ b/editor/icons/icon_h_t_t_p_request.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m1 10v2 1 2h1v-2h1v2h1v-5h-1v2h-1v-2h-1zm4 0v1h1v4h1v-4h1v-1h-3zm4 0v1h1v4h1v-4h1v-1h-3zm4 0v2 1 2h1v-2h1 1v-1-2h-2-1zm1 1h1v1h-1v-1z"/>
+<path transform="translate(0 1036.4)" d="m4 1l-3 4h2v3h2v-3h2l-3-4zm7 0v3h-2l3 4 3-4h-2v-3h-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_headphones.png b/editor/icons/icon_headphones.png
deleted file mode 100644
index 83309d91d5..0000000000
--- a/editor/icons/icon_headphones.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_headphones.svg b/editor/icons/icon_headphones.svg
new file mode 100644
index 0000000000..e23a6c54f0
--- /dev/null
+++ b/editor/icons/icon_headphones.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m1 1046.4v3h2v2h2v-5h-4z"/>
+<path d="m11 1046.4v5h2v-2h2v-3h-4z"/>
+<path d="m8 1037.4a7 7 0 0 0 -7 7h2a5 5 0 0 1 5 -5 5 5 0 0 1 5 5h2a7 7 0 0 0 -7 -7z"/>
+<rect x="1" y="1044.4" width="2" height="2"/>
+<rect x="13" y="1044.4" width="2" height="2"/>
+<circle cx="3" cy="1049.4" r="2"/>
+<circle transform="scale(-1,1)" cx="-13" cy="1049.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_help.png b/editor/icons/icon_help.png
deleted file mode 100644
index d70807000e..0000000000
--- a/editor/icons/icon_help.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_help.svg b/editor/icons/icon_help.svg
new file mode 100644
index 0000000000..c149b2a0a7
--- /dev/null
+++ b/editor/icons/icon_help.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5.0293 1c-0.99969-0.010925-2.0096 0.31165-3.0293 1v7c2.0172-1.3529 4.0167-1.3136 6 0 1.9833-1.3136 3.9828-1.3529 6 0v-7c-1.0197-0.68835-2.0296-1.0109-3.0293-1-0.6613 0.007227-1.3175 0.1735-1.9707 0.46289v4.5371h-1v-4c-0.98156-0.64465-1.971-0.98908-2.9707-1zm-5.0293 9v6h2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3h-2zm5 3a3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3 3 3 0 0 0 -3 3zm6 0a3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h1v-2h-1a3 3 0 0 0 -3 3zm-9-1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#e0e0e0" fill-opacity=".58824" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_help_search.png b/editor/icons/icon_help_search.png
deleted file mode 100644
index 7a1506853e..0000000000
--- a/editor/icons/icon_help_search.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_help_search.svg b/editor/icons/icon_help_search.svg
new file mode 100644
index 0000000000..c0768ea5ed
--- /dev/null
+++ b/editor/icons/icon_help_search.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" stroke-width="2">
+<path transform="translate(0 1036.4)" d="m0 10v6h2c1.6569 0 3-1.3431 3-3s-1.3431-3-3-3zm5 3c0 1.6569 1.3431 3 3 3s3-1.3431 3-3-1.3431-3-3-3-3 1.3431-3 3zm6 0c0 1.6569 1.3431 3 3 3h1v-2h-1c-0.55228-1e-5 -0.99999-0.44772-1-1 1e-5 -0.55228 0.44772-0.99999 1-1h1v-2h-1c-1.6569 0-3 1.3431-3 3zm-9-1c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1zm6 0c0.55228 1e-5 0.99999 0.44772 1 1-9.6e-6 0.55228-0.44772 0.99999-1 1-0.55228-1e-5 -0.99999-0.44772-1-1 9.6e-6 -0.55228 0.44772-0.99999 1-1z" fill="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549"/>
+<path d="m9 1036.4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-opacity=".32549"/>
+<path d="m7 1042.4-3 3" fill="none" stroke="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_hidden.png b/editor/icons/icon_hidden.png
deleted file mode 100644
index ef3039f580..0000000000
--- a/editor/icons/icon_hidden.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_hidden.svg b/editor/icons/icon_hidden.svg
new file mode 100644
index 0000000000..8328156e76
--- /dev/null
+++ b/editor/icons/icon_hidden.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2.9609 7.7266l-1.9219 0.54883c0.31999 1.12 0.8236 2.0593 1.4316 2.8398l-0.83398 0.83398 1.4141 1.4141 0.84375-0.84375c0.98585 0.74762 2.0766 1.2067 3.1055 1.3867v1.0938h2v-1.0938c1.0288-0.17998 2.1196-0.6391 3.1055-1.3867l0.84375 0.84375 1.4141-1.4141-0.83398-0.83398c0.60804-0.78055 1.1117-1.7199 1.4316-2.8398l-1.9219-0.54883c-0.8756 3.0646-3.5391 4.2734-5.0391 4.2734s-4.1635-1.2088-5.0391-4.2734z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_hinge_joint.png b/editor/icons/icon_hinge_joint.png
deleted file mode 100644
index 246ca1ba42..0000000000
--- a/editor/icons/icon_hinge_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_hinge_joint.svg b/editor/icons/icon_hinge_joint.svg
new file mode 100644
index 0000000000..900786aa4c
--- /dev/null
+++ b/editor/icons/icon_hinge_joint.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.2832 1.3281a1.0001 1.0001 0 0 0 -0.88086 0.51172l-3.6895 6.3906c0.40599-0.13877 0.83411-0.23047 1.2871-0.23047 0.37043 0 0.72206 0.067873 1.0625 0.16211l3.0723-5.3223a1.0001 1.0001 0 0 0 -0.85156 -1.5117zm-3.2832 7.6719a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h10a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-7.1738a3 3 0 0 0 0.17383 -1 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_history.png b/editor/icons/icon_history.png
deleted file mode 100644
index 4782918233..0000000000
--- a/editor/icons/icon_history.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_history.svg b/editor/icons/icon_history.svg
new file mode 100644
index 0000000000..7194206154
--- /dev/null
+++ b/editor/icons/icon_history.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m9 2a6 6 0 0 0 -6 6h2a4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -4 4v2a6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z"/>
+<path transform="matrix(0 -1.1926 1.5492 0 -1617 1049.3)" d="m4.118 1048.3-1.6771-0.9683-1.6771-0.9682 1.6771-0.9683 1.6771-0.9682-1e-7 1.9365z"/>
+<rect x="8" y="1041.4" width="2" height="4"/>
+<rect x="8" y="1043.4" width="4" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_hsize.png b/editor/icons/icon_hsize.png
deleted file mode 100644
index 7be48946b4..0000000000
--- a/editor/icons/icon_hsize.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_hsize.svg b/editor/icons/icon_hsize.svg
new file mode 100644
index 0000000000..a004cb529a
--- /dev/null
+++ b/editor/icons/icon_hsize.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 7v-2l-3 3 3 3v-2h8v2l3-3-3-3v2z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_hslider_bg.png b/editor/icons/icon_hslider_bg.png
deleted file mode 100644
index e3c61f25e0..0000000000
--- a/editor/icons/icon_hslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_hsplit_bg.png b/editor/icons/icon_hsplit_bg.png
deleted file mode 100644
index cfb76f7dc7..0000000000
--- a/editor/icons/icon_hsplit_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_hsplitter.png b/editor/icons/icon_hsplitter.png
deleted file mode 100644
index 3ac1dddf90..0000000000
--- a/editor/icons/icon_hsplitter.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_iapi.png b/editor/icons/icon_iapi.png
deleted file mode 100644
index dc2639da83..0000000000
--- a/editor/icons/icon_iapi.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_image.png b/editor/icons/icon_image.png
deleted file mode 100644
index ddfabace25..0000000000
--- a/editor/icons/icon_image.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_image.svg b/editor/icons/icon_image.svg
new file mode 100644
index 0000000000..b427ed5577
--- /dev/null
+++ b/editor/icons/icon_image.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-12a1 1 0 0 0 -1 -1h-12zm1 2h10v8h-10v-8zm6 2l-1.5 2.5-0.70117 1.168-0.099609-0.16797-0.89844-1.5-0.90039 1.5-0.90039 1.5h1.8008 0.19922 1.5996 1.4004 3l-1.5-2.5-1.5-2.5z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_image_sky_box.png b/editor/icons/icon_image_sky_box.png
deleted file mode 100644
index cf80258577..0000000000
--- a/editor/icons/icon_image_sky_box.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_image_texture.png b/editor/icons/icon_image_texture.png
deleted file mode 100644
index 7c4493395e..0000000000
--- a/editor/icons/icon_image_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_image_texture.svg b/editor/icons/icon_image_texture.svg
new file mode 100644
index 0000000000..59516a244c
--- /dev/null
+++ b/editor/icons/icon_image_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-12a1 1 0 0 0 -1 -1h-12zm1 2h10v8h-10v-8zm6 2v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-2h-1v-1h-1z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_immediate_geometry.png b/editor/icons/icon_immediate_geometry.png
deleted file mode 100644
index 1ff9976921..0000000000
--- a/editor/icons/icon_immediate_geometry.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_immediate_geometry.svg b/editor/icons/icon_immediate_geometry.svg
new file mode 100644
index 0000000000..f6d253d865
--- /dev/null
+++ b/editor/icons/icon_immediate_geometry.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2.9208 1046.4c-0.26373 0.3-0.4204 0.7296-0.4204 1.2383 0 1.6277-3.1381-0.1781-0.33757 2.6703 0.88382 0.899 2.6544 0.6701 3.5382-0.2288 0.88384-0.899 0.88382-2.3565 0-3.2554-1.1002-1.1191-2.2001-1.0845-2.7803-0.4244zm2.3802-1.6103 2.4005 2.4416 6.8014-6.9177c0.66286-0.6742 0.66286-1.7673 0-2.4415-0.66288-0.6741-1.7376-0.6741-2.4005 0z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_import_check.png b/editor/icons/icon_import_check.png
deleted file mode 100644
index e72a30603d..0000000000
--- a/editor/icons/icon_import_check.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_import_check.svg b/editor/icons/icon_import_check.svg
new file mode 100644
index 0000000000..e3ad9ec37e
--- /dev/null
+++ b/editor/icons/icon_import_check.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1044.4 4 4 8-8" fill="none" stroke="#84ffb1" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_import_fail.png b/editor/icons/icon_import_fail.png
deleted file mode 100644
index f7dd6fd79a..0000000000
--- a/editor/icons/icon_import_fail.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_import_fail.svg b/editor/icons/icon_import_fail.svg
new file mode 100644
index 0000000000..e088126043
--- /dev/null
+++ b/editor/icons/icon_import_fail.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2.9902 1.9902a1.0001 1.0001 0 0 0 -0.69727 1.7168l4.293 4.293-4.293 4.293a1.0001 1.0001 0 1 0 1.4141 1.4141l4.293-4.293 4.293 4.293a1.0001 1.0001 0 1 0 1.4141 -1.4141l-4.293-4.293 4.293-4.293a1.0001 1.0001 0 0 0 -0.72656 -1.7148 1.0001 1.0001 0 0 0 -0.6875 0.30078l-4.293 4.293-4.293-4.293a1.0001 1.0001 0 0 0 -0.7168 -0.30273z" color="#000000" color-rendering="auto" fill="#ff8484" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_influence_zone.png b/editor/icons/icon_influence_zone.png
deleted file mode 100644
index 6d687735e9..0000000000
--- a/editor/icons/icon_influence_zone.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_instance.png b/editor/icons/icon_instance.png
deleted file mode 100644
index 51859a0425..0000000000
--- a/editor/icons/icon_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_instance.svg b/editor/icons/icon_instance.svg
new file mode 100644
index 0000000000..8fecb9696a
--- /dev/null
+++ b/editor/icons/icon_instance.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m5 1047.4 6-6" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+<path transform="translate(0 1036.4)" d="m11 1c-2.1973 0-4 1.8027-4 4 0 0.35477 0.062329 0.69321 0.15039 1.0215l2.3945-2.3945c0.36302-0.38506 0.87563-0.62695 1.4551-0.62695 1.1164 0 2 0.8836 2 2 0 0.57388-0.23667 1.0829-0.61523 1.4453l-2.4043 2.4043c0.32773 0.087749 0.66541 0.15039 1.0195 0.15039 2.1973 0 4-1.8027 4-4s-1.8027-4-4-4zm-6 6c-2.1973 0-4 1.8027-4 4s1.8027 4 4 4 4-1.8027 4-4c0-0.35412-0.062641-0.6918-0.15039-1.0195l-2.4043 2.4043c-0.36245 0.37857-0.87143 0.61523-1.4453 0.61523-1.1164 0-2-0.8836-2-2 0-0.57944 0.24189-1.0921 0.62695-1.4551l2.3945-2.3945c-0.32827-0.088062-0.66671-0.15039-1.0215-0.15039z" color="#000000" color-rendering="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_instance_options.png b/editor/icons/icon_instance_options.png
deleted file mode 100644
index ce6810ad27..0000000000
--- a/editor/icons/icon_instance_options.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_instance_options.svg b/editor/icons/icon_instance_options.svg
new file mode 100644
index 0000000000..b15276c997
--- /dev/null
+++ b/editor/icons/icon_instance_options.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m1 7v6c0 1.1046 0.89543 2 2 2h12v-8h-14zm4 2h6l-3 4-3-4z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_integer.png b/editor/icons/icon_integer.png
deleted file mode 100644
index 583b9bda0b..0000000000
--- a/editor/icons/icon_integer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_integer.svg b/editor/icons/icon_integer.svg
new file mode 100644
index 0000000000..bcd952f635
--- /dev/null
+++ b/editor/icons/icon_integer.svg
@@ -0,0 +1,7 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<rect x="6" y="1040.4" width="2" height="10"/>
+<rect x="4" y="1039.4" width="6" height="2"/>
+<rect x="4" y="1049.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_interp_cubic.png b/editor/icons/icon_interp_cubic.png
deleted file mode 100644
index c723f7b648..0000000000
--- a/editor/icons/icon_interp_cubic.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_interp_cubic.svg b/editor/icons/icon_interp_cubic.svg
new file mode 100644
index 0000000000..d949ae7e74
--- /dev/null
+++ b/editor/icons/icon_interp_cubic.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4c3 0 3-4 6-4s3 4 6 4" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_interp_linear.png b/editor/icons/icon_interp_linear.png
deleted file mode 100644
index 9d130b4507..0000000000
--- a/editor/icons/icon_interp_linear.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_interp_linear.svg b/editor/icons/icon_interp_linear.svg
new file mode 100644
index 0000000000..00b5e326a0
--- /dev/null
+++ b/editor/icons/icon_interp_linear.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4 6-4 6 4" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_interp_raw.png b/editor/icons/icon_interp_raw.png
deleted file mode 100644
index 93ade1d674..0000000000
--- a/editor/icons/icon_interp_raw.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_interp_raw.svg b/editor/icons/icon_interp_raw.svg
new file mode 100644
index 0000000000..140ff2b0ff
--- /dev/null
+++ b/editor/icons/icon_interp_raw.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4h3v-4h6v4h3" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_interp_wrap_clamp.png b/editor/icons/icon_interp_wrap_clamp.png
deleted file mode 100644
index 1024bd7d29..0000000000
--- a/editor/icons/icon_interp_wrap_clamp.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_interp_wrap_clamp.svg b/editor/icons/icon_interp_wrap_clamp.svg
new file mode 100644
index 0000000000..d49a450d2e
--- /dev/null
+++ b/editor/icons/icon_interp_wrap_clamp.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect x="1" y="1045.4" width="2" height="6" rx="1.7383e-5" ry="1.7383e-5" fill="#e0e0e0"/>
+<rect x="13" y="1045.4" width="2" height="6" rx="1.7383e-5" ry="1.7383e-5" fill="#e0e0e0"/>
+<path d="m5 1048.4h6" fill="none" stroke="#e0e0e0" stroke-width="2"/>
+<path d="m6 1046.4-2 2 2 2" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m10 1046.4 2 2-2 2" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_interp_wrap_loop.png b/editor/icons/icon_interp_wrap_loop.png
deleted file mode 100644
index 3a7ddacdb2..0000000000
--- a/editor/icons/icon_interp_wrap_loop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_interp_wrap_loop.svg b/editor/icons/icon_interp_wrap_loop.svg
new file mode 100644
index 0000000000..85d17cb50d
--- /dev/null
+++ b/editor/icons/icon_interp_wrap_loop.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)" fill="#e0e0e0">
+<path transform="translate(0 1044.4)" d="m12 1v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3z"/>
+<path transform="translate(0 1044.4)" d="m4 1a3 3 0 0 0 -3 3 3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1v-2z"/>
+<rect x="9" y="1045.4" width="3" height="2" rx="6.5185e-6" ry="1.7383e-5"/>
+<rect x="4" y="1049.4" width="3" height="2" rx="6.5185e-6" ry="1.7383e-5"/>
+<path d="m7 1048.4v4l3-2z" fill-rule="evenodd"/>
+<path d="m9 1044.4v4l-3-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_interpolated_camera.png b/editor/icons/icon_interpolated_camera.png
deleted file mode 100644
index c66724f513..0000000000
--- a/editor/icons/icon_interpolated_camera.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_interpolated_camera.svg b/editor/icons/icon_interpolated_camera.svg
new file mode 100644
index 0000000000..7a33c64ca2
--- /dev/null
+++ b/editor/icons/icon_interpolated_camera.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 0a3 3 0 0 0 -2.9883 2.7773 3 3 0 0 0 -2.0117 -0.77734 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8242v2.1758c0 0.554 0.44599 1 1 1h6c0.55401 0 1-0.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1 -2.2305 3 3 0 0 0 -3 -3zm-6 12v4h1v-4h-1zm3 0v4h1v-1h1a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1-1zm5 0a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h1a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-1zm-4 1h1v1h-1v-1zm4 0h1v2h-1v-2z" fill="#fc9c9c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_invalid_key.png b/editor/icons/icon_invalid_key.png
deleted file mode 100644
index 8ebc6d6add..0000000000
--- a/editor/icons/icon_invalid_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_invalid_key.svg b/editor/icons/icon_invalid_key.svg
new file mode 100644
index 0000000000..f1df51f7c3
--- /dev/null
+++ b/editor/icons/icon_invalid_key.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m0.46447 1046.2 2.1213 2.1213-2.1213 2.1213 1.4142 1.4142l2.1213-2.1213 2.1213 2.1213 1.4142-1.4142-2.1213-2.1213 2.1213-2.1213-1.4142-1.4142-2.1213 2.1213-2.1213-2.1213-1.4142 1.4142z" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_inverse_kinematics.png b/editor/icons/icon_inverse_kinematics.png
deleted file mode 100644
index dd404765d3..0000000000
--- a/editor/icons/icon_inverse_kinematics.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_inverse_kinematics.svg b/editor/icons/icon_inverse_kinematics.svg
new file mode 100644
index 0000000000..fa99b6c7cc
--- /dev/null
+++ b/editor/icons/icon_inverse_kinematics.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1039.4v12" fill="none" stroke="#fc9c9c" stroke-width="2"/>
+<circle cx="3" cy="1039.4" r="2" fill="#fc9c9c"/>
+<path d="m10 1039.4h-7" fill="#fc9c9c" fill-rule="evenodd" stroke="#fc9c9c" stroke-width="2"/>
+<circle cx="11" cy="1039.4" r="2" fill="#fc9c9c"/>
+<rect x="8" y="1044.4" width="6" height="2" fill="#fc9c9c"/>
+<path d="m11 1039.4v6" fill="none" stroke="#fc9c9c" stroke-width="2"/>
+<path d="m10 1046.4v4l-3-2 1-2z" fill="#fc9c9c" fill-rule="evenodd"/>
+<path d="m12 1046.4v4l3-2-1-2z" fill="#fc9c9c" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_item_list.png b/editor/icons/icon_item_list.png
deleted file mode 100644
index 3f5245d520..0000000000
--- a/editor/icons/icon_item_list.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_item_list.svg b/editor/icons/icon_item_list.svg
new file mode 100644
index 0000000000..e01c4cd098
--- /dev/null
+++ b/editor/icons/icon_item_list.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<rect x="4" y="1040.4" width="2" height="2"/>
+<rect x="7" y="1040.4" width="2" height="2"/>
+<rect x="10" y="1040.4" width="2" height="2"/>
+<rect x="4" y="1043.4" width="2" height="2"/>
+<rect x="7" y="1043.4" width="2" height="2"/>
+<rect x="10" y="1043.4" width="2" height="2"/>
+<rect x="4" y="1046.4" width="2" height="2"/>
+<rect x="7" y="1046.4" width="2" height="2"/>
+<rect x="10" y="1046.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_joy_axis.png b/editor/icons/icon_joy_axis.png
deleted file mode 100644
index 8b1affd052..0000000000
--- a/editor/icons/icon_joy_axis.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_joy_axis.svg b/editor/icons/icon_joy_axis.svg
new file mode 100644
index 0000000000..8d9e3e01d8
--- /dev/null
+++ b/editor/icons/icon_joy_axis.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="27" y="1038.4" width="7" height="14" fill="#fff" fill-opacity=".99608"/>
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h12v-14h-12zm4 2h2a1 1 0 0 1 1 1v2h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-2h-2a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1h2v-2a1 1 0 0 1 1 -1z" fill="#e0e0e0" fill-opacity=".99608"/>
+<circle cx="8" cy="1044.4" r="1" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_joy_button.png b/editor/icons/icon_joy_button.png
deleted file mode 100644
index 150102b209..0000000000
--- a/editor/icons/icon_joy_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_joy_button.svg b/editor/icons/icon_joy_button.svg
new file mode 100644
index 0000000000..98cf48e70d
--- /dev/null
+++ b/editor/icons/icon_joy_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".99608">
+<rect x="27" y="1038.4" width="7" height="14" fill="#fff"/>
+<path transform="translate(0 1036.4)" d="m1 1v14h12c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-12zm7 1a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-4 4a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm8 0a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-4 4a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_joypad.png b/editor/icons/icon_joypad.png
deleted file mode 100644
index 5df471109a..0000000000
--- a/editor/icons/icon_joypad.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_joypad.svg b/editor/icons/icon_joypad.svg
new file mode 100644
index 0000000000..bde84bd399
--- /dev/null
+++ b/editor/icons/icon_joypad.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 3c-0.55226 5.52e-5 -0.99994 0.44774-1 1v8c5.52e-5 0.55226 0.44774 0.99994 1 1h14c0.55226-5.5e-5 0.99994-0.44774 1-1v-8c-5.5e-5 -0.55226-0.44774-0.99994-1-1h-14zm2 2h2v2h2v2h-2v2h-2v-2h-2v-2h2v-2zm10.5 0a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1 -1.5 1.5 1.5 1.5 0 0 1 -1.5 -1.5 1.5 1.5 0 0 1 1.5 -1.5zm-3 3a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1 -1.5 1.5 1.5 1.5 0 0 1 -1.5 -1.5 1.5 1.5 0 0 1 1.5 -1.5z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_key.png b/editor/icons/icon_key.png
deleted file mode 100644
index 564b474331..0000000000
--- a/editor/icons/icon_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key.svg b/editor/icons/icon_key.svg
new file mode 100644
index 0000000000..041b820e00
--- /dev/null
+++ b/editor/icons/icon_key.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m11 4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z"/>
+<rect x="1" y="1043.4" width="8" height="2"/>
+<rect x="2" y="1045.4" width="3" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_key_call.png b/editor/icons/icon_key_call.png
deleted file mode 100644
index 044662eb92..0000000000
--- a/editor/icons/icon_key_call.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_hover.png b/editor/icons/icon_key_hover.png
deleted file mode 100644
index c8e59f0e87..0000000000
--- a/editor/icons/icon_key_hover.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_hover.svg b/editor/icons/icon_key_hover.svg
new file mode 100644
index 0000000000..4a3fab4754
--- /dev/null
+++ b/editor/icons/icon_key_hover.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_key_invalid.png b/editor/icons/icon_key_invalid.png
deleted file mode 100644
index 8ebc6d6add..0000000000
--- a/editor/icons/icon_key_invalid.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_invalid.svg b/editor/icons/icon_key_invalid.svg
new file mode 100644
index 0000000000..f1df51f7c3
--- /dev/null
+++ b/editor/icons/icon_key_invalid.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m0.46447 1046.2 2.1213 2.1213-2.1213 2.1213 1.4142 1.4142l2.1213-2.1213 2.1213 2.1213 1.4142-1.4142-2.1213-2.1213 2.1213-2.1213-1.4142-1.4142-2.1213 2.1213-2.1213-2.1213-1.4142 1.4142z" fill="#ff8484"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_key_invalid_hover.png b/editor/icons/icon_key_invalid_hover.png
deleted file mode 100644
index 6f0396d96a..0000000000
--- a/editor/icons/icon_key_invalid_hover.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_next.png b/editor/icons/icon_key_next.png
deleted file mode 100644
index 288161d245..0000000000
--- a/editor/icons/icon_key_next.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_next.svg b/editor/icons/icon_key_next.svg
new file mode 100644
index 0000000000..7fb221f96d
--- /dev/null
+++ b/editor/icons/icon_key_next.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m11 9v2h-2v2h2v2h2v-2h2v-2h-2v-2h-2z" fill="#84ffb1"/>
+<path transform="translate(0 1036.4)" d="m11 1a4 4 0 0 0 -3.8691 3h-6.1309v2h1v2h3v-2h2.1328a4 4 0 0 0 2.8672 2.8691v-0.86914h3.6387a4 4 0 0 0 1.3613 -3 4 4 0 0 0 -4 -4zm0 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_key_selected.png b/editor/icons/icon_key_selected.png
deleted file mode 100644
index e5f802db1c..0000000000
--- a/editor/icons/icon_key_selected.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_selected.svg b/editor/icons/icon_key_selected.svg
new file mode 100644
index 0000000000..c73d31981d
--- /dev/null
+++ b/editor/icons/icon_key_selected.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#84c2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_key_value.png b/editor/icons/icon_key_value.png
deleted file mode 100644
index 1fa007f9e2..0000000000
--- a/editor/icons/icon_key_value.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_value.svg b/editor/icons/icon_key_value.svg
new file mode 100644
index 0000000000..61032a1e16
--- /dev/null
+++ b/editor/icons/icon_key_value.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_key_xform.png b/editor/icons/icon_key_xform.png
deleted file mode 100644
index bd87611d7a..0000000000
--- a/editor/icons/icon_key_xform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_key_xform.svg b/editor/icons/icon_key_xform.svg
new file mode 100644
index 0000000000..7b73715771
--- /dev/null
+++ b/editor/icons/icon_key_xform.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect transform="rotate(-45)" x="-741.53" y="741.08" width="6.1027" height="6.1027" ry=".76286" fill="#ea686c"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_keyboard.png b/editor/icons/icon_keyboard.png
deleted file mode 100644
index a275345577..0000000000
--- a/editor/icons/icon_keyboard.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_keyboard.svg b/editor/icons/icon_keyboard.svg
new file mode 100644
index 0000000000..ce98e47ab4
--- /dev/null
+++ b/editor/icons/icon_keyboard.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m1 4v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-1v9a0.99998 0.99998 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-9h-1z" fill="#e0e0e0"/>
+<rect x="27" y="1038.4" width="7" height="14" fill="#fff"/>
+<path transform="translate(0 1036.4)" d="m4 2a1 1 0 0 0 -1 1v9.084a1 0.91667 0 0 0 1 0.91602h8a1 0.91667 0 0 0 1 -0.91602v-9.084a1 1 0 0 0 -1 -1h-8zm1 2h2v3l2-3h2l-2 3 2 4h-2l-2-4v4h-2v-7z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_keying.png b/editor/icons/icon_keying.png
deleted file mode 100644
index de790a4f09..0000000000
--- a/editor/icons/icon_keying.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_kinematic_body.png b/editor/icons/icon_kinematic_body.png
deleted file mode 100644
index 19a401dbf8..0000000000
--- a/editor/icons/icon_kinematic_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_kinematic_body.svg b/editor/icons/icon_kinematic_body.svg
new file mode 100644
index 0000000000..393e21a529
--- /dev/null
+++ b/editor/icons/icon_kinematic_body.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 4v1h1v-1h-1zm1 1v1h-1v1h-1v1h-1v1 2h1v-2h1v1 1h1v-1h5v1h1v-2h1v2h1v-2-1h-1v-1h-1v-1h-1v-1h-1v1h-3v-1h-1zm5 0h1v-1h-1v1zm0 6h-2v1h2v-1zm-5 0v1h2v-1h-2zm0-4h1v1h-1v-1zm4 0h1v1h-1v-1z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_kinematic_body_2d.png b/editor/icons/icon_kinematic_body_2d.png
deleted file mode 100644
index 2f9d834805..0000000000
--- a/editor/icons/icon_kinematic_body_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_kinematic_body_2d.svg b/editor/icons/icon_kinematic_body_2d.svg
new file mode 100644
index 0000000000..e269efd12a
--- /dev/null
+++ b/editor/icons/icon_kinematic_body_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 4v1h1v-1h-1zm1 1v1h-1v1h-1v1h-1v1 2h1v-2h1v1 1h1v-1h5v1h1v-2h1v2h1v-2-1h-1v-1h-1v-1h-1v-1h-1v1h-3v-1h-1zm5 0h1v-1h-1v1zm0 6h-2v1h2v-1zm-5 0v1h2v-1h-2zm0-4h1v1h-1v-1zm4 0h1v1h-1v-1z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_label.png b/editor/icons/icon_label.png
deleted file mode 100644
index 16919a5fef..0000000000
--- a/editor/icons/icon_label.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_label.svg b/editor/icons/icon_label.svg
new file mode 100644
index 0000000000..2ca7febb54
--- /dev/null
+++ b/editor/icons/icon_label.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 3a1.0001 1.0001 0 0 0 -0.70703 0.29297l-4 4a1.0001 1.0001 0 0 0 0 1.4141l4 4a1.0001 1.0001 0 0 0 0.70703 0.29297h8a1.0001 1.0001 0 0 0 1 -1v-8a1.0001 1.0001 0 0 0 -1 -1h-8zm-1 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" color="#000000" color-rendering="auto" fill="#a5efac" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_large_texture.png b/editor/icons/icon_large_texture.png
deleted file mode 100644
index 1727e2409f..0000000000
--- a/editor/icons/icon_large_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_large_texture.svg b/editor/icons/icon_large_texture.svg
new file mode 100644
index 0000000000..b68b27cfb4
--- /dev/null
+++ b/editor/icons/icon_large_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v1 2h1v-2h2v-1h-3zm11 0v1h2v2h1v-3h-3zm-3 5v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-1-1h-1v-1h-1zm-8 6v2 1h3v-1h-2v-2h-1zm13 0v2h-2v1h3v-1-2h-1z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_light_2d.png b/editor/icons/icon_light_2d.png
deleted file mode 100644
index ebab16c1b1..0000000000
--- a/editor/icons/icon_light_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_light_2d.svg b/editor/icons/icon_light_2d.svg
new file mode 100644
index 0000000000..6e680ddef2
--- /dev/null
+++ b/editor/icons/icon_light_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a5 5 0 0 0 -5 5 5 5 0 0 0 3 4.5762v2.4238h4v-2.4199a5 5 0 0 0 3 -4.5801 5 5 0 0 0 -5 -5zm0 2a3 3 0 0 1 3 3 3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3zm-1 11v1h2v-1h-2z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_light_map.png b/editor/icons/icon_light_map.png
deleted file mode 100644
index e0333f06ea..0000000000
--- a/editor/icons/icon_light_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_light_occluder_2d.png b/editor/icons/icon_light_occluder_2d.png
deleted file mode 100644
index ceefbcbe2a..0000000000
--- a/editor/icons/icon_light_occluder_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_light_occluder_2d.svg b/editor/icons/icon_light_occluder_2d.svg
new file mode 100644
index 0000000000..f7eb588e74
--- /dev/null
+++ b/editor/icons/icon_light_occluder_2d.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5b7f3" fill-opacity=".98824">
+<rect x="1" y="1039.4" width="14" height="2"/>
+<rect x="1" y="1042.4" width="14" height="2"/>
+<rect x="1" y="1045.4" width="14" height="2"/>
+<rect x="1" y="1048.4" width="14" height="2"/>
+<rect x="2" y="1037.4" width="1" height="14"/>
+<rect x="13" y="1037.4" width="1" height="14"/>
+<rect x="1" y="1037.4" width="14" height=".99998"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_lightr.png b/editor/icons/icon_lightr.png
deleted file mode 100644
index 6de8c8de3f..0000000000
--- a/editor/icons/icon_lightr.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_line_2d.png b/editor/icons/icon_line_2d.png
deleted file mode 100644
index 8d2b176335..0000000000
--- a/editor/icons/icon_line_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_line_2d.svg b/editor/icons/icon_line_2d.svg
new file mode 100644
index 0000000000..ca9184e979
--- /dev/null
+++ b/editor/icons/icon_line_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1045.4 3 4 3-10 3 6 3-2" fill="none" stroke="#a5b7f3" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_line_edit.png b/editor/icons/icon_line_edit.png
deleted file mode 100644
index 813642f25e..0000000000
--- a/editor/icons/icon_line_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_line_edit.svg b/editor/icons/icon_line_edit.svg
new file mode 100644
index 0000000000..209f0e1940
--- /dev/null
+++ b/editor/icons/icon_line_edit.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m1 11c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2h-2-10-2z"/>
+<rect x="2" y="1040.4" width="2" height="5"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_line_shape_2d.png b/editor/icons/icon_line_shape_2d.png
deleted file mode 100644
index e31722d69c..0000000000
--- a/editor/icons/icon_line_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_line_shape_2d.svg b/editor/icons/icon_line_shape_2d.svg
new file mode 100644
index 0000000000..f6c036bb2e
--- /dev/null
+++ b/editor/icons/icon_line_shape_2d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" stroke="#68b6ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+<path d="m1 1037.4 14 14" fill="#68b6ff" fill-rule="evenodd" stroke-opacity=".39216"/>
+<path d="m3 1039.4 10 10" fill="none" stroke-opacity=".58824"/>
+<path d="m5 1041.4 6 6" fill="none"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_link_button.png b/editor/icons/icon_link_button.png
deleted file mode 100644
index 7febe3c19a..0000000000
--- a/editor/icons/icon_link_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_link_button.svg b/editor/icons/icon_link_button.svg
new file mode 100644
index 0000000000..f2fad1f259
--- /dev/null
+++ b/editor/icons/icon_link_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m6 7a0.99998 0.99998 0 0 0 -1 1 0.99998 0.99998 0 0 0 1 1h4a0.99998 0.99998 0 0 0 1 -1 0.99998 0.99998 0 0 0 -1 -1h-4z"/>
+<path transform="translate(0 1036.4)" d="m6 3a5 5 0 0 0 -4.3301 2.5 5 5 0 0 0 0 5 5 5 0 0 0 4.3301 2.5h1v-2h-1a3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3h1v-2h-1zm3 0v2h1a3 3 0 0 1 3 3 3 3 0 0 1 -3 3h-1v2h1a5 5 0 0 0 4.3301 -2.5 5 5 0 0 0 0 -5 5 5 0 0 0 -4.3301 -2.5h-1z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_list_select.png b/editor/icons/icon_list_select.png
deleted file mode 100644
index 9596d51e72..0000000000
--- a/editor/icons/icon_list_select.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_list_select.svg b/editor/icons/icon_list_select.svg
new file mode 100644
index 0000000000..a37a4830f3
--- /dev/null
+++ b/editor/icons/icon_list_select.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m1 1v14h8.2578l-0.82227-2h-5.4355v-2h4.6113l-0.82227-2h-3.7891v-2h3.8867a1.5002 1.5002 0 0 1 1.0977 -0.49805v-0.0019531a1.5002 1.5002 0 0 1 0.58594 0.11133l0.94531 0.38867h0.48438v0.19922l2 0.82227v-7.0215h-11zm2 2h7v2h-7v-2zm7.7559 7.7559l0.52344 1.2734a1.5002 1.5002 0 0 1 0.48047 -0.26953 1.5002 1.5002 0 0 1 0.24023 -0.43945v-0.050781l-1.2441-0.51367z" fill-opacity=".99608"/>
+<path d="m16 1047.7-8-3.291 3.291 8 0.9471-2.8201 1.8836 1.8835 0.9418-0.9418-1.8836-1.8835z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_listener.png b/editor/icons/icon_listener.png
deleted file mode 100644
index 3ce479e2fa..0000000000
--- a/editor/icons/icon_listener.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_listener.svg b/editor/icons/icon_listener.svg
new file mode 100644
index 0000000000..2b4b87e6d0
--- /dev/null
+++ b/editor/icons/icon_listener.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m13.928 1038.4-1.7383 1.0039a6 6 0 0 1 0.81055 2.9961 6 6 0 0 1 -0.80859 2.998l1.7363 1.002a8 8 0 0 0 0 -8z" fill="#fc9c9c"/>
+<rect x="3" y="1049.4" width="1" height="2" fill="#fc9c9c"/>
+<path transform="translate(0 1036.4)" d="m6 1a5 5 0 0 0 -5 5h2a3 3 0 0 1 3 -3 3 3 0 0 1 3 3h2a5 5 0 0 0 -5 -5z" fill="#fc9c9c"/>
+<path d="m10 1042.4c0 4-3 4-3 5 0 3-2 3-3 3" fill="none" stroke="#fc9c9c" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_live_debug.png b/editor/icons/icon_live_debug.png
deleted file mode 100644
index ad55646b9a..0000000000
--- a/editor/icons/icon_live_debug.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_load.png b/editor/icons/icon_load.png
deleted file mode 100644
index 81835efa25..0000000000
--- a/editor/icons/icon_load.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_load.svg b/editor/icons/icon_load.svg
new file mode 100644
index 0000000000..b564c1f656
--- /dev/null
+++ b/editor/icons/icon_load.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-1.1046 0-2 0.8954-2 2v9c0 1.1046 0.89543 2 2 2h9c1.1046 0 1.8184-0.91043 2-2l1-6c0.003977-0.18354-0.042648-0.3412-0.13477-0.5-0.17849-0.30916-0.50825-0.49972-0.86523-0.5h-8c-0.35698 2.824e-4 -0.68674 0.19084-0.86523 0.5-0.092118 0.1588-0.13874 0.3399-0.13477 0.52344l-1 5.9766c-0.091144 0.54473-0.44772 1-1 1s-1-0.4477-1-1v-9c0-0.5523 0.44772-1 1-1h2c0.55228 0 1 0.4477 1 1a1 1 0 0 0 0.29297 0.70703 1 1 0 0 0 0.70703 0.29297h4 1a1 1 0 0 0 -0.29297 -0.70703 1 1 0 0 0 -0.70703 -0.29297h-4c0-1.1046-0.89543-2-2-2h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_lock.png b/editor/icons/icon_lock.png
deleted file mode 100644
index a7059f5e7c..0000000000
--- a/editor/icons/icon_lock.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_lock.svg b/editor/icons/icon_lock.svg
new file mode 100644
index 0000000000..b0b0125648
--- /dev/null
+++ b/editor/icons/icon_lock.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m2 8v7h12v-7h-12zm5 2h2v3h-2v-3z"/>
+<path transform="translate(0 1036.4)" d="m8 1a5 5 0 0 0 -5 5h2a3 3 0 0 1 3 -3 3 3 0 0 1 3 3h2a5 5 0 0 0 -5 -5z"/>
+<rect x="3" y="1042.4" width="2" height="2"/>
+<rect x="11" y="1042.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_logo.png b/editor/icons/icon_logo.png
deleted file mode 100644
index aed94cb87a..0000000000
--- a/editor/icons/icon_logo.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_logo_small.png b/editor/icons/icon_logo_small.png
deleted file mode 100644
index 809cf18541..0000000000
--- a/editor/icons/icon_logo_small.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_loop.png b/editor/icons/icon_loop.png
deleted file mode 100644
index 91c3ad600e..0000000000
--- a/editor/icons/icon_loop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_loop.svg b/editor/icons/icon_loop.svg
new file mode 100644
index 0000000000..c5dbf44238
--- /dev/null
+++ b/editor/icons/icon_loop.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1v2h-2a5 5 0 0 0 -5 5 5 5 0 0 0 1.0039 2.9961l1.4355-1.4355a3 3 0 0 1 -0.43945 -1.5605 3 3 0 0 1 3 -3h2v2l2-1.5 2-1.5-2-1.5-2-1.5zm5.9961 4.0039l-1.4355 1.4355a3 3 0 0 1 0.43945 1.5605 3 3 0 0 1 -3 3h-2v-2l-2 1.5-2 1.5 2 1.5 2 1.5v-2h2a5 5 0 0 0 5 -5 5 5 0 0 0 -1.0039 -2.9961z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_loop_interpolation.png b/editor/icons/icon_loop_interpolation.png
deleted file mode 100644
index 488b33316e..0000000000
--- a/editor/icons/icon_loop_interpolation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_loop_interpolation.svg b/editor/icons/icon_loop_interpolation.svg
new file mode 100644
index 0000000000..ab2e564f78
--- /dev/null
+++ b/editor/icons/icon_loop_interpolation.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<circle cx="3" cy="1048.4" r="2"/>
+<path transform="translate(0 1036.4)" d="m4 3a2 2 0 0 0 -1.7324 1 2 2 0 0 0 -0.26562 1h-0.0019531v0.046875 6.9531h2v-5-2h2v-2h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m6 1037.4v6l4-3z" fill-rule="evenodd"/>
+<circle cx="13" cy="1040.4" r="2"/>
+<path transform="translate(0 1036.4)" d="m12 4v5 2h-2v2h2a2 2 0 0 0 1.7324 -1 2 2 0 0 0 0.26562 -1h0.001953v-7h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m10 1045.4v6l-4-3z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_main_play.png b/editor/icons/icon_main_play.png
deleted file mode 100644
index a72672f963..0000000000
--- a/editor/icons/icon_main_play.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_main_play.svg b/editor/icons/icon_main_play.svg
new file mode 100644
index 0000000000..7b96840a44
--- /dev/null
+++ b/editor/icons/icon_main_play.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m4 1048.4v-8l7 4z" fill="#e0e0e0" fill-rule="evenodd" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_main_stop.png b/editor/icons/icon_main_stop.png
deleted file mode 100644
index 58387519dc..0000000000
--- a/editor/icons/icon_main_stop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_margin_container.png b/editor/icons/icon_margin_container.png
deleted file mode 100644
index 57f0cec42e..0000000000
--- a/editor/icons/icon_margin_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_margin_container.svg b/editor/icons/icon_margin_container.svg
new file mode 100644
index 0000000000..8f33a1fe1b
--- /dev/null
+++ b/editor/icons/icon_margin_container.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<path d="m4 1042.4v4l2-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_cube.png b/editor/icons/icon_material_preview_cube.png
deleted file mode 100644
index f97c23b950..0000000000
--- a/editor/icons/icon_material_preview_cube.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_cube.svg b/editor/icons/icon_material_preview_cube.svg
new file mode 100644
index 0000000000..19d8c46fbe
--- /dev/null
+++ b/editor/icons/icon_material_preview_cube.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#d5d5d5"/>
+<path d="m1 1040.4 7 3 7-3-7-3z" fill="#fff"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fill="#e0e0e0"/>
+<path d="m8 1051.4 7-3v-8l-7 3z" fill="#d5d5d5"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_cube_off.png b/editor/icons/icon_material_preview_cube_off.png
deleted file mode 100644
index ad63218658..0000000000
--- a/editor/icons/icon_material_preview_cube_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_cube_off.svg b/editor/icons/icon_material_preview_cube_off.svg
new file mode 100644
index 0000000000..3c61794a56
--- /dev/null
+++ b/editor/icons/icon_material_preview_cube_off.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m8 1l-7 3v8l7 3 7-3v-8l-7-3z" fill="#d5d5d5"/>
+<path d="m1 1040.4 7 3 7-3-7-3z" fill="#fff"/>
+<path d="m8 1051.4-7-3v-8l7 3z" fill="#e0e0e0"/>
+<path d="m8 1051.4 7-3v-8l-7 3z" fill="#d5d5d5"/>
+<path d="m8 1037.4-7 3v8l7 3 7-3v-8l-7-3z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_light_1.png b/editor/icons/icon_material_preview_light_1.png
deleted file mode 100644
index 2a49a7530b..0000000000
--- a/editor/icons/icon_material_preview_light_1.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_light_1.svg b/editor/icons/icon_material_preview_light_1.svg
new file mode 100644
index 0000000000..ff70b1e5d4
--- /dev/null
+++ b/editor/icons/icon_material_preview_light_1.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v1 5h-1v-5h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_light_1_off.png b/editor/icons/icon_material_preview_light_1_off.png
deleted file mode 100644
index 738dd75594..0000000000
--- a/editor/icons/icon_material_preview_light_1_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_light_1_off.svg b/editor/icons/icon_material_preview_light_1_off.svg
new file mode 100644
index 0000000000..63a2094e67
--- /dev/null
+++ b/editor/icons/icon_material_preview_light_1_off.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v1 5h-1v-5h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_light_2.png b/editor/icons/icon_material_preview_light_2.png
deleted file mode 100644
index 7e43b4425e..0000000000
--- a/editor/icons/icon_material_preview_light_2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_light_2.svg b/editor/icons/icon_material_preview_light_2.svg
new file mode 100644
index 0000000000..7fdb9cccc6
--- /dev/null
+++ b/editor/icons/icon_material_preview_light_2.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v2 1h-2v1h2v1h-2-1v-2-1h2v-1h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_light_2_off.png b/editor/icons/icon_material_preview_light_2_off.png
deleted file mode 100644
index e2f0e345a9..0000000000
--- a/editor/icons/icon_material_preview_light_2_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_light_2_off.svg b/editor/icons/icon_material_preview_light_2_off.svg
new file mode 100644
index 0000000000..c614a1f62a
--- /dev/null
+++ b/editor/icons/icon_material_preview_light_2_off.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v2 1h-2v1h2v1h-2-1v-2-1h2v-1h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m7 1v2h2v-2h-2zm-3.2422 1.3438l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-4.2422 1.6562a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm-1 1h2v2 1h-2v1h2v1h-2-1v-2-1h2v-1h-1v-1zm-6 2v2h2v-2h-2zm12 0v2h2v-2h-2zm-9.2422 3.8281l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm8.4844 0l-1.4141 1.4141 1.4141 1.4141 1.4141-1.4141-1.4141-1.4141zm-5.2422 2.1719v2h2v-2h-2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_sphere.png b/editor/icons/icon_material_preview_sphere.png
deleted file mode 100644
index 80b06b39b7..0000000000
--- a/editor/icons/icon_material_preview_sphere.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_sphere.svg b/editor/icons/icon_material_preview_sphere.svg
new file mode 100644
index 0000000000..9b30d13544
--- /dev/null
+++ b/editor/icons/icon_material_preview_sphere.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-2 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_preview_sphere_off.png b/editor/icons/icon_material_preview_sphere_off.png
deleted file mode 100644
index a5acfcb8c9..0000000000
--- a/editor/icons/icon_material_preview_sphere_off.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_preview_sphere_off.svg b/editor/icons/icon_material_preview_sphere_off.svg
new file mode 100644
index 0000000000..57e38534ab
--- /dev/null
+++ b/editor/icons/icon_material_preview_sphere_off.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-2 2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_material_shader.png b/editor/icons/icon_material_shader.png
deleted file mode 100644
index 568a45d938..0000000000
--- a/editor/icons/icon_material_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_material_shader_graph.png b/editor/icons/icon_material_shader_graph.png
deleted file mode 100644
index f40e3755af..0000000000
--- a/editor/icons/icon_material_shader_graph.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_matrix.png b/editor/icons/icon_matrix.png
deleted file mode 100644
index ba0772ff8a..0000000000
--- a/editor/icons/icon_matrix.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_matrix.svg b/editor/icons/icon_matrix.svg
new file mode 100644
index 0000000000..e14566f816
--- /dev/null
+++ b/editor/icons/icon_matrix.svg
@@ -0,0 +1,19 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#ea686c">
+<rect x="1" y="1039.4" width="1" height="12"/>
+<rect x="1" y="1039.4" width="3" height="1"/>
+<rect x="1" y="1050.4" width="3" height="1"/>
+<rect x="10" y="1050.4" width="3" height="1"/>
+<rect x="10" y="1039.4" width="3" height="1"/>
+<rect x="12" y="1039.4" width="1" height="12"/>
+<rect x="3" y="1041.4" width="2" height="2"/>
+<rect x="6" y="1041.4" width="2" height="2"/>
+<rect x="9" y="1041.4" width="2" height="2"/>
+<rect x="3" y="1044.4" width="2" height="2"/>
+<rect x="6" y="1044.4" width="2" height="2"/>
+<rect x="9" y="1044.4" width="2" height="2"/>
+<rect x="3" y="1047.4" width="2" height="2"/>
+<rect x="6" y="1047.4" width="2" height="2"/>
+<rect x="9" y="1047.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_menu_button.png b/editor/icons/icon_menu_button.png
deleted file mode 100644
index 1fd2e41c23..0000000000
--- a/editor/icons/icon_menu_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_menu_button.svg b/editor/icons/icon_menu_button.svg
new file mode 100644
index 0000000000..28fafcc465
--- /dev/null
+++ b/editor/icons/icon_menu_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m1 1v4h14v-4h-14zm5 1h4l-2 2-2-2z"/>
+<path transform="translate(0 1036.4)" d="m2 6a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-7a1 1 0 0 0 -1 -1h-12zm1 2h10v2h-10v-2zm0 3h10v2h-10v-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mesh.png b/editor/icons/icon_mesh.png
deleted file mode 100644
index 03e1501403..0000000000
--- a/editor/icons/icon_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mesh.svg b/editor/icons/icon_mesh.svg
new file mode 100644
index 0000000000..d90dc14b5b
--- /dev/null
+++ b/editor/icons/icon_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h6.541a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -1.0312 -1.75h0.03125v-6.5215a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm2.4141 3h5.8574a2 2 0 0 0 0.72852 0.73047v5.8555l-6.5859-6.5859zm-1.4141 1.4141l6.5859 6.5859h-5.8574a2 2 0 0 0 -0.72852 -0.73047v-5.8555z" fill="#ffd684"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mesh_instance.png b/editor/icons/icon_mesh_instance.png
deleted file mode 100644
index c513feb1cd..0000000000
--- a/editor/icons/icon_mesh_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mesh_instance.svg b/editor/icons/icon_mesh_instance.svg
new file mode 100644
index 0000000000..12599bd78b
--- /dev/null
+++ b/editor/icons/icon_mesh_instance.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="3" cy="1049.4" r="2" fill="#fc9c9c" fill-opacity=".99608"/>
+<rect x="2" y="1039.4" width="2" height="8.5" fill="#fc9c9c" fill-opacity=".99608"/>
+<circle cx="3" cy="1039.4" r="2" fill="#fc9c9c" fill-opacity=".99608"/>
+<rect transform="rotate(90)" x="1038.4" y="-11.5" width="2" height="8.5" fill="#fc9c9c" fill-opacity=".99608"/>
+<circle cx="13" cy="1039.4" r="2" fill="#fc9c9c" fill-opacity=".99608"/>
+<rect x="12" y="1039.1" width="2" height="8.5" fill="#fc9c9c" fill-opacity=".99608"/>
+<circle cx="13" cy="1049.4" r="2" fill="#fc9c9c" fill-opacity=".99608"/>
+<rect transform="rotate(90)" x="1048.4" y="-12.25" width="2" height="8.5" fill="#fc9c9c" fill-opacity=".99608"/>
+<path d="m3 1039.4 10 10" fill="none" stroke="#fc9c9c" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mesh_library.png b/editor/icons/icon_mesh_library.png
deleted file mode 100644
index 0bb37b1da3..0000000000
--- a/editor/icons/icon_mesh_library.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mesh_library.svg b/editor/icons/icon_mesh_library.svg
new file mode 100644
index 0000000000..3bef2df33c
--- /dev/null
+++ b/editor/icons/icon_mesh_library.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h2.2695v-2h-2.2715a2 2 0 0 0 -0.72852 -0.73047v-5.8555l3 3v-0.41406a2.0002 2.0002 0 0 1 0.80859 -1.6055l-2.3945-2.3945h5.8574a2 2 0 0 0 0.72852 0.73047v1.2695a2.0002 2.0002 0 0 1 0.99805 0.27148 2.0002 2.0002 0 0 1 1.002 -0.27148v-1.2715a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm6 7v1 5 1h5c0.55228 0 1-0.4477 1-1v-5c0-0.5523-0.44772-1-1-1v4l-1-1-1 1v-4h-3z" fill="#ffd684"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mesh_old.png b/editor/icons/icon_mesh_old.png
deleted file mode 100644
index 18531ff844..0000000000
--- a/editor/icons/icon_mesh_old.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_meshr.png b/editor/icons/icon_meshr.png
deleted file mode 100644
index 1ed2a123e6..0000000000
--- a/editor/icons/icon_meshr.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_aabb.png b/editor/icons/icon_mini_aabb.png
deleted file mode 100644
index eebc4633e4..0000000000
--- a/editor/icons/icon_mini_aabb.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_aabb.svg b/editor/icons/icon_mini_aabb.svg
new file mode 100644
index 0000000000..d9c710ee1c
--- /dev/null
+++ b/editor/icons/icon_mini_aabb.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m5 1041.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h2v-6h-2zm0 2v2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#ee7991"/>
+<path d="m3 1046.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h2v-6h-2zm0 2v2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#f39bad"/>
+<path d="m13 1043.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z" fill="#ee7991"/>
+<path d="m13 1049.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z" fill="#ee7991"/>
+<rect transform="matrix(0,1,1,0,0,0)" x="1041.4" y="11" width="8" height="2" fill="#ee7991"/>
+<path d="m8 1044.4v8h2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3v-2h-2zm2 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2z" fill="#f39bad"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_array.png b/editor/icons/icon_mini_array.png
deleted file mode 100644
index ade885e4d4..0000000000
--- a/editor/icons/icon_mini_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_array.svg b/editor/icons/icon_mini_array.svg
new file mode 100644
index 0000000000..a1ec948063
--- /dev/null
+++ b/editor/icons/icon_mini_array.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#e0e0e0">
+<rect x="11" y="1047.4" width="2" height="3"/>
+<path d="m14 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect x="7" y="1047.4" width="2" height="3"/>
+<path d="m10 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m4 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m4 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="4" y="-1050.4" width="2" height="6"/>
+<rect x="10" y="1044.4" width="1" height="2"/>
+<rect x="14" y="1044.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_basis.png b/editor/icons/icon_mini_basis.png
deleted file mode 100644
index 7a4ac9b137..0000000000
--- a/editor/icons/icon_mini_basis.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_basis.svg b/editor/icons/icon_mini_basis.svg
new file mode 100644
index 0000000000..e0dc132d12
--- /dev/null
+++ b/editor/icons/icon_mini_basis.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="2" height="6" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="1" height="2" fill="#e3ec69"/>
+<path d="m2 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1z" fill="#e3ec69"/>
+<path d="m2 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1z" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1042.4" width="2" height="3.9999" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-9" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m7 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-7 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-7" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+<rect x="10" y="1046.4" width="2" height="3.9999" fill="#eef39f"/>
+<rect x="10" y="1042.4" width="2" height="2" fill="#eef39f"/>
+<rect transform="scale(-1,1)" x="-16" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m14 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-14 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-14" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_boolean.png b/editor/icons/icon_mini_boolean.png
deleted file mode 100644
index 9cb64fc983..0000000000
--- a/editor/icons/icon_mini_boolean.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_boolean.svg b/editor/icons/icon_mini_boolean.svg
new file mode 100644
index 0000000000..b8861c9f17
--- /dev/null
+++ b/editor/icons/icon_mini_boolean.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#8da6f0">
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="2" height="6"/>
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="1" height="2"/>
+<path d="m2 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<path d="m2 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<rect transform="scale(-1,1)" x="-2" y="1042.4" width="2" height="3.9999"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m7 1044.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z"/>
+<path d="m11 1044.4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_color.png b/editor/icons/icon_mini_color.png
deleted file mode 100644
index bebf64e262..0000000000
--- a/editor/icons/icon_mini_color.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_color.svg b/editor/icons/icon_mini_color.svg
new file mode 100644
index 0000000000..b70015a05d
--- /dev/null
+++ b/editor/icons/icon_mini_color.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m4 4a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h1v-2h-1z" fill="#ff7070"/>
+<path transform="translate(0 1040.4)" d="m14 4a3 3 0 0 0 -3 3v3h2v-3a1 1 0 0 1 1 -1h1v-2h-1z" fill="#70bfff"/>
+<path transform="translate(0 1040.4)" d="m6 2v5a3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1v-5h-2z" fill="#7aff70"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_color_array.png b/editor/icons/icon_mini_color_array.png
deleted file mode 100644
index 434b2f96f5..0000000000
--- a/editor/icons/icon_mini_color_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_color_array.svg b/editor/icons/icon_mini_color_array.svg
new file mode 100644
index 0000000000..2a5588a698
--- /dev/null
+++ b/editor/icons/icon_mini_color_array.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<path transform="translate(0 1040.4)" d="m6 3.5a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h1v-2h-1a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1h1v-2h-1z" fill="#ff7070"/>
+<rect x="10" y="1046.9" width="2" height="3" fill="#70bfff"/>
+<path d="m13 1043.9a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#70bfff"/>
+<path transform="translate(0 1040.4)" d="m7 1.5v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-5h-2z" fill="#7aff70"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_dictionary.png b/editor/icons/icon_mini_dictionary.png
deleted file mode 100644
index 11fd536a83..0000000000
--- a/editor/icons/icon_mini_dictionary.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_dictionary.svg b/editor/icons/icon_mini_dictionary.svg
new file mode 100644
index 0000000000..eb68709c4f
--- /dev/null
+++ b/editor/icons/icon_mini_dictionary.svg
@@ -0,0 +1,16 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#77edb1">
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="15" y="-1046.4" width="1" height="2"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m11 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m11 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="6" y="1046.4" width="2" height="3.9999"/>
+<rect x="6" y="1042.4" width="2" height="2"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="3" y="1042.4" width="2" height="8"/>
+<rect x="11" y="1044.4" width="1" height="2"/>
+<rect x="11" y="1048.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_float.png b/editor/icons/icon_mini_float.png
deleted file mode 100644
index f8c8d9a174..0000000000
--- a/editor/icons/icon_mini_float.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_float.svg b/editor/icons/icon_mini_float.svg
new file mode 100644
index 0000000000..2eb71fd85e
--- /dev/null
+++ b/editor/icons/icon_mini_float.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#61daf4">
+<rect y="1045.4" width="2" height="5"/>
+<rect x="2" y="1046.4" width="2" height="2"/>
+<path d="m3 1042.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="6" y="-1047.4" width="2" height="5"/>
+<path d="m9 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect transform="scale(1,-1)" x="12" y="-1047.4" width="2" height="5"/>
+<path d="m15 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="9" y="1048.4" width="1" height="2"/>
+<rect x="14" y="1044.4" width="2" height="2"/>
+<rect x="15" y="1048.4" width="1" height="2"/>
+<rect x="3" y="1042.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_float_array.png b/editor/icons/icon_mini_float_array.png
deleted file mode 100644
index 8b8177e151..0000000000
--- a/editor/icons/icon_mini_float_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_float_array.svg b/editor/icons/icon_mini_float_array.svg
new file mode 100644
index 0000000000..284b5911b7
--- /dev/null
+++ b/editor/icons/icon_mini_float_array.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<path d="m6 1042.4a3 3 0 0 0 -3 3v5h2v-2h1v-2h-1v-1a1 1 0 0 1 1 -1v-2z" fill="#61daf4"/>
+<path d="m10 1042.4v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-1h1v-2h-1v-2h-2z" fill="#61daf4"/>
+<path d="m7 1042.4v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-5h-2z" fill="#c6f2fb"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_image.png b/editor/icons/icon_mini_image.png
deleted file mode 100644
index 2ad359bdbe..0000000000
--- a/editor/icons/icon_mini_image.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_image.svg b/editor/icons/icon_mini_image.svg
new file mode 100644
index 0000000000..a3f273078c
--- /dev/null
+++ b/editor/icons/icon_mini_image.svg
@@ -0,0 +1,17 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#93f1b9">
+<rect y="1045.4" width="2" height="3.9999"/>
+<rect x="3" y="1043.4" width="2" height="6"/>
+<path d="m5 1043.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="6" y="1046.4" width="2" height="3"/>
+<rect y="1041.4" width="2" height="2"/>
+<rect x="6" y="1043.4" width="2" height="6"/>
+<path d="m8 1043.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="9" y="1046.4" width="2" height="3"/>
+<path d="m14 1049.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m14 1043.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="14" y="-1049.4" width="2" height="6"/>
+<path d="m13 1052.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<rect x="12" y="1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_input.png b/editor/icons/icon_mini_input.png
deleted file mode 100644
index fec26dd68e..0000000000
--- a/editor/icons/icon_mini_input.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_input.svg b/editor/icons/icon_mini_input.svg
new file mode 100644
index 0000000000..c64db97127
--- /dev/null
+++ b/editor/icons/icon_mini_input.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#adf18f">
+<path d="m10 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m10 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(-1)" x="-10" y="-1052.4" width="2" height="8"/>
+<rect y="1046.4" width="2" height="3.9999"/>
+<rect x="3" y="1044.4" width="2" height="6"/>
+<path d="m5 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="6" y="1047.4" width="2" height="3"/>
+<rect y="1042.4" width="2" height="2"/>
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="15" y="-1046.4" width="1" height="2"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_int_array.png b/editor/icons/icon_mini_int_array.png
deleted file mode 100644
index d1bd2e82a7..0000000000
--- a/editor/icons/icon_mini_int_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_int_array.svg b/editor/icons/icon_mini_int_array.svg
new file mode 100644
index 0000000000..e5d4d97a90
--- /dev/null
+++ b/editor/icons/icon_mini_int_array.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m0 0v2 8 2h2 2v-2h-2v-8h2v-2h-4zm12 0v2h2v8h-2v2h4v-2-8-2h-2-2z" fill="#e0e0e0"/>
+<path transform="translate(0 1040.4)" d="m3 2v2h2v-2h-2zm0 4v4h2v-4h-2z" fill="#7dc6ef"/>
+<path transform="translate(0 1040.4)" d="m5 4v6h2v-4a1 1 0 0 1 1 1v3h2v-3a3 3 0 0 0 -3 -3h-2z" fill="#c8e7f9"/>
+<path transform="translate(0 1040.4)" d="m10 2v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-1h1v-2h-1v-2h-2z" fill="#7dc6ef"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_integer.png b/editor/icons/icon_mini_integer.png
deleted file mode 100644
index dad1bb160b..0000000000
--- a/editor/icons/icon_mini_integer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_integer.svg b/editor/icons/icon_mini_integer.svg
new file mode 100644
index 0000000000..05d09d9823
--- /dev/null
+++ b/editor/icons/icon_mini_integer.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#7dc6ef">
+<rect x="1" y="1046.4" width="2" height="3.9999"/>
+<rect x="4" y="1044.4" width="2" height="6"/>
+<path d="m7 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="8" y="1047.4" width="2" height="3"/>
+<rect x="1" y="1042.4" width="2" height="2"/>
+<rect transform="scale(1,-1)" x="12" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="14" y="-1046.4" width="2" height="2"/>
+<path d="m15 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="5" y="1044.4" width="2" height="2"/>
+<rect transform="scale(1,-1)" x="15" y="-1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_matrix3.png b/editor/icons/icon_mini_matrix3.png
deleted file mode 100644
index 7a4ac9b137..0000000000
--- a/editor/icons/icon_mini_matrix3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_matrix3.svg b/editor/icons/icon_mini_matrix3.svg
new file mode 100644
index 0000000000..e0dc132d12
--- /dev/null
+++ b/editor/icons/icon_mini_matrix3.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="2" height="6" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1044.4" width="1" height="2" fill="#e3ec69"/>
+<path d="m2 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1z" fill="#e3ec69"/>
+<path d="m2 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1z" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-2" y="1042.4" width="2" height="3.9999" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-9" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m7 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-7 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-7" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+<rect x="10" y="1046.4" width="2" height="3.9999" fill="#eef39f"/>
+<rect x="10" y="1042.4" width="2" height="2" fill="#eef39f"/>
+<rect transform="scale(-1,1)" x="-16" y="1044.4" width="2" height="2" fill="#e3ec69"/>
+<path d="m14 1048.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<path transform="scale(-1,1)" d="m-14 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#e3ec69"/>
+<rect transform="scale(-1,1)" x="-14" y="1048.4" width="2" height="2" fill="#e3ec69"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_matrix32.png b/editor/icons/icon_mini_matrix32.png
deleted file mode 100644
index 6018a00747..0000000000
--- a/editor/icons/icon_mini_matrix32.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_object.png b/editor/icons/icon_mini_object.png
deleted file mode 100644
index 4afe7cfca1..0000000000
--- a/editor/icons/icon_mini_object.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_object.svg b/editor/icons/icon_mini_object.svg
new file mode 100644
index 0000000000..8cbbfa2808
--- /dev/null
+++ b/editor/icons/icon_mini_object.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#79f3e8">
+<path d="m8 1050.4a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3v-2h-2v8h2zm0-2v-2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1z"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m15 1044.4v5a3 3 0 0 1 -3 3v-2a1 1 0 0 0 1 -1v-5h2z"/>
+<path d="m3 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m3 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="11" y="1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_path.png b/editor/icons/icon_mini_path.png
deleted file mode 100644
index 9eb0632571..0000000000
--- a/editor/icons/icon_mini_path.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_path.svg b/editor/icons/icon_mini_path.svg
new file mode 100644
index 0000000000..d09f56e753
--- /dev/null
+++ b/editor/icons/icon_mini_path.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#6993ec">
+<rect transform="scale(1,-1)" x="6" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="8" y="-1046.4" width="2" height="2"/>
+<path d="m9 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect transform="scale(1,-1)" x="11" y="-1050.4" width="2" height="8"/>
+<path d="m13 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="14" y="-1050.4" width="2" height="3"/>
+<path d="m2 1048.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m2 1042.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(-1)" x="-2" y="-1050.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="9" y="-1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_plane.png b/editor/icons/icon_mini_plane.png
deleted file mode 100644
index 45676236bd..0000000000
--- a/editor/icons/icon_mini_plane.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_plane.svg b/editor/icons/icon_mini_plane.svg
new file mode 100644
index 0000000000..5d2ee937c0
--- /dev/null
+++ b/editor/icons/icon_mini_plane.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#f77070">
+<path d="m3 1048.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z"/>
+<path d="m3 1042.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect transform="scale(-1)" x="-3" y="-1050.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="7" y="-1047.4" width="2" height="5"/>
+<path d="m10 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="11" y="1044.4" width="2" height="6"/>
+<path d="m13 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="14" y="1047.4" width="2" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_quat.png b/editor/icons/icon_mini_quat.png
deleted file mode 100644
index 4ed2f5695c..0000000000
--- a/editor/icons/icon_mini_quat.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_quat.svg b/editor/icons/icon_mini_quat.svg
new file mode 100644
index 0000000000..7baaf44089
--- /dev/null
+++ b/editor/icons/icon_mini_quat.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3 1049.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#ec69a3"/>
+<path d="m3 1043.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#ec69a3"/>
+<rect transform="scale(1,-1)" x="3" y="-1051.4" width="2" height="8" fill="#ec69a3"/>
+<rect transform="scale(1,-1)" x="13" y="-1046.4" width="2" height="5" fill="#ec69a3"/>
+<rect transform="scale(1,-1)" x="15" y="-1045.4" width="1" height="2" fill="#ec69a3"/>
+<path d="m16 1049.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#ec69a3"/>
+<path d="m4 1043.4v3a3 3 0 0 0 3 3h2v-6h-2v4a1 1 0 0 1 -1 -1v-3h-2z" fill="#f298c0"/>
+<path transform="translate(0 1040.4)" d="m11 3a3 3 0 0 0 -3 3 3 3 0 0 0 3 3h2v-6h-2zm0 2v2a1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z" fill="#ec69a3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_raw_array.png b/editor/icons/icon_mini_raw_array.png
deleted file mode 100644
index 66bcf7c740..0000000000
--- a/editor/icons/icon_mini_raw_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_raw_array.svg b/editor/icons/icon_mini_raw_array.svg
new file mode 100644
index 0000000000..827e60d0e3
--- /dev/null
+++ b/editor/icons/icon_mini_raw_array.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m0 0v2 8 2h4v-2h-2v-8h2v-2h-2-2zm12 0v2h2v8h-2v2h4v-2-8-2h-2-2z" fill="#e0e0e0"/>
+<rect x="2" y="1046.4" width="2" height="3" fill="#69ec9e"/>
+<rect x="5" y="1043.4" width="1" height="2" fill="#69ec9e"/>
+<path d="m5 1043.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#69ec9e"/>
+<path d="m6 1049.4v-6h2v4a1 1 0 0 0 1 -1v-3h2v3 1a1 1 0 0 0 1 -1v-3h2v3a3 3 0 0 1 -3 3h-2v-0.1758a3 3 0 0 1 -1 0.1758h-2z" fill="#aaf4c8"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_rect2.png b/editor/icons/icon_mini_rect2.png
deleted file mode 100644
index db13e1a48e..0000000000
--- a/editor/icons/icon_mini_rect2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_rect2.svg b/editor/icons/icon_mini_rect2.svg
new file mode 100644
index 0000000000..d9e9413185
--- /dev/null
+++ b/editor/icons/icon_mini_rect2.svg
@@ -0,0 +1,19 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#f191a5">
+<rect y="1047.4" width="2" height="3"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="13" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="15" y="-1046.4" width="1" height="2"/>
+<path d="m16 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m7 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="7" y="-1050.4" width="1" height="2"/>
+<path d="m7 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="12" y="1044.4" width="1" height="2"/>
+<path d="m12 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="12" y="-1050.4" width="1" height="2"/>
+<path d="m12 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m7 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="6" y="1046.4" width="2" height="1"/>
+<rect transform="scale(1,-1)" x="3" y="-1046.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_rid.png b/editor/icons/icon_mini_rid.png
deleted file mode 100644
index 278a9d1ee6..0000000000
--- a/editor/icons/icon_mini_rid.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_rid.svg b/editor/icons/icon_mini_rid.svg
new file mode 100644
index 0000000000..3fe12d0819
--- /dev/null
+++ b/editor/icons/icon_mini_rid.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#69ec9a">
+<rect x="1" y="1047.4" width="2" height="3"/>
+<rect x="7" y="1042.4" width="2" height="1.9999"/>
+<rect x="7" y="1046.4" width="2" height="4"/>
+<rect x="4" y="1044.4" width="1" height="2"/>
+<path d="m4 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m13 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m13 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect x="14" y="1042.4" width="2" height="8"/>
+<rect x="13" y="1044.4" width="1" height="2"/>
+<rect x="13" y="1048.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_string.png b/editor/icons/icon_mini_string.png
deleted file mode 100644
index 504556dd74..0000000000
--- a/editor/icons/icon_mini_string.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_string.svg b/editor/icons/icon_mini_string.svg
new file mode 100644
index 0000000000..7212058fe6
--- /dev/null
+++ b/editor/icons/icon_mini_string.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#6ba7ec">
+<path d="m5 1042.4a3 3 0 0 0 -3 3v2a1 1 0 0 1 -1 1v2a3 3 0 0 0 3 -3v-2a1 1 0 0 1 1 -1v-2z"/>
+<rect transform="scale(1,-1)" x="7" y="-1047.4" width="2" height="5"/>
+<rect transform="scale(1,-1)" x="9" y="-1046.4" width="2" height="2"/>
+<path d="m10 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path transform="translate(0 1040.4)" d="m15 4a3 3 0 0 0 -3 3v3h2v-3a1 1 0 0 1 1 -1h1v-2h-1z"/>
+<rect y="1048.4" width="1" height="2"/>
+<rect x="5" y="1042.4" width="1" height="2"/>
+<rect transform="scale(1,-1)" x="10" y="-1050.4" width="1" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_string_array.png b/editor/icons/icon_mini_string_array.png
deleted file mode 100644
index 5177014185..0000000000
--- a/editor/icons/icon_mini_string_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_string_array.svg b/editor/icons/icon_mini_string_array.svg
new file mode 100644
index 0000000000..e0b927d3a9
--- /dev/null
+++ b/editor/icons/icon_mini_string_array.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path transform="translate(0 1040.4)" d="m0 0v2 8 2h2 2v-2h-2v-8h2v-2h-2-2zm12 0v2h2v8h-2v2h4v-2-10h-4z" fill="#e0e0e0"/>
+<path d="m7 1042.4a3 3 0 0 0 -3 3v2a1 1 0 0 1 -1 1v2a3 3 0 0 0 3 -3v-2a1 1 0 0 1 1 -1v-2z" fill="#6ba7ec"/>
+<path d="m14 1044.4a3 3 0 0 0 -3 3v3h2v-3a1 1 0 0 1 1 -1v-2z" fill="#6ba7ec"/>
+<path d="m8 1042.4v5a3 3 0 0 0 3 3v-2a1 1 0 0 1 -1 -1v-1h1v-2h-1v-2h-2z" fill="#b5d3f6"/>
+<rect x="7" y="1042.4" width="1" height="2" fill="#6ba7ec"/>
+<rect x="2" y="1048.4" width="1" height="2" fill="#6ba7ec"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_transform.png b/editor/icons/icon_mini_transform.png
deleted file mode 100644
index 068ea0506c..0000000000
--- a/editor/icons/icon_mini_transform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_transform.svg b/editor/icons/icon_mini_transform.svg
new file mode 100644
index 0000000000..43c4bb4a8f
--- /dev/null
+++ b/editor/icons/icon_mini_transform.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m4 1042.4-0.9082 2.1816-1.0918-2.1816h-2l2 4-2 4h2l0.9082-2.1816 1.0918 2.1816h2l-2-4 2-4z" fill="#f6a86e"/>
+<path d="m9 1042.4a3 3 0 0 0 -3 3v5h2v-2h1v-2h-1v-1a1 1 0 0 1 1 -1h1v-2h-1z" fill="#f8bf95"/>
+<path transform="translate(0 1040.4)" d="m10 4v2 2 2h2v-2l1 1 1-1v2h2v-2-2-2h-2l-1 2-1-2h-2z" fill="#f6a86e"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_transform2D.png b/editor/icons/icon_mini_transform2D.png
deleted file mode 100644
index f4e1211bd7..0000000000
--- a/editor/icons/icon_mini_transform2D.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_transform2D.svg b/editor/icons/icon_mini_transform2D.svg
new file mode 100644
index 0000000000..38921ea85a
--- /dev/null
+++ b/editor/icons/icon_mini_transform2D.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect x="5" y="1048.4" width="5" height="2" fill="#ddf4aa"/>
+<path d="m7 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#ddf4aa"/>
+<path d="m7 1042.4v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5z" fill="#ddf4aa"/>
+<rect y="1042.4" width="6" height="2" fill="#c4ec69"/>
+<rect x="2" y="1043.4" width="2" height="7" fill="#c4ec69"/>
+<path transform="translate(0 1040.4)" d="m10 2v8h2a4 4 0 0 0 3.4648 -2 4 4 0 0 0 0 -4 4 4 0 0 0 -3.4648 -2h-2zm2 2a2 2 0 0 1 1.7324 1 2 2 0 0 1 0 2 2 2 0 0 1 -1.7324 1v-4z" fill="#c4ec69"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_variant.png b/editor/icons/icon_mini_variant.png
deleted file mode 100644
index 285f0bcd16..0000000000
--- a/editor/icons/icon_mini_variant.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_variant.svg b/editor/icons/icon_mini_variant.svg
new file mode 100644
index 0000000000..aeb23ed2bc
--- /dev/null
+++ b/editor/icons/icon_mini_variant.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="#69ecbd">
+<rect x="3" y="1044.4" width="2" height="6"/>
+<rect x="6" y="1044.4" width="2" height="6"/>
+<rect x="3" y="1044.4" width="1" height="2"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z"/>
+<path d="m14 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<rect transform="scale(1,-1)" x="14" y="-1052.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="11" y="-1047.4" width="2" height="3"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z"/>
+<path d="m8 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1v-2z"/>
+<rect x="9" y="1047.4" width="2" height="3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_vector2.png b/editor/icons/icon_mini_vector2.png
deleted file mode 100644
index a7caa1797f..0000000000
--- a/editor/icons/icon_mini_vector2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_vector2.svg b/editor/icons/icon_mini_vector2.svg
new file mode 100644
index 0000000000..7abc73c41f
--- /dev/null
+++ b/editor/icons/icon_mini_vector2.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z" fill="#bd91f1"/>
+<rect x="4" y="1044.4" width="2" height="3" fill="#bd91f1"/>
+<rect x="11" y="1048.4" width="5" height="2" fill="#dcc5f8"/>
+<rect x="1" y="1044.4" width="2" height="6" fill="#bd91f1"/>
+<rect x="9" y="1044.4" width="1" height="2" fill="#bd91f1"/>
+<path d="m9 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#bd91f1"/>
+<rect transform="scale(1,-1)" x="9" y="-1050.4" width="1" height="2" fill="#bd91f1"/>
+<path d="m9 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#bd91f1"/>
+<path d="m13 1050.4a2 2 0 0 1 -1.7321 -1 2 2 0 0 1 0 -2 2 2 0 0 1 1.7321 -1" fill="#dcc5f8"/>
+<path d="m13 1042.4v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5z" fill="#dcc5f8"/>
+<rect x="12" y="1042.4" width="1" height="2" fill="#dcc5f8"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_vector2_array.png b/editor/icons/icon_mini_vector2_array.png
deleted file mode 100644
index de546de16c..0000000000
--- a/editor/icons/icon_mini_vector2_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_vector2_array.svg b/editor/icons/icon_mini_vector2_array.svg
new file mode 100644
index 0000000000..0070144ca5
--- /dev/null
+++ b/editor/icons/icon_mini_vector2_array.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<path transform="translate(0 1040.4)" d="m3 3v6h2a3 3 0 0 0 3 -3v-3h-2v3a1 1 0 0 1 -1 1v-4h-2z" fill="#bd91f1"/>
+<path d="m9 1042.4v2h1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 2 2 0 0 0 -1.7324 1 2 2 0 0 0 -0.26562 1h-0.00195v0.047 1.9531h2 3v-2h-3a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5001h-1z" fill="#dcc5f8"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_vector3.png b/editor/icons/icon_mini_vector3.png
deleted file mode 100644
index 69baeb229b..0000000000
--- a/editor/icons/icon_mini_vector3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_vector3.svg b/editor/icons/icon_mini_vector3.svg
new file mode 100644
index 0000000000..88b6f1f53c
--- /dev/null
+++ b/editor/icons/icon_mini_vector3.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m3.0004 1050.4a3 3 0 0 0 3 -3h-2a1 1 0 0 1 -1 1v2z" fill="#e286f0"/>
+<rect x="4.0004" y="1044.4" width="2" height="3" fill="#e286f0"/>
+<rect x="1.0004" y="1044.4" width="2" height="6" fill="#e286f0"/>
+<rect x="9.0004" y="1044.4" width="1" height="2" fill="#e286f0"/>
+<path d="m9.0004 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1v-2z" fill="#e286f0"/>
+<rect transform="scale(1,-1)" x="9.0004" y="-1050.4" width="1" height="2" fill="#e286f0"/>
+<path d="m9.0004 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1v2z" fill="#e286f0"/>
+<path transform="translate(0 1040.4)" d="m13 2v1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -0.36328 -0.5h-2.2344z" fill="#eeb9f6"/>
+<rect x="12" y="1042.4" width="3.9996" height="2" fill="#eeb9f6"/>
+<path d="m13 1045.4v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v2a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -2.5977 -1.5z" fill="#eeb9f6"/>
+<rect x="12" y="1049.4" width="1" height="2" fill="#eeb9f6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mini_vector3_array.png b/editor/icons/icon_mini_vector3_array.png
deleted file mode 100644
index 6bddbaf627..0000000000
--- a/editor/icons/icon_mini_vector3_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mini_vector3_array.svg b/editor/icons/icon_mini_vector3_array.svg
new file mode 100644
index 0000000000..a1b880bdf0
--- /dev/null
+++ b/editor/icons/icon_mini_vector3_array.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<rect y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1050.4" width="4" height="2" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="2" height="12" fill="#e0e0e0"/>
+<rect transform="scale(-1,1)" x="-16" y="1040.4" width="4" height="2" fill="#e0e0e0"/>
+<path transform="translate(0 1040.4)" d="m3 3v6h2a3 3 0 0 0 3 -3v-3h-2v3a1 1 0 0 1 -1 1v-4h-2z" fill="#e286f0"/>
+<path transform="translate(0 1040.4)" d="m8 1v2h1 1a1 1 0 0 1 -1 1v2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1h-1v2h1a3 3 0 0 0 2.5977 -1.5 3 3 0 0 0 0 -3 3 3 0 0 0 -0.36523 -0.50195 3 3 0 0 0 0.36523 -0.49805 3 3 0 0 0 0.39844 -1.5h0.003906v-2h-0.76562-2.2344-1z" fill="#eeb9f6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mirror_x.png b/editor/icons/icon_mirror_x.png
deleted file mode 100644
index f2c9074b89..0000000000
--- a/editor/icons/icon_mirror_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mirror_x.svg b/editor/icons/icon_mirror_x.svg
new file mode 100644
index 0000000000..2729ca5837
--- /dev/null
+++ b/editor/icons/icon_mirror_x.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#e0e0e0" stroke-opacity=".99608" stroke-width="2">
+<path d="m4 1042.4-2 2 2 2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="m2 1044.4h11"/>
+<path d="m12 1042.4 2 2-2 2" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mirror_y.png b/editor/icons/icon_mirror_y.png
deleted file mode 100644
index 655f52d481..0000000000
--- a/editor/icons/icon_mirror_y.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mirror_y.svg b/editor/icons/icon_mirror_y.svg
new file mode 100644
index 0000000000..eb3c9dcc86
--- /dev/null
+++ b/editor/icons/icon_mirror_y.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m11.012 1048.4a1.0001 1.0001 0 0 0 -1.7168 -0.6973l-0.29297 0.293v-7.1719l0.29297 0.293a1.0001 1.0001 0 0 0 1.7148 -0.7266 1.0001 1.0001 0 0 0 -0.30078 -0.6875l-2-2a1.0001 1.0001 0 0 0 -1.4141 0l-2 2a1.0001 1.0001 0 1 0 1.4141 1.4141l0.29297-0.293v7.1719l-0.29297-0.293a1.0001 1.0001 0 1 0 -1.4141 1.4141l2 2a1.0001 1.0001 0 0 0 1.4141 0l2-2a1.0001 1.0001 0 0 0 0.30273 -0.7168z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_mouse.png b/editor/icons/icon_mouse.png
deleted file mode 100644
index ad07a403a6..0000000000
--- a/editor/icons/icon_mouse.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_mouse.svg b/editor/icons/icon_mouse.svg
new file mode 100644
index 0000000000..b7d50629d9
--- /dev/null
+++ b/editor/icons/icon_mouse.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1.1016a5 5 0 0 0 -4 4.8984h4v-4.8984zm2 0.0039063v4.8945h4a5 5 0 0 0 -4 -4.8945zm-6 6.8945v2a5 5 0 0 0 5 5 5 5 0 0 0 5 -5v-2h-10z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_move_down.png b/editor/icons/icon_move_down.png
deleted file mode 100644
index 7bb964675d..0000000000
--- a/editor/icons/icon_move_down.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_move_down.svg b/editor/icons/icon_move_down.svg
new file mode 100644
index 0000000000..466fa10205
--- /dev/null
+++ b/editor/icons/icon_move_down.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m7.9964 1051.4a1.0002 1.0001 0 0 1 -0.77738 -0.377l-4.0002-5a1.0001 1 0 0 1 0.15626 -1.4043 1.0001 1 0 0 1 1.4063 0.1563l2.2189 2.7734v-5.1484a1.0001 1 0 0 1 1.0001 -1 1.0001 1 0 0 1 1.0001 1v5.1484l2.2189-2.7734a1.0001 1 0 0 1 1.4063 -0.1563 1.0001 1 0 0 1 0.15626 1.4043l-4.0002 5a1.0002 1.0001 0 0 1 -0.7852 0.377zm0.00391-12a1.0001 1 0 0 1 -1.0001 -1 1.0001 1 0 0 1 1.0001 -1 1.0001 1 0 0 1 1.0001 1 1.0001 1 0 0 1 -1.0001 1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_move_down_hl.png b/editor/icons/icon_move_down_hl.png
deleted file mode 100644
index f9de58a940..0000000000
--- a/editor/icons/icon_move_down_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_move_point.png b/editor/icons/icon_move_point.png
deleted file mode 100644
index 00e4ea32bd..0000000000
--- a/editor/icons/icon_move_point.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_move_point.svg b/editor/icons/icon_move_point.svg
new file mode 100644
index 0000000000..337ed4c9b8
--- /dev/null
+++ b/editor/icons/icon_move_point.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 1.2129 -0.10742l-2.5996-6.3203a1.5002 1.5002 0 0 1 1.3711 -2.0703v-0.0019531a1.5002 1.5002 0 0 1 0.58594 0.11133l6.3184 2.5996a7 7 0 0 0 0.11133 -1.2109 7 7 0 0 0 -7 -7zm2.7559 9.7559l0.52344 1.2734a1.5002 1.5002 0 0 1 0.48047 -0.26953 1.5002 1.5002 0 0 1 0.26953 -0.47852l-1.2734-0.52539z" fill="#fff"/>
+<path transform="translate(0 1036.4)" d="m8 3a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 0.42578 -0.021484l-1.8125-4.4063a1.5002 1.5002 0 0 1 1.3711 -2.0703v-0.0019531a1.5002 1.5002 0 0 1 0.58594 0.11133l4.4082 1.8125a5 5 0 0 0 0.021484 -0.42383 5 5 0 0 0 -5 -5zm2.7559 7.7559l0.44336 1.0801a5 5 0 0 0 0.63867 -0.63281l-1.082-0.44727z" fill="#ff8484"/>
+<path d="m16 1047.7-8-3.291 3.291 8 0.9471-2.8201 1.8836 1.8835 0.9418-0.9418-1.8836-1.8835z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_move_up.png b/editor/icons/icon_move_up.png
deleted file mode 100644
index 92614b8799..0000000000
--- a/editor/icons/icon_move_up.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_move_up.svg b/editor/icons/icon_move_up.svg
new file mode 100644
index 0000000000..6e148216d2
--- /dev/null
+++ b/editor/icons/icon_move_up.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m7.9964 1037.4a1.0002 1.0001 0 0 0 -0.77739 0.377l-4.0002 5a1.0001 1 0 0 0 0.15626 1.4043 1.0001 1 0 0 0 1.4063 -0.1563l2.2189-2.7734v5.1484a1.0001 1 0 0 0 1.0001 1 1.0001 1 0 0 0 1.0001 -1v-5.1484l2.2189 2.7734a1.0001 1 0 0 0 1.4063 0.1563 1.0001 1 0 0 0 0.15626 -1.4043l-4.0002-5a1.0002 1.0001 0 0 0 -0.7852 -0.377zm0.00391 12a1.0001 1 0 0 0 -1.0001 1 1.0001 1 0 0 0 1.0001 1 1.0001 1 0 0 0 1.0001 -1 1.0001 1 0 0 0 -1.0001 -1z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-opacity=".99608" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_move_up_hl.png b/editor/icons/icon_move_up_hl.png
deleted file mode 100644
index e076c9a265..0000000000
--- a/editor/icons/icon_move_up_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_multi_edit.png b/editor/icons/icon_multi_edit.png
deleted file mode 100644
index 0256ae094a..0000000000
--- a/editor/icons/icon_multi_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_multi_edit.svg b/editor/icons/icon_multi_edit.svg
new file mode 100644
index 0000000000..b0de08316a
--- /dev/null
+++ b/editor/icons/icon_multi_edit.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z"/>
+<rect x="1" y="1037.4" width="2" height="2"/>
+<rect x="1" y="1041.4" width="2" height="2"/>
+<rect x="5" y="1037.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_multi_line.png b/editor/icons/icon_multi_line.png
deleted file mode 100644
index 95a029cc6e..0000000000
--- a/editor/icons/icon_multi_line.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_multi_line.svg b/editor/icons/icon_multi_line.svg
new file mode 100644
index 0000000000..0cd8be93f6
--- /dev/null
+++ b/editor/icons/icon_multi_line.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="10" y="1037.4" width="5" height="1.9999"/>
+<rect transform="rotate(90)" x="1037.4" y="-8" width="2" height="7"/>
+<rect x="1" y="1041.4" width="11" height="1.9999"/>
+<rect x="1" y="1045.4" width="4" height="1.9999"/>
+<rect x="7" y="1045.4" width="8" height="1.9999"/>
+<rect x="1" y="1049.4" width="13" height="1.9999"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_multi_mesh.png b/editor/icons/icon_multi_mesh.png
deleted file mode 100644
index 6ff9d22266..0000000000
--- a/editor/icons/icon_multi_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_multi_mesh.svg b/editor/icons/icon_multi_mesh.svg
new file mode 100644
index 0000000000..2582ba9e51
--- /dev/null
+++ b/editor/icons/icon_multi_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2 5.649e-4 0.71397 0.38169 1.3735 1 1.7305v6.541c-0.61771 0.35663-0.99874 1.0152-1 1.7285 0 1.1046 0.89543 2 2 2 0.71397-5.65e-4 1.3735-0.38169 1.7305-1h1.2695v-2h-1.2715c-0.17478-0.30301-0.42598-0.55488-0.72852-0.73047v-5.8555l3.5859 3.5859h1.4141v-1.4141l-3.5859-3.5859h5.8574c0.17532 0.30158 0.42647 0.55205 0.72852 0.72656v1.2734h2v-1.2695c0.61831-0.35698 0.99944-1.0165 1-1.7305 0-1.1046-0.89543-2-2-2-0.71397 5.648e-4 -1.3735 0.38169-1.7305 1h-6.541c-0.35663-0.61771-1.0152-0.99874-1.7285-1zm8 7v3h-3v2h3v3h2v-3h3v-2h-3v-3z" fill="#ffd684"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_multi_mesh_instance.png b/editor/icons/icon_multi_mesh_instance.png
deleted file mode 100644
index 124bf81b5a..0000000000
--- a/editor/icons/icon_multi_mesh_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_multi_mesh_instance.svg b/editor/icons/icon_multi_mesh_instance.svg
new file mode 100644
index 0000000000..0140f1137b
--- /dev/null
+++ b/editor/icons/icon_multi_mesh_instance.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2 5.649e-4 0.71397 0.38169 1.3735 1 1.7305v6.541c-0.61771 0.35663-0.99874 1.0152-1 1.7285 0 1.1046 0.89543 2 2 2 0.71397-5.65e-4 1.3735-0.38169 1.7305-1h1.2695v-2h-1.2715c-0.17478-0.30301-0.42598-0.55488-0.72852-0.73047v-5.8555l3.5859 3.5859h1.4141v-1.4141l-3.5859-3.5859h5.8574c0.17532 0.30158 0.42647 0.55205 0.72852 0.72656v1.2734h2v-1.2695c0.61831-0.35698 0.99944-1.0165 1-1.7305 0-1.1046-0.89543-2-2-2-0.71397 5.648e-4 -1.3735 0.38169-1.7305 1h-6.541c-0.35663-0.61771-1.0152-0.99874-1.7285-1zm8 7v3h-3v2h3v3h2v-3h3v-2h-3v-3z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_multi_node_edit.png b/editor/icons/icon_multi_node_edit.png
deleted file mode 100644
index 0256ae094a..0000000000
--- a/editor/icons/icon_multi_node_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_multi_script.png b/editor/icons/icon_multi_script.png
deleted file mode 100644
index 7626937296..0000000000
--- a/editor/icons/icon_multi_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_multi_script.svg b/editor/icons/icon_multi_script.svg
new file mode 100644
index 0000000000..b377f04da2
--- /dev/null
+++ b/editor/icons/icon_multi_script.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-1.1934 1.9902 1.4141 1.4141 1.2422-0.74414v-4.9121h1a2 2 0 0 1 2 -2v-1h4.9121l0.74414-1.2422-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2z"/>
+<path d="m10 1043.4v3h-3v2h3v3h2v-3h3v-2h-3v-3z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_native_script.png b/editor/icons/icon_native_script.png
deleted file mode 100644
index ea4fe06704..0000000000
--- a/editor/icons/icon_native_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_native_script.svg b/editor/icons/icon_native_script.svg
new file mode 100644
index 0000000000..fb9e135627
--- /dev/null
+++ b/editor/icons/icon_native_script.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625h3v1 1h2v-0.95117a2 2 0 0 1 0 -0.048828 2 2 0 0 1 2 -2 2 2 0 0 1 2 2v1h5v-2l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm-6 7v4 4h2a3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3v-2h-2zm6 0v2h2v-2h-2zm3 2v6h2v-4a1 1 0 0 1 1 1v3h2v-3a3 3 0 0 0 -3 -3h-2zm-7 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1v-2zm4 0v4h2v-4h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_navigation.png b/editor/icons/icon_navigation.png
deleted file mode 100644
index 3c5a3bdc4a..0000000000
--- a/editor/icons/icon_navigation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_navigation.svg b/editor/icons/icon_navigation.svg
new file mode 100644
index 0000000000..dddd75341f
--- /dev/null
+++ b/editor/icons/icon_navigation.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1050.4 5-2 5 2-5-12-5 12z" fill="#fc9c9c" fill-opacity=".99608" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_navigation_2d.png b/editor/icons/icon_navigation_2d.png
deleted file mode 100644
index a6ea55ef13..0000000000
--- a/editor/icons/icon_navigation_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_navigation_2d.svg b/editor/icons/icon_navigation_2d.svg
new file mode 100644
index 0000000000..e08aebe1bc
--- /dev/null
+++ b/editor/icons/icon_navigation_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1050.4 5-2 5 2-5-12-5 12z" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_navigation_mesh.png b/editor/icons/icon_navigation_mesh.png
deleted file mode 100644
index e3bb7f775f..0000000000
--- a/editor/icons/icon_navigation_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_navigation_mesh.svg b/editor/icons/icon_navigation_mesh.svg
new file mode 100644
index 0000000000..cc04e06b51
--- /dev/null
+++ b/editor/icons/icon_navigation_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h2.5078l0.75-2h-3.2598a2 2 0 0 0 -0.72852 -0.73047v-5.8555l4.6973 4.6973 0.77148-2.0566-4.0547-4.0547h5.8574a2 2 0 0 0 0.72852 0.73047v0.27148a2.0002 2.0002 0 0 1 0.023438 0 2.0002 2.0002 0 0 1 1.8496 1.2969l0.12695 0.33789v-1.9082a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm9 6l-3 8 3-2 3 2-3-8z" fill="#ffd684"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_navigation_mesh_instance.png b/editor/icons/icon_navigation_mesh_instance.png
deleted file mode 100644
index f5f25ef421..0000000000
--- a/editor/icons/icon_navigation_mesh_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_navigation_mesh_instance.svg b/editor/icons/icon_navigation_mesh_instance.svg
new file mode 100644
index 0000000000..85c6292290
--- /dev/null
+++ b/editor/icons/icon_navigation_mesh_instance.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v6.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h2.5078l0.75-2h-3.2598a2 2 0 0 0 -0.72852 -0.73047v-5.8555l4.6973 4.6973 0.77148-2.0566-4.0547-4.0547h5.8574a2 2 0 0 0 0.72852 0.73047v0.27148a2.0002 2.0002 0 0 1 0.023438 0 2.0002 2.0002 0 0 1 1.8496 1.2969l0.12695 0.33789v-1.9082a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -1.7285 -1zm9 6l-3 8 3-2 3 2-3-8z"/>
+<rect x="12" y="1040.4" width="2" height="1"/>
+<rect x="12" y="1040.4" width="2" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_navigation_polygon.png b/editor/icons/icon_navigation_polygon.png
deleted file mode 100644
index bfc4bfb542..0000000000
--- a/editor/icons/icon_navigation_polygon.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_navigation_polygon.svg b/editor/icons/icon_navigation_polygon.svg
new file mode 100644
index 0000000000..f12f9aef34
--- /dev/null
+++ b/editor/icons/icon_navigation_polygon.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill="#e0e0e0" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4.9023a2.1002 2.1002 0 0 1 0.13086 -0.73633l0.47461-1.2637h-4.5078v-10h8.5859l-4.293 4.293a1.0001 1.0001 0 0 0 0 1.4141l1.3262 1.3262 1.4141-3.7695a2.1002 2.1002 0 0 1 1.9922 -1.3613 2.1002 2.1002 0 0 1 0.43555 0.050781l2.2461-2.2461a1.0001 1.0001 0 0 0 -0.70703 -1.707h-12z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m15 1051.4-3-8-3 8 3-2z"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_navigation_polygon_instance.png b/editor/icons/icon_navigation_polygon_instance.png
deleted file mode 100644
index 89d420ca14..0000000000
--- a/editor/icons/icon_navigation_polygon_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_navigation_polygon_instance.svg b/editor/icons/icon_navigation_polygon_instance.svg
new file mode 100644
index 0000000000..d229bd8ab4
--- /dev/null
+++ b/editor/icons/icon_navigation_polygon_instance.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h4.9023a2.1002 2.1002 0 0 1 0.13086 -0.73633l0.47461-1.2637h-4.5078v-10h8.5859l-4.293 4.293a1.0001 1.0001 0 0 0 0 1.4141l1.3262 1.3262 1.4141-3.7695a2.1002 2.1002 0 0 1 1.9922 -1.3613 2.1002 2.1002 0 0 1 0.43555 0.050781l2.2461-2.2461a1.0001 1.0001 0 0 0 -0.70703 -1.707h-12z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m15 1051.4-3-8-3 8 3-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_new.png b/editor/icons/icon_new.png
deleted file mode 100644
index b012e1f214..0000000000
--- a/editor/icons/icon_new.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_new.svg b/editor/icons/icon_new.svg
new file mode 100644
index 0000000000..1f53043c24
--- /dev/null
+++ b/editor/icons/icon_new.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 1036.4)" d="m2 1v14h8v-1h-2v-4h2v-2h4v-2h-5v-5zm8 0v4h4z" fill="#e0e0e0"/>
+<path d="m11 1045.4v2h-2v2h2v2h2v-2h2v-2h-2v-2z" fill="#84ffb1"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_nine_patch_rect.png b/editor/icons/icon_nine_patch_rect.png
deleted file mode 100644
index 721bd36d08..0000000000
--- a/editor/icons/icon_nine_patch_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_nine_patch_rect.svg b/editor/icons/icon_nine_patch_rect.svg
new file mode 100644
index 0000000000..4a8caa4816
--- /dev/null
+++ b/editor/icons/icon_nine_patch_rect.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<rect x="1" y="1037.4" width="2" height="14"/>
+<rect x="1" y="1049.4" width="14" height="2"/>
+<rect x="1" y="1037.4" width="14" height="2"/>
+<rect x="13" y="1037.4" width="2" height="14"/>
+<rect x="1" y="1041.4" width="14" height=".99998"/>
+<rect x="1" y="1046.4" width="14" height=".99998"/>
+<rect transform="rotate(90)" x="1037.4" y="-6" width="14" height=".99998"/>
+<rect transform="rotate(90)" x="1037.4" y="-11" width="14" height=".99998"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_node.png b/editor/icons/icon_node.png
deleted file mode 100644
index 628b632332..0000000000
--- a/editor/icons/icon_node.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_node.svg b/editor/icons/icon_node.svg
new file mode 100644
index 0000000000..d7f1d5b9c3
--- /dev/null
+++ b/editor/icons/icon_node.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_node_2d.png b/editor/icons/icon_node_2d.png
deleted file mode 100644
index d6c8f1f988..0000000000
--- a/editor/icons/icon_node_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_node_2d.svg b/editor/icons/icon_node_2d.svg
new file mode 100644
index 0000000000..b9a73ab1dc
--- /dev/null
+++ b/editor/icons/icon_node_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_node_real_slot.png b/editor/icons/icon_node_real_slot.png
deleted file mode 100644
index 6373bc0fa5..0000000000
--- a/editor/icons/icon_node_real_slot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_node_vec_slot.png b/editor/icons/icon_node_vec_slot.png
deleted file mode 100644
index aedd983fb4..0000000000
--- a/editor/icons/icon_node_vec_slot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_node_warning.png b/editor/icons/icon_node_warning.png
deleted file mode 100644
index 8b1e9212a8..0000000000
--- a/editor/icons/icon_node_warning.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_node_warning.svg b/editor/icons/icon_node_warning.svg
new file mode 100644
index 0000000000..5c03bad343
--- /dev/null
+++ b/editor/icons/icon_node_warning.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 -1.6949e-5)">
+<path transform="translate(0 1036.4)" d="m8.0293 2.002a1.0001 1.0001 0 0 0 -0.88672 0.48438l-6 10a1.0001 1.0001 0 0 0 0.85742 1.5137h12a1.0001 1.0001 0 0 0 0.85742 -1.5137l-6-10a1.0001 1.0001 0 0 0 -0.82812 -0.48438zm-1.0293 2.998h2v5h-2v-5zm0 6h2v2h-2v-2z" color="#000000" color-rendering="auto" fill="#ffd684" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_non_favorite.png b/editor/icons/icon_non_favorite.png
deleted file mode 100644
index 92351bde04..0000000000
--- a/editor/icons/icon_non_favorite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_non_favorite.svg b/editor/icons/icon_non_favorite.svg
new file mode 100644
index 0000000000..ede81dd2c6
--- /dev/null
+++ b/editor/icons/icon_non_favorite.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1.7246l-2.375 4.0977-4.625 1.0977 3.2363 3.4063-0.35938 4.6738 4.1387-1.9766 4.1582 1.9414-0.39648-4.6523 3.2227-3.3926-4.625-1.0977-2.375-4.0977zm0 2.2754l1.6582 2.7773 3.2324 0.74414-2.25 2.3008 0.27539 3.1543-2.9043-1.3164-2.8926 1.3398 0.25195-3.168-2.2617-2.3105 3.2324-0.74414 1.6582-2.7773z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_object.png b/editor/icons/icon_object.png
deleted file mode 100644
index f4f018c863..0000000000
--- a/editor/icons/icon_object.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_object.svg b/editor/icons/icon_object.svg
new file mode 100644
index 0000000000..223761d0d8
--- /dev/null
+++ b/editor/icons/icon_object.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-rule="evenodd">
+<path d="m8 1043.9v6l6-3v-6z"/>
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm0.037109 2.1172l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-5 3.498l4 2v3.7656l-4-2v-3.7656zm10 0v3.7656l-4 2v-3.7656l4-2z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_occluder_polygon_2d.png b/editor/icons/icon_occluder_polygon_2d.png
deleted file mode 100644
index bbfc9ac0a5..0000000000
--- a/editor/icons/icon_occluder_polygon_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_occluder_polygon_2d.svg b/editor/icons/icon_occluder_polygon_2d.svg
new file mode 100644
index 0000000000..4dfa006d38
--- /dev/null
+++ b/editor/icons/icon_occluder_polygon_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path d="m1 1045.4 6 6h8v-8l-6-6h-8z" fill="#3552b1"/>
+<path d="m1 1037.4h8l-3 4 3 4h-8z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_omni_light.png b/editor/icons/icon_omni_light.png
deleted file mode 100644
index 286ce723a4..0000000000
--- a/editor/icons/icon_omni_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_omni_light.svg b/editor/icons/icon_omni_light.svg
new file mode 100644
index 0000000000..d6c658b9e2
--- /dev/null
+++ b/editor/icons/icon_omni_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a5 5 0 0 0 -5 5 5 5 0 0 0 3 4.5762v2.4238h4v-2.4199a5 5 0 0 0 3 -4.5801 5 5 0 0 0 -5 -5zm0 2a3 3 0 0 1 3 3 3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3zm-1 11v1h2v-1h-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_open.png b/editor/icons/icon_open.png
deleted file mode 100644
index 81835efa25..0000000000
--- a/editor/icons/icon_open.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_option_arrow.png b/editor/icons/icon_option_arrow.png
deleted file mode 100644
index b7bc38e03f..0000000000
--- a/editor/icons/icon_option_arrow.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_option_button.png b/editor/icons/icon_option_button.png
deleted file mode 100644
index b67e951fef..0000000000
--- a/editor/icons/icon_option_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_option_button.svg b/editor/icons/icon_option_button.svg
new file mode 100644
index 0000000000..45aaff30c0
--- /dev/null
+++ b/editor/icons/icon_option_button.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h5 1 1 2 1c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2h-1-2-1-1-5zm8 2.9863a1.0001 1.0001 0 0 1 0.7168 1.7207l-3 3a1.0001 1.0001 0 0 1 -1.4141 0l-3-3a1.0001 1.0001 0 0 1 0.69727 -1.7168 1.0001 1.0001 0 0 1 0.7168 0.30273l2.293 2.293 2.293-2.293a1.0001 1.0001 0 0 1 0.69727 -0.30664z" fill="#a5efac"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="none"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_override.png b/editor/icons/icon_override.png
deleted file mode 100644
index 9d917ede75..0000000000
--- a/editor/icons/icon_override.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_override.svg b/editor/icons/icon_override.svg
new file mode 100644
index 0000000000..9c6fd9e177
--- /dev/null
+++ b/editor/icons/icon_override.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1c-1.108 0-2 0.89199-2 2v1h4v-1h2v1h4v-1c0-1.108-0.89199-2-2-2h-6z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m3 6c-1.108 0-2 0.89199-2 2v5c0 1.108 0.89199 2 2 2h10c1.108 0 2-0.89199 2-2v-5c0-1.108-0.89199-2-2-2h-4v3h2l-3 4-3-4h2v-3h-4z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_p_hash_translation.png b/editor/icons/icon_p_hash_translation.png
deleted file mode 100644
index abca359eea..0000000000
--- a/editor/icons/icon_p_hash_translation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_packed_data_container.png b/editor/icons/icon_packed_data_container.png
deleted file mode 100644
index af89da48a9..0000000000
--- a/editor/icons/icon_packed_data_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_packed_data_container.svg b/editor/icons/icon_packed_data_container.svg
new file mode 100644
index 0000000000..dd5aeafb86
--- /dev/null
+++ b/editor/icons/icon_packed_data_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h12a1.0001 1.0001 0 0 0 1 -1v-12a1.0001 1.0001 0 0 0 -1 -1h-12zm1 2h10v10h-10v-10zm1 1v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-6 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-6 3v2h2v-2h-2zm3 0v2h2v-2h-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_packed_scene.png b/editor/icons/icon_packed_scene.png
deleted file mode 100644
index 9079762932..0000000000
--- a/editor/icons/icon_packed_scene.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_packed_scene.svg b/editor/icons/icon_packed_scene.svg
new file mode 100644
index 0000000000..349ecd0a03
--- /dev/null
+++ b/editor/icons/icon_packed_scene.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m1 7v6h2v2h12v-8h-14z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+<circle cx="3" cy="1049.4" r="2"/>
+<circle cx="13" cy="1049.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_pane_drag.png b/editor/icons/icon_pane_drag.png
deleted file mode 100644
index 57f8e49ba3..0000000000
--- a/editor/icons/icon_pane_drag.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_pane_drag_hover.png b/editor/icons/icon_pane_drag_hover.png
deleted file mode 100644
index 068253ecef..0000000000
--- a/editor/icons/icon_pane_drag_hover.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panel.png b/editor/icons/icon_panel.png
deleted file mode 100644
index dca2da94f3..0000000000
--- a/editor/icons/icon_panel.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panel.svg b/editor/icons/icon_panel.svg
new file mode 100644
index 0000000000..aebf885e7c
--- /dev/null
+++ b/editor/icons/icon_panel.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panel_container.png b/editor/icons/icon_panel_container.png
deleted file mode 100644
index 05bd1e082f..0000000000
--- a/editor/icons/icon_panel_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panel_container.svg b/editor/icons/icon_panel_container.svg
new file mode 100644
index 0000000000..a52493b665
--- /dev/null
+++ b/editor/icons/icon_panel_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panel_top.png b/editor/icons/icon_panel_top.png
deleted file mode 100644
index 20e67fad1a..0000000000
--- a/editor/icons/icon_panel_top.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panels_1.png b/editor/icons/icon_panels_1.png
deleted file mode 100644
index a909e6aee8..0000000000
--- a/editor/icons/icon_panels_1.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panels_1.svg b/editor/icons/icon_panels_1.svg
new file mode 100644
index 0000000000..9edf59b527
--- /dev/null
+++ b/editor/icons/icon_panels_1.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect y="1036.4" width="16" height="16" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panels_2.png b/editor/icons/icon_panels_2.png
deleted file mode 100644
index 28a1ca2a59..0000000000
--- a/editor/icons/icon_panels_2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panels_2.svg b/editor/icons/icon_panels_2.svg
new file mode 100644
index 0000000000..7a2c18ecc9
--- /dev/null
+++ b/editor/icons/icon_panels_2.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect y="1036.4" width="16" height="7"/>
+<rect y="1045.4" width="16" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panels_2_alt.png b/editor/icons/icon_panels_2_alt.png
deleted file mode 100644
index 14f21304c5..0000000000
--- a/editor/icons/icon_panels_2_alt.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panels_2_alt.svg b/editor/icons/icon_panels_2_alt.svg
new file mode 100644
index 0000000000..c411650136
--- /dev/null
+++ b/editor/icons/icon_panels_2_alt.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="9" y="1036.4" width="7" height="16"/>
+<rect y="1036.4" width="7" height="16"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panels_3.png b/editor/icons/icon_panels_3.png
deleted file mode 100644
index 76f1f53636..0000000000
--- a/editor/icons/icon_panels_3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panels_3.svg b/editor/icons/icon_panels_3.svg
new file mode 100644
index 0000000000..ec5aa86540
--- /dev/null
+++ b/editor/icons/icon_panels_3.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect y="1036.4" width="16" height="7"/>
+<rect x="9" y="1045.4" width="7" height="7"/>
+<rect y="1045.4" width="7" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panels_3_alt.png b/editor/icons/icon_panels_3_alt.png
deleted file mode 100644
index b121bc62c3..0000000000
--- a/editor/icons/icon_panels_3_alt.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panels_3_alt.svg b/editor/icons/icon_panels_3_alt.svg
new file mode 100644
index 0000000000..5f8c78d471
--- /dev/null
+++ b/editor/icons/icon_panels_3_alt.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect y="1045.4" width="7" height="7"/>
+<rect x="9" y="1036.4" width="7" height="16"/>
+<rect y="1036.4" width="7" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panels_4.png b/editor/icons/icon_panels_4.png
deleted file mode 100644
index 19a3bc0bf2..0000000000
--- a/editor/icons/icon_panels_4.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panels_4.svg b/editor/icons/icon_panels_4.svg
new file mode 100644
index 0000000000..093b40b603
--- /dev/null
+++ b/editor/icons/icon_panels_4.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="9" y="1045.4" width="7" height="7"/>
+<rect y="1045.4" width="7" height="7"/>
+<rect x="9" y="1036.4" width="7" height="7"/>
+<rect y="1036.4" width="7" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_panorama_sky.png b/editor/icons/icon_panorama_sky.png
deleted file mode 100644
index 38a53afe52..0000000000
--- a/editor/icons/icon_panorama_sky.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_panorama_sky.svg b/editor/icons/icon_panorama_sky.svg
new file mode 100644
index 0000000000..f3da955dbd
--- /dev/null
+++ b/editor/icons/icon_panorama_sky.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1038.4" y2="1050.4" gradientTransform="matrix(1.0096 0 0 1.0227 -.0096153 -22.593)" gradientUnits="userSpaceOnUse">
+<stop stop-color="#1ec3ff" offset="0"/>
+<stop stop-color="#b2e1ff" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1037.4)">
+<path d="m1 1039.4c4.2749 2.6091 10.765 2.7449 14 0v12c-3.5849-2.6849-9.7929-2.6544-14 0z" fill="url(#a)" stroke-width="15.242"/>
+<rect x="2" y="1046.4" width="3" height="2" ry="1" fill="#fff"/>
+<rect x="8" y="1044.4" width="4" height="2" ry="1" fill="#fff"/>
+<rect x="10" y="1043.4" width="4" height="2" ry="1" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_parallax_background.png b/editor/icons/icon_parallax_background.png
deleted file mode 100644
index 78d7484e8b..0000000000
--- a/editor/icons/icon_parallax_background.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_parallax_background.svg b/editor/icons/icon_parallax_background.svg
new file mode 100644
index 0000000000..dc0a7ba216
--- /dev/null
+++ b/editor/icons/icon_parallax_background.svg
@@ -0,0 +1,15 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<path d="m1 1039.4a1 1 0 0 1 1 -1v1z" fill="#e0e0e0" fill-opacity=".99608"/>
+<path transform="scale(-1,1)" d="m-15 1039.4a1 1 0 0 1 1 -1v1z" fill="#e0e0e0" fill-opacity=".99608"/>
+<rect x="2" y="1038.4" width="12" height="1" fill="#e0e0e0" fill-opacity=".99608"/>
+<rect x="2" y="1049.4" width="12" height="1" fill="#e0e0e0" fill-opacity=".99608"/>
+<path transform="scale(1,-1)" d="m1-1049.4a1 1 0 0 1 1 -1v1z" fill="#e0e0e0" fill-opacity=".99608"/>
+<path transform="scale(-1)" d="m-15-1049.4a1 1 0 0 1 1 -1v1z" fill="#e0e0e0" fill-opacity=".99608"/>
+<rect x="1" y="1039.4" width="1" height="10" fill="#e0e0e0" fill-opacity=".99608"/>
+<rect x="14" y="1039.4" width="1" height="10" fill="#e0e0e0" fill-opacity=".99608"/>
+<path d="m7 1041.4-3 3 3 3z" fill="#e0e0e0" fill-opacity=".99608" fill-rule="evenodd"/>
+<path d="m9 1041.4 3 3-3 3z" fill="#e0e0e0" fill-opacity=".99608" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_parallax_layer.png b/editor/icons/icon_parallax_layer.png
deleted file mode 100644
index 748c9164bb..0000000000
--- a/editor/icons/icon_parallax_layer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_parallax_layer.svg b/editor/icons/icon_parallax_layer.svg
new file mode 100644
index 0000000000..776f7d6a6c
--- /dev/null
+++ b/editor/icons/icon_parallax_layer.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<path d="m7 1041.4-3 3 3 3z" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd"/>
+<path d="m9 1041.4 3 3-3 3z" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd"/>
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v10c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-10c9.6e-6 -0.55228 0.44772-0.99999 1-1z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_particle_attractor_2d.png b/editor/icons/icon_particle_attractor_2d.png
deleted file mode 100644
index 84be7dff3b..0000000000
--- a/editor/icons/icon_particle_attractor_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_particle_attractor_2d.svg b/editor/icons/icon_particle_attractor_2d.svg
new file mode 100644
index 0000000000..1374304af0
--- /dev/null
+++ b/editor/icons/icon_particle_attractor_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a3 7 0 0 0 -2.0801 1.9668 7 3 45 0 0 -2.8691 0.083984 7 3 45 0 0 -0.080078 2.8633 7 3 0 0 0 -1.9707 2.0859 7 3 0 0 0 1.9668 2.0801 3 7 45 0 0 0.083984 2.8691 3 7 45 0 0 2.8633 0.080078 3 7 0 0 0 2.0859 1.9707 3 7 0 0 0 2.0801 -1.9668 7 3 45 0 0 2.8691 -0.083984 7 3 45 0 0 0.080078 -2.8633 7 3 0 0 0 1.9707 -2.0859 7 3 0 0 0 -1.9668 -2.0801 3 7 45 0 0 -0.083984 -2.8691 3 7 45 0 0 -2.8633 -0.080078 3 7 0 0 0 -2.0859 -1.9707zm0 1a2 6 0 0 1 1.2598 1.3438 3 7 45 0 0 -1.2578 0.75977 7 3 45 0 0 -1.2637 -0.75781 2 6 0 0 1 1.2617 -1.3457zm-3.6348 1.5293a6 2 45 0 1 1.2344 0.28906 3 7 0 0 0 -0.35352 1.4238 7 3 0 0 0 -1.4297 0.35742 6 2 45 0 1 -0.058594 -1.8418 6 2 45 0 1 0.60742 -0.22852zm7.0762 0.0039062a2 6 45 0 1 0.80078 0.22461 2 6 45 0 1 -0.060547 1.8418 7 3 0 0 0 -1.4238 -0.35352 3 7 0 0 0 -0.35742 -1.4297 2 6 45 0 1 1.041 -0.2832zm-4.998 0.70703a6 2 45 0 1 0.74023 0.4707 3 7 45 0 0 -0.41211 0.33984 7 3 0 0 0 -0.52344 0.048828 2 6 0 0 1 0.19531 -0.85938zm3.1152 0.0019531a2 6 0 0 1 0.18945 0.85547 7 3 0 0 0 -0.5293 -0.050781 7 3 45 0 0 -0.4043 -0.33594 2 6 45 0 1 0.74414 -0.46875zm-1.5586 1.7578a6 2 0 0 1 0.82031 0.021484 6 2 45 0 1 0.59375 0.56445 6 2 45 0 1 0.56445 0.59375 2 6 0 0 1 0.021484 0.82031 2 6 0 0 1 -0.021484 0.82031 2 6 45 0 1 -0.56445 0.59375 2 6 45 0 1 -0.59375 0.56445 6 2 0 0 1 -0.82031 0.021484 6 2 0 0 1 -0.82031 -0.021484 6 2 45 0 1 -0.59375 -0.56445 6 2 45 0 1 -0.56445 -0.59375 2 6 0 0 1 -0.021484 -0.82031 2 6 0 0 1 0.021484 -0.82031 2 6 45 0 1 0.56445 -0.59375 2 6 45 0 1 0.59375 -0.56445 6 2 0 0 1 0.82031 -0.021484zm2.9004 0.24805a6 2 0 0 1 0.85938 0.19531 2 6 45 0 1 -0.4707 0.74023 7 3 45 0 0 -0.33984 -0.41211 3 7 0 0 0 -0.048828 -0.52344zm-5.8027 0.0039062a3 7 0 0 0 -0.050781 0.5293 3 7 45 0 0 -0.33594 0.4043 6 2 45 0 1 -0.46875 -0.74414 6 2 0 0 1 0.85547 -0.18945zm7.5566 0.48633a6 2 0 0 1 1.3457 1.2617 6 2 0 0 1 -1.3438 1.2598 7 3 45 0 0 -0.75977 -1.2578 3 7 45 0 0 0.75781 -1.2637zm-9.3105 0.0019532a7 3 45 0 0 0.75977 1.2578 3 7 45 0 0 -0.75781 1.2637 6 2 0 0 1 -1.3457 -1.2617 6 2 0 0 1 1.3438 -1.2598zm4.6562 0.25977a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm3.2891 1.8145a6 2 45 0 1 0.46875 0.74414 6 2 0 0 1 -0.85547 0.18945 3 7 0 0 0 0.050781 -0.5293 3 7 45 0 0 0.33594 -0.4043zm-6.5781 0.0019531a7 3 45 0 0 0.33984 0.41211 3 7 0 0 0 0.048828 0.52344 6 2 0 0 1 -0.85938 -0.19531 2 6 45 0 1 0.4707 -0.74023zm-0.89258 1.584a7 3 0 0 0 1.4238 0.35352 3 7 0 0 0 0.35742 1.4297 2 6 45 0 1 -1.8418 0.058594 2 6 45 0 1 0.060547 -1.8418zm8.3652 0a6 2 45 0 1 0.058594 1.8418 6 2 45 0 1 -1.8418 -0.060547 3 7 0 0 0 0.35352 -1.4238 7 3 0 0 0 1.4297 -0.35742zm-2.4316 0.5a2 6 0 0 1 -0.19531 0.85938 6 2 45 0 1 -0.74023 -0.4707 3 7 45 0 0 0.41211 -0.33984 7 3 0 0 0 0.52344 -0.048828zm-3.5 0.001953a7 3 0 0 0 0.5293 0.050781 7 3 45 0 0 0.4043 0.33594 2 6 45 0 1 -0.74414 0.46875 2 6 0 0 1 -0.18945 -0.85547zm1.7461 0.99414a7 3 45 0 0 1.2637 0.75781 2 6 0 0 1 -1.2617 1.3457 2 6 0 0 1 -1.2598 -1.3438 3 7 45 0 0 1.2578 -0.75977z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_particles.png b/editor/icons/icon_particles.png
deleted file mode 100644
index 8d146b2946..0000000000
--- a/editor/icons/icon_particles.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_particles.svg b/editor/icons/icon_particles.svg
new file mode 100644
index 0000000000..ff58d4e47a
--- /dev/null
+++ b/editor/icons/icon_particles.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a4.5 5 0 0 0 -4.4141 4.0312 3 3 0 0 0 -2.5859 2.9688 3 3 0 0 0 3 3h8a3 3 0 0 0 3 -3 3 3 0 0 0 -2.5898 -2.9668 4.5 5 0 0 0 -4.4102 -4.0332zm-4 11a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm8 0a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm-4 1a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_particles_2d.png b/editor/icons/icon_particles_2d.png
deleted file mode 100644
index e03ff1e189..0000000000
--- a/editor/icons/icon_particles_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_particles_2d.svg b/editor/icons/icon_particles_2d.svg
new file mode 100644
index 0000000000..397922f31f
--- /dev/null
+++ b/editor/icons/icon_particles_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a4.5 5 0 0 0 -4.4141 4.0312 3 3 0 0 0 -2.5859 2.9688 3 3 0 0 0 3 3h8a3 3 0 0 0 3 -3 3 3 0 0 0 -2.5898 -2.9668 4.5 5 0 0 0 -4.4102 -4.0332zm-4 11a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm8 0a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm-4 1a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_particles_frame.png b/editor/icons/icon_particles_frame.png
deleted file mode 100644
index 968bbccf8a..0000000000
--- a/editor/icons/icon_particles_frame.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_particles_material.png b/editor/icons/icon_particles_material.png
deleted file mode 100644
index 3b5c5644b2..0000000000
--- a/editor/icons/icon_particles_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_particles_material.svg b/editor/icons/icon_particles_material.svg
new file mode 100644
index 0000000000..95121d8321
--- /dev/null
+++ b/editor/icons/icon_particles_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a4.5 5 0 0 0 -3.5938 2h7.1816a4.5 5 0 0 0 -3.5879 -2z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m4.4062 3a4.5 5 0 0 0 -0.81445 2h8.8105a4.5 5 0 0 0 -0.81445 -2h-7.1816z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m3.5918 5a4.5 5 0 0 0 -0.0058594 0.03125 3 3 0 0 0 -2.4121 1.9688h13.65a3 3 0 0 0 -2.4141 -1.9668 4.5 5 0 0 0 -0.007812 -0.033203h-8.8105z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1.1738 7a3 3 0 0 0 -0.17383 1 3 3 0 0 0 0.17578 1h13.65a3 3 0 0 0 0.17383 -1 3 3 0 0 0 -0.17578 -1h-13.65z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1.1758 9a3 3 0 0 0 2.8242 2h8a3 3 0 0 0 2.8262 -2h-13.65z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m3 13a1 1 0 0 0 1 1 1 1 0 0 0 1 -1h-2zm5 0a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm3 0a1 1 0 0 0 1 1 1 1 0 0 0 1 -1h-2z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m4 12a1 1 0 0 0 -1 1h2a1 1 0 0 0 -1 -1zm8 0a1 1 0 0 0 -1 1h2a1 1 0 0 0 -1 -1z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_particles_shader.png b/editor/icons/icon_particles_shader.png
deleted file mode 100644
index 3b5c5644b2..0000000000
--- a/editor/icons/icon_particles_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_patch_9_rect.png b/editor/icons/icon_patch_9_rect.png
deleted file mode 100644
index bdd1467144..0000000000
--- a/editor/icons/icon_patch_9_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_path.png b/editor/icons/icon_path.png
deleted file mode 100644
index 4ebdcbdc44..0000000000
--- a/editor/icons/icon_path.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_path.svg b/editor/icons/icon_path.svg
new file mode 100644
index 0000000000..998fabb888
--- /dev/null
+++ b/editor/icons/icon_path.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="3" cy="1049.4" r="2" fill="#fc9c9c" fill-opacity=".99608"/>
+<circle cx="13" cy="1039.4" r="2" fill="#fc9c9c" fill-opacity=".99608"/>
+<path d="m3 1049.4c0-9 10-1 10-10" fill="none" stroke="#fc9c9c" stroke-opacity=".99608" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_path_2d.png b/editor/icons/icon_path_2d.png
deleted file mode 100644
index c5b0d5d7c6..0000000000
--- a/editor/icons/icon_path_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_path_2d.svg b/editor/icons/icon_path_2d.svg
new file mode 100644
index 0000000000..8d329b3f1f
--- /dev/null
+++ b/editor/icons/icon_path_2d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5b7f3" fill-opacity=".98824">
+<circle cx="3" cy="1049.4" r="2"/>
+<circle cx="13" cy="1039.4" r="2"/>
+<path d="m12 1039.4c0 2.0648-0.49246 2.8244-1.1367 3.2754-0.64426 0.451-1.7129 0.6055-2.9629 0.7305s-2.6814 0.2205-3.9121 1.082c-1.2307 0.8615-1.9883 2.4769-1.9883 4.9121h2c0-2.0648 0.49246-2.8224 1.1367-3.2734 0.64426-0.451 1.7129-0.6055 2.9629-0.7305s2.6814-0.2205 3.9121-1.082c1.2307-0.8615 1.9883-2.4789 1.9883-4.9141h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_path_follow.png b/editor/icons/icon_path_follow.png
deleted file mode 100644
index f71651d241..0000000000
--- a/editor/icons/icon_path_follow.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_path_follow.svg b/editor/icons/icon_path_follow.svg
new file mode 100644
index 0000000000..a614e2c861
--- /dev/null
+++ b/editor/icons/icon_path_follow.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c" fill-opacity=".99608">
+<circle cx="3" cy="1049.4" r="2"/>
+<path d="m12 1039.4c0 2.0648-0.49246 2.8244-1.1367 3.2754-0.64426 0.451-1.7129 0.6055-2.9629 0.7305s-2.6814 0.2205-3.9121 1.082c-1.2307 0.8615-1.9883 2.4769-1.9883 4.9121h2c0-2.0648 0.49246-2.8224 1.1367-3.2734 0.64426-0.451 1.7129-0.6055 2.9629-0.7305s2.6814-0.2205 3.9121-1.082c1.2307-0.8615 1.9883-2.4789 1.9883-4.9141h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m10 1040.4h6l-3-4z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_path_follow_2d.png b/editor/icons/icon_path_follow_2d.png
deleted file mode 100644
index d82e682dba..0000000000
--- a/editor/icons/icon_path_follow_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_path_follow_2d.svg b/editor/icons/icon_path_follow_2d.svg
new file mode 100644
index 0000000000..97e21396af
--- /dev/null
+++ b/editor/icons/icon_path_follow_2d.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5b7f3" fill-opacity=".98824">
+<circle cx="3" cy="1049.4" r="2"/>
+<path d="m12 1039.4c0 2.0648-0.49246 2.8244-1.1367 3.2754-0.64426 0.451-1.7129 0.6055-2.9629 0.7305s-2.6814 0.2205-3.9121 1.082c-1.2307 0.8615-1.9883 2.4769-1.9883 4.9121h2c0-2.0648 0.49246-2.8224 1.1367-3.2734 0.64426-0.451 1.7129-0.6055 2.9629-0.7305s2.6814-0.2205 3.9121-1.082c1.2307-0.8615 1.9883-2.4789 1.9883-4.9141h-2z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m10 1040.4h6l-3-4z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_pause.png b/editor/icons/icon_pause.png
deleted file mode 100644
index aec11d5c35..0000000000
--- a/editor/icons/icon_pause.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_pause.svg b/editor/icons/icon_pause.svg
new file mode 100644
index 0000000000..794a610ff2
--- /dev/null
+++ b/editor/icons/icon_pause.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 3a1.0001 1.0001 0 0 0 -1 1v8a1.0001 1.0001 0 0 0 1 1h2a1 1 0 0 0 1 -1v-8a1 1 0 0 0 -1 -1h-2zm6 0a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h2a1.0001 1.0001 0 0 0 1 -1v-8a1.0001 1.0001 0 0 0 -1 -1h-2z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_pe_edit.png b/editor/icons/icon_pe_edit.png
deleted file mode 100644
index 7082303a4e..0000000000
--- a/editor/icons/icon_pe_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_physics_joint_pin.png b/editor/icons/icon_physics_joint_pin.png
deleted file mode 100644
index 27ac67ed0a..0000000000
--- a/editor/icons/icon_physics_joint_pin.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_pin.png b/editor/icons/icon_pin.png
deleted file mode 100644
index cf89679f88..0000000000
--- a/editor/icons/icon_pin.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_pin.svg b/editor/icons/icon_pin.svg
new file mode 100644
index 0000000000..b0f4ae4e99
--- /dev/null
+++ b/editor/icons/icon_pin.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m3 1046.4h10l-2-3h-6z" fill-rule="evenodd"/>
+<path transform="translate(0 1036.4)" d="m4 1v1l1 1v3h6v-3l1-1v-1h-8z" fill-rule="evenodd"/>
+<rect x="7" y="1047.4" width="2" height="2"/>
+<path d="m7 1049.4 1 2 1-2h-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_pin_joint.png b/editor/icons/icon_pin_joint.png
deleted file mode 100644
index 78e8a83724..0000000000
--- a/editor/icons/icon_pin_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_pin_joint.svg b/editor/icons/icon_pin_joint.svg
new file mode 100644
index 0000000000..028981a95a
--- /dev/null
+++ b/editor/icons/icon_pin_joint.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c">
+<path d="m1.9289 1043.3 7.0711 7.071l0.70711-3.5355-4.2426-4.2426z" fill-rule="evenodd"/>
+<path d="m9 1037.6-0.70711 0.7071v1.4142l-2.1213 2.1214 4.2426 4.2426 2.1213-2.1213h1.4142l0.70711-0.7071-5.6569-5.6569z" fill-rule="evenodd"/>
+<rect transform="matrix(.70711 .70711 -.70711 .70711 0 0)" x="743.08" y="737.35" width="2" height="2"/>
+<path d="m2.636 1048.2-0.70711 2.1213 2.1213-0.7071-1.4142-1.4142z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_pin_joint_2d.png b/editor/icons/icon_pin_joint_2d.png
deleted file mode 100644
index 355d5a2022..0000000000
--- a/editor/icons/icon_pin_joint_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_pin_joint_2d.svg b/editor/icons/icon_pin_joint_2d.svg
new file mode 100644
index 0000000000..d07fb81c79
--- /dev/null
+++ b/editor/icons/icon_pin_joint_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1.2715l-0.70703 0.70703v1.4141l-2.1211 2.123 4.2422 4.2422 2.1211-2.1211h1.4141l0.70703-0.70703-5.6562-5.6582zm-3.5352 4.9512l-3.5352 0.70703 7.0703 7.0703 0.70703-3.5352-4.2422-4.2422zm-1.4141 4.2422l-1.4141 1.4141-0.70703 2.1211 2.1211-0.70703 1.4141-1.4141-1.4141-1.4141z" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_pin_pressed.png b/editor/icons/icon_pin_pressed.png
deleted file mode 100644
index cf89679f88..0000000000
--- a/editor/icons/icon_pin_pressed.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_pin_pressed.svg b/editor/icons/icon_pin_pressed.svg
new file mode 100644
index 0000000000..b0f4ae4e99
--- /dev/null
+++ b/editor/icons/icon_pin_pressed.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m3 1046.4h10l-2-3h-6z" fill-rule="evenodd"/>
+<path transform="translate(0 1036.4)" d="m4 1v1l1 1v3h6v-3l1-1v-1h-8z" fill-rule="evenodd"/>
+<rect x="7" y="1047.4" width="2" height="2"/>
+<path d="m7 1049.4 1 2 1-2h-2z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_plane.png b/editor/icons/icon_plane.png
deleted file mode 100644
index 25d869f31e..0000000000
--- a/editor/icons/icon_plane.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_plane.svg b/editor/icons/icon_plane.svg
new file mode 100644
index 0000000000..d0525e13dc
--- /dev/null
+++ b/editor/icons/icon_plane.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1044.4 7 3 7-3-7-3z" fill="#e0e0e0" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_plane_mesh.png b/editor/icons/icon_plane_mesh.png
deleted file mode 100644
index 8b86099d67..0000000000
--- a/editor/icons/icon_plane_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_plane_mesh.svg b/editor/icons/icon_plane_mesh.svg
new file mode 100644
index 0000000000..7a5c8f4354
--- /dev/null
+++ b/editor/icons/icon_plane_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1048.4h12l-3-8h-6z" fill="none" stroke="#ffd684" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_plane_shape.png b/editor/icons/icon_plane_shape.png
deleted file mode 100644
index e7ebe1fbcd..0000000000
--- a/editor/icons/icon_plane_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_plane_shape.svg b/editor/icons/icon_plane_shape.svg
new file mode 100644
index 0000000000..27395b6a42
--- /dev/null
+++ b/editor/icons/icon_plane_shape.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m1 1044.4 7 3 7-3-7-3z" fill="#a2d2ff" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_play.png b/editor/icons/icon_play.png
deleted file mode 100644
index 864e4e4fb9..0000000000
--- a/editor/icons/icon_play.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_play.svg b/editor/icons/icon_play.svg
new file mode 100644
index 0000000000..7b96840a44
--- /dev/null
+++ b/editor/icons/icon_play.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m4 1048.4v-8l7 4z" fill="#e0e0e0" fill-rule="evenodd" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_play_backwards.png b/editor/icons/icon_play_backwards.png
deleted file mode 100644
index bab2858373..0000000000
--- a/editor/icons/icon_play_backwards.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_play_backwards.svg b/editor/icons/icon_play_backwards.svg
new file mode 100644
index 0000000000..bb6ae76e0d
--- /dev/null
+++ b/editor/icons/icon_play_backwards.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m12 1048.4v-8l-7 4z" fill="#e0e0e0" fill-rule="evenodd" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_play_button_group.png b/editor/icons/icon_play_button_group.png
deleted file mode 100644
index 83820c8e0c..0000000000
--- a/editor/icons/icon_play_button_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_play_custom.png b/editor/icons/icon_play_custom.png
deleted file mode 100644
index b742e131ca..0000000000
--- a/editor/icons/icon_play_custom.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_play_custom.svg b/editor/icons/icon_play_custom.svg
new file mode 100644
index 0000000000..9da56dc19e
--- /dev/null
+++ b/editor/icons/icon_play_custom.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m1 7v6a2 2 0 0 0 2 2h12v-8h-14zm3 1h4v1h4v5h-4-4v-5-1z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_play_scene.png b/editor/icons/icon_play_scene.png
deleted file mode 100644
index ebba318799..0000000000
--- a/editor/icons/icon_play_scene.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_play_scene.svg b/editor/icons/icon_play_scene.svg
new file mode 100644
index 0000000000..aef7b9e803
--- /dev/null
+++ b/editor/icons/icon_play_scene.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m1 7v6h2v2h12v-8h-14zm5 1l5 3-5 3v-6z"/>
+<path d="m0.71129 1040.4 0.28871 1.9791l2.2438-0.3273-0.81826-1.9018-1.7143 0.25zm3.6933-0.5387 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5775 0.81826 1.9018 1.9791-0.2887-0.81826-1.9018-1.9791 0.2887zm3.9581-0.5774 0.81826 1.9018 1.7143-0.25-0.28871-1.9791-2.2438 0.3273z"/>
+<circle cx="3" cy="1049.4" r="2"/>
+<circle cx="13" cy="1049.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_play_start.png b/editor/icons/icon_play_start.png
deleted file mode 100644
index dacc156614..0000000000
--- a/editor/icons/icon_play_start.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_play_start.svg b/editor/icons/icon_play_start.svg
new file mode 100644
index 0000000000..9c75dca2a1
--- /dev/null
+++ b/editor/icons/icon_play_start.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m7.0001 1048.4v-8l7 4z" fill-rule="evenodd" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+<path d="m3 1039.4c0.55226 1e-4 0.99994 0.4477 1 1v8c-5.5e-5 0.5523-0.44774 0.9999-1 1h-1v-1h-1v-8h1v-1z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<circle transform="scale(-1,1)" cx="-2" cy="1040.4" r="1"/>
+<circle transform="scale(-1,1)" cx="-2" cy="1048.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_play_start_backwards.png b/editor/icons/icon_play_start_backwards.png
deleted file mode 100644
index 7608e18cba..0000000000
--- a/editor/icons/icon_play_start_backwards.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_play_start_backwards.svg b/editor/icons/icon_play_start_backwards.svg
new file mode 100644
index 0000000000..eede120ae7
--- /dev/null
+++ b/editor/icons/icon_play_start_backwards.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m8.9999 1048.4v-8l-7 4z" fill-rule="evenodd" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+<path d="m13 1039.4c-0.55226 1e-4 -0.99994 0.4477-1 1v8c5.5e-5 0.5523 0.44774 0.9999 1 1h1v-1h1v-8h-1v-1z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<circle cx="14" cy="1040.4" r="1"/>
+<circle cx="14" cy="1048.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_polygon_2_d.svg b/editor/icons/icon_polygon_2_d.svg
new file mode 100644
index 0000000000..fe3846adcb
--- /dev/null
+++ b/editor/icons/icon_polygon_2_d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m14 1050.4h-12v-12h12l-6 6z" fill="none" stroke="#a5b7f3" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_polygon_2d.png b/editor/icons/icon_polygon_2d.png
deleted file mode 100644
index b372749cb0..0000000000
--- a/editor/icons/icon_polygon_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_polygon_path_finder.png b/editor/icons/icon_polygon_path_finder.png
deleted file mode 100644
index 9d76d872db..0000000000
--- a/editor/icons/icon_polygon_path_finder.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_polygon_path_finder.svg b/editor/icons/icon_polygon_path_finder.svg
new file mode 100644
index 0000000000..5c1cb86b84
--- /dev/null
+++ b/editor/icons/icon_polygon_path_finder.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 5.52e-5 -0.99994 0.44774-1 1v1h2v-2h-1zm3 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h1.4141l0.29297-0.29297c0.62956-0.62999 0.18361-1.7067-0.70703-1.707h-1zm-12 4v2h2v-2h-2zm11 2l-3 8 3-2 3 2-3-8zm-11 2v2h2v-2h-2zm0 4v1c5.52e-5 0.55226 0.44774 0.99994 1 1h1v-2h-2zm4 0v2h1.9023c-7.835e-4 -0.2513 0.043539-0.50069 0.13086-0.73633l0.47461-1.2637h-2.5078z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_popup.png b/editor/icons/icon_popup.png
deleted file mode 100644
index 4dda9e50f9..0000000000
--- a/editor/icons/icon_popup.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_popup.svg b/editor/icons/icon_popup.svg
new file mode 100644
index 0000000000..bcd77b21a1
--- /dev/null
+++ b/editor/icons/icon_popup.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm4 2h2v6h-2v-6zm0 8h2v2h-2v-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_popup_dialog.png b/editor/icons/icon_popup_dialog.png
deleted file mode 100644
index 82b011e06c..0000000000
--- a/editor/icons/icon_popup_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_popup_dialog.svg b/editor/icons/icon_popup_dialog.svg
new file mode 100644
index 0000000000..6fed66e8e4
--- /dev/null
+++ b/editor/icons/icon_popup_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2h-10zm9 1h1v1h-1v-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8h-14zm6 1h2v5h-2v-5zm0 6h2v2h-2v-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_popup_menu.png b/editor/icons/icon_popup_menu.png
deleted file mode 100644
index 28d928a98e..0000000000
--- a/editor/icons/icon_popup_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_popup_menu.svg b/editor/icons/icon_popup_menu.svg
new file mode 100644
index 0000000000..05e60d7d41
--- /dev/null
+++ b/editor/icons/icon_popup_menu.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m2 6a1 1 0 0 0 -1 1v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-7a1 1 0 0 0 -1 -1h-12zm1 2h10v2h-10v-2zm0 3h10v2h-10v-2z"/>
+<path transform="translate(0 1036.4)" d="m1 1v4h6v-4h-6zm1 1h4l-2 2-2-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_popup_panel.png b/editor/icons/icon_popup_panel.png
deleted file mode 100644
index 90c86c2c05..0000000000
--- a/editor/icons/icon_popup_panel.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_popup_panel.svg b/editor/icons/icon_popup_panel.svg
new file mode 100644
index 0000000000..ce4e7c283c
--- /dev/null
+++ b/editor/icons/icon_popup_panel.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m2 6c-0.55228 0-1 0.44772-1 1v7c0 0.55228 0.44772 1 1 1h12c0.55228 0 1-0.44772 1-1v-7c0-0.55228-0.44772-1-1-1z"/>
+<path transform="translate(0 1036.4)" d="m1 1v4h6v-4h-6zm1 1h4l-2 2-2-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_portal.png b/editor/icons/icon_portal.png
deleted file mode 100644
index b10aee650d..0000000000
--- a/editor/icons/icon_portal.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_portal.svg b/editor/icons/icon_portal.svg
new file mode 100644
index 0000000000..7fc35ee298
--- /dev/null
+++ b/editor/icons/icon_portal.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a5 7 0 0 0 -5 7 5 7 0 0 0 5 7 5 7 0 0 0 5 -7 5 7 0 0 0 -5 -7zm0 2a3 5 0 0 1 3 5 3 5 0 0 1 -3 5 3 5 0 0 1 -3 -5 3 5 0 0 1 3 -5z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_position_2d.png b/editor/icons/icon_position_2d.png
deleted file mode 100644
index da7446e3e2..0000000000
--- a/editor/icons/icon_position_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_position_2d.svg b/editor/icons/icon_position_2d.svg
new file mode 100644
index 0000000000..c04484d27b
--- /dev/null
+++ b/editor/icons/icon_position_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v4h2v-4h-2zm-6 6v2h4v-2h-4zm10 0v2h4v-2h-4zm-4 4v4h2v-4h-2z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_position_3d.png b/editor/icons/icon_position_3d.png
deleted file mode 100644
index a36bca3260..0000000000
--- a/editor/icons/icon_position_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_position_3d.svg b/editor/icons/icon_position_3d.svg
new file mode 100644
index 0000000000..b52657fc49
--- /dev/null
+++ b/editor/icons/icon_position_3d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v4h2v-4h-2zm-6 6v2h4v-2h-4zm10 0v2h4v-2h-4zm-4 4v4h2v-4h-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_prev_scene.png b/editor/icons/icon_prev_scene.png
deleted file mode 100644
index 9d8dda5180..0000000000
--- a/editor/icons/icon_prev_scene.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_prism_mesh.png b/editor/icons/icon_prism_mesh.png
deleted file mode 100644
index 49f773765f..0000000000
--- a/editor/icons/icon_prism_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_prism_mesh.svg b/editor/icons/icon_prism_mesh.svg
new file mode 100644
index 0000000000..68dfa117f7
--- /dev/null
+++ b/editor/icons/icon_prism_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9824 1.002a1.0001 1.0001 0 0 0 -0.81445 0.44336l-5.9727 8.9609-0.027344 0.039062a1 1 0 0 0 -0.0625 0.10742 1 1 0 0 0 0.44727 1.3418l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1 1 0 0 0 0.44726 -1.3418 1 1 0 0 0 -0.0625 -0.10742l-6-9a1.0001 1.0001 0 0 0 -0.84961 -0.44336zm-0.98242 4.3008v7.0801l-3.5391-1.7715 3.5391-5.3086zm2 0l3.5391 5.3086-3.5391 1.7715v-7.0801z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ffd684" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_procedural_sky.png b/editor/icons/icon_procedural_sky.png
deleted file mode 100644
index 484bcde038..0000000000
--- a/editor/icons/icon_procedural_sky.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_procedural_sky.svg b/editor/icons/icon_procedural_sky.svg
new file mode 100644
index 0000000000..b3bc927409
--- /dev/null
+++ b/editor/icons/icon_procedural_sky.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x1="8" x2="8" y1="1040.4" y2="1050.4" gradientUnits="userSpaceOnUse">
+<stop stop-color="#1ec3ff" offset="0"/>
+<stop stop-color="#b2e1ff" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1037.4)">
+<path d="m8 1040.4a7 7 0 0 0 -7 7 7 7 0 0 0 0.68555 3h12.631a7 7 0 0 0 0.68359 -3 7 7 0 0 0 -7 -7z" fill="url(#a)"/>
+<rect x="2" y="1047.4" width="3" height="2" ry="1" fill="#fff"/>
+<rect x="7" y="1045.4" width="4" height="2" ry="1" fill="#fff"/>
+<rect x="9" y="1044.4" width="4" height="2" ry="1" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_1.png b/editor/icons/icon_progress_1.png
deleted file mode 100644
index 34196ec2dd..0000000000
--- a/editor/icons/icon_progress_1.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_1.svg b/editor/icons/icon_progress_1.svg
new file mode 100644
index 0000000000..2df93a13f7
--- /dev/null
+++ b/editor/icons/icon_progress_1.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".99608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_2.png b/editor/icons/icon_progress_2.png
deleted file mode 100644
index 6f683f2473..0000000000
--- a/editor/icons/icon_progress_2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_2.svg b/editor/icons/icon_progress_2.svg
new file mode 100644
index 0000000000..9af1ff7c3d
--- /dev/null
+++ b/editor/icons/icon_progress_2.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".99608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_3.png b/editor/icons/icon_progress_3.png
deleted file mode 100644
index 82202d28a6..0000000000
--- a/editor/icons/icon_progress_3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_3.svg b/editor/icons/icon_progress_3.svg
new file mode 100644
index 0000000000..92489f013c
--- /dev/null
+++ b/editor/icons/icon_progress_3.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".99608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_4.png b/editor/icons/icon_progress_4.png
deleted file mode 100644
index 70198ab26a..0000000000
--- a/editor/icons/icon_progress_4.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_4.svg b/editor/icons/icon_progress_4.svg
new file mode 100644
index 0000000000..5acd6c3936
--- /dev/null
+++ b/editor/icons/icon_progress_4.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_5.png b/editor/icons/icon_progress_5.png
deleted file mode 100644
index b5f4bdcdec..0000000000
--- a/editor/icons/icon_progress_5.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_5.svg b/editor/icons/icon_progress_5.svg
new file mode 100644
index 0000000000..8c4d1abcc3
--- /dev/null
+++ b/editor/icons/icon_progress_5.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".99608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_6.png b/editor/icons/icon_progress_6.png
deleted file mode 100644
index df8f27c60d..0000000000
--- a/editor/icons/icon_progress_6.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_6.svg b/editor/icons/icon_progress_6.svg
new file mode 100644
index 0000000000..c91a5d7e9e
--- /dev/null
+++ b/editor/icons/icon_progress_6.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".99608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_7.png b/editor/icons/icon_progress_7.png
deleted file mode 100644
index 892d5b53ba..0000000000
--- a/editor/icons/icon_progress_7.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_7.svg b/editor/icons/icon_progress_7.svg
new file mode 100644
index 0000000000..b28175215d
--- /dev/null
+++ b/editor/icons/icon_progress_7.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".19608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".99608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_8.png b/editor/icons/icon_progress_8.png
deleted file mode 100644
index c593afb7dd..0000000000
--- a/editor/icons/icon_progress_8.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_8.svg b/editor/icons/icon_progress_8.svg
new file mode 100644
index 0000000000..f88fbe308d
--- /dev/null
+++ b/editor/icons/icon_progress_8.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m9 1037.4v3.0547a4 4 0 0 1 1.0273 0.4258l2.1582-2.1582a7 7 0 0 0 -3.1855 -1.3223z" fill-opacity=".19608"/>
+<path d="m7 1037.4a7 7 0 0 0 -3.1855 1.3203l2.1582 2.1582a4 4 0 0 1 1.0273 -0.4277v-3.0508z" fill-opacity=".99608"/>
+<path d="m2.4004 1040.2a7 7 0 0 0 -1.3223 3.1855h3.0547a4 4 0 0 1 0.42578 -1.0273l-2.1582-2.1582z" fill-opacity=".19608"/>
+<path d="m13.6 1040.2-2.1582 2.1582a4 4 0 0 1 0.42774 1.0273h3.0508a7 7 0 0 0 -1.3203 -3.1855z" fill-opacity=".19608"/>
+<path d="m1.0801 1045.4a7 7 0 0 0 1.3203 3.1855l2.1582-2.1582a4 4 0 0 1 -0.42773 -1.0273h-3.0508z" fill-opacity=".19608"/>
+<path d="m11.867 1045.4a4 4 0 0 1 -0.42578 1.0273l2.1582 2.1582a7 7 0 0 0 1.3223 -3.1855h-3.0547z" fill-opacity=".19608"/>
+<path d="m5.9727 1047.8-2.1582 2.1582a7 7 0 0 0 3.1855 1.3223v-3.0547a4 4 0 0 1 -1.0273 -0.4258z" fill-opacity=".19608"/>
+<path d="m10.027 1047.8a4 4 0 0 1 -1.0273 0.4277v3.0508a7 7 0 0 0 3.1855 -1.3203l-2.1582-2.1582z" fill-opacity=".19608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_progress_bar.png b/editor/icons/icon_progress_bar.png
deleted file mode 100644
index 30822dd7a8..0000000000
--- a/editor/icons/icon_progress_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_progress_bar.svg b/editor/icons/icon_progress_bar.svg
new file mode 100644
index 0000000000..f068d3e810
--- /dev/null
+++ b/editor/icons/icon_progress_bar.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2zm0 2h10v6h-10z"/>
+<rect x="4" y="1042.4" width="1" height="4"/>
+<rect x="6" y="1042.4" width="1" height="4"/>
+<rect x="8" y="1042.4" width="1" height="4"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_property_editor.png b/editor/icons/icon_property_editor.png
deleted file mode 100644
index 5ee0ab8068..0000000000
--- a/editor/icons/icon_property_editor.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_proximity_group.png b/editor/icons/icon_proximity_group.png
deleted file mode 100644
index 230ca752ec..0000000000
--- a/editor/icons/icon_proximity_group.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_proximity_group.svg b/editor/icons/icon_proximity_group.svg
new file mode 100644
index 0000000000..536060dc7e
--- /dev/null
+++ b/editor/icons/icon_proximity_group.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c" fill-opacity=".99608">
+<rect x="1" y="1037.4" width="2" height="14"/>
+<rect x="1" y="1037.4" width="14" height="2"/>
+<rect transform="scale(-1)" x="-15" y="-1051.4" width="2" height="14"/>
+<rect transform="scale(-1)" x="-15" y="-1051.4" width="14" height="2"/>
+<circle cx="10.5" cy="1041.9" r="1.5"/>
+<circle cx="5.5" cy="1046.9" r="1.5"/>
+<circle cx="10.5" cy="1046.9" r="1.5"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_quad.png b/editor/icons/icon_quad.png
deleted file mode 100644
index a1b31b026b..0000000000
--- a/editor/icons/icon_quad.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_quad.svg b/editor/icons/icon_quad.svg
new file mode 100644
index 0000000000..72a97c2cf3
--- /dev/null
+++ b/editor/icons/icon_quad.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2 10 2h2 12v-2-12h-12-2zm3.4141 2h8.5859v8.5859l-8.5859-8.5859zm-1.4141 1.4141l8.5859 8.5859h-8.5859v-8.5859z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_quad_mesh.png b/editor/icons/icon_quad_mesh.png
deleted file mode 100644
index 52f19899a3..0000000000
--- a/editor/icons/icon_quad_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_quad_mesh.svg b/editor/icons/icon_quad_mesh.svg
new file mode 100644
index 0000000000..bf7b593e9e
--- /dev/null
+++ b/editor/icons/icon_quad_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1037.4v14h-14v-14zm-2 2h-8.5859l8.5859 8.5859zm-10 1.4141v8.5859h8.5859z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ffd684" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_quat.png b/editor/icons/icon_quat.png
deleted file mode 100644
index 0fcaa35b56..0000000000
--- a/editor/icons/icon_quat.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_quat.svg b/editor/icons/icon_quat.svg
new file mode 100644
index 0000000000..076770360c
--- /dev/null
+++ b/editor/icons/icon_quat.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m7 1v6h2v-6h-2zm0 12v2h2v-2h-2z"/>
+<path d="m11 1039.8v2.0137a5 2 0 0 1 2 1.5957 5 2 0 0 1 -5 2 5 2 0 0 1 -5 -2 5 2 0 0 1 2 -1.5977v-2.0097a7 4 0 0 0 -4 3.6074 7 4 0 0 0 7 4 7 4 0 0 0 7 -4 7 4 0 0 0 -4 -3.6094z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_range.png b/editor/icons/icon_range.png
deleted file mode 100644
index 6e46df9690..0000000000
--- a/editor/icons/icon_range.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_range.svg b/editor/icons/icon_range.svg
new file mode 100644
index 0000000000..e8b62cd723
--- /dev/null
+++ b/editor/icons/icon_range.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<rect x="1" y="1039.4" width="2" height="10"/>
+<rect x="1" y="1043.4" width="13" height="2"/>
+<rect x="13" y="1039.4" width="2" height="10"/>
+<rect x="5" y="1041.4" width="2" height="6"/>
+<rect x="9" y="1041.4" width="2" height="6"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rating_no_star.png b/editor/icons/icon_rating_no_star.png
deleted file mode 100644
index e7421bdb13..0000000000
--- a/editor/icons/icon_rating_no_star.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rating_no_star.svg b/editor/icons/icon_rating_no_star.svg
new file mode 100644
index 0000000000..f46f90eae9
--- /dev/null
+++ b/editor/icons/icon_rating_no_star.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill="#c3ae65">
+<path transform="translate(0 1036.4)" d="m8 1.7246-2.375 4.0977-4.625 1.0977 3.2363 3.4063-0.35938 4.6738 4.1387-1.9766 4.1582 1.9414-0.39648-4.6523 3.2227-3.3926-4.625-1.0977z" fill="#ffd684" fill-opacity=".58824"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_rating_star.png b/editor/icons/icon_rating_star.png
deleted file mode 100644
index b2a7e01322..0000000000
--- a/editor/icons/icon_rating_star.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rating_star.svg b/editor/icons/icon_rating_star.svg
new file mode 100644
index 0000000000..f4a0199007
--- /dev/null
+++ b/editor/icons/icon_rating_star.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1038.1-2.3741 4.0973-4.6259 1.0978l3.2361 3.4074-0.35866 4.6735 4.1389-1.9766 4.1572 1.9421-0.39534-4.6532 3.2218-3.3932-4.6259-1.0978-2.3741-4.0973z" fill="#ffd684"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_ray_cast.png b/editor/icons/icon_ray_cast.png
deleted file mode 100644
index 19cba12d1d..0000000000
--- a/editor/icons/icon_ray_cast.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_ray_cast.svg b/editor/icons/icon_ray_cast.svg
new file mode 100644
index 0000000000..ab2a9a58c8
--- /dev/null
+++ b/editor/icons/icon_ray_cast.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c" fill-opacity=".99608">
+<rect x="7" y="1037.4" width="2" height="9"/>
+<path d="m4 1046.4h8l-4 5z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_ray_cast_2d.png b/editor/icons/icon_ray_cast_2d.png
deleted file mode 100644
index 2a5054ab00..0000000000
--- a/editor/icons/icon_ray_cast_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_ray_cast_2d.svg b/editor/icons/icon_ray_cast_2d.svg
new file mode 100644
index 0000000000..1451a73310
--- /dev/null
+++ b/editor/icons/icon_ray_cast_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v9h-3l4 5 4-5h-3v-9h-2z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_ray_shape.png b/editor/icons/icon_ray_shape.png
deleted file mode 100644
index a3188d1a3a..0000000000
--- a/editor/icons/icon_ray_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_ray_shape.svg b/editor/icons/icon_ray_shape.svg
new file mode 100644
index 0000000000..4591b0a3f9
--- /dev/null
+++ b/editor/icons/icon_ray_shape.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-rule="evenodd">
+<path d="m8 1051.4-2-2v-7l2 2z" fill="#a2d2ff"/>
+<path d="m8 1047.9-2-1.5v-4l2 2z" fill="#2998ff"/>
+<path d="m8 1037.4-6 5 6 4z" fill="#a2d2ff"/>
+<path d="m8 1051.4 2-2v-7l-2 2z" fill="#2998ff"/>
+<path d="m8 1037.4 6 5-6 4z" fill="#2998ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_ray_shape_2d.png b/editor/icons/icon_ray_shape_2d.png
deleted file mode 100644
index c91a63570d..0000000000
--- a/editor/icons/icon_ray_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_ray_shape_2d.svg b/editor/icons/icon_ray_shape_2d.svg
new file mode 100644
index 0000000000..89533b8407
--- /dev/null
+++ b/editor/icons/icon_ray_shape_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#68b6ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+<path d="m8 1038.4v12"/>
+<path d="m5 1047.4 3 3 3-3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rayito.png b/editor/icons/icon_rayito.png
deleted file mode 100644
index 1afb5975d1..0000000000
--- a/editor/icons/icon_rayito.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rayito.svg b/editor/icons/icon_rayito.svg
new file mode 100644
index 0000000000..e1891e783a
--- /dev/null
+++ b/editor/icons/icon_rayito.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ffd684">
+<rect transform="matrix(1 0 -.14142 .98995 0 0)" x="152.19" y="1047.9" width="7" height="7.0711"/>
+<path d="m6 1043.4h8l-9 8z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_real.png b/editor/icons/icon_real.png
deleted file mode 100644
index 555b61427f..0000000000
--- a/editor/icons/icon_real.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_real.svg b/editor/icons/icon_real.svg
new file mode 100644
index 0000000000..68f477f727
--- /dev/null
+++ b/editor/icons/icon_real.svg
@@ -0,0 +1,11 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#cf68ea">
+<rect x="3" y="1040.4" width="2" height="11"/>
+<rect x="3" y="1039.4" width="4" height="2"/>
+<path transform="translate(0 1038.4)" d="m7 1v2a2 2 0 0 1 2 2 2 2 0 0 1 -2 2v2a4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4z"/>
+<rect x="3" y="1045.4" width="4" height="2"/>
+<rect transform="rotate(90)" x="1049.4" y="-12" width="2" height="2"/>
+<path transform="translate(0 1038.4)" d="m8 7v2a2 2 0 0 1 2 2h2a4 4 0 0 0 -4 -4z"/>
+<rect transform="rotate(90)" x="1045.4" y="-8" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rect2.png b/editor/icons/icon_rect2.png
deleted file mode 100644
index cf3cfe3b22..0000000000
--- a/editor/icons/icon_rect2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rect3.png b/editor/icons/icon_rect3.png
deleted file mode 100644
index 8eacfff207..0000000000
--- a/editor/icons/icon_rect3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rectangle_shape_2d.png b/editor/icons/icon_rectangle_shape_2d.png
deleted file mode 100644
index 002730b942..0000000000
--- a/editor/icons/icon_rectangle_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rectangle_shape_2d.svg b/editor/icons/icon_rectangle_shape_2d.svg
new file mode 100644
index 0000000000..d5cf89f5dc
--- /dev/null
+++ b/editor/icons/icon_rectangle_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1040.4" width="12" height="8" rx="1.7383e-5" ry="1.7383e-5" color="#000000" fill="none" stroke="#68b6ff" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_reference_rect.png b/editor/icons/icon_reference_rect.png
deleted file mode 100644
index 3d08ee4f76..0000000000
--- a/editor/icons/icon_reference_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_reference_rect.svg b/editor/icons/icon_reference_rect.svg
new file mode 100644
index 0000000000..6756d4bb2f
--- /dev/null
+++ b/editor/icons/icon_reference_rect.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<rect x="1" y="1037.4" width="2" height="2"/>
+<rect x="13" y="1037.4" width="2" height="2"/>
+<rect x="4" y="1037.4" width="8" height="2"/>
+<rect x="4" y="1049.4" width="8" height="2"/>
+<rect x="13" y="1049.4" width="2" height="2"/>
+<rect x="1" y="1049.4" width="2" height="2"/>
+<rect transform="rotate(90)" x="1040.4" y="-3" width="8" height="2"/>
+<rect transform="rotate(90)" x="1040.4" y="-15" width="8" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_reflection_probe.png b/editor/icons/icon_reflection_probe.png
deleted file mode 100644
index a6646114fb..0000000000
--- a/editor/icons/icon_reflection_probe.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_reflection_probe.svg b/editor/icons/icon_reflection_probe.svg
new file mode 100644
index 0000000000..0a7f537737
--- /dev/null
+++ b/editor/icons/icon_reflection_probe.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="none" stroke="#fc9c9c" stroke-linejoin="round" stroke-opacity=".99608" stroke-width="2">
+<path d="m2 1045.4v5h12v-4"/>
+<path d="m2 1040.4 5 6 7-7"/>
+<path d="m14 1043.4v-4h-4" stroke-linecap="round"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_region_edit.png b/editor/icons/icon_region_edit.png
deleted file mode 100644
index 5f133072d4..0000000000
--- a/editor/icons/icon_region_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_region_edit.svg b/editor/icons/icon_region_edit.svg
new file mode 100644
index 0000000000..484af3db71
--- /dev/null
+++ b/editor/icons/icon_region_edit.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="6" y="1042.4" width="6" height="6"/>
+<rect x="6" y="1037.4" width="6" height="4" fill-opacity=".32549"/>
+<rect x="1" y="1037.4" width="4" height="4" fill-opacity=".32549"/>
+<rect x="1" y="1042.4" width="4" height="6" fill-opacity=".32549"/>
+<rect x="1" y="1049.4" width="4" height="2" fill-opacity=".32549"/>
+<rect x="6" y="1049.4" width="6" height="2" fill-opacity=".32549"/>
+<rect x="13" y="1042.4" width="2" height="6" fill-opacity=".32549"/>
+<rect x="13" y="1037.4" width="2" height="4" fill-opacity=".32549"/>
+<rect x="13" y="1049.4" width="2" height="2" fill-opacity=".32549"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_reload.png b/editor/icons/icon_reload.png
deleted file mode 100644
index 9303fabb9c..0000000000
--- a/editor/icons/icon_reload.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_reload.svg b/editor/icons/icon_reload.svg
new file mode 100644
index 0000000000..ae0cf02170
--- /dev/null
+++ b/editor/icons/icon_reload.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m9 2a6 6 0 0 0 -6 6h2a4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -4 4v2a6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z"/>
+<path transform="matrix(0 -1.1926 1.5492 0 -1617 1049.3)" d="m4.118 1048.3-1.6771-0.9683-1.6771-0.9682 1.6771-0.9683 1.6771-0.9682-1e-7 1.9365z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_reload_empty.png b/editor/icons/icon_reload_empty.png
deleted file mode 100644
index d43582b2c4..0000000000
--- a/editor/icons/icon_reload_empty.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_reload_small.png b/editor/icons/icon_reload_small.png
deleted file mode 100644
index 1397ac6aa5..0000000000
--- a/editor/icons/icon_reload_small.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_reload_small.svg b/editor/icons/icon_reload_small.svg
new file mode 100644
index 0000000000..270c045964
--- /dev/null
+++ b/editor/icons/icon_reload_small.svg
@@ -0,0 +1,6 @@
+<svg width="14" height="14" version="1.1" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1038.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path d="m8 1039.4a6 6 0 0 0 -6 6h2a4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -4 4v2a6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6z"/>
+<path transform="matrix(0 -1.1926 1.5492 0 -1618 1050.3)" d="m4.118 1048.3-1.6771-0.9683-1.6771-0.9682 1.6771-0.9683 1.6771-0.9682-1e-7 1.9365z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_remote.png b/editor/icons/icon_remote.png
deleted file mode 100644
index 7eb7608b13..0000000000
--- a/editor/icons/icon_remote.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_remote.svg b/editor/icons/icon_remote.svg
new file mode 100644
index 0000000000..2066464a82
--- /dev/null
+++ b/editor/icons/icon_remote.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<circle cx="8" cy="1043.4" r="2"/>
+<rect x="7" y="1044.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8.0879 1a6 6 0 0 0 -4.3301 1.7578 6 6 0 0 0 0 8.4844l1.416-1.416a4 4 0 0 1 -1.1738 -2.8262 4 4 0 0 1 4 -4 4 4 0 0 1 4 4 4 4 0 0 1 -1.1738 2.8262l1.416 1.416a6 6 0 0 0 0 -8.4844 6 6 0 0 0 -4.1543 -1.7578z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_remote_transform.png b/editor/icons/icon_remote_transform.png
deleted file mode 100644
index 9a6c30bcc8..0000000000
--- a/editor/icons/icon_remote_transform.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_remote_transform.svg b/editor/icons/icon_remote_transform.svg
new file mode 100644
index 0000000000..9cb1c67dfb
--- /dev/null
+++ b/editor/icons/icon_remote_transform.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m12 1047.4a4 4 0 0 1 -2 3.4641 4 4 0 0 1 -4 0 4 4 0 0 1 -2 -3.4641h4z" fill="#fc9c9c"/>
+<rect x="7" y="1045.4" width="2" height="4" ry="1" fill="#fc9c9c"/>
+<path d="m1.9378 1041.9a7 7 0 0 1 6.0622 -3.5 7 7 0 0 1 6.0622 3.5" fill="none" stroke="#fc9c9c" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m5.1022 1044.6a3 3 0 0 1 2.8978 -2.2235 3 3 0 0 1 2.8978 2.2235" fill="none" stroke="#fc9c9c" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_remote_transform_2d.png b/editor/icons/icon_remote_transform_2d.png
deleted file mode 100644
index 7266f2a71d..0000000000
--- a/editor/icons/icon_remote_transform_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_remote_transform_2d.svg b/editor/icons/icon_remote_transform_2d.svg
new file mode 100644
index 0000000000..f3c2d65e97
--- /dev/null
+++ b/editor/icons/icon_remote_transform_2d.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m12 1047.4a4 4 0 0 1 -2 3.4641 4 4 0 0 1 -4 0 4 4 0 0 1 -2 -3.4641h4z" fill="#a5b7f3" fill-opacity=".98824"/>
+<rect x="7" y="1045.4" width="2" height="4" ry="1" fill="#a5b7f3" fill-opacity=".98824"/>
+<path d="m1.9378 1041.9a7 7 0 0 1 6.0622 -3.5 7 7 0 0 1 6.0622 3.5" fill="none" stroke="#a5b7f3" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m5.1022 1044.6a3 3 0 0 1 2.8978 -2.2235 3 3 0 0 1 2.8978 2.2235" fill="none" stroke="#a5b7f3" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_remove.png b/editor/icons/icon_remove.png
deleted file mode 100644
index b6bf05a16d..0000000000
--- a/editor/icons/icon_remove.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_remove.svg b/editor/icons/icon_remove.svg
new file mode 100644
index 0000000000..3b03aa9305
--- /dev/null
+++ b/editor/icons/icon_remove.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m2 5v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2v-8h-12zm1 2h2v6h-2v-6zm4 0h2v6h-2v-6zm4 0h2v6h-2v-6z"/>
+<rect x="1" y="1038.4" width="14" height="2"/>
+<rect x="5" y="1037.4" width="6" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_remove_hl.png b/editor/icons/icon_remove_hl.png
deleted file mode 100644
index 0d3b887e7f..0000000000
--- a/editor/icons/icon_remove_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_remove_small.png b/editor/icons/icon_remove_small.png
deleted file mode 100644
index e0903689cf..0000000000
--- a/editor/icons/icon_remove_small.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rename.png b/editor/icons/icon_rename.png
deleted file mode 100644
index 2df503f100..0000000000
--- a/editor/icons/icon_rename.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rename.svg b/editor/icons/icon_rename.svg
new file mode 100644
index 0000000000..d733607033
--- /dev/null
+++ b/editor/icons/icon_rename.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 2v2h2v8h-2v2h2c0.55228 0 1-0.4477 1-1 0 0.5523 0.44772 1 1 1h2v-2h-2v-8h2v-2h-2c-0.55228 0-1 0.44772-1 1 0-0.55228-0.44772-1-1-1h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_reparent.png b/editor/icons/icon_reparent.png
deleted file mode 100644
index 135ccee4ad..0000000000
--- a/editor/icons/icon_reparent.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_reparent.svg b/editor/icons/icon_reparent.svg
new file mode 100644
index 0000000000..6f4d2908e7
--- /dev/null
+++ b/editor/icons/icon_reparent.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2a2 2 0 0 0 -2 2 2 2 0 0 0 1 1.7305v5.541a2 2 0 0 0 -1 1.7285 2 2 0 0 0 2 2 2 2 0 0 0 1.7305 -1h6.541a2 2 0 0 0 1.7285 1 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2 2 2 0 0 0 -1.7305 1h-6.541a2 2 0 0 0 -0.72852 -0.73047v-5.541a2 2 0 0 0 1 -1.7285 2 2 0 0 0 -2 -2z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m9 1l-4 3 4 3v-2a3 3 0 0 1 3 3v2h2v-2a5 5 0 0 0 -5 -5v-2z" fill="#84ffb1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_replace.png b/editor/icons/icon_replace.png
deleted file mode 100644
index 662a58dc93..0000000000
--- a/editor/icons/icon_replace.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_resource_preloader.png b/editor/icons/icon_resource_preloader.png
deleted file mode 100644
index d3064f5e90..0000000000
--- a/editor/icons/icon_resource_preloader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_resource_preloader.svg b/editor/icons/icon_resource_preloader.svg
new file mode 100644
index 0000000000..82f24d7400
--- /dev/null
+++ b/editor/icons/icon_resource_preloader.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g fill="#e0e0e0" fill-rule="evenodd">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm0.037109 2.1172l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-5 3.5l4 2v3.7637l-4-2v-3.7637zm10 0v3.7637l-4 2v-3.7637l4-2z" color="#000000" color-rendering="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+<path d="m11 1042.4-6-3-3 2 6 3z"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_rich_text_label.png b/editor/icons/icon_rich_text_label.png
deleted file mode 100644
index 1aea6e8fa7..0000000000
--- a/editor/icons/icon_rich_text_label.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rich_text_label.svg b/editor/icons/icon_rich_text_label.svg
new file mode 100644
index 0000000000..c0b4039e3a
--- /dev/null
+++ b/editor/icons/icon_rich_text_label.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<rect x="1" y="1037.4" width="8" height="2"/>
+<rect x="1" y="1041.4" width="2" height="2"/>
+<rect x="5" y="1041.4" width="4" height="2"/>
+<rect x="1" y="1045.4" width="8" height="2"/>
+<rect x="1" y="1049.4" width="4" height="2"/>
+<rect x="7" y="1049.4" width="2" height="2"/>
+<path d="m12 1048.4h-2l3 3 3-3h-2v-8h2l-3-3-3 3h2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rid.png b/editor/icons/icon_rid.png
deleted file mode 100644
index f7bc02e128..0000000000
--- a/editor/icons/icon_rid.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rigid_body.png b/editor/icons/icon_rigid_body.png
deleted file mode 100644
index 4072308f71..0000000000
--- a/editor/icons/icon_rigid_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rigid_body.svg b/editor/icons/icon_rigid_body.svg
new file mode 100644
index 0000000000..61aa52162d
--- /dev/null
+++ b/editor/icons/icon_rigid_body.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 0.035156 0.69922 7 7 0 0 0 0.27734 1.3691 7 7 0 0 0 0.91016 1.8848 7 7 0 0 0 0.30273 0.4082c7.85e-4 -0.00256 0.0011667-0.005252 0.0019532-0.007812a7 7 0 0 0 5.4727 2.6465 7 7 0 0 0 3.2422 -0.80273c0.001375 3.93e-4 0.002531 0.00156 0.003906 0.001953a7 7 0 0 0 0.035156 -0.021485 7 7 0 0 0 0.42578 -0.25 7 7 0 0 0 0.16992 -0.10352 7 7 0 0 0 0.36914 -0.26953 7 7 0 0 0 0.20508 -0.15625 7 7 0 0 0 0.3418 -0.30859 7 7 0 0 0 0.16406 -0.1543 7 7 0 0 0 0.33008 -0.36133 7 7 0 0 0 0.14062 -0.16016 7 7 0 0 0 0.27734 -0.37305 7 7 0 0 0 0.13867 -0.19531 7 7 0 0 0 0.21875 -0.36133 7 7 0 0 0 0.14258 -0.25 7 7 0 0 0 0.15625 -0.33398 7 7 0 0 0 0.13867 -0.31055 7 7 0 0 0 0.10742 -0.30859 7 7 0 0 0 0.11914 -0.35352 7 7 0 0 0 0.087891 -0.36914 7 7 0 0 0 0.066406 -0.29297 7 7 0 0 0 0.056641 -0.40039 7 7 0 0 0 0.037109 -0.3125 7 7 0 0 0 0.025391 -0.55273 7 7 0 0 0 -4.3848 -6.4883 7 7 0 0 0 -0.007812 -0.0039063 7 7 0 0 0 -0.001953 0 7 7 0 0 0 -0.61523 -0.21289 7 7 0 0 0 -0.044922 -0.015625 7 7 0 0 0 -0.0058594 -0.0019531 7 7 0 0 0 -0.55078 -0.13086 7 7 0 0 0 -0.14062 -0.03125 7 7 0 0 0 -0.55078 -0.072266 7 7 0 0 0 -0.14258 -0.017578 7 7 0 0 0 -0.55469 -0.025391zm1.9512 1.334a6 6 0 0 1 4.0488 5.666h-7a2 2 0 0 1 -0.94922 1.6992c1.345 2.0268 2.6013 3.2645 3.8965 3.9688a6 6 0 0 1 -1.9473 0.33203 6 6 0 0 1 -5.0547 -2.7695c0.23771-0.5785 0.50336-1.1403 0.82617-1.6563a2 2 0 0 1 -0.77148 -1.5742h-1a6 6 0 0 1 1.123 -3.4863c0.14632 0.65093 0.35776 1.2833 0.68359 1.8848a2 2 0 0 1 1.1934 -0.39844 2 2 0 0 1 1.0508 0.30078c1.3464-2.0289 2.6038-3.2631 3.9004-3.9668z"/>
+<circle cx="5" cy="1044.4" r="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rigid_body_2_d.png b/editor/icons/icon_rigid_body_2_d.png
deleted file mode 100644
index c296b88636..0000000000
--- a/editor/icons/icon_rigid_body_2_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rigid_body_2d.png b/editor/icons/icon_rigid_body_2d.png
deleted file mode 100644
index 8d11d536c1..0000000000
--- a/editor/icons/icon_rigid_body_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rigid_body_2d.svg b/editor/icons/icon_rigid_body_2d.svg
new file mode 100644
index 0000000000..c28e009e85
--- /dev/null
+++ b/editor/icons/icon_rigid_body_2d.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m8 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 1a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z" fill="#a5b7f3" fill-opacity=".98824"/>
+<path d="m8 1037.4a7 7 0 0 0 -5.0879 2.2051c0.10495 1.1207 0.35417 2.1959 0.89453 3.1933a2 2 0 0 1 1.1934 -0.3984 2 2 0 0 1 1.0508 0.3008c1.7873-2.6932 3.4181-3.9904 5.1914-4.4981a7 7 0 0 0 -3.2422 -0.8027zm-7 7a7 7 0 0 0 1.5254 4.3613c0.30281-0.9877 0.71628-1.9403 1.2461-2.7871a2 2 0 0 1 -0.77148 -1.5742h-2zm6 0a2 2 0 0 1 -0.94922 1.6992c1.7887 2.6953 3.4204 3.9932 5.1953 4.5a7 7 0 0 0 3.7539 -6.1992h-8z" fill="#a5b7f3" fill-opacity=".98824"/>
+<circle cx="5" cy="1044.4" r="2" fill="#a5b7f3" fill-opacity=".98824"/>
+<path d="m45 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 1a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z" fill="#a5b7f3" fill-opacity=".98824"/>
+<path d="m38 1044.4c5 0.01 9 0.01 14 0-2-2.9934-5-4-7-4s-5 1.0066-7 4z" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd"/>
+<path d="m38 1044.4c0 3.866 3.134 7 7 7s7-3.134 7-7c-2 2.9933-5 4-7 4s-5-1.0067-7-4z" fill="#a3b6f2"/>
+<path d="m-9 1037.4a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 1a6 6 0 0 1 6 6 6 6 0 0 1 -6 6 6 6 0 0 1 -6 -6 6 6 0 0 1 6 -6z" fill="#a3b6f2"/>
+<circle cx="-9" cy="1044.4" r="2" fill="#a3b6f2"/>
+<path d="m-9 1037.4a7 7 0 0 0 -3.5 0.9375l3.5 6.0625 3.5-6.0625a7 7 0 0 0 -3.5 -0.9375zm0 7 3.5 6.0625a7 7 0 0 0 2.5625 -2.5625 7 7 0 0 0 0.9375 -3.5h-7zh-7a7 7 0 0 0 0.9375 3.5 7 7 0 0 0 2.5625 2.5625l3.5-6.0625z" fill="#a3b6f2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_room.png b/editor/icons/icon_room.png
deleted file mode 100644
index 840db145fd..0000000000
--- a/editor/icons/icon_room.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_room.svg b/editor/icons/icon_room.svg
new file mode 100644
index 0000000000..5563ef965b
--- /dev/null
+++ b/editor/icons/icon_room.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm1.0371 2.6172l4 2v3.7637l-4-2v-3.7637zm-1 5.5l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809z" color="#000000" color-rendering="auto" fill="#fc9c9c" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_room_bounds.png b/editor/icons/icon_room_bounds.png
deleted file mode 100644
index 15b198e821..0000000000
--- a/editor/icons/icon_room_bounds.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_room_bounds.svg b/editor/icons/icon_room_bounds.svg
new file mode 100644
index 0000000000..f092865568
--- /dev/null
+++ b/editor/icons/icon_room_bounds.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v1 1h1v-1h1v-1h-1-1zm12 0v1h1v1h1v-1-1h-1-1zm-5.0371 0.0019531a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm1.0371 2.6172l4 2v3.7637l-4-2v-3.7637zm-1 5.5l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-7 3.8809v1 1h1 1v-1h-1v-1h-1zm13 0v1h-1v1h1 1v-1-1h-1z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_room_instance.png b/editor/icons/icon_room_instance.png
deleted file mode 100644
index f0c46e689c..0000000000
--- a/editor/icons/icon_room_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rotate_0.png b/editor/icons/icon_rotate_0.png
deleted file mode 100644
index 75bd667845..0000000000
--- a/editor/icons/icon_rotate_0.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rotate_0.svg b/editor/icons/icon_rotate_0.svg
new file mode 100644
index 0000000000..d9ad4eedea
--- /dev/null
+++ b/editor/icons/icon_rotate_0.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rotate_180.png b/editor/icons/icon_rotate_180.png
deleted file mode 100644
index dd9333207e..0000000000
--- a/editor/icons/icon_rotate_180.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rotate_180.svg b/editor/icons/icon_rotate_180.svg
new file mode 100644
index 0000000000..3344c16e3f
--- /dev/null
+++ b/editor/icons/icon_rotate_180.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m8 1038.4a6 6 0 0 1 6 6h-6z"/>
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<rect transform="scale(-1)" x="-9" y="-1050.4" width="2" height="7"/>
+<path d="m14 1044.4a6 6 0 0 1 -6 6v-6z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rotate_270.png b/editor/icons/icon_rotate_270.png
deleted file mode 100644
index 551fd3afb9..0000000000
--- a/editor/icons/icon_rotate_270.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rotate_270.svg b/editor/icons/icon_rotate_270.svg
new file mode 100644
index 0000000000..567e4edd5b
--- /dev/null
+++ b/editor/icons/icon_rotate_270.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m8 1038.4a6 6 0 0 1 6 6h-6z"/>
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<rect transform="rotate(-90)" x="-1045.4" y="2" width="2" height="7"/>
+<path d="m8 1050.4a6 6 0 0 1 -6 -6h6z"/>
+<path d="m14 1044.4a6 6 0 0 1 -6 6v-6z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_rotate_90.png b/editor/icons/icon_rotate_90.png
deleted file mode 100644
index 55a084cc4e..0000000000
--- a/editor/icons/icon_rotate_90.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_rotate_90.svg b/editor/icons/icon_rotate_90.svg
new file mode 100644
index 0000000000..6a3a449db6
--- /dev/null
+++ b/editor/icons/icon_rotate_90.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m8 1038.4a6 6 0 0 1 6 6h-6z"/>
+<rect x="7" y="1038.4" width="2" height="7"/>
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<rect transform="rotate(90)" x="1043.4" y="-14" width="2" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_run.png b/editor/icons/icon_run.png
deleted file mode 100644
index 133d383d9e..0000000000
--- a/editor/icons/icon_run.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_s_s_a_o_f_x.png b/editor/icons/icon_s_s_a_o_f_x.png
deleted file mode 100644
index 36eccedca5..0000000000
--- a/editor/icons/icon_s_s_a_o_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sample.png b/editor/icons/icon_sample.png
deleted file mode 100644
index 25755699be..0000000000
--- a/editor/icons/icon_sample.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sample_library.png b/editor/icons/icon_sample_library.png
deleted file mode 100644
index 5921aa86e7..0000000000
--- a/editor/icons/icon_sample_library.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sample_library.svg b/editor/icons/icon_sample_library.svg
new file mode 100644
index 0000000000..b5ec2bb43c
--- /dev/null
+++ b/editor/icons/icon_sample_library.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff8484">
+<path transform="translate(0 1036.4)" d="m9 8v1 5 1h5c0.55228 0 1-0.44772 1-1v-5c0-0.55228-0.44772-1-1-1v4l-1-1-1 1v-4z"/>
+<path d="m7.0215 1037.4a1.0001 1.0001 0 0 0 -1 0.875l-0.58984 4.7226-0.52344-1.0468a1.0001 1.0001 0 0 0 -0.89453 -0.5528h-2a1.0001 1.0001 0 1 0 0 2h1.3828l1.7227 3.4473a1.0001 1.0001 0 0 0 1.8867 -0.3223l0.58984-4.7226 0.52344 1.0449a1.0001 1.0001 0 0 0 0.89453 0.5527h3a1.0001 1.0001 0 1 0 0 -2h-2.3809l-1.7246-3.4472a1.0001 1.0001 0 0 0 -0.88672 -0.5508z" color="#000000" color-rendering="auto" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sample_player.png b/editor/icons/icon_sample_player.png
deleted file mode 100644
index 4056cceeff..0000000000
--- a/editor/icons/icon_sample_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sample_player_2d.png b/editor/icons/icon_sample_player_2d.png
deleted file mode 100644
index eb70340db8..0000000000
--- a/editor/icons/icon_sample_player_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_save.png b/editor/icons/icon_save.png
deleted file mode 100644
index 8695b7839d..0000000000
--- a/editor/icons/icon_save.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_save.svg b/editor/icons/icon_save.svg
new file mode 100644
index 0000000000..dae6693b26
--- /dev/null
+++ b/editor/icons/icon_save.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-8l-4-4zh8v6h-8zm5 8c1.1046 0 2 0.89543 2 2 0 1.1046-0.89543 2-2 2s-2-0.89543-2-2c0-1.1046 0.89543-2 2-2z"/>
+<rect x="4" y="1037.4" width="3" height="5"/>
+<path d="m11 1037.4h1l3 3v2h-4z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_scene.png b/editor/icons/icon_scene.png
deleted file mode 100644
index 9629bb91c2..0000000000
--- a/editor/icons/icon_scene.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_scene_instance.png b/editor/icons/icon_scene_instance.png
deleted file mode 100644
index 05df811aa0..0000000000
--- a/editor/icons/icon_scene_instance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_scene_tree_editor.png b/editor/icons/icon_scene_tree_editor.png
deleted file mode 100644
index 0b51763555..0000000000
--- a/editor/icons/icon_scene_tree_editor.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script.png b/editor/icons/icon_script.png
deleted file mode 100644
index 5aa673fcd6..0000000000
--- a/editor/icons/icon_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script.svg b/editor/icons/icon_script.svg
new file mode 100644
index 0000000000..ad3c9d7f80
--- /dev/null
+++ b/editor/icons/icon_script.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1v1a1 1 0 0 0 -1 1v10h-1v-2h-2v2a1 1 0 0 0 0.5 0.86523 1 1 0 0 0 0.5 0.13477v1h7a2 2 0 0 0 2 -2v-8h3v-2a2 2 0 0 0 -2 -2h-7z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m6 1c-1.1046 0-2 0.89543-2 2v7h-2-1v1 2c0 1.1046 0.89543 2 2 2s2-0.89543 2-2v-10c0-0.55228 0.44772-1 1-1s1 0.44772 1 1v1 1 1h1 4v-1h-4v-1-1c0-1.1046-0.89543-2-2-2zm-4 10h2v2c0 0.55228-0.44772 1-1 1s-1-0.44772-1-1v-2z" fill="#b4b4b4"/>
+<circle cx="3" cy="1048.4" rx="1" ry="1" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_script_control.png b/editor/icons/icon_script_control.png
deleted file mode 100644
index cd1cc9b9af..0000000000
--- a/editor/icons/icon_script_control.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script_create.png b/editor/icons/icon_script_create.png
deleted file mode 100644
index 86c19f748b..0000000000
--- a/editor/icons/icon_script_create.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script_create.svg b/editor/icons/icon_script_create.svg
new file mode 100644
index 0000000000..231a675430
--- /dev/null
+++ b/editor/icons/icon_script_create.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1v1c-0.55228 0-1 0.44772-1 1v10h-1v-2h-2v2c2.826e-4 0.35698 0.19084 0.68674 0.5 0.86523 0.15194 0.088045 0.32439 0.13452 0.5 0.13477v1h5 1v-1h-1v-4h2v-2h2v-3h3v-2c0-1.1046-0.89543-2-2-2h-7z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m6 1c-1.1046 0-2 0.89543-2 2v7h-2-1v1 2c0 1.1046 0.89543 2 2 2s2-0.89543 2-2v-10c0-0.55228 0.44772-1 1-1s1 0.44772 1 1v1 1 1h1 4v-1h-4v-1-1c0-1.1046-0.89543-2-2-2zm-4 10h2v2c0 0.55228-0.44772 1-1 1s-1-0.44772-1-1v-2z" fill="#b4b4b4"/>
+<circle cx="3" cy="1048.4" rx="1" ry="1" fill="#e0e0e0"/>
+<path d="m13 1049.4h2v-2h-2v-2h-2v2h-2v2h2v2h2z" fill="#84ffb1" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_script_error.png b/editor/icons/icon_script_error.png
deleted file mode 100644
index 3532c2c379..0000000000
--- a/editor/icons/icon_script_error.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script_list.png b/editor/icons/icon_script_list.png
deleted file mode 100644
index cdea1e161e..0000000000
--- a/editor/icons/icon_script_list.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script_node.png b/editor/icons/icon_script_node.png
deleted file mode 100644
index fcf205b2e9..0000000000
--- a/editor/icons/icon_script_node.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script_remove.png b/editor/icons/icon_script_remove.png
deleted file mode 100644
index c200b01690..0000000000
--- a/editor/icons/icon_script_remove.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_script_remove.svg b/editor/icons/icon_script_remove.svg
new file mode 100644
index 0000000000..b5dcaff460
--- /dev/null
+++ b/editor/icons/icon_script_remove.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1v1c-0.55228 0-1 0.44772-1 1v10h-1v-2h-2v2c2.826e-4 0.35698 0.19084 0.68674 0.5 0.86523 0.15194 0.088045 0.32439 0.13452 0.5 0.13477v1h5.6348l-1.584-1.584 1.4141-1.4141-1.4141-1.416 3.5352-3.5352 1.4141 1.4141v-0.46484-3h3v-2c0-1.1046-0.89543-2-2-2h-7z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m6 1c-1.1046 0-2 0.89543-2 2v7h-2-1v1 2c0 1.1046 0.89543 2 2 2s2-0.89543 2-2v-10c0-0.55228 0.44772-1 1-1s1 0.44772 1 1v1 1 1h1 4v-1h-4v-1-1c0-1.1046-0.89543-2-2-2zm-4 10h2v2c0 0.55228-0.44772 1-1 1s-1-0.44772-1-1v-2z" fill="#b4b4b4"/>
+<circle cx="3" cy="1048.4" rx="1" ry="1" fill="#e0e0e0"/>
+<path d="m13.414 1048.4 1.4142-1.4142-1.4142-1.4142l-1.4142 1.4142-1.4142-1.4142-1.4142 1.4142 1.4142 1.4142-1.4142 1.4142 1.4142 1.4142 1.4142-1.4142 1.4142 1.4142 1.4142-1.4142z" fill="#ff8484" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_scroll_bar.png b/editor/icons/icon_scroll_bar.png
deleted file mode 100644
index e4576c4ae3..0000000000
--- a/editor/icons/icon_scroll_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_scroll_bar.svg b/editor/icons/icon_scroll_bar.svg
new file mode 100644
index 0000000000..f956615ff1
--- /dev/null
+++ b/editor/icons/icon_scroll_bar.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2zm0 2h10v6h-10z" fill="#a5efac"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="none"/>
+<rect x="4" y="1042.4" width="4" height="4" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_scroll_bg.png b/editor/icons/icon_scroll_bg.png
deleted file mode 100644
index 1908fd8aee..0000000000
--- a/editor/icons/icon_scroll_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_scroll_container.png b/editor/icons/icon_scroll_container.png
deleted file mode 100644
index 4e42d84ab1..0000000000
--- a/editor/icons/icon_scroll_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_scroll_container.svg b/editor/icons/icon_scroll_container.svg
new file mode 100644
index 0000000000..83ca7f753d
--- /dev/null
+++ b/editor/icons/icon_scroll_container.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10z"/>
+<path d="m10 1042.4v4l2-2z"/>
+<path d="m6 1042.4v4l-2-2z"/>
+<path d="m6 1042.4h4l-2-2z"/>
+<path d="m6 1046.4h4l-2 2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_scroll_grabber.png b/editor/icons/icon_scroll_grabber.png
deleted file mode 100644
index 4be7f4e6cc..0000000000
--- a/editor/icons/icon_scroll_grabber.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_scroll_grabber_hl.png b/editor/icons/icon_scroll_grabber_hl.png
deleted file mode 100644
index a81239b84b..0000000000
--- a/editor/icons/icon_scroll_grabber_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_search.png b/editor/icons/icon_search.png
deleted file mode 100644
index f3748803cf..0000000000
--- a/editor/icons/icon_search.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_search.svg b/editor/icons/icon_search.svg
new file mode 100644
index 0000000000..6ef1d42815
--- /dev/null
+++ b/editor/icons/icon_search.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path d="m6 1037.4a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 5 -5 5 5 0 0 0 -5 -5zm0 2a3 3 0 0 1 3 3 3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3z"/>
+<rect transform="matrix(.70711 -.70711 .70711 .70711 0 0)" x="-733.82" y="745.3" width="2" height="7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_segment_shape_2d.png b/editor/icons/icon_segment_shape_2d.png
deleted file mode 100644
index 8f3771be7a..0000000000
--- a/editor/icons/icon_segment_shape_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_segment_shape_2d.svg b/editor/icons/icon_segment_shape_2d.svg
new file mode 100644
index 0000000000..beb1dd3d3f
--- /dev/null
+++ b/editor/icons/icon_segment_shape_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1050.4 12-12" color="#000000" fill="none" stroke="#68b6ff" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_shader.png b/editor/icons/icon_shader.png
deleted file mode 100644
index 568a45d938..0000000000
--- a/editor/icons/icon_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_shader.svg b/editor/icons/icon_shader.svg
new file mode 100644
index 0000000000..f77aa837c5
--- /dev/null
+++ b/editor/icons/icon_shader.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h2 6 3l-2-2h-8z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m1 3v2h2v-2h-2zm8 0v2h5l-2-2h-3z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-2h-2zm8 0v1c0 0.554 0.44599 1 1 1h3 2v-1l-1-1h-5z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h2v-2h-2zm12 0v2h2v-2h-2z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h2v-2h-2zm12 0v2h2v-2h-2z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1c5.52e-5 0.5523 0.44774 0.9999 1 1h12c0.55226-1e-4 0.99994-0.4477 1-1v-1h-2-10-2z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m1 11v2h2v-2h-2zm12 0v2h2v-2h-2z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_shader_material.png b/editor/icons/icon_shader_material.png
deleted file mode 100644
index 568a45d938..0000000000
--- a/editor/icons/icon_shader_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_short_cut.png b/editor/icons/icon_short_cut.png
deleted file mode 100644
index 22e15c3889..0000000000
--- a/editor/icons/icon_short_cut.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_short_cut.svg b/editor/icons/icon_short_cut.svg
new file mode 100644
index 0000000000..736f1f3c02
--- /dev/null
+++ b/editor/icons/icon_short_cut.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m4 2c-0.55228 0-1 0.4477-1 1v9.084c4.015e-4 0.506 0.448 0.91602 1 0.91602h8c0.552 0 0.9996-0.41002 1-0.91602v-9.084c0-0.5523-0.44772-1-1-1h-8zm-3 2v9a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-9h-1v9a0.99998 0.99998 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-9h-1zm6 0h3l-1 3h2l-4 4 1-3h-2l1-4z" fill="#e0e0e0"/>
+<rect x="27" y="1038.4" width="7" height="14" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_signal.png b/editor/icons/icon_signal.png
deleted file mode 100644
index c2f393228c..0000000000
--- a/editor/icons/icon_signal.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_signal.svg b/editor/icons/icon_signal.svg
new file mode 100644
index 0000000000..74fbdf8520
--- /dev/null
+++ b/editor/icons/icon_signal.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#ff8484">
+<rect x="5" y="1043.4" width="6" height="2"/>
+<path transform="matrix(0 1.281 -.9245 0 -948.3 1038)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z"/>
+<rect x="1" y="1039.4" width="2" height="10"/>
+<rect x="3" y="1047.4" width="4" height="2"/>
+<rect x="3" y="1039.4" width="4" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_skeleton.png b/editor/icons/icon_skeleton.png
deleted file mode 100644
index 17b003caac..0000000000
--- a/editor/icons/icon_skeleton.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_skeleton.svg b/editor/icons/icon_skeleton.svg
new file mode 100644
index 0000000000..9716940906
--- /dev/null
+++ b/editor/icons/icon_skeleton.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m6 2a4 4 0 0 0 -4 4 4 4 0 0 0 3 3.8691v-0.86914h1v1h1v-1h1 1v1h1v-1h1v0.86719a4 4 0 0 0 3 -3.8672 4 4 0 0 0 -4 -4h-4zm-1 3a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-4 2h2v1h-2v-1z"/>
+<path transform="translate(0 1036.4)" d="m4 9v4h1v-4h-1zm7 0v4h1v-4h-1zm-5 3v1 2h4v-2-1h-1v1h-2v-1h-1z"/>
+<path d="m8 1049.4a2 2 0 0 1 -1 1.732 2 2 0 0 1 -2 0 2 2 0 0 1 -1 -1.732h2z"/>
+<path d="m12 1049.4a2 2 0 0 1 -1 1.732 2 2 0 0 1 -2 0 2 2 0 0 1 -1 -1.732h2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_skeletonr.png b/editor/icons/icon_skeletonr.png
deleted file mode 100644
index dcb2d512ab..0000000000
--- a/editor/icons/icon_skeletonr.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sky_box_f_x.png b/editor/icons/icon_sky_box_f_x.png
deleted file mode 100644
index cabd19e550..0000000000
--- a/editor/icons/icon_sky_box_f_x.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_slider_grabber.png b/editor/icons/icon_slider_grabber.png
deleted file mode 100644
index 6b6982e26c..0000000000
--- a/editor/icons/icon_slider_grabber.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_slider_grabber_hl.png b/editor/icons/icon_slider_grabber_hl.png
deleted file mode 100644
index 03d4b2bb99..0000000000
--- a/editor/icons/icon_slider_grabber_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_slider_joint.png b/editor/icons/icon_slider_joint.png
deleted file mode 100644
index 5b8c2df6ff..0000000000
--- a/editor/icons/icon_slider_joint.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_slider_joint.svg b/editor/icons/icon_slider_joint.svg
new file mode 100644
index 0000000000..479323bf9a
--- /dev/null
+++ b/editor/icons/icon_slider_joint.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1051.4h5l-1-4z" fill="#fc9c9c" fill-opacity=".99608"/>
+<path d="m6 1048.4 9-9v3l-8 8z" fill="#fb9b9b"/>
+<path d="m10 1040.4-9 9v-3l8-8z" fill="#fb9b9b"/>
+<path d="m13 1037.4h-5l1 4z" fill="#fc9c9c" fill-opacity=".99608"/>
+<path d="m10 1038.4h-5" fill="none" stroke="#fb9b9b" stroke-linecap="round" stroke-width="2"/>
+<path d="m11 1050.4h-5" fill="none" stroke="#fb9b9b" stroke-linecap="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_slot.png b/editor/icons/icon_slot.png
deleted file mode 100644
index 856bf72281..0000000000
--- a/editor/icons/icon_slot.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_slot.svg b/editor/icons/icon_slot.svg
new file mode 100644
index 0000000000..f3d27ec55e
--- /dev/null
+++ b/editor/icons/icon_slot.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#84ffb1">
+<rect x="1" y="1043.4" width="6" height="2"/>
+<path transform="matrix(0 1.281 -.9245 0 -952.3 1038)" d="m8.1225-1036.6h-3.1225-3.1225l1.5612-2.7042 1.5612-2.7041 1.5612 2.7041z"/>
+<path d="m15 1039.4v10h-2-4v-2h4v-6h-4v-2h4 2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_small_next.png b/editor/icons/icon_small_next.png
deleted file mode 100644
index f853d100b5..0000000000
--- a/editor/icons/icon_small_next.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_snap.png b/editor/icons/icon_snap.png
deleted file mode 100644
index 93194d34e7..0000000000
--- a/editor/icons/icon_snap.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_snap.svg b/editor/icons/icon_snap.svg
new file mode 100644
index 0000000000..b1f36cfe43
--- /dev/null
+++ b/editor/icons/icon_snap.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m3 1036.4v3h-3v2h3v4h-3v2h3v3h2v-3-2-4h4 2 3v-2h-3v-3h-2v3h-4v-3h-2z" fill="#f3f3f3"/>
+<path d="m11 1043.4a4 4 0 0 0 -4 4h2a2 2 0 0 1 2 -2 2 2 0 0 1 2 2h2a4 4 0 0 0 -4 -4z" fill="#ff8484"/>
+<rect x="7" y="1047.4" width="2" height="2" fill="#ff8484"/>
+<rect x="13" y="1047.4" width="2" height="2" fill="#ff8484"/>
+<rect x="7" y="1049.4" width="2" height="2" fill="#fff"/>
+<rect x="13" y="1049.4" width="2" height="2" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sort.svg b/editor/icons/icon_sort.svg
new file mode 100644
index 0000000000..1e2e16f459
--- /dev/null
+++ b/editor/icons/icon_sort.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1v2h6v-2h-6zm-5.0156 0.0019531a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l0.29297-0.29297v7.1719l-0.29297-0.29297a1 1 0 0 0 -0.7207 -0.29102 1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l2 2a1.0001 1.0001 0 0 0 1.4141 0l2-2a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -1.4141 0l-0.29297 0.29297v-7.1719l0.29297 0.29297a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102zm5.0156 5.998v2h4v-2h-4zm0 6v2h2v-2h-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sound_room_params.png b/editor/icons/icon_sound_room_params.png
deleted file mode 100644
index 6f66da2e43..0000000000
--- a/editor/icons/icon_sound_room_params.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sound_room_params.svg b/editor/icons/icon_sound_room_params.svg
new file mode 100644
index 0000000000..ddec8a3cf9
--- /dev/null
+++ b/editor/icons/icon_sound_room_params.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path d="m8 1037.4-4 5h-3v4h3l4 5v-14z"/>
+<path d="m13 1039.4v10h1v-10h-1z"/>
+<path d="m10 1039.4v10h1v-10h-1z"/>
+<rect x="9" y="1041.4" width="3" height="1"/>
+<rect x="12" y="1046.4" width="3" height="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_spatial.png b/editor/icons/icon_spatial.png
deleted file mode 100644
index 7c9f721053..0000000000
--- a/editor/icons/icon_spatial.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spatial.svg b/editor/icons/icon_spatial.svg
new file mode 100644
index 0000000000..f0b4e65c21
--- /dev/null
+++ b/editor/icons/icon_spatial.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6 -6 6 6 0 0 0 -6 -6zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_spatial_add.png b/editor/icons/icon_spatial_add.png
deleted file mode 100644
index 47950fbbb5..0000000000
--- a/editor/icons/icon_spatial_add.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spatial_material.png b/editor/icons/icon_spatial_material.png
deleted file mode 100644
index 7608fc9036..0000000000
--- a/editor/icons/icon_spatial_material.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spatial_material.svg b/editor/icons/icon_spatial_material.svg
new file mode 100644
index 0000000000..aa8bfc9a5b
--- /dev/null
+++ b/editor/icons/icon_spatial_material.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-3.7891 1.8945h8.4727l-3.7891-1.8945a1.0001 1.0001 0 0 0 -0.48438 -0.10352z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m3.7637 3l-2.2109 1.1055a1.0001 1.0001 0 0 0 -0.55273 0.89453h3.2363l3.7637-1.8809 3.7637 1.8809h3.2363a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-2.2109-1.1055h-8.4727z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-0.38086l0.76172 0.38086h8.4766l0.76172-0.38086v0.38086h2v-2h-3.2363l-3.7637 1.8828-3.7637-1.8828h-3.2363z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h2v-2h-2zm2.7617 0l3.2383 1.6191v0.38086h2v-0.38086l3.2383-1.6191h-8.4766zm9.2383 0v2h2v-2h-2z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h3.2344l-1.2344-0.61719v-1.3828h-2zm6 0v2h2v-2h-2zm6 0v1.3828l-1.2344 0.61719h3.2344v-2h-2z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m3.7637 13l3.7891 1.8945a1.0001 1.0001 0 0 0 0.48438 0.10547 1.0001 1.0001 0 0 0 0.41016 -0.10547l3.7891-1.8945h-8.4727z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m1 11a1.0001 1.0001 0 0 0 0.55273 0.89453l2.2109 1.1055h8.4727l2.2109-1.1055a1.0001 1.0001 0 0 0 0.55273 -0.89453h-3.2344l-2.7656 1.3828v-1.3828h-2v1.3828l-2.7656-1.3828h-3.2344z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_spatial_sample_player.png b/editor/icons/icon_spatial_sample_player.png
deleted file mode 100644
index bb2451da99..0000000000
--- a/editor/icons/icon_spatial_sample_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spatial_sample_player.svg b/editor/icons/icon_spatial_sample_player.svg
new file mode 100644
index 0000000000..32f70cd2a6
--- /dev/null
+++ b/editor/icons/icon_spatial_sample_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1l-4 5h-3v4h3l4 5v-14zm5 2v10h1v-10h-1zm-3 3v5h1v-5h-1z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_spatial_shader.png b/editor/icons/icon_spatial_shader.png
deleted file mode 100644
index 7608fc9036..0000000000
--- a/editor/icons/icon_spatial_shader.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spatial_stream_player.png b/editor/icons/icon_spatial_stream_player.png
deleted file mode 100644
index a6f9851548..0000000000
--- a/editor/icons/icon_spatial_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spatial_stream_player.svg b/editor/icons/icon_spatial_stream_player.svg
new file mode 100644
index 0000000000..20fadb59f8
--- /dev/null
+++ b/editor/icons/icon_spatial_stream_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 2c-0.55228 0-1 0.44772-1 1v1 7h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h2 1c0.55228 0 1-0.44772 1-1v-3-7h6v5h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h3c0.55228 0 1-0.44772 1-1v-3-6c0-0.55228-0.44772-1-1-1h-7z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sphere_mesh.png b/editor/icons/icon_sphere_mesh.png
deleted file mode 100644
index 19ed49c3cd..0000000000
--- a/editor/icons/icon_sphere_mesh.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sphere_mesh.svg b/editor/icons/icon_sphere_mesh.svg
new file mode 100644
index 0000000000..519b69cbd7
--- /dev/null
+++ b/editor/icons/icon_sphere_mesh.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1c-3.8541 0-7 3.1459-7 7 0 3.8542 3.1459 7 7 7 3.8541 0 7-3.1458 7-7 0-3.8541-3.1459-7-7-7zm-1 2.0977v4.8711c-1.2931-0.071342-2.6061-0.29819-3.9434-0.69141 0.30081-2.0978 1.8852-3.7665 3.9434-4.1797zm2 0c2.0549 0.41253 3.637 2.0767 3.9414 4.1699-1.3046 0.36677-2.6158 0.60259-3.9414 0.6875v-4.8574zm3.7852 6.2812c-0.50864 1.7788-1.9499 3.1531-3.7852 3.5215v-2.9512c1.2792-0.072301 2.5419-0.26704 3.7852-0.57031zm-9.5645 0.017578c1.2733 0.31892 2.5337 0.50215 3.7793 0.5625v2.9414c-1.8291-0.36719-3.266-1.7339-3.7793-3.5039z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#ffd684" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="filter-blend-mode:normal;filter-gaussianBlur-deviation:0;font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-east-asian:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sphere_shape.png b/editor/icons/icon_sphere_shape.png
deleted file mode 100644
index 23300a0da1..0000000000
--- a/editor/icons/icon_sphere_shape.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sphere_shape.svg b/editor/icons/icon_sphere_shape.svg
new file mode 100644
index 0000000000..f2995ae96a
--- /dev/null
+++ b/editor/icons/icon_sphere_shape.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<circle cx="8" cy="1044.4" r="7" fill="#68b6ff"/>
+<circle cx="6" cy="1041.4" r="2" fill="#a2d2ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_spin_box.png b/editor/icons/icon_spin_box.png
deleted file mode 100644
index 6da0dbec79..0000000000
--- a/editor/icons/icon_spin_box.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spin_box.svg b/editor/icons/icon_spin_box.svg
new file mode 100644
index 0000000000..965df69a02
--- /dev/null
+++ b/editor/icons/icon_spin_box.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h7v-2h-7v-6h7v-2z"/>
+<rect x="8" y="1041.4" width="2" height="6"/>
+<path d="m11 1043.4h4l-2-3z" fill-rule="evenodd"/>
+<path d="m11 1045.4h4l-2 3z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_spinbox_updown.png b/editor/icons/icon_spinbox_updown.png
deleted file mode 100644
index ff65df801b..0000000000
--- a/editor/icons/icon_spinbox_updown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spline.png b/editor/icons/icon_spline.png
deleted file mode 100644
index 3239aff383..0000000000
--- a/editor/icons/icon_spline.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spot_light.png b/editor/icons/icon_spot_light.png
deleted file mode 100644
index f52570a5cd..0000000000
--- a/editor/icons/icon_spot_light.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_spot_light.svg b/editor/icons/icon_spot_light.svg
new file mode 100644
index 0000000000..93d4247405
--- /dev/null
+++ b/editor/icons/icon_spot_light.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1a1 1 0 0 0 -1 1v3.6934c-1.7861 0.86608-3 2.4605-3 4.3066h4a2 2 0 0 0 2 2 2 2 0 0 0 2 -2h4c0-1.8462-1.2139-3.4406-3-4.3066v-3.6934a1 1 0 0 0 -1 -1h-4zm-1.0977 9.6348l-1.7324 1 1 1.7305 1.7324-1-1-1.7305zm6.1953 0l-1 1.7305 1.7324 1 1-1.7305-1.7324-1zm-4.0977 2.3652v2h2v-2h-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sprite.png b/editor/icons/icon_sprite.png
deleted file mode 100644
index b698d32d4c..0000000000
--- a/editor/icons/icon_sprite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sprite.svg b/editor/icons/icon_sprite.svg
new file mode 100644
index 0000000000..4feea4d265
--- /dev/null
+++ b/editor/icons/icon_sprite.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-4 5a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm8 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-7 3h6a3 3 0 0 1 -1.5 2.5977 3 3 0 0 1 -3 0 3 3 0 0 1 -1.5 -2.5977z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sprite_3d.png b/editor/icons/icon_sprite_3d.png
deleted file mode 100644
index 47a3ff429b..0000000000
--- a/editor/icons/icon_sprite_3d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sprite_3d.svg b/editor/icons/icon_sprite_3d.svg
new file mode 100644
index 0000000000..0d5caae501
--- /dev/null
+++ b/editor/icons/icon_sprite_3d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-4 5a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm8 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-7 3h6a3 3 0 0 1 -1.5 2.5977 3 3 0 0 1 -3 0 3 3 0 0 1 -1.5 -2.5977z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sprite_frames.png b/editor/icons/icon_sprite_frames.png
deleted file mode 100644
index 5576b24f2e..0000000000
--- a/editor/icons/icon_sprite_frames.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_sprite_frames.svg b/editor/icons/icon_sprite_frames.svg
new file mode 100644
index 0000000000..e797819892
--- /dev/null
+++ b/editor/icons/icon_sprite_frames.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 5 -5 5 5 0 0 0 -5 -5zm-3 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm4 2v2h2v-2h-2zm-5.0039 0.49219a0.50005 0.50005 0 0 1 0.35742 0.86133c-0.61785 0.6179-1.4924 0.89648-2.3535 0.89648s-1.7357-0.27858-2.3535-0.89648a0.50005 0.50005 0 0 1 0.34766 -0.85742 0.50005 0.50005 0 0 1 0.35938 0.15039c0.38215 0.3822 1.0076 0.60352 1.6465 0.60352s1.2643-0.22132 1.6465-0.60352a0.50005 0.50005 0 0 1 0.34961 -0.1543zm2.0039 2.5078v2h2v-2h-2zm3 0v2h2v-2h-2zm-6 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_squirrel_script.png b/editor/icons/icon_squirrel_script.png
deleted file mode 100644
index 32926b5975..0000000000
--- a/editor/icons/icon_squirrel_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_static_body.png b/editor/icons/icon_static_body.png
deleted file mode 100644
index 62948f97cd..0000000000
--- a/editor/icons/icon_static_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_static_body.svg b/editor/icons/icon_static_body.svg
new file mode 100644
index 0000000000..e8ba9bff6f
--- /dev/null
+++ b/editor/icons/icon_static_body.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -1.4141 0.58594 2 2 0 0 0 -0.58594 1.4141v10a2 2 0 0 0 0.58594 1.4141 2 2 0 0 0 1.4141 0.58594h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2h-10zm0 1h10a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-10a1 1 0 0 1 1 -1zm0 1v2h2v-2h-2zm8 0v2h2v-2h-2zm-8 8v2h2v-2h-2zm8 0v2h2v-2h-2z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_static_body_2_d.png b/editor/icons/icon_static_body_2_d.png
deleted file mode 100644
index 9af0274a65..0000000000
--- a/editor/icons/icon_static_body_2_d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_static_body_2d.png b/editor/icons/icon_static_body_2d.png
deleted file mode 100644
index b7bad4f742..0000000000
--- a/editor/icons/icon_static_body_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_static_body_2d.svg b/editor/icons/icon_static_body_2d.svg
new file mode 100644
index 0000000000..9c2b85ac10
--- /dev/null
+++ b/editor/icons/icon_static_body_2d.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m3 1a2 2 0 0 0 -1.4141 0.58594 2 2 0 0 0 -0.58594 1.4141v10a2 2 0 0 0 0.58594 1.4141 2 2 0 0 0 1.4141 0.58594h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2h-10zm0 1h10a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-10a1 1 0 0 1 -1 -1v-10a1 1 0 0 1 1 -1zm0 1v2h2v-2h-2zm8 0v2h2v-2h-2zm-8 8v2h2v-2h-2zm8 0v2h2v-2h-2z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_stop.png b/editor/icons/icon_stop.png
deleted file mode 100644
index 0fd43b403a..0000000000
--- a/editor/icons/icon_stop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_stop.svg b/editor/icons/icon_stop.svg
new file mode 100644
index 0000000000..640b2998f6
--- /dev/null
+++ b/editor/icons/icon_stop.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m4 1048.4v-8h8v8z" fill="#e0e0e0" fill-rule="evenodd" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_stream_player.png b/editor/icons/icon_stream_player.png
deleted file mode 100644
index 15bdbdf440..0000000000
--- a/editor/icons/icon_stream_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_stream_player.svg b/editor/icons/icon_stream_player.svg
new file mode 100644
index 0000000000..c135487de9
--- /dev/null
+++ b/editor/icons/icon_stream_player.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 2c-0.55228 0-1 0.44772-1 1v1 7h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h2 1c0.55228 0 1-0.44772 1-1v-3-7h6v5h-2c-0.55228 0-1 0.44772-1 1v2c0 0.55228 0.44772 1 1 1h3c0.55228 0 1-0.44772 1-1v-3-6c0-0.55228-0.44772-1-1-1h-7z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_stream_texture.png b/editor/icons/icon_stream_texture.png
deleted file mode 100644
index 1858a299d7..0000000000
--- a/editor/icons/icon_stream_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_stream_texture.svg b/editor/icons/icon_stream_texture.svg
new file mode 100644
index 0000000000..0210142b7e
--- /dev/null
+++ b/editor/icons/icon_stream_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h6v-2h2v-2h-2-5v-8h5v-2h-6zm6 2v2h2v-2h-2zm2 0h2v-2h-2v2zm2 0v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm0 2v2h2v-2h-2zm0 2h-2v2h2v-2zm-2-4v-2h-2v-1h-1v1h-1v1h-1v1h-1v1h2 2v-1h2z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_string.png b/editor/icons/icon_string.png
deleted file mode 100644
index 8d01b738da..0000000000
--- a/editor/icons/icon_string.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_string.svg b/editor/icons/icon_string.svg
new file mode 100644
index 0000000000..515658aa1b
--- /dev/null
+++ b/editor/icons/icon_string.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1v2h2v10h-2v2h2a1 1 0 0 0 1 -1 1 1 0 0 0 1 1h2v-2h-2v-10h2v-2h-2a1 1 0 0 0 -1 1 1 1 0 0 0 -1 -1h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_style_box_empty.png b/editor/icons/icon_style_box_empty.png
deleted file mode 100644
index f595eaaa57..0000000000
--- a/editor/icons/icon_style_box_empty.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_style_box_empty.svg b/editor/icons/icon_style_box_empty.svg
new file mode 100644
index 0000000000..aa14bd4ead
--- /dev/null
+++ b/editor/icons/icon_style_box_empty.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h2v-2h-1zm3 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2v-1c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-1z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-2h-2zm12 0v0.23242c0.31584 0.1783 0.57817 0.43795 0.75977 0.75195 0.19142 0.33153 0.43699 0.67036 0.69922 1.0156h0.54102v-2h-2z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m12 7c-0.43047 0.7456-0.94451 1.3867-1.4355 2h2.8711c-0.49104-0.6133-1.0051-1.2544-1.4355-2zm2.459 0c0.17438 0.2296 0.352 0.46082 0.54102 0.69922v-0.69922h-0.54102z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h2v-2h-2zm9.5645 0c-0.55248 0.69003-1.0583 1.3421-1.334 2h5.5391c-0.2757-0.65786-0.78151-1.31-1.334-2h-2.8711z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1c5.52e-5 0.5523 0.44774 0.9999 1 1h1v-2h-2zm4 0v2h2v-2h-2zm4.1836 0c0.41312 1.1628 1.5119 2 2.8164 2s2.4033-0.83718 2.8164-2h-5.6328z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m9.2305 11c-0.13656 0.32585-0.23047 0.65576-0.23047 1 0 0.35235 0.07201 0.68593 0.18359 1h5.6328c0.11158-0.31407 0.18359-0.64765 0.18359-1 0-0.34424-0.093909-0.67415-0.23047-1h-5.5391z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_style_box_flat.png b/editor/icons/icon_style_box_flat.png
deleted file mode 100644
index 6ec6a6dd35..0000000000
--- a/editor/icons/icon_style_box_flat.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_style_box_flat.svg b/editor/icons/icon_style_box_flat.svg
new file mode 100644
index 0000000000..d76ec8d7f1
--- /dev/null
+++ b/editor/icons/icon_style_box_flat.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v1h14v-1c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-12z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m1 3v2h14v-2h-14z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h8.582c0.25686-0.33847 0.49465-0.66934 0.68555-1 0.33885-0.5859 0.95103-0.96109 1.627-0.99609 0.7512-0.04 1.4613 0.34489 1.8379 0.99609 0.18899 0.32737 0.42831 0.66049 0.68555 1h0.58203v-2h-14z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h7.0547c0.14116-0.20345 0.28508-0.40233 0.42383-0.58398 0.38601-0.5053 0.76348-0.96794 1.1035-1.416h-8.582zm11 0c-0.43047 0.7456-0.94451 1.3867-1.4355 2h2.8711c-0.49104-0.6133-1.0051-1.2544-1.4355-2zm2.418 0c0.18626 0.24583 0.37928 0.49419 0.58203 0.75v-0.75h-0.58203z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h6.1172c0.17955-0.78395 0.54577-1.4354 0.9375-2h-7.0547zm9.5645 0c-0.55248 0.69003-1.0583 1.3421-1.334 2h5.5391c-0.2757-0.65786-0.78151-1.31-1.334-2h-2.8711z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1c5.52e-5 0.5523 0.44774 0.9999 1 1h6.0371c-0.44511-0.58388-0.76161-1.2639-0.91992-2h-6.1172zm8.1836 0c0.41312 1.1628 1.5119 2 2.8164 2s2.4033-0.83718 2.8164-2h-5.6328z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m1 11v2h6.1172c-0.06966-0.3239-0.11719-0.65596-0.11719-1 0-0.35655 0.045474-0.68688 0.11719-1h-6.1172zm8.2305 0c-0.13656 0.32585-0.23047 0.65576-0.23047 1 0 0.35235 0.07201 0.68593 0.18359 1h5.6328c0.11158-0.31407 0.18359-0.64765 0.18359-1 0-0.34424-0.093909-0.67415-0.23047-1h-5.5391z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_style_box_texture.png b/editor/icons/icon_style_box_texture.png
deleted file mode 100644
index f649508418..0000000000
--- a/editor/icons/icon_style_box_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_style_box_texture.svg b/editor/icons/icon_style_box_texture.svg
new file mode 100644
index 0000000000..b9eaad8df7
--- /dev/null
+++ b/editor/icons/icon_style_box_texture.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v1h2 10 2v-1a1.0001 1.0001 0 0 0 -1 -1h-12z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m1 3v2h2v-2h-2zm12 0v2h2v-2h-2zm-4 1v1h1v-1h-1z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m1 5v2h2v-2h-2zm7 0v1h-2v1h3.543c0.26215-0.34438 0.50373-0.68039 0.69727-1.0156a2.0315 2.0315 0 0 1 0.75977 -0.75195v-0.23242h-1-1-1zm5 0v0.23242a2.0315 2.0315 0 0 1 0.75977 0.75195c0.19142 0.33153 0.43699 0.67033 0.69922 1.0156h0.54102v-2h-2z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h2v-2h-2zm4 0v1h-1v1h4.0156c0.14585-0.2113 0.29419-0.41592 0.4375-0.60352 0.38121-0.49904 0.75394-0.95521 1.0898-1.3965h-3.543-1zm7 0c-0.43047 0.7456-0.94451 1.3867-1.4355 2h2.8711c-0.49104-0.6133-1.0051-1.2544-1.4355-2zm2.459 0c0.17438 0.22962 0.352 0.46082 0.54102 0.69922v-0.69922h-0.54102z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1 9v2h2v-2h-2zm9.5645 0c-0.55248 0.69003-1.0583 1.3421-1.334 2h5.5391c-0.2757-0.65786-0.78151-1.31-1.334-2h-2.8711z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m1 13v1a1.0001 1.0001 0 0 0 1 1h5.998c-0.4429-0.5864-0.77294-1.2592-0.92578-2h-4.0723-2zm8.1836 0c0.41312 1.1628 1.5119 2 2.8164 2s2.4033-0.83718 2.8164-2h-5.6328z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m1 11v2h2v-2h-2zm8.2305 0c-0.13656 0.32585-0.23047 0.65576-0.23047 1 0 0.35235 0.07201 0.68593 0.18359 1h5.6328c0.11158-0.31407 0.18359-0.64765 0.18359-1 0-0.34424-0.093909-0.67415-0.23047-1h-5.5391z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_surface.png b/editor/icons/icon_surface.png
deleted file mode 100644
index e7af8e9444..0000000000
--- a/editor/icons/icon_surface.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tab_container.png b/editor/icons/icon_tab_container.png
deleted file mode 100644
index 7ff3081ec1..0000000000
--- a/editor/icons/icon_tab_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tab_container.svg b/editor/icons/icon_tab_container.svg
new file mode 100644
index 0000000000..b6489e9fbf
--- /dev/null
+++ b/editor/icons/icon_tab_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h5v2 2h5v6h-10v-10zm7 0h3v2h-3v-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tab_menu.png b/editor/icons/icon_tab_menu.png
deleted file mode 100644
index ffc63f2d41..0000000000
--- a/editor/icons/icon_tab_menu.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tabs.png b/editor/icons/icon_tabs.png
deleted file mode 100644
index c17ab6fa1b..0000000000
--- a/editor/icons/icon_tabs.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tabs.svg b/editor/icons/icon_tabs.svg
new file mode 100644
index 0000000000..dfcc20a133
--- /dev/null
+++ b/editor/icons/icon_tabs.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 4c-1.108 0-1.8178 0.9071-2 2l-1 6h-1v2h4 6 4v-2h-2l-1-6c-0.18216-1.0929-0.89199-2-2-2h-5z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_test_cube.png b/editor/icons/icon_test_cube.png
deleted file mode 100644
index 4d11a69c3e..0000000000
--- a/editor/icons/icon_test_cube.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_test_cube.svg b/editor/icons/icon_test_cube.svg
new file mode 100644
index 0000000000..8400a9617a
--- /dev/null
+++ b/editor/icons/icon_test_cube.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0 1.1802e-5)" stroke="#fc9c9c" stroke-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m7.9629 1.002a1.0001 1.0001 0 0 0 -0.41016 0.10352l-6 3a1.0001 1.0001 0 0 0 -0.55273 0.89453v6a1.0001 1.0001 0 0 0 0.55273 0.89453l6 3a1.0001 1.0001 0 0 0 0.89453 0l6-3a1.0001 1.0001 0 0 0 0.55273 -0.89453v-6a1.0001 1.0001 0 0 0 -0.55273 -0.89453l-6-3a1.0001 1.0001 0 0 0 -0.48438 -0.10352zm0.037109 2.1172l3.7637 1.8809-3.7637 1.8828-3.7637-1.8828 3.7637-1.8809zm-5 3.5l4 2v3.7637l-4-2v-3.7637zm10 0v3.7637l-4 2v-3.7637l4-2z" color="#000000" color-rendering="auto" fill="#fc9c9c" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" stroke="none" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_text_edit.png b/editor/icons/icon_text_edit.png
deleted file mode 100644
index 7599e89eb1..0000000000
--- a/editor/icons/icon_text_edit.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_text_edit.svg b/editor/icons/icon_text_edit.svg
new file mode 100644
index 0000000000..d3485a0b62
--- /dev/null
+++ b/editor/icons/icon_text_edit.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm1 1v4h1v-4h-1z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_texture.png b/editor/icons/icon_texture.png
deleted file mode 100644
index 7c4493395e..0000000000
--- a/editor/icons/icon_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_texture_button.png b/editor/icons/icon_texture_button.png
deleted file mode 100644
index ea1d8235e1..0000000000
--- a/editor/icons/icon_texture_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_texture_button.svg b/editor/icons/icon_texture_button.svg
new file mode 100644
index 0000000000..17f87ab861
--- /dev/null
+++ b/editor/icons/icon_texture_button.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 3v8h14v-8h-1-12-1zm8 2h1v1h1v2h1v2h-2-2-2-2v-1h1v-1h1v-1h2v-1h1v-1z" fill="#a5efac"/>
+<rect transform="scale(1,-1)" x="1" y="-1049.4" width="14" height="2.0001" fill="#a5efac"/>
+<rect transform="scale(1,-1)" x="1" y="-1049.4" width="14" height="2.0001" fill-opacity=".078431"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_texture_progress.png b/editor/icons/icon_texture_progress.png
deleted file mode 100644
index ea3cc35da8..0000000000
--- a/editor/icons/icon_texture_progress.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_texture_progress.svg b/editor/icons/icon_texture_progress.svg
new file mode 100644
index 0000000000..03aa3965ba
--- /dev/null
+++ b/editor/icons/icon_texture_progress.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m3 3c-1.1046 0-2 0.89543-2 2v6c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-6c0-1.1046-0.89543-2-2-2zm0 2h10v6h-10z"/>
+<rect x="4" y="1042.4" width="1" height="2"/>
+<rect x="6" y="1043.4" width="1" height="3"/>
+<rect x="8" y="1042.4" width="1" height="4"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_texture_rect.png b/editor/icons/icon_texture_rect.png
deleted file mode 100644
index 20adc22715..0000000000
--- a/editor/icons/icon_texture_rect.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_texture_rect.svg b/editor/icons/icon_texture_rect.svg
new file mode 100644
index 0000000000..86d24ac223
--- /dev/null
+++ b/editor/icons/icon_texture_rect.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1038.4" width="12" height="12" fill="none" stroke="#a5efac" stroke-linecap="round" stroke-width="2"/>
+<path d="m9 1042.4v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-2h-1v-1h-1z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_theme.png b/editor/icons/icon_theme.png
deleted file mode 100644
index 55d799c722..0000000000
--- a/editor/icons/icon_theme.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_theme.svg b/editor/icons/icon_theme.svg
new file mode 100644
index 0000000000..3dfb4aaa00
--- /dev/null
+++ b/editor/icons/icon_theme.svg
@@ -0,0 +1,11 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1l-0.5 2h3l-0.5-2h-2zm-3.2422 1.3438l-0.65625 0.65625h1.75l-1.0938-0.65625zm8.4844 0l-1.0957 0.65625h1.752l-0.65625-0.65625z" fill="#ff7070"/>
+<path transform="translate(0 1036.4)" d="m3.1016 3l-0.75781 0.75781 0.74414 1.2422h9.8242l0.74414-1.2422-0.75781-0.75781h-1.752l-0.89844 0.53906a5 5 0 0 0 -0.68555 -0.28516l-0.0625-0.25391h-3l-0.064453 0.25781a5 5 0 0 0 -0.68945 0.2793l-0.89453-0.53711h-1.75z" fill="#ffeb70"/>
+<path transform="translate(0 1036.4)" d="m3.0879 5l0.45117 0.75195a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625h5.2695a2 2 0 0 1 1.7305 -1 2 2 0 0 1 1.7285 1h5.2715l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l0.44922-0.74805h-9.8242z" fill="#9dff70"/>
+<path transform="translate(0 1036.4)" d="m1 7v2h5.2715a2 2 0 0 1 -0.27148 -1 2 2 0 0 1 0.26953 -1h-5.2695zm8.7285 0a2 2 0 0 1 0.27148 1 2 2 0 0 1 -0.26953 1h5.2695v-2h-5.2715z" fill="#70ffb9"/>
+<path transform="translate(0 1036.4)" d="m1 9l2.2578 0.56445a5 5 0 0 0 0.2793 0.6875l-0.44922 0.74805h9.8242l-0.45117-0.75195a5 5 0 0 0 0.28516 -0.68555l2.2539-0.5625h-5.2695a2 2 0 0 1 -1.7305 1 2 2 0 0 1 -1.7285 -1h-5.2715z" fill="#70deff"/>
+<path transform="translate(0 1036.4)" d="m3.1016 13l0.65625 0.65625 1.0957-0.65625h-1.752zm3.3984 0l0.5 2h2l0.5-2h-3zm4.6484 0l1.0938 0.65625 0.65625-0.65625h-1.75z" fill="#ff70ac"/>
+<path transform="translate(0 1036.4)" d="m3.0879 11l-0.74414 1.2422 0.75781 0.75781h1.752l0.89844-0.53906a5 5 0 0 0 0.68555 0.28516l0.0625 0.25391h3l0.064453-0.25781a5 5 0 0 0 0.6875 -0.2793l0.89648 0.53711h1.75l0.75781-0.75781-0.74414-1.2422h-9.8242z" fill="#9f70ff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_thumbnail_wait.png b/editor/icons/icon_thumbnail_wait.png
deleted file mode 100644
index 96a7d424e3..0000000000
--- a/editor/icons/icon_thumbnail_wait.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_thumbnail_wait.svg b/editor/icons/icon_thumbnail_wait.svg
new file mode 100644
index 0000000000..c38ea1de0c
--- /dev/null
+++ b/editor/icons/icon_thumbnail_wait.svg
@@ -0,0 +1,5 @@
+<svg width="64" height="64" version="1.1" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -988.36)">
+<path transform="translate(0 988.36)" d="m8 0c-4.432 0-8 3.568-8 8v48c0 4.432 3.568 8 8 8h48c4.432 0 8-3.568 8-8v-48c0-4.432-3.568-8-8-8h-48zm0 2h48c3.324 0 6 2.676 6 6v48c0 3.324-2.676 6-6 6h-48c-3.324 0-6-2.676-6-6v-48c0-3.324 2.676-6 6-6zm-0.013672 5.002a1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l8 8a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-8-8a1 1 0 0 0 -0.7207 -0.29102zm48 0a1 1 0 0 0 -0.69336 0.29102l-8 8a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l8-8a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -0.7207 -0.29102zm-33.986 10.998a2.0002 2.0002 0 0 0 -0.37891 0.039062c-0.005702 0.001087-0.011894 8.19e-4 -0.017578 0.001954-0.01402 0.002798-0.027106 0.006677-0.041016 0.009765a2.0002 2.0002 0 0 0 -0.30859 0.095703c-0.024592 0.009869-0.048174 0.020446-0.072265 0.03125a2.0002 2.0002 0 0 0 -0.24609 0.13281c-0.021344 0.013452-0.043669 0.024834-0.064453 0.039062-0.008816 0.006036-0.016678 0.013359-0.025391 0.019532a2.0002 2.0002 0 0 0 -0.21484 0.17578c-0.0215 0.020231-0.04387 0.039386-0.064453 0.060547a2.0002 2.0002 0 0 0 -0.001953 0.001953 2.0002 2.0002 0 0 0 -0.18555 0.22461c-0.017788 0.024669-0.036063 0.048717-0.052734 0.074219a2.0002 2.0002 0 0 0 -0.14258 0.26562c-0.013621 0.029909-0.026892 0.059158-0.039063 0.089844a2.0002 2.0002 0 0 0 -0.09375 0.30078c-0.004203 0.018931-0.008053 0.037509-0.011719 0.056641a2.0002 2.0002 0 0 0 -0.039062 0.38086c0 3 1.9339 5.2454 3.7461 7.3164 1.5217 1.7392 2.8322 3.2888 3.75 4.6836-0.91778 1.3948-2.2283 2.9444-3.75 4.6836-1.8122 2.071-3.7461 4.3164-3.7461 7.3164a2.0002 2.0002 0 0 0 0.041016 0.4043 2.0002 2.0002 0 0 0 0.10547 0.3418c0.008774 0.021862 0.017831 0.042985 0.027344 0.064453a2.0002 2.0002 0 0 0 0.14648 0.27344c0.010017 0.015513 0.018867 0.031664 0.029297 0.046875l0.001953 0.001953a2.0002 2.0002 0 0 0 0.19336 0.23633c0.020231 0.0215 0.039386 0.04387 0.060547 0.064453a2.0002 2.0002 0 0 0 0.001953 0.001953 2.0002 2.0002 0 0 0 0.23438 0.19336c0.021387 0.01522 0.042447 0.030536 0.064453 0.044922a2.0002 2.0002 0 0 0 0.27734 0.15039c0.019743 0.008822 0.038513 0.019147 0.058594 0.027343a2.0002 2.0002 0 0 0 0.33789 0.10352c0.005331 0.001131 0.010278 0.002818 0.015625 0.003906a2.0002 2.0002 0 0 0 0.009766 0 2.0002 2.0002 0 0 0 0.39453 0.041016h20a2.0002 2.0002 0 0 0 0.4043 -0.041016 2.0002 2.0002 0 0 0 0.375 -0.11523 2.0002 2.0002 0 0 0 0.29297 -0.1582c0.018831-0.011984 0.038248-0.022566 0.05664-0.035156a2.0002 2.0002 0 0 0 0.021485 -0.015625 2.0002 2.0002 0 0 0 0.23633 -0.19531c0.013296-0.012808 0.028079-0.023939 0.041015-0.037109a2.0002 2.0002 0 0 0 0.20508 -0.25c0.012127-0.017168 0.025518-0.033217 0.03711-0.050782a2.0002 2.0002 0 0 0 0.15234 -0.28125c0.01106-0.024605 0.021165-0.049089 0.03125-0.074218a2.0002 2.0002 0 0 0 0.097656 -0.31445c0.003563-0.016291 0.0066-0.03239 0.009766-0.048829a2.0002 2.0002 0 0 0 0.039062 -0.38281c0-3-1.9339-5.2454-3.7461-7.3164-1.5217-1.7392-2.8322-3.2888-3.75-4.6836 0.91778-1.3948 2.2283-2.9444 3.75-4.6836 1.8122-2.071 3.7461-4.3164 3.7461-7.3164a2.0002 2.0002 0 0 0 -0.041016 -0.4043v-0.001953a2.0002 2.0002 0 0 0 -0.10156 -0.32617c-0.011965-0.03044-0.023719-0.060163-0.03711-0.089844a2.0002 2.0002 0 0 0 -0.13476 -0.25c-0.011984-0.018831-0.022566-0.038248-0.035156-0.05664a2.0002 2.0002 0 0 0 -0.023438 -0.03125 2.0002 2.0002 0 0 0 -0.1582 -0.19336c-0.025026-0.027154-0.049686-0.054353-0.076172-0.080078a2.0002 2.0002 0 0 0 -0.027344 -0.02539 2.0002 2.0002 0 0 0 -0.18945 -0.1543c-0.031037-0.022641-0.061384-0.04555-0.09375-0.066407l-0.001953-0.001953a2.0002 2.0002 0 0 0 -0.24219 -0.13086c-0.031326-0.014467-0.061564-0.030098-0.09375-0.042969a2.0002 2.0002 0 0 0 -0.29883 -0.091797c-0.021554-0.004877-0.042636-0.009492-0.064453-0.013672a2.0002 2.0002 0 0 0 -0.38086 -0.039062h-20zm3.1758 4h13.648c-0.4756 0.8814-0.611 1.5782-1.5781 2.6836-1.6878 1.929-3.7966 3.9449-5.0352 6.4219a2.0002 2.0002 0 0 0 -0.20898 0.89453h-0.003906a2.0002 2.0002 0 0 0 -0.20898 -0.89453c-1.2385-2.477-3.3473-4.4929-5.0352-6.4219-0.96713-1.1054-1.1025-1.8022-1.5781-2.6836zm-9.1895 25.002a1 1 0 0 0 -0.69336 0.29102l-8 8a1 1 0 0 0 0 1.4141 1 1 0 0 0 1.4141 0l8-8a1 1 0 0 0 0 -1.4141 1 1 0 0 0 -0.7207 -0.29102zm32 0a1 1 0 0 0 -0.69336 0.29102 1 1 0 0 0 0 1.4141l8 8a1 1 0 0 0 1.4141 0 1 1 0 0 0 0 -1.4141l-8-8a1 1 0 0 0 -0.7207 -0.29102z" fill="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tile_map.png b/editor/icons/icon_tile_map.png
deleted file mode 100644
index 0ba6276e25..0000000000
--- a/editor/icons/icon_tile_map.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tile_map.svg b/editor/icons/icon_tile_map.svg
new file mode 100644
index 0000000000..826b515025
--- /dev/null
+++ b/editor/icons/icon_tile_map.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm-12 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tile_set.png b/editor/icons/icon_tile_set.png
deleted file mode 100644
index a1c3fccddd..0000000000
--- a/editor/icons/icon_tile_set.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tile_set.svg b/editor/icons/icon_tile_set.svg
new file mode 100644
index 0000000000..935afea397
--- /dev/null
+++ b/editor/icons/icon_tile_set.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm-12 3v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm3 0v2h2v-2zm-12 3v2h2v-2zm3 0v2h2v-2zm5 1v7h5c0.55228 0 1-0.44772 1-1v-5c0-0.55228-0.44772-1-1-1v4l-1-1-1 1v-4zm-8 2v2h2v-2zm3 0v2h2v-2zm-3 3v2h2v-2zm3 0v2h2v-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_time.png b/editor/icons/icon_time.png
deleted file mode 100644
index a8e97ea7b8..0000000000
--- a/editor/icons/icon_time.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_timer.png b/editor/icons/icon_timer.png
deleted file mode 100644
index 81e619cdaa..0000000000
--- a/editor/icons/icon_timer.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_timer.svg b/editor/icons/icon_timer.svg
new file mode 100644
index 0000000000..e5907cea20
--- /dev/null
+++ b/editor/icons/icon_timer.svg
@@ -0,0 +1,8 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1037.4" width="12" height="2" ry="1" fill="#e0e0e0"/>
+<rect x="2" y="1049.4" width="12" height="2" ry="1" fill="#e0e0e0"/>
+<path d="m3 1050.4h10l-3-6h-4z" fill="#e0e0e0"/>
+<path d="m3 1038.4h10c0 2-3 4-4 6 1 2 4 4 4 6h-10c0-2 3-4 4-6-1-2-4-4-4-6z" fill="none" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tool_button.png b/editor/icons/icon_tool_button.png
deleted file mode 100644
index 43c08592c6..0000000000
--- a/editor/icons/icon_tool_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tool_button.svg b/editor/icons/icon_tool_button.svg
new file mode 100644
index 0000000000..4f0c3797f8
--- /dev/null
+++ b/editor/icons/icon_tool_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m11 1.1738c-1.1979 0.4235-1.999 1.5557-2 2.8262 9.552e-4 1.2705 0.80214 2.4027 2 2.8262v7.1738c0 0.554 0.446 1 1 1s1-0.446 1-1v-7.1758c1.1972-0.4232 1.9982-1.5544 2-2.8242-0.0018-1.2698-0.80282-2.401-2-2.8242v2.8242c0 0.5523-0.44772 1-1 1s-1-0.4477-1-1zm-7 1.8262v3.1328l-1.4453-0.96484-1.1094 1.6641 3 2c0.3359 0.22389 0.77347 0.22389 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-3.1328zm-0.5 8c-0.831 0-1.5 0.669-1.5 1.5v0.5h-1v2h8v-2h-1v-0.5c0-0.831-0.669-1.5-1.5-1.5z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tool_move.png b/editor/icons/icon_tool_move.png
deleted file mode 100644
index 2b6984e8b2..0000000000
--- a/editor/icons/icon_tool_move.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tool_move.svg b/editor/icons/icon_tool_move.svg
new file mode 100644
index 0000000000..79fd083669
--- /dev/null
+++ b/editor/icons/icon_tool_move.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7.9844 1.002a1.0001 1.0001 0 0 0 -0.69141 0.29102l-2 2 1.4141 1.4141 1.293-1.293 1.293 1.293 1.4141-1.4141-2-2a1.0001 1.0001 0 0 0 -0.72266 -0.29102zm-4.6914 4.291l-2 2a1.0001 1.0001 0 0 0 0 1.4141l2 2 1.4141-1.4141-1.293-1.293 1.293-1.293-1.4141-1.4141zm9.4141 0l-1.4141 1.4141 1.293 1.293-1.293 1.293 1.4141 1.4141 2-2a1.0001 1.0001 0 0 0 0 -1.4141l-2-2zm-4.707 0.70703a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-1.293 5.293l-1.4141 1.4141 2 2a1.0001 1.0001 0 0 0 1.4141 0l2-2-1.4141-1.4141-1.293 1.293-1.293-1.293z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tool_pan.png b/editor/icons/icon_tool_pan.png
deleted file mode 100644
index a24545a6d4..0000000000
--- a/editor/icons/icon_tool_pan.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tool_pan.svg b/editor/icons/icon_tool_pan.svg
new file mode 100644
index 0000000000..ff2b2eda1d
--- /dev/null
+++ b/editor/icons/icon_tool_pan.svg
@@ -0,0 +1,13 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m6 8v7h6v-2h2v-5h-8z"/>
+<rect x="6" y="1039.4" width="2" height="8"/>
+<rect x="9" y="1038.4" width="2" height="8"/>
+<rect x="12" y="1040.4" width="2" height="8"/>
+<circle cx="7" cy="1039.4" r="1"/>
+<circle cx="10" cy="1038.4" r="1"/>
+<circle cx="13" cy="1040.4" r="1"/>
+<circle cx="12" cy="1049.4" r="2"/>
+<path d="m3.5251 1045.6c-0.52015-0.3803-1.1943-0.4556-1.6499 0-0.45566 0.4556-0.45564 1.1943-2.36e-5 1.6499l4.1248 4.1248 1.6499-2.7593z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tool_rotate.png b/editor/icons/icon_tool_rotate.png
deleted file mode 100644
index 9303fabb9c..0000000000
--- a/editor/icons/icon_tool_rotate.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tool_rotate.svg b/editor/icons/icon_tool_rotate.svg
new file mode 100644
index 0000000000..0a5c0fc340
--- /dev/null
+++ b/editor/icons/icon_tool_rotate.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8.0879 1.002a7 7 0 0 0 -0.30469 0.0019531 7 7 0 0 0 -0.69727 0.056641 7 7 0 0 0 -5.9512 5.5742 7 7 0 0 0 1.9707 6.3652h-1.1055v2h4a1.0001 1.0001 0 0 0 0.9707 -1.2422l-1-4-1.9414 0.48633 0.28125 1.1211a5 5 0 0 1 -1.3105 -3.3652 5 5 0 0 1 5 -5 5 5 0 0 1 5 5 5 5 0 0 1 -1.4668 3.5332l1.416 1.416a7 7 0 0 0 1.3281 -8.0449 7 7 0 0 0 -6.1895 -3.9023zm-0.087891 4.998a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" fill="#e0e0e0" fill-opacity=".99608" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tool_scale.png b/editor/icons/icon_tool_scale.png
deleted file mode 100644
index b389c40746..0000000000
--- a/editor/icons/icon_tool_scale.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tool_scale.svg b/editor/icons/icon_tool_scale.svg
new file mode 100644
index 0000000000..3d771651bd
--- /dev/null
+++ b/editor/icons/icon_tool_scale.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m9 1a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2.5859l-1.293 1.293 1.4141 1.4141 1.293-1.293v2.5859a1 1 0 0 0 1 1 1 1 0 0 0 1 -1v-5a1.0001 1.0001 0 0 0 -1 -1h-5zm-1 5a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-6 2a1 1 0 0 0 -1 1v5a1.0001 1.0001 0 0 0 1 1h5a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2.5859l1.293-1.293-1.4141-1.4141-1.293 1.293v-2.5859a1 1 0 0 0 -1 -1z" fill="#e0e0e0" fill-opacity=".99608" stroke-width="0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tool_select.png b/editor/icons/icon_tool_select.png
deleted file mode 100644
index dcf6fcd2c8..0000000000
--- a/editor/icons/icon_tool_select.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tool_select.svg b/editor/icons/icon_tool_select.svg
new file mode 100644
index 0000000000..fc8931cd0e
--- /dev/null
+++ b/editor/icons/icon_tool_select.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(-26.001 -9.8683)">
+<path d="m40.001 1053.2-12-4.9365 4.9365 12 1.4207-4.2301 2.8254 2.8252 1.4127-1.4127-2.8254-2.8252z" fill="#e0e0e0"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_tools.png b/editor/icons/icon_tools.png
deleted file mode 100644
index d81c93f212..0000000000
--- a/editor/icons/icon_tools.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tools.svg b/editor/icons/icon_tools.svg
new file mode 100644
index 0000000000..854cc08e79
--- /dev/null
+++ b/editor/icons/icon_tools.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1l-1 2 1 2v4h-2v3 0.5c0 1.385 1.115 2.5 2.5 2.5s2.5-1.115 2.5-2.5v-1-2.5h-2v-4l1-2-1-2h-1zm6 0.17383a3 3 0 0 0 -2 2.8262 3 3 0 0 0 2 2.8262v6.1738 1c0 0.554 0.446 1 1 1s1-0.446 1-1v-4-3.1758a3 3 0 0 0 2 -2.8242 3 3 0 0 0 -2 -2.8242v2.8242a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-2.8262z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_touch_screen_button.png b/editor/icons/icon_touch_screen_button.png
deleted file mode 100644
index 6bd0af3f47..0000000000
--- a/editor/icons/icon_touch_screen_button.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_touch_screen_button.svg b/editor/icons/icon_touch_screen_button.svg
new file mode 100644
index 0000000000..21a8f16ee6
--- /dev/null
+++ b/editor/icons/icon_touch_screen_button.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h2v-1h-1-1v-2h8v2h-2v1h2a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-8zm4 2a1 1 0 0 0 -1 1v7 0.033203l-2.4746-1.8086c-0.52015-0.3803-1.1948-0.4556-1.6504 0-0.45566 0.4556-0.45561 1.1948 0 1.6504l4.125 4.125h6c1.1046 0 2-0.8954 2-2v-5h-6v-4a1 1 0 0 0 -1 -1z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_track_add_key.png b/editor/icons/icon_track_add_key.png
deleted file mode 100644
index 02d92439a3..0000000000
--- a/editor/icons/icon_track_add_key.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_track_add_key.svg b/editor/icons/icon_track_add_key.svg
new file mode 100644
index 0000000000..e59de70348
--- /dev/null
+++ b/editor/icons/icon_track_add_key.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path transform="translate(0 1044.4)" d="m3 0v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2z" fill="#84ffb1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_track_add_key_hl.png b/editor/icons/icon_track_add_key_hl.png
deleted file mode 100644
index 0e857f5fe2..0000000000
--- a/editor/icons/icon_track_add_key_hl.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_track_add_key_hl.svg b/editor/icons/icon_track_add_key_hl.svg
new file mode 100644
index 0000000000..01ef661adc
--- /dev/null
+++ b/editor/icons/icon_track_add_key_hl.svg
@@ -0,0 +1,6 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path transform="translate(0 1044.4)" d="m3 0v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2z" fill="#84ffb1"/>
+<path transform="translate(0 1044.4)" d="m3 0v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2z" fill="#fff" fill-opacity=".42424"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_track_continuous.png b/editor/icons/icon_track_continuous.png
deleted file mode 100644
index dabdc718d5..0000000000
--- a/editor/icons/icon_track_continuous.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_track_continuous.svg b/editor/icons/icon_track_continuous.svg
new file mode 100644
index 0000000000..635b558758
--- /dev/null
+++ b/editor/icons/icon_track_continuous.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<path d="m2 1050.4c6 0 6-4 12-4" fill="none" stroke="#e0e0e0" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_track_discrete.png b/editor/icons/icon_track_discrete.png
deleted file mode 100644
index 3f580ac5fc..0000000000
--- a/editor/icons/icon_track_discrete.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_track_discrete.svg b/editor/icons/icon_track_discrete.svg
new file mode 100644
index 0000000000..80c9062365
--- /dev/null
+++ b/editor/icons/icon_track_discrete.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)" fill="#e0e0e0">
+<circle cx="2" cy="1050.4" r="1"/>
+<circle cx="8" cy="1048.4" r="1"/>
+<circle cx="14" cy="1046.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_track_method.png b/editor/icons/icon_track_method.png
deleted file mode 100644
index 1355c84e67..0000000000
--- a/editor/icons/icon_track_method.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_track_prop.png b/editor/icons/icon_track_prop.png
deleted file mode 100644
index de8f549cd2..0000000000
--- a/editor/icons/icon_track_prop.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_track_trigger.png b/editor/icons/icon_track_trigger.png
deleted file mode 100644
index e89f95561a..0000000000
--- a/editor/icons/icon_track_trigger.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_track_trigger.svg b/editor/icons/icon_track_trigger.svg
new file mode 100644
index 0000000000..f614943845
--- /dev/null
+++ b/editor/icons/icon_track_trigger.svg
@@ -0,0 +1,9 @@
+<svg width="16" height="8" version="1.1" viewBox="0 0 16 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)" fill="#e0e0e0">
+<circle cx="11" cy="1048.4" r="1"/>
+<circle cx="14" cy="1046.4" r="1"/>
+<rect x="1" y="1045.4" width="6" height="2"/>
+<rect x="3" y="1047.4" width="2" height="4"/>
+<circle cx="8" cy="1050.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_track_value.png b/editor/icons/icon_track_value.png
deleted file mode 100644
index 5f5dc0d315..0000000000
--- a/editor/icons/icon_track_value.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_translation.png b/editor/icons/icon_translation.png
deleted file mode 100644
index abca359eea..0000000000
--- a/editor/icons/icon_translation.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_translation.svg b/editor/icons/icon_translation.svg
new file mode 100644
index 0000000000..81abe5070e
--- /dev/null
+++ b/editor/icons/icon_translation.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m2 1v14h10a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2v5 2l-2-2-2 2v-2-5h-6z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_transparent.png b/editor/icons/icon_transparent.png
deleted file mode 100644
index 07e9b52b5c..0000000000
--- a/editor/icons/icon_transparent.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_transpose.png b/editor/icons/icon_transpose.png
deleted file mode 100644
index 7a126c8428..0000000000
--- a/editor/icons/icon_transpose.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_transpose.svg b/editor/icons/icon_transpose.svg
new file mode 100644
index 0000000000..7dd194d724
--- /dev/null
+++ b/editor/icons/icon_transpose.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v14h7v-7h7v-7zm2 2h3v3h-3zm0 5h3v5h-3zm12 2-5 5h5z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tree.png b/editor/icons/icon_tree.png
deleted file mode 100644
index de856a79fb..0000000000
--- a/editor/icons/icon_tree.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tree.svg b/editor/icons/icon_tree.svg
new file mode 100644
index 0000000000..62efb9f94f
--- /dev/null
+++ b/editor/icons/icon_tree.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m1 1v13c5.52e-5 0.55226 0.44774 0.99994 1 1h13v-2h-12v-6h2v3c5.52e-5 0.55226 0.44774 0.99994 1 1h9v-2h-8v-2h8v-2h-12v-2h12v-2z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_tree_arrow_down.png b/editor/icons/icon_tree_arrow_down.png
deleted file mode 100644
index 4ef7b41de6..0000000000
--- a/editor/icons/icon_tree_arrow_down.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tree_arrow_right.png b/editor/icons/icon_tree_arrow_right.png
deleted file mode 100644
index 13a42f730d..0000000000
--- a/editor/icons/icon_tree_arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tween.png b/editor/icons/icon_tween.png
deleted file mode 100644
index 3181e2cf63..0000000000
--- a/editor/icons/icon_tween.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_tween.svg b/editor/icons/icon_tween.svg
new file mode 100644
index 0000000000..202dd9eb65
--- /dev/null
+++ b/editor/icons/icon_tween.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m7 1v2h6v6h2v-8h-8zm-1 4l1.793 1.793-4.793 4.793v-4.5859h-2v8h8v-2h-4.5859l4.793-4.793 1.793 1.793v-5h-5z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#cea4f1" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_unbone.png b/editor/icons/icon_unbone.png
deleted file mode 100644
index 919e13ad6b..0000000000
--- a/editor/icons/icon_unbone.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_unbone.svg b/editor/icons/icon_unbone.svg
new file mode 100644
index 0000000000..06dfe67030
--- /dev/null
+++ b/editor/icons/icon_unbone.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m10.479 1a2.4664 2.4663 0 0 0 -1.7813 0.7207 2.4664 2.4663 0 0 0 -0.31445 3.1035l-1.0723 1.0723 2.791 2.791 1.0762-1.0742a2.4664 2.4663 0 0 0 3.0996 -0.31055 2.4664 2.4663 0 0 0 0 -3.4883 2.4664 2.4663 0 0 0 -1.3965 -0.69727 2.4664 2.4663 0 0 0 -0.69531 -1.3965 2.4664 2.4663 0 0 0 -1.707 -0.7207zm-4.582 6.3105l-1.0723 1.0742a2.4664 2.4663 0 0 0 -3.1016 0.3125 2.4664 2.4663 0 0 0 0 3.4883 2.4664 2.4663 0 0 0 1.3965 0.69531 2.4664 2.4663 0 0 0 0.69531 1.3965 2.4664 2.4663 0 0 0 3.4883 0 2.4664 2.4663 0 0 0 0.31445 -3.1035l1.0703-1.0723-2.791-2.791z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_unchecked.png b/editor/icons/icon_unchecked.png
deleted file mode 100644
index 9d7d55aa46..0000000000
--- a/editor/icons/icon_unchecked.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_ungroup.png b/editor/icons/icon_ungroup.png
deleted file mode 100644
index b4c2e01814..0000000000
--- a/editor/icons/icon_ungroup.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_ungroup.svg b/editor/icons/icon_ungroup.svg
new file mode 100644
index 0000000000..cdda5d3dbf
--- /dev/null
+++ b/editor/icons/icon_ungroup.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m7 1037.4v6h-6v8h8v-6h6v-8zm2 2h4v4h-4z" fill="#e0e0e0" fill-opacity=".39216"/>
+<path transform="translate(0 1036.4)" d="m7 1v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm6 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.341e-5 -0.446 0-1 0s-1-2.341e-5 -1 0zm-12 6v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.34e-5 -0.446 0-1 0s-1-2.34e-5 -1 0zm6 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.34e-5 -0.446 0-1 0s-1-2.34e-5 -1 0zm6 0v2c0 2.34e-5 0.446 0 1 0s1 2.34e-5 1 0v-2c0-2.34e-5 -0.446 0-1 0s-1-2.34e-5 -1 0zm-12 6v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0zm6 0v2c0 2.3e-5 0.446 0 1 0s1 2.3e-5 1 0v-2c0-2.3e-5 -0.446 0-1 0s-1-2.3e-5 -1 0z" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_uninstance.png b/editor/icons/icon_uninstance.png
deleted file mode 100644
index de8b2f9a40..0000000000
--- a/editor/icons/icon_uninstance.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_unlock.png b/editor/icons/icon_unlock.png
deleted file mode 100644
index d314aa46fe..0000000000
--- a/editor/icons/icon_unlock.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_unlock.svg b/editor/icons/icon_unlock.svg
new file mode 100644
index 0000000000..10ea82cbcf
--- /dev/null
+++ b/editor/icons/icon_unlock.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<path transform="translate(0 1036.4)" d="m2 8v7h12v-7h-12zm5 2h2v3h-2v-3z"/>
+<path transform="translate(0 1036.4)" d="m8 1c-0.87738 0.001545-1.7389 0.23394-2.498 0.67383l1 1.7324c0.45506-0.26449 0.97171-0.40459 1.498-0.40625 1.6569 0 3 1.3431 3 3h2c0-2.7614-2.2386-5-5-5z"/>
+<rect x="11" y="1042.4" width="2" height="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_up.png b/editor/icons/icon_up.png
deleted file mode 100644
index 346c4cdba8..0000000000
--- a/editor/icons/icon_up.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_updown.png b/editor/icons/icon_updown.png
deleted file mode 100644
index 3141dc56ae..0000000000
--- a/editor/icons/icon_updown.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_uv.png b/editor/icons/icon_uv.png
deleted file mode 100644
index f5d901ab91..0000000000
--- a/editor/icons/icon_uv.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_uv.svg b/editor/icons/icon_uv.svg
new file mode 100644
index 0000000000..13744d496a
--- /dev/null
+++ b/editor/icons/icon_uv.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 5v4a3 3 0 0 0 1.5 2.5977 3 3 0 0 0 3 0 3 3 0 0 0 1.5 -2.5977v-4h-2v4a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-4h-2zm8 0l2 7h1 1 1l2-7h-2l-1.5 5.25-1.5-5.25h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_v_box_container.png b/editor/icons/icon_v_box_container.png
deleted file mode 100644
index 4d9bdb67b8..0000000000
--- a/editor/icons/icon_v_box_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_v_box_container.svg b/editor/icons/icon_v_box_container.svg
new file mode 100644
index 0000000000..07c2b230c0
--- /dev/null
+++ b/editor/icons/icon_v_box_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m15 1039.4c0-1.1046-0.89543-2-2-2h-10c-1.1046 0-2 0.8954-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-10zm-2 0v2h-10v-2h10zm0 4v2h-10v-2h10zm0 4v2h-10v-2h10z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_v_button_array.png b/editor/icons/icon_v_button_array.png
deleted file mode 100644
index 996475ffa4..0000000000
--- a/editor/icons/icon_v_button_array.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_v_button_array.svg b/editor/icons/icon_v_button_array.svg
new file mode 100644
index 0000000000..ac7ce6064c
--- /dev/null
+++ b/editor/icons/icon_v_button_array.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#a5efac">
+<path transform="translate(0 1036.4)" d="m7 1v2.1328l-1.4453-0.96484-1.1094 1.6641 3 2c0.3359 0.2239 0.77347 0.2239 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-2.1328h-2zm-0.5 6c-0.831 0-1.5 0.669-1.5 1.5v0.5h-1v2h2v-2h4v2h2v-2h-1v-0.5c0-0.831-0.669-1.5-1.5-1.5h-3z"/>
+<path d="m7 1046.4v2h-2v2h2v2h2v-2h2v-2h-2v-2z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_v_scroll_bar.png b/editor/icons/icon_v_scroll_bar.png
deleted file mode 100644
index edd6d4cd67..0000000000
--- a/editor/icons/icon_v_scroll_bar.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_v_scroll_bar.svg b/editor/icons/icon_v_scroll_bar.svg
new file mode 100644
index 0000000000..49b2f5e851
--- /dev/null
+++ b/editor/icons/icon_v_scroll_bar.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 1c-1.108 0-2 0.89199-2 2v10c0 1.108 0.89199 2 2 2h6c1.108 0 2-0.89199 2-2v-10c0-1.108-0.89199-2-2-2h-6zm2.9883 1a1.0001 1.0001 0 0 1 0.56641 0.16797l3 2a1.0001 1.0001 0 1 1 -1.1094 1.6641l-2.4453-1.6289-2.4453 1.6289a1.0001 1.0001 0 1 1 -1.1094 -1.6641l3-2a1.0001 1.0001 0 0 1 0.54297 -0.16797zm-2.998 7.9922a1.0001 1.0001 0 0 1 0.56445 0.17578l2.4453 1.6309 2.4453-1.6309a1.0001 1.0001 0 1 1 1.1094 1.6641l-3 2a1.0001 1.0001 0 0 1 -1.1094 0l-3-2a1.0001 1.0001 0 0 1 0.54492 -1.8398z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_v_separator.png b/editor/icons/icon_v_separator.png
deleted file mode 100644
index f0122d197f..0000000000
--- a/editor/icons/icon_v_separator.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_v_separator.svg b/editor/icons/icon_v_separator.svg
new file mode 100644
index 0000000000..b12bbd1ca6
--- /dev/null
+++ b/editor/icons/icon_v_separator.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1047.4h3v-6h-3v6zm5 4h2v-14h-2v14zm4-4h3v-6h-3v6z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_v_slider.png b/editor/icons/icon_v_slider.png
deleted file mode 100644
index d9c0bb00d9..0000000000
--- a/editor/icons/icon_v_slider.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_v_slider.svg b/editor/icons/icon_v_slider.svg
new file mode 100644
index 0000000000..2da5fc8dcd
--- /dev/null
+++ b/editor/icons/icon_v_slider.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5.0156 0.98633a1.0001 1.0001 0 0 0 -0.25977 0.029297 2 2 0 0 0 -1.7559 1.9844 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -1.7539 -1.9824 1.0001 1.0001 0 0 0 -0.23047 -0.03125zm4.9844 0.013672a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2zm-4 5.8672a4 4 0 0 1 -1 0.13281 4 4 0 0 1 -1 -0.13086v5 1.1309 1a1.0001 1.0001 0 1 0 2 0v-1-1.1328-5zm5 0.13281a1 1 0 0 0 -1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1zm-1 6a1 1 0 0 0 -1 1 1 1 0 0 0 1 1h2a1 1 0 0 0 1 -1 1 1 0 0 0 -1 -1h-2z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#a5efac" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_v_split_container.png b/editor/icons/icon_v_split_container.png
deleted file mode 100644
index 23093e334f..0000000000
--- a/editor/icons/icon_v_split_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_v_split_container.svg b/editor/icons/icon_v_split_container.svg
new file mode 100644
index 0000000000..3f47d9cade
--- /dev/null
+++ b/editor/icons/icon_v_split_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v4h-3l-2-2-2 2h-3v-4zm0 6h3l2 2 2-2h3v4h-10v-4z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_variant.png b/editor/icons/icon_variant.png
deleted file mode 100644
index af7590345e..0000000000
--- a/editor/icons/icon_variant.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_variant.svg b/editor/icons/icon_variant.svg
new file mode 100644
index 0000000000..32f72b1ce6
--- /dev/null
+++ b/editor/icons/icon_variant.svg
@@ -0,0 +1,16 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(0,-3)" fill="#e0e0e0">
+<rect x="3" y="1044.4" width="2" height="6"/>
+<rect x="6" y="1044.4" width="2" height="6"/>
+<rect x="3" y="1044.4" width="1" height="2"/>
+<path d="m3 1044.4a3 3 0 0 0 -3 3h2a1 1 0 0 1 1 -1z"/>
+<path d="m14 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1z"/>
+<rect transform="scale(1,-1)" x="14" y="-1052.4" width="2" height="8"/>
+<rect transform="scale(1,-1)" x="11" y="-1047.4" width="2" height="3"/>
+<path d="m3 1050.4a3 3 0 0 1 -3 -3h2a1 1 0 0 0 1 1z"/>
+<path d="m8 1044.4a3 3 0 0 1 3 3h-2a1 1 0 0 0 -1 -1z"/>
+<rect x="9" y="1047.4" width="2" height="3"/>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_vector.png b/editor/icons/icon_vector.png
deleted file mode 100644
index 8dba948daf..0000000000
--- a/editor/icons/icon_vector.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vector.svg b/editor/icons/icon_vector.svg
new file mode 100644
index 0000000000..dda46edeaa
--- /dev/null
+++ b/editor/icons/icon_vector.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)" fill="none" stroke="#b8ea68" stroke-width="2">
+<path d="m7 1047.4-4 4"/>
+<path d="m7 1040.4v7h7"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_vector2.png b/editor/icons/icon_vector2.png
deleted file mode 100644
index f84052cda0..0000000000
--- a/editor/icons/icon_vector2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vector2.svg b/editor/icons/icon_vector2.svg
new file mode 100644
index 0000000000..ab92e7bb60
--- /dev/null
+++ b/editor/icons/icon_vector2.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="12" version="1.1" viewBox="0 0 16 12" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1040.4)">
+<path d="m4 1041.4v9h9" fill="none" stroke="#b8ea68" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_vehicle_body.png b/editor/icons/icon_vehicle_body.png
deleted file mode 100644
index c404218911..0000000000
--- a/editor/icons/icon_vehicle_body.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vehicle_body.svg b/editor/icons/icon_vehicle_body.svg
new file mode 100644
index 0000000000..01eb1798eb
--- /dev/null
+++ b/editor/icons/icon_vehicle_body.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m5 3a1 1 0 0 0 -1 1l-1 3h-2v4h1.0508c0.23167-1.1411 1.2398-2 2.4492-2s2.2175 0.85893 2.4492 2h2.1016c0.23167-1.1411 1.2398-2 2.4492-2s2.2175 0.85893 2.4492 2h1.0508v-4h-4v-4h-6zm1 1h4v3h-4v-3zm-1.5 6a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm7 0a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5z" fill="#fc9c9c" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_vehicle_wheel.png b/editor/icons/icon_vehicle_wheel.png
deleted file mode 100644
index 23299a0425..0000000000
--- a/editor/icons/icon_vehicle_wheel.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vehicle_wheel.svg b/editor/icons/icon_vehicle_wheel.svg
new file mode 100644
index 0000000000..fcee90e2e2
--- /dev/null
+++ b/editor/icons/icon_vehicle_wheel.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#fc9c9c" fill-opacity=".99608">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm0 2a5 5 0 0 1 5 5 5 5 0 0 1 -5 5 5 5 0 0 1 -5 -5 5 5 0 0 1 5 -5z"/>
+<path transform="translate(0 1036.4)" d="m8 4a4 4 0 0 0 -4 4 4 4 0 0 0 4 4 4 4 0 0 0 4 -4 4 4 0 0 0 -4 -4zm0 1a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-2 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm4 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-2 2a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_video_player.png b/editor/icons/icon_video_player.png
deleted file mode 100644
index 0d5dc0ed73..0000000000
--- a/editor/icons/icon_video_player.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_video_player.svg b/editor/icons/icon_video_player.svg
new file mode 100644
index 0000000000..cbee054665
--- /dev/null
+++ b/editor/icons/icon_video_player.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="2" y="1038.4" width="12" height="12" ry="1" fill="none" stroke="#a5efac" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+<path d="m6 1045.4v-4l4 2z" fill="#a5efac" fill-rule="evenodd"/>
+<rect x="3" y="1047.4" width="10" height="2" ry="0" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_video_stream_theora.png b/editor/icons/icon_video_stream_theora.png
deleted file mode 100644
index 3f019f9b61..0000000000
--- a/editor/icons/icon_video_stream_theora.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_view.png b/editor/icons/icon_view.png
deleted file mode 100644
index c7975ed461..0000000000
--- a/editor/icons/icon_view.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_viewport.png b/editor/icons/icon_viewport.png
deleted file mode 100644
index 8b25ea8764..0000000000
--- a/editor/icons/icon_viewport.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_viewport.svg b/editor/icons/icon_viewport.svg
new file mode 100644
index 0000000000..4c3069adc2
--- /dev/null
+++ b/editor/icons/icon_viewport.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-0.5304 8.01e-5 -1.0391 0.21085-1.4141 0.58594-0.37509 0.37501-0.58586 0.88366-0.58594 1.4141v8c8.03e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.37509 0.88366 0.58586 1.4141 0.58594h10c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v8c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-8c9.6e-6 -0.55228 0.44772-0.99999 1-1z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_viewport_container.png b/editor/icons/icon_viewport_container.png
deleted file mode 100644
index c70dee3698..0000000000
--- a/editor/icons/icon_viewport_container.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_viewport_container.svg b/editor/icons/icon_viewport_container.svg
new file mode 100644
index 0000000000..28df39af51
--- /dev/null
+++ b/editor/icons/icon_viewport_container.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2zm0 2h10v10h-10zm3 1c-0.5304 1e-4 -1.0391 0.21084-1.4141 0.58594-0.37509 0.375-0.58586 0.88366-0.58594 1.4141v4c8e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.3751 0.88366 0.58584 1.4141 0.58594h4c1.1046 0 2-0.8954 2-2v-4c0-1.1046-0.89543-2-2-2zm0 1h4c0.55228 0 0.99999 0.4477 1 1v4c-1e-5 0.5523-0.44772 1-1 1h-4c-0.55228 0-0.99999-0.4477-1-1v-4c1e-5 -0.5523 0.44772-1 1-1z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_viewport_sprite.png b/editor/icons/icon_viewport_sprite.png
deleted file mode 100644
index 9aefb471d6..0000000000
--- a/editor/icons/icon_viewport_sprite.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_viewport_sprite.svg b/editor/icons/icon_viewport_sprite.svg
new file mode 100644
index 0000000000..4b8bbeaeba
--- /dev/null
+++ b/editor/icons/icon_viewport_sprite.svg
@@ -0,0 +1,7 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="20" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
+<path transform="translate(0 1036.4)" d="m3 2c-0.5304 8.01e-5 -1.0391 0.21085-1.4141 0.58594-0.37509 0.37501-0.58586 0.88366-0.58594 1.4141v8c8.03e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.37509 0.88366 0.58586 1.4141 0.58594h10c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2h-10zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v8c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-8c9.6e-6 -0.55228 0.44772-0.99999 1-1zm1 3v2h2v-2h-2zm6 0v2h2v-2h-2zm-6 3v1h8v-1h-8z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_viewport_texture.png b/editor/icons/icon_viewport_texture.png
deleted file mode 100644
index ae744cc407..0000000000
--- a/editor/icons/icon_viewport_texture.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_viewport_texture.svg b/editor/icons/icon_viewport_texture.svg
new file mode 100644
index 0000000000..57cb08b32c
--- /dev/null
+++ b/editor/icons/icon_viewport_texture.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 2c-0.5304 8.01e-5 -1.0391 0.21085-1.4141 0.58594-0.37509 0.37501-0.58586 0.88366-0.58594 1.4141v8c8.03e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.37509 0.88366 0.58586 1.4141 0.58594h10c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2h-10zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v8c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-8c9.6e-6 -0.55228 0.44772-0.99999 1-1zm6 3v1h-1v1h-2v1h-1v1h-1v1h2 2 2 2v-2h-1v-1-1h-1v-1h-1z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_visibility_area.png b/editor/icons/icon_visibility_area.png
deleted file mode 100644
index f3ca05711b..0000000000
--- a/editor/icons/icon_visibility_area.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visibility_enabler.png b/editor/icons/icon_visibility_enabler.png
deleted file mode 100644
index 66dffd3483..0000000000
--- a/editor/icons/icon_visibility_enabler.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visibility_enabler.svg b/editor/icons/icon_visibility_enabler.svg
new file mode 100644
index 0000000000..868437108a
--- /dev/null
+++ b/editor/icons/icon_visibility_enabler.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v3h1v-2h2v-1h-3zm11 0v1h2v2h1v-3h-3zm-4 1c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246s5.8365-1.7892 6.9609-5.7246a1.0001 1.0001 0 0 0 0 -0.55273c-1.1003-3.7876-4.4066-5.7227-6.9609-5.7227zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-7 6v3h3v-1h-2v-2h-1zm13 0v2h-2v1h3v-3h-1z" color="#000000" color-rendering="auto" fill="#fc9c9c" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_visibility_enabler_2d.png b/editor/icons/icon_visibility_enabler_2d.png
deleted file mode 100644
index e198b9785b..0000000000
--- a/editor/icons/icon_visibility_enabler_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visibility_enabler_2d.svg b/editor/icons/icon_visibility_enabler_2d.svg
new file mode 100644
index 0000000000..1cde98da61
--- /dev/null
+++ b/editor/icons/icon_visibility_enabler_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m1 1v3h1v-2h2v-1h-3zm11 0v1h2v2h1v-3h-3zm-4 1c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246s5.8365-1.7892 6.9609-5.7246a1.0001 1.0001 0 0 0 0 -0.55273c-1.1003-3.7876-4.4066-5.7227-6.9609-5.7227zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm-7 6v3h3v-1h-2v-2h-1zm13 0v2h-2v1h3v-3h-1z" color="#000000" color-rendering="auto" fill="#a5b7f3" fill-opacity=".98824" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_visibility_notifier.png b/editor/icons/icon_visibility_notifier.png
deleted file mode 100644
index 624122fb4c..0000000000
--- a/editor/icons/icon_visibility_notifier.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visibility_notifier.svg b/editor/icons/icon_visibility_notifier.svg
new file mode 100644
index 0000000000..2a631f9216
--- /dev/null
+++ b/editor/icons/icon_visibility_notifier.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m12 1v6h2v-6h-2zm-4 2c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246 1.4907 0 3.2717-0.65207 4.7109-2h-0.71094-2v-0.54102a4 4 0 0 1 -2 0.54102 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4 4 4 0 0 1 2 0.54102v-2.1816c-0.68312-0.23834-1.3644-0.35938-2-0.35938zm0 4a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm4 2v2h2v-2h-2z" color="#000000" color-rendering="auto" fill="#fc9c9c" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_visibility_notifier_2d.png b/editor/icons/icon_visibility_notifier_2d.png
deleted file mode 100644
index f904223edf..0000000000
--- a/editor/icons/icon_visibility_notifier_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visibility_notifier_2d.svg b/editor/icons/icon_visibility_notifier_2d.svg
new file mode 100644
index 0000000000..e7eac0c715
--- /dev/null
+++ b/editor/icons/icon_visibility_notifier_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m12 1v6h2v-6h-2zm-4 2c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246 1.4907 0 3.2717-0.65207 4.7109-2h-0.71094-2v-0.54102a4 4 0 0 1 -2 0.54102 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4 4 4 0 0 1 2 0.54102v-2.1816c-0.68312-0.23834-1.3644-0.35938-2-0.35938zm0 4a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2zm4 2v2h2v-2h-2z" color="#000000" color-rendering="auto" fill="#a5b7f3" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_visible.png b/editor/icons/icon_visible.png
deleted file mode 100644
index 4e79dd3245..0000000000
--- a/editor/icons/icon_visible.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visible.svg b/editor/icons/icon_visible.svg
new file mode 100644
index 0000000000..7d157d7b7f
--- /dev/null
+++ b/editor/icons/icon_visible.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m8 2c-2.5567 0-5.7907 1.9477-6.9551 5.7051a1.0001 1.0001 0 0 0 -0.0058594 0.57031c1.1244 3.9354 4.4609 5.7246 6.9609 5.7246s5.8365-1.7892 6.9609-5.7246a1.0001 1.0001 0 0 0 0 -0.55273c-1.1003-3.7876-4.4066-5.7227-6.9609-5.7227zm0 2a4 4 0 0 1 4 4 4 4 0 0 1 -4 4 4 4 0 0 1 -4 -4 4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-opacity=".99608" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_visual_script.png b/editor/icons/icon_visual_script.png
deleted file mode 100644
index 355d3c03c3..0000000000
--- a/editor/icons/icon_visual_script.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visual_script.svg b/editor/icons/icon_visual_script.svg
new file mode 100644
index 0000000000..f6475d590e
--- /dev/null
+++ b/editor/icons/icon_visual_script.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<ellipse cx="3" cy="1039.4" r="2" fill="#6e6e6e"/>
+<path transform="translate(0 1036.4)" d="m7 1l-0.56445 2.2578a5 5 0 0 0 -0.68945 0.2793l-1.9883-1.1934-1.4141 1.4141 1.1953 1.9941a5 5 0 0 0 -0.28516 0.68555l-2.2539 0.5625v2h5.2715a2 2 0 0 1 -0.27148 -1 2 2 0 0 1 2 -2 2 2 0 0 1 2 2 2 2 0 0 1 -0.26953 1h5.2695v-2l-2.2578-0.56445a5 5 0 0 0 -0.2793 -0.6875l1.1934-1.9902-1.4141-1.4141-1.9941 1.1953a5 5 0 0 0 -0.68555 -0.28516l-0.5625-2.2539h-2zm-4 9v6h2a3 3 0 0 0 3 -3v-3h-2v3a1 1 0 0 1 -1 1v-4h-2zm8 0a2 2 0 0 0 -1.7324 1 2 2 0 0 0 0 2 2 2 0 0 0 1.7324 1h-2v2h2a2 2 0 0 0 1.7324 -1 2 2 0 0 0 0 -2 2 2 0 0 0 -1.7324 -1h2v-2h-2z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_visual_shader_port.png b/editor/icons/icon_visual_shader_port.png
deleted file mode 100644
index 27daedbdd0..0000000000
--- a/editor/icons/icon_visual_shader_port.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_visual_shader_port.svg b/editor/icons/icon_visual_shader_port.svg
new file mode 100644
index 0000000000..0f5d00dbc4
--- /dev/null
+++ b/editor/icons/icon_visual_shader_port.svg
@@ -0,0 +1,5 @@
+<svg width="10" height="10" version="1.1" viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1042.4)">
+<path d="m2 1051.4v-8l6 4z" fill="#f3f3f3" fill-rule="evenodd" stroke="#e4e4e4" stroke-linejoin="round" stroke-width="2"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_volume.png b/editor/icons/icon_volume.png
deleted file mode 100644
index 2ce013cb03..0000000000
--- a/editor/icons/icon_volume.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vslider_bg.png b/editor/icons/icon_vslider_bg.png
deleted file mode 100644
index a7e0e78564..0000000000
--- a/editor/icons/icon_vslider_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vsplit_bg.png b/editor/icons/icon_vsplit_bg.png
deleted file mode 100644
index 0c29b1e35c..0000000000
--- a/editor/icons/icon_vsplit_bg.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vsplitter.png b/editor/icons/icon_vsplitter.png
deleted file mode 100644
index 56fb20bc3f..0000000000
--- a/editor/icons/icon_vsplitter.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vu_db.png b/editor/icons/icon_vu_db.png
deleted file mode 100644
index 405a929e2a..0000000000
--- a/editor/icons/icon_vu_db.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vu_empty.png b/editor/icons/icon_vu_empty.png
deleted file mode 100644
index b749e1f2ca..0000000000
--- a/editor/icons/icon_vu_empty.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vu_empty.svg b/editor/icons/icon_vu_empty.svg
new file mode 100644
index 0000000000..76bb913e38
--- /dev/null
+++ b/editor/icons/icon_vu_empty.svg
@@ -0,0 +1,13 @@
+<svg width="128" height="4" version="1.1" viewBox="0 0 128 4" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x2="128" y1="2" y2="2" gradientUnits="userSpaceOnUse">
+<stop stop-color="#84ffb1" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#ff8484" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1048.4)">
+<path transform="translate(0 1048.4)" d="m2 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2h75 3 2 3 15v-4h-15-3-2-3-75zm100 0v4h24a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2h-24z" fill="url(#a)"/>
+<path transform="translate(0 1048.4)" d="m2 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2h75 3 2 3 15v-4h-15-3-2-3-75zm100 0v4h24a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2h-24z" fill-opacity=".23529"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_vu_full.png b/editor/icons/icon_vu_full.png
deleted file mode 100644
index cb2b30d397..0000000000
--- a/editor/icons/icon_vu_full.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_vu_full.svg b/editor/icons/icon_vu_full.svg
new file mode 100644
index 0000000000..bacab2a83c
--- /dev/null
+++ b/editor/icons/icon_vu_full.svg
@@ -0,0 +1,12 @@
+<svg width="128" height="4" version="1.1" viewBox="0 0 128 4" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<defs>
+<linearGradient id="a" x2="128" y1="2" y2="2" gradientUnits="userSpaceOnUse">
+<stop stop-color="#84ffb1" offset="0"/>
+<stop stop-color="#e1dc7a" offset=".5"/>
+<stop stop-color="#ff8484" offset="1"/>
+</linearGradient>
+</defs>
+<g transform="translate(0 -1048.4)">
+<path transform="translate(0 1048.4)" d="m2 0a2 2 0 0 0 -2 2 2 2 0 0 0 2 2h75 3 2 3 15v-4h-15-3-2-3-75zm100 0v4h24a2 2 0 0 0 2 -2 2 2 0 0 0 -2 -2h-24z" fill="url(#a)"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_wait_no_preview.png b/editor/icons/icon_wait_no_preview.png
deleted file mode 100644
index 5d20cd99ec..0000000000
--- a/editor/icons/icon_wait_no_preview.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_1.png b/editor/icons/icon_wait_preview_1.png
deleted file mode 100644
index 0aab42e04a..0000000000
--- a/editor/icons/icon_wait_preview_1.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_2.png b/editor/icons/icon_wait_preview_2.png
deleted file mode 100644
index f476b9ce1f..0000000000
--- a/editor/icons/icon_wait_preview_2.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_3.png b/editor/icons/icon_wait_preview_3.png
deleted file mode 100644
index 2775d1ef43..0000000000
--- a/editor/icons/icon_wait_preview_3.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_4.png b/editor/icons/icon_wait_preview_4.png
deleted file mode 100644
index 2eaa86fec9..0000000000
--- a/editor/icons/icon_wait_preview_4.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_5.png b/editor/icons/icon_wait_preview_5.png
deleted file mode 100644
index 6590644bc1..0000000000
--- a/editor/icons/icon_wait_preview_5.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_6.png b/editor/icons/icon_wait_preview_6.png
deleted file mode 100644
index 307e412310..0000000000
--- a/editor/icons/icon_wait_preview_6.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_7.png b/editor/icons/icon_wait_preview_7.png
deleted file mode 100644
index b0edc94d93..0000000000
--- a/editor/icons/icon_wait_preview_7.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_wait_preview_8.png b/editor/icons/icon_wait_preview_8.png
deleted file mode 100644
index 67a2f48ec3..0000000000
--- a/editor/icons/icon_wait_preview_8.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_warning.png b/editor/icons/icon_warning.png
deleted file mode 100644
index 45b52542da..0000000000
--- a/editor/icons/icon_warning.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_warning.svg b/editor/icons/icon_warning.svg
new file mode 100644
index 0000000000..455e7b1877
--- /dev/null
+++ b/editor/icons/icon_warning.svg
@@ -0,0 +1,5 @@
+<svg width="8" height="8" version="1.1" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1044.4)">
+<rect y="1044.4" width="8" height="8" ry="4" fill="#ffd684"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_window_dialog.png b/editor/icons/icon_window_dialog.png
deleted file mode 100644
index 8591b15613..0000000000
--- a/editor/icons/icon_window_dialog.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_window_dialog.svg b/editor/icons/icon_window_dialog.svg
new file mode 100644
index 0000000000..2b450dee33
--- /dev/null
+++ b/editor/icons/icon_window_dialog.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.8954-2 2v1h14v-1c0-1.1046-0.89543-2-2-2h-10zm9 1h1v1h-1v-1zm-11 3v8c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.8954 2-2v-8h-14z" fill="#a5efac"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_world.png b/editor/icons/icon_world.png
deleted file mode 100644
index d54b979cad..0000000000
--- a/editor/icons/icon_world.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_world.svg b/editor/icons/icon_world.svg
new file mode 100644
index 0000000000..4ea501e194
--- /dev/null
+++ b/editor/icons/icon_world.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<circle cx="6" cy="1046.4" r="5"/>
+<circle cx="12" cy="1039.4" r="1"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_world_2d.png b/editor/icons/icon_world_2d.png
deleted file mode 100644
index ebe54262ff..0000000000
--- a/editor/icons/icon_world_2d.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_world_2d.svg b/editor/icons/icon_world_2d.svg
new file mode 100644
index 0000000000..e2b9e62703
--- /dev/null
+++ b/editor/icons/icon_world_2d.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path d="m2 1037.4a1.0001 1.0001 0 0 0 -1 1v10a1.0001 1.0001 0 0 0 1 1c2.3667 0 3.9746 0.4629 5.7246 0.9629s3.6421 1.0371 6.2754 1.0371a1.0001 1.0001 0 0 0 1 -1v-10a1.0001 1.0001 0 0 0 -1 -1c-2.3667 0-3.9746-0.4609-5.7246-0.9609-1.75-0.5-3.6421-1.0391-6.2754-1.0391zm1 2.0957c1.7984 0.1158 3.2574 0.448 4.7246 0.8672 1.4977 0.4279 3.194 0.8188 5.2754 0.9414v8.002c-1.7985-0.1158-3.2574-0.448-4.7246-0.8672-1.4977-0.4279-3.194-0.8208-5.2754-0.9434v-8z" color="#000000" color-rendering="auto" fill="#e0e0e0" fill-rule="evenodd" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="block-progression:tb;isolation:auto;mix-blend-mode:normal;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-transform:none;white-space:normal"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_world_environment.png b/editor/icons/icon_world_environment.png
deleted file mode 100644
index 230d660107..0000000000
--- a/editor/icons/icon_world_environment.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_world_environment.svg b/editor/icons/icon_world_environment.svg
new file mode 100644
index 0000000000..d7dbd4d73e
--- /dev/null
+++ b/editor/icons/icon_world_environment.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
+<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-1.7305 2.3125c-0.83125 1.5372-1.2685 3.1037-1.2695 4.6816-0.64057-0.11251-1.3005-0.27158-1.9766-0.47266a5 5 0 0 1 3.2461 -4.209zm3.4629 0.0039062a5 5 0 0 1 3.2383 4.1875c-0.65187 0.17448-1.3077 0.32867-1.9727 0.44922-0.00845-1.5627-0.44294-3.1141-1.2656-4.6367zm-1.7324 0.0078126c1.0126 1.593 1.5 3.1425 1.5 4.6758 0 0.054042-0.0066161 0.10803-0.0078125 0.16211-0.96392 0.096801-1.9566 0.1103-2.9844 0.027344-0.0016335-0.063192-0.0078125-0.12632-0.0078125-0.18945 0-1.5333 0.48744-3.0828 1.5-4.6758zm4.8789 5.7578a5 5 0 0 1 -3.1484 3.6055c0.57106-1.0564 0.95277-2.1268 1.1367-3.2051 0.68204-0.10905 1.3556-0.23789 2.0117-0.40039zm-9.7461 0.033203c0.68377 0.18153 1.3555 0.33345 2.0098 0.43164 0.18781 1.0551 0.56647 2.1026 1.125 3.1367a5 5 0 0 1 -3.1348 -3.5684zm6.168 0.55469c-0.22615 0.98866-0.65424 1.9884-1.3008 3.0059-0.63811-1.0042-1.0645-1.9908-1.293-2.9668 0.89027 0.054126 1.7517 0.029377 2.5938-0.039062z" fill="#fc9c9c" fill-opacity=".99608"/>
+<path transform="translate(0 1036.4)" d="m8 1v2.3242c1.0126 1.593 1.5 3.1425 1.5 4.6758 0 0.054042-0.0066161 0.10803-0.0078125 0.16211-0.4894 0.049148-0.98713 0.077552-1.4922 0.082031v1.4922c0.43915-0.0075968 0.87287-0.031628 1.3008-0.066406-0.22615 0.98866-0.65424 1.9884-1.3008 3.0059v2.3242a7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm1.7324 2.3164a5 5 0 0 1 3.2383 4.1875c-0.65187 0.17448-1.3077 0.32867-1.9727 0.44922-0.00845-1.5627-0.44294-3.1141-1.2656-4.6367zm3.1465 5.7656a5 5 0 0 1 -3.1484 3.6055c0.57106-1.0564 0.95277-2.1268 1.1367-3.2051 0.68204-0.10905 1.3556-0.23789 2.0117-0.40039z" fill="#a5b7f3"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_y_sort.png b/editor/icons/icon_y_sort.png
deleted file mode 100644
index 585956983c..0000000000
--- a/editor/icons/icon_y_sort.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_y_sort.svg b/editor/icons/icon_y_sort.svg
new file mode 100644
index 0000000000..1b48f4b8e3
--- /dev/null
+++ b/editor/icons/icon_y_sort.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m4 1l-3 3h2v8h-2l3 3 3-3h-2v-8h2l-3-3zm5 1v2h6v-2h-6zm0 5v2h4v-2h-4zm0 5v2h2v-2h-2z" fill="#a5b7f3" fill-opacity=".98824"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_zoom.png b/editor/icons/icon_zoom.png
deleted file mode 100644
index e95cf2bd78..0000000000
--- a/editor/icons/icon_zoom.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_zoom.svg b/editor/icons/icon_zoom.svg
new file mode 100644
index 0000000000..2b355574a0
--- /dev/null
+++ b/editor/icons/icon_zoom.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 1a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 2.752 -0.83398l4.3184 4.3184 1.4141-1.4141-4.3184-4.3184a5 5 0 0 0 0.41016 -0.75195h-0.57617v-2h-1a3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3 3 3 0 0 1 2 0.76758v-1.7676h0.99023a5 5 0 0 0 -2.9902 -1zm5 0v2h-2v2h2v2h2v-2h2v-2h-2v-2h-2z" fill="#e0e0e0" fill-opacity=".99608"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_zoom_less.png b/editor/icons/icon_zoom_less.png
deleted file mode 100644
index fd8ef9075e..0000000000
--- a/editor/icons/icon_zoom_less.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_zoom_less.svg b/editor/icons/icon_zoom_less.svg
new file mode 100644
index 0000000000..46db300785
--- /dev/null
+++ b/editor/icons/icon_zoom_less.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<rect x="1" y="1043.4" width="14" height="1.9999" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_zoom_more.png b/editor/icons/icon_zoom_more.png
deleted file mode 100644
index 8e818db1ee..0000000000
--- a/editor/icons/icon_zoom_more.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_zoom_more.svg b/editor/icons/icon_zoom_more.svg
new file mode 100644
index 0000000000..3cf2c7fbb1
--- /dev/null
+++ b/editor/icons/icon_zoom_more.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<g transform="translate(-201.58 205.03)">
+<g transform="matrix(48.459 0 0 53.968 -126.63 -55836)">
+<g transform="translate(.51853 -.019888)" fill="#e0e0e0" fill-opacity=".99608">
+<rect x="6.3979" y="1050.1" width=".042995" height=".26205" rx="0" ry="0"/>
+<rect x="6.2806" y="1050.2" width=".28011" height=".040944" rx="0" ry="0"/>
+</g>
+</g>
+</g>
+</g>
+</svg>
diff --git a/editor/icons/icon_zoom_reset.png b/editor/icons/icon_zoom_reset.png
deleted file mode 100644
index fa8a9d197e..0000000000
--- a/editor/icons/icon_zoom_reset.png
+++ /dev/null
Binary files differ
diff --git a/editor/icons/icon_zoom_reset.svg b/editor/icons/icon_zoom_reset.svg
new file mode 100644
index 0000000000..053092445a
--- /dev/null
+++ b/editor/icons/icon_zoom_reset.svg
@@ -0,0 +1,10 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)" fill="#e0e0e0">
+<rect x="3" y="1037.4" width="2" height="14"/>
+<rect x="12" y="1037.4" width="2" height="14"/>
+<rect x="7" y="1046.4" width="2" height="2"/>
+<rect x="7" y="1040.4" width="2" height="2"/>
+<path d="m1 1040.4 2-3h2v3z" fill-rule="evenodd"/>
+<path d="m10 1040.4 2-3h2v3z" fill-rule="evenodd"/>
+</g>
+</svg>
diff --git a/editor/icons/source/icon_2_d.svg b/editor/icons/source/icon_2_d.svg
deleted file mode 100644
index 54c93a45aa..0000000000
--- a/editor/icons/source/icon_2_d.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_2_d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="1.7654173"
- inkscape:cy="7.2653991"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1040.3622 2,-2 2,2"
- id="path4485"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1039.3622 v 9 h 9"
- id="path4487"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0"
- id="path4489"
- d="m 12,1046.3622 2,2 -2,2"
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_3_d.svg b/editor/icons/source/icon_3_d.svg
deleted file mode 100644
index 3147d14dc1..0000000000
--- a/editor/icons/source/icon_3_d.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_3_d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="7.1007207"
- inkscape:cy="6.155123"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2.0050708,1040.3622 2,-2 2,2"
- id="path4485"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4.0050708,1039.3622 v 9 h 9.0000002"
- id="path4487"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0"
- id="path4489"
- d="m 12.005071,1046.3622 2,2 -2,2"
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4.0050708,1048.3622 8.0000002,-8"
- id="path4496"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0"
- id="path4498"
- d="m 10.176644,1039.3622 h 2.828427 v 2.8284"
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_checked.svg b/editor/icons/source/icon_GUI_checked.svg
deleted file mode 100644
index 6d2c03f4c5..0000000000
--- a/editor/icons/source/icon_GUI_checked.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- sodipodi:docname="checked.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.555527"
- inkscape:cy="7.1886752"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.78431374;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 2 C 2.8954305 2 2 2.8954305 2 4 L 2 12 C 2 13.104569 2.8954305 14 4 14 L 12 14 C 13.104569 14 14 13.104569 14 12 L 14 4 C 14 2.8954305 13.104569 2 12 2 L 4 2 z M 11.292969 4.2929688 L 12.707031 5.7070312 L 6 12.414062 L 3.2929688 9.7070312 L 4.7070312 8.2929688 L 6 9.5859375 L 11.292969 4.2929688 z "
- transform="translate(0,1036.3623)"
- id="circle4178" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_dropdown.svg b/editor/icons/source/icon_GUI_dropdown.svg
deleted file mode 100644
index 897f63c268..0000000000
--- a/editor/icons/source/icon_GUI_dropdown.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_GUI_dropdown.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.5843041"
- inkscape:cy="6.8000184"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <circle
- style="fill:#ffffff;fill-opacity:0.58823529;stroke-width:2;stroke-linejoin:round;stroke-opacity:0.39215686"
- id="path4268"
- cx="7.5"
- cy="1040.8622"
- r="1.5" />
- <circle
- r="1.5"
- cy="1045.8622"
- cx="7.5"
- id="circle4271"
- style="fill:#ffffff;fill-opacity:0.58823529;stroke-width:2;stroke-linejoin:round;stroke-opacity:0.39215686" />
- <circle
- style="fill:#ffffff;fill-opacity:0.58823529;stroke-width:2;stroke-linejoin:round;stroke-opacity:0.39215686"
- id="circle4273"
- cx="7.5"
- cy="1050.8622"
- r="1.5" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_hslider_bg.svg b/editor/icons/source/icon_GUI_hslider_bg.svg
deleted file mode 100644
index a920bf34ab..0000000000
--- a/editor/icons/source/icon_GUI_hslider_bg.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_hslider_bg.svg"
- inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/2x/icon_hslider_bg.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.4823689"
- inkscape:cy="7.6591052"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <rect
- style="fill:#000000;fill-opacity:0.39215687;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="rect4266"
- width="14"
- height="6"
- x="1"
- y="1041.3623"
- ry="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_hsplitter.svg b/editor/icons/source/icon_GUI_hsplitter.svg
deleted file mode 100644
index 01c893fc56..0000000000
--- a/editor/icons/source/icon_GUI_hsplitter.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="64"
- viewBox="0 0 8 64"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="hsplitter.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="-2.0338296"
- inkscape:cy="39.22669"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-988.3622)">
- <path
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.39215687;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 4,990.3622 v 60"
- id="path814"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_mini_tab_menu.svg b/editor/icons/source/icon_GUI_mini_tab_menu.svg
deleted file mode 100644
index 65d71e86a0..0000000000
--- a/editor/icons/source/icon_GUI_mini_tab_menu.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="6"
- height="16"
- viewBox="0 0 6 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_GUI_mini_tab_menu.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="5.71687"
- inkscape:cy="8.5207578"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118"
- id="path819"
- cx="3"
- cy="1038.3622"
- r="2" />
- <circle
- r="2"
- cy="1044.3622"
- cx="3"
- id="circle821"
- style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" />
- <circle
- style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118"
- id="circle823"
- cx="3"
- cy="1050.3622"
- r="2" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_option_arrow.svg b/editor/icons/source/icon_GUI_option_arrow.svg
deleted file mode 100644
index 5cd943e9e3..0000000000
--- a/editor/icons/source/icon_GUI_option_arrow.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="option_arrow.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="3.1667338"
- inkscape:cy="5.9875884"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- inkscape:connector-curvature="0"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 9.9999996,1043.3583 c -0.2637796,0.01 -0.5144012,0.1165 -0.697265,0.3067 l -3.292969,3.2929 -3.2929688,-3.2929 C 2.5285367,1043.4714 2.2700113,1043.3622 2,1043.3622 c -0.8974208,2e-4 -1.34038281,1.0909 -0.6972656,1.7168 l 4,4 c 0.3905299,0.3904 1.0235325,0.3904 1.4140624,0 l 4.0000002,-4 c 0.657344,-0.6321 0.194906,-1.7422 -0.7167974,-1.7207 z"
- id="path4484"
- sodipodi:nodetypes="cccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_play_button_group.svg b/editor/icons/source/icon_GUI_play_button_group.svg
deleted file mode 100644
index 84bdb00505..0000000000
--- a/editor/icons/source/icon_GUI_play_button_group.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="32"
- height="32"
- viewBox="0 0 32 31.999998"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- sodipodi:docname="button_group.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/button_disabled.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="15.144473"
- inkscape:cy="14.499068"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1020.3623)">
- <circle
- style="fill:#000000;fill-opacity:0.19607843;stroke:none;stroke-width:2.54545379;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4503"
- cx="16"
- cy="1036.3623"
- r="13.999995" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_progress_bar.svg b/editor/icons/source/icon_GUI_progress_bar.svg
deleted file mode 100644
index 1edd33dd85..0000000000
--- a/editor/icons/source/icon_GUI_progress_bar.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_progress_bar.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.875071"
- inkscape:cy="9.2973804"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.39215687;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 2,1036.3623 c -1.09070018,-2e-4 -2,0.9073 -2,1.998 v 12.002 c 0,1.0907 0.9092998,2 2,2 h 12 c 1.0907,0 2,-0.9093 2,-2 v -12 c 0,-1.0907 -0.9093,-1.9978 -2,-1.998 z m 0,2 12,0 v 11.998 H 2 Z"
- id="path4310"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_progress_fill.svg b/editor/icons/source/icon_GUI_progress_fill.svg
deleted file mode 100644
index cf55c55ab1..0000000000
--- a/editor/icons/source/icon_GUI_progress_fill.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_progress_fill.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="10.136535"
- inkscape:cy="8.7983986"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <rect
- style="fill:#e0e0e0;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
- id="rect4338"
- width="8"
- height="7.9999952"
- x="4"
- y="1040.3623"
- ry="0.99999499" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_radio_checked.svg b/editor/icons/source/icon_GUI_radio_checked.svg
deleted file mode 100644
index c0dc46448b..0000000000
--- a/editor/icons/source/icon_GUI_radio_checked.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_radio_checked.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="10.337496"
- inkscape:cy="8.5995258"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <circle
- style="opacity:1;fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431374"
- id="path4285"
- cx="8"
- cy="1044.3623"
- r="5" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.78431373;stroke:none;stroke-width:2.99999523;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373"
- id="path4287"
- cx="8"
- cy="1044.3623"
- r="2.9999952" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_radio_unchecked.svg b/editor/icons/source/icon_GUI_radio_unchecked.svg
deleted file mode 100644
index d21ba299b6..0000000000
--- a/editor/icons/source/icon_GUI_radio_unchecked.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_radio_unchecked.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="10.337496"
- inkscape:cy="8.5995258"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <circle
- style="opacity:1;fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431374"
- id="path4285"
- cx="8"
- cy="1044.3623"
- r="5" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_scroll_bg.svg b/editor/icons/source/icon_GUI_scroll_bg.svg
deleted file mode 100644
index 29604b9e14..0000000000
--- a/editor/icons/source/icon_GUI_scroll_bg.svg
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 11.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- sodipodi:docname="scroll_bg.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="4.4464273"
- inkscape:cy="6.9717582"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3623)" />
-</svg>
diff --git a/editor/icons/source/icon_GUI_scroll_grabber.svg b/editor/icons/source/icon_GUI_scroll_grabber.svg
deleted file mode 100644
index b9d2bbbec0..0000000000
--- a/editor/icons/source/icon_GUI_scroll_grabber.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 11.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- sodipodi:docname="scroll_grabber.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="1.3086411"
- inkscape:cy="6.9275641"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3623)">
- <circle
- style="opacity:1;fill:#ffffff;fill-opacity:0.27450982;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4239"
- cx="6"
- cy="1046.3623"
- r="2" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_scroll_grabber_hl.svg b/editor/icons/source/icon_GUI_scroll_grabber_hl.svg
deleted file mode 100644
index ce9a66c5bc..0000000000
--- a/editor/icons/source/icon_GUI_scroll_grabber_hl.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 11.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 unknown"
- sodipodi:docname="icon_scroll_grabber_hl.svg"
- inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/icon_scroll_grabber_hl.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="3.0874565"
- inkscape:cy="5.7564185"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1097"
- inkscape:window-height="1076"
- inkscape:window-x="161"
- inkscape:window-y="200"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3623)">
- <circle
- style="opacity:1;fill:#f9f9f9;fill-opacity:0.73000002;stroke:none;stroke-width:2.24999642;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4239"
- cx="6"
- cy="1046.3623"
- r="2.9999952"
- inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/icon_scroll_grabber_hl.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_slider_grabber.svg b/editor/icons/source/icon_GUI_slider_grabber.svg
deleted file mode 100644
index fb6c9d1c5c..0000000000
--- a/editor/icons/source/icon_GUI_slider_grabber.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_slider_grabber.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.462853"
- inkscape:cy="8.2694974"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <circle
- style="fill:#ffffff;fill-opacity:0.78431374;stroke-width:2.99999523;stroke-linejoin:round;stroke-opacity:0.39215686"
- id="path4266"
- cx="8"
- cy="1044.3623"
- r="2.9999952" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_slider_grabber_hl.svg b/editor/icons/source/icon_GUI_slider_grabber_hl.svg
deleted file mode 100644
index c7e9018ac3..0000000000
--- a/editor/icons/source/icon_GUI_slider_grabber_hl.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_slider_grabber_hl.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.784247"
- inkscape:cy="7.9005685"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <path
- style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 8 1 A 6.9999943 6.9999943 0 0 0 1 8 A 6.9999943 6.9999943 0 0 0 8 15 A 6.9999943 6.9999943 0 0 0 15 8 A 6.9999943 6.9999943 0 0 0 8 1 z M 8 3 A 4.9999943 4.9999943 0 0 1 8.5 3.0253906 A 4.9999943 4.9999943 0 0 1 8.9941406 3.0996094 A 4.9999943 4.9999943 0 0 1 9.4785156 3.2226562 A 4.9999943 4.9999943 0 0 1 9.9472656 3.3945312 A 4.9999943 4.9999943 0 0 1 10.396484 3.6113281 A 4.9999943 4.9999943 0 0 1 10.822266 3.8730469 A 4.9999943 4.9999943 0 0 1 11.220703 4.1757812 A 4.9999943 4.9999943 0 0 1 11.585938 4.515625 A 4.9999943 4.9999943 0 0 1 11.916016 4.8925781 A 4.9999943 4.9999943 0 0 1 12.207031 5.2988281 A 4.9999943 4.9999943 0 0 1 12.455078 5.7324219 A 4.9999943 4.9999943 0 0 1 12.660156 6.1875 A 4.9999943 4.9999943 0 0 1 12.818359 6.6621094 A 4.9999943 4.9999943 0 0 1 12.927734 7.1503906 A 4.9999943 4.9999943 0 0 1 12.988281 7.6464844 A 4.9999943 4.9999943 0 0 1 13 8 A 4.9999943 4.9999943 0 0 1 12.974609 8.5 A 4.9999943 4.9999943 0 0 1 12.900391 8.9941406 A 4.9999943 4.9999943 0 0 1 12.777344 9.4785156 A 4.9999943 4.9999943 0 0 1 12.605469 9.9472656 A 4.9999943 4.9999943 0 0 1 12.388672 10.396484 A 4.9999943 4.9999943 0 0 1 12.126953 10.822266 A 4.9999943 4.9999943 0 0 1 11.824219 11.220703 A 4.9999943 4.9999943 0 0 1 11.484375 11.585938 A 4.9999943 4.9999943 0 0 1 11.107422 11.916016 A 4.9999943 4.9999943 0 0 1 10.701172 12.207031 A 4.9999943 4.9999943 0 0 1 10.267578 12.455078 A 4.9999943 4.9999943 0 0 1 9.8125 12.660156 A 4.9999943 4.9999943 0 0 1 9.3378906 12.818359 A 4.9999943 4.9999943 0 0 1 8.8496094 12.927734 A 4.9999943 4.9999943 0 0 1 8.3535156 12.988281 A 4.9999943 4.9999943 0 0 1 8 13 A 4.9999943 4.9999943 0 0 1 7.5 12.974609 A 4.9999943 4.9999943 0 0 1 7.0058594 12.900391 A 4.9999943 4.9999943 0 0 1 6.5214844 12.777344 A 4.9999943 4.9999943 0 0 1 6.0527344 12.605469 A 4.9999943 4.9999943 0 0 1 5.6035156 12.388672 A 4.9999943 4.9999943 0 0 1 5.1777344 12.126953 A 4.9999943 4.9999943 0 0 1 4.7792969 11.824219 A 4.9999943 4.9999943 0 0 1 4.4140625 11.484375 A 4.9999943 4.9999943 0 0 1 4.0839844 11.107422 A 4.9999943 4.9999943 0 0 1 3.7929688 10.701172 A 4.9999943 4.9999943 0 0 1 3.5449219 10.267578 A 4.9999943 4.9999943 0 0 1 3.3398438 9.8125 A 4.9999943 4.9999943 0 0 1 3.1816406 9.3378906 A 4.9999943 4.9999943 0 0 1 3.0722656 8.8496094 A 4.9999943 4.9999943 0 0 1 3.0117188 8.3535156 A 4.9999943 4.9999943 0 0 1 3 8 A 4.9999943 4.9999943 0 0 1 3.0253906 7.5 A 4.9999943 4.9999943 0 0 1 3.0996094 7.0058594 A 4.9999943 4.9999943 0 0 1 3.2226562 6.5214844 A 4.9999943 4.9999943 0 0 1 3.3945312 6.0527344 A 4.9999943 4.9999943 0 0 1 3.6113281 5.6035156 A 4.9999943 4.9999943 0 0 1 3.8730469 5.1777344 A 4.9999943 4.9999943 0 0 1 4.1757812 4.7792969 A 4.9999943 4.9999943 0 0 1 4.515625 4.4140625 A 4.9999943 4.9999943 0 0 1 4.8925781 4.0839844 A 4.9999943 4.9999943 0 0 1 5.2988281 3.7929688 A 4.9999943 4.9999943 0 0 1 5.7324219 3.5449219 A 4.9999943 4.9999943 0 0 1 6.1875 3.3398438 A 4.9999943 4.9999943 0 0 1 6.6621094 3.1816406 A 4.9999943 4.9999943 0 0 1 7.1503906 3.0722656 A 4.9999943 4.9999943 0 0 1 7.6464844 3.0117188 A 4.9999943 4.9999943 0 0 1 8 3 z "
- id="circle4262"
- transform="translate(0,1036.3623)" />
- <circle
- style="fill:#ffffff;fill-opacity:0.58823529;stroke-width:2.99999523;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="path4271"
- cx="8"
- cy="1044.3623"
- r="2.9999952" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_spinbox_updown.svg b/editor/icons/source/icon_GUI_spinbox_updown.svg
deleted file mode 100644
index e29d7fe0d2..0000000000
--- a/editor/icons/source/icon_GUI_spinbox_updown.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="spinbox_updown.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="-1.901723"
- inkscape:cy="9.1326297"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-5"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.984375 1.0019531 A 1.0001 1.0001 0 0 0 7.2929688 1.2929688 L 3.2929688 5.2929688 A 1.0001 1.0001 0 1 0 4.7070312 6.7070312 L 8 3.4140625 L 11.292969 6.7070312 A 1.0001 1.0001 0 1 0 12.707031 5.2929688 L 8.7070312 1.2929688 A 1.0001 1.0001 0 0 0 7.984375 1.0019531 z M 11.990234 8.9863281 A 1.0001 1.0001 0 0 0 11.292969 9.2929688 L 8 12.585938 L 4.7070312 9.2929688 A 1.0001 1.0001 0 0 0 3.9902344 8.9902344 A 1.0001 1.0001 0 0 0 3.2929688 10.707031 L 7.2929688 14.707031 A 1.0001 1.0001 0 0 0 8.7070312 14.707031 L 12.707031 10.707031 A 1.0001 1.0001 0 0 0 11.990234 8.9863281 z "
- transform="translate(0,1036.3622)"
- id="path4484" />
- <g
- id="layer1-5"
- inkscape:label="Layer 1"
- transform="translate(14.210182,-5.3664)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_tab_menu.svg b/editor/icons/source/icon_GUI_tab_menu.svg
deleted file mode 100644
index 39e0d1f261..0000000000
--- a/editor/icons/source/icon_GUI_tab_menu.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="tab_menu.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="4.0814179"
- inkscape:cy="8.4695645"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118"
- id="path819"
- cx="8"
- cy="1038.3622"
- r="2" />
- <circle
- r="2"
- cy="1044.3622"
- cx="8"
- id="circle821"
- style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118" />
- <circle
- style="fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.35294118"
- id="circle823"
- cx="8"
- cy="1050.3622"
- r="2" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_toggle_off.svg b/editor/icons/source/icon_GUI_toggle_off.svg
deleted file mode 100644
index f0cf10a653..0000000000
--- a/editor/icons/source/icon_GUI_toggle_off.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64"
- height="32"
- viewBox="0 0 64 31.999998"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_toggle_off.svg"
- inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/2x/icon_hslider_bg.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="35.349571"
- inkscape:cy="18.723365"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1020.3623)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;opacity:1"
- d="M 24 4.0019531 C 17.3693 4.0019531 12 9.3673469 12 15.998047 L 12 16.001953 C 12 22.632653 17.3693 28.001953 24 28.001953 L 40 28.001953 C 46.6307 28.001953 52 22.632653 52 16.001953 L 52 15.998047 C 52 9.3673469 46.6307 4.0019531 40 4.0019531 L 24 4.0019531 z M 24 6.0019531 L 40 6.0019531 C 45.557295 6.0019531 50 10.440747 50 15.998047 L 50 16.001953 C 50 21.559253 45.557295 26.001953 40 26.001953 L 24 26.001953 C 18.442705 26.001953 14 21.559253 14 16.001953 L 14 15.998047 C 14 10.440747 18.442705 6.0019531 24 6.0019531 z M 31 10.998047 A 1.0001 1.0001 0 0 0 30 11.998047 L 30 19.998047 A 1 1 0 0 0 31 20.998047 A 1 1 0 0 0 32 19.998047 L 32 16.998047 L 34 16.998047 A 1 1 0 0 0 35 15.998047 A 1 1 0 0 0 34 14.998047 L 32 14.998047 L 32 12.998047 L 36 12.998047 A 1 1 0 0 0 37 11.998047 A 1 1 0 0 0 36 10.998047 L 31 10.998047 z M 40 10.998047 A 1.0001 1.0001 0 0 0 39 11.998047 L 39 15.998047 L 39 19.998047 A 1 1 0 0 0 40 20.998047 A 1 1 0 0 0 41 19.998047 L 41 16.998047 L 43 16.998047 A 1 1 0 0 0 44 15.998047 A 1 1 0 0 0 43 14.998047 L 41 14.998047 L 41 12.998047 L 45 12.998047 A 1 1 0 0 0 46 11.998047 A 1 1 0 0 0 45 10.998047 L 40 10.998047 z M 23 11.001953 C 20.250421 11.001953 18 13.252353 18 16.001953 C 18 18.751553 20.250421 21.001953 23 21.001953 C 25.749579 21.001953 28 18.751553 28 16.001953 C 28 13.252353 25.749579 11.001953 23 11.001953 z M 23 13.001953 C 24.668699 13.001953 26 14.333253 26 16.001953 C 26 17.670653 24.668699 19.001953 23 19.001953 C 21.331301 19.001953 20 17.670653 20 16.001953 C 20 14.333253 21.331301 13.001953 23 13.001953 z "
- transform="translate(0,1020.3623)"
- id="path4442" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_toggle_on.svg b/editor/icons/source/icon_GUI_toggle_on.svg
deleted file mode 100644
index 79715dd767..0000000000
--- a/editor/icons/source/icon_GUI_toggle_on.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64"
- height="32"
- viewBox="0 0 64 31.999998"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_toggle_on.svg"
- inkscape:export-filename="/mnt/2TB/Development/godot_dev/editor/icons/2x/icon_hslider_bg.png"
- inkscape:export-xdpi="96"
- inkscape:export-ydpi="96">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="32.275235"
- inkscape:cy="18.558884"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1020.3623)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.78431374;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 24 4.0019531 C 17.3693 4.0019531 12 9.3673469 12 15.998047 C 12 22.628747 17.3693 27.998047 24 27.998047 L 40 27.998047 C 46.6307 27.998047 52 22.628747 52 15.998047 C 52 9.3673469 46.6307 4.0019531 40 4.0019531 L 24 4.0019531 z M 41 10.998047 A 1 1 0 0 1 42 11.998047 L 42 19.998047 A 1.0001 1.0001 0 0 1 40.248047 20.660156 L 35 14.660156 L 35 19.998047 A 1 1 0 0 1 34 20.998047 A 1 1 0 0 1 33 19.998047 L 33 11.998047 A 1.0001 1.0001 0 0 1 34.751953 11.339844 L 40 17.339844 L 40 11.998047 A 1 1 0 0 1 41 10.998047 z M 26 11.001953 C 28.749579 11.001953 31 13.252353 31 16.001953 C 31 18.751553 28.749579 21.001953 26 21.001953 C 23.250421 21.001953 21 18.751553 21 16.001953 C 21 13.252353 23.250421 11.001953 26 11.001953 z M 26 13.001953 C 24.331301 13.001953 23 14.333253 23 16.001953 C 23 17.670653 24.331301 19.001953 26 19.001953 C 27.668699 19.001953 29 17.670653 29 16.001953 C 29 14.333253 27.668699 13.001953 26 13.001953 z "
- transform="translate(0,1020.3623)"
- id="path4272" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_tree_arrow_down.svg b/editor/icons/source/icon_GUI_tree_arrow_down.svg
deleted file mode 100644
index 1dd209720f..0000000000
--- a/editor/icons/source/icon_GUI_tree_arrow_down.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="arrow_down.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="1.7981958"
- inkscape:cy="7.5815407"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.39215687"
- d="m 3,1045.3622 3,3 3,-3"
- id="path814"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_tree_arrow_right.svg b/editor/icons/source/icon_GUI_tree_arrow_right.svg
deleted file mode 100644
index 43134ba1b1..0000000000
--- a/editor/icons/source/icon_GUI_tree_arrow_right.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="arrow_right.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="4.0845752"
- inkscape:cy="5.8802612"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.39215687"
- d="m 4,1049.3622 3.0000202,-3 -3.0000202,-3"
- id="path814"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_unchecked.svg b/editor/icons/source/icon_GUI_unchecked.svg
deleted file mode 100644
index 053cbe6de5..0000000000
--- a/editor/icons/source/icon_GUI_unchecked.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- sodipodi:docname="unchecked.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/unchecked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.8224661"
- inkscape:cy="8.2065809"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.78431374;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 2 A 2 2 0 0 0 2 4 L 2 12 A 2 2 0 0 0 4 14 L 12 14 A 2 2 0 0 0 14 12 L 14 4 A 2 2 0 0 0 12 2 L 4 2 z M 4.8007812 4 L 11.199219 4 A 0.8000012 0.8000012 0 0 1 12 4.8007812 L 12 11.199219 A 0.8000012 0.8000012 0 0 1 11.199219 12 L 4.8007812 12 A 0.8000012 0.8000012 0 0 1 4 11.199219 L 4 4.8007812 A 0.8000012 0.8000012 0 0 1 4.8007812 4 z "
- transform="translate(0,1036.3623)"
- id="circle4178" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_vslider_bg.svg b/editor/icons/source/icon_GUI_vslider_bg.svg
deleted file mode 100644
index cfa4feeca6..0000000000
--- a/editor/icons/source/icon_GUI_vslider_bg.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 15.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- sodipodi:docname="icon_GUI_vslider_bg.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/checked.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.3954629"
- inkscape:cy="7.6047847"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3623)">
- <rect
- style="fill:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.3254902;fill-opacity:0.39215687"
- id="rect4267"
- width="4"
- height="14"
- x="6"
- y="1037.3623"
- ry="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_vsplit_bg.svg b/editor/icons/source/icon_GUI_vsplit_bg.svg
deleted file mode 100644
index e11940cf53..0000000000
--- a/editor/icons/source/icon_GUI_vsplit_bg.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 7.9999995"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- sodipodi:docname="vsplit_bg.svg"
- inkscape:export-filename="/home/djrm/Projects/godot/scene/resources/default_theme/panel_bg.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="64.000003"
- inkscape:cx="-1.1524794"
- inkscape:cy="3.8847002"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid4136"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3623)">
- <rect
- style="opacity:1;fill:#000000;fill-opacity:0.09803922;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4213"
- width="8"
- height="7.999999"
- x="0"
- y="1044.3623" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_GUI_vsplitter.svg b/editor/icons/source/icon_GUI_vsplitter.svg
deleted file mode 100644
index 80f7c2ce12..0000000000
--- a/editor/icons/source/icon_GUI_vsplitter.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64"
- height="8"
- viewBox="0 0 64 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="vsplitter.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="59.744611"
- inkscape:cy="0.46378871"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.39215687;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 2,1048.3622 H 62"
- id="path814"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_accept_dialog.svg b/editor/icons/source/icon_accept_dialog.svg
deleted file mode 100644
index 9f82b30c94..0000000000
--- a/editor/icons/source/icon_accept_dialog.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_confirmation_dialog.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_accept_dialog.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.3712909"
- inkscape:cy="7.2310094"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.89543,1 1,1.8954 1,3 L 1,4 15,4 15,3 C 15,1.8954 14.104569,1 13,1 Z m 9,1 1,0 0,1 -1,0 z M 1,5 1,13 c 0,1.1046 0.89543,2 2,2 l 10,0 c 1.104569,0 2,-0.8954 2,-2 L 15,5 Z M 10.474609,6.6367188 11.888672,8.0507812 6.9394531,13 4.1113281,10.171875 5.5253906,8.7578125 6.9394531,10.171875 Z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssccsssccccccssssccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_add_track.svg b/editor/icons/source/icon_add_track.svg
deleted file mode 100644
index d19448efb0..0000000000
--- a/editor/icons/source/icon_add_track.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_add_track.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="6.9909025"
- inkscape:cy="7.4569962"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 7 1 L 7 7 L 1 7 L 1 9 L 7 9 L 7 15 L 9 15 L 9 9 L 15 9 L 15 7 L 9 7 L 9 1 L 7 1 z "
- transform="translate(0,1036.3622)"
- id="rect4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_anchor.svg b/editor/icons/source/icon_anchor.svg
deleted file mode 100644
index 6b10be040b..0000000000
--- a/editor/icons/source/icon_anchor.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_anchor.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_anchor.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="12.991456"
- inkscape:cy="8.2347656"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 3 3.0000043 0 0 0 5 4 A 3 3.0000043 0 0 0 7 6.8261719 L 7 7 L 5 7 L 5 9 L 7 9 L 7 12.898438 A 5.0000172 5.0000172 0 0 1 3.171875 9.2949219 L 1.2382812 9.8125 A 7 7 0 0 0 8 15 A 7 7 0 0 0 14.761719 9.8125 L 12.824219 9.2929688 A 5.0000172 5.0000172 0 0 1 9 12.896484 L 9 9 L 11 9 L 11 7 L 9 7 L 9 6.8242188 A 3 3.0000043 0 0 0 11 4 A 3 3.0000043 0 0 0 8 1 z M 8 3 A 1.000016 1.0000174 0 0 1 9 4 A 1.000016 1.0000174 0 0 1 8 5 A 1.000016 1.0000174 0 0 1 7 4 A 1.000016 1.0000174 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_animated_sprite.svg b/editor/icons/source/icon_animated_sprite.svg
deleted file mode 100644
index 36ccd8bca2..0000000000
--- a/editor/icons/source/icon_animated_sprite.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_animated_sprite.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_animated_sprite (copy).svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.8151157"
- inkscape:cy="10.058181"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#c4d0f5;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.5 0 A 5.5 5.4999914 0 0 0 5.1699219 4.1699219 A 5.5 5.4999914 0 0 1 6.5 4 A 5.5 5.4999914 0 0 1 12 9.5 A 5.5 5.4999914 0 0 1 11.830078 10.830078 A 5.5 5.4999914 0 0 0 16 5.5 A 5.5 5.4999914 0 0 0 10.5 0 z "
- transform="translate(0,1036.3622)"
- id="ellipse4157" />
- <path
- style="opacity:1;fill:#a5b7f1;fill-opacity:0.58823532;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8.5 2 A 5.5 5.4999914 0 0 0 3.7441406 4.7480469 A 5.5 5.4999914 0 0 1 6.5 4 A 5.5 5.4999914 0 0 1 12 9.5 A 5.5 5.4999914 0 0 1 11.255859 12.251953 A 5.5 5.4999914 0 0 0 14 7.5 A 5.5 5.4999914 0 0 0 8.5 2 z "
- transform="translate(0,1036.3622)"
- id="ellipse4155" />
- <path
- style="opacity:1;fill:#a5b7f0;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6.5 4 A 5.5 5.4999914 0 0 0 1 9.5 A 5.5 5.4999914 0 0 0 6.5 15 A 5.5 5.4999914 0 0 0 12 9.5 A 5.5 5.4999914 0 0 0 6.5 4 z M 4 8 A 1.0000174 1.0000174 0 0 1 5 9 A 1.0000174 1.0000174 0 0 1 4 10 A 1.0000174 1.0000174 0 0 1 3 9 A 1.0000174 1.0000174 0 0 1 4 8 z M 9 8 A 1.0000174 1.0000174 0 0 1 10 9 A 1.0000174 1.0000174 0 0 1 9 10 A 1.0000174 1.0000174 0 0 1 8 9 A 1.0000174 1.0000174 0 0 1 9 8 z M 4 11 L 9 11 A 2.5 1.9999825 0 0 1 7.75 12.732422 A 2.5 1.9999825 0 0 1 5.25 12.732422 A 2.5 1.9999825 0 0 1 4 11 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_animated_sprite_3d.svg b/editor/icons/source/icon_animated_sprite_3d.svg
deleted file mode 100644
index f088c9e32d..0000000000
--- a/editor/icons/source/icon_animated_sprite_3d.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_animated_sprite.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_animated_sprite_3d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="1.5963657"
- inkscape:cy="10.401931"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.5 0 A 5.5 5.4999914 0 0 0 5.1699219 4.1699219 A 5.5 5.4999914 0 0 1 6.5 4 A 5.5 5.4999914 0 0 1 12 9.5 A 5.5 5.4999914 0 0 1 11.830078 10.830078 A 5.5 5.4999914 0 0 0 16 5.5 A 5.5 5.4999914 0 0 0 10.5 0 z "
- transform="translate(0,1036.3622)"
- id="ellipse4157" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.58823532;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8.5 2 A 5.5 5.4999914 0 0 0 3.7441406 4.7480469 A 5.5 5.4999914 0 0 1 6.5 4 A 5.5 5.4999914 0 0 1 12 9.5 A 5.5 5.4999914 0 0 1 11.255859 12.251953 A 5.5 5.4999914 0 0 0 14 7.5 A 5.5 5.4999914 0 0 0 8.5 2 z "
- transform="translate(0,1036.3622)"
- id="ellipse4155" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6.5 4 A 5.5 5.4999914 0 0 0 1 9.5 A 5.5 5.4999914 0 0 0 6.5 15 A 5.5 5.4999914 0 0 0 12 9.5 A 5.5 5.4999914 0 0 0 6.5 4 z M 4 8 A 1.0000174 1.0000174 0 0 1 5 9 A 1.0000174 1.0000174 0 0 1 4 10 A 1.0000174 1.0000174 0 0 1 3 9 A 1.0000174 1.0000174 0 0 1 4 8 z M 9 8 A 1.0000174 1.0000174 0 0 1 10 9 A 1.0000174 1.0000174 0 0 1 9 10 A 1.0000174 1.0000174 0 0 1 8 9 A 1.0000174 1.0000174 0 0 1 9 8 z M 4 11 L 9 11 A 2.5 1.9999825 0 0 1 7.75 12.732422 A 2.5 1.9999825 0 0 1 5.25 12.732422 A 2.5 1.9999825 0 0 1 4 11 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_animation.svg b/editor/icons/source/icon_animation.svg
deleted file mode 100644
index 371979345f..0000000000
--- a/editor/icons/source/icon_animation.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_animation.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_animation.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="9.2543315"
- inkscape:cy="5.9550306"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 2 A 6 6 0 0 0 2 8 A 6 6 0 0 0 8 14 A 6 6 0 0 0 12 12.464844 L 12 14 L 12.001953 14 A 2 2 0 0 0 12.267578 15 A 2 2 0 0 0 14 16 L 15 16 L 15 15 L 15 14 L 14.5 14 A 0.5 0.4999913 0 0 1 14 13.5 L 14 13 L 14 8 A 6 6 0 0 0 8 2 z M 8 3 A 1 1 0 0 1 9 4 A 1 1 0 0 1 8 5 A 1 1 0 0 1 7 4 A 1 1 0 0 1 8 3 z M 11.441406 5 A 1 1 0 0 1 12.330078 5.5 A 1 1 0 0 1 11.964844 6.8652344 A 1 1 0 0 1 10.597656 6.5 A 1 1 0 0 1 10.964844 5.1347656 A 1 1 0 0 1 11.441406 5 z M 4.4882812 5.0019531 A 1 1 0 0 1 5.0351562 5.1347656 A 1 1 0 0 1 5.4023438 6.5 A 1 1 0 0 1 4.0351562 6.8652344 A 1 1 0 0 1 3.6699219 5.5 A 1 1 0 0 1 4.4882812 5.0019531 z M 4.5117188 9 A 1 1 0 0 1 5.4023438 9.5 A 1 1 0 0 1 5.0351562 10.865234 A 1 1 0 0 1 3.6699219 10.5 A 1 1 0 0 1 4.0351562 9.1347656 A 1 1 0 0 1 4.5117188 9 z M 11.416016 9.0019531 A 1 1 0 0 1 11.964844 9.1347656 A 1 1 0 0 1 12.330078 10.5 A 1 1 0 0 1 10.964844 10.865234 A 1 1 0 0 1 10.597656 9.5 A 1 1 0 0 1 11.416016 9.0019531 z M 8 11 A 1 1 0 0 1 9 12 A 1 1 0 0 1 8 13 A 1 1 0 0 1 7 12 A 1 1 0 0 1 8 11 z "
- id="path4140"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_animation_player.svg b/editor/icons/source/icon_animation_player.svg
deleted file mode 100644
index e6500ea249..0000000000
--- a/editor/icons/source/icon_animation_player.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_animation_player.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_animation_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999998"
- inkscape:cx="3.1985991"
- inkscape:cy="7.9689184"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fbe87a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1,1037.3622 0,14 1.1666666,0 0,-2 1.8333334,0 0,2 8,0 0,-2 2,0 0,2 1,0 0,-14 -1,0 0,2 -2,0 0,-2 -8,0 0,2 -1.8333334,0 0,-2 z m 1.1666666,4 1.8333334,0 0,2 -1.8333334,0 z m 9.8333334,0 2,0 0,2 -2,0 z m -9.8333334,4 1.8333334,0 0,2 -1.8333334,0 z m 9.8333334,0 2,0 0,2 -2,0 z"
- id="rect4136"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_animation_tree_player.svg b/editor/icons/source/icon_animation_tree_player.svg
deleted file mode 100644
index fa5803489e..0000000000
--- a/editor/icons/source/icon_animation_tree_player.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_animation_tree_player.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_animation_tree_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="5.6353556"
- inkscape:cy="8.4280346"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fbe87a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 15 L 2.1660156 15 L 2.1660156 13 L 4 13 L 4 15 L 12 15 L 12 13 L 14 13 L 14 15 L 15 15 L 15 1 L 14 1 L 14 3 L 12 3 L 12 1 L 4 1 L 4 3 L 2.1660156 3 L 2.1660156 1 L 1 1 z M 5 4 L 7 4 L 7 5 L 7 6 L 8 6 L 11 6 L 11 8 L 9 8 L 9 9 L 9 10 L 10 10 L 11 10 L 11 12 L 10 12 L 8 12 A 1.0001 1.0001 0 0 1 7 11 L 7 10 L 7 8 L 6 8 A 1.0001 1.0001 0 0 1 5 7 L 5 6 L 5 5 L 5 4 z M 2.1660156 5 L 4 5 L 4 7 L 2.1660156 7 L 2.1660156 5 z M 12 5 L 14 5 L 14 7 L 12 7 L 12 5 z M 2.1660156 9 L 4 9 L 4 11 L 2.1660156 11 L 2.1660156 9 z M 12 9 L 14 9 L 14 11 L 12 11 L 12 9 z "
- transform="translate(0,1036.3622)"
- id="rect4136" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_area.svg b/editor/icons/source/icon_area.svg
deleted file mode 100644
index d16ad26e23..0000000000
--- a/editor/icons/source/icon_area.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_area.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-2.7642608"
- inkscape:cy="8.6580722"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 3 L 1 5 L 3 5 L 3 3 L 5 3 L 5 1 L 1 1 z M 11 1 L 11 3 L 13 3 L 13 5 L 15 5 L 15 1 L 11 1 z M 4 4 L 4 6 L 4 10 L 4 12 L 12 12 L 12 10 L 12 4 L 4 4 z M 6 6 L 10 6 L 10 10 L 6 10 L 6 6 z M 1 11 L 1 13 L 1 15 L 3 15 L 5 15 L 5 13 L 3 13 L 3 11 L 1 11 z M 13 11 L 13 13 L 11 13 L 11 15 L 15 15 L 15 13 L 15 11 L 13 11 z "
- transform="translate(0,1036.3622)"
- id="rect4148" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_area_2d.svg b/editor/icons/source/icon_area_2d.svg
deleted file mode 100644
index ef7b16dd06..0000000000
--- a/editor/icons/source/icon_area_2d.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_area_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="-1.5916523"
- inkscape:cy="11.154772"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 3 L 1 5 L 3 5 L 3 3 L 5 3 L 5 1 L 1 1 z M 11 1 L 11 3 L 13 3 L 13 5 L 15 5 L 15 1 L 11 1 z M 4 4 L 4 6 L 4 10 L 4 12 L 12 12 L 12 10 L 12 4 L 4 4 z M 6 6 L 10 6 L 10 10 L 6 10 L 6 6 z M 1 11 L 1 13 L 1 15 L 3 15 L 5 15 L 5 13 L 3 13 L 3 11 L 1 11 z M 13 11 L 13 13 L 11 13 L 11 15 L 15 15 L 15 13 L 15 11 L 13 11 z "
- transform="translate(0,1036.3622)"
- id="rect4148" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_arrow_left.svg b/editor/icons/source/icon_arrow_left.svg
deleted file mode 100644
index a9be19b6d4..0000000000
--- a/editor/icons/source/icon_arrow_left.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_arrow_left.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.4636822"
- inkscape:cy="9.1396144"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 8,1048.3622 -4,-4 4,-4"
- id="path814"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 4,1044.3622 h 7"
- id="path816"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_arrow_right.svg b/editor/icons/source/icon_arrow_right.svg
deleted file mode 100644
index f6cbe3bc19..0000000000
--- a/editor/icons/source/icon_arrow_right.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_arrow_right.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.0981428"
- inkscape:cy="9.8315212"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 8.0142425,1048.3622 3.9999995,-4 -3.9999995,-4"
- id="path814"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="M 12.014242,1044.3622 H 5.0142425"
- id="path816"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_arrow_up.svg b/editor/icons/source/icon_arrow_up.svg
deleted file mode 100644
index b24a167b8e..0000000000
--- a/editor/icons/source/icon_arrow_up.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_arrow_up.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.0981428"
- inkscape:cy="9.8315212"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 2.9875012,1044.3838 a 1.0001,1.0001 0 0 0 1.7167968,0.6972 l 2.2929688,-2.2929 v 4.5859 a 1.0001,1.0001 0 1 0 2,0 v -4.5859 l 2.2929692,2.2929 a 1.0001,1.0001 0 1 0 1.414062,-1.414 l -3.9140624,-3.9141 a 1.0001,1.0001 0 0 0 -1.5859376,0 1.0001,1.0001 0 0 0 -0.00391,0.01 l -3.9101562,3.9102 a 1.0001,1.0001 0 0 0 -0.3027344,0.7168 z"
- id="path814"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_asset_lib.svg b/editor/icons/source/icon_asset_lib.svg
deleted file mode 100644
index db9fcda6d4..0000000000
--- a/editor/icons/source/icon_asset_lib.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_asset_lib.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="8.3739682"
- inkscape:cy="8.9121875"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1.87082875;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 8 1 A 3 3 0 0 0 5 4 L 5 6 L 1 6 L 1 10 L 1 13 C 1 14.10801 1.8919904 15 3 15 L 13 15 C 14.10801 15 15 14.10801 15 13 L 15 10 L 15 6 L 11 6 L 11 4 A 3 3 0 0 0 8 1 z M 8 2 A 2 2 0 0 0 7.84375 2.0078125 A 2.0000174 2.0000174 0 0 1 8 2 z M 8.15625 2.0078125 A 2.0000174 2.0000174 0 0 1 8.296875 2.0234375 A 2 2 0 0 0 8.15625 2.0078125 z M 7.703125 2.0234375 A 2 2 0 0 0 7.640625 2.0332031 A 2.0000174 2.0000174 0 0 1 7.703125 2.0234375 z M 8.359375 2.0332031 A 2.0000174 2.0000174 0 0 1 8.4648438 2.0566406 A 2 2 0 0 0 8.359375 2.0332031 z M 7.5351562 2.0566406 A 2 2 0 0 0 7.4296875 2.0839844 A 2.0000174 2.0000174 0 0 1 7.5351562 2.0566406 z M 8.5703125 2.0839844 A 2.0000174 2.0000174 0 0 1 8.6621094 2.1152344 A 2 2 0 0 0 8.5703125 2.0839844 z M 7.3378906 2.1152344 A 2 2 0 0 0 7.2558594 2.1464844 A 2.0000174 2.0000174 0 0 1 7.3378906 2.1152344 z M 8.7441406 2.1464844 A 2.0000174 2.0000174 0 0 1 8.8496094 2.1914062 A 2 2 0 0 0 8.7441406 2.1464844 z M 7.1503906 2.1914062 A 2 2 0 0 0 7.0722656 2.2304688 A 2.0000174 2.0000174 0 0 1 7.1503906 2.1914062 z M 8.9277344 2.2304688 A 2.0000174 2.0000174 0 0 1 9.0195312 2.28125 A 2 2 0 0 0 8.9277344 2.2304688 z M 6.9804688 2.28125 A 2 2 0 0 0 6.8886719 2.3378906 A 2.0000174 2.0000174 0 0 1 6.9804688 2.28125 z M 6.8320312 2.3789062 A 2 2 0 0 0 6.7304688 2.4550781 A 2.0000174 2.0000174 0 0 1 6.8320312 2.3789062 z M 9.2695312 2.4550781 A 2.0000174 2.0000174 0 0 1 9.3378906 2.515625 A 2 2 0 0 0 9.2695312 2.4550781 z M 6.6621094 2.515625 A 2 2 0 0 0 6.5859375 2.5859375 A 2.0000174 2.0000174 0 0 1 6.6621094 2.515625 z M 9.4140625 2.5859375 A 2.0000174 2.0000174 0 0 1 9.484375 2.6621094 A 2 2 0 0 0 9.4140625 2.5859375 z M 6.515625 2.6621094 A 2 2 0 0 0 6.4550781 2.7304688 A 2.0000174 2.0000174 0 0 1 6.515625 2.6621094 z M 9.5449219 2.7304688 A 2.0000174 2.0000174 0 0 1 9.6210938 2.8320312 A 2 2 0 0 0 9.5449219 2.7304688 z M 9.6621094 2.8886719 A 2.0000174 2.0000174 0 0 1 9.71875 2.9804688 A 2 2 0 0 0 9.6621094 2.8886719 z M 6.28125 2.9804688 A 2 2 0 0 0 6.2304688 3.0722656 A 2.0000174 2.0000174 0 0 1 6.28125 2.9804688 z M 8 3 A 1 1 0 0 1 9 4 L 9 6 L 7 6 L 7 4 A 1 1 0 0 1 8 3 z M 9.7695312 3.0722656 A 2.0000174 2.0000174 0 0 1 9.8085938 3.1503906 A 2 2 0 0 0 9.7695312 3.0722656 z M 6.1914062 3.1503906 A 2 2 0 0 0 6.1464844 3.2558594 A 2.0000174 2.0000174 0 0 1 6.1914062 3.1503906 z M 9.8535156 3.2558594 A 2.0000174 2.0000174 0 0 1 9.8847656 3.3378906 A 2 2 0 0 0 9.8535156 3.2558594 z M 6.1152344 3.3378906 A 2 2 0 0 0 6.0839844 3.4296875 A 2.0000174 2.0000174 0 0 1 6.1152344 3.3378906 z M 9.9160156 3.4296875 A 2.0000174 2.0000174 0 0 1 9.9433594 3.5351562 A 2 2 0 0 0 9.9160156 3.4296875 z M 6.0566406 3.5351562 A 2 2 0 0 0 6.0332031 3.640625 A 2.0000174 2.0000174 0 0 1 6.0566406 3.5351562 z M 9.9667969 3.640625 A 2.0000174 2.0000174 0 0 1 9.9765625 3.703125 A 2 2 0 0 0 9.9667969 3.640625 z M 6.0234375 3.703125 A 2 2 0 0 0 6.0078125 3.84375 A 2.0000174 2.0000174 0 0 1 6.0234375 3.703125 z M 9.9921875 3.84375 A 2.0000174 2.0000174 0 0 1 10 4 A 2 2 0 0 0 9.9921875 3.84375 z "
- transform="translate(0,1036.3622)"
- id="rect4503" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_atlas_texture.svg b/editor/icons/source/icon_atlas_texture.svg
deleted file mode 100644
index 10c8b745b6..0000000000
--- a/editor/icons/source/icon_atlas_texture.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_atlas_texture.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_atlas_texture (copy).svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.5596884"
- inkscape:cy="8.8938998"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1037.3622 -5,2 0,12 5,-2 4,2 5,-2 0,-12 -5,2 z m 0,2 4,2 0,8 -4,-2 z"
- id="rect4139"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_bus_bypass.svg b/editor/icons/source/icon_audio_bus_bypass.svg
deleted file mode 100644
index fe517d9ff7..0000000000
--- a/editor/icons/source/icon_audio_bus_bypass.svg
+++ /dev/null
@@ -1,295 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_audio_bus_bypass.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-3">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-6"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-0">
- <path
- inkscape:connector-curvature="0"
- id="path4201-62"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-61"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-8"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-7">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-9"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75-2">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3-0"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5-2">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6-3"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2-7"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9-5"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7-2">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5-8"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3-9">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5-7"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6-3"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2-6"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="13.750219"
- inkscape:cy="8.7492163"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 6.9707031 2 C 6.7159676 2.01 6.4735547 2.1112156 6.2929688 2.2910156 L 3.5859375 4.9980469 L 2 4.9980469 C 1.4477381 4.9981469 1.0000552 5.4457469 1 5.9980469 L 1 9.9980469 C 1.0000552 10.550347 1.4477381 10.997947 2 10.998047 L 3.5859375 10.998047 L 6.2929688 13.705078 C 6.9229867 14.334678 7.9997118 13.888747 8 12.998047 L 8 2.9980469 C 7.9990576 2.4349469 7.5335846 1.9836 6.9707031 2 z M 10.984375 4.9863281 A 1.0001 1.0001 0 0 0 10 6 L 10 10 A 1.0001 1.0001 0 1 0 12 10 L 12 6 A 1.0001 1.0001 0 0 0 10.984375 4.9863281 z M 13.984375 4.9863281 A 1.0001 1.0001 0 0 0 13 6 L 13 10 A 1.0001 1.0001 0 1 0 15 10 L 15 6 A 1.0001 1.0001 0 0 0 13.984375 4.9863281 z "
- transform="translate(0,1036.3622)"
- id="path4158" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_bus_layout.svg b/editor/icons/source/icon_audio_bus_layout.svg
deleted file mode 100644
index 66dc37ecfc..0000000000
--- a/editor/icons/source/icon_audio_bus_layout.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_audio_bus_layout.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient959-5">
- <stop
- id="stop957-3"
- offset="0"
- style="stop-color:#ff8484;stop-opacity:1" />
- <stop
- style="stop-color:#e1dc7a;stop-opacity:1"
- offset="0.5"
- id="stop955-5" />
- <stop
- id="stop953-6"
- offset="1"
- style="stop-color:#84ffb1;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959-5"
- id="linearGradient4542"
- gradientUnits="userSpaceOnUse"
- x1="8"
- y1="1"
- x2="8"
- y2="15" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="4.4869184"
- inkscape:cy="8.3575292"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:url(#linearGradient4542);fill-opacity:1.0;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="M 3 1 C 1.8919904 1 1 1.8919904 1 3 L 1 13 C 1 14.10801 1.8919904 15 3 15 L 5 15 C 6.1080096 15 7 14.10801 7 13 L 7 3 C 7 1.8919904 6.1080096 1 5 1 L 3 1 z M 11 1 C 9.8919889 1 9 1.8919889 9 3 L 9 13 C 9 14.108011 9.8919889 15 11 15 L 13 15 C 14.108011 15 15 14.108011 15 13 L 15 3 C 15 1.8919889 14.108011 1 13 1 L 11 1 z M 3 2 L 5 2 C 5.5540096 2 6 2.4459904 6 3 L 6 13 C 6 13.55401 5.5540096 14 5 14 L 3 14 C 2.4459904 14 2 13.55401 2 13 L 2 3 C 2 2.4459904 2.4459904 2 3 2 z "
- transform="translate(0,1036.3622)"
- id="rect4505" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_bus_mute.svg b/editor/icons/source/icon_audio_bus_mute.svg
deleted file mode 100644
index 55a776dd97..0000000000
--- a/editor/icons/source/icon_audio_bus_mute.svg
+++ /dev/null
@@ -1,301 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_audio_bus_mute.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-3">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-6"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-0">
- <path
- inkscape:connector-curvature="0"
- id="path4201-62"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-61"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-8"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-7">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-9"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75-2">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3-0"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5-2">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6-3"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2-7"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9-5"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7-2">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5-8"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3-9">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5-7"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6-3"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2-6"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="11.636432"
- inkscape:cy="7.916113"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6.9707031,1038.3625 c -0.2547355,0.01 -0.4971483,0.1112 -0.6777343,0.291 l -2.7070313,2.707 H 2 c -0.5522619,10e-5 -0.9999448,0.4477 -1,1 v 4 c 5.52e-5,0.5523 0.4477381,0.9999 1,1 h 1.5859375 l 2.7070313,2.7071 c 0.630018,0.6296 1.706743,0.1836 1.7070312,-0.7071 v -10 c -9.424e-4,-0.5631 -0.4664154,-1.0144 -1.0292969,-0.998 z"
- id="path4158"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 10.990234 4.9902344 A 1.0001 1.0001 0 0 0 10.292969 6.7070312 L 11.585938 8 L 10.292969 9.2929688 A 1.0001 1.0001 0 1 0 11.707031 10.707031 L 13 9.4140625 L 14.292969 10.707031 A 1.0001 1.0001 0 1 0 15.707031 9.2929688 L 14.414062 8 L 15.707031 6.7070312 A 1.0001 1.0001 0 0 0 14.980469 4.9921875 A 1.0001 1.0001 0 0 0 14.292969 5.2929688 L 13 6.5859375 L 11.707031 5.2929688 A 1.0001 1.0001 0 0 0 10.990234 4.9902344 z "
- transform="translate(0,1036.3622)"
- id="path1075" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_bus_solo.svg b/editor/icons/source/icon_audio_bus_solo.svg
deleted file mode 100644
index fd06442da1..0000000000
--- a/editor/icons/source/icon_audio_bus_solo.svg
+++ /dev/null
@@ -1,315 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_audio_bus_solo.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-3">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-6"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-0">
- <path
- inkscape:connector-curvature="0"
- id="path4201-62"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-61"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-8"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-7">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-9"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75-2">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3-0"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5-2">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6-3"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2-7"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9-5"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7-2">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5-8"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3-9">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5-7"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6-3"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2-6"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="9.3895072"
- inkscape:cy="10.039347"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6.9707031,1038.3625 c -0.2547355,0.01 -0.4971483,0.1112 -0.6777343,0.291 l -2.7070313,2.707 H 2 c -0.5522619,10e-5 -0.9999448,0.4477 -1,1 v 4 c 5.52e-5,0.5523 0.4477381,0.9999 1,1 h 1.5859375 l 2.7070313,2.7071 c 0.630018,0.6296 1.706743,0.1836 1.7070312,-0.7071 v -10 c -9.424e-4,-0.5631 -0.4664154,-1.0144 -1.0292969,-0.998 z"
- id="path4158"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccc" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 15,1040.3622 a 3,3 0 0 0 -3,3 v 2 a 1.0000174,1.0000174 0 0 1 -1,1 v 2 a 3,3 0 0 0 3,-3 v -2 a 1.0000174,1.0000174 0 0 1 1,-1 z"
- id="path4534"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4208"
- width="1"
- height="2"
- x="10"
- y="1046.3622" />
- <rect
- y="1040.3622"
- x="15"
- height="2"
- width="1"
- id="rect4210"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_effect_amplify.svg b/editor/icons/source/icon_audio_effect_amplify.svg
deleted file mode 100644
index 3c75d71791..0000000000
--- a/editor/icons/source/icon_audio_effect_amplify.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_audio_effect_amplify.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959-5"
- inkscape:collect="always">
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="0"
- id="stop957-3" />
- <stop
- id="stop955-5"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="1"
- id="stop953-6" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959-5"
- id="linearGradient4521"
- x1="9"
- y1="1037.3622"
- x2="9"
- y2="1051.3622"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0,-1036.3622)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="11.634663"
- inkscape:cy="5.7749201"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:url(#linearGradient4521);fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 15,1 1,8 H 15 Z M 2,10 v 1 h 2 v -1 z m 2,1 v 1 H 2 V 11 H 1 v 4 h 1 v -2 h 2 v 2 h 1 v -4 z m 2,-1 v 1 4 h 1 v -4 h 1 v 4 h 1 v -4 h 1 v -1 z m 4,1 v 4 h 1 v -4 z m 2,-1 v 5 h 1 v -2 h 2 v -3 z m 1,1 h 1 v 1 h -1 z"
- transform="translate(0,1036.3622)"
- id="path4513"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_stream_gibberish.svg b/editor/icons/source/icon_audio_stream_gibberish.svg
deleted file mode 100644
index 82b48c7004..0000000000
--- a/editor/icons/source/icon_audio_stream_gibberish.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_audio_stream_gibberish.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="5.8942052"
- inkscape:cy="11.683238"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99215686;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 2 A 2 1.9999913 0 0 0 1 4 L 1 9 A 2 1.9999913 0 0 0 3 11 L 13 11 A 2 1.9999913 0 0 0 15 9 L 15 4 A 2 1.9999913 0 0 0 13 2 L 3 2 z M 3 6 L 5 6 L 5 7 L 3 7 L 3 6 z M 8 6 A 1 1 0 0 1 9 7 L 9 8 A 1 1 0 0 1 8 9 A 1 1 0 0 1 7 8 L 7 7 A 1 1 0 0 1 8 6 z M 11 6 L 13 6 L 13 7 L 11 7 L 11 6 z "
- transform="translate(0,1036.3622)"
- id="rect4154" />
- <path
- style="fill:#e1e1e1;fill-opacity:0.99215686;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 6,1047.3622 0,3 3,-3 z"
- id="path4173"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_stream_player.svg b/editor/icons/source/icon_audio_stream_player.svg
deleted file mode 100644
index 2d9c5f4e6c..0000000000
--- a/editor/icons/source/icon_audio_stream_player.svg
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_audio_player.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959-5"
- inkscape:collect="always">
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="0"
- id="stop957-3" />
- <stop
- id="stop955-5"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="1"
- id="stop953-6" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959-5"
- id="linearGradient4552"
- x1="8"
- y1="1"
- x2="8"
- y2="15"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="14.998333"
- inkscape:cy="3.5679216"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.97227669;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 10.023235,1044.3625 c -0.5613918,-0.013 -1.0235345,0.4264 -1.0234377,0.9724 v 5.0542 c 6.911e-4,0.7482 0.8336124,1.2154 1.4999997,0.8414 l 4,-2.5262 c 0.666937,-0.3743 0.666937,-1.3104 0,-1.6847 l -4,-2.5261 c -0.145049,-0.082 -0.308928,-0.1269 -0.476562,-0.131 z"
- id="path4507"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient4552);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 11.970703 1.0019531 A 1.0001 1.0001 0 0 0 11.724609 1.0390625 L 4.7246094 3.0390625 A 1.0001 1.0001 0 0 0 4 4 L 4 9.5507812 A 2.5 2.4999914 0 0 0 3.5 9.5 A 2.5 2.4999914 0 0 0 1 12 A 2.5 2.4999914 0 0 0 3.5 14.5 A 2.5 2.4999914 0 0 0 5.9960938 12.087891 A 1.0001 1.0001 0 0 0 6 12 L 6 4.7558594 L 11 3.328125 L 11 6.5 L 13 5.5 L 13 2 A 1.0001 1.0001 0 0 0 11.970703 1.0019531 z "
- transform="translate(0,1036.3622)"
- id="path4514" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_stream_player_2_d.svg b/editor/icons/source/icon_audio_stream_player_2_d.svg
deleted file mode 100644
index 39149786c4..0000000000
--- a/editor/icons/source/icon_audio_stream_player_2_d.svg
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_audio_player_2d.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959-5"
- inkscape:collect="always">
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="0"
- id="stop957-3" />
- <stop
- id="stop955-5"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="1"
- id="stop953-6" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959-5"
- id="linearGradient4552"
- x1="8"
- y1="1"
- x2="8"
- y2="15"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="12.877013"
- inkscape:cy="3.5679216"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a5b7f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.97227669;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 10.023235,1044.3625 c -0.5613918,-0.013 -1.0235345,0.4264 -1.0234377,0.9724 v 5.0542 c 6.911e-4,0.7482 0.8336124,1.2154 1.4999997,0.8414 l 4,-2.5262 c 0.666937,-0.3743 0.666937,-1.3104 0,-1.6847 l -4,-2.5261 c -0.145049,-0.082 -0.308928,-0.1269 -0.476562,-0.131 z"
- id="path4507"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient4552);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 11.970703 1.0019531 A 1.0001 1.0001 0 0 0 11.724609 1.0390625 L 4.7246094 3.0390625 A 1.0001 1.0001 0 0 0 4 4 L 4 9.5507812 A 2.5 2.4999914 0 0 0 3.5 9.5 A 2.5 2.4999914 0 0 0 1 12 A 2.5 2.4999914 0 0 0 3.5 14.5 A 2.5 2.4999914 0 0 0 5.9960938 12.087891 A 1.0001 1.0001 0 0 0 6 12 L 6 4.7558594 L 11 3.328125 L 11 6.5 L 13 5.5 L 13 2 A 1.0001 1.0001 0 0 0 11.970703 1.0019531 z "
- transform="translate(0,1036.3622)"
- id="path4514" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_stream_player_3_d.svg b/editor/icons/source/icon_audio_stream_player_3_d.svg
deleted file mode 100644
index 1858f8fe33..0000000000
--- a/editor/icons/source/icon_audio_stream_player_3_d.svg
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_audio_stream_player_3_d.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959-5"
- inkscape:collect="always">
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="0"
- id="stop957-3" />
- <stop
- id="stop955-5"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="1"
- id="stop953-6" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959-5"
- id="linearGradient4552"
- x1="8"
- y1="1"
- x2="8"
- y2="15"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="-0.23400447"
- inkscape:cy="10.117538"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#fc9c9c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.97227669;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 10.023235,1044.3625 c -0.5613918,-0.013 -1.0235345,0.4264 -1.0234377,0.9724 v 5.0542 c 6.911e-4,0.7482 0.8336124,1.2154 1.4999997,0.8414 l 4,-2.5262 c 0.666937,-0.3743 0.666937,-1.3104 0,-1.6847 l -4,-2.5261 c -0.145049,-0.082 -0.308928,-0.1269 -0.476562,-0.131 z"
- id="path4507"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient4552);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 11.970703 1.0019531 A 1.0001 1.0001 0 0 0 11.724609 1.0390625 L 4.7246094 3.0390625 A 1.0001 1.0001 0 0 0 4 4 L 4 9.5507812 A 2.5 2.4999914 0 0 0 3.5 9.5 A 2.5 2.4999914 0 0 0 1 12 A 2.5 2.4999914 0 0 0 3.5 14.5 A 2.5 2.4999914 0 0 0 5.9960938 12.087891 A 1.0001 1.0001 0 0 0 6 12 L 6 4.7558594 L 11 3.328125 L 11 6.5 L 13 5.5 L 13 2 A 1.0001 1.0001 0 0 0 11.970703 1.0019531 z "
- transform="translate(0,1036.3622)"
- id="path4514" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_audio_stream_sample.svg b/editor/icons/source/icon_audio_stream_sample.svg
deleted file mode 100644
index 0724daa333..0000000000
--- a/editor/icons/source/icon_audio_stream_sample.svg
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_audio_stream_sample.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959-5"
- inkscape:collect="always">
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="0"
- id="stop957-3" />
- <stop
- id="stop955-5"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="1"
- id="stop953-6" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959-5"
- id="linearGradient4552"
- x1="8"
- y1="1"
- x2="8"
- y2="15"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="0.86295209"
- inkscape:cy="-2.4874516"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient4552);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 11.970703 1.0019531 C 11.887443 1.0040231 11.804775 1.0164945 11.724609 1.0390625 L 4.7246094 3.0390625 C 4.2958022 3.1619372 4.0002098 3.5539354 4 4 L 4 9.5507812 C 3.8354622 9.5171023 3.6679493 9.5000892 3.5 9.5 C 2.1192848 9.5 0.99999525 10.61929 1 12 C 0.99999525 13.38071 2.1192848 14.5 3.5 14.5 C 4.8455926 14.4987 5.9487926 13.432648 5.9960938 12.087891 C 5.9986844 12.058665 5.9999878 12.02934 6 12 L 6 4.7558594 L 11 3.328125 L 11 6.5 L 13 5.5 L 13 2 C 12.999084 1.4368608 12.533603 0.98551202 11.970703 1.0019531 z M 10.5 8 C 10.223 8 10 8.223 10 8.5 L 10 13.5 C 10 13.777 10.223 14 10.5 14 C 10.777 14 11 13.777 11 13.5 L 11 8.5 C 11 8.223 10.777 8 10.5 8 z M 12.5 9 C 12.223 9 12 9.223 12 9.5 L 12 12.5 C 12 12.777 12.223 13 12.5 13 C 12.777 13 13 12.777 13 12.5 L 13 9.5 C 13 9.223 12.777 9 12.5 9 z M 8.5 10 C 8.223 10 8 10.223 8 10.5 L 8 11.5 C 8 11.777 8.223 12 8.5 12 C 8.777 12 9 11.777 9 11.5 L 9 10.5 C 9 10.223 8.777 10 8.5 10 z M 14.5 10 C 14.223 10 14 10.223 14 10.5 L 14 11.5 C 14 11.777 14.223 12 14.5 12 C 14.777 12 15 11.777 15 11.5 L 15 10.5 C 15 10.223 14.777 10 14.5 10 z "
- transform="translate(0,1036.3622)"
- id="path4514" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_auto_play.svg b/editor/icons/source/icon_auto_play.svg
deleted file mode 100644
index d4e1068ebf..0000000000
--- a/editor/icons/source/icon_auto_play.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_auto_play.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.592521"
- inkscape:cy="9.4268437"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 2 2 A 1.0001 1.0001 0 0 0 1 3 L 1 13 A 1.0001 1.0001 0 0 0 2 14 L 10 14 A 1.0001 1.0001 0 0 0 10.78125 13.625 L 14.78125 8.625 A 1.0001 1.0001 0 0 0 14.78125 7.3769531 L 10.78125 2.3769531 A 1.0001 1.0001 0 0 0 10 2 L 2 2 z M 3 4 L 9.5195312 4 L 12.71875 8 L 9.5195312 12 L 3 12 L 3 4 z M 6 5 C 4.8954305 5 4 5.8954 4 7 L 4 11 L 5 11 L 5 9 L 7 9 L 7 11 L 8 11 L 8 7 C 8 5.8954 7.1045695 5 6 5 z M 6 6 A 1 1 0 0 1 7 7 L 7 8 L 5 8 L 5 7 A 1 1 0 0 1 6 6 z M 9 6 L 9 10 L 11 8 L 9 6 z "
- transform="translate(0,1036.3622)"
- id="path4164" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_back.svg b/editor/icons/source/icon_back.svg
deleted file mode 100644
index dfaf25de01..0000000000
--- a/editor/icons/source/icon_back.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="16"
- viewBox="0 0 8 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_back.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.1867174"
- inkscape:cy="8.4650528"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 6,1038.3622 -4,6 4,6"
- id="path814"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_back_buffer_copy.svg b/editor/icons/source/icon_back_buffer_copy.svg
deleted file mode 100644
index 17d83ed73f..0000000000
--- a/editor/icons/source/icon_back_buffer_copy.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_back_buffer_copy.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_back_buffer_copy.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.8381635"
- inkscape:cy="8.4004461"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 3 L 1 10 L 1 12 L 6 12 L 6 10 L 3 10 L 3 3 L 9 3 L 9 1 L 3 1 L 1 1 z M 7 4 L 7 6 L 7 15 L 9 15 L 15 15 L 15 13 L 15 6 L 15 4 L 7 4 z M 9 6 L 13 6 L 13 13 L 9 13 L 9 6 z "
- transform="translate(0,1036.3622)"
- id="rect4146" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bake.svg b/editor/icons/source/icon_bake.svg
deleted file mode 100644
index ca07bca379..0000000000
--- a/editor/icons/source/icon_bake.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bake.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-3.7193798"
- inkscape:cy="12.893481"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 1 L 2 3 L 14 3 L 14 1 L 2 1 z M 1 4 L 1 13 A 2 2.0000174 0 0 0 3 15 L 13 15 A 2 2.0000174 0 0 0 15 13 L 15 4 L 1 4 z M 3 5 L 4 5 L 4 6 L 3 6 L 3 5 z M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 z M 9 5 L 10 5 L 10 6 L 9 6 L 9 5 z M 12 5 L 13 5 L 13 6 L 12 6 L 12 5 z M 3 7 L 13 7 L 13 13 L 3 13 L 3 7 z M 6 8 L 6 9 L 10 9 L 10 8 L 6 8 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_baked_light.svg b/editor/icons/source/icon_baked_light.svg
deleted file mode 100644
index e4d435254d..0000000000
--- a/editor/icons/source/icon_baked_light.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_baked_light.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-2.7913022"
- inkscape:cy="10.551189"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 1 L 2 3 L 14 3 L 14 1 L 2 1 z M 1 4 L 1 13 A 2 2.0000174 0 0 0 3 15 L 13 15 A 2 2.0000174 0 0 0 15 13 L 15 4 L 1 4 z M 3 5 L 4 5 L 4 6 L 3 6 L 3 5 z M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 z M 9 5 L 10 5 L 10 6 L 9 6 L 9 5 z M 12 5 L 13 5 L 13 6 L 12 6 L 12 5 z M 3 7 L 13 7 L 13 13 L 3 13 L 3 7 z M 6 8 L 6 9 L 10 9 L 10 8 L 6 8 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_baked_light_instance.svg b/editor/icons/source/icon_baked_light_instance.svg
deleted file mode 100644
index d854378f12..0000000000
--- a/editor/icons/source/icon_baked_light_instance.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_baked_light_instance.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="10.864698"
- inkscape:cy="11.302491"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 1 L 2 3 L 14 3 L 14 1 L 2 1 z M 1 4 L 1 13 A 2 2.0000174 0 0 0 3 15 L 13 15 A 2 2.0000174 0 0 0 15 13 L 15 4 L 1 4 z M 3 5 L 4 5 L 4 6 L 3 6 L 3 5 z M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 z M 9 5 L 10 5 L 10 6 L 9 6 L 9 5 z M 12 5 L 13 5 L 13 6 L 12 6 L 12 5 z M 3 7 L 13 7 L 13 13 L 3 13 L 3 7 z M 6 8 L 6 9 L 10 9 L 10 8 L 6 8 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_baked_light_sampler.svg b/editor/icons/source/icon_baked_light_sampler.svg
deleted file mode 100644
index 2dc7c39621..0000000000
--- a/editor/icons/source/icon_baked_light_sampler.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_backed_light_sampler.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_baked_light_sampler.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.2162526"
- inkscape:cy="7.9395501"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 1 L 2 3 L 14 3 L 14 1 L 2 1 z M 1 4 L 1 13 A 2 2.0000174 0 0 0 3 15 L 7 15 L 7 13 L 3 13 L 3 7 L 7 7 L 13 7 L 15 7 L 15 4 L 1 4 z M 3 5 L 4 5 L 4 6 L 3 6 L 3 5 z M 6 5 L 7 5 L 7 6 L 6 6 L 6 5 z M 9 5 L 10 5 L 10 6 L 9 6 L 9 5 z M 12 5 L 13 5 L 13 6 L 12 6 L 12 5 z M 6 8 L 6 9 L 7 9 L 7 8 L 6 8 z M 10 9 A 1 1 0 0 0 9 10 L 9 14 A 1 1 0 0 0 10 15 L 14 15 A 1 1 0 0 0 15 14 L 15 10 A 1 1 0 0 0 14 9 L 10 9 z M 13 10 A 1 1 0 0 1 14 11 A 1 1 0 0 1 13 12 A 1 1 0 0 1 12 11 A 1 1 0 0 1 13 10 z M 11 12 A 1 1 0 0 1 12 13 A 1 1 0 0 1 11 14 A 1 1 0 0 1 10 13 A 1 1 0 0 1 11 12 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bit_map.svg b/editor/icons/source/icon_bit_map.svg
deleted file mode 100644
index 5c1ad9139a..0000000000
--- a/editor/icons/source/icon_bit_map.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bit_map.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.664815"
- inkscape:cy="7.867044"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 1 1 L 1 3 L 3 3 L 3 1 L 1 1 z M 3 3 L 3 5 L 5 5 L 5 3 L 3 3 z M 5 3 L 7 3 L 7 1 L 5 1 L 5 3 z M 7 3 L 7 5 L 9 5 L 9 3 L 7 3 z M 9 3 L 11 3 L 11 1 L 9 1 L 9 3 z M 11 3 L 11 5 L 13 5 L 13 3 L 11 3 z M 13 3 L 15 3 L 15 1 L 13 1 L 13 3 z M 13 5 L 13 7 L 15 7 L 15 5 L 13 5 z M 13 7 L 11 7 L 11 9 L 13 9 L 13 7 z M 13 9 L 13 11 L 15 11 L 15 9 L 13 9 z M 13 11 L 11 11 L 11 13 L 13 13 L 13 11 z M 13 13 L 13 15 L 15 15 L 15 13 L 13 13 z M 11 13 L 9 13 L 9 15 L 11 15 L 11 13 z M 9 13 L 9 11 L 7 11 L 7 13 L 9 13 z M 7 13 L 5 13 L 5 15 L 7 15 L 7 13 z M 5 13 L 5 11 L 3 11 L 3 13 L 5 13 z M 3 13 L 1 13 L 1 15 L 3 15 L 3 13 z M 3 11 L 3 9 L 1 9 L 1 11 L 3 11 z M 3 9 L 5 9 L 5 7 L 3 7 L 3 9 z M 3 7 L 3 5 L 1 5 L 1 7 L 3 7 z M 5 7 L 7 7 L 7 5 L 5 5 L 5 7 z M 7 7 L 7 9 L 9 9 L 9 7 L 7 7 z M 9 7 L 11 7 L 11 5 L 9 5 L 9 7 z M 9 9 L 9 11 L 11 11 L 11 9 L 9 9 z M 7 9 L 5 9 L 5 11 L 7 11 L 7 9 z "
- id="rect4170"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bitmap_font.svg b/editor/icons/source/icon_bitmap_font.svg
deleted file mode 100644
index 70749923d5..0000000000
--- a/editor/icons/source/icon_bitmap_font.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bitmap_font.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.619442"
- inkscape:cy="6.940754"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 1,1037.3622 0,2 0,2 1,0 0,-1 1,0 0,-1 4,0 0,3 0,5 0,2 -1,0 0,1 -1,0 0,1 6,0 0,-1 -1,0 0,-1 -1,0 0,-10 4,0 0,1 1,0 0,1 1,0 0,-2 0,-2 -13,0 -1,0 z"
- id="rect4212"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_blend.svg b/editor/icons/source/icon_blend.svg
deleted file mode 100644
index 64d2aeec83..0000000000
--- a/editor/icons/source/icon_blend.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_blend.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_blend.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="2.5037806"
- inkscape:cy="10.535433"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-8"
- inkscape:label="Layer 1"
- transform="matrix(0,-1,1,0,-1021.3622,1033.3622)" />
- <path
- style="fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2.979185,1050.6622 4.2426407,-4.2 -1.4142136,-1.4 -4.2426407,4.1999 1.4142136,1.4001 z m 5.6568542,0 3.1819808,0.35 3.18198,0.35 -0.353553,-3.15 -0.353554,-3.15 -2.12132,2.1 -2.828427,-2.8 -1.4142136,-1.4 -4.9497474,-4.9 -1.4142136,1.4001 4.9497475,4.8999 1.4142135,1.4 2.8284276,2.7999 -2.1213208,2.1001 z m 1.4142138,-7 2.12132,-2.1 2.12132,2.1 0.353554,-3.15 0.353553,-3.15 -3.18198,0.35 -3.1819808,0.35 2.1213208,2.1001 -2.1213208,2.0999 1.4142138,1.4 z"
- id="rect4352"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bone.svg b/editor/icons/source/icon_bone.svg
deleted file mode 100644
index c87902a336..0000000000
--- a/editor/icons/source/icon_bone.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bone.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="4.7029555"
- inkscape:cy="10.983314"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 10.477991,1037.3625 a 2.4664114,2.4663006 0 0 0 -1.780445,0.7205 2.4664114,2.4663006 0 0 0 -0.3140829,3.1041 l -3.5589636,3.5608 a 2.4664114,2.4663006 0 0 0 -3.1022911,0.3121 2.4664114,2.4663006 0 0 0 0,3.4876 2.4664114,2.4663006 0 0 0 1.3969945,0.6955 2.4664198,2.4663006 0 0 0 0.6956069,1.397 2.4664198,2.4663006 0 0 0 3.4876687,0 2.4664198,2.4663006 0 0 0 0.3140829,-3.1041 l 3.5608896,-3.5608 a 2.4664198,2.4663006 0 0 0 3.100365,-0.3102 2.4664198,2.4663006 0 0 0 0,-3.4875 2.4664198,2.4663006 0 0 0 -1.396994,-0.6974 2.4664114,2.4663006 0 0 0 -0.695607,-1.3971 2.4664114,2.4663006 0 0 0 -1.707224,-0.7205 z"
- id="path4139"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bone_attachment.svg b/editor/icons/source/icon_bone_attachment.svg
deleted file mode 100644
index 5cb85c3c17..0000000000
--- a/editor/icons/source/icon_bone_attachment.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bone_attachment.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="1.6535575"
- inkscape:cy="9.9668477"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 10.477991,1037.3625 a 2.4664114,2.4663006 0 0 0 -1.780445,0.7205 2.4664114,2.4663006 0 0 0 -0.3140829,3.1041 l -3.5589636,3.5608 a 2.4664114,2.4663006 0 0 0 -3.1022911,0.3121 2.4664114,2.4663006 0 0 0 0,3.4876 2.4664114,2.4663006 0 0 0 1.3969945,0.6955 2.4664198,2.4663006 0 0 0 0.6956069,1.397 2.4664198,2.4663006 0 0 0 3.4876687,0 2.4664198,2.4663006 0 0 0 0.3140829,-3.1041 l 3.5608896,-3.5608 a 2.4664198,2.4663006 0 0 0 3.100365,-0.3102 2.4664198,2.4663006 0 0 0 0,-3.4875 2.4664198,2.4663006 0 0 0 -1.396994,-0.6974 2.4664114,2.4663006 0 0 0 -0.695607,-1.3971 2.4664114,2.4663006 0 0 0 -1.707224,-0.7205 z"
- id="path4139"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bone_track.svg b/editor/icons/source/icon_bone_track.svg
deleted file mode 100644
index cdaab7e34a..0000000000
--- a/editor/icons/source/icon_bone_track.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bone_track.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="9.2991496"
- inkscape:cy="10.055236"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 10.477991,1037.3625 a 2.4664114,2.4663006 0 0 0 -1.780445,0.7205 2.4664114,2.4663006 0 0 0 -0.3140829,3.1041 l -3.5589636,3.5608 a 2.4664114,2.4663006 0 0 0 -3.1022911,0.3121 2.4664114,2.4663006 0 0 0 0,3.4876 2.4664114,2.4663006 0 0 0 1.3969945,0.6955 2.4664198,2.4663006 0 0 0 0.6956069,1.397 2.4664198,2.4663006 0 0 0 3.4876687,0 2.4664198,2.4663006 0 0 0 0.3140829,-3.1041 l 3.5608896,-3.5608 a 2.4664198,2.4663006 0 0 0 3.100365,-0.3102 2.4664198,2.4663006 0 0 0 0,-3.4875 2.4664198,2.4663006 0 0 0 -1.396994,-0.6974 2.4664114,2.4663006 0 0 0 -0.695607,-1.3971 2.4664114,2.4663006 0 0 0 -1.707224,-0.7205 z"
- id="path4139"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bool.svg b/editor/icons/source/icon_bool.svg
deleted file mode 100644
index 9f429376fd..0000000000
--- a/editor/icons/source/icon_bool.svg
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bool.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bool.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.5294581"
- inkscape:cy="7.990409"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(0,-2.0001)"
- id="layer1-5"
- inkscape:label="Layer 1"
- style="fill:#cf68ea;fill-opacity:1">
- <rect
- transform="scale(-1,1)"
- y="1044.3622"
- x="-2"
- height="5.9999666"
- width="2"
- id="rect4364"
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,1)"
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4368"
- width="1"
- height="2.0000174"
- x="-2"
- y="1044.3622" />
- <path
- inkscape:connector-curvature="0"
- id="path4370"
- d="m 2,1044.3623 a 3,3 0 0 1 3,3 H 3 a 1.0000174,1.0000174 0 0 0 -1,-1 z"
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4374"
- width="2"
- height="5"
- x="13"
- y="-1047.3622"
- transform="scale(1,-1)" />
- <path
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3623 a 3,3 0 0 0 3,-3 H 3 a 1.0000174,1.0000174 0 0 1 -1,1 z"
- id="path4378"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4384"
- width="2"
- height="3.9999492"
- x="-2"
- y="1042.3622"
- transform="scale(-1,1)" />
- <path
- inkscape:connector-curvature="0"
- id="path4392"
- d="m 16,1050.3623 a 3,3 0 0 1 -3,-3 h 2 a 1.0000174,1.0000174 0 0 0 1,1 z"
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4148"
- d="m 7,1044.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z"
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4174"
- d="m 11,1044.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z"
- style="fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_box_shape.svg b/editor/icons/source/icon_box_shape.svg
deleted file mode 100644
index 04aaf16ebc..0000000000
--- a/editor/icons/source/icon_box_shape.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_box_shape.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="8.1852896"
- inkscape:cx="7.1222113"
- inkscape:zoom="45.254832"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8 1 L 1 4 L 1 12 L 8 15 L 15 12 L 15 4 L 8 1 z "
- transform="translate(0,1036.3622)"
- id="path4151" />
- <path
- style="fill:#68b6ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,1051.3622 -7,-3 0,-8 7,3 z"
- id="path4143"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path4145"
- d="m 8,1051.3622 7,-3 0,-8 -7,3 z"
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:#a2d2ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1040.3622 7,3 7,-3 -7,-3 z"
- id="path4149"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bus_vu_db.svg b/editor/icons/source/icon_bus_vu_db.svg
deleted file mode 100644
index 813990bb42..0000000000
--- a/editor/icons/source/icon_bus_vu_db.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="32"
- height="128"
- viewBox="0 0 32 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_vu_empty.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bus_vu_db.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959-5"
- id="linearGradient4736"
- x1="16"
- y1="0"
- x2="16"
- y2="128"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient959-5">
- <stop
- id="stop957-3"
- offset="0"
- style="stop-color:#ff8484;stop-opacity:1" />
- <stop
- style="stop-color:#e1dc7a;stop-opacity:1"
- offset="0.5"
- id="stop955-5" />
- <stop
- id="stop953-6"
- offset="1"
- style="stop-color:#84ffb1;stop-opacity:1" />
- </linearGradient>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="4"
- inkscape:cx="21.367149"
- inkscape:cy="54.069367"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="false"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <path
- style="fill:url(#linearGradient4736);fill-opacity:1;stroke:none;stroke-width:2.68328929;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.49019608"
- d="M 1.5 0 C 0.66899518 0 0 0.66899518 0 1.5 C 0 2.3310048 0.66899518 3 1.5 3 L 3.5 3 C 4.3310048 3 5 2.3310048 5 1.5 C 5 0.66899518 4.3310048 0 3.5 0 L 1.5 0 z M 1.5 7 C 0.669 7 0 7.669 0 8.5 C 0 9.331 0.669 10 1.5 10 C 2.331 10 3 9.331 3 8.5 C 3 7.669 2.331 7 1.5 7 z M 24 10.75 C 22.5 10.75 21 12.05555 21 14 A 1.0001 1.0001 0 1 0 23 14 C 23 12.94444 23.5 12.75 24 12.75 C 24.5 12.75 25 12.94444 25 14 C 25 14.59157 24.641069 15.156041 23.808594 15.863281 C 22.976118 16.570521 21.747003 17.315092 20.451172 18.164062 A 1.0001 1.0001 0 0 0 21 20 L 26 20 A 1.0001 1.0001 0 1 0 26 18 L 24.214844 18 C 24.498598 17.79333 24.845909 17.605569 25.103516 17.386719 C 26.133676 16.511529 27 15.40842 27 14 C 27 12.05555 25.5 10.75 24 10.75 z M 16.970703 11.001953 A 1.0001 1.0001 0 0 0 16.552734 11.105469 L 14.552734 12.105469 A 1.0001163 1.0001163 0 0 0 15.447266 13.894531 L 16 13.619141 L 16 19 A 1.0001 1.0001 0 1 0 18 19 L 18 12 A 1.0001 1.0001 0 0 0 16.970703 11.001953 z M 1.5 14 C 0.66899518 14 0 14.668995 0 15.5 C 0 16.331005 0.66899518 17 1.5 17 L 3.5 17 C 4.3310048 17 5 16.331005 5 15.5 C 5 14.668995 4.3310048 14 3.5 14 L 1.5 14 z M 1.5 21 C 0.669 21 0 21.669 0 22.5 C 0 23.331 0.669 24 1.5 24 C 2.331 24 3 23.331 3 22.5 C 3 21.669 2.331 21 1.5 21 z M 23 24 C 22.446 24 22 24.446 22 25 L 22 26 L 22 28 L 21.070312 28 A 1.0001 1.0001 0 0 0 21 28 C 19.929806 28 18.937441 28.57318 18.402344 29.5 C 17.867247 30.42681 17.867247 31.57318 18.402344 32.5 C 18.937441 33.42681 19.929806 34 21 34 L 23 34 C 23.554 34 24 33.554 24 33 L 24 25 C 24 24.446 23.554 24 23 24 z M 27 24 C 26.446 24 26 24.446 26 25 L 26 33 C 26 33.554 26.446 34 27 34 L 29 34 C 30.070194 34 31.062559 33.42681 31.597656 32.5 C 32.132753 31.57318 32.132753 30.42681 31.597656 29.5 C 31.492619 29.31807 31.365922 29.153017 31.228516 29 C 31.366318 28.846693 31.49237 28.682361 31.597656 28.5 C 32.132753 27.57318 32.132753 26.42681 31.597656 25.5 C 31.062559 24.57318 30.070194 24 29 24 L 27 24 z M 13 25 C 11.355297 25 10 26.3553 10 28 L 10 31 C 10 32.6447 11.355297 34 13 34 C 14.644703 34 16 32.6447 16 31 L 16 28 C 16 26.3553 14.644703 25 13 25 z M 28 26 L 29 26 C 29.358869 26 29.6858 26.18921 29.865234 26.5 C 30.044669 26.81079 30.044669 27.18921 29.865234 27.5 C 29.6858 27.81079 29.358869 28 29 28 L 28.929688 28 L 28 28 L 28 26 z M 13 27 C 13.571297 27 14 27.4287 14 28 L 14 31 C 14 31.5713 13.571297 32 13 32 C 12.428703 32 12 31.5713 12 31 L 12 28 C 12 27.4287 12.428703 27 13 27 z M 1.5 28 C 0.66899518 28 0 28.668995 0 29.5 C 0 30.331005 0.66899518 31 1.5 31 L 3.5 31 C 4.3310048 31 5 30.331005 5 29.5 C 5 28.668995 4.3310048 28 3.5 28 L 1.5 28 z M 21 30 L 22 30 L 22 32 L 21.070312 32 A 1.0001 1.0001 0 0 0 21 32 C 20.641131 32 20.3142 31.81079 20.134766 31.5 C 19.955331 31.18921 19.955331 30.81079 20.134766 30.5 C 20.3142 30.18921 20.641131 30 21 30 z M 28 30 L 29 30 C 29.358869 30 29.6858 30.18921 29.865234 30.5 C 30.044669 30.81079 30.044669 31.18921 29.865234 31.5 C 29.6858 31.81079 29.358869 32 29 32 L 28 32 L 28 30 z M 1.5 35 C 0.669 35 0 35.669 0 36.5 C 0 37.331 0.669 38 1.5 38 C 2.331 38 3 37.331 3 36.5 C 3 35.669 2.331 35 1.5 35 z M 24 37.75 C 22.5 37.75 21 39.05555 21 41 A 1.0001 1.0001 0 1 0 23 41 C 23 39.94444 23.5 39.75 24 39.75 C 24.5 39.75 25 39.94444 25 41 C 25 41.59157 24.641069 42.156041 23.808594 42.863281 C 22.976118 43.570521 21.747003 44.315092 20.451172 45.164062 A 1.0001 1.0001 0 0 0 21 47 L 26 47 A 1.0001 1.0001 0 1 0 26 45 L 24.214844 45 C 24.498598 44.79333 24.845909 44.605569 25.103516 44.386719 C 26.133676 43.511529 27 42.40842 27 41 C 27 39.05555 25.5 37.75 24 37.75 z M 16.970703 38.001953 A 1.0001 1.0001 0 0 0 16.552734 38.105469 L 14.552734 39.105469 A 1.0001163 1.0001163 0 0 0 15.447266 40.894531 L 16 40.619141 L 16 46 A 1.0001 1.0001 0 1 0 18 46 L 18 39 A 1.0001 1.0001 0 0 0 16.970703 38.001953 z M 1.5 42 C 0.66899518 42 0 42.668995 0 43.5 C 0 44.331005 0.66899518 45 1.5 45 L 3.5 45 C 4.3310048 45 5 44.331005 5 43.5 C 5 42.668995 4.3310048 42 3.5 42 L 1.5 42 z M 9 43 L 9 45 L 12 45 L 12 43 L 9 43 z M 2 49 C 1.169 49 0.5 49.669 0.5 50.5 C 0.5 51.331 1.169 52 2 52 C 2.831 52 3.5 51.331 3.5 50.5 C 3.5 49.669 2.831 49 2 49 z M 17.986328 52.75 C 16.486328 52.75 14.986328 54.05555 14.986328 56 A 1.0001 1.0001 0 1 0 16.986328 56 C 16.986328 54.94444 17.486328 54.75 17.986328 54.75 C 18.486328 54.75 18.986328 54.94444 18.986328 56 C 18.986328 56.59157 18.627397 57.156041 17.794922 57.863281 C 16.962447 58.570521 15.733331 59.315092 14.4375 60.164062 A 1.0001 1.0001 0 0 0 14.986328 62 L 19.986328 62 A 1.0001 1.0001 0 1 0 19.986328 60 L 18.199219 60 C 18.483315 59.79311 18.83195 59.605809 19.089844 59.386719 C 20.120004 58.511529 20.986328 57.40842 20.986328 56 C 20.986328 54.05555 19.486328 52.75 17.986328 52.75 z M 25.033203 52.988281 A 1.0001 1.0001 0 0 0 24.142578 53.486328 L 21.142578 58.486328 A 1.0001 1.0001 0 0 0 22 60 L 25 60 L 25 61 A 1.0001 1.0001 0 1 0 27 61 L 27 59 A 1.0001 1.0001 0 0 0 26 58 L 23.767578 58 L 25.857422 54.515625 A 1.0001 1.0001 0 0 0 25.033203 52.988281 z M 1.5 56 C 0.66899518 56 0 56.668995 0 57.5 C 0 58.331005 0.66899518 59 1.5 59 L 3.5 59 C 4.3310048 59 5 58.331005 5 57.5 C 5 56.668995 4.3310048 56 3.5 56 L 1.5 56 z M 9 58 L 9 60 L 12 60 L 12 58 L 9 58 z M 1.5 63 C 0.669 63 0 63.669 0 64.5 C 0 65.331 0.669 66 1.5 66 C 2.331 66 3 65.331 3 64.5 C 3 63.669 2.331 63 1.5 63 z M 26.046875 67.996094 A 1.0001 1.0001 0 0 0 25.683594 68.052734 C 25.683594 68.052734 24.700104 68.385829 23.792969 69.292969 C 22.885834 70.200139 22 71.75 22 74 A 1.0001 1.0001 0 0 0 22.021484 74.214844 C 22.135372 75.759296 23.42866 77 25 77 C 26.64501 77 28 75.64497 28 74 C 28 72.35499 26.64501 71 25 71 C 24.984666 71 24.970361 71.003672 24.955078 71.003906 C 25.03908 70.902917 25.122032 70.79203 25.207031 70.707031 C 25.799896 70.114161 26.316406 69.949219 26.316406 69.949219 A 1.0001 1.0001 0 0 0 26.046875 67.996094 z M 16.986328 68.001953 C 15.94567 68.009427 14.945809 68.560643 14.402344 69.501953 A 1.0001607 1.0001607 0 0 0 16.134766 70.501953 C 16.380733 70.075953 16.87953 69.892287 17.341797 70.060547 C 17.804064 70.228797 18.069795 70.689368 17.984375 71.173828 C 17.898952 71.658288 17.491934 72.001953 17 72.001953 A 1.0001 1.0001 0 0 0 16.916016 72.003906 A 1.0001 1.0001 0 0 0 16.751953 72.029297 A 1.0001 1.0001 0 0 0 16.722656 72.037109 A 1.0001 1.0001 0 0 0 16.634766 72.064453 A 1.0001 1.0001 0 0 0 16.574219 72.091797 A 1.0001 1.0001 0 0 0 16.527344 72.113281 A 1.0001 1.0001 0 0 0 16.486328 72.136719 A 1.0001 1.0001 0 0 0 16.453125 72.15625 A 1.0001 1.0001 0 0 0 16.3125 72.263672 A 1.0001 1.0001 0 0 0 16.287109 72.287109 A 1.0001 1.0001 0 0 0 16.269531 72.306641 A 1.0001 1.0001 0 0 0 16.21875 72.359375 A 1.0001 1.0001 0 0 0 16.1875 72.400391 A 1.0001 1.0001 0 0 0 16.162109 72.435547 A 1.0001 1.0001 0 0 0 16.142578 72.466797 A 1.0001 1.0001 0 0 0 16.064453 72.611328 A 1.0001 1.0001 0 0 0 16.041016 72.677734 A 1.0001 1.0001 0 0 0 16.033203 72.695312 A 1.0001 1.0001 0 0 0 15.996094 72.861328 A 1.0001 1.0001 0 0 0 15.990234 72.912109 A 1.0001 1.0001 0 0 0 15.990234 72.927734 A 1.0001 1.0001 0 0 0 15.986328 73 A 1.0001 1.0001 0 0 0 15.990234 73.074219 A 1.0001 1.0001 0 0 0 15.990234 73.089844 A 1.0001 1.0001 0 0 0 15.996094 73.140625 A 1.0001 1.0001 0 0 0 16.033203 73.304688 A 1.0001 1.0001 0 0 0 16.041016 73.324219 A 1.0001 1.0001 0 0 0 16.064453 73.390625 A 1.0001 1.0001 0 0 0 16.070312 73.404297 A 1.0001 1.0001 0 0 0 16.101562 73.466797 A 1.0001 1.0001 0 0 0 16.142578 73.535156 A 1.0001 1.0001 0 0 0 16.162109 73.566406 A 1.0001 1.0001 0 0 0 16.1875 73.601562 A 1.0001 1.0001 0 0 0 16.21875 73.642578 A 1.0001 1.0001 0 0 0 16.269531 73.695312 A 1.0001 1.0001 0 0 0 16.287109 73.714844 A 1.0001 1.0001 0 0 0 16.3125 73.738281 A 1.0001 1.0001 0 0 0 16.4375 73.835938 A 1.0001 1.0001 0 0 0 16.515625 73.882812 A 1.0001 1.0001 0 0 0 16.521484 73.886719 A 1.0001 1.0001 0 0 0 16.59375 73.919922 A 1.0001 1.0001 0 0 0 16.615234 73.929688 A 1.0001 1.0001 0 0 0 16.679688 73.953125 A 1.0001 1.0001 0 0 0 16.720703 73.964844 A 1.0001 1.0001 0 0 0 16.751953 73.972656 A 1.0001 1.0001 0 0 0 16.919922 73.998047 A 1.0001 1.0001 0 0 0 17 74.001953 C 17.491934 74.001953 17.898952 74.343665 17.984375 74.828125 C 18.069795 75.312585 17.804064 75.773206 17.341797 75.941406 C 16.87953 76.109706 16.380733 75.92637 16.134766 75.5 A 1.0001607 1.0001607 0 0 0 14.402344 76.5 C 15.126964 77.7551 16.66355 78.316013 18.025391 77.820312 C 19.387231 77.324714 20.206736 75.907669 19.955078 74.480469 C 19.854803 73.911777 19.590188 73.406592 19.222656 73 C 19.589698 72.593206 19.854887 72.089699 19.955078 71.521484 C 20.206736 70.094264 19.387231 68.677311 18.025391 68.181641 C 17.68493 68.057723 17.333214 67.999462 16.986328 68.001953 z M 1.5 70 C 0.66899518 70 0 70.668995 0 71.5 C 0 72.331005 0.66899518 73 1.5 73 L 3.5 73 C 4.3310048 73 5 72.331005 5 71.5 C 5 70.668995 4.3310048 70 3.5 70 L 1.5 70 z M 9 72 L 9 74 L 12 74 L 12 72 L 9 72 z M 25 73 C 25.564129 73 26 73.43587 26 74 C 26 74.56413 25.564129 75 25 75 C 24.435871 75 24 74.56413 24 74 C 24 73.43587 24.435871 73 25 73 z M 1.5 77 C 0.669 77 0 77.669 0 78.5 C 0 79.331 0.669 80 1.5 80 C 2.331 80 3 79.331 3 78.5 C 3 77.669 2.331 77 1.5 77 z M 18.033203 80.988281 A 1.0001 1.0001 0 0 0 17.142578 81.486328 L 14.142578 86.486328 A 1.0001 1.0001 0 0 0 15 88 L 18 88 L 18 89 A 1.0001 1.0001 0 1 0 20 89 L 20 87 A 1.0001 1.0001 0 0 0 19 86 L 16.767578 86 L 18.857422 82.515625 A 1.0001 1.0001 0 0 0 18.033203 80.988281 z M 25 81 C 23.35499 81 22 82.355 22 84 C 22 84.768995 22.303687 85.466552 22.787109 86 C 22.304287 86.533316 22 87.231542 22 88 C 22 89.645 23.35499 91 25 91 C 26.64501 91 28 89.645 28 88 C 28 87.231542 27.695713 86.533316 27.212891 86 C 27.696313 85.466552 28 84.768995 28 84 C 28 82.355 26.64501 81 25 81 z M 25 83 C 25.564129 83 26 83.4359 26 84 C 26 84.5642 25.564129 85 25 85 C 24.435871 85 24 84.5642 24 84 C 24 83.4359 24.435871 83 25 83 z M 1.5 84 C 0.66899518 84 0 84.668995 0 85.5 C 0 86.331005 0.66899518 87 1.5 87 L 3.5 87 C 4.3310048 87 5 86.331005 5 85.5 C 5 84.668995 4.3310048 84 3.5 84 L 1.5 84 z M 9 86 L 9 88 L 12 88 L 12 86 L 9 86 z M 25 87 C 25.564129 87 26 87.4359 26 88 C 26 88.5642 25.564129 89 25 89 C 24.435871 89 24 88.5642 24 88 C 24 87.4359 24.435871 87 25 87 z M 1.5 91 C 0.669 91 0 91.669 0 92.5 C 0 93.331 0.669 94 1.5 94 C 2.331 94 3 93.331 3 92.5 C 3 91.669 2.331 91 1.5 91 z M 17.947266 94.982422 A 1.0001 1.0001 0 0 0 17.683594 95.037109 C 17.683594 95.037109 16.700104 95.372197 15.792969 96.279297 C 14.885834 97.186097 14 98.736326 14 100.98633 A 1.0001 1.0001 0 0 0 14.021484 101.20117 C 14.135372 102.74565 15.42866 103.98633 17 103.98633 C 18.64501 103.98633 20 102.63133 20 100.98633 C 20 99.341226 18.64501 97.986328 17 97.986328 C 16.984666 97.986328 16.970361 97.99 16.955078 97.990234 C 17.03908 97.889241 17.122032 97.778363 17.207031 97.693359 C 17.799896 97.100459 18.316406 96.935547 18.316406 96.935547 A 1.0001 1.0001 0 0 0 18.046875 94.982422 A 1.0001 1.0001 0 0 0 17.947266 94.982422 z M 25 95 C 23.355297 95 22 96.3553 22 98 L 22 101 C 22 102.6447 23.355297 104 25 104 C 26.644703 104 28 102.6447 28 101 L 28 98 C 28 96.3553 26.644703 95 25 95 z M 25 97 C 25.571297 97 26 97.4287 26 98 L 26 101 C 26 101.5713 25.571297 102 25 102 C 24.428703 102 24 101.5713 24 101 L 24 98 C 24 97.4287 24.428703 97 25 97 z M 1.5 98 C 0.66899518 98 0 98.668995 0 99.5 C 0 100.331 0.66899518 101 1.5 101 L 3.5 101 C 4.3310048 101 5 100.331 5 99.5 C 5 98.668995 4.3310048 98 3.5 98 L 1.5 98 z M 17 99.986328 C 17.564129 99.986328 18 100.42213 18 100.98633 C 18 101.55043 17.564129 101.98633 17 101.98633 C 16.435871 101.98633 16 101.55043 16 100.98633 C 16 100.42213 16.435871 99.986328 17 99.986328 z M 9 100 L 9 102 L 12 102 L 12 100 L 9 100 z M 1.5 105 C 0.669 105 0 105.669 0 106.5 C 0 107.331 0.669 108 1.5 108 C 2.331 108 3 107.331 3 106.5 C 3 105.669 2.331 105 1.5 105 z M 24 108.75 C 22.5 108.75 21 110.0556 21 112 A 1.0001 1.0001 0 1 0 23 112 C 23 110.9445 23.5 110.75 24 110.75 C 24.5 110.75 25 110.9445 25 112 C 25 112.5916 24.641069 113.15608 23.808594 113.86328 C 22.976118 114.57048 21.747004 115.31506 20.451172 116.16406 A 1.0001 1.0001 0 0 0 21 118 L 26 118 A 1.0001 1.0001 0 1 0 26 116 L 24.214844 116 C 24.498598 115.7934 24.845909 115.60562 25.103516 115.38672 C 26.133676 114.51162 27 113.4085 27 112 C 27 110.0556 25.5 108.75 24 108.75 z M 14 109 A 1.0001 1.0001 0 1 0 14 111 L 17.382812 111 L 14.105469 117.55273 A 1.0001181 1.0001181 0 0 0 15.894531 118.44727 L 19.894531 110.44727 A 1.0001 1.0001 0 0 0 19 109 L 14 109 z M 1.5 112 C 0.66899518 112 0 112.669 0 113.5 C 0 114.331 0.66899518 115 1.5 115 L 3.5 115 C 4.3310048 115 5 114.331 5 113.5 C 5 112.669 4.3310048 112 3.5 112 L 1.5 112 z M 9 114 L 9 116 L 12 116 L 12 114 L 9 114 z M 1.5 119 C 0.669 119 0 119.669 0 120.5 C 0 121.331 0.669 122 1.5 122 C 2.331 122 3 121.331 3 120.5 C 3 119.669 2.331 119 1.5 119 z "
- transform="translate(0,924.3622)"
- id="rect4527" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bus_vu_empty.svg b/editor/icons/source/icon_bus_vu_empty.svg
deleted file mode 100644
index 0755a2695b..0000000000
--- a/editor/icons/source/icon_bus_vu_empty.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="128"
- viewBox="0 0 16 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_vu_empty.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bus_vu_empty.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959"
- inkscape:collect="always">
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="0"
- id="stop957" />
- <stop
- id="stop955"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="1"
- id="stop953" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959"
- id="linearGradient951"
- x1="8"
- y1="2"
- x2="8"
- y2="126"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568543"
- inkscape:cx="37.883117"
- inkscape:cy="58.698878"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <path
- style="fill:url(#linearGradient951);fill-opacity:1;stroke:none;stroke-width:1.28571427;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 2 C 2.4459952 2 2 2.4459952 2 3 C 2 3.5540048 2.4459952 4 3 4 L 13 4 C 13.554005 4 14 3.5540048 14 3 C 14 2.4459952 13.554005 2 13 2 L 3 2 z M 3 5 C 2.4459952 5 2 5.4459952 2 6 C 2 6.5540048 2.4459952 7 3 7 L 13 7 C 13.554005 7 14 6.5540048 14 6 C 14 5.4459952 13.554005 5 13 5 L 3 5 z M 3 8 C 2.4459952 8 2 8.4459952 2 9 C 2 9.5540048 2.4459952 10 3 10 L 13 10 C 13.554005 10 14 9.5540048 14 9 C 14 8.4459952 13.554005 8 13 8 L 3 8 z M 3 11 C 2.4459952 11 2 11.445995 2 12 C 2 12.554005 2.4459952 13 3 13 L 13 13 C 13.554005 13 14 12.554005 14 12 C 14 11.445995 13.554005 11 13 11 L 3 11 z M 3 14 C 2.4459952 14 2 14.445995 2 15 C 2 15.554005 2.4459952 16 3 16 L 13 16 C 13.554005 16 14 15.554005 14 15 C 14 14.445995 13.554005 14 13 14 L 3 14 z M 3 17 C 2.4459952 17 2 17.445995 2 18 C 2 18.554005 2.4459952 19 3 19 L 13 19 C 13.554005 19 14 18.554005 14 18 C 14 17.445995 13.554005 17 13 17 L 3 17 z M 3 20 C 2.4459952 20 2 20.445995 2 21 C 2 21.554005 2.4459952 22 3 22 L 13 22 C 13.554005 22 14 21.554005 14 21 C 14 20.445995 13.554005 20 13 20 L 3 20 z M 3 23 C 2.4459952 23 2 23.445995 2 24 C 2 24.554005 2.4459952 25 3 25 L 13 25 C 13.554005 25 14 24.554005 14 24 C 14 23.445995 13.554005 23 13 23 L 3 23 z M 3 26 C 2.4459952 26 2 26.445995 2 27 C 2 27.554005 2.4459952 28 3 28 L 13 28 C 13.554005 28 14 27.554005 14 27 C 14 26.445995 13.554005 26 13 26 L 3 26 z M 3 31 C 2.4459952 31 2 31.445995 2 32 C 2 32.554005 2.4459952 33 3 33 L 13 33 C 13.554005 33 14 32.554005 14 32 C 14 31.445995 13.554005 31 13 31 L 3 31 z M 3 34 C 2.4459952 34 2 34.445995 2 35 C 2 35.554005 2.4459952 36 3 36 L 13 36 C 13.554005 36 14 35.554005 14 35 C 14 34.445995 13.554005 34 13 34 L 3 34 z M 3 37 C 2.4459952 37 2 37.445995 2 38 C 2 38.554005 2.4459952 39 3 39 L 13 39 C 13.554005 39 14 38.554005 14 38 C 14 37.445995 13.554005 37 13 37 L 3 37 z M 3 40 C 2.4459952 40 2 40.445995 2 41 C 2 41.554005 2.4459952 42 3 42 L 13 42 C 13.554005 42 14 41.554005 14 41 C 14 40.445995 13.554005 40 13 40 L 3 40 z M 3 43 C 2.4459952 43 2 43.445995 2 44 C 2 44.554005 2.4459952 45 3 45 L 13 45 C 13.554005 45 14 44.554005 14 44 C 14 43.445995 13.554005 43 13 43 L 3 43 z M 3 46 C 2.4459952 46 2 46.445995 2 47 C 2 47.554005 2.4459952 48 3 48 L 13 48 C 13.554005 48 14 47.554005 14 47 C 14 46.445995 13.554005 46 13 46 L 3 46 z M 3 49 C 2.4459952 49 2 49.445995 2 50 C 2 50.554005 2.4459952 51 3 51 L 13 51 C 13.554005 51 14 50.554005 14 50 C 14 49.445995 13.554005 49 13 49 L 3 49 z M 3 52 C 2.4459952 52 2 52.445995 2 53 C 2 53.554005 2.4459952 54 3 54 L 13 54 C 13.554005 54 14 53.554005 14 53 C 14 52.445995 13.554005 52 13 52 L 3 52 z M 3 55 C 2.4459952 55 2 55.445995 2 56 C 2 56.554005 2.4459952 57 3 57 L 13 57 C 13.554005 57 14 56.554005 14 56 C 14 55.445995 13.554005 55 13 55 L 3 55 z M 3 58 C 2.4459952 58 2 58.445995 2 59 C 2 59.554005 2.4459952 60 3 60 L 13 60 C 13.554005 60 14 59.554005 14 59 C 14 58.445995 13.554005 58 13 58 L 3 58 z M 3 61 C 2.4459952 61 2 61.445995 2 62 C 2 62.554005 2.4459952 63 3 63 L 13 63 C 13.554005 63 14 62.554005 14 62 C 14 61.445995 13.554005 61 13 61 L 3 61 z M 3 64 C 2.4459952 64 2 64.445995 2 65 C 2 65.554005 2.4459952 66 3 66 L 13 66 C 13.554005 66 14 65.554005 14 65 C 14 64.445995 13.554005 64 13 64 L 3 64 z M 3 67 C 2.4459952 67 2 67.445995 2 68 C 2 68.554005 2.4459952 69 3 69 L 13 69 C 13.554005 69 14 68.554005 14 68 C 14 67.445995 13.554005 67 13 67 L 3 67 z M 3 70 C 2.4459952 70 2 70.445995 2 71 C 2 71.554005 2.4459952 72 3 72 L 13 72 C 13.554005 72 14 71.554005 14 71 C 14 70.445995 13.554005 70 13 70 L 3 70 z M 3 73 C 2.4459952 73 2 73.445995 2 74 C 2 74.554005 2.4459952 75 3 75 L 13 75 C 13.554005 75 14 74.554005 14 74 C 14 73.445995 13.554005 73 13 73 L 3 73 z M 3 76 C 2.4459952 76 2 76.445995 2 77 C 2 77.554005 2.4459952 78 3 78 L 13 78 C 13.554005 78 14 77.554005 14 77 C 14 76.445995 13.554005 76 13 76 L 3 76 z M 3 79 C 2.4459952 79 2 79.445995 2 80 C 2 80.554005 2.4459952 81 3 81 L 13 81 C 13.554005 81 14 80.554005 14 80 C 14 79.445995 13.554005 79 13 79 L 3 79 z M 3 82 C 2.4459952 82 2 82.445995 2 83 C 2 83.554005 2.4459952 84 3 84 L 13 84 C 13.554005 84 14 83.554005 14 83 C 14 82.445995 13.554005 82 13 82 L 3 82 z M 3 85 C 2.4459952 85 2 85.445995 2 86 C 2 86.554005 2.4459952 87 3 87 L 13 87 C 13.554005 87 14 86.554005 14 86 C 14 85.445995 13.554005 85 13 85 L 3 85 z M 3 88 C 2.4459952 88 2 88.445995 2 89 C 2 89.554005 2.4459952 90 3 90 L 13 90 C 13.554005 90 14 89.554005 14 89 C 14 88.445995 13.554005 88 13 88 L 3 88 z M 3 91 C 2.4459952 91 2 91.445995 2 92 C 2 92.554005 2.4459952 93 3 93 L 13 93 C 13.554005 93 14 92.554005 14 92 C 14 91.445995 13.554005 91 13 91 L 3 91 z M 3 94 C 2.4459952 94 2 94.445995 2 95 C 2 95.554005 2.4459952 96 3 96 L 13 96 C 13.554005 96 14 95.554005 14 95 C 14 94.445995 13.554005 94 13 94 L 3 94 z M 3 97 C 2.4459952 97 2 97.445995 2 98 C 2 98.554005 2.4459952 99 3 99 L 13 99 C 13.554005 99 14 98.554005 14 98 C 14 97.445995 13.554005 97 13 97 L 3 97 z M 3 100 C 2.4459952 100 2 100.446 2 101 C 2 101.554 2.4459952 102 3 102 L 13 102 C 13.554005 102 14 101.554 14 101 C 14 100.446 13.554005 100 13 100 L 3 100 z M 3 103 C 2.4459952 103 2 103.446 2 104 C 2 104.554 2.4459952 105 3 105 L 13 105 C 13.554005 105 14 104.554 14 104 C 14 103.446 13.554005 103 13 103 L 3 103 z M 3 106 C 2.4459952 106 2 106.446 2 107 C 2 107.554 2.4459952 108 3 108 L 13 108 C 13.554005 108 14 107.554 14 107 C 14 106.446 13.554005 106 13 106 L 3 106 z M 3 109 C 2.4459952 109 2 109.446 2 110 C 2 110.554 2.4459952 111 3 111 L 13 111 C 13.554005 111 14 110.554 14 110 C 14 109.446 13.554005 109 13 109 L 3 109 z M 3 112 C 2.4459952 112 2 112.446 2 113 C 2 113.554 2.4459952 114 3 114 L 13 114 C 13.554005 114 14 113.554 14 113 C 14 112.446 13.554005 112 13 112 L 3 112 z M 3 115 C 2.4459952 115 2 115.446 2 116 C 2 116.554 2.4459952 117 3 117 L 13 117 C 13.554005 117 14 116.554 14 116 C 14 115.446 13.554005 115 13 115 L 3 115 z M 3 118 C 2.4459952 118 2 118.446 2 119 C 2 119.554 2.4459952 120 3 120 L 13 120 C 13.554005 120 14 119.554 14 119 C 14 118.446 13.554005 118 13 118 L 3 118 z M 3 121 C 2.4459952 121 2 121.446 2 122 C 2 122.554 2.4459952 123 3 123 L 13 123 C 13.554005 123 14 122.554 14 122 C 14 121.446 13.554005 121 13 121 L 3 121 z M 3 124 C 2.4459952 124 2 124.446 2 125 C 2 125.554 2.4459952 126 3 126 L 13 126 C 13.554005 126 14 125.554 14 125 C 14 124.446 13.554005 124 13 124 L 3 124 z "
- transform="translate(0,924.3622)"
- id="rect852" />
- <path
- id="path1006"
- transform="translate(0,924.3622)"
- d="M 3 2 C 2.4459952 2 2 2.4459952 2 3 C 2 3.5540048 2.4459952 4 3 4 L 13 4 C 13.554005 4 14 3.5540048 14 3 C 14 2.4459952 13.554005 2 13 2 L 3 2 z M 3 5 C 2.4459952 5 2 5.4459952 2 6 C 2 6.5540048 2.4459952 7 3 7 L 13 7 C 13.554005 7 14 6.5540048 14 6 C 14 5.4459952 13.554005 5 13 5 L 3 5 z M 3 8 C 2.4459952 8 2 8.4459952 2 9 C 2 9.5540048 2.4459952 10 3 10 L 13 10 C 13.554005 10 14 9.5540048 14 9 C 14 8.4459952 13.554005 8 13 8 L 3 8 z M 3 11 C 2.4459952 11 2 11.445995 2 12 C 2 12.554005 2.4459952 13 3 13 L 13 13 C 13.554005 13 14 12.554005 14 12 C 14 11.445995 13.554005 11 13 11 L 3 11 z M 3 14 C 2.4459952 14 2 14.445995 2 15 C 2 15.554005 2.4459952 16 3 16 L 13 16 C 13.554005 16 14 15.554005 14 15 C 14 14.445995 13.554005 14 13 14 L 3 14 z M 3 17 C 2.4459952 17 2 17.445995 2 18 C 2 18.554005 2.4459952 19 3 19 L 13 19 C 13.554005 19 14 18.554005 14 18 C 14 17.445995 13.554005 17 13 17 L 3 17 z M 3 20 C 2.4459952 20 2 20.445995 2 21 C 2 21.554005 2.4459952 22 3 22 L 13 22 C 13.554005 22 14 21.554005 14 21 C 14 20.445995 13.554005 20 13 20 L 3 20 z M 3 23 C 2.4459952 23 2 23.445995 2 24 C 2 24.554005 2.4459952 25 3 25 L 13 25 C 13.554005 25 14 24.554005 14 24 C 14 23.445995 13.554005 23 13 23 L 3 23 z M 3 26 C 2.4459952 26 2 26.445995 2 27 C 2 27.554005 2.4459952 28 3 28 L 13 28 C 13.554005 28 14 27.554005 14 27 C 14 26.445995 13.554005 26 13 26 L 3 26 z M 3 31 C 2.4459952 31 2 31.445995 2 32 C 2 32.554005 2.4459952 33 3 33 L 13 33 C 13.554005 33 14 32.554005 14 32 C 14 31.445995 13.554005 31 13 31 L 3 31 z M 3 34 C 2.4459952 34 2 34.445995 2 35 C 2 35.554005 2.4459952 36 3 36 L 13 36 C 13.554005 36 14 35.554005 14 35 C 14 34.445995 13.554005 34 13 34 L 3 34 z M 3 37 C 2.4459952 37 2 37.445995 2 38 C 2 38.554005 2.4459952 39 3 39 L 13 39 C 13.554005 39 14 38.554005 14 38 C 14 37.445995 13.554005 37 13 37 L 3 37 z M 3 40 C 2.4459952 40 2 40.445995 2 41 C 2 41.554005 2.4459952 42 3 42 L 13 42 C 13.554005 42 14 41.554005 14 41 C 14 40.445995 13.554005 40 13 40 L 3 40 z M 3 43 C 2.4459952 43 2 43.445995 2 44 C 2 44.554005 2.4459952 45 3 45 L 13 45 C 13.554005 45 14 44.554005 14 44 C 14 43.445995 13.554005 43 13 43 L 3 43 z M 3 46 C 2.4459952 46 2 46.445995 2 47 C 2 47.554005 2.4459952 48 3 48 L 13 48 C 13.554005 48 14 47.554005 14 47 C 14 46.445995 13.554005 46 13 46 L 3 46 z M 3 49 C 2.4459952 49 2 49.445995 2 50 C 2 50.554005 2.4459952 51 3 51 L 13 51 C 13.554005 51 14 50.554005 14 50 C 14 49.445995 13.554005 49 13 49 L 3 49 z M 3 52 C 2.4459952 52 2 52.445995 2 53 C 2 53.554005 2.4459952 54 3 54 L 13 54 C 13.554005 54 14 53.554005 14 53 C 14 52.445995 13.554005 52 13 52 L 3 52 z M 3 55 C 2.4459952 55 2 55.445995 2 56 C 2 56.554005 2.4459952 57 3 57 L 13 57 C 13.554005 57 14 56.554005 14 56 C 14 55.445995 13.554005 55 13 55 L 3 55 z M 3 58 C 2.4459952 58 2 58.445995 2 59 C 2 59.554005 2.4459952 60 3 60 L 13 60 C 13.554005 60 14 59.554005 14 59 C 14 58.445995 13.554005 58 13 58 L 3 58 z M 3 61 C 2.4459952 61 2 61.445995 2 62 C 2 62.554005 2.4459952 63 3 63 L 13 63 C 13.554005 63 14 62.554005 14 62 C 14 61.445995 13.554005 61 13 61 L 3 61 z M 3 64 C 2.4459952 64 2 64.445995 2 65 C 2 65.554005 2.4459952 66 3 66 L 13 66 C 13.554005 66 14 65.554005 14 65 C 14 64.445995 13.554005 64 13 64 L 3 64 z M 3 67 C 2.4459952 67 2 67.445995 2 68 C 2 68.554005 2.4459952 69 3 69 L 13 69 C 13.554005 69 14 68.554005 14 68 C 14 67.445995 13.554005 67 13 67 L 3 67 z M 3 70 C 2.4459952 70 2 70.445995 2 71 C 2 71.554005 2.4459952 72 3 72 L 13 72 C 13.554005 72 14 71.554005 14 71 C 14 70.445995 13.554005 70 13 70 L 3 70 z M 3 73 C 2.4459952 73 2 73.445995 2 74 C 2 74.554005 2.4459952 75 3 75 L 13 75 C 13.554005 75 14 74.554005 14 74 C 14 73.445995 13.554005 73 13 73 L 3 73 z M 3 76 C 2.4459952 76 2 76.445995 2 77 C 2 77.554005 2.4459952 78 3 78 L 13 78 C 13.554005 78 14 77.554005 14 77 C 14 76.445995 13.554005 76 13 76 L 3 76 z M 3 79 C 2.4459952 79 2 79.445995 2 80 C 2 80.554005 2.4459952 81 3 81 L 13 81 C 13.554005 81 14 80.554005 14 80 C 14 79.445995 13.554005 79 13 79 L 3 79 z M 3 82 C 2.4459952 82 2 82.445995 2 83 C 2 83.554005 2.4459952 84 3 84 L 13 84 C 13.554005 84 14 83.554005 14 83 C 14 82.445995 13.554005 82 13 82 L 3 82 z M 3 85 C 2.4459952 85 2 85.445995 2 86 C 2 86.554005 2.4459952 87 3 87 L 13 87 C 13.554005 87 14 86.554005 14 86 C 14 85.445995 13.554005 85 13 85 L 3 85 z M 3 88 C 2.4459952 88 2 88.445995 2 89 C 2 89.554005 2.4459952 90 3 90 L 13 90 C 13.554005 90 14 89.554005 14 89 C 14 88.445995 13.554005 88 13 88 L 3 88 z M 3 91 C 2.4459952 91 2 91.445995 2 92 C 2 92.554005 2.4459952 93 3 93 L 13 93 C 13.554005 93 14 92.554005 14 92 C 14 91.445995 13.554005 91 13 91 L 3 91 z M 3 94 C 2.4459952 94 2 94.445995 2 95 C 2 95.554005 2.4459952 96 3 96 L 13 96 C 13.554005 96 14 95.554005 14 95 C 14 94.445995 13.554005 94 13 94 L 3 94 z M 3 97 C 2.4459952 97 2 97.445995 2 98 C 2 98.554005 2.4459952 99 3 99 L 13 99 C 13.554005 99 14 98.554005 14 98 C 14 97.445995 13.554005 97 13 97 L 3 97 z M 3 100 C 2.4459952 100 2 100.446 2 101 C 2 101.554 2.4459952 102 3 102 L 13 102 C 13.554005 102 14 101.554 14 101 C 14 100.446 13.554005 100 13 100 L 3 100 z M 3 103 C 2.4459952 103 2 103.446 2 104 C 2 104.554 2.4459952 105 3 105 L 13 105 C 13.554005 105 14 104.554 14 104 C 14 103.446 13.554005 103 13 103 L 3 103 z M 3 106 C 2.4459952 106 2 106.446 2 107 C 2 107.554 2.4459952 108 3 108 L 13 108 C 13.554005 108 14 107.554 14 107 C 14 106.446 13.554005 106 13 106 L 3 106 z M 3 109 C 2.4459952 109 2 109.446 2 110 C 2 110.554 2.4459952 111 3 111 L 13 111 C 13.554005 111 14 110.554 14 110 C 14 109.446 13.554005 109 13 109 L 3 109 z M 3 112 C 2.4459952 112 2 112.446 2 113 C 2 113.554 2.4459952 114 3 114 L 13 114 C 13.554005 114 14 113.554 14 113 C 14 112.446 13.554005 112 13 112 L 3 112 z M 3 115 C 2.4459952 115 2 115.446 2 116 C 2 116.554 2.4459952 117 3 117 L 13 117 C 13.554005 117 14 116.554 14 116 C 14 115.446 13.554005 115 13 115 L 3 115 z M 3 118 C 2.4459952 118 2 118.446 2 119 C 2 119.554 2.4459952 120 3 120 L 13 120 C 13.554005 120 14 119.554 14 119 C 14 118.446 13.554005 118 13 118 L 3 118 z M 3 121 C 2.4459952 121 2 121.446 2 122 C 2 122.554 2.4459952 123 3 123 L 13 123 C 13.554005 123 14 122.554 14 122 C 14 121.446 13.554005 121 13 121 L 3 121 z M 3 124 C 2.4459952 124 2 124.446 2 125 C 2 125.554 2.4459952 126 3 126 L 13 126 C 13.554005 126 14 125.554 14 125 C 14 124.446 13.554005 124 13 124 L 3 124 z "
- style="fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:1.28571427;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bus_vu_frozen.svg b/editor/icons/source/icon_bus_vu_frozen.svg
deleted file mode 100644
index 40577a1a77..0000000000
--- a/editor/icons/source/icon_bus_vu_frozen.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="128"
- viewBox="0 0 16 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_vu_empty.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bus_vu_frozen.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959"
- inkscape:collect="always">
- <stop
- style="stop-color:#62aeff;stop-opacity:1"
- offset="0"
- id="stop957" />
- <stop
- id="stop955"
- offset="0.5"
- style="stop-color:#75d1e6;stop-opacity:1" />
- <stop
- style="stop-color:#84ffee;stop-opacity:1"
- offset="1"
- id="stop953" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959"
- id="linearGradient951"
- x1="8"
- y1="2"
- x2="8"
- y2="126"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568543"
- inkscape:cx="14.809902"
- inkscape:cy="65.349668"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <path
- style="fill:url(#linearGradient951);fill-opacity:1;stroke:none;stroke-width:1.28571427;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:0.7"
- d="M 3 2 C 2.4459952 2 2 2.4459952 2 3 C 2 3.5540048 2.4459952 4 3 4 L 13 4 C 13.554005 4 14 3.5540048 14 3 C 14 2.4459952 13.554005 2 13 2 L 3 2 z M 3 5 C 2.4459952 5 2 5.4459952 2 6 C 2 6.5540048 2.4459952 7 3 7 L 13 7 C 13.554005 7 14 6.5540048 14 6 C 14 5.4459952 13.554005 5 13 5 L 3 5 z M 3 8 C 2.4459952 8 2 8.4459952 2 9 C 2 9.5540048 2.4459952 10 3 10 L 13 10 C 13.554005 10 14 9.5540048 14 9 C 14 8.4459952 13.554005 8 13 8 L 3 8 z M 3 11 C 2.4459952 11 2 11.445995 2 12 C 2 12.554005 2.4459952 13 3 13 L 13 13 C 13.554005 13 14 12.554005 14 12 C 14 11.445995 13.554005 11 13 11 L 3 11 z M 3 14 C 2.4459952 14 2 14.445995 2 15 C 2 15.554005 2.4459952 16 3 16 L 13 16 C 13.554005 16 14 15.554005 14 15 C 14 14.445995 13.554005 14 13 14 L 3 14 z M 3 17 C 2.4459952 17 2 17.445995 2 18 C 2 18.554005 2.4459952 19 3 19 L 13 19 C 13.554005 19 14 18.554005 14 18 C 14 17.445995 13.554005 17 13 17 L 3 17 z M 3 20 C 2.4459952 20 2 20.445995 2 21 C 2 21.554005 2.4459952 22 3 22 L 13 22 C 13.554005 22 14 21.554005 14 21 C 14 20.445995 13.554005 20 13 20 L 3 20 z M 3 23 C 2.4459952 23 2 23.445995 2 24 C 2 24.554005 2.4459952 25 3 25 L 13 25 C 13.554005 25 14 24.554005 14 24 C 14 23.445995 13.554005 23 13 23 L 3 23 z M 3 26 C 2.4459952 26 2 26.445995 2 27 C 2 27.554005 2.4459952 28 3 28 L 13 28 C 13.554005 28 14 27.554005 14 27 C 14 26.445995 13.554005 26 13 26 L 3 26 z M 3 31 C 2.4459952 31 2 31.445995 2 32 C 2 32.554005 2.4459952 33 3 33 L 13 33 C 13.554005 33 14 32.554005 14 32 C 14 31.445995 13.554005 31 13 31 L 3 31 z M 3 34 C 2.4459952 34 2 34.445995 2 35 C 2 35.554005 2.4459952 36 3 36 L 13 36 C 13.554005 36 14 35.554005 14 35 C 14 34.445995 13.554005 34 13 34 L 3 34 z M 3 37 C 2.4459952 37 2 37.445995 2 38 C 2 38.554005 2.4459952 39 3 39 L 13 39 C 13.554005 39 14 38.554005 14 38 C 14 37.445995 13.554005 37 13 37 L 3 37 z M 3 40 C 2.4459952 40 2 40.445995 2 41 C 2 41.554005 2.4459952 42 3 42 L 13 42 C 13.554005 42 14 41.554005 14 41 C 14 40.445995 13.554005 40 13 40 L 3 40 z M 3 43 C 2.4459952 43 2 43.445995 2 44 C 2 44.554005 2.4459952 45 3 45 L 13 45 C 13.554005 45 14 44.554005 14 44 C 14 43.445995 13.554005 43 13 43 L 3 43 z M 3 46 C 2.4459952 46 2 46.445995 2 47 C 2 47.554005 2.4459952 48 3 48 L 13 48 C 13.554005 48 14 47.554005 14 47 C 14 46.445995 13.554005 46 13 46 L 3 46 z M 3 49 C 2.4459952 49 2 49.445995 2 50 C 2 50.554005 2.4459952 51 3 51 L 13 51 C 13.554005 51 14 50.554005 14 50 C 14 49.445995 13.554005 49 13 49 L 3 49 z M 3 52 C 2.4459952 52 2 52.445995 2 53 C 2 53.554005 2.4459952 54 3 54 L 13 54 C 13.554005 54 14 53.554005 14 53 C 14 52.445995 13.554005 52 13 52 L 3 52 z M 3 55 C 2.4459952 55 2 55.445995 2 56 C 2 56.554005 2.4459952 57 3 57 L 13 57 C 13.554005 57 14 56.554005 14 56 C 14 55.445995 13.554005 55 13 55 L 3 55 z M 3 58 C 2.4459952 58 2 58.445995 2 59 C 2 59.554005 2.4459952 60 3 60 L 13 60 C 13.554005 60 14 59.554005 14 59 C 14 58.445995 13.554005 58 13 58 L 3 58 z M 3 61 C 2.4459952 61 2 61.445995 2 62 C 2 62.554005 2.4459952 63 3 63 L 13 63 C 13.554005 63 14 62.554005 14 62 C 14 61.445995 13.554005 61 13 61 L 3 61 z M 3 64 C 2.4459952 64 2 64.445995 2 65 C 2 65.554005 2.4459952 66 3 66 L 13 66 C 13.554005 66 14 65.554005 14 65 C 14 64.445995 13.554005 64 13 64 L 3 64 z M 3 67 C 2.4459952 67 2 67.445995 2 68 C 2 68.554005 2.4459952 69 3 69 L 13 69 C 13.554005 69 14 68.554005 14 68 C 14 67.445995 13.554005 67 13 67 L 3 67 z M 3 70 C 2.4459952 70 2 70.445995 2 71 C 2 71.554005 2.4459952 72 3 72 L 13 72 C 13.554005 72 14 71.554005 14 71 C 14 70.445995 13.554005 70 13 70 L 3 70 z M 3 73 C 2.4459952 73 2 73.445995 2 74 C 2 74.554005 2.4459952 75 3 75 L 13 75 C 13.554005 75 14 74.554005 14 74 C 14 73.445995 13.554005 73 13 73 L 3 73 z M 3 76 C 2.4459952 76 2 76.445995 2 77 C 2 77.554005 2.4459952 78 3 78 L 13 78 C 13.554005 78 14 77.554005 14 77 C 14 76.445995 13.554005 76 13 76 L 3 76 z M 3 79 C 2.4459952 79 2 79.445995 2 80 C 2 80.554005 2.4459952 81 3 81 L 13 81 C 13.554005 81 14 80.554005 14 80 C 14 79.445995 13.554005 79 13 79 L 3 79 z M 3 82 C 2.4459952 82 2 82.445995 2 83 C 2 83.554005 2.4459952 84 3 84 L 13 84 C 13.554005 84 14 83.554005 14 83 C 14 82.445995 13.554005 82 13 82 L 3 82 z M 3 85 C 2.4459952 85 2 85.445995 2 86 C 2 86.554005 2.4459952 87 3 87 L 13 87 C 13.554005 87 14 86.554005 14 86 C 14 85.445995 13.554005 85 13 85 L 3 85 z M 3 88 C 2.4459952 88 2 88.445995 2 89 C 2 89.554005 2.4459952 90 3 90 L 13 90 C 13.554005 90 14 89.554005 14 89 C 14 88.445995 13.554005 88 13 88 L 3 88 z M 3 91 C 2.4459952 91 2 91.445995 2 92 C 2 92.554005 2.4459952 93 3 93 L 13 93 C 13.554005 93 14 92.554005 14 92 C 14 91.445995 13.554005 91 13 91 L 3 91 z M 3 94 C 2.4459952 94 2 94.445995 2 95 C 2 95.554005 2.4459952 96 3 96 L 13 96 C 13.554005 96 14 95.554005 14 95 C 14 94.445995 13.554005 94 13 94 L 3 94 z M 3 97 C 2.4459952 97 2 97.445995 2 98 C 2 98.554005 2.4459952 99 3 99 L 13 99 C 13.554005 99 14 98.554005 14 98 C 14 97.445995 13.554005 97 13 97 L 3 97 z M 3 100 C 2.4459952 100 2 100.446 2 101 C 2 101.554 2.4459952 102 3 102 L 13 102 C 13.554005 102 14 101.554 14 101 C 14 100.446 13.554005 100 13 100 L 3 100 z M 3 103 C 2.4459952 103 2 103.446 2 104 C 2 104.554 2.4459952 105 3 105 L 13 105 C 13.554005 105 14 104.554 14 104 C 14 103.446 13.554005 103 13 103 L 3 103 z M 3 106 C 2.4459952 106 2 106.446 2 107 C 2 107.554 2.4459952 108 3 108 L 13 108 C 13.554005 108 14 107.554 14 107 C 14 106.446 13.554005 106 13 106 L 3 106 z M 3 109 C 2.4459952 109 2 109.446 2 110 C 2 110.554 2.4459952 111 3 111 L 13 111 C 13.554005 111 14 110.554 14 110 C 14 109.446 13.554005 109 13 109 L 3 109 z M 3 112 C 2.4459952 112 2 112.446 2 113 C 2 113.554 2.4459952 114 3 114 L 13 114 C 13.554005 114 14 113.554 14 113 C 14 112.446 13.554005 112 13 112 L 3 112 z M 3 115 C 2.4459952 115 2 115.446 2 116 C 2 116.554 2.4459952 117 3 117 L 13 117 C 13.554005 117 14 116.554 14 116 C 14 115.446 13.554005 115 13 115 L 3 115 z M 3 118 C 2.4459952 118 2 118.446 2 119 C 2 119.554 2.4459952 120 3 120 L 13 120 C 13.554005 120 14 119.554 14 119 C 14 118.446 13.554005 118 13 118 L 3 118 z M 3 121 C 2.4459952 121 2 121.446 2 122 C 2 122.554 2.4459952 123 3 123 L 13 123 C 13.554005 123 14 122.554 14 122 C 14 121.446 13.554005 121 13 121 L 3 121 z M 3 124 C 2.4459952 124 2 124.446 2 125 C 2 125.554 2.4459952 126 3 126 L 13 126 C 13.554005 126 14 125.554 14 125 C 14 124.446 13.554005 124 13 124 L 3 124 z "
- id="rect852"
- transform="translate(0,924.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_bus_vu_full.svg b/editor/icons/source/icon_bus_vu_full.svg
deleted file mode 100644
index 7f2fd22560..0000000000
--- a/editor/icons/source/icon_bus_vu_full.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="128"
- viewBox="0 0 16 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_vu_empty.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_bus_vu_full.svg">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient959"
- inkscape:collect="always">
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="0"
- id="stop957" />
- <stop
- id="stop955"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="1"
- id="stop953" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient959"
- id="linearGradient951"
- x1="8"
- y1="2"
- x2="8"
- y2="126"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568543"
- inkscape:cx="1.8206711"
- inkscape:cy="73.901674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <path
- style="fill:url(#linearGradient951);fill-opacity:1;stroke:none;stroke-width:1.28571427;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 2 C 2.4459952 2 2 2.4459952 2 3 C 2 3.5540048 2.4459952 4 3 4 L 13 4 C 13.554005 4 14 3.5540048 14 3 C 14 2.4459952 13.554005 2 13 2 L 3 2 z M 3 5 C 2.4459952 5 2 5.4459952 2 6 C 2 6.5540048 2.4459952 7 3 7 L 13 7 C 13.554005 7 14 6.5540048 14 6 C 14 5.4459952 13.554005 5 13 5 L 3 5 z M 3 8 C 2.4459952 8 2 8.4459952 2 9 C 2 9.5540048 2.4459952 10 3 10 L 13 10 C 13.554005 10 14 9.5540048 14 9 C 14 8.4459952 13.554005 8 13 8 L 3 8 z M 3 11 C 2.4459952 11 2 11.445995 2 12 C 2 12.554005 2.4459952 13 3 13 L 13 13 C 13.554005 13 14 12.554005 14 12 C 14 11.445995 13.554005 11 13 11 L 3 11 z M 3 14 C 2.4459952 14 2 14.445995 2 15 C 2 15.554005 2.4459952 16 3 16 L 13 16 C 13.554005 16 14 15.554005 14 15 C 14 14.445995 13.554005 14 13 14 L 3 14 z M 3 17 C 2.4459952 17 2 17.445995 2 18 C 2 18.554005 2.4459952 19 3 19 L 13 19 C 13.554005 19 14 18.554005 14 18 C 14 17.445995 13.554005 17 13 17 L 3 17 z M 3 20 C 2.4459952 20 2 20.445995 2 21 C 2 21.554005 2.4459952 22 3 22 L 13 22 C 13.554005 22 14 21.554005 14 21 C 14 20.445995 13.554005 20 13 20 L 3 20 z M 3 23 C 2.4459952 23 2 23.445995 2 24 C 2 24.554005 2.4459952 25 3 25 L 13 25 C 13.554005 25 14 24.554005 14 24 C 14 23.445995 13.554005 23 13 23 L 3 23 z M 3 26 C 2.4459952 26 2 26.445995 2 27 C 2 27.554005 2.4459952 28 3 28 L 13 28 C 13.554005 28 14 27.554005 14 27 C 14 26.445995 13.554005 26 13 26 L 3 26 z M 3 31 C 2.4459952 31 2 31.445995 2 32 C 2 32.554005 2.4459952 33 3 33 L 13 33 C 13.554005 33 14 32.554005 14 32 C 14 31.445995 13.554005 31 13 31 L 3 31 z M 3 34 C 2.4459952 34 2 34.445995 2 35 C 2 35.554005 2.4459952 36 3 36 L 13 36 C 13.554005 36 14 35.554005 14 35 C 14 34.445995 13.554005 34 13 34 L 3 34 z M 3 37 C 2.4459952 37 2 37.445995 2 38 C 2 38.554005 2.4459952 39 3 39 L 13 39 C 13.554005 39 14 38.554005 14 38 C 14 37.445995 13.554005 37 13 37 L 3 37 z M 3 40 C 2.4459952 40 2 40.445995 2 41 C 2 41.554005 2.4459952 42 3 42 L 13 42 C 13.554005 42 14 41.554005 14 41 C 14 40.445995 13.554005 40 13 40 L 3 40 z M 3 43 C 2.4459952 43 2 43.445995 2 44 C 2 44.554005 2.4459952 45 3 45 L 13 45 C 13.554005 45 14 44.554005 14 44 C 14 43.445995 13.554005 43 13 43 L 3 43 z M 3 46 C 2.4459952 46 2 46.445995 2 47 C 2 47.554005 2.4459952 48 3 48 L 13 48 C 13.554005 48 14 47.554005 14 47 C 14 46.445995 13.554005 46 13 46 L 3 46 z M 3 49 C 2.4459952 49 2 49.445995 2 50 C 2 50.554005 2.4459952 51 3 51 L 13 51 C 13.554005 51 14 50.554005 14 50 C 14 49.445995 13.554005 49 13 49 L 3 49 z M 3 52 C 2.4459952 52 2 52.445995 2 53 C 2 53.554005 2.4459952 54 3 54 L 13 54 C 13.554005 54 14 53.554005 14 53 C 14 52.445995 13.554005 52 13 52 L 3 52 z M 3 55 C 2.4459952 55 2 55.445995 2 56 C 2 56.554005 2.4459952 57 3 57 L 13 57 C 13.554005 57 14 56.554005 14 56 C 14 55.445995 13.554005 55 13 55 L 3 55 z M 3 58 C 2.4459952 58 2 58.445995 2 59 C 2 59.554005 2.4459952 60 3 60 L 13 60 C 13.554005 60 14 59.554005 14 59 C 14 58.445995 13.554005 58 13 58 L 3 58 z M 3 61 C 2.4459952 61 2 61.445995 2 62 C 2 62.554005 2.4459952 63 3 63 L 13 63 C 13.554005 63 14 62.554005 14 62 C 14 61.445995 13.554005 61 13 61 L 3 61 z M 3 64 C 2.4459952 64 2 64.445995 2 65 C 2 65.554005 2.4459952 66 3 66 L 13 66 C 13.554005 66 14 65.554005 14 65 C 14 64.445995 13.554005 64 13 64 L 3 64 z M 3 67 C 2.4459952 67 2 67.445995 2 68 C 2 68.554005 2.4459952 69 3 69 L 13 69 C 13.554005 69 14 68.554005 14 68 C 14 67.445995 13.554005 67 13 67 L 3 67 z M 3 70 C 2.4459952 70 2 70.445995 2 71 C 2 71.554005 2.4459952 72 3 72 L 13 72 C 13.554005 72 14 71.554005 14 71 C 14 70.445995 13.554005 70 13 70 L 3 70 z M 3 73 C 2.4459952 73 2 73.445995 2 74 C 2 74.554005 2.4459952 75 3 75 L 13 75 C 13.554005 75 14 74.554005 14 74 C 14 73.445995 13.554005 73 13 73 L 3 73 z M 3 76 C 2.4459952 76 2 76.445995 2 77 C 2 77.554005 2.4459952 78 3 78 L 13 78 C 13.554005 78 14 77.554005 14 77 C 14 76.445995 13.554005 76 13 76 L 3 76 z M 3 79 C 2.4459952 79 2 79.445995 2 80 C 2 80.554005 2.4459952 81 3 81 L 13 81 C 13.554005 81 14 80.554005 14 80 C 14 79.445995 13.554005 79 13 79 L 3 79 z M 3 82 C 2.4459952 82 2 82.445995 2 83 C 2 83.554005 2.4459952 84 3 84 L 13 84 C 13.554005 84 14 83.554005 14 83 C 14 82.445995 13.554005 82 13 82 L 3 82 z M 3 85 C 2.4459952 85 2 85.445995 2 86 C 2 86.554005 2.4459952 87 3 87 L 13 87 C 13.554005 87 14 86.554005 14 86 C 14 85.445995 13.554005 85 13 85 L 3 85 z M 3 88 C 2.4459952 88 2 88.445995 2 89 C 2 89.554005 2.4459952 90 3 90 L 13 90 C 13.554005 90 14 89.554005 14 89 C 14 88.445995 13.554005 88 13 88 L 3 88 z M 3 91 C 2.4459952 91 2 91.445995 2 92 C 2 92.554005 2.4459952 93 3 93 L 13 93 C 13.554005 93 14 92.554005 14 92 C 14 91.445995 13.554005 91 13 91 L 3 91 z M 3 94 C 2.4459952 94 2 94.445995 2 95 C 2 95.554005 2.4459952 96 3 96 L 13 96 C 13.554005 96 14 95.554005 14 95 C 14 94.445995 13.554005 94 13 94 L 3 94 z M 3 97 C 2.4459952 97 2 97.445995 2 98 C 2 98.554005 2.4459952 99 3 99 L 13 99 C 13.554005 99 14 98.554005 14 98 C 14 97.445995 13.554005 97 13 97 L 3 97 z M 3 100 C 2.4459952 100 2 100.446 2 101 C 2 101.554 2.4459952 102 3 102 L 13 102 C 13.554005 102 14 101.554 14 101 C 14 100.446 13.554005 100 13 100 L 3 100 z M 3 103 C 2.4459952 103 2 103.446 2 104 C 2 104.554 2.4459952 105 3 105 L 13 105 C 13.554005 105 14 104.554 14 104 C 14 103.446 13.554005 103 13 103 L 3 103 z M 3 106 C 2.4459952 106 2 106.446 2 107 C 2 107.554 2.4459952 108 3 108 L 13 108 C 13.554005 108 14 107.554 14 107 C 14 106.446 13.554005 106 13 106 L 3 106 z M 3 109 C 2.4459952 109 2 109.446 2 110 C 2 110.554 2.4459952 111 3 111 L 13 111 C 13.554005 111 14 110.554 14 110 C 14 109.446 13.554005 109 13 109 L 3 109 z M 3 112 C 2.4459952 112 2 112.446 2 113 C 2 113.554 2.4459952 114 3 114 L 13 114 C 13.554005 114 14 113.554 14 113 C 14 112.446 13.554005 112 13 112 L 3 112 z M 3 115 C 2.4459952 115 2 115.446 2 116 C 2 116.554 2.4459952 117 3 117 L 13 117 C 13.554005 117 14 116.554 14 116 C 14 115.446 13.554005 115 13 115 L 3 115 z M 3 118 C 2.4459952 118 2 118.446 2 119 C 2 119.554 2.4459952 120 3 120 L 13 120 C 13.554005 120 14 119.554 14 119 C 14 118.446 13.554005 118 13 118 L 3 118 z M 3 121 C 2.4459952 121 2 121.446 2 122 C 2 122.554 2.4459952 123 3 123 L 13 123 C 13.554005 123 14 122.554 14 122 C 14 121.446 13.554005 121 13 121 L 3 121 z M 3 124 C 2.4459952 124 2 124.446 2 125 C 2 125.554 2.4459952 126 3 126 L 13 126 C 13.554005 126 14 125.554 14 125 C 14 124.446 13.554005 124 13 124 L 3 124 z "
- transform="translate(0,924.3622)"
- id="rect852" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_button.svg b/editor/icons/source/icon_button.svg
deleted file mode 100644
index f095b169ca..0000000000
--- a/editor/icons/source/icon_button.svg
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.0492367"
- inkscape:cy="8.5595615"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect829"
- width="8"
- height="4.0000172"
- x="4"
- y="1045.3622"
- ry="1.5" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:1.92153788;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect825"
- width="12"
- height="2"
- x="2"
- y="1048.3622"
- ry="0" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect827"
- width="8"
- height="2"
- x="4"
- y="1047.3622"
- ry="0" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1040.3622 3,2 3,-2"
- id="path831"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1037.3622 v 5"
- id="path833"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_button_group.svg b/editor/icons/source/icon_button_group.svg
deleted file mode 100644
index d1433634df..0000000000
--- a/editor/icons/source/icon_button_group.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button_group.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_button_group.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.59901"
- inkscape:cy="8.8192036"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 4 1 C 3.446 1 3 1.446 3 2 L 3 14 C 3 14.554 3.446 15 4 15 L 12 15 C 12.554 15 13 14.554 13 14 L 13 2 C 13 1.446 12.554 1 12 1 L 4 1 z M 5 2 L 7 2 C 7.554 2 8 2.446 8 3 C 8 3.554 7.554 4 7 4 L 5 4 C 4.446 4 4 3.554 4 3 C 4 2.446 4.446 2 5 2 z M 11 2 C 11.552285 2 12 2.4477153 12 3 C 12 3.5522847 11.552285 4 11 4 C 10.447715 4 10 3.5522847 10 3 C 10 2.4477153 10.447715 2 11 2 z M 6 6 A 2 2 0 0 1 8 8 A 2 2 0 0 1 6 10 A 2 2 0 0 1 4 8 A 2 2 0 0 1 6 6 z M 11 6 C 11.552285 6 12 6.4477153 12 7 C 12 7.5522847 11.552285 8 11 8 C 10.447715 8 10 7.5522847 10 7 C 10 6.4477153 10.447715 6 11 6 z M 11 10 C 11.552285 10 12 10.447715 12 11 C 12 11.552285 11.552285 12 11 12 C 10.447715 12 10 11.552285 10 11 C 10 10.447715 10.447715 10 11 10 z M 4 12 L 5 12 L 5 14 L 4 14 L 4 12 z M 6 12 L 7 12 L 7 14 L 6 14 L 6 12 z M 8 12 L 9 12 L 9 14 L 8 14 L 8 12 z "
- transform="translate(0,1036.3622)"
- id="rect4500" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_camera.svg b/editor/icons/source/icon_camera.svg
deleted file mode 100644
index 55d4aa698d..0000000000
--- a/editor/icons/source/icon_camera.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_camera.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_camera.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254832"
- inkscape:cx="9.4597381"
- inkscape:cy="7.3949222"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4144"
- width="10"
- height="5.0000172"
- x="1"
- y="1042.3622" />
- <rect
- y="1040.3622"
- x="3"
- height="9.0000172"
- width="6"
- id="rect4146"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4148"
- cx="3"
- cy="1042.3622"
- r="2" />
- <circle
- r="2"
- cy="1047.3622"
- cx="3"
- id="circle4150"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4152"
- cx="9"
- cy="1042.3622"
- r="2" />
- <circle
- r="2"
- cy="1047.3622"
- cx="9"
- id="circle4154"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 12,7 0,3 3,1 0,-5 z"
- transform="translate(0,1036.3622)"
- id="rect4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_camera_2d.svg b/editor/icons/source/icon_camera_2d.svg
deleted file mode 100644
index 1be8c0f984..0000000000
--- a/editor/icons/source/icon_camera_2d.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_camera.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_camera_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254832"
- inkscape:cx="5.924204"
- inkscape:cy="7.4391164"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4144"
- width="10"
- height="5.0000172"
- x="1"
- y="1042.3622" />
- <rect
- y="1040.3622"
- x="3"
- height="9.0000172"
- width="6"
- id="rect4146"
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4148"
- cx="3"
- cy="1042.3622"
- r="2" />
- <circle
- r="2"
- cy="1047.3622"
- cx="3"
- id="circle4150"
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4152"
- cx="9"
- cy="1042.3622"
- r="2" />
- <circle
- r="2"
- cy="1047.3622"
- cx="9"
- id="circle4154"
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 12,7 0,3 3,1 0,-5 z"
- transform="translate(0,1036.3622)"
- id="rect4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_canvas_item.svg b/editor/icons/source/icon_canvas_item.svg
deleted file mode 100644
index d15a9a71b7..0000000000
--- a/editor/icons/source/icon_canvas_item.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_canvas_item.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="-0.0099577907"
- inkscape:cy="13.312585"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- sodipodi:nodetypes="cscsccccsssc"
- inkscape:connector-curvature="0"
- id="path4146"
- d="m 2.920797,1046.3957 c -0.2637264,0.3 -0.4203983,0.7296 -0.4203983,1.2383 0,1.6277 -3.13814186,-0.1781 -0.337569,2.6703 0.8838207,0.899 2.6543881,0.6701 3.538224,-0.2288 0.8838352,-0.899 0.8838163,-2.3565 0,-3.2554 -1.1002211,-1.1191 -2.200058,-1.0845 -2.7802567,-0.4244 z m 2.3801743,-1.6103 2.4004918,2.4416 6.8013899,-6.9177 c 0.662863,-0.6742 0.662863,-1.7673 0,-2.4415 -0.662877,-0.6741 -1.737613,-0.6741 -2.400491,0 z"
- style="fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_canvas_item_material.svg b/editor/icons/source/icon_canvas_item_material.svg
deleted file mode 100644
index ce8fd4b7de..0000000000
--- a/editor/icons/source/icon_canvas_item_material.svg
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_material.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_canvas_item_material.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4168">
- <ellipse
- style="opacity:1;fill:#ffffff;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4170"
- cx="16.5"
- cy="1036.3622"
- rx="11.8125"
- ry="10.499999" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="5.4471982"
- inkscape:cy="10.694354"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4168)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777777,353.454)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_canvas_item_shader.svg b/editor/icons/source/icon_canvas_item_shader.svg
deleted file mode 100644
index 6d1d7e6bb1..0000000000
--- a/editor/icons/source/icon_canvas_item_shader.svg
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_shader.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_canvas_item_shader.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4148">
- <path
- sodipodi:nodetypes="cscsccccsssc"
- inkscape:connector-curvature="0"
- id="path4150"
- d="m 7.9288448,1039.4124 c -0.4450383,0.45 -0.7094221,1.0944 -0.7094221,1.8575 0,2.4415 -5.2956144,-0.2672 -0.5696477,4.0054 1.4914475,1.3485 4.47928,1.0052 5.970753,-0.3432 1.491472,-1.3485 1.49144,-3.5347 0,-4.8831 -1.856623,-1.6786 -3.7125978,-1.6267 -4.6916832,-0.6366 z m 4.0165442,-2.4154 4.05083,3.6624 11.477345,-10.3766 c 1.118582,-1.0113 1.118582,-2.6509 0,-3.6622 -1.118605,-1.0112 -2.932222,-1.0112 -4.050828,0 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="1.2934357"
- inkscape:cy="8.7995586"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4148)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777777,353.454)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_canvas_item_shader_graph.svg b/editor/icons/source/icon_canvas_item_shader_graph.svg
deleted file mode 100644
index 84575ad388..0000000000
--- a/editor/icons/source/icon_canvas_item_shader_graph.svg
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_shader_graph.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_canvas_item_shader_graph.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="-2.8222537"
- inkscape:cy="15.541098"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4196)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777777,353.454)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- <ellipse
- r="2"
- style="opacity:1;fill:#6e6e6e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="ellipse4152"
- cx="3"
- cy="1039.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_canvas_layer.svg b/editor/icons/source/icon_canvas_layer.svg
deleted file mode 100644
index 794d832eea..0000000000
--- a/editor/icons/source/icon_canvas_layer.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_canvas_layer.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-2.2677599"
- inkscape:cy="10.08915"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 L 1 9 L 2 9 L 2 3 A 1.0000174 1.0000174 0 0 1 3 2 L 9 2 L 9 1 L 3 1 z M 13.302734 1 C 12.868331 1 12.433001 1.1688094 12.101562 1.5058594 L 5.3007812 8.4238281 L 7.7011719 10.865234 L 14.501953 3.9472656 C 15.164816 3.2730656 15.164816 2.1800594 14.501953 1.5058594 C 14.170515 1.1688094 13.737138 1 13.302734 1 z M 14 7 L 14 13 A 1.0000174 1.0000174 0 0 1 13 14 L 7 14 L 7 15 L 13 15 A 2 2 0 0 0 15 13 L 15 7 L 14 7 z M 4.1152344 9.578125 C 3.6302227 9.5294 3.2100212 9.7031531 2.9199219 10.033203 C 2.6561955 10.333203 2.5 10.762784 2.5 11.271484 C 2.5 12.899184 -0.63846349 11.093006 2.1621094 13.941406 C 3.0459301 14.840406 4.817336 14.611791 5.7011719 13.712891 C 6.5850071 12.813891 6.5849882 11.355931 5.7011719 10.457031 C 5.1510613 9.8974813 4.6002461 9.62685 4.1152344 9.578125 z "
- transform="translate(0,1036.3622)"
- id="path4146" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_canvas_modulate.svg b/editor/icons/source/icon_canvas_modulate.svg
deleted file mode 100644
index 8f8bd55f82..0000000000
--- a/editor/icons/source/icon_canvas_modulate.svg
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_modulate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_canvas_modulate.svg">
- <defs
- id="defs4">
- <clipPath
- id="clipPath4253"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4199"
- clipPathUnits="userSpaceOnUse">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- id="path4201"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4392">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- id="path4394"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath4196"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4198"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="10.091501"
- inkscape:cy="9.4358129"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#a5b7f1;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 1,1037.3622 0,14 14,0 0,-14 z m 2,2 10,0 0,10 -10,0 z"
- id="rect4280"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path4183"
- d="m 12,1048.3622 -5,0 5,-5 z"
- style="fill:#70bfff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:#ff7070;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 4,1040.3622 5,0 -5,5 z"
- id="path4185"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="ccccccc"
- inkscape:connector-curvature="0"
- id="path4187"
- d="m 4,1048.3622 0,-3 5,-5 3,0 0,3 -5,5 z"
- style="fill:#7aff70;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_capsule_mesh.svg b/editor/icons/source/icon_capsule_mesh.svg
deleted file mode 100644
index 38975b3d25..0000000000
--- a/editor/icons/source/icon_capsule_mesh.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_capsule_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.821682"
- inkscape:cy="9.8571693"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:none;stroke:#ffd684;stroke-width:1.93995905;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4266"
- width="8"
- height="11.999983"
- x="4"
- y="1038.3622"
- ry="4" />
- <path
- style="fill:none;stroke:#ffd684;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1044.3622 c 2.7376816,1.306 5.3946358,1.3618 8,0"
- id="path4268"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#ffd684;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 8,1038.3622 v 12"
- id="path4270"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_capsule_shape.svg b/editor/icons/source/icon_capsule_shape.svg
deleted file mode 100644
index dcc6e8c00f..0000000000
--- a/editor/icons/source/icon_capsule_shape.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_capsule_shape.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_capsule_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="11.868879"
- inkscape:cx="-0.54664689"
- inkscape:zoom="11.313708"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <rect
- style="opacity:1;fill:#68b6ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4140"
- width="6"
- height="8.0000172"
- x="5"
- y="1040.3622" />
- <circle
- r="3"
- cy="1040.3622"
- cx="8"
- id="circle4142"
- style="fill:#68b6ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <circle
- style="fill:#68b6ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="circle4144"
- cx="8"
- cy="1048.3622"
- r="3" />
- <circle
- r="1.0000174"
- cy="1039.3622"
- cx="7"
- id="circle4146"
- style="fill:#a2d2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_capsule_shape_2d.svg b/editor/icons/source/icon_capsule_shape_2d.svg
deleted file mode 100644
index 13c6648368..0000000000
--- a/editor/icons/source/icon_capsule_shape_2d.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_capsule_shape_2d.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_capsule_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="10.749987"
- inkscape:cx="2.8752365"
- inkscape:zoom="31.999999"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:#68b6ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 4 4 0 0 0 4 5 L 4 11 A 4 4 0 0 0 8 15 A 4 4 0 0 0 12 11 L 12 5 A 4 4 0 0 0 8 1 z M 8 3 A 2.0000174 2.0000174 0 0 1 10 5 L 10 11 A 2.0000174 2.0000174 0 0 1 8 13 A 2.0000174 2.0000174 0 0 1 6 11 L 6 5 A 2.0000174 2.0000174 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4135" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_center_container.svg b/editor/icons/source/icon_center_container.svg
deleted file mode 100644
index 31262f8494..0000000000
--- a/editor/icons/source/icon_center_container.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_center_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="-1.8665209"
- inkscape:cy="9.391154"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <path
- sodipodi:nodetypes="cccccccccccccccc"
- inkscape:connector-curvature="0"
- id="path4161"
- d="m 6,1040.3622 2,2 2,-2 z m -2,2 0,4 2,-2 z m 8,0 -2,2 2,2 z m -4,4 -2,2 4,0 z"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_check_box.svg b/editor/icons/source/icon_check_box.svg
deleted file mode 100644
index 1068b424bd..0000000000
--- a/editor/icons/source/icon_check_box.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_check_box.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_check_box.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.8008276"
- inkscape:cy="9.8639842"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 2 C 1.8954305 2 1 2.8954305 1 4 L 1 13 C 1 14.104569 1.8954305 15 3 15 L 12 15 C 13.104569 15 14 14.104569 14 13 L 14 8.0722656 L 12 10.072266 L 12 13 L 3 13 L 3 4 L 9.5859375 4 L 11.585938 2 L 3 2 z "
- transform="translate(0,1036.3622)"
- id="rect4143" />
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4.5857864,1045.3622 6,1046.7764 l 1.4142136,1.4142 1.4142135,-1.4142 4.9497479,-4.9497 -1.414214,-1.4142 -4.9497474,4.9497 L 6,1043.948 l -1.4142136,1.4142 z"
- id="rect4163"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="-3.1819807"
- inkscape:transform-center-y="-1.06065" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_check_button.svg b/editor/icons/source/icon_check_button.svg
deleted file mode 100644
index 1dddc7bf43..0000000000
--- a/editor/icons/source/icon_check_button.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_check_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_check_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="5.7571127"
- inkscape:cy="12.193142"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 5 4 A 4 4 0 0 0 1 8 A 4 4 0 0 0 5 12 L 11 12 L 11 10 L 5 10 A 2 2 0 0 1 3 8 A 2 2 0 0 1 5 6 L 11 6 L 11 4 L 5 4 z "
- transform="translate(0,1036.3622)"
- id="rect4143" />
- <circle
- r="4"
- cy="1044.3622"
- cx="11"
- id="circle4147"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_circle_shape_2d.svg b/editor/icons/source/icon_circle_shape_2d.svg
deleted file mode 100644
index 56ac538672..0000000000
--- a/editor/icons/source/icon_circle_shape_2d.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_circle_shape_2d.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="10.942649"
- inkscape:cx="-9.5148271"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:none;fill-opacity:1;stroke:#68b6ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8,1038.3622 a 6,6 0 0 0 -6,6 6,6 0 0 0 6,6 6,6 0 0 0 6,-6 6,6 0 0 0 -6,-6 z"
- id="path4157"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_class_list.svg b/editor/icons/source/icon_class_list.svg
deleted file mode 100644
index 326174e566..0000000000
--- a/editor/icons/source/icon_class_list.svg
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_class_list.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_class_list.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999998"
- inkscape:cx="7.4511363"
- inkscape:cy="9.3546504"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4148"
- width="5"
- height="0.9999826"
- x="1"
- y="1038.3622" />
- <rect
- y="1037.3622"
- x="6"
- height="3.0000174"
- width="6"
- id="rect4150"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1038.3622"
- x="3"
- height="11.000017"
- width="1"
- id="rect4152"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="5"
- height="0.99999976"
- x="4"
- y="1043.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4156"
- width="6"
- height="3.0000174"
- x="9"
- y="1042.3622" />
- <rect
- y="1048.3622"
- x="4"
- height="0.99999976"
- width="5"
- id="rect4158"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1047.3622"
- x="9"
- height="3.0000174"
- width="6"
- id="rect4160"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_close.svg b/editor/icons/source/icon_close.svg
deleted file mode 100644
index 65b71ae860..0000000000
--- a/editor/icons/source/icon_close.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_close.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="3.3969834"
- inkscape:cy="11.678255"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-4"
- inkscape:label="Layer 1"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-736.13242,311.54347)">
- <rect
- y="1043.3622"
- x="1"
- height="1.9999478"
- width="14"
- id="rect4137"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="matrix(0,1,-1,0,0,0)"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4158"
- width="13.999966"
- height="2.0000017"
- x="1037.3622"
- y="-9" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_collapse.svg b/editor/icons/source/icon_collapse.svg
deleted file mode 100644
index a1c55e92de..0000000000
--- a/editor/icons/source/icon_collapse.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_collapse.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="7.0030445"
- inkscape:cy="11.276359"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1040.3622 0,3.9375 6,5.0625 6,-5.0625 0,-3.9375 -12,0 z"
- id="rect4174"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_collision_2d.svg b/editor/icons/source/icon_collision_2d.svg
deleted file mode 100644
index 29905795bd..0000000000
--- a/editor/icons/source/icon_collision_2d.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_collision_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="8.9698127"
- inkscape:cy="10.623768"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#a5b7f2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98823529"
- d="m 14,1050.3622 -12,0 0,-12 12,0 -6,6 z"
- id="path4144"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_collision_polygon.svg b/editor/icons/source/icon_collision_polygon.svg
deleted file mode 100644
index 41f20abb5f..0000000000
--- a/editor/icons/source/icon_collision_polygon.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_collision_polygon.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="3.5635625"
- inkscape:cy="10.561268"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 14,1050.3622 -12,0 0,-12 12,0 -6,6 z"
- id="path4144"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_collision_shape.svg b/editor/icons/source/icon_collision_shape.svg
deleted file mode 100644
index 066e3bc0fd..0000000000
--- a/editor/icons/source/icon_collision_shape.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_collision_shape.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.1912719"
- inkscape:cy="5.0517827"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-7"
- inkscape:label="Layer 1"
- transform="translate(0,1.1802001e-5)"
- style="stroke:#fc9c9c;stroke-opacity:0.99607843">
- <path
- sodipodi:nodetypes="ccccccc"
- inkscape:connector-curvature="0"
- id="path4139"
- d="m 8,1050.3622 -6,-3 0,-6 6,-3 6,3 0,6 z"
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_collision_shape_2d.svg b/editor/icons/source/icon_collision_shape_2d.svg
deleted file mode 100644
index e0a750c946..0000000000
--- a/editor/icons/source/icon_collision_shape_2d.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_collision_shape_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="6.937726"
- inkscape:cy="8.4489005"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#a5b7f3;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.98823529;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 14,1050.3622 -12,0 0,-12 12,0 z"
- id="path4139"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_color.svg b/editor/icons/source/icon_color.svg
deleted file mode 100644
index c46f64b8ed..0000000000
--- a/editor/icons/source/icon_color.svg
+++ /dev/null
@@ -1,268 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_color.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_color.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4218">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 8,1037.3622 a 7.0000172,7.0000172 0 0 0 -7,7 7.0000172,7.0000172 0 0 0 7,7 7.0000172,7.0000172 0 0 0 7,-7 7.0000172,7.0000172 0 0 0 -7,-7 z m 0,3 a 4,4 0 0 1 4,4 4,4 0 0 1 -4,4 4,4 0 0 1 -4,-4 4,4 0 0 1 4,-4 z"
- id="path4221"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999998"
- inkscape:cx="4.4710872"
- inkscape:cy="8.9389443"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4151"
- cx="8"
- cy="1044.3622"
- r="8" />
- <g
- id="g4204"
- clip-path="url(#clipPath4218)">
- <path
- inkscape:transform-center-y="-3.5000174"
- d="m 6.1882667,1037.6007 a 7,7 0 0 1 3.6234668,0 L 8,1044.3622 Z"
- sodipodi:end="4.9741884"
- sodipodi:start="4.4505896"
- sodipodi:ry="7"
- sodipodi:rx="7"
- sodipodi:cy="1044.3622"
- sodipodi:cx="8"
- sodipodi:type="arc"
- id="path4153"
- style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- inkscape:transform-center-x="-2.4749025"
- transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)"
- style="opacity:1;fill:#ff4d00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4157"
- sodipodi:type="arc"
- sodipodi:cx="529.10931"
- sodipodi:cy="900.44415"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:start="4.4505896"
- sodipodi:end="4.9741884"
- d="m 527.29758,893.68267 a 7,7 0 0 1 3.62347,0 l -1.81174,6.76148 z"
- inkscape:transform-center-y="-3.3807758" />
- <path
- inkscape:transform-center-y="-2.4748757"
- d="m 906.63248,508.49139 a 7,7 0 0 1 3.62347,0 l -1.81174,6.76148 z"
- sodipodi:end="4.9741884"
- sodipodi:start="4.4505896"
- sodipodi:ry="7"
- sodipodi:rx="7"
- sodipodi:cy="515.25287"
- sodipodi:cx="908.44421"
- sodipodi:type="arc"
- id="path4159"
- style="opacity:1;fill:#ff9900;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"
- inkscape:transform-center-x="-3.3807755" />
- <path
- inkscape:transform-center-x="-3.500017"
- transform="matrix(0,1,-1,0,0,0)"
- style="opacity:1;fill:#ffca00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4161"
- sodipodi:type="arc"
- sodipodi:cx="1044.3622"
- sodipodi:cy="-8.0000172"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:start="4.4505896"
- sodipodi:end="4.9741884"
- d="m 1042.5504,-14.761498 a 7,7 0 0 1 3.6235,0 l -1.8117,6.7614808 z"
- inkscape:transform-center-y="-1.7222787e-05" />
- <path
- inkscape:transform-center-y="2.4749218"
- d="m 898.63248,-535.87086 a 7,7 0 0 1 3.62347,0 l -1.81174,6.76149 z"
- sodipodi:end="4.9741884"
- sodipodi:start="4.4505896"
- sodipodi:ry="7"
- sodipodi:rx="7"
- sodipodi:cy="-529.10938"
- sodipodi:cx="900.44421"
- sodipodi:type="arc"
- id="path4163"
- style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,0,0)"
- inkscape:transform-center-x="-3.3807914" />
- <path
- inkscape:transform-center-x="-2.4748559"
- transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,0,0)"
- style="opacity:1;fill:#9fff00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4165"
- sodipodi:type="arc"
- sodipodi:cx="515.25293"
- sodipodi:cy="-908.44421"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:start="4.4505896"
- sodipodi:end="4.9741884"
- d="m 513.4412,-915.20569 a 7,7 0 0 1 3.62346,0 l -1.81173,6.76148 z"
- inkscape:transform-center-y="3.3807689" />
- <path
- inkscape:transform-center-y="3.4999826"
- d="m -9.8117504,-1051.1237 a 7,7 0 0 1 3.6234668,0 l -1.8117336,6.7615 z"
- sodipodi:end="4.9741884"
- sodipodi:start="4.4505896"
- sodipodi:ry="7"
- sodipodi:rx="7"
- sodipodi:cy="-1044.3622"
- sodipodi:cx="-8.0000172"
- sodipodi:type="arc"
- id="path4167"
- style="opacity:1;fill:#00ff00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(-1,-1)"
- inkscape:transform-center-x="-1.6750127e-05" />
- <path
- inkscape:transform-center-x="2.4749062"
- transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)"
- style="opacity:1;fill:#00ffaa;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4169"
- sodipodi:type="arc"
- sodipodi:cx="-529.10931"
- sodipodi:cy="-900.44427"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:start="4.4505896"
- sodipodi:end="4.9741884"
- d="m -530.92105,-907.20576 a 7,7 0 0 1 3.62347,0 l -1.81173,6.76149 z"
- inkscape:transform-center-y="3.3808107" />
- <path
- inkscape:transform-center-y="2.4748493"
- d="m -910.25589,-522.01441 a 7,7 0 0 1 3.62347,0 l -1.81173,6.76148 z"
- sodipodi:end="4.9741884"
- sodipodi:start="4.4505896"
- sodipodi:ry="7"
- sodipodi:rx="7"
- sodipodi:cy="-515.25293"
- sodipodi:cx="-908.44415"
- sodipodi:type="arc"
- id="path4171"
- style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)"
- inkscape:transform-center-x="3.3807887" />
- <path
- inkscape:transform-center-x="3.4999821"
- transform="matrix(0,-1,1,0,0,0)"
- style="opacity:1;fill:#9000ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4173"
- sodipodi:type="arc"
- sodipodi:cx="-1044.3622"
- sodipodi:cy="8.0000181"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:start="4.4505896"
- sodipodi:end="4.9741884"
- d="m -1046.1739,1.2385373 a 7,7 0 0 1 3.6235,1e-7 l -1.8118,6.7614807 z"
- inkscape:transform-center-y="-1.7714781e-05" />
- <path
- inkscape:transform-center-y="-2.474887"
- d="m -902.25595,522.34777 a 7,7 0 0 1 3.62347,0 l -1.81173,6.76148 z"
- sodipodi:end="4.9741884"
- sodipodi:start="4.4505896"
- sodipodi:ry="7"
- sodipodi:rx="7"
- sodipodi:cy="529.10925"
- sodipodi:cx="-900.44421"
- sodipodi:type="arc"
- id="path4175"
- style="opacity:1;fill:#ff00ee;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)"
- inkscape:transform-center-x="3.3807952" />
- <path
- inkscape:transform-center-x="2.4748691"
- transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
- style="opacity:1;fill:#ff009a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4177"
- sodipodi:type="arc"
- sodipodi:cx="-515.25287"
- sodipodi:cy="908.44415"
- sodipodi:rx="7"
- sodipodi:ry="7"
- sodipodi:start="4.4505896"
- sodipodi:end="4.9741884"
- d="m -517.0646,901.68267 a 7,7 0 0 1 3.62346,0 l -1.81173,6.76148 z"
- inkscape:transform-center-y="-3.3807953" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_color_pick.svg b/editor/icons/source/icon_color_pick.svg
deleted file mode 100644
index bbb05fc6b6..0000000000
--- a/editor/icons/source/icon_color_pick.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_color_pick.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_color_pick.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="4.443644"
- inkscape:cy="9.1543192"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 13.050781 0.97851562 A 2 2 0 0 0 11.607422 1.5644531 L 10.193359 2.9785156 L 8.7773438 1.5644531 L 7.3632812 2.9785156 L 8.7773438 4.3925781 L 1.7070312 11.464844 L 1.3535156 13.232422 L 1 15 L 2.7675781 14.646484 L 4.5351562 14.292969 L 11.607422 7.2226562 L 13.021484 8.6367188 L 14.435547 7.2226562 L 13.021484 5.8066406 L 14.435547 4.3925781 A 2 2 0 0 0 14.435547 1.5644531 A 2 2 0 0 0 13.050781 0.97851562 z M 9.484375 5.0996094 L 10.900391 6.515625 L 3.828125 13.585938 L 3.1210938 12.878906 L 2.4140625 12.171875 L 9.484375 5.0996094 z "
- transform="translate(0,1036.3622)"
- id="rect4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_color_picker.svg b/editor/icons/source/icon_color_picker.svg
deleted file mode 100644
index 0efd276c50..0000000000
--- a/editor/icons/source/icon_color_picker.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_color_picker.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_color_picker.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="4.7530032"
- inkscape:cy="8.2262415"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 13.050781 0.97851562 A 2 2 0 0 0 11.607422 1.5644531 L 10.193359 2.9785156 L 8.7773438 1.5644531 L 7.3632812 2.9785156 L 8.7773438 4.3925781 L 1.7070312 11.464844 L 1.3535156 13.232422 L 1 15 L 2.7675781 14.646484 L 4.5351562 14.292969 L 11.607422 7.2226562 L 13.021484 8.6367188 L 14.435547 7.2226562 L 13.021484 5.8066406 L 14.435547 4.3925781 A 2 2 0 0 0 14.435547 1.5644531 A 2 2 0 0 0 13.050781 0.97851562 z M 9.484375 5.0996094 L 10.900391 6.515625 L 3.828125 13.585938 L 3.1210938 12.878906 L 2.4140625 12.171875 L 9.484375 5.0996094 z "
- transform="translate(0,1036.3622)"
- id="rect4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_color_picker_button.svg b/editor/icons/source/icon_color_picker_button.svg
deleted file mode 100644
index 4e4fb8cc1b..0000000000
--- a/editor/icons/source/icon_color_picker_button.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_color_picker_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_color_picker_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.1313634"
- inkscape:cy="7.6484362"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-4"
- inkscape:label="Layer 1">
- <path
- id="rect4139"
- transform="translate(0,1036.3622)"
- d="M 13.050781,0.97851562 A 2,2 0 0 0 11.607422,1.5644531 L 10.193359,2.9785156 8.7773438,1.5644531 7.3632812,2.9785156 8.7773438,4.3925781 1.7070312,11.464844 1.3535156,13.232422 1,15 2.7675781,14.646484 4.5351562,14.292969 11.607422,7.2226562 13.021484,8.6367188 14.435547,7.2226562 13.021484,5.8066406 14.435547,4.3925781 a 2,2 0 0 0 0,-2.828125 2,2 0 0 0 -1.384766,-0.58593748 z M 9.484375,5.0996094 10.900391,6.515625 3.828125,13.585938 3.1210938,12.878906 2.4140625,12.171875 9.484375,5.0996094 Z"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 3 L 1 9.34375 L 5.9492188 4.3925781 L 4.5566406 3 L 1 3 z M 15 9.4863281 L 13.486328 11 L 12.556641 11 L 11.607422 10.050781 L 8.6582031 13 L 15 13 L 15 9.4863281 z "
- transform="translate(0,1036.3622)"
- id="rect4139-4" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:0.07843137;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.658203 11 L 8.6582031 13 L 15 13 L 15 11 L 13.486328 11 L 12.556641 11 L 10.658203 11 z "
- transform="translate(0,1036.3622)"
- id="rect4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_color_ramp.svg b/editor/icons/source/icon_color_ramp.svg
deleted file mode 100644
index ff23cdba8d..0000000000
--- a/editor/icons/source/icon_color_ramp.svg
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_color_ramp.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_color_ramp.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4139">
- <stop
- style="stop-color:#afff68;stop-opacity:1"
- offset="0"
- id="stop4141" />
- <stop
- style="stop-color:#ff6b6b;stop-opacity:1"
- offset="1"
- id="stop4143" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4139"
- id="linearGradient4145"
- x1="4"
- y1="14"
- x2="30"
- y2="14"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.51851852,0,0,0.7,-0.55555555,1034.5622)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.5771263"
- inkscape:cy="10.144749"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:url(#linearGradient4145);fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 1,1051.3622 14,0 0,-14 z"
- id="rect4141"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_color_rect.svg b/editor/icons/source/icon_color_rect.svg
deleted file mode 100644
index f352c5552a..0000000000
--- a/editor/icons/source/icon_color_rect.svg
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_color_rect.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.1237522"
- inkscape:cy="7.790137"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82842708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="14"
- x="1"
- y="1037.3622" />
- <rect
- y="1049.3622"
- x="1"
- height="1.9999652"
- width="14"
- id="rect4156"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82842708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82846403;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="14"
- height="2.0000174"
- x="1"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="13"
- height="14"
- width="2"
- id="rect4160"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82842708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="fill:#70bfff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.80000001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 12,1048.3622 H 7.2 l 4.8,-4.8 z"
- id="path4168"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4170"
- d="m 4,1040.3622 h 4.8 l -4.8,4.8 z"
- style="fill:#ff7070;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.80000001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- style="fill:#7aff70;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.80000001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 4,1048.3622 v -3.2 l 4.8,-4.8 H 12 v 3.2 l -4.8,4.8 z"
- id="path4172"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_concave_polygon_shape.svg b/editor/icons/source/icon_concave_polygon_shape.svg
deleted file mode 100644
index b0e0fe63ce..0000000000
--- a/editor/icons/source/icon_concave_polygon_shape.svg
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_concave_polygon_shape.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_concave_polygon_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="9.2011727"
- inkscape:cx="7.5362507"
- inkscape:zoom="22.627417"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8 1 L 1 4 L 1 12 L 8 15 L 15 12 L 15 4 L 8 1 z "
- transform="translate(0,1036.3622)"
- id="path4194" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,1037.3622 -7,3 0,8 7,3 7,-3 0,-8 -7,-3 z"
- id="path4151" />
- <path
- style="fill:#2998ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 3,1041.3622 0,6 5,2 5,-2 0,-6 -5,-2 z"
- id="path4160"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a2d2ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 8,1049.3622 5,-2 -5,-2 -5,2 z"
- id="path4164"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#68b6ff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 8,1045.3622 5,2 0,-6 -5,-2 z"
- id="path4166"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a2d2ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8,1 1,4 3,5 8,3 13,5 15,4 Z"
- transform="translate(0,1036.3622)"
- id="path4149"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:#68b6ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 1,4 1,12 8,15 8,13 3,11 3,5 Z"
- transform="translate(0,1036.3622)"
- id="path4143"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 15,4 -2,1 0,6 -5,2 0,2 7,-3 z"
- transform="translate(0,1036.3622)"
- id="path4145"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_concave_polygon_shape_2d.svg b/editor/icons/source/icon_concave_polygon_shape_2d.svg
deleted file mode 100644
index 624105e5a8..0000000000
--- a/editor/icons/source/icon_concave_polygon_shape_2d.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_concave_polygon_shape_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="9.3658684"
- inkscape:cy="6.9741169"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 14,1050.3622 -12,0 0,-12 6,6 6,-6 z"
- id="path4139"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_cone_twist_joint.svg b/editor/icons/source/icon_cone_twist_joint.svg
deleted file mode 100644
index 4799deb1d5..0000000000
--- a/editor/icons/source/icon_cone_twist_joint.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_cone_twist_joint.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.6908051"
- inkscape:cy="11.390572"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:none;fill-opacity:0.99607843;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 2 L 2 11 A 6 3 0 0 0 5 13.597656 A 6 3 0 0 0 11 13.597656 A 6 3 0 0 0 14 11 L 8 2 z "
- transform="translate(0,1036.3622)"
- id="path4172" />
- <ellipse
- style="opacity:1;fill:none;fill-opacity:0.99607843;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4177"
- cx="8"
- cy="1047.3622"
- rx="6"
- ry="3" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1039.3622 0,8"
- id="path4179"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_confirmation_dialog.svg b/editor/icons/source/icon_confirmation_dialog.svg
deleted file mode 100644
index 52cdf7618e..0000000000
--- a/editor/icons/source/icon_confirmation_dialog.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_confirmation_dialog.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_confirmation_dialog.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.6970479"
- inkscape:cy="7.4854117"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 C 1.89543 1 1 1.8954 1 3 L 1 4 L 15 4 L 15 3 C 15 1.8954 14.104569 1 13 1 L 3 1 z M 12 2 L 13 2 L 13 3 L 12 3 L 12 2 z M 1 5 L 1 13 C 1 14.1046 1.89543 15 3 15 L 13 15 C 14.104569 15 15 14.1046 15 13 L 15 5 L 1 5 z M 7.9863281 6.0019531 C 8.3332141 5.9996687 8.6849305 6.0577156 9.0253906 6.1816406 C 10.387231 6.6772406 11.206736 8.0942844 10.955078 9.5214844 C 10.764025 10.604982 9.9933535 11.46759 9 11.822266 L 9 12 L 8 12 L 7 12 L 7 11.158203 A 1.0001 1.0001 0 0 1 8 10 C 8.4919343 10 8.898952 9.6582281 8.984375 9.1738281 C 9.0697985 8.6893281 8.8040639 8.2287469 8.3417969 8.0605469 C 7.8795298 7.8922469 7.3807328 8.074 7.1347656 8.5 A 1.0001606 1.0001606 0 0 1 5.4023438 7.5 C 5.9458088 6.558525 6.9456702 6.0088063 7.9863281 6.0019531 z M 7 13 L 9 13 L 9 14 L 7 14 L 7 13 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_connect.svg b/editor/icons/source/icon_connect.svg
deleted file mode 100644
index 15c8b481a1..0000000000
--- a/editor/icons/source/icon_connect.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_connect.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="13.864856"
- inkscape:cy="7.2235346"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="fill:#e0e0e0;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
- id="path4266"
- cx="4"
- cy="1048.3622"
- r="2" />
- <path
- id="circle4268"
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc"
- sodipodi:cx="4"
- sodipodi:cy="1048.3622"
- sodipodi:rx="5"
- sodipodi:ry="5"
- sodipodi:start="4.712389"
- sodipodi:end="0"
- sodipodi:arc-type="arc"
- d="M 4.0000001,1043.3622 A 5,5 0 0 1 9,1048.3622"
- sodipodi:open="true" />
- <path
- id="circle4270"
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc"
- sodipodi:cx="4"
- sodipodi:cy="1048.3622"
- sodipodi:rx="9"
- sodipodi:ry="9"
- sodipodi:start="4.712389"
- sodipodi:end="0"
- sodipodi:open="true"
- sodipodi:arc-type="arc"
- d="m 4.0000002,1039.3622 a 9,9 0 0 1 8.9999998,9" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_connection_and_groups.svg b/editor/icons/source/icon_connection_and_groups.svg
deleted file mode 100644
index 5468312b4b..0000000000
--- a/editor/icons/source/icon_connection_and_groups.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_connection_and_groups.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="-3.3764632"
- inkscape:cy="12.578963"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 2 0 L 2 1 L 2 6 L 2 7 L 14 7 L 14 6 L 14 0 L 3 0 L 2 0 z M 3 1 L 13 1 L 13 6 L 3 6 L 3 1 z M 5.5 2 A 1.5 1.5000032 0 0 0 4 3.5 A 1.5 1.5000032 0 0 0 5.5 5 A 1.5 1.5000032 0 0 0 7 3.5 A 1.5 1.5000032 0 0 0 5.5 2 z M 10.5 2 A 1.5 1.5000032 0 0 0 9 3.5 A 1.5 1.5000032 0 0 0 10.5 5 A 1.5 1.5000032 0 0 0 12 3.5 A 1.5 1.5000032 0 0 0 10.5 2 z M 10 9 A 2 1.9999913 0 0 0 8 11 L 8 12 L 2 12 L 2 13 L 8 13 L 8 14 A 2 2 0 0 0 10 16 L 12 16 L 12 15 L 14 15 L 14 14 L 12 14 L 12 11 L 14 11 L 14 10 L 12 10 L 12 9 L 10 9 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_container.svg b/editor/icons/source/icon_container.svg
deleted file mode 100644
index 2d39efafee..0000000000
--- a/editor/icons/source/icon_container.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="5.4993419"
- inkscape:cy="7.9173851"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 C 1.8954305 1 1 1.8954305 1 3 L 3 3 L 3 1 z M 5 1 L 5 3 L 7 3 L 7 1 L 5 1 z M 9 1 L 9 3 L 11 3 L 11 1 L 9 1 z M 13 1 L 13 3 L 15 3 C 15 1.8954305 14.104569 1 13 1 z M 1 5 L 1 7 L 3 7 L 3 5 L 1 5 z M 13 5 L 13 7 L 15 7 L 15 5 L 13 5 z M 1 9 L 1 11 L 3 11 L 3 9 L 1 9 z M 13 9 L 13 11 L 15 11 L 15 9 L 13 9 z M 1 13 C 1 14.104569 1.8954305 15 3 15 L 3 13 L 1 13 z M 5 13 L 5 15 L 7 15 L 7 13 L 5 13 z M 9 13 L 9 15 L 11 15 L 11 13 L 9 13 z M 13 13 L 13 15 C 14.104569 15 15 14.104569 15 13 L 13 13 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control.svg b/editor/icons/source/icon_control.svg
deleted file mode 100644
index 675a9f5c43..0000000000
--- a/editor/icons/source/icon_control.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_control.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="4.1094292"
- inkscape:cy="4.5020156"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 2 A 6 6 0 0 0 2 8 A 6 6 0 0 0 8 14 A 6 6 0 0 0 14 8 A 6 6 0 0 0 8 2 z M 8 4 A 4 4 0 0 1 12 8 A 4 4 0 0 1 8 12 A 4 4 0 0 1 4 8 A 4 4 0 0 1 8 4 z "
- transform="translate(0,1036.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_bottom_center.svg b/editor/icons/source/icon_control_align_bottom_center.svg
deleted file mode 100644
index d6c660bb2d..0000000000
--- a/editor/icons/source/icon_control_align_bottom_center.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_bottom_center.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="4.0000172"
- x="6"
- y="1046.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_bottom_left.svg b/editor/icons/source/icon_control_align_bottom_left.svg
deleted file mode 100644
index 7a234b10ad..0000000000
--- a/editor/icons/source/icon_control_align_bottom_left.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_bottom_right.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="4.0000172"
- x="2"
- y="1046.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_bottom_right.svg b/editor/icons/source/icon_control_align_bottom_right.svg
deleted file mode 100644
index a4ba9a552a..0000000000
--- a/editor/icons/source/icon_control_align_bottom_right.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_bottom_left.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="4.0000172"
- x="10"
- y="1046.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_bottom_wide.svg b/editor/icons/source/icon_control_align_bottom_wide.svg
deleted file mode 100644
index 93352dd3f5..0000000000
--- a/editor/icons/source/icon_control_align_bottom_wide.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_bottom_wide.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="11.086775"
- inkscape:cy="10.073373"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="12.000001"
- height="4.0000172"
- x="1.9999995"
- y="1046.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_center.svg b/editor/icons/source/icon_control_align_center.svg
deleted file mode 100644
index 0c34d13def..0000000000
--- a/editor/icons/source/icon_control_align_center.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_center.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="4.0000172"
- x="6"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_center_left.svg b/editor/icons/source/icon_control_align_center_left.svg
deleted file mode 100644
index ea62c9457d..0000000000
--- a/editor/icons/source/icon_control_align_center_left.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_center_left.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.103241"
- inkscape:cy="11.222422"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="6"
- height="4.0000172"
- x="2"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_center_right.svg b/editor/icons/source/icon_control_align_center_right.svg
deleted file mode 100644
index 3212ce8538..0000000000
--- a/editor/icons/source/icon_control_align_center_right.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_center_right.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.103241"
- inkscape:cy="11.222422"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="6"
- height="4.0000172"
- x="8"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_left_center.svg b/editor/icons/source/icon_control_align_left_center.svg
deleted file mode 100644
index 716b6a2fd0..0000000000
--- a/editor/icons/source/icon_control_align_left_center.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_left_center.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="4.0000172"
- x="2"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_left_wide.svg b/editor/icons/source/icon_control_align_left_wide.svg
deleted file mode 100644
index 7092c78508..0000000000
--- a/editor/icons/source/icon_control_align_left_wide.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_left_wide.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="12.000017"
- x="2"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_right_center.svg b/editor/icons/source/icon_control_align_right_center.svg
deleted file mode 100644
index 7e7e4f2b23..0000000000
--- a/editor/icons/source/icon_control_align_right_center.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_right_center.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.103241"
- inkscape:cy="11.222422"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="4.0000172"
- x="10"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_right_wide.svg b/editor/icons/source/icon_control_align_right_wide.svg
deleted file mode 100644
index ef2d105bd8..0000000000
--- a/editor/icons/source/icon_control_align_right_wide.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_right_wide.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="11.999983"
- x="10"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_top_center.svg b/editor/icons/source/icon_control_align_top_center.svg
deleted file mode 100644
index a5b60846f4..0000000000
--- a/editor/icons/source/icon_control_align_top_center.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_top_center.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="3.999948"
- x="6"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_top_left.svg b/editor/icons/source/icon_control_align_top_left.svg
deleted file mode 100644
index 9f4631cf31..0000000000
--- a/editor/icons/source/icon_control_align_top_left.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_top_left.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="3.999948"
- x="2"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_top_right.svg b/editor/icons/source/icon_control_align_top_right.svg
deleted file mode 100644
index d968ba3d09..0000000000
--- a/editor/icons/source/icon_control_align_top_right.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_top_right.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="4"
- height="3.999948"
- x="10"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_top_wide.svg b/editor/icons/source/icon_control_align_top_wide.svg
deleted file mode 100644
index 886ef60fe0..0000000000
--- a/editor/icons/source/icon_control_align_top_wide.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_top_wide.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="12"
- height="3.999948"
- x="2"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_align_wide.svg b/editor/icons/source/icon_control_align_wide.svg
deleted file mode 100644
index 3f58ed93b6..0000000000
--- a/editor/icons/source/icon_control_align_wide.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_align_wide.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.6179596"
- inkscape:cy="10.824674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="12"
- height="12.000017"
- x="2"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_hcenter_wide.svg b/editor/icons/source/icon_control_hcenter_wide.svg
deleted file mode 100644
index 3aafa0340e..0000000000
--- a/editor/icons/source/icon_control_hcenter_wide.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_hcenter_wide.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.4389915"
- inkscape:cy="4.9357422"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="12"
- height="3.9999824"
- x="2"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_control_vcenter_wide.svg b/editor/icons/source/icon_control_vcenter_wide.svg
deleted file mode 100644
index 96fd44f3c8..0000000000
--- a/editor/icons/source/icon_control_vcenter_wide.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_control_vcenter_wide.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.4389915"
- inkscape:cy="4.9357422"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#919191;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- <rect
- y="1038.3622"
- x="1.9999826"
- height="12.000034"
- width="12.000034"
- id="rect4169"
- style="opacity:1;fill:#474747;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#d6d6d6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="12"
- height="3.9999824"
- x="1038.3622"
- y="-9.9999914"
- transform="matrix(0,1,-1,0,0,0)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_convex_polygon_shape.svg b/editor/icons/source/icon_convex_polygon_shape.svg
deleted file mode 100644
index b867a58f6f..0000000000
--- a/editor/icons/source/icon_convex_polygon_shape.svg
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_convex_polygon_shape.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_convex_polygon_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1-6"
- inkscape:document-units="px"
- inkscape:cy="10.815092"
- inkscape:cx="5.572433"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <g
- inkscape:label="Layer 1"
- id="layer1-6">
- <path
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8 1 L 1 4 L 1 12 L 8 15 L 15 12 L 8 1 z "
- transform="translate(0,1036.3622)"
- id="path4159" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4143"
- d="m 8,1051.3622 -7,-3 0,-8 7,3 z"
- style="fill:#68b6ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8,1 1,4 8,15 15,12 Z"
- transform="translate(0,1036.3622)"
- id="path4145"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_convex_polygon_shape_2d.svg b/editor/icons/source/icon_convex_polygon_shape_2d.svg
deleted file mode 100644
index 3b55df7fba..0000000000
--- a/editor/icons/source/icon_convex_polygon_shape_2d.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_convex_polygon_shape_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="3.9121254"
- inkscape:cy="7.1557164"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 14,1050.3622 -12,0 0,-6 6,-6 6,6 z"
- id="path4139"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_copy_node_path.svg b/editor/icons/source/icon_copy_node_path.svg
deleted file mode 100644
index abc93eb003..0000000000
--- a/editor/icons/source/icon_copy_node_path.svg
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/godotengine/godot/tools/editor/icons/con_script_create.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_copy_node_path.svg">
- <defs
- id="defs4">
- <clipPath
- id="clipPath4253"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="21.189633"
- inkscape:cx="-1.3283302"
- inkscape:cy="8.1746718"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- cy="1048.3622"
- cx="3"
- id="ellipse4234"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- ry="1.0000174"
- rx="1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.78431374;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 2 1 C 1.4477381 1.0001 1.0000552 1.4477 1 2 L 1 14 C 1.0000552 14.5523 1.4477381 14.9999 2 15 L 14 15 C 14.552262 14.9999 14.999945 14.5523 15 14 L 15 6 L 10 1 L 2 1 z M 3 3 L 9 3 L 9 6 C 9 6.554 9.4459905 7 10 7 L 13 7 L 13 13 L 3 13 L 3 3 z M 6 8 L 4 12 L 6 12 L 8 8 L 6 8 z M 10 8 L 8 12 L 10 12 L 12 8 L 10 8 z "
- transform="translate(0,1036.3622)"
- id="rect4178" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_create_new_scene_from.svg b/editor/icons/source/icon_create_new_scene_from.svg
deleted file mode 100644
index 529553bbd3..0000000000
--- a/editor/icons/source/icon_create_new_scene_from.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_create_new_scene_from.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_create_new_scene_from.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-3.7255471"
- inkscape:cy="8.1847434"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1,7 0,6 c 0,1.104569 0.8954305,2 2,2 l 7,0 0,-1 -2,0 0,-4 2,0 0,-2 4,0 0,2 1,0 0,-3 z"
- transform="translate(0,1036.3622)"
- id="rect4136"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cssccccccccccc" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 0.7112932,1040.3831 1,1042.3622 l 2.2438279,-0.3273 -0.8182578,-1.9018 -1.7142769,0.25 z m 3.6933293,-0.5387 0.8182578,1.9018 1.9790524,-0.2887 -0.8182579,-1.9018 -1.9790523,0.2887 z m 3.9581047,-0.5775 0.8182579,1.9018 1.9790519,-0.2887 -0.818257,-1.9018 -1.9790528,0.2887 z m 3.9581048,-0.5774 0.818258,1.9018 1.714277,-0.25 -0.288707,-1.9791 -2.243828,0.3273 z"
- id="rect4138"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="-6.7823301"
- inkscape:transform-center-y="-2" />
- <circle
- r="0"
- cy="1047.3622"
- cx="-14"
- id="ellipse4234"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- sodipodi:nodetypes="ccccccccccccc"
- inkscape:connector-curvature="0"
- id="path4155"
- d="m 13,1049.3622 2,0 0,-2 -2,0 0,-2 -2,0 0,2 -2,0 0,2 2,0 0,2 2,0 z"
- style="fill:#84ffb1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_cube_map.svg b/editor/icons/source/icon_cube_map.svg
deleted file mode 100644
index 4fd86b1233..0000000000
--- a/editor/icons/source/icon_cube_map.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_cube_map.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="11.01934"
- inkscape:cx="19.581751"
- inkscape:zoom="16"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <rect
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="4"
- height="4"
- x="0"
- y="1042.3622" />
- <rect
- y="1042.3622"
- x="4"
- height="4"
- width="4"
- id="rect4167"
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="4"
- height="4"
- x="8"
- y="1042.3622" />
- <rect
- y="1042.3622"
- x="12"
- height="4"
- width="4"
- id="rect4171"
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4173"
- width="4"
- height="4"
- x="4"
- y="1038.3622" />
- <rect
- y="1046.3622"
- x="4"
- height="4"
- width="4"
- id="rect4175"
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_cube_mesh.svg b/editor/icons/source/icon_cube_mesh.svg
deleted file mode 100644
index 1506b3e434..0000000000
--- a/editor/icons/source/icon_cube_mesh.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 14.999999 14.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_cube_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="10.638124"
- inkscape:cy="7.9587327"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- originx="0"
- originy="0"
- spacingx="0.93749994"
- spacingy="0.93749994" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1037.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffd684;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.7735548;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 7.4999994,1038.1958 -6.56249953,3.2804 v 6.772 l 0.49015243,0.246 6.0723471,3.0344 6.5624996,-3.2804 v -6.772 z m 0,1.9831 3.6925976,1.8463 -3.6925977,1.8463 -3.6925967,-1.8463 z m -4.7889446,3.2804 3.9021671,1.9502 v 3.6944 l -3.9021671,-1.952 z m 9.5778892,0 v 3.6926 l -3.9021673,1.952 v -3.6944 z"
- id="path4298"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve.svg b/editor/icons/source/icon_curve.svg
deleted file mode 100644
index a58e08d950..0000000000
--- a/editor/icons/source/icon_curve.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.6124179"
- inkscape:cy="9.8854217"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.32549021;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1038.3622 v 12 h 12"
- id="path4289"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 c 8,0 12,-4 12,-12"
- id="path4285"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_2d.svg b/editor/icons/source/icon_curve_2d.svg
deleted file mode 100644
index 34719e37de..0000000000
--- a/editor/icons/source/icon_curve_2d.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_curve_2d.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="7.8406355"
- inkscape:cx="5.0331401"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 14,1037.3613 c -3.166667,0 -5.1044619,0.854 -6.0820312,2.3203 C 6.9403994,1041.148 7,1042.8613 7,1044.3613 c 0,1.5 -0.059601,2.7867 -0.5820312,3.5703 -0.5224307,0.7837 -1.5846355,1.4297 -4.4179688,1.4297 a 1.0001,1.0001 0 1 0 0,2 c 3.1666667,0 5.1044619,-0.8539 6.0820312,-2.3203 C 9.0596006,1047.5747 9,1045.8613 9,1044.3613 c 0,-1.5 0.059601,-2.7866 0.5820312,-3.5703 0.5224308,-0.7836 1.5846358,-1.4297 4.4179688,-1.4297 a 1.0001,1.0001 0 1 0 0,-2 z"
- id="path4154"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_3d.svg b/editor/icons/source/icon_curve_3d.svg
deleted file mode 100644
index 66034968b2..0000000000
--- a/editor/icons/source/icon_curve_3d.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_3d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.9774722"
- inkscape:cy="7.1326353"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 8.0039062,1037.3555 a 1.0001,1.0001 0 0 0 -0.4511718,0.1113 l -6,3 a 1.0001,1.0001 0 0 0 0,1.7891 l 6,3 a 1.0001,1.0001 0 0 0 0.8945312,0 L 13,1042.9805 l 0,3.7636 -5,2.5 -5.5527344,-2.7773 a 1.0001331,1.0001331 0 0 0 -0.8945312,1.7891 l 6,3 a 1.0001,1.0001 0 0 0 0.8945312,0 l 6.0000004,-3 A 1.0001,1.0001 0 0 0 15,1047.3613 l 0,-6 a 1.0001,1.0001 0 0 0 -1.447266,-0.8945 L 8,1043.2441 l -3.7636719,-1.8828 4.2109375,-2.1054 a 1.0001,1.0001 0 0 0 -0.4433594,-1.9004 z"
- id="path4160"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_close.svg b/editor/icons/source/icon_curve_close.svg
deleted file mode 100644
index 15909df7c8..0000000000
--- a/editor/icons/source/icon_curve_close.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_curve_close.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_close.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.6078006"
- inkscape:cy="10.161674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1049.3622 c -2,-9 -1,-10 8,-8"
- id="path4147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <circle
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4149"
- cx="5"
- cy="1041.3622"
- r="2" />
- <rect
- y="1044.3622"
- x="7.9999828"
- height="2.0000348"
- width="2.0000348"
- id="rect4159"
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4143"
- cx="5"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1041.3622"
- cx="13"
- id="circle4145"
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2.0000348"
- height="2.0000348"
- x="5.9999828"
- y="1046.3622" />
- <rect
- y="1042.3622"
- x="10"
- height="2"
- width="2"
- id="rect4157"
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_constant.svg b/editor/icons/source/icon_curve_constant.svg
deleted file mode 100644
index 6d9a7dc959..0000000000
--- a/editor/icons/source/icon_curve_constant.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_constant.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.5203812"
- inkscape:cy="8.9341513"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1046.3622 8,0"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_create.svg b/editor/icons/source/icon_curve_create.svg
deleted file mode 100644
index 8ab578e9a0..0000000000
--- a/editor/icons/source/icon_curve_create.svg
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_curve_create.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_create.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.3157064"
- inkscape:cy="11.760735"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1049.3622 c -2,-9 -1,-10 8,-8"
- id="path4147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <circle
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4149"
- cx="5"
- cy="1041.3622"
- r="2" />
- <circle
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4143"
- cx="5"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1041.3622"
- cx="13"
- id="circle4145"
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4139"
- width="8"
- height="2"
- x="8"
- y="1047.3622" />
- <rect
- y="-13"
- x="1044.3622"
- height="2"
- width="8.0000172"
- id="rect4141"
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0,1,-1,0,0,0)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_curve.svg b/editor/icons/source/icon_curve_curve.svg
deleted file mode 100644
index e3b6b64a4c..0000000000
--- a/editor/icons/source/icon_curve_curve.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_curve_curve.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_curve.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.0020857"
- inkscape:cy="8.8914924"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1049.3622 c -2,-9 -1,-10 8,-8"
- id="path4147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <circle
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4149"
- cx="5"
- cy="1041.3622"
- r="2" />
- <circle
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4143"
- cx="5"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1041.3622"
- cx="13"
- id="circle4145"
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="fill:#84c2ff;fill-rule:evenodd;stroke:#84c2ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 1,1045.3622 8,-8"
- id="path4263"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_delete.svg b/editor/icons/source/icon_curve_delete.svg
deleted file mode 100644
index f40dd1eeb1..0000000000
--- a/editor/icons/source/icon_curve_delete.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_curve_delete.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_delete.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="6.6676795"
- inkscape:cy="7.1456593"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1049.3622 c -2,-9 -1,-10 8,-8"
- id="path4147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <circle
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4149"
- cx="5"
- cy="1041.3622"
- r="2" />
- <circle
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4143"
- cx="5"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1041.3622"
- cx="13"
- id="circle4145"
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.4644661,1046.2409 2.1213199,2.1213 -2.1213199,2.1213 1.4142136,1.4142 L 12,1049.7764 l 2.12132,2.1213 1.414214,-1.4142 -2.12132,-2.1213 2.12132,-2.1213 -1.414214,-1.4142 -2.12132,2.1213 -2.1213203,-2.1213 -1.4142136,1.4142 z"
- id="rect4139"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_edit.svg b/editor/icons/source/icon_curve_edit.svg
deleted file mode 100644
index f695e96b8c..0000000000
--- a/editor/icons/source/icon_curve_edit.svg
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_curve_edit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_edit.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.062239"
- inkscape:cy="6.4210339"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1049.3622 c -2,-9 -1,-10 8,-8"
- id="path4147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <circle
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4149"
- cx="5"
- cy="1041.3622"
- r="2" />
- <circle
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4143"
- cx="5"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1041.3622"
- cx="13"
- id="circle4145"
- style="opacity:1;fill:#f5f5f5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16,1047.6532 -8,-3.291 3.290998,8 0.947104,-2.8201 1.8836,1.8835 0.941801,-0.9418 -1.8836,-1.8835 z"
- id="rect4163"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_in.svg b/editor/icons/source/icon_curve_in.svg
deleted file mode 100644
index 9dc033aa95..0000000000
--- a/editor/icons/source/icon_curve_in.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_in.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.1532813"
- inkscape:cy="10.367959"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1050.3622 c 5,0 8,-3 8,-8"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_in_out.svg b/editor/icons/source/icon_curve_in_out.svg
deleted file mode 100644
index c68f906423..0000000000
--- a/editor/icons/source/icon_curve_in_out.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_in_out.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.5203812"
- inkscape:cy="8.2466513"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 c 5,0 3,-8 8,-8"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_linear.svg b/editor/icons/source/icon_curve_linear.svg
deleted file mode 100644
index ae7a889a71..0000000000
--- a/editor/icons/source/icon_curve_linear.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_linear.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.1141312"
- inkscape:cy="8.1841513"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 8,-8"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_out.svg b/editor/icons/source/icon_curve_out.svg
deleted file mode 100644
index 080aa755dc..0000000000
--- a/editor/icons/source/icon_curve_out.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_out.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.5203812"
- inkscape:cy="8.2466513"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 c 0,-5 3,-8 8,-8"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_out_in.svg b/editor/icons/source/icon_curve_out_in.svg
deleted file mode 100644
index d2b4d06e5f..0000000000
--- a/editor/icons/source/icon_curve_out_in.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="12"
- height="12"
- viewBox="0 0 12 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_out_in.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.1141312"
- inkscape:cy="8.1841513"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 c 0,-5 8,-3 8,-8"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_curve_texture.svg b/editor/icons/source/icon_curve_texture.svg
deleted file mode 100644
index b1cb456608..0000000000
--- a/editor/icons/source/icon_curve_texture.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_curve_texture.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.2803314"
- inkscape:cy="6.7903753"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2 1 C 1.4477153 1 1 1.4477153 1 2 L 1 11.160156 C 1.3218501 11.050492 1.6599997 10.996335 2 11 C 2.3311746 11 2.665754 10.992098 3 10.986328 L 3 3 L 13 3 L 13 4.1347656 C 13.290071 4.0308316 13.594421 3.9722014 13.902344 3.9609375 C 14.275493 3.9481411 14.647753 4.0051061 15 4.1289062 L 15 2 C 15 1.4477153 14.552285 1 14 1 L 2 1 z M 9 5 L 9 6 L 8 6 L 8 7 L 6 7 L 6 8 L 5 8 L 5 9 L 4 9 L 4 10 L 6 10 L 8 10 L 8.390625 10 C 9.5025431 9.4332285 10.358388 8.54624 11 6.5273438 L 11 6 L 10 6 L 10 5 L 9 5 z M 13.966797 5.9882812 A 1.0001 1.0001 0 0 0 13.039062 6.7265625 C 12.111631 9.9725625 10.403509 11.409059 8.3867188 12.193359 C 6.369928 12.977659 4 13 2 13 A 1.0001 1.0001 0 1 0 2 15 C 4 15 6.6300719 15.023994 9.1132812 14.058594 C 11.596491 13.092894 13.888369 11.029391 14.960938 7.2753906 A 1.0001 1.0001 0 0 0 13.966797 5.9882812 z "
- transform="translate(0,1036.3622)"
- id="rect4156" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_cylinder_mesh.svg b/editor/icons/source/icon_cylinder_mesh.svg
deleted file mode 100644
index 26003365bc..0000000000
--- a/editor/icons/source/icon_cylinder_mesh.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 14.999999 14.999999"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_cylinder_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.8446434"
- inkscape:cy="10.246909"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- originx="0"
- originy="0"
- spacingx="0.93749994"
- spacingy="0.93749994" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1037.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffd684;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 8,1 C 6.2530724,1 4.6719569,1.2264786 3.4414062,1.6367188 2.8261309,1.8418388 2.2942826,2.0885933 1.8515625,2.4375 1.4088424,2.7864067 1,3.3185066 1,4 v 8 c 0,0.681493 0.4088424,1.215546 0.8515625,1.564453 0.4427201,0.348907 0.9745684,0.595768 1.5898437,0.800781 C 4.6719569,14.775474 6.2530724,15 8,15 c 1.7469276,0 3.328042,-0.224526 4.558594,-0.634766 0.615274,-0.205013 1.147122,-0.451874 1.589844,-0.800781 C 14.591158,13.215546 15,12.681493 15,12 V 4 C 15,3.3185066 14.591158,2.7864067 14.148438,2.4375 13.705716,2.0885933 13.173868,1.8418388 12.558594,1.6367188 11.328042,1.2264786 9.7469276,1 8,1 Z m 0,2 c 1.5667809,0 2.986711,0.2214496 3.927734,0.5351562 0.463676,0.1545602 0.801384,0.3374102 0.96875,0.4667969 -0.167523,0.12928 -0.505463,0.3104971 -0.96875,0.4648438 C 10.986711,4.7805036 9.5667809,5 8,5 6.4332191,5 5.0132879,4.7805036 4.0722656,4.4667969 3.6089791,4.3124502 3.271039,4.1312331 3.1035156,4.0019531 3.2708819,3.8725664 3.6085896,3.6897164 4.0722656,3.5351562 5.0132879,3.2214496 6.4332191,3 8,3 Z M 3,6.1875 C 3.1467977,6.2465706 3.2834962,6.3126178 3.4414062,6.3652344 4.6719569,6.7754744 6.2530724,7 8,7 9.7469276,7 11.328042,6.7754744 12.558594,6.3652344 12.716504,6.3126178 12.853202,6.2465706 13,6.1875 V 12 c -0.167523,0.12928 -0.608979,0.31245 -1.072266,0.466797 C 10.986711,12.780504 9.5667809,13 8,13 6.4332191,13 5.0132879,12.780504 4.0722656,12.466797 3.6089791,12.31245 3.1675234,12.12928 3,12 Z"
- transform="matrix(0.93749994,0,0,0.93749994,0,1037.3622)"
- id="path4385"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssscsccsscssscccscccsccsccccsccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_damped_spring_joint_2d.svg b/editor/icons/source/icon_damped_spring_joint_2d.svg
deleted file mode 100644
index bf12810a6c..0000000000
--- a/editor/icons/source/icon_damped_spring_joint_2d.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_damped_spring_joint_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_damped_spring_joint_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999998"
- inkscape:cx="8.6860688"
- inkscape:cy="11.920466"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- sodipodi:nodetypes="cccccccccc"
- inkscape:connector-curvature="0"
- id="path4165"
- transform="translate(0,1036.3622)"
- d="m 4,3 0,2 8,3 0,-2 z m 0,5 0,2 8,3 0,-2 z"
- style="opacity:1;fill:#708cea;fill-opacity:0.98823529;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#a5b7f2;fill-opacity:0.98823529;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 4,3 0,2 8,-2 0,-2 z m 0,5 0,2 8,-2 0,-2 z m 0,5 0,2 8,-2 0,-2 z"
- transform="translate(0,1036.3622)"
- id="rect4144"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_debug.svg b/editor/icons/source/icon_debug.svg
deleted file mode 100644
index 25ca0d6a11..0000000000
--- a/editor/icons/source/icon_debug.svg
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_debug.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.6351189"
- inkscape:cy="7.5931892"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-opacity:1;stroke:#f0f0f0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4548"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="-1042.3622"
- sodipodi:rx="4"
- sodipodi:ry="4"
- sodipodi:start="0.78539816"
- sodipodi:end="2.3561945"
- d="M 10.828427,-1039.5338 A 4,4 0 0 1 8,-1038.3622 a 4,4 0 0 1 -2.8284272,-1.1716"
- transform="scale(1,-1)"
- sodipodi:open="true" />
- <ellipse
- style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97303921"
- id="path4491"
- cx="8"
- cy="1047.3572"
- rx="3.644531"
- ry="1.6348" />
- <circle
- style="fill:#f0f0f0;fill-opacity:1;stroke:#4c4c4c;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373"
- id="path4493"
- cx="8"
- cy="1047.3622"
- r="3.9999993" />
- <path
- style="fill:none;stroke:#f0f0f0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 5,1047.3622 H 2"
- id="path4495"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#f0f0f0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1047.3622 h 4"
- id="path4497"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#f0f0f0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1045.3572 c -2,0 -3,-2 -3,-3"
- id="path4499"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#f0f0f0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1045.3572 c 2,0 3,-2 3,-3"
- id="path4501"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#f0f0f0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1049.3572 c -1,0 -2,1 -3,2"
- id="path4503"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#f0f0f0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1049.3572 c 1,0 2,1 3,2"
- id="path4505"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <circle
- style="fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373"
- id="path4508"
- cx="8"
- cy="1043.3622"
- r="2" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_debug_continue.svg b/editor/icons/source/icon_debug_continue.svg
deleted file mode 100644
index 5d9ccd5a7e..0000000000
--- a/editor/icons/source/icon_debug_continue.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_debug_continue.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="12.141752"
- inkscape:cy="5.0854399"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4352"
- width="6"
- height="2.0000174"
- x="5"
- y="1043.3622" />
- <g
- id="layer1-2"
- inkscape:label="Layer 1"
- transform="matrix(-0.71428934,0,0,0.88888708,2.4999495,121.81991)"
- style="fill:#ff8484;fill-opacity:1">
- <path
- inkscape:transform-center-x="1.1667546"
- sodipodi:type="star"
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-linecap:round;stroke-opacity:1"
- id="path4435"
- sodipodi:sides="3"
- sodipodi:cx="5"
- sodipodi:cy="-1038.3622"
- sodipodi:r1="3.6055512"
- sodipodi:r2="1.8027756"
- sodipodi:arg1="0.52359878"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="false"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 8.122499,-1036.5594 -3.122499,0 -3.122499,0 1.5612495,-2.7042 L 5,-1041.9677 l 1.5612495,2.7041 z"
- inkscape:transform-center-y="-9.6789057e-05"
- transform="matrix(0,1.4411577,1.2942939,0,1331.1125,1030.6564)" />
- </g>
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4137"
- cx="4"
- cy="1044.3622"
- r="3" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_debug_next.svg b/editor/icons/source/icon_debug_next.svg
deleted file mode 100644
index 4dd9bb8c4b..0000000000
--- a/editor/icons/source/icon_debug_next.svg
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_debug_next.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.9909322"
- inkscape:cy="6.93198"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4352"
- width="9.9999828"
- height="2.0000174"
- x="1037.3622"
- y="-5.0000086"
- transform="matrix(0,1,-1,0,0,0)" />
- <g
- id="layer1-2"
- inkscape:label="Layer 1"
- transform="matrix(0,-0.57143854,-0.66666446,0,695.90584,1041.362)"
- style="fill:#ff8484;fill-opacity:1">
- <path
- inkscape:transform-center-x="1.1667546"
- sodipodi:type="star"
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-linecap:round;stroke-opacity:1"
- id="path4435"
- sodipodi:sides="3"
- sodipodi:cx="5"
- sodipodi:cy="-1038.3622"
- sodipodi:r1="3.6055512"
- sodipodi:r2="1.8027756"
- sodipodi:arg1="0.52359878"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="false"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 8.122499,-1036.5594 -3.122499,0 -3.122499,0 1.5612495,-2.7042 L 5,-1041.9677 l 1.5612495,2.7041 z"
- inkscape:transform-center-y="-9.6789057e-05"
- transform="matrix(0,1.4411577,1.2942939,0,1331.1125,1030.6564)" />
- </g>
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4321"
- width="8"
- height="2"
- x="7"
- y="1037.3622" />
- <rect
- y="1041.3622"
- x="9"
- height="2"
- width="6"
- id="rect4323"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4325"
- width="6"
- height="2"
- x="9"
- y="1045.3622" />
- <rect
- y="1049.3622"
- x="7"
- height="2"
- width="8"
- id="rect4327"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_debug_step.svg b/editor/icons/source/icon_debug_step.svg
deleted file mode 100644
index 20d11f8710..0000000000
--- a/editor/icons/source/icon_debug_step.svg
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_debug_step.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="2.5279345"
- inkscape:cy="7.1918803"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4352"
- width="9.9999828"
- height="2.0000174"
- x="1037.3622"
- y="-3.0000174"
- transform="matrix(0,1,-1,0,0,0)" />
- <g
- id="layer1-2"
- inkscape:label="Layer 1"
- transform="matrix(-0.57143854,0,0,0.66666446,-2.0001146,354.45636)"
- style="fill:#ff8484;fill-opacity:1">
- <path
- inkscape:transform-center-x="1.1667546"
- sodipodi:type="star"
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-linecap:round;stroke-opacity:1"
- id="path4435"
- sodipodi:sides="3"
- sodipodi:cx="5"
- sodipodi:cy="-1038.3622"
- sodipodi:r1="3.6055512"
- sodipodi:r2="1.8027756"
- sodipodi:arg1="0.52359878"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="false"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 8.122499,-1036.5594 -3.122499,0 -3.122499,0 1.5612495,-2.7042 L 5,-1041.9677 l 1.5612495,2.7041 z"
- inkscape:transform-center-y="-9.6789057e-05"
- transform="matrix(0,1.4411577,1.2942939,0,1331.1125,1030.6564)" />
- </g>
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4321"
- width="8"
- height="2"
- x="7"
- y="1037.3622" />
- <rect
- y="1041.3622"
- x="9"
- height="2"
- width="6"
- id="rect4323"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4325"
- width="6"
- height="2"
- x="9"
- y="1045.3622" />
- <rect
- y="1049.3622"
- x="7"
- height="2"
- width="8"
- id="rect4327"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- transform="matrix(0,1,-1,0,0,0)"
- y="-4"
- x="1045.3622"
- height="3"
- width="1.9999654"
- id="rect4348"
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dependency_changed.svg b/editor/icons/source/icon_dependency_changed.svg
deleted file mode 100644
index bbcd3f0c0a..0000000000
--- a/editor/icons/source/icon_dependency_changed.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_dependency_changed.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="6.9126947"
- inkscape:cy="8.6287187"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 7 3 L 9 3 L 9 10 L 7 10 L 7 3 z M 7 11 L 9 11 L 9 13 L 7 13 L 7 11 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- <path
- id="path4158"
- transform="translate(0,1036.3622)"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 7 3 L 9 3 L 9 10 L 7 10 L 7 3 z M 7 11 L 9 11 L 9 13 L 7 13 L 7 11 z "
- style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dependency_changed_hl.svg b/editor/icons/source/icon_dependency_changed_hl.svg
deleted file mode 100644
index 54a37695ef..0000000000
--- a/editor/icons/source/icon_dependency_changed_hl.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_dependency_changed_hl.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="7.2709928"
- inkscape:cy="8.1075579"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4137"
- cx="8"
- cy="1044.3622"
- r="7" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4156"
- width="2"
- height="2"
- x="7"
- y="1047.3622" />
- <rect
- y="1039.3622"
- x="7"
- height="6.9999828"
- width="2"
- id="rect4158"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dependency_local_changed.svg b/editor/icons/source/icon_dependency_local_changed.svg
deleted file mode 100644
index 799d69c4e0..0000000000
--- a/editor/icons/source/icon_dependency_local_changed.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_dependency_local_changed.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="43.417341"
- inkscape:cx="3.4517439"
- inkscape:cy="8.2965936"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 4 4 0 0 1 12 7 A 4 4 0 0 1 9 10.867188 L 9 11 L 7 11 L 7 9 L 8 9 A 2 2 0 0 0 10 7 A 2 2 0 0 0 8 5 A 2 2 0 0 0 6 7 L 4 7 A 4 4 0 0 1 8 3 z M 7 12 L 9 12 L 9 14 L 7 14 L 7 12 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- <path
- id="path4156"
- transform="translate(0,1036.3622)"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 4 4 0 0 1 12 7 A 4 4 0 0 1 9 10.867188 L 9 11 L 7 11 L 7 9 L 8 9 A 2 2 0 0 0 10 7 A 2 2 0 0 0 8 5 A 2 2 0 0 0 6 7 L 4 7 A 4 4 0 0 1 8 3 z M 7 12 L 9 12 L 9 14 L 7 14 L 7 12 z "
- style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dependency_local_changed_hl.svg b/editor/icons/source/icon_dependency_local_changed_hl.svg
deleted file mode 100644
index 67c04c312a..0000000000
--- a/editor/icons/source/icon_dependency_local_changed_hl.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_dependency_local_changed_hl.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="43.417341"
- inkscape:cx="3.4517439"
- inkscape:cy="8.2965936"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 4 4 0 0 1 12 7 A 4 4 0 0 1 9 10.867188 L 9 11 L 7 11 L 7 9 L 8 9 A 2 2 0 0 0 10 7 A 2 2 0 0 0 8 5 A 2 2 0 0 0 6 7 L 4 7 A 4 4 0 0 1 8 3 z M 7 12 L 9 12 L 9 14 L 7 14 L 7 12 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dependency_ok.svg b/editor/icons/source/icon_dependency_ok.svg
deleted file mode 100644
index 76d7f54065..0000000000
--- a/editor/icons/source/icon_dependency_ok.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_dependency_ok.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="7.9274941"
- inkscape:cy="10.170392"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 11.181641 4.9296875 L 12.595703 6.34375 L 8.3535156 10.585938 L 7.6464844 11.292969 L 6.9394531 12 L 3.4042969 8.4648438 L 4.8183594 7.0507812 L 6.9394531 9.171875 L 11.181641 4.9296875 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- <path
- id="path4156"
- transform="translate(0,1036.3622)"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 11.181641 4.9296875 L 12.595703 6.34375 L 8.3535156 10.585938 L 7.6464844 11.292969 L 6.9394531 12 L 3.4042969 8.4648438 L 4.8183594 7.0507812 L 6.9394531 9.171875 L 11.181641 4.9296875 z "
- style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dependency_ok_hl.svg b/editor/icons/source/icon_dependency_ok_hl.svg
deleted file mode 100644
index 190458c532..0000000000
--- a/editor/icons/source/icon_dependency_ok_hl.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_dependency_ok_hl.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="3.5953448"
- inkscape:cy="9.4537959"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 11.181641 4.9296875 L 12.595703 6.34375 L 8.3535156 10.585938 L 7.6464844 11.292969 L 6.9394531 12 L 3.4042969 8.4648438 L 4.8183594 7.0507812 L 6.9394531 9.171875 L 11.181641 4.9296875 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_directional_light.svg b/editor/icons/source/icon_directional_light.svg
deleted file mode 100644
index dbec755039..0000000000
--- a/editor/icons/source/icon_directional_light.svg
+++ /dev/null
@@ -1,157 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_directional_light.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="9.4601953"
- inkscape:cy="9.2165454"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8,1040.3622 c -2.209139,0 -4,1.7909 -4,4 0,2.2091 1.790861,4 4,4 2.209139,0 4,-1.7909 4,-4 0,-2.2091 -1.790861,-4 -4,-4 z m 0,6.6667 c -3.5555555,1.7777 -1.7777778,0.8889 0,0 z"
- id="path4154"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssssscc" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4192"
- width="2"
- height="2"
- x="7"
- y="1037.3622"
- inkscape:transform-center-y="-6.0000174" />
- <rect
- inkscape:transform-center-y="-1.74e-05"
- y="-15.000017"
- x="1043.3622"
- height="2"
- width="2"
- id="rect4194"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0,1,-1,0,0,0)"
- inkscape:transform-center-x="-6.0000172" />
- <rect
- inkscape:transform-center-x="-1.72e-05"
- transform="scale(-1,-1)"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4196"
- width="2"
- height="2"
- x="-9.0000172"
- y="-1051.3622"
- inkscape:transform-center-y="5.9999826" />
- <rect
- inkscape:transform-center-y="-1.74e-05"
- y="1.0000174"
- x="-1045.3622"
- height="2"
- width="2"
- id="rect4198"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0,-1,1,0,0,0)"
- inkscape:transform-center-x="5.9999826" />
- <rect
- inkscape:transform-center-y="-4.2426533"
- y="737.13245"
- x="-733.81873"
- height="2"
- width="2"
- id="rect4200"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
- inkscape:transform-center-x="4.2426321" />
- <rect
- inkscape:transform-center-x="-4.2426493"
- transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4202"
- width="2"
- height="2"
- x="743.13245"
- y="725.81873"
- inkscape:transform-center-y="-4.2426534" />
- <rect
- inkscape:transform-center-y="4.242628"
- y="-751.13245"
- x="731.81873"
- height="2"
- width="2"
- id="rect4204"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)"
- inkscape:transform-center-x="-4.2426493" />
- <rect
- inkscape:transform-center-x="4.2426321"
- transform="matrix(-0.70710678,-0.70710678,0.70710678,-0.70710678,0,0)"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4206"
- width="2"
- height="2"
- x="-745.13245"
- y="-739.81873"
- inkscape:transform-center-y="4.242628" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_distraction_free.svg b/editor/icons/source/icon_distraction_free.svg
deleted file mode 100644
index 4ae48b2fb6..0000000000
--- a/editor/icons/source/icon_distraction_free.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_distraction_free.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="10.344519"
- inkscape:cy="8.9631686"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3.7578125 2.34375 L 2.34375 3.7578125 L 5.2929688 6.7070312 L 6.7070312 5.2929688 L 3.7578125 2.34375 z M 12.242188 2.34375 L 9.2929688 5.2929688 L 10.707031 6.7070312 L 13.65625 3.7578125 L 12.242188 2.34375 z M 5.2929688 9.2929688 L 2.34375 12.242188 L 3.7578125 13.65625 L 6.7070312 10.707031 L 5.2929688 9.2929688 z M 10.707031 9.2929688 L 9.2929688 10.707031 L 12.242188 13.65625 L 13.65625 12.242188 L 10.707031 9.2929688 z "
- transform="translate(0,1036.3622)"
- id="rect4137" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1051.3622 0,-5 5,5 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4158"
- d="m 15,1051.3622 0,-5 -5,5 z"
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 15,1037.3622 0,5 -5,-5 z"
- id="path4160"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4162"
- d="m 1,1037.3622 0,5 5,-5 z"
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_duplicate.svg b/editor/icons/source/icon_duplicate.svg
deleted file mode 100644
index b1d5544fc0..0000000000
--- a/editor/icons/source/icon_duplicate.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_duplicate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_duplicate.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.0305878"
- inkscape:cy="8.942001"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4137"
- width="2"
- height="11.000017"
- x="2"
- y="1040.3622" />
- <rect
- y="1049.3622"
- x="3"
- height="2"
- width="9"
- id="rect4139"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <g
- id="layer1-3"
- inkscape:label="Layer 1"
- transform="matrix(0.78571428,0,0,0.78571428,11.428571,223.29192)">
- <g
- transform="translate(0,-1.6949463e-5)"
- inkscape:label="Layer 1"
- id="layer1-8">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m -8.1818177,1036.0895 0,14 11.454546,0 0,-7.6364 -6.3636369,0 0,-6.3636 z m 6.3636364,0 0,5.0909 5.0909096,0 z"
- id="rect4158-2"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- </g>
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dynamic_font.svg b/editor/icons/source/icon_dynamic_font.svg
deleted file mode 100644
index a40c0e3408..0000000000
--- a/editor/icons/source/icon_dynamic_font.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_duplicate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_dynamic_font.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.411248"
- inkscape:cy="8.6761759"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- id="path4246"
- d="m 1,1037.3622 0,2 0,1 1,0 a 1,1 0 0 1 1,-1 l 2,0 0,6 a 1,1 0 0 1 -1,1 l 0,1 1,0 2,0 1,0 0,-1 a 1,1 0 0 1 -1,-1 l 0,-6 2,0 a 1,1 0 0 1 1,1 l 1,0 0,-1 0,-2 -4,0 -2,0 -4,0 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 5 L 4 7 L 4 8 L 5 8 A 1 1 0 0 1 6 7 L 8 7 L 8 13 A 1 1 0 0 1 7 14 L 7 15 L 8 15 L 10 15 L 11 15 L 11 14 A 1 1 0 0 1 10 13 L 10 7 L 12 7 A 1 1 0 0 1 13 8 L 14 8 L 14 7 L 14 5 L 10 5 L 8 5 L 4 5 z "
- id="rect4177"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_dynamic_font_data.svg b/editor/icons/source/icon_dynamic_font_data.svg
deleted file mode 100644
index 9f06172fef..0000000000
--- a/editor/icons/source/icon_dynamic_font_data.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_duplicate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_dynamic_font_data.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.4667889"
- inkscape:cy="8.2902868"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 3 L 1 4 L 2 4 A 1 1 0 0 1 3 3 L 5 3 L 5 9 A 1 1 0 0 1 4 10 L 4 11 L 5 11 L 7 11 L 8 11 L 8 10 A 1 1 0 0 1 7 9 L 7 3 L 9 3 A 1 1 0 0 1 10 4 L 11 4 L 11 3 L 11 1 L 7 1 L 5 1 L 1 1 z M 1 6 L 1 8 L 3 8 L 3 6 L 1 6 z M 1 9 L 1 11 L 3 11 L 3 9 L 1 9 z M 1 12 L 1 14 L 3 14 L 3 12 L 1 12 z M 4 12 L 4 14 L 6 14 L 6 12 L 4 12 z "
- transform="translate(0,1036.3622)"
- id="path4246" />
- <path
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 5 L 4 7 L 4 8 L 5 8 A 1 1 0 0 1 6 7 L 8 7 L 8 13 A 1 1 0 0 1 7 14 L 7 15 L 8 15 L 10 15 L 11 15 L 11 14 A 1 1 0 0 1 10 13 L 10 7 L 12 7 A 1 1 0 0 1 13 8 L 14 8 L 14 7 L 14 5 L 10 5 L 8 5 L 4 5 z "
- id="rect4177"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_edit.svg b/editor/icons/source/icon_edit.svg
deleted file mode 100644
index 6da05a6603..0000000000
--- a/editor/icons/source/icon_edit.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_edit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_edit.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000002"
- inkscape:cx="10.361255"
- inkscape:cy="7.0279565"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1.7071068,1047.8266 1,1051.3622 l 3.5355339,-0.7071 7.7781741,-7.7782 -2.828427,-2.8284 z m 9.1923882,-9.1924 2.828427,2.8285 1.414214,-1.4142 -2.828428,-2.8285 z"
- id="rect4135"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_edit_key.svg b/editor/icons/source/icon_edit_key.svg
deleted file mode 100644
index 46795bef35..0000000000
--- a/editor/icons/source/icon_edit_key.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_edit_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_edit_key.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000002"
- inkscape:cx="7.2649878"
- inkscape:cy="7.6615896"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1.7071068,1047.8266 1,1051.3622 l 3.5355339,-0.7071 7.7781741,-7.7782 -2.828427,-2.8284 z m 9.1923882,-9.1924 2.828427,2.8285 1.414214,-1.4142 -2.828428,-2.8285 z"
- id="rect4135"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- <ellipse
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4135"
- cx="3.5"
- cy="1039.8622"
- rx="2.5"
- ry="2.5000086" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_edit_pivot.svg b/editor/icons/source/icon_edit_pivot.svg
deleted file mode 100644
index 8ae55ad8b7..0000000000
--- a/editor/icons/source/icon_edit_pivot.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_edit_pivot.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_edit_pivot.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="13.221947"
- inkscape:cy="4.9248867"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16,1047.6532 -8,-3.291 3.290998,8 0.947104,-2.8201 1.8836,1.8835 0.941801,-0.9418 -1.8836,-1.8835 z"
- id="rect4163"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 5 L 9 5 L 9 1 L 7 1 z M 1 7 L 1 9 L 5 9 L 5 7 L 1 7 z M 11 7 L 11 7.6132812 L 14.371094 9 L 15 9 L 15 7 L 11 7 z M 7 11 L 7 15 L 9 15 L 9 14.375 L 7.6113281 11 L 7 11 z "
- transform="translate(0,1036.3622)"
- id="rect4158" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_edit_resource.svg b/editor/icons/source/icon_edit_resource.svg
deleted file mode 100644
index 7f6516eb58..0000000000
--- a/editor/icons/source/icon_edit_resource.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_edit_resource.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="63.999997"
- inkscape:cx="2.7141614"
- inkscape:cy="4.341677"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.78431373;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 3.9902344 -0.009765625 A 1.0001 1.0001 0 0 0 3.2929688 1.7070312 L 4.5859375 3 L 1 3 L 1 5 L 4.5859375 5 L 3.2929688 6.2929688 A 1.0001 1.0001 0 1 0 4.7070312 7.7070312 L 7.7070312 4.7070312 A 1.0001 1.0001 0 0 0 7.7070312 3.2929688 L 4.7070312 0.29296875 A 1.0001 1.0001 0 0 0 3.9902344 -0.009765625 z "
- transform="translate(0,1044.3622)"
- id="path814" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_editor_3d_handle.svg b/editor/icons/source/icon_editor_3d_handle.svg
deleted file mode 100644
index 255d1801a9..0000000000
--- a/editor/icons/source/icon_editor_3d_handle.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_editor_3d_handle.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="-3.99911"
- inkscape:cy="7.9772677"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4137"
- cx="8"
- cy="1044.3622"
- r="7" />
- <circle
- r="5.0000172"
- cy="1044.3622"
- cx="8"
- id="circle4156"
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_editor_handle.svg b/editor/icons/source/icon_editor_handle.svg
deleted file mode 100644
index 17ed2a61e7..0000000000
--- a/editor/icons/source/icon_editor_handle.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_editor_handle.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="43.417341"
- inkscape:cx="2.7092551"
- inkscape:cy="4.8390476"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <ellipse
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4137"
- cx="4"
- cy="1048.3622"
- rx="4"
- ry="3.9999914" />
- <ellipse
- cy="1048.3622"
- cx="4"
- id="circle4156"
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- rx="2.8571527"
- ry="2.8571465" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_editor_pivot.svg b/editor/icons/source/icon_editor_pivot.svg
deleted file mode 100644
index 8ce7d48970..0000000000
--- a/editor/icons/source/icon_editor_pivot.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_editor_pivot.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="6.673653"
- inkscape:cy="8.3546727"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#ffffff;fill-opacity:0.70588237;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 6 0 L 6 6 L 0 6 L 0 10 L 6 10 L 6 16 L 10 16 L 10 10 L 16 10 L 16 6 L 10 6 L 10 0 L 6 0 z M 7 7 L 9 7 L 9 9 L 7 9 L 7 7 z "
- transform="translate(0,1036.3622)"
- id="rect4170" />
- <path
- style="fill:#ff8484;fill-opacity:0.58823532;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 7 1 L 7 6 L 9 6 L 9 1 L 7 1 z M 1 7 L 1 9 L 6 9 L 6 7 L 1 7 z M 10 7 L 10 9 L 15 9 L 15 7 L 10 7 z M 7 10 L 7 15 L 9 15 L 9 10 L 7 10 z "
- transform="translate(0,1036.3622)"
- id="rect4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_editor_plugin.svg b/editor/icons/source/icon_editor_plugin.svg
deleted file mode 100644
index b9460de683..0000000000
--- a/editor/icons/source/icon_editor_plugin.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_editor_plugin.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-2.7705057"
- inkscape:cy="8.7644499"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 2,1038.3622 0,8 8,0 0,-8 z"
- id="path4195"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4197"
- cx="13"
- cy="1042.3622"
- r="2" />
- <circle
- r="2"
- cy="1049.3622"
- cx="6"
- id="circle4199"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4201"
- width="2"
- height="2"
- x="5"
- y="1046.3622" />
- <rect
- y="1041.3622"
- x="10"
- height="2"
- width="2"
- id="rect4203"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_environment.svg b/editor/icons/source/icon_environment.svg
deleted file mode 100644
index 96d0f7e29c..0000000000
--- a/editor/icons/source/icon_environment.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_environment.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="4.0727417"
- inkscape:cy="8.9873869"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="fill:none;fill-opacity:1;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path814"
- cx="8"
- cy="1044.3622"
- r="6" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1044.3622 c 4.5932382,1.582 8.398513,1.0627 12,0"
- id="path816"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path820"
- d="m 8,1038.3622 c -3,4 -3,8 0,12"
- style="fill:none;stroke:#e0e0e0;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1038.3622 c 3,4 3,8 0,12"
- id="path822"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_error.svg b/editor/icons/source/icon_error.svg
deleted file mode 100644
index 013f1c7ba9..0000000000
--- a/editor/icons/source/icon_error.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_error.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254832"
- inkscape:cx="0.9455546"
- inkscape:cy="4.9546755"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <rect
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="8"
- height="8"
- x="2.220446e-16"
- y="1044.3622"
- ry="4" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_error_sign.svg b/editor/icons/source/icon_error_sign.svg
deleted file mode 100644
index 01c1dbb4d5..0000000000
--- a/editor/icons/source/icon_error_sign.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="32"
- height="32"
- viewBox="0 0 32 32"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_error_sign.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="10.854335"
- inkscape:cx="-0.43086145"
- inkscape:cy="15.165332"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1020.3622)">
- <path
- style="fill:#ff8484;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 10,1048.3622 12,0 6,-6 0,-12 -6,-6 -12,0 -6,6 0,12 z"
- id="path4156"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4160"
- width="4"
- height="9.0000172"
- x="14"
- y="1028.3622" />
- <rect
- y="1040.3622"
- x="14"
- height="4.0000172"
- width="4"
- id="rect4162"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_event_player.svg b/editor/icons/source/icon_event_player.svg
deleted file mode 100644
index 3f5f7da693..0000000000
--- a/editor/icons/source/icon_event_player.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_rename.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_event_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.654979"
- inkscape:cy="8.3200241"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 15 L 15 15 L 15 1 L 1 1 z M 3 3 L 13 3 L 13 13 L 3 13 L 3 3 z "
- transform="translate(0,1036.3622)"
- id="rect4154" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 5 3 L 5 9 L 7 9 L 7 3 L 5 3 z M 9 3 L 9 9 L 11 9 L 11 3 L 9 3 z "
- transform="translate(0,1036.3622)"
- id="rect4158" />
- <rect
- y="1039.3622"
- x="5"
- height="10.000017"
- width="1"
- id="rect4166"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4168"
- width="1"
- height="10.000017"
- x="9"
- y="1039.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_favorites.svg b/editor/icons/source/icon_favorites.svg
deleted file mode 100644
index 12d4b56897..0000000000
--- a/editor/icons/source/icon_favorites.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_favorites.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_favorites.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="3.3144029"
- inkscape:cy="13.991937"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8.0000004,1038.0862 5.62591,1042.1835 1,1043.2813 l 3.2360991,3.4074 -0.3586608,4.6735 4.1388649,-1.9766 4.1572048,1.9421 -0.395342,-4.6532 3.221834,-3.3932 -4.625909,-1.0978 -2.3740906,-4.0973 z"
- id="path4254"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_file_big.svg b/editor/icons/source/icon_file_big.svg
deleted file mode 100644
index 084247937b..0000000000
--- a/editor/icons/source/icon_file_big.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64"
- height="64"
- viewBox="0 0 64 64"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_new.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_file_big.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="29.157928"
- inkscape:cy="37.490712"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-8"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-988.3622)">
- <g
- id="layer1-8"
- inkscape:label="Layer 1"
- transform="translate(0,-1.6949463e-5)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.58823532;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 14 5 C 11.801312 5 10 6.80131 10 9 L 10 55 C 10 57.1987 11.801312 59 14 59 L 50 59 C 52.198688 59 54 57.1987 54 55 L 54 22 L 53.992188 22 C 53.994308 21.751685 53.912915 21.499015 53.707031 21.292969 L 37.707031 5.2929688 C 37.519176 5.1060418 37.264574 5.003582 37 5.0039062 L 37 5 L 14 5 z M 14 7 L 36 7 L 36 9 L 36 19 C 36 21.1987 37.801349 23 40 23 L 50 23 L 52 23 L 52 55 C 52 56.1253 51.125282 57 50 57 L 14 57 C 12.874718 57 12 56.1253 12 55 L 12 9 C 12 7.87472 12.874718 7 14 7 z "
- transform="translate(0,988.36222)"
- id="rect815" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_file_dialog.svg b/editor/icons/source/icon_file_dialog.svg
deleted file mode 100644
index a3af269bee..0000000000
--- a/editor/icons/source/icon_file_dialog.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_confirmation_dialog.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_file_dialog.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.7929949"
- inkscape:cy="8.3839819"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.89543,1 1,1.8954 1,3 V 4 H 15 V 3 C 15,1.8954 14.104569,1 13,1 Z m 9,1 h 1 V 3 H 12 Z M 1,5 v 8 c 0,1.1046 0.89543,2 2,2 h 10 c 1.104569,0 2,-0.8954 2,-2 V 5 Z m 3,2 h 3 c 1,0 1,2 2,2 h 3 v 4 H 4 Z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssccsssccccccssssccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_file_list.svg b/editor/icons/source/icon_file_list.svg
deleted file mode 100644
index 82dad29aac..0000000000
--- a/editor/icons/source/icon_file_list.svg
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_file_list.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_file_list.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.999999"
- inkscape:cx="9.0213026"
- inkscape:cy="13.513819"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4135"
- width="2"
- height="2.0000174"
- x="2"
- y="1038.3622" />
- <rect
- y="1038.3622"
- x="6"
- height="2.0000174"
- width="8"
- id="rect4159"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1043.3622"
- x="2"
- height="2.0000174"
- width="2"
- id="rect4169"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4171"
- width="8"
- height="2.0000174"
- x="6"
- y="1043.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4173"
- width="2"
- height="2.0000174"
- x="2"
- y="1048.3622" />
- <rect
- y="1048.3622"
- x="6"
- height="2.0000174"
- width="8"
- id="rect4175"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_file_server.svg b/editor/icons/source/icon_file_server.svg
deleted file mode 100644
index 1e1f9b6e42..0000000000
--- a/editor/icons/source/icon_file_server.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_folder.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_file_server.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="9.1396438"
- inkscape:cy="11.33674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#c5c5c5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 8 L 1 11 L 15 11 L 15 8 L 1 8 z M 2 9 L 3 9 L 3 10 L 2 10 L 2 9 z M 4 9 L 5 9 L 5 10 L 4 10 L 4 9 z M 1 12 L 1 15 L 15 15 L 15 12 L 1 12 z M 2 13 L 3 13 L 3 14 L 2 14 L 2 13 z M 4 13 L 5 13 L 5 14 L 4 14 L 4 13 z "
- transform="translate(0,1036.3622)"
- id="rect4160" />
- <rect
- style="opacity:1;fill:#c5c5c5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4173"
- width="6"
- height="4"
- x="5"
- y="1038.3622" />
- <rect
- style="opacity:1;fill:#c5c5c5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4175"
- width="3"
- height="1"
- x="5"
- y="1037.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_file_server_active.svg b/editor/icons/source/icon_file_server_active.svg
deleted file mode 100644
index f01ba578da..0000000000
--- a/editor/icons/source/icon_file_server_active.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_folder.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_file_server_active.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="11.80766"
- inkscape:cy="9.9439864"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 8 L 1 11 L 15 11 L 15 8 L 1 8 z M 2 9 L 3 9 L 3 10 L 2 10 L 2 9 z M 4 9 L 5 9 L 5 10 L 4 10 L 4 9 z M 1 12 L 1 15 L 15 15 L 15 12 L 1 12 z M 2 13 L 3 13 L 3 14 L 2 14 L 2 13 z M 4 13 L 5 13 L 5 14 L 4 14 L 4 13 z "
- transform="translate(0,1036.3622)"
- id="rect4160" />
- <rect
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4173"
- width="6"
- height="4"
- x="5"
- y="1038.3622" />
- <rect
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4175"
- width="3"
- height="1"
- x="5"
- y="1037.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_file_thumbnail.svg b/editor/icons/source/icon_file_thumbnail.svg
deleted file mode 100644
index 48d90dd3c6..0000000000
--- a/editor/icons/source/icon_file_thumbnail.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_folder.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_file_thumbnail.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="13.370672"
- inkscape:cy="8.243673"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4160"
- width="5"
- height="5.0000172"
- x="2"
- y="1045.3622" />
- <rect
- y="1038.3622"
- x="2"
- height="5"
- width="5"
- id="rect4162"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1045.3622"
- x="9"
- height="5.0000172"
- width="5"
- id="rect4164"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4166"
- width="5"
- height="5"
- x="9"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_fixed_material.svg b/editor/icons/source/icon_fixed_material.svg
deleted file mode 100644
index 5be74f490d..0000000000
--- a/editor/icons/source/icon_fixed_material.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_material.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_fixed_material.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="6.3347915"
- inkscape:cy="8.4073248"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- inkscape:connector-curvature="0"
- id="path4202"
- d="m 8,1037.3622 a 7,7.0000001 0 0 0 -7,7 7,7.0000001 0 0 0 7,7 7,7.0000001 0 0 0 7,-7 7,7.0000001 0 0 0 -7,-7 z m -2,2 a 2,2 0 0 1 2,2 2,2 0 0 1 -2,2 2,2 0 0 1 -2,-2 2,2 0 0 1 2,-2 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_fixed_spatial_material.svg b/editor/icons/source/icon_fixed_spatial_material.svg
deleted file mode 100644
index 7ae0f93ffc..0000000000
--- a/editor/icons/source/icon_fixed_spatial_material.svg
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_fixed_spatial_material.svg">
- <defs
- id="defs4">
- <clipPath
- id="clipPath4189"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4191"
- d="m 6.3750001,1025.8622 a 1.6876688,1.5001498 0 0 0 -1.6875,1.5 l 0,18 a 1.6876688,1.5001498 0 0 0 1.6875,1.5 l 10.1217039,0 c -0.747392,-0.8796 -1.304338,-1.8888 -1.562256,-3 l -6.8719479,0 0,-15 16.8749999,0 0,3.3486 a 3.4281247,3.0472216 0 0 1 1.282105,1.1279 c 0.537834,0.828 1.294284,1.677 2.092895,2.5723 l 0,-8.5488 a 1.6876688,1.5001498 0 0 0 -1.6875,-1.5 l -20.2499999,0 z m 11.8124999,4.5 0,1.5 -1.6875,0 0,1.5 -3.375,0 0,1.5 -1.6875,0 0,1.5 -1.6874999,0 0,1.5 3.3749999,0 3.375,0 0.02637,0 c 0.246127,-0.317 0.496441,-0.6239 0.738282,-0.9053 1.145331,-1.3327 2.270672,-2.4711 3.015746,-3.6182 a 3.4281247,3.0472216 0 0 1 1.282105,-1.1279 l 0,-0.3486 -1.6875,0 0,-1.5 -1.6875,0 z m 5.0625,4.5 c -1.948558,3 -5.0625,5.0146 -5.0625,7.5 0,2.4853 2.266559,4.5 5.0625,4.5 2.795941,0 5.0625,-2.0147 5.0625,-4.5 0,-2.4854 -3.113942,-4.5 -5.0625,-7.5 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- </clipPath>
- <clipPath
- id="clipPath4253"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4208">
- <path
- style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 4.6875001,1042.3622 11.8124999,4.5 11.8125,-4.5 0,-12 -11.8125,-4.5 -11.8124999,4.5 z"
- id="path4210"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="11.899872"
- inkscape:cy="11.262807"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4199)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777777,353.454)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_folder.svg b/editor/icons/source/icon_folder.svg
deleted file mode 100644
index ca16a5737f..0000000000
--- a/editor/icons/source/icon_folder.svg
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_folder.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_folder.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="8.0935814"
- inkscape:cy="8.7176878"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2,2 0,1 -1,0 0,2 0,6 0,2 1,0 0,1 12,0 0,-1 1,0 L 15,6 14,6 14,5 9,5 9,3 8,3 8,2 Z"
- transform="translate(0,1036.3622)"
- id="rect4136"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccccc" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4143"
- cx="2"
- cy="1039.3622"
- r="1" />
- <circle
- r="1"
- cy="1049.3622"
- cx="2"
- id="circle4150"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4154"
- cx="14"
- cy="1049.3622"
- r="1" />
- <circle
- r="1"
- cy="1042.3622"
- cx="14"
- id="circle4158"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4162"
- cx="8"
- cy="1039.3622"
- r="1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1040.3622 0,1 1,0 a 1,1 0 0 1 -1,-1 z"
- id="rect4166"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_folder_big.svg b/editor/icons/source/icon_folder_big.svg
deleted file mode 100644
index 818eaa2ba3..0000000000
--- a/editor/icons/source/icon_folder_big.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="64"
- height="64"
- viewBox="0 0 64 64"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_folder_big.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_folder_big.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="27.662311"
- inkscape:cy="41.159533"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-988.3622)">
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4135"
- cx="13"
- cy="1039.3583"
- r="5.0039101" />
- <circle
- r="5.0039101"
- cy="1039.3583"
- cx="50.99609"
- id="circle4137"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- r="5.0039101"
- cy="1005.3622"
- cx="13"
- id="circle4139"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4141"
- cx="51"
- cy="1013.3661"
- r="5.0039101" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4143"
- width="48"
- height="26.000017"
- x="8"
- y="1013.3622" />
- <rect
- y="1008.3622"
- x="13"
- height="36"
- width="38"
- id="rect4145"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4147"
- width="8"
- height="8"
- x="8"
- y="1008.3622" />
- <rect
- y="1005.3622"
- x="8"
- height="2.9999311"
- width="28"
- id="rect4149"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4151"
- cx="31"
- cy="1005.3622"
- r="5.0039101" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4153"
- width="18"
- height="6.9999485"
- x="13"
- y="1000.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 36,1004.3622 0,0.5 a 3.4999914,3.4999914 0 0 1 0.04102,-0.5 l -0.04102,0 z m 0,0.5 0,3.5 3.5,0 a 3.4999914,3.4999914 0 0 1 -3.5,-3.5 z m 3.5,3.5 0.5,0 0,-0.039 a 3.4999914,3.4999914 0 0 1 -0.5,0.039 z"
- id="rect4155"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_font.svg b/editor/icons/source/icon_font.svg
deleted file mode 100644
index 36567fe10c..0000000000
--- a/editor/icons/source/icon_font.svg
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_font.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.223545"
- inkscape:cy="5.7245794"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4212"
- width="14"
- height="2"
- x="1"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="7"
- height="14.000017"
- width="2"
- id="rect4214"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4216"
- width="6"
- height="0.99999976"
- x="5"
- y="1050.3622" />
- <rect
- y="-1.9999998"
- x="1037.3622"
- height="0.99999976"
- width="4"
- id="rect4218"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="matrix(0,1,-1,0,0,0)" />
- <rect
- transform="matrix(0,1,-1,0,0,0)"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4220"
- width="4"
- height="0.99999976"
- x="1037.3622"
- y="-15" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2 3 L 2 5 A 2 2 0 0 1 4 3 L 2 3 z "
- transform="translate(0,1036.3622)"
- id="rect4224" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 12 3 A 2 2 0 0 1 14 5 L 14 3 L 12 3 z "
- transform="translate(0,1036.3622)"
- id="rect4226" />
- <path
- id="path4232"
- d="m 5,1050.3622 a 2,2 0 0 0 2,-2 l 0,2 -2,0 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 11,1050.3622 a 2,2 0 0 1 -2,-2 l 0,2 2,0 z"
- id="path4234" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_forward.svg b/editor/icons/source/icon_forward.svg
deleted file mode 100644
index 392e2bda8e..0000000000
--- a/editor/icons/source/icon_forward.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="16"
- viewBox="0 0 8 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_forward.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="-1.8586853"
- inkscape:cy="8.9717887"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1038.3622 4,6 -4,6"
- id="path814"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_g_d_native_library.svg b/editor/icons/source/icon_g_d_native_library.svg
deleted file mode 100644
index 9eae07c69b..0000000000
--- a/editor/icons/source/icon_g_d_native_library.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_g_d_script.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_g_d_native_library.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.2871559"
- inkscape:cy="8.7634992"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 6.4355469 3.2578125 A 5.0000172 5.0000172 0 0 0 5.7460938 3.5371094 L 3.7578125 2.34375 L 2.34375 3.7578125 L 3.5390625 5.7519531 A 5.0000172 5.0000172 0 0 0 3.2539062 6.4375 L 1 7 L 1 9 L 3.2578125 9.5644531 A 5.0000172 5.0000172 0 0 0 3.5371094 10.251953 L 2.34375 12.242188 L 3.7578125 13.65625 L 5.7519531 12.460938 A 5.0000172 5.0000172 0 0 0 6.4375 12.746094 L 7 15 L 7 9.7304688 A 2.0000174 2.0000174 0 0 1 6 8 A 2.0000174 2.0000174 0 0 1 7 6.2714844 L 7 6 L 8 6 L 12.576172 6 A 5.0000172 5.0000172 0 0 0 12.462891 5.7480469 L 13.65625 3.7578125 L 12.242188 2.34375 L 10.248047 3.5390625 A 5.0000172 5.0000172 0 0 0 9.5625 3.2539062 L 9 1 L 7 1 z "
- transform="translate(0,1036.3622)"
- id="path4176" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1044.3622 v 1 5 1 h 5 c 0.552285,0 1,-0.4477 1,-1 v -5 c 0,-0.5523 -0.447715,-1 -1,-1 v 4 l -1,-1 -1,1 v -4 z"
- id="path4162"
- sodipodi:nodetypes="ccccssscccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_g_d_script.svg b/editor/icons/source/icon_g_d_script.svg
deleted file mode 100644
index f2b8cd9343..0000000000
--- a/editor/icons/source/icon_g_d_script.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_g_d_script.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_g_d_script.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.7306265"
- inkscape:cy="9.0071681"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 6.4355469 3.2578125 A 5.0000172 5.0000172 0 0 0 5.7460938 3.5371094 L 3.7578125 2.34375 L 2.34375 3.7578125 L 3.5390625 5.7519531 A 5.0000172 5.0000172 0 0 0 3.2539062 6.4375 L 1 7 L 1 9 L 3.2578125 9.5644531 A 5.0000172 5.0000172 0 0 0 3.5371094 10.251953 L 2.34375 12.242188 L 3.7578125 13.65625 L 5.7519531 12.460938 A 5.0000172 5.0000172 0 0 0 6.4375 12.746094 L 7 15 L 9 15 L 9.5644531 12.742188 A 5.0000172 5.0000172 0 0 0 10.251953 12.462891 L 12.242188 13.65625 L 13.65625 12.242188 L 12.460938 10.248047 A 5.0000172 5.0000172 0 0 0 12.746094 9.5625 L 15 9 L 15 7 L 12.742188 6.4355469 A 5.0000172 5.0000172 0 0 0 12.462891 5.7480469 L 13.65625 3.7578125 L 12.242188 2.34375 L 10.248047 3.5390625 A 5.0000172 5.0000172 0 0 0 9.5625 3.2539062 L 9 1 L 7 1 z M 8 6 A 2.0000174 2.0000174 0 0 1 10 8 A 2.0000174 2.0000174 0 0 1 8 10 A 2.0000174 2.0000174 0 0 1 6 8 A 2.0000174 2.0000174 0 0 1 8 6 z "
- transform="translate(0,1036.3622)"
- id="path4176" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_g_i_probe.svg b/editor/icons/source/icon_g_i_probe.svg
deleted file mode 100644
index d803a5f63d..0000000000
--- a/editor/icons/source/icon_g_i_probe.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_g_i_probe.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.4024065"
- inkscape:cy="8.249577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 11,1040.3622 a 3.9999826,3.9999826 0 0 0 -4,4 3.9999826,3.9999826 0 0 0 4,4 3.9999826,3.9999826 0 0 0 4,-4 3.9999826,3.9999826 0 0 0 -4,-4 z m 0,2 a 2.0000174,2.0000174 0 0 1 2,2 2.0000174,2.0000174 0 0 1 -2,2 2.0000174,2.0000174 0 0 1 -2,-2 2.0000174,2.0000174 0 0 1 2,-2 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- id="rect4265"
- width="4"
- height="2.0000348"
- x="9"
- y="1046.3622" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- id="rect4269"
- width="2"
- height="1.0000174"
- x="10"
- y="1050.3622" />
- <rect
- y="1047.3622"
- x="9"
- height="2.0000348"
- width="4"
- id="rect4274"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- ry="1.0000174" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1050.3622 -4,0 0,-12 10,0"
- id="path4293"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_g_i_probe_data.svg b/editor/icons/source/icon_g_i_probe_data.svg
deleted file mode 100644
index 96fa62723c..0000000000
--- a/editor/icons/source/icon_g_i_probe_data.svg
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_g_i_probe_data.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.914815"
- inkscape:cy="6.460794"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="M 11 4 A 3.9999826 3.9999826 0 0 0 7 8 A 3.9999826 3.9999826 0 0 0 9 11.458984 L 9 12 C 9 12.55401 9.4459904 13 10 13 L 12 13 C 12.55401 13 13 12.55401 13 12 L 13 11.458984 A 3.9999826 3.9999826 0 0 0 15 8 A 3.9999826 3.9999826 0 0 0 11 4 z M 11 6 A 2.0000174 2.0000174 0 0 1 13 8 A 2.0000174 2.0000174 0 0 1 11 10 A 2.0000174 2.0000174 0 0 1 9 8 A 2.0000174 2.0000174 0 0 1 11 6 z M 10 14 L 10 15 L 12 15 L 12 14 L 10 14 z "
- transform="translate(0,1036.3622)"
- id="path4255" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 2,1037.3613 a 1.0001,1.0001 0 0 0 -1,1 l 0,12 a 1.0001,1.0001 0 0 0 1,1 l 4,0 0,-2 -3,0 0,-10 9,0 0,-2 -10,0 z"
- id="path4293"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4170"
- width="2"
- height="2"
- x="4"
- y="1040.3622" />
- <rect
- y="1043.3622"
- x="4"
- height="2"
- width="2"
- id="rect4172"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4174"
- width="2"
- height="2"
- x="4"
- y="1046.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_generic_6_d_o_f_joint.svg b/editor/icons/source/icon_generic_6_d_o_f_joint.svg
deleted file mode 100644
index 485040c6dc..0000000000
--- a/editor/icons/source/icon_generic_6_d_o_f_joint.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_generic_6_dof_joint.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.4723042"
- inkscape:cy="10.441783"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 3,1042.3622 10,5"
- id="path4241"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:#fc9c9c;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.99607843;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:0.99607843"
- d="m 8,1050.3622 0,-12"
- id="path4243"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4245"
- d="m 3,1047.3622 10,-5"
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gizmo_directional_light.svg b/editor/icons/source/icon_gizmo_directional_light.svg
deleted file mode 100644
index 65202877a0..0000000000
--- a/editor/icons/source/icon_gizmo_directional_light.svg
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="128"
- viewBox="0 0 128 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_gizmo_directional_light.png"
- inkscape:export-xdpi="360"
- inkscape:export-ydpi="360"
- sodipodi:docname="icon_gizmo_directional_light.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="4"
- inkscape:cx="69.526732"
- inkscape:cy="53.07939"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <circle
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4156"
- cx="64"
- cy="988.36218"
- r="24.000017" />
- <path
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 64,4 a 8.0000172,8.0000172 0 0 0 -8,8 l 0,12 a 7.9999828,7.9999828 0 0 0 8,8 7.9999828,7.9999828 0 0 0 8,-8 L 72,12 A 8.0000172,8.0000172 0 0 0 64,4 Z"
- transform="translate(0,924.3622)"
- id="rect4169"
- inkscape:connector-curvature="0"
- inkscape:transform-center-y="-46" />
- <path
- inkscape:connector-curvature="0"
- id="path4148"
- d="m 124,988.3622 a 8.0000172,8.0000172 0 0 0 -8,-8 l -12,0 a 7.9999828,7.9999828 0 0 0 -8,8 7.9999828,7.9999828 0 0 0 8,8 l 12,0 a 8.0000172,8.0000172 0 0 0 8,-8 z"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:transform-center-x="-46" />
- <path
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 64,1048.3622 a 8.0000172,8.0000172 0 0 0 8,-8 l 0,-12 a 7.9999828,7.9999828 0 0 0 -8,-8 7.9999828,7.9999828 0 0 0 -8,8 l 0,12 a 8.0000172,8.0000172 0 0 0 8,8 z"
- id="path4150"
- inkscape:connector-curvature="0"
- inkscape:transform-center-y="46" />
- <path
- inkscape:connector-curvature="0"
- id="path4152"
- d="m 4,988.3622 a 8.0000172,8.0000172 0 0 0 8,8 l 12,0 a 7.9999828,7.9999828 0 0 0 8,-8 7.9999828,7.9999828 0 0 0 -8,-8 l -12,0 a 8.0000172,8.0000172 0 0 0 -8,8 z"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:transform-center-x="46" />
- <path
- inkscape:transform-center-y="-32.526909"
- inkscape:connector-curvature="0"
- id="path4154"
- d="m 106.42641,945.93579 a 8.0000172,8.0000172 0 0 0 -11.313712,0 l -8.485281,8.48528 a 7.9999828,7.9999828 0 0 0 0,11.31371 7.9999828,7.9999828 0 0 0 11.313708,0 l 8.485285,-8.48528 a 8.0000172,8.0000172 0 0 0 0,-11.31371 z"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:transform-center-x="-32.526906" />
- <path
- inkscape:transform-center-x="-32.526906"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 106.42641,1030.7886 a 8.0000172,8.0000172 0 0 0 0,-11.3137 l -8.485285,-8.4853 a 7.9999828,7.9999828 0 0 0 -11.313708,0 7.9999828,7.9999828 0 0 0 0,11.3137 l 8.485281,8.4853 a 8.0000172,8.0000172 0 0 0 11.313712,0 z"
- id="path4157"
- inkscape:connector-curvature="0"
- inkscape:transform-center-y="32.526894" />
- <path
- inkscape:transform-center-y="32.526893"
- inkscape:connector-curvature="0"
- id="path4159"
- d="m 21.573593,1030.7886 a 8.0000172,8.0000172 0 0 0 11.313709,0 l 8.485281,-8.4853 a 7.9999828,7.9999828 0 0 0 0,-11.3137 7.9999828,7.9999828 0 0 0 -11.313708,0 l -8.485282,8.4853 a 8.0000172,8.0000172 0 0 0 0,11.3137 z"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:transform-center-x="32.526905" />
- <path
- inkscape:transform-center-x="32.526905"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 21.573593,945.93579 a 8.0000172,8.0000172 0 0 0 0,11.31371 l 8.485282,8.48528 a 7.9999828,7.9999828 0 0 0 11.313708,0 7.9999828,7.9999828 0 0 0 0,-11.31371 l -8.485281,-8.48528 a 8.0000172,8.0000172 0 0 0 -11.313709,0 z"
- id="path4161"
- inkscape:connector-curvature="0"
- inkscape:transform-center-y="-32.526908" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gizmo_light.svg b/editor/icons/source/icon_gizmo_light.svg
deleted file mode 100644
index c42d6e1f76..0000000000
--- a/editor/icons/source/icon_gizmo_light.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="128"
- viewBox="0 0 128 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_gizmo_light.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_gizmo_light.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.9999998"
- inkscape:cx="47.738891"
- inkscape:cy="58.814006"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <path
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 64,930.3622 a 40.000068,40.000068 0 0 0 -40,40 40.000068,40.000068 0 0 0 40,40 40.000068,40.000068 0 0 0 40,-40 40.000068,40.000068 0 0 0 -40,-40 z m 0,12 a 28,28 0 0 1 28,28 28,28 0 0 1 -28,28 28,28 0 0 1 -28,-28 28,28 0 0 1 28,-28 z"
- id="path4162"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 48,1002.3622 0,20 a 8,8 0 0 0 8,8 l 16,0 a 8,8 0 0 0 8,-8 l 0,-20 -32,0 z"
- id="rect4164"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4168"
- width="16"
- height="8.0000696"
- x="56"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gizmo_listener.svg b/editor/icons/source/icon_gizmo_listener.svg
deleted file mode 100644
index 3667cbc69b..0000000000
--- a/editor/icons/source/icon_gizmo_listener.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="128"
- viewBox="0 0 128 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/2x/icon_gizmo_listener.png"
- inkscape:export-xdpi="180"
- inkscape:export-ydpi="180"
- sodipodi:docname="icon_gizmo_listener.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="3.9999998"
- inkscape:cx="53.348444"
- inkscape:cy="75.110194"
- inkscape:document-units="px"
- inkscape:current-layer="g4175"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <g
- id="g4175"
- transform="matrix(2,0,0,2,-16,-1040.3622)">
- <path
- inkscape:connector-curvature="0"
- id="path4274"
- d="m 63.712867,990.36221 -6.953133,4.0152 a 24.000031,23.999015 0 0 1 3.242193,11.98399 24.000031,23.999015 0 0 1 -3.234381,11.9917 l 6.945321,4.0076 a 32.000041,31.998687 0 0 0 0,-31.99849 z"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1034.3602"
- x="19.999998"
- height="7.9996719"
- width="4.0000052"
- id="rect4147"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- id="path4149"
- d="m 32.000015,986.3622 a 20.000026,19.999179 0 0 0 -20.000026,19.9992 l 8.00001,0 a 12.000015,11.999507 0 0 1 12.000016,-11.99959 12.000015,11.999507 0 0 1 12.000015,11.99959 l 8.00001,0 A 20.000026,19.999179 0 0 0 32.000015,986.3622 Z"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="csc"
- inkscape:connector-curvature="0"
- id="path4155"
- d="m 48.000035,1006.3614 c 0,15.9993 -12.000015,15.9993 -12.000015,19.9993 0,11.9992 -8.00001,11.9992 -12.000016,11.9992"
- style="fill:none;fill-rule:evenodd;stroke:#f7f5cf;stroke-width:7.99984121;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gizmo_spatial_sample_player.svg b/editor/icons/source/icon_gizmo_spatial_sample_player.svg
deleted file mode 100644
index a734095268..0000000000
--- a/editor/icons/source/icon_gizmo_spatial_sample_player.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="128"
- viewBox="0 0 128 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_gizmo_spatial_sample_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="2"
- inkscape:cx="7.8244495"
- inkscape:cy="69.465609"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <path
- style="fill:#f7f5cf;fill-opacity:1;fill-rule:evenodd;stroke:#f7f5cf;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 64.000015,940.3622 0,96.0012 -31.999993,-32.0004 -15.999996,0 0,-32.00043 15.999996,0 z"
- id="path4143"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <rect
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4145"
- width="11.999997"
- height="32.000439"
- x="80.000008"
- y="972.36255" />
- <rect
- y="948.36224"
- x="104"
- height="80.000717"
- width="11.999997"
- id="rect4147"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <circle
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4137"
- cx="86"
- cy="972.36218"
- r="6" />
- <circle
- r="6"
- cy="1002.3622"
- cx="86"
- id="circle4139"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4141"
- cx="110"
- cy="1028.3622"
- r="6" />
- <circle
- r="6"
- cy="948.36218"
- cx="110"
- id="circle4143"
- style="opacity:1;fill:#f7f5cf;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gizmo_spatial_stream_player.svg b/editor/icons/source/icon_gizmo_spatial_stream_player.svg
deleted file mode 100644
index c333641249..0000000000
--- a/editor/icons/source/icon_gizmo_spatial_stream_player.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="128"
- viewBox="0 0 128 128"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_gizmo_spatial_stream_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568542"
- inkscape:cx="102.18566"
- inkscape:cy="68.674719"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-924.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f5cf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 99.765624,934.3602 a 8.0008,8.001126 0 0 0 -1.960936,0.296 l -56,16.0004 A 8.0008,8.001126 0 0 0 36,958.353 l 0,48.1192 a 18.000034,18.000768 0 0 0 -2,-0.116 18.000034,18.000768 0 0 0 -18,18.0008 18.000034,18.000768 0 0 0 18,18.0008 18.000034,18.000768 0 0 0 17.875,-16.0008 l 0.125,0 0,-2 0,-59.9632 40,-11.4304 0,37.5172 a 18,18.000734 0 0 0 -2,-0.124 18,18.000734 0 0 0 -18,18.0008 18,18.000734 0 0 0 18,18.0004 18,18.000734 0 0 0 17.875,-16.0004 l 0.125,0 0,-2 0,-66.0028 a 8.0008,8.001126 0 0 0 -8.234376,-7.9924 z"
- id="path4187"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_godot.svg b/editor/icons/source/icon_godot.svg
deleted file mode 100644
index 8f90c4c91a..0000000000
--- a/editor/icons/source/icon_godot.svg
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_godot.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="18.673414"
- inkscape:cy="10.896798"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="matrix(0.01724138,0,0,0.01724138,-0.82758616,1033.7378)"
- id="layer1-6"
- inkscape:label="Layer 1">
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,919.24059,771.67186)"
- id="g78">
- <path
- inkscape:connector-curvature="0"
- id="path80"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 c 0,0 -0.325,1.994 -0.515,1.976 l -36.182,-3.491 c -2.879,-0.278 -5.115,-2.574 -5.317,-5.459 l -0.994,-14.247 -27.992,-1.997 -1.904,12.912 c -0.424,2.872 -2.932,5.037 -5.835,5.037 h -38.188 c -2.902,0 -5.41,-2.165 -5.834,-5.037 l -1.905,-12.912 -27.992,1.997 -0.994,14.247 c -0.202,2.886 -2.438,5.182 -5.317,5.46 l -36.2,3.49 c -0.187,0.018 -0.324,-1.978 -0.511,-1.978 l -0.049,-7.83 30.658,-4.944 1.004,-14.374 c 0.203,-2.91 2.551,-5.263 5.463,-5.472 l 38.551,-2.75 c 0.146,-0.01 0.29,-0.016 0.434,-0.016 2.897,0 5.401,2.166 5.825,5.038 l 1.959,13.286 h 28.005 l 1.959,-13.286 c 0.423,-2.871 2.93,-5.037 5.831,-5.037 0.142,0 0.284,0.005 0.423,0.015 l 38.556,2.75 c 2.911,0.209 5.26,2.562 5.463,5.472 l 1.003,14.374 30.645,4.966 z" />
- </g>
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,104.69892,525.90697)"
- id="g82-3">
- <path
- inkscape:connector-curvature="0"
- id="path84-6"
- style="fill:#478cbf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 v -47.514 -6.035 -5.492 c 0.108,-0.001 0.216,-0.005 0.323,-0.015 l 36.196,-3.49 c 1.896,-0.183 3.382,-1.709 3.514,-3.609 l 1.116,-15.978 31.574,-2.253 2.175,14.747 c 0.282,1.912 1.922,3.329 3.856,3.329 h 38.188 c 1.933,0 3.573,-1.417 3.855,-3.329 l 2.175,-14.747 31.575,2.253 1.115,15.978 c 0.133,1.9 1.618,3.425 3.514,3.609 l 36.182,3.49 c 0.107,0.01 0.214,0.014 0.322,0.015 v 4.711 l 0.015,0.005 V 0 h 0.134 c 4.795,6.12 9.232,12.569 13.487,19.449 -5.651,9.62 -12.575,18.217 -19.976,26.182 -6.864,-3.455 -13.531,-7.369 -19.828,-11.534 -3.151,3.132 -6.7,5.694 -10.186,8.372 -3.425,2.751 -7.285,4.768 -10.946,7.118 1.09,8.117 1.629,16.108 1.846,24.448 -9.446,4.754 -19.519,7.906 -29.708,10.17 -4.068,-6.837 -7.788,-14.241 -11.028,-21.479 -3.842,0.642 -7.702,0.88 -11.567,0.926 v 0.006 c -0.027,0 -0.052,-0.006 -0.075,-0.006 -0.024,0 -0.049,0.006 -0.073,0.006 V 63.652 C 93.903,63.606 90.046,63.368 86.203,62.726 82.965,69.964 79.247,77.368 75.173,84.205 64.989,81.941 54.915,78.789 45.47,74.035 45.686,65.695 46.225,57.704 47.318,49.587 43.65,47.237 39.795,45.22 36.369,42.469 32.888,39.791 29.333,37.229 26.181,34.097 19.884,38.262 13.219,42.176 6.353,45.631 -1.048,37.666 -7.968,29.069 -13.621,19.449 -9.368,12.569 -4.928,6.12 -0.134,0 Z" />
- </g>
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,784.07144,817.24284)"
- id="g86-7">
- <path
- inkscape:connector-curvature="0"
- id="path88-5"
- style="fill:#478cbf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 -1.121,-16.063 c -0.135,-1.936 -1.675,-3.477 -3.611,-3.616 l -38.555,-2.751 c -0.094,-0.007 -0.188,-0.01 -0.281,-0.01 -1.916,0 -3.569,1.406 -3.852,3.33 l -2.211,14.994 H -81.09 l -2.211,-14.994 c -0.297,-2.018 -2.101,-3.469 -4.133,-3.32 l -38.555,2.751 c -1.936,0.139 -3.476,1.68 -3.611,3.616 L -130.721,0 -163.268,3.138 c 0.015,-3.498 0.06,-7.33 0.06,-8.093 0,-34.374 43.605,-50.896 97.781,-51.086 h 0.066 0.067 c 54.176,0.19 97.766,16.712 97.766,51.086 0,0.777 0.047,4.593 0.063,8.093 z" />
- </g>
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,389.21484,625.67104)"
- id="g90-3">
- <path
- inkscape:connector-curvature="0"
- id="path92-5"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 c 0,-12.052 -9.765,-21.815 -21.813,-21.815 -12.042,0 -21.81,9.763 -21.81,21.815 0,12.044 9.768,21.802 21.81,21.802 C -9.765,21.802 0,12.044 0,0" />
- </g>
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,367.36686,631.05679)"
- id="g94-6">
- <path
- inkscape:connector-curvature="0"
- id="path96-2"
- style="fill:#414042;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 c 0,-7.994 -6.479,-14.473 -14.479,-14.473 -7.996,0 -14.479,6.479 -14.479,14.473 0,7.994 6.483,14.479 14.479,14.479 C -6.479,14.479 0,7.994 0,0" />
- </g>
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,511.99336,724.73954)"
- id="g98-9">
- <path
- inkscape:connector-curvature="0"
- id="path100-1"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 c -3.878,0 -7.021,2.858 -7.021,6.381 v 20.081 c 0,3.52 3.143,6.381 7.021,6.381 3.878,0 7.028,-2.861 7.028,-6.381 V 6.381 C 7.028,2.858 3.878,0 0,0" />
- </g>
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,634.78706,625.67104)"
- id="g102-2">
- <path
- inkscape:connector-curvature="0"
- id="path104-7"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 c 0,-12.052 9.765,-21.815 21.815,-21.815 12.041,0 21.808,9.763 21.808,21.815 0,12.044 -9.767,21.802 -21.808,21.802 C 9.765,21.802 0,12.044 0,0" />
- </g>
- <g
- style="stroke-width:0.32031175"
- transform="matrix(4.162611,0,0,-4.162611,656.64056,631.05679)"
- id="g106-0">
- <path
- inkscape:connector-curvature="0"
- id="path108-9"
- style="fill:#414042;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.32031175"
- d="m 0,0 c 0,-7.994 6.477,-14.473 14.471,-14.473 8.002,0 14.479,6.479 14.479,14.473 0,7.994 -6.477,14.479 -14.479,14.479 C 6.477,14.479 0,7.994 0,0" />
- </g>
- </g>
- <path
- style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44162436"
- d="m 4,1041.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,1 a 2.0000174,2.0000174 0 0 1 2,2 2.0000174,2.0000174 0 0 1 -2,2 2.0000174,2.0000174 0 0 1 -2,-2 2.0000174,2.0000174 0 0 1 2,-2 z"
- id="path4151"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4156"
- d="m 12,1041.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,1 a 2.0000174,2.0000174 0 0 1 2,2 2.0000174,2.0000174 0 0 1 -2,2 2.0000174,2.0000174 0 0 1 -2,-2 2.0000174,2.0000174 0 0 1 2,-2 z"
- style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44162436" />
- <rect
- style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.44162436"
- id="rect4160"
- width="4"
- height="1"
- x="6"
- y="1043.3622"
- ry="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gradient.svg b/editor/icons/source/icon_gradient.svg
deleted file mode 100644
index 4ce1b3232f..0000000000
--- a/editor/icons/source/icon_gradient.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_gradient.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient848">
- <stop
- style="stop-color:#e0e0e0;stop-opacity:1;"
- offset="0"
- id="stop844" />
- <stop
- style="stop-color:#e0e0e0;stop-opacity:0;"
- offset="1"
- id="stop846" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient848"
- id="linearGradient850"
- x1="10"
- y1="1"
- x2="10"
- y2="15"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.5330742"
- inkscape:cy="10.782845"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:url(#linearGradient850);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2,1 C 1.4477153,1 1,1.4477153 1,2 v 12 c 0,0.552285 0.4477153,1 1,1 h 12 c 0.552285,0 1,-0.447715 1,-1 V 2 C 15,1.4477153 14.552285,1 14,1 Z"
- transform="translate(0,1036.3622)"
- id="rect4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssss" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gradient_texture.svg b/editor/icons/source/icon_gradient_texture.svg
deleted file mode 100644
index efc48bb778..0000000000
--- a/editor/icons/source/icon_gradient_texture.svg
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_gradient_texture.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient848">
- <stop
- style="stop-color:#e0e0e0;stop-opacity:1;"
- offset="0"
- id="stop844" />
- <stop
- style="stop-color:#e0e0e0;stop-opacity:0;"
- offset="1"
- id="stop846" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient848"
- id="linearGradient850"
- x1="10"
- y1="1"
- x2="10"
- y2="15"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.5928314"
- inkscape:cy="6.4466253"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:url(#linearGradient850);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2 1 A 1 1 0 0 0 1 2 L 1 14 A 1 1 0 0 0 2 15 L 14 15 A 1 1 0 0 0 15 14 L 15 2 A 1 1 0 0 0 14 1 L 2 1 z M 3 3 L 13 3 L 13 11 L 3 11 L 3 3 z "
- transform="translate(0,1036.3622)"
- id="rect4156" />
- <rect
- y="1043.3622"
- x="6"
- height="1"
- width="2"
- id="rect4197"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4199"
- width="2"
- height="2.0000174"
- x="6"
- y="1044.3622" />
- <rect
- y="1045.3622"
- x="4"
- height="1"
- width="2"
- id="rect4201"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4203"
- width="2"
- height="2.0000174"
- x="8"
- y="1044.3622" />
- <rect
- y="1044.3622"
- x="10"
- height="2.0000174"
- width="2"
- id="rect4205"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4207"
- width="3"
- height="2.0000174"
- x="8"
- y="1042.3622" />
- <rect
- y="1041.3622"
- x="9"
- height="1"
- width="1"
- id="rect4217"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4219"
- width="1"
- height="1"
- x="5"
- y="1044.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_comment.svg b/editor/icons/source/icon_graph_comment.svg
deleted file mode 100644
index 5ad8fc8253..0000000000
--- a/editor/icons/source/icon_graph_comment.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_comment.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="2.9377959"
- inkscape:cy="8.9727512"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4161"
- width="2"
- height="11.999983"
- x="3"
- y="1039.3622" />
- <rect
- y="1047.3622"
- x="1"
- height="1.999948"
- width="12"
- id="rect4172"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1039.3622"
- x="9"
- height="11.999983"
- width="2"
- id="rect4174"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4176"
- width="12"
- height="1.999948"
- x="1"
- y="1041.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_cube_uniform.svg b/editor/icons/source/icon_graph_cube_uniform.svg
deleted file mode 100644
index 63774a7431..0000000000
--- a/editor/icons/source/icon_graph_cube_uniform.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_cube_uniform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.6772247"
- inkscape:cy="6.7867928"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#eac968;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 0 C 0.8954305 0 0 0.8954 0 2 L 0 12 C 0 13.1046 0.8954305 14 2 14 L 12 14 C 13.104569 14 14 13.1046 14 12 L 14 2 C 14 0.8954 13.104569 0 12 0 L 2 0 z M 6.9726562 2 A 0.71438238 0.71438238 0 0 1 7.3203125 2.0742188 L 11.605469 4.2167969 A 0.71438238 0.71438238 0 0 1 12 4.8574219 L 12 9.1425781 A 0.71438238 0.71438238 0 0 1 11.605469 9.78125 L 7.3203125 11.923828 A 0.71438238 0.71438238 0 0 1 6.6796875 11.923828 L 2.3945312 9.78125 A 0.71438238 0.71438238 0 0 1 2 9.1425781 L 2 4.8574219 A 0.71438238 0.71438238 0 0 1 2.3945312 4.2167969 L 6.6796875 2.0742188 A 0.71438238 0.71438238 0 0 1 6.9726562 2 z M 7 3.5136719 L 4.3105469 4.8574219 L 7 6.2011719 L 9.6894531 4.8574219 L 7 3.5136719 z M 3.4277344 6.0117188 L 3.4277344 8.7011719 L 6.2851562 10.128906 L 6.2851562 7.4414062 L 3.4277344 6.0117188 z M 10.572266 6.0117188 L 7.7148438 7.4414062 L 7.7148438 10.128906 L 10.572266 8.7011719 L 10.572266 6.0117188 z "
- transform="translate(0,1038.3622)"
- id="rect4147" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_curve_map.svg b/editor/icons/source/icon_graph_curve_map.svg
deleted file mode 100644
index 6c3594cb1b..0000000000
--- a/editor/icons/source/icon_graph_curve_map.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_curve_map.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="1.7717442"
- inkscape:cy="7.4133706"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:none;fill-opacity:0;fill-rule:evenodd;stroke:#f6f6f6;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1049.3622 c 8,0 9,0 9,-9"
- id="path4157"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="opacity:1;fill:#68d0ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 11 4 A 2 2 0 0 0 9 6 A 2 2 0 0 0 11 8 A 2 2 0 0 0 13 6 A 2 2 0 0 0 11 4 z M 6 9 A 2 2 0 0 0 4 11 A 2 2 0 0 0 6 13 A 2 2 0 0 0 8 11 A 2 2 0 0 0 6 9 z "
- transform="translate(0,1038.3622)"
- id="circle4176" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_default_texture.svg b/editor/icons/source/icon_graph_default_texture.svg
deleted file mode 100644
index 8d1c78ddd7..0000000000
--- a/editor/icons/source/icon_graph_default_texture.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_default_texture.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="0.057070465"
- inkscape:cy="7.746251"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#eae068;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 2 L 2 12 L 12 12 L 12 2 L 2 2 z M 11 4 L 11 9 L 3 9 L 5 6 L 7 8 L 11 4 z "
- transform="translate(0,1038.3622)"
- id="rect4220" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_edit.svg b/editor/icons/source/icon_graph_edit.svg
deleted file mode 100644
index 30d3ad96f6..0000000000
--- a/editor/icons/source/icon_graph_edit.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_shader_graph.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_edit.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="10.257036"
- inkscape:cy="6.1065792"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 5 13 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 L 8.7929688 10.207031 L 10.207031 8.7929688 L 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 13 5 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z "
- transform="translate(0,1036.3622)"
- id="path4198" />
- <ellipse
- r="2"
- style="opacity:1;fill:#6e6e6e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="ellipse4152"
- cx="3"
- cy="1039.3622" />
- <g
- id="layer1-0"
- inkscape:label="Layer 1"
- transform="matrix(0.50000003,0,0,0.50000003,7.5,525.68107)"
- style="fill:#a5efac;fill-opacity:1">
- <path
- sodipodi:nodetypes="ccccccccccc"
- inkscape:connector-curvature="0"
- id="rect4135"
- d="M 1.7071068,1047.8266 1,1051.3622 l 3.5355339,-0.7071 7.7781741,-7.7782 -2.828427,-2.8284 z m 9.1923882,-9.1924 2.828427,2.8285 1.414214,-1.4142 -2.828428,-2.8285 z"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_input.svg b/editor/icons/source/icon_graph_input.svg
deleted file mode 100644
index 265fb7279e..0000000000
--- a/editor/icons/source/icon_graph_input.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_input.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.3654942"
- inkscape:cy="6.8821206"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <circle
- style="opacity:1;fill:#f6f6f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4155"
- cx="7"
- cy="1045.3622"
- r="6" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_node.svg b/editor/icons/source/icon_graph_node.svg
deleted file mode 100644
index 078b0ffe9e..0000000000
--- a/editor/icons/source/icon_graph_node.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_shader_graph.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_node.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="8.3717103"
- inkscape:cy="7.5028858"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 5 13 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 L 8.0859375 9.5 L 9.5 8.0859375 L 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 13 5 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z "
- transform="translate(0,1036.3622)"
- id="path4198" />
- <ellipse
- r="2"
- style="opacity:1;fill:#6e6e6e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="ellipse4152"
- cx="3"
- cy="1039.3622" />
- <circle
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4205"
- cx="12.500009"
- cy="1048.8622"
- r="2.4999914" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_rgb.svg b/editor/icons/source/icon_graph_rgb.svg
deleted file mode 100644
index a00e97a104..0000000000
--- a/editor/icons/source/icon_graph_rgb.svg
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_rgb.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="1.5006521"
- inkscape:cy="11.075034"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1039.3622 a 4.0000172,4.0000172 0 0 0 -4,4 4.0000172,4.0000172 0 0 0 0.03906,0.5195 4.0000172,4.0000172 0 0 0 -2.039062,3.4805 4.0000172,4.0000172 0 0 0 4,4 4.0000172,4.0000172 0 0 0 1.998047,-0.541 4.0000172,4.0000172 0 0 0 2.001953,0.541 4.0000172,4.0000172 0 0 0 4,-4 4.0000172,4.0000172 0 0 0 -2.037109,-3.4824 4.0000172,4.0000172 0 0 0 0.03711,-0.5176 4.0000172,4.0000172 0 0 0 -4,-4 z"
- id="circle4161"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1040.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 0.210937,1.1055 A 3,3 0 0 0 2,1047.3622 a 3,3 0 0 0 3,3 3,3 0 0 0 2,-0.7676 3,3 0 0 0 2,0.7676 3,3 0 0 0 3,-3 3,3 0 0 0 -2.2148438,-2.8906 A 3,3 0 0 0 10,1043.3622 a 3,3 0 0 0 -3,-3 z"
- id="circle4268"
- inkscape:connector-curvature="0" />
- <circle
- style="opacity:1;fill:#ff0000;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4262"
- cx="7"
- cy="1043.3622"
- r="3" />
- <circle
- r="3"
- cy="1047.3622"
- cx="5"
- id="circle4264"
- style="opacity:1;fill:#0000ff;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#00ff00;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4266"
- cx="9"
- cy="1047.3622"
- r="3" />
- <circle
- r="3"
- cy="1043.3622"
- cx="7"
- id="circle4281"
- style="opacity:1;fill:#ff0000;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#0000ff;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4283"
- cx="5"
- cy="1047.3622"
- r="3" />
- <circle
- r="3"
- cy="1047.3622"
- cx="9"
- id="circle4285"
- style="opacity:1;fill:#00ff00;fill-opacity:0.39215686;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_rgb_op.svg b/editor/icons/source/icon_graph_rgb_op.svg
deleted file mode 100644
index fdd3d3a9f4..0000000000
--- a/editor/icons/source/icon_graph_rgb_op.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_rgb_op.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="0.48418609"
- inkscape:cy="11.870529"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
- d="m 4,1050.3622 6,0 0,-10 -6,0 z"
- id="path4144"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="2"
- height="2"
- x="1"
- y="1041.3622" />
- <rect
- y="1047.3622"
- x="1"
- height="2"
- width="2"
- id="rect4159"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4161"
- width="2"
- height="2"
- x="11"
- y="1044.3622" />
- <rect
- style="opacity:1;fill:#ff4646;fill-opacity:0.8627451;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4163"
- width="4"
- height="2"
- x="5"
- y="1041.3622" />
- <rect
- y="1044.3622"
- x="5"
- height="2"
- width="4"
- id="rect4165"
- style="opacity:1;fill:#46ff46;fill-opacity:0.8627451;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#4646ff;fill-opacity:0.8627451;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="4"
- height="2"
- x="5"
- y="1047.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_rgb_uniform.svg b/editor/icons/source/icon_graph_rgb_uniform.svg
deleted file mode 100644
index 359c86d61a..0000000000
--- a/editor/icons/source/icon_graph_rgb_uniform.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_rgb_uniform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.0781037"
- inkscape:cy="7.3277795"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2,1038.3622 c -1.10457,0 -2,0.8954 -2,2 l 0,10 c 0,1.1046 0.89543,2 2,2 l 10,0 c 1.104569,0 2,-0.8954 2,-2 l 0,-10 c 0,-1.1046 -0.895431,-2 -2,-2 z"
- id="rect4147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssss" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:0.39215687;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 2 A 3 3 0 0 0 4 5 A 3 3 0 0 0 4.2109375 6.1054688 A 3 3 0 0 0 2 9 A 3 3 0 0 0 5 12 A 3 3 0 0 0 7 11.232422 A 3 3 0 0 0 9 12 A 3 3 0 0 0 12 9 A 3 3 0 0 0 9.7851562 6.109375 A 3 3 0 0 0 10 5 A 3 3 0 0 0 7 2 z "
- transform="translate(0,1038.3622)"
- id="circle4268" />
- <circle
- style="opacity:1;fill:#ff0000;fill-opacity:0.39215687;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4262"
- cx="7"
- cy="1043.3622"
- r="3" />
- <circle
- r="3"
- cy="1047.3622"
- cx="5"
- id="circle4264"
- style="opacity:1;fill:#0000ff;fill-opacity:0.39215687;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#00ff00;fill-opacity:0.39215687;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4266"
- cx="9"
- cy="1047.3622"
- r="3" />
- <circle
- r="3"
- cy="1043.3622"
- cx="7"
- id="circle4281"
- style="opacity:1;fill:#ff0000;fill-opacity:0.39215687;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#0000ff;fill-opacity:0.39215687;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4283"
- cx="5"
- cy="1047.3622"
- r="3" />
- <circle
- r="3"
- cy="1047.3622"
- cx="9"
- id="circle4285"
- style="opacity:1;fill:#00ff00;fill-opacity:0.39215687;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_scalar.svg b/editor/icons/source/icon_graph_scalar.svg
deleted file mode 100644
index 7a75ddba78..0000000000
--- a/editor/icons/source/icon_graph_scalar.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_scalar.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.1198735"
- inkscape:cy="6.5048182"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6 2 C 4.3431458 2 3 3.3431 3 5 C 3 6.6569 4.3431458 8 6 8 L 8 8 A 1.0000174 1.0000174 0 0 1 9 9 A 1.0000174 1.0000174 0 0 1 8 10 L 3 10 L 3 12 L 8 12 C 9.6568542 12 11 10.6569 11 9 C 11 7.3431 9.6568542 6 8 6 L 6 6 A 1.0000174 1.0000174 0 0 1 5 5 A 1.0000174 1.0000174 0 0 1 6 4 L 11 4 L 11 2 L 6 2 z "
- transform="translate(0,1038.3622)"
- id="rect4348" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_scalar_interp.svg b/editor/icons/source/icon_graph_scalar_interp.svg
deleted file mode 100644
index 47b619d608..0000000000
--- a/editor/icons/source/icon_graph_scalar_interp.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_scalar_interp.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="2.5036881"
- inkscape:cy="7.3934142"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#cf68ea;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1050.3622 10,-10"
- id="path4154"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_scalar_op.svg b/editor/icons/source/icon_graph_scalar_op.svg
deleted file mode 100644
index fcb54f9aa0..0000000000
--- a/editor/icons/source/icon_graph_scalar_op.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_scalar_op.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.1972896"
- inkscape:cy="8.4316461"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cf68ea;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 4,1 C 3.4477381,1.0001 3.0000552,1.4477 3,2 l 0,10 c 5.52e-5,0.5523 0.4477381,0.9999 1,1 l 6,0 c 0.552262,-10e-5 0.999945,-0.4477 1,-1 L 11,2 C 10.999945,1.4477 10.552262,1.0001 10,1 Z m 1,3 4,3 -4,3 z"
- transform="translate(0,1038.3622)"
- id="path4144"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccc" />
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="2"
- height="2"
- x="1"
- y="1041.3622" />
- <rect
- y="1047.3622"
- x="1"
- height="2"
- width="2"
- id="rect4159"
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4161"
- width="2"
- height="2"
- x="11"
- y="1044.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_scalar_uniform.svg b/editor/icons/source/icon_graph_scalar_uniform.svg
deleted file mode 100644
index e5e5edea9c..0000000000
--- a/editor/icons/source/icon_graph_scalar_uniform.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_scalar_uniform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.0555126"
- inkscape:cy="8.8981623"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 0 A 2 2 0 0 0 0 2 L 0 12 A 2 2 0 0 0 2 14 L 12 14 A 2 2 0 0 0 14 12 L 14 2 A 2 2 0 0 0 12 0 L 2 0 z M 6 2 L 11 2 L 11 4 L 6 4 A 1.0000174 1.0000174 0 0 0 5 5 A 1.0000174 1.0000174 0 0 0 6 6 L 8 6 C 9.6568542 6 11 7.3431 11 9 C 11 10.6569 9.6568542 12 8 12 L 3 12 L 3 10 L 8 10 A 1.0000174 1.0000174 0 0 0 9 9 A 1.0000174 1.0000174 0 0 0 8 8 L 6 8 C 4.3431458 8 3 6.6569 3 5 C 3 3.3431 4.3431458 2 6 2 z "
- transform="translate(0,1038.3622)"
- id="rect4147" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_scalars_to_vec.svg b/editor/icons/source/icon_graph_scalars_to_vec.svg
deleted file mode 100644
index d951a41832..0000000000
--- a/editor/icons/source/icon_graph_scalars_to_vec.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_scalars_to_vec.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient834">
- <stop
- id="stop832"
- offset="0"
- style="stop-color:#cf68ea;stop-opacity:1" />
- <stop
- id="stop830"
- offset="1"
- style="stop-color:#b8ea68;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient834"
- id="linearGradient836"
- x1="1"
- y1="7"
- x2="13.014242"
- y2="7"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.5785236"
- inkscape:cy="9.2011474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient836);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 1.9902344 0.99023438 A 1.0001 1.0001 0 0 0 1.2929688 2.7070312 L 4.5859375 6 L 2 6 A 1.0001 1.0001 0 1 0 2 8 L 4.5859375 8 L 1.2929688 11.292969 A 1.0001 1.0001 0 1 0 2.7070312 12.707031 L 7.4140625 8 L 12 8 A 1.0001 1.0001 0 1 0 12 6 L 7.4140625 6 L 2.7070312 1.2929688 A 1.0001 1.0001 0 0 0 1.9902344 0.99023438 z "
- transform="translate(0,1038.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_texscreen.svg b/editor/icons/source/icon_graph_texscreen.svg
deleted file mode 100644
index 89d000d7cb..0000000000
--- a/editor/icons/source/icon_graph_texscreen.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_texscreen.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="3.5348921"
- inkscape:cy="8.3718235"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:none;fill-opacity:1;stroke:#f6f6f6;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2,1041.3622 10,0 0,8 -10,0 z"
- id="rect4154" />
- <rect
- style="opacity:1;fill:#f6f6f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="8"
- height="1.0000174"
- x="3"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_texture_uniform.svg b/editor/icons/source/icon_graph_texture_uniform.svg
deleted file mode 100644
index 440f83642c..0000000000
--- a/editor/icons/source/icon_graph_texture_uniform.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_texture_uniform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="10.372248"
- inkscape:cy="6.4853857"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#eae068;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 0 C 0.8954305 0 0 0.8954 0 2 L 0 12 C 0 13.1046 0.8954305 14 2 14 L 12 14 C 13.104569 14 14 13.1046 14 12 L 14 2 C 14 0.8954 13.104569 0 12 0 L 2 0 z M 2 2 L 12 2 L 12 12 L 2 12 L 2 2 z M 11 4 L 7 8 L 5 6 L 3 9 L 11 9 L 11 4 z "
- transform="translate(0,1038.3622)"
- id="rect4147" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_time.svg b/editor/icons/source/icon_graph_time.svg
deleted file mode 100644
index 77b80e920b..0000000000
--- a/editor/icons/source/icon_graph_time.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_time.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="2.306914"
- inkscape:cy="7.4704168"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#f6f6f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="2"
- height="3.9999652"
- x="6"
- y="1042.3622" />
- <rect
- y="1044.3622"
- x="6"
- height="1.9999652"
- width="4"
- id="rect4159"
- style="opacity:1;fill:#f6f6f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:transform-center-x="-0.66666667"
- inkscape:transform-center-y="-3.4787369e-05" />
- <path
- style="opacity:1;fill:#f6f6f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 0 A 7 7 0 0 0 0 7 A 7 7 0 0 0 7 14 A 7 7 0 0 0 14 7 A 7 7 0 0 0 7 0 z M 7 2 A 5.0000172 5.0000172 0 0 1 12 7 A 5.0000172 5.0000172 0 0 1 7 12 A 5.0000172 5.0000172 0 0 1 2 7 A 5.0000172 5.0000172 0 0 1 7 2 z "
- transform="translate(0,1038.3622)"
- id="path4166" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vec_dp.svg b/editor/icons/source/icon_graph_vec_dp.svg
deleted file mode 100644
index 8994d8ce59..0000000000
--- a/editor/icons/source/icon_graph_vec_dp.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vec_dp.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="64"
- inkscape:cx="4.9677869"
- inkscape:cy="7.0295494"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 1,1042.3622 2,6 2,-6"
- id="path4154"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <circle
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4160"
- cx="7"
- cy="1046.3622"
- r="1" />
- <path
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0"
- id="path4171"
- d="m 9,1042.3622 2,6 2,-6"
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vec_interp.svg b/editor/icons/source/icon_graph_vec_interp.svg
deleted file mode 100644
index 885b342a54..0000000000
--- a/editor/icons/source/icon_graph_vec_interp.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vec_interp.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="2.5478823"
- inkscape:cy="7.6364821"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1050.3622 10,-10"
- id="path4154"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vec_length.svg b/editor/icons/source/icon_graph_vec_length.svg
deleted file mode 100644
index aa01e3ef2a..0000000000
--- a/editor/icons/source/icon_graph_vec_length.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vec_length.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="5.8031361"
- inkscape:cy="7.1300276"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="12.000017"
- x="0"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="12"
- height="12.000017"
- width="2"
- id="rect4156"
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1043.3622 2,5 2,-5"
- id="path4158"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vec_op.svg b/editor/icons/source/icon_graph_vec_op.svg
deleted file mode 100644
index da7540ce86..0000000000
--- a/editor/icons/source/icon_graph_vec_op.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vec_op.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.0410396"
- inkscape:cy="8.8691461"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b8ea68;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 4 1 C 3.4477381 1.0001 3.0000552 1.4477 3 2 L 3 3 L 1 3 L 1 5 L 3 5 L 3 9 L 1 9 L 1 11 L 3 11 L 3 12 C 3.0000552 12.5523 3.4477381 12.9999 4 13 L 10 13 C 10.552262 12.9999 10.999945 12.5523 11 12 L 11 8 L 13 8 L 13 6 L 11 6 L 11 2 C 10.999945 1.4477 10.552262 1.0001 10 1 L 4 1 z M 5 4 L 9 7 L 5 10 L 5 4 z "
- transform="translate(0,1038.3622)"
- id="path4144" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vec_scalar_op.svg b/editor/icons/source/icon_graph_vec_scalar_op.svg
deleted file mode 100644
index aeb2626120..0000000000
--- a/editor/icons/source/icon_graph_vec_scalar_op.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vec_scalar_op.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.8222896"
- inkscape:cy="9.2753961"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cf68ea;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 3 7 L 3 9 L 1 9 L 1 11 L 3 11 L 3 12 C 3.0000552 12.5523 3.4477381 12.9999 4 13 L 10 13 C 10.552262 12.9999 10.999945 12.5523 11 12 L 11 8 L 13 8 L 13 7 L 9 7 L 5 10 L 5 7 L 3 7 z "
- transform="translate(0,1038.3622)"
- id="path4233" />
- <path
- id="path4236"
- d="m 3,1045.3622 0,-2 -2,0 0,-2 2,0 0,-1 c 5.52e-5,-0.5523 0.4477381,-0.9999 1,-1 l 6,0 c 0.552262,10e-5 0.999945,0.4477 1,1 l 0,4 2,0 0,1 -4,0 -4,-3 0,3 -2,0 z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b8ea68;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vec_to_scalars.svg b/editor/icons/source/icon_graph_vec_to_scalars.svg
deleted file mode 100644
index 8bddf89b2d..0000000000
--- a/editor/icons/source/icon_graph_vec_to_scalars.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vec_to_scalars.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient834">
- <stop
- id="stop832"
- offset="0"
- style="stop-color:#cf68ea;stop-opacity:1" />
- <stop
- id="stop830"
- offset="1"
- style="stop-color:#b8ea68;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient834"
- id="linearGradient836"
- x1="1"
- y1="7"
- x2="13.014242"
- y2="7"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,1,13.999754,1038.3622)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.5785236"
- inkscape:cy="9.2011474"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient836);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 12.00952,1039.3524 a 1.0001,1.0001 0 0 1 0.697265,1.7168 l -3.2929685,3.293 h 2.5859375 a 1.0001,1.0001 0 1 1 0,2 H 9.4138165 l 3.2929685,3.293 a 1.0001,1.0001 0 1 1 -1.414062,1.414 l -4.7070315,-4.707 H 1.999754 a 1.0001,1.0001 0 1 1 0,-2 h 4.5859375 l 4.7070315,-4.707 a 1.0001,1.0001 0 0 1 0.716797,-0.3028 z"
- id="path4154"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vecs_to_xform.svg b/editor/icons/source/icon_graph_vecs_to_xform.svg
deleted file mode 100644
index 1321766117..0000000000
--- a/editor/icons/source/icon_graph_vecs_to_xform.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vecs_to_xform.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient834">
- <stop
- style="stop-color:#b8ea68;stop-opacity:1;"
- offset="0"
- id="stop830" />
- <stop
- style="stop-color:#ea686c;stop-opacity:1"
- offset="1"
- id="stop832" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient834"
- id="linearGradient836"
- x1="1"
- y1="7"
- x2="13.014242"
- y2="7"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(7.4681641e-4,1038.3622)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.3597736"
- inkscape:cy="10.326147"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient836);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 1.9909808,1039.3524 a 1.0001,1.0001 0 0 0 -0.697265,1.7168 l 3.2929683,3.293 H 2.0007468 a 1.0001,1.0001 0 1 0 0,2 h 2.5859373 l -3.2929683,3.293 a 1.0001,1.0001 0 1 0 1.414062,1.414 l 4.7070313,-4.707 h 4.5859379 a 1.0001,1.0001 0 1 0 0,-2 H 7.4148091 l -4.7070313,-4.707 a 1.0001,1.0001 0 0 0 -0.716797,-0.3028 z"
- id="path4154"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vector.svg b/editor/icons/source/icon_graph_vector.svg
deleted file mode 100644
index e7f6bd927f..0000000000
--- a/editor/icons/source/icon_graph_vector.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vector.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.8941631"
- inkscape:cy="7.6796075"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b8ea68;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 8,1038.3614 0,2 -5,0 0,2 5,0 0,2 3,-3 z m -3.65625,5.6289 -1.714844,1.0293 0.513672,0.8574 3,5 c 0.388501,0.647 1.326343,0.647 1.714844,0 l 3,-5 0.513672,-0.8574 -1.714844,-1.0293 -0.513672,0.8574 L 7,1048.418 4.857422,1044.8477 Z"
- id="path4209"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_vector_uniform.svg b/editor/icons/source/icon_graph_vector_uniform.svg
deleted file mode 100644
index 2310938af5..0000000000
--- a/editor/icons/source/icon_graph_vector_uniform.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_vector_uniform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.2039653"
- inkscape:cy="7.5980148"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2,0 C 0.8954305,0 0,0.8954305 0,2 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 14,2 C 14,0.8954305 13.104569,0 12,0 Z M 8,0 11,3 8,6 8,4 3,4 3,2 8,2 Z M 4.34375,5.6289062 4.8574219,6.4863281 7,10.056641 9.1425781,6.4863281 9.65625,5.6289062 l 1.714844,1.0292969 -0.513672,0.8574219 -3.0000001,5 c -0.3885014,0.647055 -1.3263424,0.647055 -1.7148438,0 l -3,-5 -0.5136719,-0.8574219 z"
- transform="translate(0,1038.3622)"
- id="rect4147"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssssssssscccccccccccccccccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 23,0 0,2 -5,0 0,2 5,0 0,2 3,-3 z m -3.65625,5.6289062 -1.714844,1.0292969 0.513672,0.8574219 3,5 c 0.388501,0.647056 1.326343,0.647056 1.714844,0 l 3,-5 L 26.371094,6.6582031 24.65625,5.6289062 24.142578,6.4863281 22,10.056641 19.857422,6.4863281 Z"
- transform="translate(0,1038.3622)"
- id="path4209"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform.svg b/editor/icons/source/icon_graph_xform.svg
deleted file mode 100644
index c9b027ee2d..0000000000
--- a/editor/icons/source/icon_graph_xform.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="1.4813283"
- inkscape:cy="7.7204422"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="1"
- height="12"
- x="1"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="1"
- height="1.0000174"
- width="3"
- id="rect4156"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="3"
- height="1"
- x="1"
- y="1050.3622" />
- <rect
- y="1050.3622"
- x="10"
- height="1"
- width="3"
- id="rect4160"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4162"
- width="3"
- height="1.0000174"
- x="10"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="12"
- height="12"
- width="1"
- id="rect4164"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#ea686c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1049.3622 0,-7 3,3 3,-3 0,7"
- id="path4166"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform_mult.svg b/editor/icons/source/icon_graph_xform_mult.svg
deleted file mode 100644
index 71fca83f3d..0000000000
--- a/editor/icons/source/icon_graph_xform_mult.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform_mult.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="64"
- inkscape:cx="6.8982224"
- inkscape:cy="7.1692759"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#ea686c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 1,1049.3622 0,-7 2,3 2,-3 0,7"
- id="path4166"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4160"
- d="m 9,1049.3622 0,-7 2,3 2,-3 0,7"
- style="fill:none;fill-rule:evenodd;stroke:#ea686c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4162"
- cx="7"
- cy="1045.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform_scalar_func.svg b/editor/icons/source/icon_graph_xform_scalar_func.svg
deleted file mode 100644
index 45fd97a671..0000000000
--- a/editor/icons/source/icon_graph_xform_scalar_func.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform_scalar_func.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.3566697"
- inkscape:cy="9.063202"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4160"
- width="2"
- height="4.9999824"
- x="6"
- y="1042.3622" />
- <path
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 9.0703125 1 A 3 3 0 0 0 7.5 1.4023438 A 3 3 0 0 0 6 4 L 8 4 A 1 1 0 0 1 9 3 A 1 1 0 0 1 10 4 L 12 4 A 3 3 0 0 0 10.5 1.4023438 A 3 3 0 0 0 9.0703125 1 z "
- transform="translate(0,1038.3622)"
- id="path4164" />
- <rect
- y="1042.3622"
- x="10"
- height="1.0000174"
- width="2"
- id="rect4166"
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 10 A 3 3 0 0 0 3.5 12.597656 A 3 3 0 0 0 6.5 12.597656 A 3 3 0 0 0 8 10 L 6 10 A 1 1 0 0 1 5 11 A 1 1 0 0 1 4 10 L 2 10 z "
- transform="translate(0,1038.3622)"
- id="path4170" />
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4172"
- width="2"
- height="1.0000174"
- x="6"
- y="-1048.3622"
- transform="scale(1,-1)" />
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4176"
- width="6"
- height="2"
- x="4"
- y="1044.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform_to_vecs.svg b/editor/icons/source/icon_graph_xform_to_vecs.svg
deleted file mode 100644
index 45754c8a44..0000000000
--- a/editor/icons/source/icon_graph_xform_to_vecs.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform_to_vecs.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient834">
- <stop
- style="stop-color:#b8ea68;stop-opacity:1;"
- offset="0"
- id="stop830" />
- <stop
- style="stop-color:#ea686c;stop-opacity:1"
- offset="1"
- id="stop832" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient834"
- id="linearGradient836"
- x1="1"
- y1="7"
- x2="13.014242"
- y2="7"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,1,13.999754,1038.3622)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.3597736"
- inkscape:cy="10.326147"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#linearGradient836);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 12.00952,1039.3524 a 1.0001,1.0001 0 0 1 0.697265,1.7168 l -3.2929683,3.293 h 2.5859373 a 1.0001,1.0001 0 1 1 0,2 H 9.4138167 l 3.2929683,3.293 a 1.0001,1.0001 0 1 1 -1.414062,1.414 l -4.7070313,-4.707 H 1.999754 a 1.0001,1.0001 0 1 1 0,-2 h 4.5859377 l 4.7070313,-4.707 a 1.0001,1.0001 0 0 1 0.716797,-0.3028 z"
- id="path4154"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform_uniform.svg b/editor/icons/source/icon_graph_xform_uniform.svg
deleted file mode 100644
index f1cdcd408c..0000000000
--- a/editor/icons/source/icon_graph_xform_uniform.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform_uniform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.0470074"
- inkscape:cy="8.0773899"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 0 C 0.8954305 0 0 0.8954 0 2 L 0 12 C 0 13.1046 0.8954305 14 2 14 L 12 14 C 13.104569 14 14 13.1046 14 12 L 14 2 C 14 0.8954 13.104569 0 12 0 L 2 0 z M 1 1 L 2 1 L 4 1 L 4 2 L 2 2 L 2 12 L 4 12 L 4 13 L 2 13 L 1 13 L 1 12 L 1 2 L 1 1 z M 10 1 L 13 1 L 13 12 L 13 13 L 10 13 L 10 12 L 12 12 L 12 2 L 10 2 L 10 1 z M 9.9707031 3 A 1.0001 1.0001 0 0 1 11 4 L 11 11 L 9 11 L 9 6.4140625 L 7.7070312 7.7070312 A 1.0001 1.0001 0 0 1 6.2929688 7.7070312 L 5 6.4140625 L 5 11 L 3 11 L 3 4 A 1.0001 1.0001 0 0 1 3.984375 3.0019531 A 1.0001 1.0001 0 0 1 4.7070312 3.2929688 L 7 5.5859375 L 9.2929688 3.2929688 A 1.0001 1.0001 0 0 1 9.9707031 3 z "
- transform="translate(0,1038.3622)"
- id="rect4147" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform_vec_func.svg b/editor/icons/source/icon_graph_xform_vec_func.svg
deleted file mode 100644
index 0d141bc646..0000000000
--- a/editor/icons/source/icon_graph_xform_vec_func.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform_vec_func.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.8879197"
- inkscape:cy="10.406952"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4160"
- width="2"
- height="4.9999824"
- x="6"
- y="1042.3622" />
- <path
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 9.0703125 1 A 3 3 0 0 0 7.5 1.4023438 A 3 3 0 0 0 6 4 L 8 4 A 1 1 0 0 1 9 3 A 1 1 0 0 1 10 4 L 12 4 A 3 3 0 0 0 10.5 1.4023438 A 3 3 0 0 0 9.0703125 1 z "
- transform="translate(0,1038.3622)"
- id="path4164" />
- <rect
- y="1042.3622"
- x="10"
- height="1.0000174"
- width="2"
- id="rect4166"
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 10 A 3 3 0 0 0 3.5 12.597656 A 3 3 0 0 0 6.5 12.597656 A 3 3 0 0 0 8 10 L 6 10 A 1 1 0 0 1 5 11 A 1 1 0 0 1 4 10 L 2 10 z "
- transform="translate(0,1038.3622)"
- id="path4170" />
- <rect
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4172"
- width="2"
- height="1.0000174"
- x="6"
- y="-1048.3622"
- transform="scale(1,-1)" />
- <rect
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4176"
- width="6"
- height="2"
- x="4"
- y="1044.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform_vec_imult.svg b/editor/icons/source/icon_graph_xform_vec_imult.svg
deleted file mode 100644
index 74dc1ba7e3..0000000000
--- a/editor/icons/source/icon_graph_xform_vec_imult.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform_vec_imult.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="3.9196664"
- inkscape:cy="7.2417215"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 1,1042.3622 2,6 2,-6"
- id="path4154"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <circle
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4160"
- cx="7"
- cy="1046.3622"
- r="1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4160-1"
- d="m 9,1049.3622 0,-7 2,3 2,-3 0,7"
- style="fill:none;fill-rule:evenodd;stroke:#ea686c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_graph_xform_vec_mult.svg b/editor/icons/source/icon_graph_xform_vec_mult.svg
deleted file mode 100644
index c3e59abd46..0000000000
--- a/editor/icons/source/icon_graph_xform_vec_mult.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_graph_xform_vec_mult.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="3.0118539"
- inkscape:cy="7.2425107"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 9,1042.3622 2,6 2,-6"
- id="path4154"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <circle
- style="opacity:1;fill:#b8ea68;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4160"
- cx="7"
- cy="1046.3622"
- r="1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4160-1"
- d="m 1,1049.3621 0,-7 2,3 2,-3 0,7"
- style="fill:none;fill-rule:evenodd;stroke:#ea686c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_grid.svg b/editor/icons/source/icon_grid.svg
deleted file mode 100644
index 2d9288de14..0000000000
--- a/editor/icons/source/icon_grid.svg
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_grid.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.9555256"
- inkscape:cy="11.525163"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="10"
- x="5"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="9"
- height="10"
- width="2"
- id="rect4156"
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="2"
- height="10"
- x="1041.3622"
- y="-13"
- transform="matrix(0,1,-1,0,0,0)" />
- <rect
- transform="matrix(0,1,-1,0,0,0)"
- y="-13"
- x="1045.3622"
- height="10"
- width="2"
- id="rect4160"
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- transform="matrix(0,1,-1,0,0,0)"
- y="-15"
- x="1037.3622"
- height="14"
- width="2"
- id="rect4162"
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4164"
- width="2"
- height="14"
- x="1049.3622"
- y="-15"
- transform="matrix(0,1,-1,0,0,0)" />
- <rect
- transform="scale(-1,-1)"
- y="-1051.3622"
- x="-15"
- height="14"
- width="2"
- id="rect4166"
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4168"
- width="2"
- height="14"
- x="-3"
- y="-1051.3622"
- transform="scale(-1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_grid_container.svg b/editor/icons/source/icon_grid_container.svg
deleted file mode 100644
index a27578f196..0000000000
--- a/editor/icons/source/icon_grid_container.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_grid_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="5.3680561"
- inkscape:cy="9.3590913"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="10"
- x="5"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="9"
- height="10"
- width="2"
- id="rect4157"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1041.3622"
- x="3"
- height="1.9999826"
- width="10"
- id="rect4159"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4161"
- width="10"
- height="1.9999826"
- x="3"
- y="1045.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_grid_map.svg b/editor/icons/source/icon_grid_map.svg
deleted file mode 100644
index 83b831abd4..0000000000
--- a/editor/icons/source/icon_grid_map.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_grid_map.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="10.766846"
- inkscape:cy="6.0751122"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8 1 L 6 2 L 4 3 L 2 4 L 2 6 L 2 8 L 2 10 L 2 12 L 4 13 L 6 14 L 8 15 L 10 14 L 12 13 L 14 12 L 14 10 L 12 9 L 10 10 L 8 11 L 6 10 L 6 8 L 6 6 L 8 5 L 8 3 L 10 2 L 8 1 z M 12 3 L 10 4 L 10 6 L 12 7 L 14 6 L 14 4 L 12 3 z "
- transform="translate(0,1036.3622)"
- id="path1047" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_groove_joint_2d.svg b/editor/icons/source/icon_groove_joint_2d.svg
deleted file mode 100644
index d05bebef48..0000000000
--- a/editor/icons/source/icon_groove_joint_2d.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_groove_joint_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="11.478928"
- inkscape:cy="8.9552021"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 15,1037.3622 -5,0 0,6 -5,0 0,2 5,0 0,6 5,0 0,-14 z m -7,0 -5,0 -2,0 0,4 0,10 2,0 5,0 0,-4 -5,0 0,-6 5,0 0,-4 z"
- id="rect4161"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_group.svg b/editor/icons/source/icon_group.svg
deleted file mode 100644
index a0a2f02af5..0000000000
--- a/editor/icons/source/icon_group.svg
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_ungroup.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_group.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568543"
- inkscape:cx="14.789684"
- inkscape:cy="26.718572"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.39215687;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 3 L 7 7 L 3 7 C 3 6.9999766 2.554 7 2 7 C 1.446 7 1 6.9999766 1 7 L 1 9 L 1 13 C 1 13.000023 1.446 13 2 13 C 2.554 13 3 13.000023 3 13 L 3 9 L 7 9 L 7 13 L 3 13 C 2.9999766 13 3 13.446 3 14 C 3 14.554 2.9999766 15 3 15 L 7 15 C 7 15.000023 7.446 15 8 15 C 8.554 15 9 15.000023 9 15 L 9 13 L 9 9 L 13 9 C 13 9.0000234 13.446 9 14 9 C 14.554 9 15 9.0000234 15 9 L 15 7 L 15 3 C 15 2.9999766 14.554 3 14 3 C 13.446 3 13 2.9999766 13 3 L 13 7 L 9 7 L 9 3 L 13 3 C 13.000023 3 13 2.554 13 2 C 13 1.446 13.000023 1 13 1 L 9 1 C 9 0.99997659 8.554 1 8 1 C 7.446 1 7 0.99997659 7 1 z "
- id="rect4697"
- transform="translate(0,1036.3622)" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4679"
- width="2"
- height="1.9999826"
- x="1"
- y="1049.3622"
- rx="2.5000134"
- ry="4.2248896e-05" />
- <rect
- ry="4.224963e-05"
- rx="2.5000134"
- y="1037.3622"
- x="1"
- height="2.0000174"
- width="2"
- id="rect4681"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4693"
- width="2"
- height="2.0000174"
- x="13"
- y="1037.3622"
- rx="2.5000134"
- ry="4.224963e-05" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4726"
- width="2"
- height="2.0000174"
- x="13"
- y="1049.3622"
- rx="2.5000134"
- ry="4.224963e-05" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_groups.svg b/editor/icons/source/icon_groups.svg
deleted file mode 100644
index 00249597a4..0000000000
--- a/editor/icons/source/icon_groups.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_edit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_groups.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.2323806"
- inkscape:cy="8.9952486"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:none;fill-opacity:1;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4242"
- width="14"
- height="8.0000172"
- x="1"
- y="1040.3622" />
- <ellipse
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4246"
- cx="5"
- cy="1044.3622"
- rx="2"
- ry="2.0000043" />
- <ellipse
- ry="2.0000043"
- rx="2"
- cy="1044.3622"
- cx="11"
- id="ellipse4248"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gui_close_dark.svg b/editor/icons/source/icon_gui_close_dark.svg
deleted file mode 100644
index ccb4239784..0000000000
--- a/editor/icons/source/icon_gui_close_dark.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_gui_close_dark.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="5.2641929"
- inkscape:cy="7.5472551"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#000000;fill-opacity:0.89803922;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3.7578125 2.34375 L 2.34375 3.7578125 L 6.5859375 8 L 2.34375 12.242188 L 3.7578125 13.65625 L 8 9.4140625 L 12.242188 13.65625 L 13.65625 12.242188 L 9.4140625 8 L 13.65625 3.7578125 L 12.242188 2.34375 L 8 6.5859375 L 3.7578125 2.34375 z "
- transform="translate(0,1036.3622)"
- id="rect4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_gui_close_light.svg b/editor/icons/source/icon_gui_close_light.svg
deleted file mode 100644
index 90d811965b..0000000000
--- a/editor/icons/source/icon_gui_close_light.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_gui_close_light.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="5.2641929"
- inkscape:cy="7.5472551"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#ffffff;fill-opacity:0.89803922;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3.7578125 2.34375 L 2.34375 3.7578125 L 6.5859375 8 L 2.34375 12.242188 L 3.7578125 13.65625 L 8 9.4140625 L 12.242188 13.65625 L 13.65625 12.242188 L 9.4140625 8 L 13.65625 3.7578125 L 12.242188 2.34375 L 8 6.5859375 L 3.7578125 2.34375 z "
- transform="translate(0,1036.3622)"
- id="rect4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_h_box_container.svg b/editor/icons/source/icon_h_box_container.svg
deleted file mode 100644
index f180dde93a..0000000000
--- a/editor/icons/source/icon_h_box_container.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_box_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.0508349"
- inkscape:cy="9.1486534"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="10"
- x="5"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="9"
- height="10"
- width="2"
- id="rect4157"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_h_button_array.svg b/editor/icons/source/icon_h_button_array.svg
deleted file mode 100644
index 0dad9ee8b8..0000000000
--- a/editor/icons/source/icon_h_button_array.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_button_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="13.231578"
- inkscape:cy="12.996902"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-7"
- inkscape:label="Layer 1"
- transform="translate(9,-1.9999826)"
- style="fill:#a5efac;fill-opacity:1" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 12,1041.3622 v 2 h -2 v 2 h 2 v 2 h 2 v -2 h 2 v -2 h -2 v -2 z"
- id="rect836"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1037.3622 v 3.1328 l -1.445312,-0.9648 -1.109376,1.664 3,2 c 0.335902,0.2239 0.773474,0.2239 1.109376,0 l 3,-2 -1.109376,-1.664 L 6,1040.495 v -3.1328 z m -0.5,8 c -0.831,0 -1.5,0.669 -1.5,1.5 v 0.5 1 H 1 v 2 h 8 v -2 H 8 v -1 -0.5 c 0,-0.831 -0.669,-1.5 -1.5,-1.5 z"
- id="rect829-9"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccssccccccccsss" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_h_scroll_bar.svg b/editor/icons/source/icon_h_scroll_bar.svg
deleted file mode 100644
index fbcee056b3..0000000000
--- a/editor/icons/source/icon_h_scroll_bar.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_scroll_bar.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.7934271"
- inkscape:cy="7.8450604"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- inkscape:connector-curvature="0"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 15,1041.3622 c 0,-1.108 -0.892,-2 -2,-2 H 3 c -1.108,0 -2,0.892 -2,2 v 6 c 0,1.108 0.892,2 2,2 h 10 c 1.108,0 2,-0.892 2,-2 z m -1,2.9883 a 1.0001,1.0001 0 0 1 -0.168,0.5664 l -2,3 a 1.0001,1.0001 0 1 1 -1.664,-1.1094 l 1.6289,-2.4453 -1.6289,-2.4453 a 1.0001,1.0001 0 1 1 1.664,-1.1094 l 2,3 a 1.0001,1.0001 0 0 1 0.168,0.543 z m -7.9922,-2.9981 a 1.0001,1.0001 0 0 1 -0.1758,0.5645 l -1.6308,2.4453 1.6308,2.4453 a 1.0001,1.0001 0 1 1 -1.664,1.1094 l -2,-3 a 1.0001,1.0001 0 0 1 0,-1.1094 l 2,-3 a 1.0001,1.0001 0 0 1 1.8398,0.5449 z"
- id="rect825" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_h_separator.svg b/editor/icons/source/icon_h_separator.svg
deleted file mode 100644
index 461299731d..0000000000
--- a/editor/icons/source/icon_h_separator.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_separator.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.302565"
- inkscape:cy="8.0967779"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4156"
- width="6"
- height="3.0000174"
- x="5"
- y="1038.3622" />
- <rect
- y="-15"
- x="-1045.3622"
- height="14"
- width="2"
- id="rect4158"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0,-1,-1,0,0,0)" />
- <rect
- y="1047.3622"
- x="5"
- height="3.0000174"
- width="6"
- id="rect4160"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_h_slider.svg b/editor/icons/source/icon_h_slider.svg
deleted file mode 100644
index b3e8a956da..0000000000
--- a/editor/icons/source/icon_h_slider.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_slider.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.7094459"
- inkscape:cy="9.5190595"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a5efac;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 2,1046.3622 a 1.0001,1.0001 0 1 0 0,2 h 2.1308594 a 4,4 0 0 1 -0.1308594,-1 4,4 0 0 1 0.1328125,-1 z m 9.869141,0 a 4,4 0 0 1 0.130859,1 4,4 0 0 1 -0.132812,1 H 14 a 1.0001,1.0001 0 1 0 0,-2 z"
- id="path817"
- inkscape:connector-curvature="0" />
- <circle
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path824"
- cx="13"
- cy="1047.3622"
- r="2" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1040.3622 v 2"
- id="path835"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1041.3622 v 0"
- id="path837"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 14,1040.3622 v 2"
- id="path839"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 10 L 3 12 L 9.1308594 12 A 4 4 0 0 1 9 11 A 4 4 0 0 1 9.1328125 10 L 3 10 z "
- transform="translate(0,1036.3622)"
- id="rect841" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_h_split_container.svg b/editor/icons/source/icon_h_split_container.svg
deleted file mode 100644
index 9ca2df0ff1..0000000000
--- a/editor/icons/source/icon_h_split_container.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_split_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.521964"
- inkscape:cy="9.8091523"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="10"
- x="7"
- y="1039.3622" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 9,1042.3622 0,4 2,-2 z"
- id="path4173"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1042.3622 -2,2 2,2 z"
- id="path4171"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_h_t_t_p_request.svg b/editor/icons/source/icon_h_t_t_p_request.svg
deleted file mode 100644
index f43141dd7c..0000000000
--- a/editor/icons/source/icon_h_t_t_p_request.svg
+++ /dev/null
@@ -1,173 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_h_t_t_p_request.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_t_t_p_request.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="14.357316"
- inkscape:cy="9.4289864"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4200"
- width="1"
- height="5"
- x="1"
- y="1046.3622" />
- <rect
- y="1048.3622"
- x="1"
- height="0.9999826"
- width="2"
- id="rect4202"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- y="1046.3622"
- x="3"
- height="5"
- width="1"
- id="rect4204"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4206"
- width="1"
- height="5"
- x="6"
- y="1046.3622" />
- <rect
- y="1046.3622"
- x="5"
- height="1.0000174"
- width="3"
- id="rect4208"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- y="1046.3622"
- x="10"
- height="5"
- width="1"
- id="rect4210"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4212"
- width="3"
- height="1.0000174"
- x="9"
- y="1046.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4214"
- width="1"
- height="5"
- x="13"
- y="1046.3622" />
- <rect
- y="1046.3622"
- x="13"
- height="1.0000174"
- width="3"
- id="rect4216"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4218"
- width="1"
- height="3.0000174"
- x="15"
- y="1046.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4220"
- width="3"
- height="1.0000174"
- x="13"
- y="1048.3622" />
- <path
- style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1041.3622 6,0 -3,-4 z"
- id="path4279"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4281"
- d="m 9,1040.3622 6,0 -3,4 z"
- style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4283"
- width="2"
- height="3"
- x="3"
- y="1041.3622" />
- <rect
- y="1037.3622"
- x="11"
- height="3"
- width="2"
- id="rect4285"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_headphones.svg b/editor/icons/source/icon_headphones.svg
deleted file mode 100644
index 456a9b8d4e..0000000000
--- a/editor/icons/source/icon_headphones.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_listener.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_headphones.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.999999"
- inkscape:cx="17.327656"
- inkscape:cy="15.295288"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1,1046.3622 0,3 2,0 0,2 2,0 0,-5 -4,0 z"
- id="rect4168"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11,1046.3622 0,5 2,0 0,-2 2,0 0,-3 -4,0 z"
- id="rect4170"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8,1037.3622 a 7,7 0 0 0 -7,7 l 2,0 a 5,5 0 0 1 5,-5 5,5 0 0 1 5,5 l 2,0 a 7,7 0 0 0 -7,-7 z"
- id="path4185"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4189"
- width="2"
- height="2"
- x="1"
- y="1044.3622" />
- <rect
- y="1044.3622"
- x="13"
- height="2"
- width="2"
- id="rect4191"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4194"
- cx="3"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1049.3622"
- cx="-13"
- id="circle4198"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="scale(-1,1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_help.svg b/editor/icons/source/icon_help.svg
deleted file mode 100644
index cc8517d2d1..0000000000
--- a/editor/icons/source/icon_help.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_help.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_help.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="9.7940153"
- inkscape:cy="7.5068869"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:0.58823532;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.3254902"
- d="M 5.0292969 1 C 4.0296094 0.989075 3.0196929 1.31165 2 2 L 2 9 C 4.0172141 7.6471 6.0167145 7.6864 8 9 C 9.9832855 7.6864 11.982786 7.6471 14 9 L 14 2 C 12.980307 1.31165 11.970391 0.989075 10.970703 1 C 10.309402 1.007227 9.6532285 1.1734956 9 1.4628906 L 9 6 L 8 6 L 8 2 C 7.0184429 1.35535 6.0289844 1.010925 5.0292969 1 z M 0 10 L 0 16 L 2 16 A 3 3 0 0 0 5 13 A 3 3 0 0 0 2 10 L 0 10 z M 5 13 A 3 3 0 0 0 8 16 A 3 3 0 0 0 11 13 A 3 3 0 0 0 8 10 A 3 3 0 0 0 5 13 z M 11 13 A 3 3 0 0 0 14 16 L 15 16 L 15 14 L 14 14 A 1.0000174 1.0000174 0 0 1 13 13 A 1.0000174 1.0000174 0 0 1 14 12 L 15 12 L 15 10 L 14 10 A 3 3 0 0 0 11 13 z M 2 12 A 1 1 0 0 1 3 13 A 1 1 0 0 1 2 14 L 2 12 z M 8 12 A 1.0000174 1.0000174 0 0 1 9 13 A 1.0000174 1.0000174 0 0 1 8 14 A 1.0000174 1.0000174 0 0 1 7 13 A 1.0000174 1.0000174 0 0 1 8 12 z "
- transform="translate(0,1036.3622)"
- id="path4270" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_help_search.svg b/editor/icons/source/icon_help_search.svg
deleted file mode 100644
index ab914c0c64..0000000000
--- a/editor/icons/source/icon_help_search.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_help.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_help_search.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="10.167683"
- inkscape:cy="7.1383117"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.3254902"
- d="m 0,10 v 6 H 2 C 3.6568542,16 5,14.656854 5,13 5,11.343146 3.6568542,10 2,10 Z m 5,3 c 0,1.656854 1.3431458,3 3,3 1.6568542,0 3,-1.343146 3,-3 0,-1.656854 -1.3431458,-3 -3,-3 -1.6568542,0 -3,1.343146 -3,3 z m 6,0 c 0,1.656854 1.343146,3 3,3 h 1 v -2 h -1 c -0.552281,-10e-6 -0.99999,-0.447719 -1,-1 10e-6,-0.552281 0.447719,-0.99999 1,-1 h 1 v -2 h -1 c -1.656854,0 -3,1.343146 -3,3 z M 2,12 c 0.5522847,0 1,0.447715 1,1 0,0.552285 -0.4477153,1 -1,1 z m 6,0 c 0.5522808,10e-6 0.9999904,0.447719 1,1 -9.6e-6,0.552281 -0.4477192,0.99999 -1,1 -0.5522808,-10e-6 -0.9999904,-0.447719 -1,-1 9.6e-6,-0.552281 0.4477192,-0.99999 1,-1 z"
- transform="translate(0,1036.3622)"
- id="path4270"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccssscssssssscccccccsscsccccccc" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.3254902"
- d="m 9,1036.3622 a 4,4 0 0 0 -4,4 4,4 0 0 0 4,4 4,4 0 0 0 4,-4 4,4 0 0 0 -4,-4 z m 0,2 a 2.0000174,2.0000174 0 0 1 2,2 2.0000174,2.0000174 0 0 1 -2,2 2.0000174,2.0000174 0 0 1 -2,-2 2.0000174,2.0000174 0 0 1 2,-2 z"
- id="path4285"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1042.3622 -3,3"
- id="path4290"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_hidden.svg b/editor/icons/source/icon_hidden.svg
deleted file mode 100644
index 1d504f02fb..0000000000
--- a/editor/icons/source/icon_hidden.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_history.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_hidden.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.8497078"
- inkscape:cy="4.519077"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 14,1044.3622 c -1,3.5 -4,5 -6,5 -2,0 -5,-1.5 -6,-5"
- id="path4165"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csc" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4136"
- width="2"
- height="2"
- x="7"
- y="1049.3622" />
- <rect
- y="749.42535"
- x="-733.11163"
- height="2"
- width="2"
- id="rect4138"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:transform-center-y="4.9497553"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
- inkscape:transform-center-x="-4.9497561" />
- <rect
- inkscape:transform-center-x="4.9497388"
- transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
- inkscape:transform-center-y="4.9497553"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4140"
- width="2"
- height="2"
- x="742.42535"
- y="738.11163" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_hinge_joint.svg b/editor/icons/source/icon_hinge_joint.svg
deleted file mode 100644
index 767feac9d5..0000000000
--- a/editor/icons/source/icon_hinge_joint.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_hinge_joint.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.5772937"
- inkscape:cy="8.9985765"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 4,1045.3622 a 3,2.9999826 0 0 0 -3,3 3,2.9999826 0 0 0 3,3 3,2.9999826 0 0 0 3,-3 3,2.9999826 0 0 0 -3,-3 z m 0,2 a 1.0000231,1.0000174 0 0 1 1,1 1.0000231,1.0000174 0 0 1 -1,1 1.0000231,1.0000174 0 0 1 -1,-1 1.0000231,1.0000174 0 0 1 1,-1 z"
- id="path4145"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.2832031 1.328125 A 1.0001 1.0001 0 0 0 6.4023438 1.8398438 L 2.7128906 8.2304688 C 3.1188799 8.0916963 3.5469997 8 4 8 C 4.3704308 8 4.722062 8.0678727 5.0625 8.1621094 L 8.1347656 2.8398438 A 1.0001 1.0001 0 0 0 7.2832031 1.328125 z "
- transform="translate(0,1036.3622)"
- id="path4147" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1050.3622 10,0"
- id="path4149"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_history.svg b/editor/icons/source/icon_history.svg
deleted file mode 100644
index f81390f0f5..0000000000
--- a/editor/icons/source/icon_history.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_history.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_history.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="0.066428122"
- inkscape:cy="12.678568"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 9 2 A 6.0000172 6.0000172 0 0 0 3 8 L 5 8 A 4 4 0 0 1 9 4 A 4 4 0 0 1 13 8 A 4 4 0 0 1 9 12 L 9 14 A 6.0000172 6.0000172 0 0 0 15 8 A 6.0000172 6.0000172 0 0 0 9 2 z "
- transform="translate(0,1036.3622)"
- id="path4138" />
- <path
- sodipodi:type="star"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4142"
- sodipodi:sides="3"
- sodipodi:cx="3"
- sodipodi:cy="1046.3622"
- sodipodi:r1="2.236068"
- sodipodi:r2="1.118034"
- sodipodi:arg1="1.0471976"
- sodipodi:arg2="2.0943951"
- inkscape:flatsided="false"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 4.1180339,1048.2987 -1.6770509,-0.9683 -1.67705101,-0.9682 1.67705101,-0.9683 1.6770511,-0.9682 -1e-7,1.9365 z"
- inkscape:transform-center-x="0.00013164169"
- transform="matrix(0,-1.1925797,1.5491989,0,-1617.0232,1049.2732)"
- inkscape:transform-center-y="0.66664316" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4144"
- width="2"
- height="4"
- x="7.9999828"
- y="1041.3622" />
- <rect
- y="1043.3622"
- x="7.9999828"
- height="1.9999826"
- width="4"
- id="rect4146"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_hsize.svg b/editor/icons/source/icon_hsize.svg
deleted file mode 100644
index f24a630770..0000000000
--- a/editor/icons/source/icon_hsize.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_move.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_size.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.1680801"
- inkscape:cy="7.9718121"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 4,7 0,-2 -3,3 3,3 0,-2 8,0 0,2 3,-3 -3,-3 0,2 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_image.svg b/editor/icons/source/icon_image.svg
deleted file mode 100644
index bb15e96251..0000000000
--- a/editor/icons/source/icon_image.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_image.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="12.684811"
- inkscape:cy="8.4223992"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2 1 A 1 1 0 0 0 1 2 L 1 14 A 1 1 0 0 0 2 15 L 14 15 A 1 1 0 0 0 15 14 L 15 2 A 1 1 0 0 0 14 1 L 2 1 z M 3 3 L 13 3 L 13 11 L 3 11 L 3 3 z "
- transform="translate(0,1036.3622)"
- id="rect4156" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 9 5 L 7.5 7.5 L 6.7988281 8.6679688 L 6.6992188 8.5 L 5.8007812 7 L 4.9003906 8.5 L 4 10 L 5.8007812 10 L 6 10 L 7.5996094 10 L 9 10 L 12 10 L 10.5 7.5 L 9 5 z "
- transform="translate(0,1036.3622)"
- id="path4172" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_image_texture.svg b/editor/icons/source/icon_image_texture.svg
deleted file mode 100644
index 39e88e592b..0000000000
--- a/editor/icons/source/icon_image_texture.svg
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_image_texture.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.9365814"
- inkscape:cy="6.4466253"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2 1 A 1 1 0 0 0 1 2 L 1 14 A 1 1 0 0 0 2 15 L 14 15 A 1 1 0 0 0 15 14 L 15 2 A 1 1 0 0 0 14 1 L 2 1 z M 3 3 L 13 3 L 13 11 L 3 11 L 3 3 z "
- transform="translate(0,1036.3622)"
- id="rect4156" />
- <rect
- y="1043.3622"
- x="6"
- height="1"
- width="2"
- id="rect4197"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4199"
- width="2"
- height="2.0000174"
- x="6"
- y="1044.3622" />
- <rect
- y="1045.3622"
- x="4"
- height="1"
- width="2"
- id="rect4201"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4203"
- width="2"
- height="2.0000174"
- x="8"
- y="1044.3622" />
- <rect
- y="1044.3622"
- x="10"
- height="2.0000174"
- width="2"
- id="rect4205"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4207"
- width="3"
- height="2.0000174"
- x="8"
- y="1042.3622" />
- <rect
- y="1041.3622"
- x="9"
- height="1"
- width="1"
- id="rect4217"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4219"
- width="1"
- height="1"
- x="5"
- y="1044.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_immediate_geometry.svg b/editor/icons/source/icon_immediate_geometry.svg
deleted file mode 100644
index 54bc4766d9..0000000000
--- a/editor/icons/source/icon_immediate_geometry.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_immediate_geometry.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="18.615042"
- inkscape:cy="6.562585"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- sodipodi:nodetypes="cscsccccsssc"
- inkscape:connector-curvature="0"
- id="path4146"
- d="m 2.920797,1046.3957 c -0.2637264,0.3 -0.4203983,0.7296 -0.4203983,1.2383 0,1.6277 -3.13814186,-0.1781 -0.337569,2.6703 0.8838207,0.899 2.6543881,0.6701 3.538224,-0.2288 0.8838352,-0.899 0.8838163,-2.3565 0,-3.2554 -1.1002211,-1.1191 -2.200058,-1.0845 -2.7802567,-0.4244 z m 2.3801743,-1.6103 2.4004918,2.4416 6.8013899,-6.9177 c 0.662863,-0.6742 0.662863,-1.7673 0,-2.4415 -0.662877,-0.6741 -1.737613,-0.6741 -2.400491,0 z"
- style="fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_import_check.svg b/editor/icons/source/icon_import_check.svg
deleted file mode 100644
index 606236d82e..0000000000
--- a/editor/icons/source/icon_import_check.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_folder.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_import_check.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.5874555"
- inkscape:cy="7.2488455"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#84ffb1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- d="m 2,1044.3622 4,4 8,-8"
- id="path4138"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_import_fail.svg b/editor/icons/source/icon_import_fail.svg
deleted file mode 100644
index b5d142f968..0000000000
--- a/editor/icons/source/icon_import_fail.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_folder.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_import_fail.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="10.435875"
- inkscape:cy="8.0921459"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ff8484;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 2.9902344 1.9902344 A 1.0001 1.0001 0 0 0 2.2929688 3.7070312 L 6.5859375 8 L 2.2929688 12.292969 A 1.0001 1.0001 0 1 0 3.7070312 13.707031 L 8 9.4140625 L 12.292969 13.707031 A 1.0001 1.0001 0 1 0 13.707031 12.292969 L 9.4140625 8 L 13.707031 3.7070312 A 1.0001 1.0001 0 0 0 12.980469 1.9921875 A 1.0001 1.0001 0 0 0 12.292969 2.2929688 L 8 6.5859375 L 3.7070312 2.2929688 A 1.0001 1.0001 0 0 0 2.9902344 1.9902344 z "
- id="path4139"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_instance.svg b/editor/icons/source/icon_instance.svg
deleted file mode 100644
index f12e067e7a..0000000000
--- a/editor/icons/source/icon_instance.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_instance.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_instance_2.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="0.98066219"
- inkscape:cy="8.8420536"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 5,1047.3622 6,-6"
- id="path4156"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 11 1 C 8.8027056 1 7 2.8027 7 5 C 7 5.3547724 7.0623287 5.6932122 7.1503906 6.0214844 L 9.5449219 3.6269531 C 9.9079388 3.2418883 10.420555 3 11 3 C 12.116414 3 13 3.8836 13 5 C 13 5.5738779 12.763331 6.0828638 12.384766 6.4453125 L 9.9804688 8.8496094 C 10.308197 8.9373587 10.64588 9 11 9 C 13.197294 9 15 7.1973 15 5 C 15 2.8027 13.197294 1 11 1 z M 5 7 C 2.8027056 7 1 8.8027 1 11 C 1 13.1973 2.8027056 15 5 15 C 7.1972944 15 9 13.1973 9 11 C 9 10.645879 8.9373589 10.308197 8.8496094 9.9804688 L 6.4453125 12.384766 C 6.0828657 12.763333 5.5738851 13 5 13 C 3.8835859 13 3 12.1164 3 11 C 3 10.420562 3.24189 9.9079407 3.6269531 9.5449219 L 6.0214844 7.1503906 C 5.6932126 7.0623289 5.3547715 7 5 7 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_instance_options.svg b/editor/icons/source/icon_instance_options.svg
deleted file mode 100644
index a8c00bc43f..0000000000
--- a/editor/icons/source/icon_instance_options.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_instance_options.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="6.1966464"
- inkscape:cy="5.5949101"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 7 L 1 13 C 1 14.104569 1.8954305 15 3 15 L 15 15 L 15 7 L 1 7 z M 5 9 L 11 9 L 8 13 L 5 9 z "
- transform="translate(0,1036.3622)"
- id="rect4136" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 0.7112932,1040.3831 1,1042.3622 l 2.2438279,-0.3273 -0.8182578,-1.9018 -1.7142769,0.25 z m 3.6933293,-0.5387 0.8182578,1.9018 1.9790524,-0.2887 -0.8182579,-1.9018 -1.9790523,0.2887 z m 3.9581047,-0.5775 0.8182579,1.9018 1.9790519,-0.2887 -0.818257,-1.9018 -1.9790528,0.2887 z m 3.9581048,-0.5774 0.818258,1.9018 1.714277,-0.25 -0.288707,-1.9791 -2.243828,0.3273 z"
- id="rect4138"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="-6.7823301"
- inkscape:transform-center-y="-2" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_integer.svg b/editor/icons/source/icon_integer.svg
deleted file mode 100644
index d4e7a9860a..0000000000
--- a/editor/icons/source/icon_integer.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_integer.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="0.4948735"
- inkscape:cy="6.9110682"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="10"
- x="6"
- y="1040.3622" />
- <rect
- y="1039.3622"
- x="4"
- height="2.0000174"
- width="6"
- id="rect4156"
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="6"
- height="2.0000174"
- x="4"
- y="1049.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_interp_cubic.svg b/editor/icons/source/icon_interp_cubic.svg
deleted file mode 100644
index 7d8d5ef70d..0000000000
--- a/editor/icons/source/icon_interp_cubic.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_interp_cubic.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.5633871"
- inkscape:cy="5.0840195"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 c 3,0 3,-4 6,-4 3,0 3,4 6,4"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_interp_linear.svg b/editor/icons/source/icon_interp_linear.svg
deleted file mode 100644
index 7b1e4f2dd1..0000000000
--- a/editor/icons/source/icon_interp_linear.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_interp_linear.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="64"
- inkscape:cx="7.2389107"
- inkscape:cy="6.3582428"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 6,-4 6,4"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_interp_raw.svg b/editor/icons/source/icon_interp_raw.svg
deleted file mode 100644
index e2e2070449..0000000000
--- a/editor/icons/source/icon_interp_raw.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_interp_raw.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.8686169"
- inkscape:cy="5.8136992"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 3,0 0,-4 6,0 0,4 3,0"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_interp_wrap_clamp.svg b/editor/icons/source/icon_interp_wrap_clamp.svg
deleted file mode 100644
index 068e79ace0..0000000000
--- a/editor/icons/source/icon_interp_wrap_clamp.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_interp_wrap_clamp.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.8989222"
- inkscape:cy="4.5067976"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="5.9999828"
- x="1"
- y="1045.3622"
- rx="1.7382812e-05"
- ry="1.7382812e-05" />
- <rect
- ry="1.7382812e-05"
- rx="1.7382812e-05"
- y="1045.3622"
- x="13"
- height="5.9999828"
- width="2"
- id="rect4156"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 5,1048.3622 6,0"
- id="path4158"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1046.3622 -2,2 2,2"
- id="path4160"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4162"
- d="m 10,1046.3622 2,2 -2,2"
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_interp_wrap_loop.svg b/editor/icons/source/icon_interp_wrap_loop.svg
deleted file mode 100644
index bfca46331b..0000000000
--- a/editor/icons/source/icon_interp_wrap_loop.svg
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_interp_wrap_loop.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.8700453"
- inkscape:cy="4.2719762"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 12 1 L 12 3 A 1.0000174 1.0000174 0 0 1 13 4 A 1.0000174 1.0000174 0 0 1 12 5 L 12 7 A 3 3 0 0 0 15 4 A 3 3 0 0 0 12 1 z "
- id="path4159"
- transform="translate(0,1044.3622)" />
- <path
- cx="12"
- cy="1048.3622"
- r="3"
- id="path4161"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 4 1 A 3 3 0 0 0 1 4 A 3 3 0 0 0 4 7 L 4 5 A 1.0000174 1.0000174 0 0 1 3 4 A 1.0000174 1.0000174 0 0 1 4 3 L 4 1 z "
- id="path4176"
- transform="translate(0,1044.3622)" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4180"
- width="3"
- height="2"
- x="9"
- y="1045.3622"
- rx="6.5185495e-06"
- ry="1.7382799e-05" />
- <rect
- ry="1.7382799e-05"
- rx="6.5185495e-06"
- y="1049.3622"
- x="4"
- height="2"
- width="3"
- id="rect4182"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 7,1048.3622 0,4 3,-2 z"
- id="path4186"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4190"
- d="m 9,1044.3622 0,4 -3,-2 z"
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_interpolated_camera.svg b/editor/icons/source/icon_interpolated_camera.svg
deleted file mode 100644
index 16fc731c12..0000000000
--- a/editor/icons/source/icon_interpolated_camera.svg
+++ /dev/null
@@ -1,259 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_camera.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_interpolated_camera.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.5491949"
- inkscape:cy="8.618964"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4144"
- width="10"
- height="5.0000172"
- x="1"
- y="1039.3622" />
- <rect
- y="1037.3622"
- x="3"
- height="9.0000172"
- width="6"
- id="rect4146"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4148"
- cx="3"
- cy="1039.3622"
- r="2" />
- <circle
- r="2"
- cy="1044.3622"
- cx="3"
- id="circle4150"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4152"
- cx="9"
- cy="1039.3622"
- r="2" />
- <circle
- r="2"
- cy="1044.3622"
- cx="9"
- id="circle4154"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 12,1040.3622 0,3 3,1 0,-5 z"
- id="rect4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4141"
- width="1"
- height="4"
- x="6"
- y="1047.3622"
- ry="0" />
- <rect
- ry="0"
- y="1047.3622"
- x="7"
- height="1.0000174"
- width="1"
- id="rect4143"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4145"
- width="1"
- height="1.0000174"
- x="7"
- y="1049.3622"
- ry="0" />
- <rect
- ry="0"
- y="1048.3622"
- x="8"
- height="1.0000174"
- width="1"
- id="rect4147"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- ry="0"
- y="1047.3622"
- x="3"
- height="4"
- width="1"
- id="rect4149"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- ry="0"
- y="1048.3622"
- x="10"
- height="2.0000174"
- width="1"
- id="rect4157"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4159"
- width="1"
- height="1.0000174"
- x="11"
- y="1047.3622"
- ry="0" />
- <rect
- ry="0"
- y="1050.3622"
- x="11"
- height="1.0000174"
- width="1"
- id="rect4161"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4163"
- width="1"
- height="2.0000174"
- x="12"
- y="1048.3622"
- ry="0" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4165"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="1048.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="3.1415927"
- sodipodi:end="0"
- d="m 7,1048.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" />
- <path
- d="m 7,-1049.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z"
- sodipodi:end="0"
- sodipodi:start="3.1415927"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="-1049.3622"
- sodipodi:cx="8"
- sodipodi:type="arc"
- id="path4167"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="scale(1,-1)" />
- <path
- transform="scale(1,-1)"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4169"
- sodipodi:type="arc"
- sodipodi:cx="11"
- sodipodi:cy="-1050.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="3.1415927"
- sodipodi:end="0"
- d="m 10,-1050.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" />
- <path
- d="m 11,-1050.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z"
- sodipodi:end="0"
- sodipodi:start="3.1415927"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="-1050.3622"
- sodipodi:cx="12"
- sodipodi:type="arc"
- id="path4171"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="scale(1,-1)" />
- <path
- d="m 10,1048.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z"
- sodipodi:end="0"
- sodipodi:start="3.1415927"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="1048.3622"
- sodipodi:cx="11"
- sodipodi:type="arc"
- id="path4173"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4175"
- sodipodi:type="arc"
- sodipodi:cx="12"
- sodipodi:cy="1048.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="3.1415927"
- sodipodi:end="0"
- d="m 11,1048.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_invalid_key.svg b/editor/icons/source/icon_invalid_key.svg
deleted file mode 100644
index cbccff571a..0000000000
--- a/editor/icons/source/icon_invalid_key.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_invalid_key.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="6.3598525"
- inkscape:cy="6.0587147"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 0.46446609,1046.2409 2.12132031,2.1213 -2.12132031,2.1213 1.41421361,1.4142 L 4,1049.7764 l 2.1213203,2.1213 1.4142136,-1.4142 -2.1213203,-2.1213 2.1213203,-2.1213 -1.4142136,-1.4142 L 4,1046.948 l -2.1213203,-2.1213 -1.41421361,1.4142 z"
- id="rect4156"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_inverse_kinematics.svg b/editor/icons/source/icon_inverse_kinematics.svg
deleted file mode 100644
index 227d22f911..0000000000
--- a/editor/icons/source/icon_inverse_kinematics.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_camera.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_inverse_kinematics.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="2.6199443"
- inkscape:cy="8.0718327"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1039.3622 0,12"
- id="path4149"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4151"
- cx="3"
- cy="1039.3622"
- r="2" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path4153"
- d="m 10,1039.3622 -7,0"
- style="fill:#fc9c9c;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
- <circle
- r="2"
- cy="1039.3622"
- cx="11"
- id="circle4155"
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4161"
- width="6"
- height="2"
- x="8"
- y="1044.3622" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11,1039.3622 0,6"
- id="path4163"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:#fc9c9c;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 10,1046.3622 0,4 -3,-2 1,-2 z"
- id="path4165"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4167"
- d="m 12,1046.3622 0,4 3,-2 -1,-2 z"
- style="fill:#fc9c9c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_item_list.svg b/editor/icons/source/icon_item_list.svg
deleted file mode 100644
index 943f6fe435..0000000000
--- a/editor/icons/source/icon_item_list.svg
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_item_list.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.1722679"
- inkscape:cy="6.5280035"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="2.0000174"
- x="4"
- y="1040.3622" />
- <rect
- y="1040.3622"
- x="7"
- height="2.0000174"
- width="2"
- id="rect4157"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4159"
- width="2"
- height="2.0000174"
- x="10"
- y="1040.3622" />
- <rect
- y="1043.3622"
- x="4"
- height="2.0000174"
- width="2"
- id="rect4161"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4163"
- width="2"
- height="2.0000174"
- x="7"
- y="1043.3622" />
- <rect
- y="1043.3622"
- x="10"
- height="2.0000174"
- width="2"
- id="rect4165"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="2"
- height="2.0000174"
- x="4"
- y="1046.3622" />
- <rect
- y="1046.3622"
- x="7"
- height="2.0000174"
- width="2"
- id="rect4169"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="2"
- height="2.0000174"
- x="10"
- y="1046.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_joy_axis.svg b/editor/icons/source/icon_joy_axis.svg
deleted file mode 100644
index 9313342a53..0000000000
--- a/editor/icons/source/icon_joy_axis.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_joy_axis.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="11.922691"
- inkscape:cy="9.5384233"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4194"
- width="7"
- height="14"
- x="27"
- y="1038.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 L 1 13 A 2 2 0 0 0 3 15 L 15 15 L 15 1 L 3 1 z M 7 3 L 9 3 A 1 1 0 0 1 10 4 L 10 6 L 12 6 A 1 1 0 0 1 13 7 L 13 9 A 1 1 0 0 1 12 10 L 10 10 L 10 12 A 1 1 0 0 1 9 13 L 7 13 A 1 1 0 0 1 6 12 L 6 10 L 4 10 A 1 1 0 0 1 3 9 L 3 7 A 1 1 0 0 1 4 6 L 6 6 L 6 4 A 1 1 0 0 1 7 3 z "
- transform="translate(0,1036.3622)"
- id="rect4196" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4251"
- cx="8"
- cy="1044.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_joy_button.svg b/editor/icons/source/icon_joy_button.svg
deleted file mode 100644
index f6d4344807..0000000000
--- a/editor/icons/source/icon_joy_button.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_joy_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="4.6871235"
- inkscape:cy="9.8655688"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4194"
- width="7"
- height="14"
- x="27"
- y="1038.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 15 L 13 15 C 14.104569 15 15 14.1046 15 13 L 15 3 C 15 1.8954 14.104569 1 13 1 L 1 1 z M 8 2 A 2 2 0 0 1 10 4 A 2 2 0 0 1 8 6 A 2 2 0 0 1 6 4 A 2 2 0 0 1 8 2 z M 4 6 A 2 2 0 0 1 6 8 A 2 2 0 0 1 4 10 A 2 2 0 0 1 2 8 A 2 2 0 0 1 4 6 z M 12 6 A 2 2 0 0 1 14 8 A 2 2 0 0 1 12 10 A 2 2 0 0 1 10 8 A 2 2 0 0 1 12 6 z M 8 10 A 2 2 0 0 1 10 12 A 2 2 0 0 1 8 14 A 2 2 0 0 1 6 12 A 2 2 0 0 1 8 10 z "
- transform="translate(0,1036.3622)"
- id="rect4196" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_joypad.svg b/editor/icons/source/icon_joypad.svg
deleted file mode 100644
index fb84462919..0000000000
--- a/editor/icons/source/icon_joypad.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_joypad.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="5.8962884"
- inkscape:cy="8.9449522"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 1 3 C 0.4477381 3.0000552 5.52e-05 3.4477381 0 4 L 0 12 C 5.52e-05 12.552262 0.4477381 12.999945 1 13 L 15 13 C 15.552262 12.999945 15.999945 12.552262 16 12 L 16 4 C 15.999945 3.4477381 15.552262 3.0000552 15 3 L 1 3 z M 3 5 L 5 5 L 5 7 L 7 7 L 7 9 L 5 9 L 5 11 L 3 11 L 3 9 L 1 9 L 1 7 L 3 7 L 3 5 z M 13.5 5 A 1.5 1.5 0 0 1 15 6.5 A 1.5 1.5 0 0 1 13.5 8 A 1.5 1.5 0 0 1 12 6.5 A 1.5 1.5 0 0 1 13.5 5 z M 10.5 8 A 1.4999913 1.4999913 0 0 1 12 9.5 A 1.4999913 1.4999913 0 0 1 10.5 11 A 1.4999913 1.4999913 0 0 1 9 9.5 A 1.4999913 1.4999913 0 0 1 10.5 8 z "
- transform="translate(0,1036.3622)"
- id="path4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_key.svg b/editor/icons/source/icon_key.svg
deleted file mode 100644
index f5d7b85381..0000000000
--- a/editor/icons/source/icon_key.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_key.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="8.7548948"
- inkscape:cy="9.2532814"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 11 4 A 4 4.0000024 0 0 0 7 8 A 4 4.0000024 0 0 0 11 12 A 4 4.0000024 0 0 0 15 8 A 4 4.0000024 0 0 0 11 4 z M 11 6 A 2.0000174 2.0000174 0 0 1 13 8 A 2.0000174 2.0000174 0 0 1 11 10 A 2.0000174 2.0000174 0 0 1 9 8 A 2.0000174 2.0000174 0 0 1 11 6 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4141"
- width="8"
- height="2"
- x="1"
- y="1043.3622" />
- <rect
- y="1045.3622"
- x="2"
- height="2"
- width="3"
- id="rect4144"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_key_hover.svg b/editor/icons/source/icon_key_hover.svg
deleted file mode 100644
index 10caa81968..0000000000
--- a/editor/icons/source/icon_key_hover.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_key_hover.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="61.401392"
- inkscape:cx="1.5457638"
- inkscape:cy="2.7778126"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.76284212;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect814"
- width="6.1027369"
- height="6.1027369"
- x="-741.52698"
- y="741.08105"
- ry="0.76285541"
- transform="rotate(-45)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_key_invalid.svg b/editor/icons/source/icon_key_invalid.svg
deleted file mode 100644
index b6407dc178..0000000000
--- a/editor/icons/source/icon_key_invalid.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key_invalid.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_key_invalid.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="0.95360267"
- inkscape:cy="5.9962147"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 0.46446609,1046.2409 2.12132031,2.1213 -2.12132031,2.1213 1.41421361,1.4142 L 4,1049.7764 l 2.1213203,2.1213 1.4142136,-1.4142 -2.1213203,-2.1213 2.1213203,-2.1213 -1.4142136,-1.4142 L 4,1046.948 l -2.1213203,-2.1213 -1.41421361,1.4142 z"
- id="rect4156"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_key_next.svg b/editor/icons/source/icon_key_next.svg
deleted file mode 100644
index 942245305c..0000000000
--- a/editor/icons/source/icon_key_next.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_key_next.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.9672408"
- inkscape:cy="7.1977527"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 11 9 L 11 11 L 9 11 L 9 13 L 11 13 L 11 15 L 13 15 L 13 13 L 15 13 L 15 11 L 13 11 L 13 9 L 11 9 z "
- transform="translate(0,1036.3622)"
- id="rect4156" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 11 1 A 4 4.0000024 0 0 0 7.1308594 4 L 1 4 L 1 6 L 2 6 L 2 8 L 5 8 L 5 6 L 7.1328125 6 A 4 4.0000024 0 0 0 10 8.8691406 L 10 8 L 13.638672 8 A 4 4.0000024 0 0 0 15 5 A 4 4.0000024 0 0 0 11 1 z M 11 3 A 2.0000174 2.0000174 0 0 1 13 5 A 2.0000174 2.0000174 0 0 1 11 7 A 2.0000174 2.0000174 0 0 1 9 5 A 2.0000174 2.0000174 0 0 1 11 3 z "
- transform="translate(0,1036.3622)"
- id="path4137-6" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_key_selected.svg b/editor/icons/source/icon_key_selected.svg
deleted file mode 100644
index 62180cca5b..0000000000
--- a/editor/icons/source/icon_key_selected.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_key_selected.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="43.417341"
- inkscape:cx="-0.88377936"
- inkscape:cy="3.8025953"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <rect
- style="fill:#84c2ff;fill-opacity:1;stroke:none;stroke-width:0.76284212;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect814"
- width="6.1027369"
- height="6.1027369"
- x="-741.52698"
- y="741.08112"
- ry="0.76285541"
- transform="rotate(-45)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_key_value.svg b/editor/icons/source/icon_key_value.svg
deleted file mode 100644
index 21780cc695..0000000000
--- a/editor/icons/source/icon_key_value.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_key_value.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="43.417341"
- inkscape:cx="3.6075137"
- inkscape:cy="3.8486599"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:0.76284212;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect814"
- width="6.1027369"
- height="6.1027369"
- x="-741.52698"
- y="741.08105"
- ry="0.76285541"
- transform="rotate(-45)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_key_xform.svg b/editor/icons/source/icon_key_xform.svg
deleted file mode 100644
index 37de107284..0000000000
--- a/editor/icons/source/icon_key_xform.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_key_xform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="43.417341"
- inkscape:cx="4.6209337"
- inkscape:cy="3.8256276"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <rect
- style="fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:0.76284212;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect814"
- width="6.1027369"
- height="6.1027369"
- x="-741.52698"
- y="741.08112"
- ry="0.76285541"
- transform="rotate(-45)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_keyboard.svg b/editor/icons/source/icon_keyboard.svg
deleted file mode 100644
index a03798e4a4..0000000000
--- a/editor/icons/source/icon_keyboard.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_keyboard.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="8.7357101"
- inkscape:cy="7.1330996"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 4 L 1 13 A 2 2 0 0 0 3 15 L 13 15 A 2 2 0 0 0 15 13 L 15 4 L 14 4 L 14 13 A 0.9999826 0.9999826 0 0 1 13 14 L 3 14 A 1 1 0 0 1 2 13 L 2 4 L 1 4 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4194"
- width="7"
- height="14"
- x="27"
- y="1038.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 2 A 1 1 0 0 0 3 3 L 3 12.083984 A 1 0.91666667 0 0 0 4 13 L 12 13 A 1 0.91666667 0 0 0 13 12.083984 L 13 3 A 1 1 0 0 0 12 2 L 4 2 z M 5 4 L 7 4 L 7 7 L 9 4 L 11 4 L 9 7 L 11 11 L 9 11 L 7 7 L 7 11 L 5 11 L 5 4 z "
- transform="translate(0,1036.3622)"
- id="rect4163" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_kinematic_body.svg b/editor/icons/source/icon_kinematic_body.svg
deleted file mode 100644
index 6a4c8965ab..0000000000
--- a/editor/icons/source/icon_kinematic_body.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite_3d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_kinematic_body.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.6970468"
- inkscape:cy="8.9585231"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 4 L 4 5 L 5 5 L 5 4 L 4 4 z M 5 5 L 5 6 L 4 6 L 4 7 L 3 7 L 3 8 L 2 8 L 2 9 L 2 11 L 3 11 L 3 9 L 4 9 L 4 10 L 4 11 L 5 11 L 5 10 L 10 10 L 10 11 L 11 11 L 11 9 L 12 9 L 12 11 L 13 11 L 13 9 L 13 8 L 12 8 L 12 7 L 11 7 L 11 6 L 10 6 L 10 5 L 9 5 L 9 6 L 6 6 L 6 5 L 5 5 z M 10 5 L 11 5 L 11 4 L 10 4 L 10 5 z M 10 11 L 8 11 L 8 12 L 10 12 L 10 11 z M 5 11 L 5 12 L 7 12 L 7 11 L 5 11 z M 5 7 L 6 7 L 6 8 L 5 8 L 5 7 z M 9 7 L 10 7 L 10 8 L 9 8 L 9 7 z "
- transform="translate(0,1036.3622)"
- id="rect4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_kinematic_body_2d.svg b/editor/icons/source/icon_kinematic_body_2d.svg
deleted file mode 100644
index 04f140b930..0000000000
--- a/editor/icons/source/icon_kinematic_body_2d.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite_3d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_kinematic_body_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.6970468"
- inkscape:cy="8.9585231"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 4 L 4 5 L 5 5 L 5 4 L 4 4 z M 5 5 L 5 6 L 4 6 L 4 7 L 3 7 L 3 8 L 2 8 L 2 9 L 2 11 L 3 11 L 3 9 L 4 9 L 4 10 L 4 11 L 5 11 L 5 10 L 10 10 L 10 11 L 11 11 L 11 9 L 12 9 L 12 11 L 13 11 L 13 9 L 13 8 L 12 8 L 12 7 L 11 7 L 11 6 L 10 6 L 10 5 L 9 5 L 9 6 L 6 6 L 6 5 L 5 5 z M 10 5 L 11 5 L 11 4 L 10 4 L 10 5 z M 10 11 L 8 11 L 8 12 L 10 12 L 10 11 z M 5 11 L 5 12 L 7 12 L 7 11 L 5 11 z M 5 7 L 6 7 L 6 8 L 5 8 L 5 7 z M 9 7 L 10 7 L 10 8 L 9 8 L 9 7 z "
- transform="translate(0,1036.3622)"
- id="rect4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_label.svg b/editor/icons/source/icon_label.svg
deleted file mode 100644
index ac9b52be6f..0000000000
--- a/editor/icons/source/icon_label.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_label.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="5.6511357"
- inkscape:cy="8.5870222"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a5efac;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 6 3 A 1.0001 1.0001 0 0 0 5.2929688 3.2929688 L 1.2929688 7.2929688 A 1.0001 1.0001 0 0 0 1.2929688 8.7070312 L 5.2929688 12.707031 A 1.0001 1.0001 0 0 0 6 13 L 14 13 A 1.0001 1.0001 0 0 0 15 12 L 15 4 A 1.0001 1.0001 0 0 0 14 3 L 6 3 z M 5 7 A 1 1 0 0 1 6 8 A 1 1 0 0 1 5 9 A 1 1 0 0 1 4 8 A 1 1 0 0 1 5 7 z "
- transform="translate(0,1036.3622)"
- id="path4164" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_large_texture.svg b/editor/icons/source/icon_large_texture.svg
deleted file mode 100644
index 4db0342041..0000000000
--- a/editor/icons/source/icon_large_texture.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_large_texture.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.856598"
- inkscape:cy="8.2673025"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 1 1 L 1 2 L 1 4 L 2 4 L 2 2 L 4 2 L 4 1 L 1 1 z M 12 1 L 12 2 L 14 2 L 14 4 L 15 4 L 15 1 L 12 1 z M 9 6 L 9 7 L 8 7 L 8 8 L 6 8 L 6 9 L 5 9 L 5 10 L 4 10 L 4 11 L 6 11 L 8 11 L 10 11 L 12 11 L 12 9 L 11 9 L 11 8 L 11 7 L 10 7 L 10 6 L 9 6 z M 1 12 L 1 14 L 1 15 L 4 15 L 4 14 L 2 14 L 2 12 L 1 12 z M 14 12 L 14 14 L 12 14 L 12 15 L 15 15 L 15 14 L 15 12 L 14 12 z "
- transform="translate(0,1036.3622)"
- id="rect4179" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_light_2d.svg b/editor/icons/source/icon_light_2d.svg
deleted file mode 100644
index 27e07a649a..0000000000
--- a/editor/icons/source/icon_light_2d.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_light_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="9.9569833"
- inkscape:cy="9.5332545"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 5 5 0 0 0 3 6 A 5 5 0 0 0 6 10.576172 L 6 13 L 10 13 L 10 10.580078 A 5 5 0 0 0 13 6 A 5 5 0 0 0 8 1 z M 8 3 A 3 3 0 0 1 11 6 A 3 3 0 0 1 8 9 A 3 3 0 0 1 5 6 A 3 3 0 0 1 8 3 z M 7 14 L 7 15 L 9 15 L 9 14 L 7 14 z "
- transform="translate(0,1036.3622)"
- id="path4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_light_occluder_2d.svg b/editor/icons/source/icon_light_occluder_2d.svg
deleted file mode 100644
index 3558f3f2da..0000000000
--- a/editor/icons/source/icon_light_occluder_2d.svg
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_light_occluder_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="6.2930917"
- inkscape:cy="8.3953902"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4187"
- width="14"
- height="2"
- x="1"
- y="1039.3622" />
- <rect
- y="1042.3622"
- x="1"
- height="2"
- width="14"
- id="rect4189"
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4191"
- width="14"
- height="2"
- x="1"
- y="1045.3622" />
- <rect
- y="1048.3622"
- x="1"
- height="2"
- width="14"
- id="rect4193"
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4195"
- width="1"
- height="14"
- x="2"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="13"
- height="14"
- width="1"
- id="rect4197"
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1037.3622"
- x="1"
- height="0.9999826"
- width="14"
- id="rect4199"
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_line_2d.svg b/editor/icons/source/icon_line_2d.svg
deleted file mode 100644
index 7f833f4a9c..0000000000
--- a/editor/icons/source/icon_line_2d.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="D:\PROJETS\INFO\GODOT\ENGINE\godot_fork\tools\editor\icons\2x\icon_line_2d.png"
- inkscape:export-xdpi="180"
- inkscape:export-ydpi="180"
- sodipodi:docname="icon_line_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="7.5587317"
- inkscape:cy="9.1781644"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1017"
- inkscape:window-x="-8"
- inkscape:window-y="32"
- inkscape:window-maximized="1"
- inkscape:snap-grids="true"
- inkscape:object-nodes="true"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#a5b7f3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98823529"
- d="m 2,1045.3622 3,4 3,-10 3,6 3,-2"
- id="path4135"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_line_edit.svg b/editor/icons/source/icon_line_edit.svg
deleted file mode 100644
index ccd94b92ed..0000000000
--- a/editor/icons/source/icon_line_edit.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_line_edit.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.632447"
- inkscape:cy="9.3208726"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 11 C 1 12.104569 1.8954305 13 3 13 L 13 13 C 14.104569 13 15 12.104569 15 11 L 13 11 L 3 11 L 1 11 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:3.16227078;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="2"
- height="5"
- x="2"
- y="1040.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_line_shape_2d.svg b/editor/icons/source/icon_line_shape_2d.svg
deleted file mode 100644
index 6a8ab39ef3..0000000000
--- a/editor/icons/source/icon_line_shape_2d.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_line_shape_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="0.66215304"
- inkscape:cy="8.0069586"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#68b6ff;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.39215687;fill-opacity:1"
- d="m 1,1037.3622 14,14"
- id="path4139"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 3,1039.3622 10,10"
- style="fill:none;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823532" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1041.3622 6,6"
- id="path4203"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_link_button.svg b/editor/icons/source/icon_link_button.svg
deleted file mode 100644
index 3872e43b29..0000000000
--- a/editor/icons/source/icon_link_button.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_link_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="5.7987745"
- inkscape:cy="9.6365238"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6 7 A 0.9999826 0.9999826 0 0 0 5 8 A 0.9999826 0.9999826 0 0 0 6 9 L 10 9 A 0.9999826 0.9999826 0 0 0 11 8 A 0.9999826 0.9999826 0 0 0 10 7 L 6 7 z "
- transform="translate(0,1036.3622)"
- id="rect4244" />
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6 3 A 5 5 0 0 0 1.6699219 5.5 A 5 5 0 0 0 1.6699219 10.5 A 5 5 0 0 0 6 13 L 7 13 L 7 11 L 6 11 A 3 3 0 0 1 3 8 A 3 3 0 0 1 6 5 L 7 5 L 7 3 L 6 3 z M 9 3 L 9 5 L 10 5 A 3 3 0 0 1 13 8 A 3 3 0 0 1 10 11 L 9 11 L 9 13 L 10 13 A 5 5 0 0 0 14.330078 10.5 A 5 5 0 0 0 14.330078 5.5 A 5 5 0 0 0 10 3 L 9 3 z "
- transform="translate(0,1036.3622)"
- id="path4225" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_list_select.svg b/editor/icons/source/icon_list_select.svg
deleted file mode 100644
index 569a0c6fea..0000000000
--- a/editor/icons/source/icon_list_select.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_list_select.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_list_select.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="27.124914"
- inkscape:cx="6.2157972"
- inkscape:cy="6.8765984"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="matrix(0.63636994,0,0,0.63636994,11.81847,382.85245)"
- inkscape:label="Layer 1"
- id="g4515"
- style="stroke:#ffffff;stroke-width:6.28565216;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 15 L 9.2578125 15 L 8.4355469 13 L 3 13 L 3 11 L 7.6113281 11 L 6.7890625 9 L 3 9 L 3 7 L 6.8867188 7 A 1.50015 1.50015 0 0 1 7.984375 6.5019531 L 7.984375 6.5 A 1.50015 1.50015 0 0 1 8.5703125 6.6113281 L 9.515625 7 L 10 7 L 10 7.1992188 L 12 8.0214844 L 12 1 L 1 1 z M 3 3 L 10 3 L 10 5 L 3 5 L 3 3 z M 10.755859 10.755859 L 11.279297 12.029297 A 1.50015 1.50015 0 0 1 11.759766 11.759766 A 1.50015 1.50015 0 0 1 12 11.320312 L 12 11.269531 L 10.755859 10.755859 z "
- transform="translate(0,1036.3622)"
- id="rect4138" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16,1047.6532 -8,-3.291 3.290998,8 0.947104,-2.8201 1.8836,1.8835 0.941801,-0.9418 -1.8836,-1.8835 z"
- id="rect4163"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_listener.svg b/editor/icons/source/icon_listener.svg
deleted file mode 100644
index f815cb842a..0000000000
--- a/editor/icons/source/icon_listener.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_listener.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_listener.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254831"
- inkscape:cx="10.056734"
- inkscape:cy="9.0499711"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.928203,1038.3622 -1.738281,1.0039 a 6,6 0 0 1 0.810547,2.9961 6,6 0 0 1 -0.808594,2.998 l 1.736328,1.002 a 8,8 0 0 0 0,-8 z"
- id="path4274"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4147"
- width="1"
- height="2"
- x="3"
- y="1049.3622" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6 1 A 5 5 0 0 0 1 6 L 3 6 A 3 3 0 0 1 6 3 A 3 3 0 0 1 9 6 L 11 6 A 5 5 0 0 0 6 1 z "
- transform="translate(0,1036.3622)"
- id="path4149" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1042.3622 c 0,4 -3,4 -3,5 0,3 -2,3 -3,3"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="csc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_load.svg b/editor/icons/source/icon_load.svg
deleted file mode 100644
index 395a5c1b8a..0000000000
--- a/editor/icons/source/icon_load.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/godotengine/godot/tools/editor/icons/2x/icon_load.png"
- inkscape:export-xdpi="180"
- inkscape:export-ydpi="180"
- sodipodi:docname="icon_load.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.3187685"
- inkscape:cy="7.6629717"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- spacingx="1"
- spacingy="1"
- empspacing="2" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4153"
- width="1"
- height="8.9999657"
- x="1"
- y="1040.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1038.3622 c -1.1045695,0 -2,0.8954 -2,2 l 1,0 c 0,-0.5523 0.4477153,-1 1,-1 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 6,6 C 5.643017,6.0002824 5.313257,6.1908435 5.1347656,6.5 5.0426478,6.6588009 4.9960226,6.8398957 5,7.0234375 L 4,13 c -0.091144,0.544728 -0.4477153,1 -1,1 l 0,1 9,0 c 1.10457,0 1.818405,-0.910429 2,-2 L 15,7 C 15.003977,6.8164581 14.957352,6.6588009 14.865234,6.5 14.686743,6.1908437 14.356983,6.0002826 14,6 Z"
- transform="translate(0,1036.3622)"
- id="rect4159"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccsccsscccc" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4182"
- width="2"
- height="1"
- x="3"
- y="1038.3622" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4184"
- d="m 5,1038.3622 c 1.10457,0 2,0.8954 2,2 l -1,0 c 0,-0.5523 -0.4477153,-1 -1,-1 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4188"
- d="m 3,1051.3622 c -1.1045695,0 -2,-0.8954 -2,-2 l 1,0 c 0,0.5523 0.4477153,1 1,1 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1040.3622"
- x="7"
- height="1"
- width="4"
- id="rect4192"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- d="M 7,1041.3622 A 1,1 0 0 1 6.2928932,1041.0693 1,1 0 0 1 6,1040.3622 l 1,0 z"
- sodipodi:end="3.1415927"
- sodipodi:start="1.5707963"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="1040.3622"
- sodipodi:cx="7"
- sodipodi:type="arc"
- id="path4208"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4210"
- sodipodi:type="arc"
- sodipodi:cx="-11"
- sodipodi:cy="-1041.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="1.5707963"
- sodipodi:end="3.1415927"
- d="m -11,-1040.3622 a 1,1 0 0 1 -0.707107,-0.2929 A 1,1 0 0 1 -12,-1041.3622 l 1,0 z"
- transform="scale(-1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_lock.svg b/editor/icons/source/icon_lock.svg
deleted file mode 100644
index 140b073e83..0000000000
--- a/editor/icons/source/icon_lock.svg
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_lock.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_lock.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.4297739"
- inkscape:cy="8.7439404"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="false"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="matrix(0.63636994,0,0,0.63636994,11.81847,382.85245)"
- inkscape:label="Layer 1"
- id="g4515"
- style="stroke:#ffffff;stroke-width:6.28565216;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 8 L 2 15 L 14 15 L 14 8 L 2 8 z M 7 10 L 9 10 L 9 13 L 7 13 L 7 10 z "
- transform="translate(0,1036.3622)"
- id="rect4139" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 5 5 0 0 0 3 6 L 5 6 A 3 3 0 0 1 8 3 A 3 3 0 0 1 11 6 L 13 6 A 5 5 0 0 0 8 1 z "
- transform="translate(0,1036.3622)"
- id="path4141" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4145"
- width="2"
- height="2"
- x="3"
- y="1042.3622" />
- <rect
- y="1042.3622"
- x="11"
- height="2"
- width="2"
- id="rect4147"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_loop.svg b/editor/icons/source/icon_loop.svg
deleted file mode 100644
index fe7f648648..0000000000
--- a/editor/icons/source/icon_loop.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_loop.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_loop.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="4.2604173"
- inkscape:cy="8.1780194"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-8"
- inkscape:label="Layer 1"
- transform="matrix(0,-1,1,0,-1021.3622,1033.3622)" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 L 8 3 L 6 3 A 5 5 0 0 0 1 8 A 5 5 0 0 0 2.0039062 10.996094 L 3.4394531 9.5605469 A 3.0000174 3.0000174 0 0 1 3 8 A 3.0000174 3.0000174 0 0 1 6 5 L 8 5 L 8 7 L 10 5.5 L 12 4 L 10 2.5 L 8 1 z M 13.996094 5.0039062 L 12.560547 6.4394531 A 3.0000174 3.0000174 0 0 1 13 8 A 3.0000174 3.0000174 0 0 1 10 11 L 8 11 L 8 9 L 6 10.5 L 4 12 L 6 13.5 L 8 15 L 8 13 L 10 13 A 5 5 0 0 0 15 8 A 5 5 0 0 0 13.996094 5.0039062 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_loop_interpolation.svg b/editor/icons/source/icon_loop_interpolation.svg
deleted file mode 100644
index 3733acb253..0000000000
--- a/editor/icons/source/icon_loop_interpolation.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_loop_interpolation.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_loop_interpolation.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.8522581"
- inkscape:cy="6.9411054"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-8"
- inkscape:label="Layer 1"
- transform="matrix(0,-1,1,0,-1021.3622,1033.3622)" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4155"
- cx="3"
- cy="1048.3622"
- r="2" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 4 3 A 2 2 0 0 0 2.2675781 4 A 2 2 0 0 0 2.0019531 5 L 2 5 L 2 5.046875 L 2 12 L 4 12 L 4 7 L 4 5 L 6 5 L 6 3 L 4 3 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- <path
- style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 6,1037.3622 0,6 4,-3 z"
- id="path4159"
- inkscape:connector-curvature="0" />
- <circle
- r="2"
- cy="1040.3622"
- cx="13"
- id="circle4161"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 12 4 L 12 9 L 12 11 L 10 11 L 10 13 L 12 13 A 2 2 0 0 0 13.732422 12 A 2 2 0 0 0 13.998047 11 L 14 11 L 14 4 L 12 4 z "
- transform="translate(0,1036.3622)"
- id="path4163" />
- <path
- inkscape:connector-curvature="0"
- id="path4165"
- d="m 10,1045.3622 0,6 -4,-3 z"
- style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_main_play.svg b/editor/icons/source/icon_main_play.svg
deleted file mode 100644
index 0fb48bb155..0000000000
--- a/editor/icons/source/icon_main_play.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_main_play.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="15.834447"
- inkscape:cy="8.0362747"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#f0f0f0;fill-rule:evenodd;stroke:#f0f0f0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
- d="m 4,1048.3622 0,-8 7,4 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_main_stop.svg b/editor/icons/source/icon_main_stop.svg
deleted file mode 100644
index 9d01bd5cf5..0000000000
--- a/editor/icons/source/icon_main_stop.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_main_stop.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.8738646"
- inkscape:cy="9.1632261"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#f0f0f0;fill-opacity:1;fill-rule:evenodd;stroke:#f0f0f0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1048.3622 0,-8 8,0 0,8 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_margin_container.svg b/editor/icons/source/icon_margin_container.svg
deleted file mode 100644
index 68a6971bd7..0000000000
--- a/editor/icons/source/icon_margin_container.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_margin_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.7167766"
- inkscape:cy="8.4381827"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4161"
- d="m 4,1042.3622 0,4 2,-2 z"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_cube.svg b/editor/icons/source/icon_material_preview_cube.svg
deleted file mode 100644
index 2e8e5a6457..0000000000
--- a/editor/icons/source/icon_material_preview_cube.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_preview_cube.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="10.554008"
- inkscape:cx="9.2398162"
- inkscape:zoom="31.999999"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="fill:#d5d5d5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8 1 L 1 4 L 1 12 L 8 15 L 15 12 L 15 4 L 8 1 z "
- transform="translate(0,1036.3622)"
- id="path4151" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1040.3622 7,3 7,-3 -7,-3 z"
- id="path4149"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f0f0f0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,1051.3622 -7,-3 0,-8 7,3 z"
- id="path4143"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path4145"
- d="m 8,1051.3622 7,-3 0,-8 -7,3 z"
- style="fill:#d5d5d5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="ccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_cube_off.svg b/editor/icons/source/icon_material_preview_cube_off.svg
deleted file mode 100644
index e03905ed05..0000000000
--- a/editor/icons/source/icon_material_preview_cube_off.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_preview_cube_off.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="9.0822476"
- inkscape:cx="11.618357"
- inkscape:zoom="31.999999"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="fill:#d5d5d5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 8 1 L 1 4 L 1 12 L 8 15 L 15 12 L 15 4 L 8 1 z "
- transform="translate(0,1036.3622)"
- id="path4151" />
- <path
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1040.3622 7,3 7,-3 -7,-3 z"
- id="path4149"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f0f0f0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,1051.3622 -7,-3 0,-8 7,3 z"
- id="path4143"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- inkscape:connector-curvature="0"
- id="path4145"
- d="m 8,1051.3622 7,-3 0,-8 -7,3 z"
- style="fill:#d5d5d5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="ccccc" />
- <path
- id="path4191"
- d="m 8,1037.3622 -7,3 0,8 7,3 7,-3 0,-8 -7,-3 z"
- style="fill:#000000;fill-opacity:0.23529412;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_light_1.svg b/editor/icons/source/icon_material_preview_light_1.svg
deleted file mode 100644
index d8335641f6..0000000000
--- a/editor/icons/source/icon_material_preview_light_1.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_material_preview_light_1.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="7.8395758"
- inkscape:cx="9.8577371"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 3 L 9 3 L 9 1 L 7 1 z M 3.7578125 2.34375 L 2.34375 3.7578125 L 3.7578125 5.171875 L 5.171875 3.7578125 L 3.7578125 2.34375 z M 12.242188 2.34375 L 10.828125 3.7578125 L 12.242188 5.171875 L 13.65625 3.7578125 L 12.242188 2.34375 z M 8 4 A 4 4 0 0 0 4 8 A 4 4 0 0 0 8 12 A 4 4 0 0 0 12 8 A 4 4 0 0 0 8 4 z M 7 5 L 9 5 L 9 6 L 9 11 L 8 11 L 8 6 L 7 6 L 7 5 z M 1 7 L 1 9 L 3 9 L 3 7 L 1 7 z M 13 7 L 13 9 L 15 9 L 15 7 L 13 7 z M 3.7578125 10.828125 L 2.34375 12.242188 L 3.7578125 13.65625 L 5.171875 12.242188 L 3.7578125 10.828125 z M 12.242188 10.828125 L 10.828125 12.242188 L 12.242188 13.65625 L 13.65625 12.242188 L 12.242188 10.828125 z M 7 13 L 7 15 L 9 15 L 9 13 L 7 13 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_light_1_off.svg b/editor/icons/source/icon_material_preview_light_1_off.svg
deleted file mode 100644
index c387b1845b..0000000000
--- a/editor/icons/source/icon_material_preview_light_1_off.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_material_preview_light_1_off.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="7.8395758"
- inkscape:cx="9.8577371"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 3 L 9 3 L 9 1 L 7 1 z M 3.7578125 2.34375 L 2.34375 3.7578125 L 3.7578125 5.171875 L 5.171875 3.7578125 L 3.7578125 2.34375 z M 12.242188 2.34375 L 10.828125 3.7578125 L 12.242188 5.171875 L 13.65625 3.7578125 L 12.242188 2.34375 z M 8 4 A 4 4 0 0 0 4 8 A 4 4 0 0 0 8 12 A 4 4 0 0 0 12 8 A 4 4 0 0 0 8 4 z M 7 5 L 9 5 L 9 6 L 9 11 L 8 11 L 8 6 L 7 6 L 7 5 z M 1 7 L 1 9 L 3 9 L 3 7 L 1 7 z M 13 7 L 13 9 L 15 9 L 15 7 L 13 7 z M 3.7578125 10.828125 L 2.34375 12.242188 L 3.7578125 13.65625 L 5.171875 12.242188 L 3.7578125 10.828125 z M 12.242188 10.828125 L 10.828125 12.242188 L 12.242188 13.65625 L 13.65625 12.242188 L 12.242188 10.828125 z M 7 13 L 7 15 L 9 15 L 9 13 L 7 13 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_light_2.svg b/editor/icons/source/icon_material_preview_light_2.svg
deleted file mode 100644
index f192c19959..0000000000
--- a/editor/icons/source/icon_material_preview_light_2.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_material_preview_light_2.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="7.4131842"
- inkscape:cx="7.6431783"
- inkscape:zoom="45.254832"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 3 L 9 3 L 9 1 L 7 1 z M 3.7578125 2.34375 L 2.34375 3.7578125 L 3.7578125 5.171875 L 5.171875 3.7578125 L 3.7578125 2.34375 z M 12.242188 2.34375 L 10.828125 3.7578125 L 12.242188 5.171875 L 13.65625 3.7578125 L 12.242188 2.34375 z M 8 4 A 4 4 0 0 0 4 8 A 4 4 0 0 0 8 12 A 4 4 0 0 0 12 8 A 4 4 0 0 0 8 4 z M 7 5 L 9 5 L 9 7 L 9 8 L 7 8 L 7 9 L 9 9 L 9 10 L 7 10 L 6 10 L 6 8 L 6 7 L 8 7 L 8 6 L 7 6 L 7 5 z M 1 7 L 1 9 L 3 9 L 3 7 L 1 7 z M 13 7 L 13 9 L 15 9 L 15 7 L 13 7 z M 3.7578125 10.828125 L 2.34375 12.242188 L 3.7578125 13.65625 L 5.171875 12.242188 L 3.7578125 10.828125 z M 12.242188 10.828125 L 10.828125 12.242188 L 12.242188 13.65625 L 13.65625 12.242188 L 12.242188 10.828125 z M 7 13 L 7 15 L 9 15 L 9 13 L 7 13 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_light_2_off.svg b/editor/icons/source/icon_material_preview_light_2_off.svg
deleted file mode 100644
index 9d71248cba..0000000000
--- a/editor/icons/source/icon_material_preview_light_2_off.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_material_preview_light_2_off.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="7.4131842"
- inkscape:cx="7.6431783"
- inkscape:zoom="45.254832"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 3 L 9 3 L 9 1 L 7 1 z M 3.7578125 2.34375 L 2.34375 3.7578125 L 3.7578125 5.171875 L 5.171875 3.7578125 L 3.7578125 2.34375 z M 12.242188 2.34375 L 10.828125 3.7578125 L 12.242188 5.171875 L 13.65625 3.7578125 L 12.242188 2.34375 z M 8 4 A 4 4 0 0 0 4 8 A 4 4 0 0 0 8 12 A 4 4 0 0 0 12 8 A 4 4 0 0 0 8 4 z M 7 5 L 9 5 L 9 7 L 9 8 L 7 8 L 7 9 L 9 9 L 9 10 L 7 10 L 6 10 L 6 8 L 6 7 L 8 7 L 8 6 L 7 6 L 7 5 z M 1 7 L 1 9 L 3 9 L 3 7 L 1 7 z M 13 7 L 13 9 L 15 9 L 15 7 L 13 7 z M 3.7578125 10.828125 L 2.34375 12.242188 L 3.7578125 13.65625 L 5.171875 12.242188 L 3.7578125 10.828125 z M 12.242188 10.828125 L 10.828125 12.242188 L 12.242188 13.65625 L 13.65625 12.242188 L 12.242188 10.828125 z M 7 13 L 7 15 L 9 15 L 9 13 L 7 13 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- <path
- id="path4176"
- transform="translate(0,1036.3622)"
- d="M 7 1 L 7 3 L 9 3 L 9 1 L 7 1 z M 3.7578125 2.34375 L 2.34375 3.7578125 L 3.7578125 5.171875 L 5.171875 3.7578125 L 3.7578125 2.34375 z M 12.242188 2.34375 L 10.828125 3.7578125 L 12.242188 5.171875 L 13.65625 3.7578125 L 12.242188 2.34375 z M 8 4 A 4 4 0 0 0 4 8 A 4 4 0 0 0 8 12 A 4 4 0 0 0 12 8 A 4 4 0 0 0 8 4 z M 7 5 L 9 5 L 9 7 L 9 8 L 7 8 L 7 9 L 9 9 L 9 10 L 7 10 L 6 10 L 6 8 L 6 7 L 8 7 L 8 6 L 7 6 L 7 5 z M 1 7 L 1 9 L 3 9 L 3 7 L 1 7 z M 13 7 L 13 9 L 15 9 L 15 7 L 13 7 z M 3.7578125 10.828125 L 2.34375 12.242188 L 3.7578125 13.65625 L 5.171875 12.242188 L 3.7578125 10.828125 z M 12.242188 10.828125 L 10.828125 12.242188 L 12.242188 13.65625 L 13.65625 12.242188 L 12.242188 10.828125 z M 7 13 L 7 15 L 9 15 L 9 13 L 7 13 z "
- style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_sphere.svg b/editor/icons/source/icon_material_preview_sphere.svg
deleted file mode 100644
index 76a6ec97bd..0000000000
--- a/editor/icons/source/icon_material_preview_sphere.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_material_preview_sphere.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="7.280687"
- inkscape:cx="4.325506"
- inkscape:zoom="31.999999"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 6 3 A 2 2 0 0 1 8 5 A 2 2 0 0 1 6 7 A 2 2 0 0 1 4 5 A 2 2 0 0 1 6 3 z "
- transform="translate(0,1036.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_material_preview_sphere_off.svg b/editor/icons/source/icon_material_preview_sphere_off.svg
deleted file mode 100644
index f9c8cadb34..0000000000
--- a/editor/icons/source/icon_material_preview_sphere_off.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_material_preview_sphere_off.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="7.561937"
- inkscape:cx="7.8880061"
- inkscape:zoom="31.999999"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 6 3 A 2 2 0 0 1 8 5 A 2 2 0 0 1 6 7 A 2 2 0 0 1 4 5 A 2 2 0 0 1 6 3 z "
- transform="translate(0,1036.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_matrix.svg b/editor/icons/source/icon_matrix.svg
deleted file mode 100644
index eacf2cdc9d..0000000000
--- a/editor/icons/source/icon_matrix.svg
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_matrix.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="6.6294931"
- inkscape:cy="6.9144846"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="1"
- height="12"
- x="1"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="1"
- height="1.0000174"
- width="3"
- id="rect4156"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="3"
- height="1"
- x="1"
- y="1050.3622" />
- <rect
- y="1050.3622"
- x="10"
- height="1"
- width="3"
- id="rect4160"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4162"
- width="3"
- height="1.0000174"
- x="10"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="12"
- height="12"
- width="1"
- id="rect4164"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4161"
- width="2"
- height="2"
- x="3"
- y="1041.3622" />
- <rect
- y="1041.3622"
- x="6"
- height="2"
- width="2"
- id="rect4163"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4165"
- width="2"
- height="2"
- x="9"
- y="1041.3622" />
- <rect
- y="1044.3622"
- x="3"
- height="2"
- width="2"
- id="rect4167"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4169"
- width="2"
- height="2"
- x="6"
- y="1044.3622" />
- <rect
- y="1044.3622"
- x="9"
- height="2"
- width="2"
- id="rect4171"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4173"
- width="2"
- height="2"
- x="3"
- y="1047.3622" />
- <rect
- y="1047.3622"
- x="6"
- height="2"
- width="2"
- id="rect4175"
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ea686c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4177"
- width="2"
- height="2"
- x="9"
- y="1047.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_menu_button.svg b/editor/icons/source/icon_menu_button.svg
deleted file mode 100644
index 9cfbf2d502..0000000000
--- a/editor/icons/source/icon_menu_button.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_menu_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.4706473"
- inkscape:cy="10.780886"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 5 L 15 5 L 15 1 L 1 1 z M 6 2 L 10 2 L 8 4 L 6 2 z "
- transform="translate(0,1036.3622)"
- id="rect4156" />
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 6 A 1 1 0 0 0 1 7 L 1 14 A 1 1 0 0 0 2 15 L 14 15 A 1 1 0 0 0 15 14 L 15 7 A 1 1 0 0 0 14 6 L 2 6 z M 3 8 L 13 8 L 13 10 L 3 10 L 3 8 z M 3 11 L 13 11 L 13 13 L 3 13 L 3 11 z "
- transform="translate(0,1036.3622)"
- id="rect4161" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mesh.svg b/editor/icons/source/icon_mesh.svg
deleted file mode 100644
index f3c33a37b1..0000000000
--- a/editor/icons/source/icon_mesh.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="5.2137269"
- inkscape:cy="10.663006"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 4.7304688 14 L 11.271484 14 A 2 2 0 0 0 13 15 A 2 2 0 0 0 15 13 A 2 2 0 0 0 13.96875 11.25 L 14 11.25 L 14 4.7285156 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z M 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 12 4.7304688 L 12 10.585938 L 5.4140625 4 z M 4 5.4140625 L 10.585938 12 L 4.7285156 12 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mesh_instance.svg b/editor/icons/source/icon_mesh_instance.svg
deleted file mode 100644
index 51e6447eb2..0000000000
--- a/editor/icons/source/icon_mesh_instance.svg
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_mesh_instance.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="8.6608726"
- inkscape:cy="8.8510443"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4162"
- cx="3"
- cy="1049.3622"
- r="2" />
- <rect
- y="1039.3622"
- x="2"
- height="8.4999828"
- width="2"
- id="rect4164"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- r="2"
- cy="1039.3622"
- cx="3"
- id="circle4166"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4168"
- width="2"
- height="8.4999828"
- x="1038.3622"
- y="-11.499983"
- transform="matrix(0,1,-1,0,0,0)" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4170"
- cx="13"
- cy="1039.3622"
- r="2" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4172"
- width="2"
- height="8.4999828"
- x="12"
- y="1039.1122" />
- <circle
- r="2"
- cy="1049.3622"
- cx="13"
- id="circle4174"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- transform="matrix(0,1,-1,0,0,0)"
- y="-12.249991"
- x="1048.3622"
- height="8.4999828"
- width="2"
- id="rect4176"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 3,1039.3622 10,10"
- id="path4178"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mesh_library.svg b/editor/icons/source/icon_mesh_library.svg
deleted file mode 100644
index b908a4db6e..0000000000
--- a/editor/icons/source/icon_mesh_library.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_mesh_library.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="10.839298"
- inkscape:cy="6.916789"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 4.7304688 14 L 7 14 L 7 12 L 4.7285156 12 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 L 7 8.4140625 L 7 8 A 2.0002 2.0002 0 0 1 7.8085938 6.3945312 L 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 12 4.7304688 L 12 6 A 2.0002 2.0002 0 0 1 12.998047 6.2714844 A 2.0002 2.0002 0 0 1 14 6 L 14 4.7285156 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z M 9 8 L 9 9 L 9 14 L 9 15 L 14 15 C 14.552285 15 15 14.5523 15 14 L 15 9 C 15 8.4477 14.552285 8 14 8 L 14 12 L 13 11 L 12 12 L 12 8 L 9 8 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_aabb.svg b/editor/icons/source/icon_mini_aabb.svg
deleted file mode 100644
index ebfd505bea..0000000000
--- a/editor/icons/source/icon_mini_aabb.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_aabb.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="5.0272453"
- inkscape:cy="5.132155"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1041.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 l 2,0 0,-6 -2,0 z m 0,2 0,2 a 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z"
- id="path4893"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f39bad;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1046.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 l 2,0 0,-6 -2,0 z m 0,2 0,2 a 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z"
- id="path4234"
- inkscape:connector-curvature="0" />
- <path
- id="path4145"
- d="m 12.999983,1043.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 12.999983,1049.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- id="path4147" />
- <rect
- transform="matrix(0,1,1,0,0,0)"
- y="11"
- x="1041.3622"
- height="2.0000002"
- width="8.0000172"
- id="rect4149"
- style="fill:#ee7991;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#f39bad;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1044.3622 0,8 2,0 a 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 l 0,-2 -2,0 z m 2,4 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 l 0,-2 z"
- id="path4151"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_array.svg b/editor/icons/source/icon_mini_array.svg
deleted file mode 100644
index a0a2014fbb..0000000000
--- a/editor/icons/source/icon_mini_array.svg
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="9.4953495"
- inkscape:cy="4.8350599"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4245"
- width="2"
- height="2.999984"
- x="11"
- y="1047.3622" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 14,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4253"
- inkscape:connector-curvature="0" />
- <rect
- y="1047.3622"
- x="7"
- height="2.999984"
- width="2"
- id="rect4150"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4152"
- d="m 10,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="path4849"
- d="m 4,1050.3625 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1044.3625 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4851" />
- <rect
- transform="scale(1,-1)"
- y="-1050.3622"
- x="4"
- height="6.0000014"
- width="2"
- id="rect4853"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4141"
- width="1"
- height="2.0000174"
- x="10"
- y="1044.3622" />
- <rect
- y="1044.3622"
- x="14"
- height="2.0000174"
- width="1"
- id="rect4143"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_basis.svg b/editor/icons/source/icon_mini_basis.svg
deleted file mode 100644
index a9d3be82ea..0000000000
--- a/editor/icons/source/icon_mini_basis.svg
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_basis.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="13.930099"
- inkscape:cy="4.8789967"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4364"
- width="2"
- height="5.9999666"
- x="-2"
- y="1044.3621"
- transform="scale(-1,1)" />
- <rect
- y="1044.3621"
- x="-2"
- height="2.0000174"
- width="1"
- id="rect4368"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <path
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1044.3622 a 3,3 0 0 1 3,3 H 3 a 1.0000174,1.0000174 0 0 0 -1,-1 z"
- id="path4370"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4378"
- d="m 2,1050.3622 a 3,3 0 0 0 3,-3 H 3 a 1.0000174,1.0000174 0 0 1 -1,1 z"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,1)"
- y="1042.3621"
- x="-2"
- height="3.9999492"
- width="2"
- id="rect4384"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect857"
- width="2"
- height="2.0000174"
- x="-9"
- y="1044.3622"
- transform="scale(-1,1)" />
- <path
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path859"
- sodipodi:type="arc"
- sodipodi:cx="7"
- sodipodi:cy="1046.3622"
- sodipodi:rx="2"
- sodipodi:ry="2"
- sodipodi:start="1.5707963"
- sodipodi:end="4.712389"
- sodipodi:open="true"
- d="m 7.0000001,1048.3622 a 2,2 0 0 1 -1.7320509,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.7320508,-1" />
- <path
- d="m -6.9999999,1050.3622 a 2,2 0 0 1 -1.7320509,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.7320508,-1"
- sodipodi:open="true"
- sodipodi:end="4.712389"
- sodipodi:start="1.5707963"
- sodipodi:ry="2"
- sodipodi:rx="2"
- sodipodi:cy="1048.3622"
- sodipodi:cx="-7"
- sodipodi:type="arc"
- id="path861"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <rect
- transform="scale(-1,1)"
- y="1048.3622"
- x="-7"
- height="2.0000174"
- width="2"
- id="rect863"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#eef39f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4412"
- width="2"
- height="3.9999492"
- x="10"
- y="1046.3622" />
- <rect
- y="1042.3622"
- x="10"
- height="1.9999928"
- width="2"
- id="rect4432"
- style="fill:#eef39f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,1)"
- y="1044.3622"
- x="-16"
- height="2.0000174"
- width="2"
- id="rect902"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- d="m 14,1048.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1"
- sodipodi:open="true"
- sodipodi:end="4.712389"
- sodipodi:start="1.5707963"
- sodipodi:ry="2"
- sodipodi:rx="2"
- sodipodi:cy="1046.3622"
- sodipodi:cx="14"
- sodipodi:type="arc"
- id="path904"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="scale(-1,1)"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path906"
- sodipodi:type="arc"
- sodipodi:cx="-14"
- sodipodi:cy="1048.3622"
- sodipodi:rx="2"
- sodipodi:ry="2"
- sodipodi:start="1.5707963"
- sodipodi:end="4.712389"
- sodipodi:open="true"
- d="m -14,1050.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1" />
- <rect
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect908"
- width="2"
- height="2.0000174"
- x="-14"
- y="1048.3622"
- transform="scale(-1,1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_boolean.svg b/editor/icons/source/icon_mini_boolean.svg
deleted file mode 100644
index eb17279a62..0000000000
--- a/editor/icons/source/icon_mini_boolean.svg
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_boolean.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000002"
- inkscape:cx="3.4941399"
- inkscape:cy="6.2480463"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4364"
- width="2"
- height="5.9999666"
- x="-2"
- y="1044.3622"
- transform="scale(-1,1)" />
- <rect
- y="1044.3622"
- x="-2"
- height="2.0000174"
- width="1"
- id="rect4368"
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <path
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1044.3623 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- id="path4370"
- inkscape:connector-curvature="0" />
- <rect
- transform="scale(1,-1)"
- y="-1047.3622"
- x="13"
- height="5"
- width="2"
- id="rect4374"
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4378"
- d="m 2,1050.3623 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,1)"
- y="1042.3622"
- x="-2"
- height="3.9999492"
- width="2"
- id="rect4384"
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16,1050.3623 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4392"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1044.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z"
- id="path4148"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#8da6f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11,1044.3622 a 3,3 0 0 0 -3,3 3,3 0 0 0 3,3 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 z m 0,2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 1.0000174,1.0000174 0 0 1 -1,-1 1.0000174,1.0000174 0 0 1 1,-1 z"
- id="path4174"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_color.svg b/editor/icons/source/icon_mini_color.svg
deleted file mode 100644
index cdc176e00c..0000000000
--- a/editor/icons/source/icon_mini_color.svg
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_color.svg">
- <defs
- id="defs4">
- <clipPath
- id="clipPath4253"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4199"
- clipPathUnits="userSpaceOnUse">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- id="path4201"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4392">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- id="path4394"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath4196"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4198"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="5.4869016"
- inkscape:cy="6.8192689"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 4 4 A 3 3 0 0 0 1 7 A 3 3 0 0 0 4 10 L 5 10 L 5 8 L 4 8 A 1.0000174 1.0000174 0 0 1 3 7 A 1.0000174 1.0000174 0 0 1 4 6 L 5 6 L 5 4 L 4 4 z "
- transform="translate(0,1040.3622)"
- id="rect4667" />
- <path
- style="fill:#70bfff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 14 4 A 3 3 0 0 0 11 7 L 11 10 L 13 10 L 13 7 A 1.0000174 1.0000174 0 0 1 14 6 L 15 6 L 15 4 L 14 4 z "
- transform="translate(0,1040.3622)"
- id="rect4245" />
- <path
- style="fill:#7aff70;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 6 2 L 6 7 A 3 3 0 0 0 9 10 L 10 10 L 10 8 L 9 8 A 1.0000174 1.0000174 0 0 1 8 7 L 8 2 L 6 2 z "
- transform="translate(0,1040.3622)"
- id="rect4815" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_color_array.svg b/editor/icons/source/icon_mini_color_array.svg
deleted file mode 100644
index 2ec0e186b5..0000000000
--- a/editor/icons/source/icon_mini_color_array.svg
+++ /dev/null
@@ -1,250 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_color_array.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000002"
- inkscape:cx="2.3647109"
- inkscape:cy="10.148485"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1050.3622"
- x="0"
- height="1.9999826"
- width="4"
- id="rect4158"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4160"
- width="2"
- height="12.000017"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4162"
- width="4"
- height="2.0000174"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4155"
- width="4"
- height="1.9999826"
- x="-16"
- y="1050.3622"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="12.000017"
- width="2"
- id="rect4157"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="2.0000174"
- width="4"
- id="rect4159"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <path
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 6 3.5 A 3 3 0 0 0 3 6.5 A 3 3 0 0 0 6 9.5 L 7 9.5 L 7 7.5 L 6 7.5 A 1.0000174 1.0000174 0 0 1 5 6.5 A 1.0000174 1.0000174 0 0 1 6 5.5 L 7 5.5 L 7 3.5 L 6 3.5 z "
- transform="translate(0,1040.3622)"
- id="rect4667" />
- <rect
- style="fill:#70bfff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4245"
- width="2"
- height="2.999984"
- x="10"
- y="1046.8622" />
- <path
- style="fill:#70bfff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 13,1043.8622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4253"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#7aff70;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 7 1.5 L 7 6.5 A 3 3 0 0 0 10 9.5 L 10 7.5 A 1.0000174 1.0000174 0 0 1 9 6.5 L 9 1.5 L 7 1.5 z "
- transform="translate(0,1040.3622)"
- id="rect4815" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_dictionary.svg b/editor/icons/source/icon_mini_dictionary.svg
deleted file mode 100644
index 813ba97613..0000000000
--- a/editor/icons/source/icon_mini_dictionary.svg
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_dictionary.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="4.4726786"
- inkscape:cy="6.5768127"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- transform="scale(1,-1)"
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4607"
- width="2"
- height="4.9999828"
- x="13"
- y="-1047.3623" />
- <rect
- transform="scale(1,-1)"
- y="-1046.3623"
- x="15"
- height="2.0000174"
- width="1"
- id="rect4609"
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4611"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4617"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4621"
- d="m 11,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4412"
- width="2"
- height="3.9999492"
- x="6"
- y="1046.3623" />
- <rect
- y="1042.3623"
- x="6"
- height="1.9999928"
- width="2"
- id="rect4432"
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1044.362 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4843" />
- <path
- id="path4845"
- d="m 3,1050.362 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4847"
- width="2"
- height="7.9999843"
- x="3"
- y="1042.3622" />
- <rect
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4144"
- width="1"
- height="1.9999928"
- x="11"
- y="1044.3622" />
- <rect
- y="1048.3622"
- x="11"
- height="1.9999928"
- width="1"
- id="rect4146"
- style="fill:#77edb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_float.svg b/editor/icons/source/icon_mini_float.svg
deleted file mode 100644
index 1007955ea9..0000000000
--- a/editor/icons/source/icon_mini_float.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_float.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="5.8021561"
- inkscape:cy="5.7934213"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1045.3623"
- x="0"
- height="4.9999828"
- width="2"
- id="rect4498"
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4500"
- width="2"
- height="2.0000174"
- x="2"
- y="1046.3623" />
- <path
- inkscape:connector-curvature="0"
- id="path4502"
- d="m 3,1042.3623 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4504"
- width="2"
- height="5"
- x="6"
- y="-1047.3622"
- transform="scale(1,-1)" />
- <path
- inkscape:connector-curvature="0"
- id="path4506"
- d="m 9,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="-1047.3623"
- x="12"
- height="4.9999828"
- width="2"
- id="rect4508"
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(1,-1)" />
- <path
- inkscape:connector-curvature="0"
- id="path4512"
- d="m 15,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#61daf4;fill-opacity:1;stroke:none"
- id="rect4142"
- width="1"
- height="2"
- x="9"
- y="1048.3622" />
- <rect
- y="1044.3622"
- x="14"
- height="2"
- width="2"
- id="rect4144"
- style="fill:#61daf4;fill-opacity:1;stroke:none" />
- <rect
- style="fill:#61daf4;fill-opacity:1;stroke:none"
- id="rect4146"
- width="1"
- height="2"
- x="15"
- y="1048.3622" />
- <rect
- y="1042.3622"
- x="3"
- height="2"
- width="1"
- id="rect4148"
- style="fill:#61daf4;fill-opacity:1;stroke:none" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_float_array.svg b/editor/icons/source/icon_mini_float_array.svg
deleted file mode 100644
index 86807ca731..0000000000
--- a/editor/icons/source/icon_mini_float_array.svg
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_float_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="64.000006"
- inkscape:cx="5.0069742"
- inkscape:cy="7.9592671"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1050.3622"
- x="0"
- height="2.0000174"
- width="4"
- id="rect4158"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4160"
- width="2"
- height="12.000017"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4162"
- width="4"
- height="2.0000174"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4170"
- width="4"
- height="2.0000174"
- x="-16"
- y="1050.3622"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="12.000017"
- width="2"
- id="rect4172"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="2.0000174"
- width="4"
- id="rect4175"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <path
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1042.3622 a 3,3 0 0 0 -3,3 l 0,5 2,0 0,-2 1,0 0,-2 -1,0 0,-1 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4146" />
- <path
- style="fill:#61daf4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1042.3622 0,5 a 3,3 0 0 0 3,3 l 0,-2 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-1 1,0 0,-2 -1,0 0,-2 -2,0 z"
- id="rect4498"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#c6f2fb;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1042.3622 0,5 a 3,3 0 0 0 3,3 l 0,-2 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-5 -2,0 z"
- id="rect4504"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_image.svg b/editor/icons/source/icon_mini_image.svg
deleted file mode 100644
index 57faded5c8..0000000000
--- a/editor/icons/source/icon_mini_image.svg
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_image.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="3.9410412"
- inkscape:cy="6.0438587"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4412"
- width="2"
- height="3.9999492"
- x="0"
- y="1045.3622" />
- <rect
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4414"
- width="2"
- height="5.9999843"
- x="3"
- y="1043.3622" />
- <path
- inkscape:connector-curvature="0"
- id="path4428"
- d="m 5,1043.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1046.3622"
- x="6"
- height="3.0000174"
- width="2"
- id="rect4430"
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1041.3622"
- x="0"
- height="1.9999928"
- width="2"
- id="rect4432"
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1043.3622"
- x="6"
- height="5.9999843"
- width="2"
- id="rect4175"
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1043.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- id="path4177"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4179"
- width="2"
- height="3.0000174"
- x="9"
- y="1046.3622" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 14,1049.3624 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4843" />
- <path
- id="path4845"
- d="m 14,1043.3624 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4847"
- width="2"
- height="6.0000014"
- x="14"
- y="-1049.3622"
- transform="scale(1,-1)" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 13,1052.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- id="path4408" />
- <rect
- style="fill:#93f1b9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4410"
- width="1"
- height="2"
- x="12"
- y="1050.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_input.svg b/editor/icons/source/icon_mini_input.svg
deleted file mode 100644
index 9e966f77d1..0000000000
--- a/editor/icons/source/icon_mini_input.svg
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_input.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="2.8417629"
- inkscape:cy="8.0681941"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- id="path4809"
- d="m 10,1050.3625 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1044.3625 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- id="path4811" />
- <rect
- transform="scale(-1,-1)"
- y="-1052.3622"
- x="-10"
- height="7.9999843"
- width="2"
- id="rect4813"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4412"
- width="2"
- height="3.9999492"
- x="0"
- y="1046.3625" />
- <rect
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4414"
- width="2"
- height="5.9999843"
- x="3"
- y="1044.3624" />
- <path
- inkscape:connector-curvature="0"
- id="path4428"
- d="m 5,1044.3625 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1047.3624"
- x="6"
- height="3.0000174"
- width="2"
- id="rect4430"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1042.3625"
- x="0"
- height="1.9999928"
- width="2"
- id="rect4432"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4455"
- width="2"
- height="4.9999828"
- x="13"
- y="-1047.3625" />
- <rect
- transform="scale(1,-1)"
- y="-1046.3625"
- x="15"
- height="2.0000174"
- width="1"
- id="rect4457"
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#adf18f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16,1050.3625 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4459"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_int_array.svg b/editor/icons/source/icon_mini_int_array.svg
deleted file mode 100644
index 23b086d5e1..0000000000
--- a/editor/icons/source/icon_mini_int_array.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_int_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="4.3434649"
- inkscape:cy="6.0813959"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 0 0 L 0 2 L 0 10 L 0 12 L 2 12 L 4 12 L 4 10 L 2 10 L 2 2 L 4 2 L 4 0 L 0 0 z M 12 0 L 12 2 L 14 2 L 14 10 L 12 10 L 12 12 L 16 12 L 16 10 L 16 2 L 16 0 L 14 0 L 12 0 z "
- transform="translate(0,1040.3622)"
- id="rect4158" />
- <path
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 2 L 3 4 L 5 4 L 5 2 L 3 2 z M 3 6 L 3 10 L 5 10 L 5 6 L 3 6 z "
- id="rect4412"
- transform="translate(0,1040.3622)" />
- <path
- style="fill:#c8e7f9;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 5 4 L 5 10 L 7 10 L 7 6 A 1.0000174 1.0000174 0 0 1 8 7 L 8 10 L 10 10 L 10 7 A 3 3 0 0 0 7 4 L 5 4 z "
- transform="translate(0,1040.3622)"
- id="rect4414" />
- <path
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 10 2 L 10 7 A 3 3 0 0 0 13 10 L 13 8 A 1.0000174 1.0000174 0 0 1 12 7 L 12 6 L 13 6 L 13 4 L 12 4 L 12 2 L 10 2 z "
- id="rect4455"
- transform="translate(0,1040.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_integer.svg b/editor/icons/source/icon_mini_integer.svg
deleted file mode 100644
index c21322adb2..0000000000
--- a/editor/icons/source/icon_mini_integer.svg
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_integer.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254837"
- inkscape:cx="7.0145943"
- inkscape:cy="6.0949691"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4412"
- width="2"
- height="3.9999492"
- x="1"
- y="1046.3622" />
- <rect
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4414"
- width="2"
- height="5.9999843"
- x="4"
- y="1044.3622" />
- <path
- inkscape:connector-curvature="0"
- id="path4428"
- d="m 7,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1047.3622"
- x="8"
- height="3.0000174"
- width="2"
- id="rect4430"
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1042.3622"
- x="1"
- height="1.9999928"
- width="2"
- id="rect4432"
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4455"
- width="2"
- height="4.9999828"
- x="12"
- y="-1047.3622" />
- <rect
- transform="scale(1,-1)"
- y="-1046.3622"
- x="14"
- height="2.0000174"
- width="2"
- id="rect4457"
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 15,1050.3621 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4459"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4142"
- width="2"
- height="1.9999928"
- x="5"
- y="1044.3622" />
- <rect
- style="fill:#7dc6ef;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4144"
- width="1"
- height="2.0000174"
- x="15"
- y="-1050.3622"
- transform="scale(1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_matrix3.svg b/editor/icons/source/icon_mini_matrix3.svg
deleted file mode 100644
index 27adb40b17..0000000000
--- a/editor/icons/source/icon_mini_matrix3.svg
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_matrix3.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="13.930099"
- inkscape:cy="4.8789967"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4364"
- width="2"
- height="5.9999666"
- x="-2"
- y="1044.3621"
- transform="scale(-1,1)" />
- <rect
- y="1044.3621"
- x="-2"
- height="2.0000174"
- width="1"
- id="rect4368"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <path
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1044.3622 a 3,3 0 0 1 3,3 H 3 a 1.0000174,1.0000174 0 0 0 -1,-1 z"
- id="path4370"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4378"
- d="m 2,1050.3622 a 3,3 0 0 0 3,-3 H 3 a 1.0000174,1.0000174 0 0 1 -1,1 z"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,1)"
- y="1042.3621"
- x="-2"
- height="3.9999492"
- width="2"
- id="rect4384"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect857"
- width="2"
- height="2.0000174"
- x="-9"
- y="1044.3622"
- transform="scale(-1,1)" />
- <path
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path859"
- sodipodi:type="arc"
- sodipodi:cx="7"
- sodipodi:cy="1046.3622"
- sodipodi:rx="2"
- sodipodi:ry="2"
- sodipodi:start="1.5707963"
- sodipodi:end="4.712389"
- sodipodi:open="true"
- d="m 7.0000001,1048.3622 a 2,2 0 0 1 -1.7320509,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.7320508,-1" />
- <path
- d="m -6.9999999,1050.3622 a 2,2 0 0 1 -1.7320509,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.7320508,-1"
- sodipodi:open="true"
- sodipodi:end="4.712389"
- sodipodi:start="1.5707963"
- sodipodi:ry="2"
- sodipodi:rx="2"
- sodipodi:cy="1048.3622"
- sodipodi:cx="-7"
- sodipodi:type="arc"
- id="path861"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <rect
- transform="scale(-1,1)"
- y="1048.3622"
- x="-7"
- height="2.0000174"
- width="2"
- id="rect863"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#eef39f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4412"
- width="2"
- height="3.9999492"
- x="10"
- y="1046.3622" />
- <rect
- y="1042.3622"
- x="10"
- height="1.9999928"
- width="2"
- id="rect4432"
- style="fill:#eef39f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(-1,1)"
- y="1044.3622"
- x="-16"
- height="2.0000174"
- width="2"
- id="rect902"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- d="m 14,1048.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1"
- sodipodi:open="true"
- sodipodi:end="4.712389"
- sodipodi:start="1.5707963"
- sodipodi:ry="2"
- sodipodi:rx="2"
- sodipodi:cy="1046.3622"
- sodipodi:cx="14"
- sodipodi:type="arc"
- id="path904"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- transform="scale(-1,1)"
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path906"
- sodipodi:type="arc"
- sodipodi:cx="-14"
- sodipodi:cy="1048.3622"
- sodipodi:rx="2"
- sodipodi:ry="2"
- sodipodi:start="1.5707963"
- sodipodi:end="4.712389"
- sodipodi:open="true"
- d="m -14,1050.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1" />
- <rect
- style="fill:#e3ec69;fill-opacity:1;stroke:none;stroke-width:1.41422868;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect908"
- width="2"
- height="2.0000174"
- x="-14"
- y="1048.3622"
- transform="scale(-1,1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_object.svg b/editor/icons/source/icon_mini_object.svg
deleted file mode 100644
index 380be34903..0000000000
--- a/editor/icons/source/icon_mini_object.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_object.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="1.4141272"
- inkscape:cy="5.8428771"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1050.3622 a 3,3 0 0 0 3,-3 3,3 0 0 0 -3,-3 l 0,-2 -2,0 0,8 2,0 z m 0,-2 0,-2 a 1.0000174,1.0000174 0 0 1 1,1 1.0000174,1.0000174 0 0 1 -1,1 z"
- id="path4843"
- inkscape:connector-curvature="0" />
- <path
- id="path4849"
- d="m 3,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4851" />
- <path
- style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 15,1044.3622 0,5 a 3,3 0 0 1 -3,3 l 0,-2 a 1.0000174,1.0000174 0 0 0 1,-1 l 0,-5 2,0 z"
- id="rect4293-6"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1050.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- id="path4174" />
- <path
- id="path4176"
- d="m 3,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#79f3e8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4140"
- width="1"
- height="2"
- x="11"
- y="1050.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_path.svg b/editor/icons/source/icon_mini_path.svg
deleted file mode 100644
index ef247b8b8c..0000000000
--- a/editor/icons/source/icon_mini_path.svg
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_path.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="8.9618505"
- inkscape:cy="5.9123718"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="-1047.3622"
- x="6"
- height="4.9999828"
- width="2"
- id="rect4293"
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(1,-1)" />
- <rect
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4295"
- width="2"
- height="2.0000174"
- x="8"
- y="-1046.3622"
- transform="scale(1,-1)" />
- <path
- inkscape:connector-curvature="0"
- id="path4297"
- d="m 9,1050.3621 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4299"
- width="2"
- height="7.9999828"
- x="11"
- y="-1050.3622" />
- <path
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 13,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- id="path4301"
- inkscape:connector-curvature="0" />
- <rect
- transform="scale(1,-1)"
- y="-1050.3622"
- x="14"
- height="3.0000348"
- width="2"
- id="rect4303"
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1048.3625 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- id="path4461" />
- <path
- id="path4463"
- d="m 2,1042.3625 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4465"
- width="2"
- height="7.9999843"
- x="-2"
- y="-1050.3622"
- transform="scale(-1,-1)" />
- <rect
- transform="scale(1,-1)"
- y="-1050.3622"
- x="9"
- height="2.0000174"
- width="1"
- id="rect4143"
- style="fill:#6993ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_plane.svg b/editor/icons/source/icon_mini_plane.svg
deleted file mode 100644
index bc3992cdd6..0000000000
--- a/editor/icons/source/icon_mini_plane.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_plane.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="5.5391662"
- inkscape:cy="7.4683409"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- id="path4809"
- d="m 3,1048.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1042.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- id="path4811" />
- <rect
- transform="scale(-1,-1)"
- y="-1050.3619"
- x="-3"
- height="7.9999843"
- width="2"
- id="rect4813"
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4815"
- width="2"
- height="4.9999828"
- x="7"
- y="-1047.3623" />
- <path
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4819"
- inkscape:connector-curvature="0" />
- <rect
- y="1044.3622"
- x="11"
- height="5.9999843"
- width="2"
- id="rect4324"
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 13,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- id="path4342"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#f77070;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4344"
- width="2"
- height="3.0000174"
- x="14"
- y="1047.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_quat.svg b/editor/icons/source/icon_mini_quat.svg
deleted file mode 100644
index 27188a3410..0000000000
--- a/editor/icons/source/icon_mini_quat.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_quat.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="7.0330887"
- inkscape:cy="6.0717303"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1049.3625 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4843" />
- <path
- id="path4845"
- d="m 3,1043.3625 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4847"
- width="2"
- height="7.9999843"
- x="3"
- y="-1051.3622"
- transform="scale(1,-1)" />
- <rect
- y="-1046.3623"
- x="13"
- height="4.9999828"
- width="2"
- id="rect4293-6"
- style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(1,-1)" />
- <rect
- style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4295-2"
- width="1"
- height="2.0000174"
- x="15"
- y="-1045.3623"
- transform="scale(1,-1)" />
- <path
- inkscape:connector-curvature="0"
- id="path4297-9"
- d="m 16,1049.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#f298c0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1043.3622 0,3 a 3,3 0 0 0 3,3 l 2,0 0,-6 -2,0 0,4 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-3 -2,0 z"
- id="rect4366"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ec69a3;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 11 3 A 3 3 0 0 0 8 6 A 3 3 0 0 0 11 9 L 13 9 L 13 3 L 11 3 z M 11 5 L 11 7 A 1.0000174 1.0000174 0 0 1 10 6 A 1.0000174 1.0000174 0 0 1 11 5 z "
- transform="translate(0,1040.3622)"
- id="path4849" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_raw_array.svg b/editor/icons/source/icon_mini_raw_array.svg
deleted file mode 100644
index cb735b5615..0000000000
--- a/editor/icons/source/icon_mini_raw_array.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_raw_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="-2.5947078"
- inkscape:cy="7.7867435"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 0 0 L 0 2 L 0 10 L 0 12 L 4 12 L 4 10 L 2 10 L 2 2 L 4 2 L 4 0 L 2 0 L 0 0 z M 12 0 L 12 2 L 14 2 L 14 10 L 12 10 L 12 12 L 16 12 L 16 10 L 16 2 L 16 0 L 14 0 L 12 0 z "
- transform="translate(0,1040.3622)"
- id="rect4158" />
- <rect
- style="fill:#69ec9e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4245"
- width="2"
- height="2.999984"
- x="2"
- y="1046.3622" />
- <rect
- y="1043.3622"
- x="5"
- height="2.0000174"
- width="1"
- id="rect4251"
- style="fill:#69ec9e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#69ec9e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1043.3623 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4253"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#aaf4c8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1049.3622 0,-6 2,0 0,4 a 1.0000174,1.0000174 0 0 0 1,-1 l 0,-3 2,0 0,3 0,1 a 1.0000174,1.0000174 0 0 0 1,-1 l 0,-3 2,0 0,3 a 3,3 0 0 1 -3,3 l -2,0 0,-0.1758 a 3,3 0 0 1 -1,0.1758 l -2,0 z"
- id="path4771"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_rect2.svg b/editor/icons/source/icon_mini_rect2.svg
deleted file mode 100644
index ded27f049f..0000000000
--- a/editor/icons/source/icon_mini_rect2.svg
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_rect2.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000002"
- inkscape:cx="2.7000496"
- inkscape:cy="5.1067461"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1047.3622"
- x="0"
- height="2.999984"
- width="2"
- id="rect4601"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4605"
- d="m 3,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4607"
- width="2"
- height="4.9999828"
- x="13"
- y="-1047.3622" />
- <rect
- transform="scale(1,-1)"
- y="-1046.3622"
- x="15"
- height="2.0000174"
- width="1"
- id="rect4609"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16,1050.3621 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4611"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4617"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4619"
- width="1"
- height="2.0000174"
- x="7"
- y="-1050.3622"
- transform="scale(1,-1)" />
- <path
- inkscape:connector-curvature="0"
- id="path4621"
- d="m 7,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4144"
- width="1"
- height="2.0000174"
- x="12"
- y="1044.3622" />
- <path
- inkscape:connector-curvature="0"
- id="path4146"
- d="m 12,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- y="-1050.3622"
- x="12"
- height="2.0000174"
- width="1"
- id="rect4148"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 12,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4150"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4152"
- d="m 7,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="1"
- x="6"
- y="1046.3622" />
- <rect
- style="fill:#f191a5;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4156"
- width="1"
- height="2.0000174"
- x="3"
- y="-1046.3622"
- transform="scale(1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_rid.svg b/editor/icons/source/icon_mini_rid.svg
deleted file mode 100644
index 6df13ae43d..0000000000
--- a/editor/icons/source/icon_mini_rid.svg
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_rid.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254836"
- inkscape:cx="8.577775"
- inkscape:cy="6.6679205"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-nodes="true"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4245"
- width="2"
- height="2.999984"
- x="1"
- y="1047.3622" />
- <rect
- y="1042.3623"
- x="7"
- height="1.9998953"
- width="2"
- id="rect4247"
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4249"
- width="2"
- height="4.0000014"
- x="7"
- y="1046.3622" />
- <rect
- y="1044.3622"
- x="4"
- height="2.0000174"
- width="1"
- id="rect4251"
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4253"
- inkscape:connector-curvature="0" />
- <path
- id="path4260"
- d="m 13,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 13,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4262" />
- <rect
- y="1042.3622"
- x="14"
- height="7.9999843"
- width="2"
- id="rect4264"
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4142"
- width="1"
- height="2.0000174"
- x="13"
- y="1044.3622" />
- <rect
- y="1048.3622"
- x="13"
- height="2.0000174"
- width="1"
- id="rect4144"
- style="fill:#69ec9a;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_string.svg b/editor/icons/source/icon_mini_string.svg
deleted file mode 100644
index a655f70d33..0000000000
--- a/editor/icons/source/icon_mini_string.svg
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_string.svg">
- <defs
- id="defs4">
- <clipPath
- id="clipPath4253"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4199"
- clipPathUnits="userSpaceOnUse">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- id="path4201"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4392">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- id="path4394"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath4196"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4198"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4253-75"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255-3"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4199-5"
- clipPathUnits="userSpaceOnUse">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- id="path4201-6"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4392-2">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- id="path4394-9"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath4196-1"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4198-2"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4253-7"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255-5"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4199-3"
- clipPathUnits="userSpaceOnUse">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- id="path4201-5"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4392-6">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- id="path4394-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- id="clipPath4196-9"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4198-1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.223117"
- inkscape:cy="7.0200789"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1042.3622 a 3,3 0 0 0 -3,3 l 0,2 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 3,-3 l 0,-2 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4534"
- inkscape:connector-curvature="0" />
- <rect
- transform="scale(1,-1)"
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4540"
- width="2"
- height="4.9999828"
- x="7"
- y="-1047.3623" />
- <rect
- transform="scale(1,-1)"
- y="-1046.3623"
- x="9"
- height="2.0000174"
- width="2"
- id="rect4542"
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4544"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 15 4 A 3 3 0 0 0 12 7 L 12 10 L 14 10 L 14 7 A 1.0000174 1.0000174 0 0 1 15 6 L 16 6 L 16 4 L 15 4 z "
- transform="translate(0,1040.3622)"
- id="rect4245-5" />
- <rect
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4208"
- width="1"
- height="2"
- x="0"
- y="1048.3622" />
- <rect
- y="1042.3622"
- x="5"
- height="2"
- width="1"
- id="rect4210"
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4165"
- width="1"
- height="2.0000174"
- x="10"
- y="-1050.3622"
- transform="scale(1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_string_array.svg b/editor/icons/source/icon_mini_string_array.svg
deleted file mode 100644
index cd2e850c49..0000000000
--- a/editor/icons/source/icon_mini_string_array.svg
+++ /dev/null
@@ -1,289 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_string_array.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-753">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-56"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-2">
- <path
- inkscape:connector-curvature="0"
- id="path4201-9"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-1"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-27"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-0">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-9"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-75">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-3"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-5">
- <path
- inkscape:connector-curvature="0"
- id="path4201-6"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-2"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-9"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-2"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253-7-3">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255-5-6"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199-3-0">
- <path
- inkscape:connector-curvature="0"
- id="path4201-5-6"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4392-6-2"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4394-2-6"
- d="m 8.072266,1041.3622 a 5,5 0 0 0 -3.607422,1.4648 5,5 0 0 0 0,7.0704 5,5 0 0 0 7.070312,0 l -1.416015,-1.4161 A 3,3 0 0 1 8,1049.3622 a 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 3,3 0 0 1 2.119141,0.8809 l 1.416015,-1.4161 a 5,5 0 0 0 -3.46289,-1.4648 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4196-9-1">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0624999,1025.8622 a 3.375,2.9999997 0 0 0 -3.375,3 3.375,2.9999997 0 0 0 1.6875,2.5957 l 0,9.8115 a 3.375,2.9999997 0 0 0 -1.6875,2.5928 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.3750001,-3 3.375,2.9999997 0 0 0 -1.6875001,-2.5957 l 0,-8.7832 11.9311511,10.6054 a 3.375,2.9999997 0 0 0 -0.118651,0.7735 3.375,2.9999997 0 0 0 3.375,3 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -0.873413,0.1025 l -11.927857,-10.6025 9.884399,0 a 3.375,2.9999997 0 0 0 2.916871,1.5 3.375,2.9999997 0 0 0 3.375,-3 3.375,2.9999997 0 0 0 -3.375,-3 3.375,2.9999997 0 0 0 -2.920166,1.5 l -11.037964,0 a 3.375,2.9999997 0 0 0 -2.9168701,-1.5 z"
- id="path4198-1-8"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254838"
- inkscape:cx="8.8695857"
- inkscape:cy="6.6197"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 0 0 L 0 2 L 0 10 L 0 12 L 2 12 L 4 12 L 4 10 L 2 10 L 2 2 L 4 2 L 4 0 L 2 0 L 0 0 z M 12 0 L 12 2 L 14 2 L 14 10 L 12 10 L 12 12 L 16 12 L 16 10 L 16 0 L 12 0 z "
- transform="translate(0,1040.3622)"
- id="rect4158" />
- <path
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1042.3622 a 3,3 0 0 0 -3,3 l 0,2 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 3,-3 l 0,-2 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4184"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#6ba7ec;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 14,1044.3622 a 3,3 0 0 0 -3,3 l 0,3 2,0 0,-3 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4534"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#b5d3f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1042.3622 0,5 a 3,3 0 0 0 3,3 l 0,-2 a 1.0000174,1.0000174 0 0 1 -1,-1 l 0,-1 1,0 0,-2 -1,0 0,-2 -2,0 z"
- id="rect4540"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#6ba7ec;fill-opacity:1;stroke:none"
- id="rect4184"
- width="1"
- height="2"
- x="7"
- y="1042.3622" />
- <rect
- y="1048.3622"
- x="2"
- height="2"
- width="1"
- id="rect4186"
- style="fill:#6ba7ec;fill-opacity:1;stroke:none" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_transform.svg b/editor/icons/source/icon_mini_transform.svg
deleted file mode 100644
index 6da4eb806d..0000000000
--- a/editor/icons/source/icon_mini_transform.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_transform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.2643591"
- inkscape:cy="7.6152896"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#f6a86e;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 4,1042.3622 3.0917969,1044.5438 2,1042.3622 l -2,0 2,4 -2,4 2,0 0.9082031,-2.1816 L 4,1050.3622 l 2,0 -2,-4 2,-4 z"
- id="rect4214"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccc" />
- <path
- style="fill:#f8bf95;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 9,1042.3622 a 3,3 0 0 0 -3,3 l 0,5 2,0 0,-2 1,0 0,-2 -1,0 0,-1 a 1.0000174,1.0000174 0 0 1 1,-1 l 1,0 0,-2 -1,0 z"
- id="rect4455"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#f6a86e;fill-opacity:1;stroke:none;stroke-width:20;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 10 4 L 10 6 L 10 8 L 10 10 L 12 10 L 12 8 L 13 9 L 14 8 L 14 10 L 16 10 L 16 8 L 16 6 L 16 4 L 14 4 L 13 6 L 12 4 L 10 4 z "
- transform="translate(0,1040.3622)"
- id="rect4231" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_transform2D.svg b/editor/icons/source/icon_mini_transform2D.svg
deleted file mode 100644
index e8e38f1256..0000000000
--- a/editor/icons/source/icon_mini_transform2D.svg
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_transform2D.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="6.4108823"
- inkscape:cy="5.363647"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1048.3622"
- x="5"
- height="2"
- width="5"
- id="rect4763"
- style="fill:#ddf4aa;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- sodipodi:open="true"
- d="m 7.0000001,1050.3622 a 2,2 0 0 1 -1.7320509,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.7320508,-1"
- sodipodi:end="4.712389"
- sodipodi:start="1.5707963"
- sodipodi:ry="2"
- sodipodi:rx="2"
- sodipodi:cy="1048.3622"
- sodipodi:cx="7"
- sodipodi:type="arc"
- id="path4765"
- style="fill:#ddf4aa;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4767"
- d="m 7,1042.3622 v 2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 v 2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 A 3,3 0 0 0 7,1042.3622 Z"
- style="fill:#ddf4aa;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:1.85164022;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect823"
- width="6"
- height="2"
- x="0"
- y="1042.3622" />
- <rect
- y="1043.3622"
- x="2"
- height="7.0000172"
- width="2"
- id="rect825"
- style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2.00000238;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#c4ec69;fill-opacity:1;stroke:none;stroke-width:2.1380899;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 10 2 L 10 10 L 12 10 A 4 4 0 0 0 15.464844 8 A 4 4 0 0 0 15.464844 4 A 4 4 0 0 0 12 2 L 10 2 z M 12 4 A 2.0000174 2.0000174 0 0 1 13.732422 5 A 2.0000174 2.0000174 0 0 1 13.732422 7 A 2.0000174 2.0000174 0 0 1 12 8 L 12 4 z "
- transform="translate(0,1040.3622)"
- id="rect827" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_variant.svg b/editor/icons/source/icon_mini_variant.svg
deleted file mode 100644
index 6883baa584..0000000000
--- a/editor/icons/source/icon_mini_variant.svg
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_variant.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="5.8864792"
- inkscape:cy="6.2518921"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1044.3622"
- x="3"
- height="5.9999666"
- width="2"
- id="rect4320"
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1044.3622"
- x="6"
- height="5.9999843"
- width="2"
- id="rect4324"
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4326"
- width="1"
- height="2.0000174"
- x="3"
- y="1044.3622" />
- <path
- inkscape:connector-curvature="0"
- id="path4328"
- d="m 3,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 14,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4330" />
- <rect
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4334"
- width="2"
- height="7.9999843"
- x="14"
- y="-1052.3622"
- transform="scale(1,-1)" />
- <rect
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4338"
- width="2"
- height="2.9999826"
- x="11"
- y="-1047.3622"
- transform="scale(1,-1)" />
- <path
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4340"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1044.3622 a 3,3 0 0 1 3,3 l -2,0 a 1.0000174,1.0000174 0 0 0 -1,-1 l 0,-2 z"
- id="path4342"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#69ecbd;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4344"
- width="2"
- height="3.0000174"
- x="9"
- y="1047.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_vector2.svg b/editor/icons/source/icon_mini_vector2.svg
deleted file mode 100644
index 5c9aaeccff..0000000000
--- a/editor/icons/source/icon_mini_vector2.svg
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_vector2.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="-0.61809703"
- inkscape:cy="8.3891446"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1050.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- id="path4301"
- inkscape:connector-curvature="0" />
- <rect
- y="1044.3622"
- x="4"
- height="3"
- width="2"
- id="rect4303"
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4159"
- width="5"
- height="2"
- x="11"
- y="1048.3622" />
- <rect
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4661"
- width="2"
- height="5.9999828"
- x="1"
- y="1044.3622" />
- <rect
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4667"
- width="1"
- height="2.0000174"
- x="9"
- y="1044.3622" />
- <path
- inkscape:connector-curvature="0"
- id="path4669"
- d="m 9,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- y="-1050.3622"
- x="9"
- height="2.0000174"
- width="1"
- id="rect4671"
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 9,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- id="path4673"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4677"
- sodipodi:type="arc"
- sodipodi:cx="13"
- sodipodi:cy="1048.3622"
- sodipodi:rx="2"
- sodipodi:ry="2"
- sodipodi:start="1.5707963"
- sodipodi:end="4.712389"
- d="m 13,1050.3622 a 2,2 0 0 1 -1.732051,-1 2,2 0 0 1 0,-2 2,2 0 0 1 1.732051,-1"
- sodipodi:open="true" />
- <path
- style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 13,1042.3622 0,2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597656,-1.5 z"
- id="path4679"
- inkscape:connector-curvature="0" />
- <rect
- y="1042.3622"
- x="12"
- height="2"
- width="1"
- id="rect4684"
- style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_vector2_array.svg b/editor/icons/source/icon_mini_vector2_array.svg
deleted file mode 100644
index 03850f7c86..0000000000
--- a/editor/icons/source/icon_mini_vector2_array.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_vector2_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="7.5779741"
- inkscape:cy="8.910903"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1050.3622"
- x="0"
- height="2.0000174"
- width="4"
- id="rect4158"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4160"
- width="2"
- height="12.000017"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4162"
- width="4"
- height="2.0000174"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4170"
- width="4"
- height="2.0000174"
- x="-16"
- y="1050.3622"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="12.000017"
- width="2"
- id="rect4172"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="2.0000174"
- width="4"
- id="rect4175"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <path
- style="fill:#bd91f1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 3 L 3 9 L 5 9 A 3 3 0 0 0 8 6 L 8 3 L 6 3 L 6 6 A 1.0000174 1.0000174 0 0 1 5 7 L 5 3 L 3 3 z "
- transform="translate(0,1040.3622)"
- id="path4301" />
- <path
- style="fill:#dcc5f8;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8.9999969,1042.3622 0,2 1.0000001,0 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 2,2 0 0 0 -1.732422,1 2,2 0 0 0 -0.265625,1 l -0.00195,0 0,0.047 0,1.9531 2,0 3,0 0,-2 -3,0 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597659,-1.5001 l -1.0000001,0 z"
- id="rect4159"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_vector3.svg b/editor/icons/source/icon_mini_vector3.svg
deleted file mode 100644
index e99a211ae0..0000000000
--- a/editor/icons/source/icon_mini_vector3.svg
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_vector3.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000002"
- inkscape:cx="5.3282118"
- inkscape:cy="6.0229362"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- inkscape:connector-curvature="0"
- id="path4705"
- d="m 3.0004202,1050.3622 a 3,3 0 0 0 3,-3 l -2,0 a 1.0000174,1.0000174 0 0 1 -1,1 l 0,2 z"
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4707"
- width="2"
- height="3"
- x="4.0004206"
- y="1044.3622" />
- <rect
- y="1044.3622"
- x="1.0004202"
- height="5.9999828"
- width="2"
- id="rect4711"
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1044.3622"
- x="9.0004196"
- height="2.0000174"
- width="1"
- id="rect4713"
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 9.0004202,1044.3622 a 3,3 0 0 0 -3,3 l 2,0 a 1.0000174,1.0000174 0 0 1 1,-1 l 0,-2 z"
- id="path4715"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4717"
- width="1"
- height="2.0000174"
- x="9.0004196"
- y="-1050.3622"
- transform="scale(1,-1)" />
- <path
- inkscape:connector-curvature="0"
- id="path4719"
- d="m 9.0004202,1050.3622 a 3,3 0 0 1 -3,-3 l 2,0 a 1.0000174,1.0000174 0 0 0 1,1 l 0,2 z"
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 13 2 L 13 3 A 1 1 0 0 1 14 4 A 1 1 0 0 1 13 5 L 13 7 A 3 3 0 0 0 15.597656 5.5 A 3 3 0 0 0 15.597656 2.5 A 3 3 0 0 0 15.234375 2 L 13 2 z "
- transform="translate(0,1040.3622)"
- id="path4723" />
- <rect
- style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4725"
- width="3.9995804"
- height="2"
- x="12.00042"
- y="1042.3622" />
- <path
- style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 13.00042,1045.3622 0,2 a 1,1 0 0 1 1,1 1,1 0 0 1 -1,1 l 0,2 a 3,3 0 0 0 2.597656,-1.5 3,3 0 0 0 0,-3 3,3 0 0 0 -2.597656,-1.5 z"
- id="path4727"
- inkscape:connector-curvature="0" />
- <rect
- y="1049.3622"
- x="12.00042"
- height="2"
- width="1"
- id="rect4729"
- style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mini_vector3_array.svg b/editor/icons/source/icon_mini_vector3_array.svg
deleted file mode 100644
index bbac554614..0000000000
--- a/editor/icons/source/icon_mini_vector3_array.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_mini_vector3_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="4.9242706"
- inkscape:cy="8.3355467"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <rect
- y="1050.3622"
- x="0"
- height="2.0000174"
- width="4"
- id="rect4158"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4160"
- width="2"
- height="12.000017"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4162"
- width="4"
- height="2.0000174"
- x="0"
- y="1040.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4170"
- width="4"
- height="2.0000174"
- x="-16"
- y="1050.3622"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="12.000017"
- width="2"
- id="rect4172"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <rect
- y="1040.3622"
- x="-16"
- height="2.0000174"
- width="4"
- id="rect4175"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="scale(-1,1)" />
- <path
- style="fill:#e286f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 3 L 3 9 L 5 9 A 3 3 0 0 0 8 6 L 8 3 L 6 3 L 6 6 A 1.0000174 1.0000174 0 0 1 5 7 L 5 3 L 3 3 z "
- transform="translate(0,1040.3622)"
- id="path4705" />
- <path
- style="fill:#eeb9f6;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 8 1 L 8 3 L 9 3 L 10 3 A 1 1 0 0 1 9 4 L 9 6 A 1 1 0 0 1 10 7 A 1 1 0 0 1 9 8 L 8 8 L 8 10 L 9 10 A 3 3 0 0 0 11.597656 8.5 A 3 3 0 0 0 11.597656 5.5 A 3 3 0 0 0 11.232422 4.9980469 A 3 3 0 0 0 11.597656 4.5 A 3 3 0 0 0 11.996094 3 L 12 3 L 12 1 L 11.234375 1 L 9 1 L 8 1 z "
- transform="translate(0,1040.3622)"
- id="path4723" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mirror_x.svg b/editor/icons/source/icon_mirror_x.svg
deleted file mode 100644
index ca28fec4f8..0000000000
--- a/editor/icons/source/icon_mirror_x.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_move.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_mirror_x.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.7305801"
- inkscape:cy="8.1905621"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 4,1042.3622 -2,2 2,2"
- id="path816"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 2,1044.3622 H 13"
- id="path818"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path820"
- d="m 12,1042.3622 2,2 -2,2"
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mirror_y.svg b/editor/icons/source/icon_mirror_y.svg
deleted file mode 100644
index 922caf6efc..0000000000
--- a/editor/icons/source/icon_mirror_y.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_move.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_mirror_y.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.7305801"
- inkscape:cy="8.1905621"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 11.012128,1048.3548 a 1.0001,1.0001 0 0 0 -1.7167967,-0.6973 l -0.2929688,0.293 v -7.1719 l 0.2929688,0.293 a 1.0001,1.0001 0 0 0 1.7148437,-0.7266 1.0001,1.0001 0 0 0 -0.300781,-0.6875 l -2.0000003,-2 a 1.0001,1.0001 0 0 0 -1.4140624,0 l -1.9999998,2 a 1.0001,1.0001 0 1 0 1.4140622,1.4141 l 0.2929688,-0.293 v 7.1719 l -0.2929688,-0.293 a 1.0001,1.0001 0 1 0 -1.4140622,1.4141 l 1.9999998,2 a 1.0001,1.0001 0 0 0 1.4140624,0 l 2.0000003,-2 a 1.0001,1.0001 0 0 0 0.302734,-0.7168 z"
- id="path816"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_mouse.svg b/editor/icons/source/icon_mouse.svg
deleted file mode 100644
index 731ceeefd8..0000000000
--- a/editor/icons/source/icon_mouse.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_mouse.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.1067779"
- inkscape:cy="6.9900832"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1.1015625 A 5 5 0 0 0 3 6 L 7 6 L 7 1.1015625 z M 9 1.1054688 L 9 6 L 13 6 A 5 5 0 0 0 9 1.1054688 z M 3 8 L 3 10 A 5 5 0 0 0 8 15 A 5 5 0 0 0 13 10 L 13 8 L 3 8 z "
- transform="translate(0,1036.3622)"
- id="path4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_move_down.svg b/editor/icons/source/icon_move_down.svg
deleted file mode 100644
index 911def98b8..0000000000
--- a/editor/icons/source/icon_move_down.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_move_down.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="-0.21847599"
- inkscape:cy="8.1503711"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 4,1045.348 4,5 4,-5"
- id="path814"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 8,1038.348 v 11"
- id="path816"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_move_point.svg b/editor/icons/source/icon_move_point.svg
deleted file mode 100644
index c951d6b90a..0000000000
--- a/editor/icons/source/icon_move_point.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_edit_pivot.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_move_point.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="25.84375"
- inkscape:cx="8.9607405"
- inkscape:cy="10.687849"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 9.2128906 14.892578 L 6.6132812 8.5722656 A 1.50015 1.50015 0 0 1 7.984375 6.5019531 L 7.984375 6.5 A 1.50015 1.50015 0 0 1 8.5703125 6.6113281 L 14.888672 9.2109375 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 10.755859 10.755859 L 11.279297 12.029297 A 1.50015 1.50015 0 0 1 11.759766 11.759766 A 1.50015 1.50015 0 0 1 12.029297 11.28125 L 10.755859 10.755859 z "
- transform="translate(0,1036.3622)"
- id="path4137" />
- <path
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 3 A 5.0000172 5.0000172 0 0 0 3 8 A 5.0000172 5.0000172 0 0 0 8 13 A 5.0000172 5.0000172 0 0 0 8.4257812 12.978516 L 6.6132812 8.5722656 A 1.50015 1.50015 0 0 1 7.984375 6.5019531 L 7.984375 6.5 A 1.50015 1.50015 0 0 1 8.5703125 6.6113281 L 12.978516 8.4238281 A 5.0000172 5.0000172 0 0 0 13 8 A 5.0000172 5.0000172 0 0 0 8 3 z M 10.755859 10.755859 L 11.199219 11.835938 A 5.0000172 5.0000172 0 0 0 11.837891 11.203125 L 10.755859 10.755859 z "
- transform="translate(0,1036.3622)"
- id="circle4156" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16,1047.6532 -8,-3.291 3.290998,8 0.947104,-2.8201 1.8836,1.8835 0.941801,-0.9418 -1.8836,-1.8835 z"
- id="rect4163"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_move_up.svg b/editor/icons/source/icon_move_up.svg
deleted file mode 100644
index 4e24791efb..0000000000
--- a/editor/icons/source/icon_move_up.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_arrow_left.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_move_up.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.8620142"
- inkscape:cy="9.0057643"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.99607843;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 4,1043.3622 4,-5 4,5"
- id="path814"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.99607843;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 8,1050.3622 v -11"
- id="path816"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_multi_edit.svg b/editor/icons/source/icon_multi_edit.svg
deleted file mode 100644
index ef63861e97..0000000000
--- a/editor/icons/source/icon_multi_edit.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_edit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_multi_edit.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000002"
- inkscape:cx="5.8408976"
- inkscape:cy="8.1515472"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1.7071068,1047.8266 1,1051.3622 l 3.5355339,-0.7071 7.7781741,-7.7782 -2.828427,-2.8284 z m 9.1923882,-9.1924 2.828427,2.8285 1.414214,-1.4142 -2.828428,-2.8285 z"
- id="rect4135"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="2"
- x="1"
- y="1037.3622" />
- <rect
- y="1041.3622"
- x="1"
- height="2"
- width="2"
- id="rect4156"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="2"
- height="2"
- x="5"
- y="1037.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_multi_line.svg b/editor/icons/source/icon_multi_line.svg
deleted file mode 100644
index 542e311286..0000000000
--- a/editor/icons/source/icon_multi_line.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_multi_line.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="8.0670393"
- inkscape:cy="9.3567993"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4137"
- width="5"
- height="1.9999478"
- x="10"
- y="1037.3622" />
- <rect
- y="-8"
- x="1037.3622"
- height="7.000001"
- width="2.0000174"
- id="rect4158"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- transform="matrix(0,1,-1,0,0,0)" />
- <rect
- y="1041.3622"
- x="1"
- height="1.9999478"
- width="11"
- id="rect4155"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4157"
- width="4"
- height="1.9999478"
- x="1"
- y="1045.3622" />
- <rect
- y="1045.3622"
- x="7"
- height="1.9999478"
- width="8"
- id="rect4159"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="13"
- height="1.9999478"
- x="1"
- y="1049.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_multi_mesh.svg b/editor/icons/source/icon_multi_mesh.svg
deleted file mode 100644
index 22f843a686..0000000000
--- a/editor/icons/source/icon_multi_mesh.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_multi_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="19.153224"
- inkscape:cy="8.0775961"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 4.7304688 14 L 6 14 L 6 13 L 6 12 L 4.7285156 12 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 L 7.5859375 9 L 9 9 L 9 8 L 9 7.5859375 L 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 12 4.7265625 L 12 6 L 14 6 L 14 4.7304688 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z M 11 8 L 11 9.5859375 L 11 11 L 9.5859375 11 L 8 11 L 8 12 L 8 13 L 11 13 L 11 14 L 11 16 L 13 16 L 13 15 L 13 13 L 15 13 L 16 13 L 16 11 L 14 11 L 13 11 L 13 8 L 12 8 L 11 8 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_multi_mesh_instance.svg b/editor/icons/source/icon_multi_mesh_instance.svg
deleted file mode 100644
index deceae5a03..0000000000
--- a/editor/icons/source/icon_multi_mesh_instance.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_multi_mesh_instance.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254832"
- inkscape:cx="7.9179235"
- inkscape:cy="7.0878016"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 4.7304688 14 L 6 14 L 6 13 L 6 12 L 4.7285156 12 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 L 7.5859375 9 L 9 9 L 9 8 L 9 7.5859375 L 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 12 4.7265625 L 12 6 L 14 6 L 14 4.7304688 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z M 12 8 L 12 10.585938 L 11 9.5859375 L 11 11 L 9.5859375 11 L 10.585938 12 L 8 12 L 8 13 L 9 13 L 11 13 L 11 14 L 11.271484 14 A 2 2 0 0 0 13 15 L 13 13 L 15 13 A 2 2 0 0 0 13.96875 11.25 L 14 11.25 L 14 11 L 13 11 L 13 8 L 12 8 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 11,1044.3622 0,3 -3,0 0,2 3,0 0,3 2,0 0,-3 3,0 0,-2 -3,0 0,-3 -2,0 z"
- id="rect4199"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_multi_script.svg b/editor/icons/source/icon_multi_script.svg
deleted file mode 100644
index 07c49383a9..0000000000
--- a/editor/icons/source/icon_multi_script.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_g_d_script.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_multi_script.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.3086348"
- inkscape:cy="8.7213858"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 6.4355469 3.2578125 A 5.0000172 5.0000172 0 0 0 5.7460938 3.5371094 L 3.7578125 2.34375 L 2.34375 3.7578125 L 3.5390625 5.7519531 A 5.0000172 5.0000172 0 0 0 3.2539062 6.4375 L 1 7 L 1 9 L 3.2578125 9.5644531 A 5.0000172 5.0000172 0 0 0 3.5371094 10.251953 L 2.34375 12.242188 L 3.7578125 13.65625 L 5 12.912109 L 5 8 L 6 8 A 2.0000174 2.0000174 0 0 1 8 6 L 8 5 L 12.912109 5 L 13.65625 3.7578125 L 12.242188 2.34375 L 10.248047 3.5390625 A 5.0000172 5.0000172 0 0 0 9.5625 3.2539062 L 9 1 L 7 1 z "
- transform="translate(0,1036.3622)"
- id="path4176" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:0.99999714;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1043.3622 v 3 H 7 v 2 h 3 v 3 h 2 v -3 h 3 v -2 h -3 v -3 z"
- id="rect817"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_native_script.svg b/editor/icons/source/icon_native_script.svg
deleted file mode 100644
index 33a8e52a5d..0000000000
--- a/editor/icons/source/icon_native_script.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_g_d_script.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_g_d_native.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.4177687"
- inkscape:cy="8.8552476"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 6.4355469 3.2578125 A 5.0000172 5.0000172 0 0 0 5.7460938 3.5371094 L 3.7578125 2.34375 L 2.34375 3.7578125 L 3.5390625 5.7519531 A 5.0000172 5.0000172 0 0 0 3.2539062 6.4375 L 1 7 L 4 7 L 4 8 L 4 9 L 6 9 L 6 8.0488281 A 2.0000174 2.0000174 0 0 1 6 8 A 2.0000174 2.0000174 0 0 1 8 6 A 2.0000174 2.0000174 0 0 1 10 8 L 10 9 L 15 9 L 15 7 L 12.742188 6.4355469 A 5.0000172 5.0000172 0 0 0 12.462891 5.7480469 L 13.65625 3.7578125 L 12.242188 2.34375 L 10.248047 3.5390625 A 5.0000172 5.0000172 0 0 0 9.5625 3.2539062 L 9 1 L 7 1 z M 1 8 L 1 12 L 1 16 L 3 16 A 3 3 0 0 0 6 13 A 3 3 0 0 0 3 10 L 3 8 L 1 8 z M 7 8 L 7 10 L 9 10 L 9 8 L 7 8 z M 10 10 L 10 16 L 12 16 L 12 12 A 1.0000174 1.0000174 0 0 1 13 13 L 13 16 L 15 16 L 15 13 A 3 3 0 0 0 12 10 L 10 10 z M 3 12 A 1.0000174 1.0000174 0 0 1 4 13 A 1.0000174 1.0000174 0 0 1 3 14 L 3 12 z M 7 12 L 7 16 L 9 16 L 9 12 L 7 12 z "
- transform="translate(0,1036.3622)"
- id="path4176" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_navigation.svg b/editor/icons/source/icon_navigation.svg
deleted file mode 100644
index 42e8f59165..0000000000
--- a/editor/icons/source/icon_navigation.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_navigation.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="4.4490623"
- inkscape:cy="7.6851407"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 3,1050.3622 5,-2 5,2 -5,-12 -5,12 z"
- id="path4155"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_navigation_2d.svg b/editor/icons/source/icon_navigation_2d.svg
deleted file mode 100644
index 5252541e70..0000000000
--- a/editor/icons/source/icon_navigation_2d.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_navigation_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="4.4490623"
- inkscape:cy="7.6851407"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#a5b7f5;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 3,1050.3622 5,-2 5,2 -5,-12 -5,12 z"
- id="path4155"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_navigation_mesh.svg b/editor/icons/source/icon_navigation_mesh.svg
deleted file mode 100644
index 31ab5df8ad..0000000000
--- a/editor/icons/source/icon_navigation_mesh.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_navigation_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="9.4708391"
- inkscape:cy="9.3796697"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 4.7304688 14 L 7.2382812 14 L 7.9882812 12 L 4.7285156 12 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 L 8.6972656 10.111328 L 9.46875 8.0546875 L 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 12 4.7304688 L 12 5.0019531 A 2.0002 2.0002 0 0 1 12.023438 5.0019531 A 2.0002 2.0002 0 0 1 13.873047 6.2988281 L 14 6.6367188 L 14 4.7285156 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z M 12 7 L 9 15 L 12 13 L 15 15 L 12 7 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_navigation_mesh_instance.svg b/editor/icons/source/icon_navigation_mesh_instance.svg
deleted file mode 100644
index 5c4e0f1579..0000000000
--- a/editor/icons/source/icon_navigation_mesh_instance.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_navigation_mesh_instance.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="9.8145891"
- inkscape:cy="8.1609197"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 A 2 2 0 0 0 1 3 A 2 2 0 0 0 2 4.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 4.7304688 14 L 7.2382812 14 L 7.9882812 12 L 4.7285156 12 A 2 2 0 0 0 4 11.269531 L 4 5.4140625 L 8.6972656 10.111328 L 9.46875 8.0546875 L 5.4140625 4 L 11.271484 4 A 2 2 0 0 0 12 4.7304688 L 12 5.0019531 A 2.0002 2.0002 0 0 1 12.023438 5.0019531 A 2.0002 2.0002 0 0 1 13.873047 6.2988281 L 14 6.6367188 L 14 4.7285156 A 2 2 0 0 0 15 3 A 2 2 0 0 0 13 1 A 2 2 0 0 0 11.269531 2 L 4.7285156 2 A 2 2 0 0 0 3 1 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- <path
- style="fill:#fc9c9c;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.99607843"
- d="m 15,1051.3622 -3,-8 -3,8 3,-2 z"
- id="path4156"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4177"
- width="2"
- height="1"
- x="12"
- y="1040.3622" />
- <rect
- y="1040.3622"
- x="12"
- height="1"
- width="2"
- id="rect4179"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_navigation_polygon.svg b/editor/icons/source/icon_navigation_polygon.svg
deleted file mode 100644
index f3b6fcbcc3..0000000000
--- a/editor/icons/source/icon_navigation_polygon.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_navigation_polygon.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="11.686357"
- inkscape:cy="9.3308993"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-5"
- inkscape:label="Layer 1"
- style="fill:#e0e0e0;fill-opacity:1">
- <path
- id="path4144-6"
- transform="translate(0,1036.3622)"
- d="M 2,1 A 1.0001,1.0001 0 0 0 1,2 l 0,12 a 1.0001,1.0001 0 0 0 1,1 l 4.9023438,0 A 2.1002099,2.1002099 0 0 1 7.0332031,14.263672 L 7.5078125,13 3,13 3,3 11.585938,3 7.2929688,7.2929688 a 1.0001,1.0001 0 0 0 0,1.4140624 L 8.6191406,10.033203 10.033203,6.2636719 a 2.1002099,2.1002099 0 0 1 1.992188,-1.3613281 2.1002099,2.1002099 0 0 1 0.435547,0.050781 L 14.707031,2.7070312 A 1.0001,1.0001 0 0 0 14,1 L 2,1 Z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4163"
- d="m 15,1051.3622 -3,-8 -3,8 3,-2 z"
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_navigation_polygon_instance.svg b/editor/icons/source/icon_navigation_polygon_instance.svg
deleted file mode 100644
index 5153227b15..0000000000
--- a/editor/icons/source/icon_navigation_polygon_instance.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_navigation_polygon_instance.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="7.2564029"
- inkscape:cy="7.9852618"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a5b7f2;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 2 1 A 1.0001 1.0001 0 0 0 1 2 L 1 14 A 1.0001 1.0001 0 0 0 2 15 L 6.9023438 15 A 2.1002099 2.1002099 0 0 1 7.0332031 14.263672 L 7.5078125 13 L 3 13 L 3 3 L 11.585938 3 L 7.2929688 7.2929688 A 1.0001 1.0001 0 0 0 7.2929688 8.7070312 L 8.6191406 10.033203 L 10.033203 6.2636719 A 2.1002099 2.1002099 0 0 1 12.025391 4.9023438 A 2.1002099 2.1002099 0 0 1 12.460938 4.953125 L 14.707031 2.7070312 A 1.0001 1.0001 0 0 0 14 1 L 2 1 z "
- transform="translate(0,1036.3622)"
- id="path4144" />
- <path
- style="fill:#a5b7f6;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.98823529"
- d="m 15,1051.3622 -3,-8 -3,8 3,-2 z"
- id="path4163"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_new.svg b/editor/icons/source/icon_new.svg
deleted file mode 100644
index d59dd3513a..0000000000
--- a/editor/icons/source/icon_new.svg
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_new.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_new.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="20.922744"
- inkscape:cy="2.4022924"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-8"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-8"
- inkscape:label="Layer 1"
- transform="translate(0,-1.6949463e-5)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2,1 v 14 h 8 V 14 H 8 v -4 h 2 V 8 h 4 V 6 H 9 V 1 Z m 8,0 v 4 h 4 z"
- transform="translate(0,1036.3622)"
- id="rect4158"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccc" />
- <path
- style="fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11,1045.3622 v 2 H 9 v 2 h 2 v 2 h 2 v -2 h 2 v -2 h -2 v -2 z"
- id="rect4485"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_nine_patch_rect.svg b/editor/icons/source/icon_nine_patch_rect.svg
deleted file mode 100644
index 0a6b94094a..0000000000
--- a/editor/icons/source/icon_nine_patch_rect.svg
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_nine_patch_rect.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.03864"
- inkscape:cy="8.0827848"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82842708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="14"
- x="1"
- y="1037.3622" />
- <rect
- y="1049.3622"
- x="1"
- height="1.9999652"
- width="14"
- id="rect4156"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82842708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82846403;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="14"
- height="2.0000174"
- x="1"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="13"
- height="14"
- width="2"
- id="rect4160"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2.82842708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1041.3622"
- x="1"
- height="0.9999826"
- width="14"
- id="rect4162"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4164"
- width="14"
- height="0.9999826"
- x="1"
- y="1046.3622" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4166"
- width="14"
- height="0.9999826"
- x="1037.3622"
- y="-6"
- transform="rotate(90)" />
- <rect
- transform="rotate(90)"
- y="-10.999983"
- x="1037.3622"
- height="0.9999826"
- width="14"
- id="rect4168"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_node.svg b/editor/icons/source/icon_node.svg
deleted file mode 100644
index 02e2774669..0000000000
--- a/editor/icons/source/icon_node.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_node.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="4.1094292"
- inkscape:cy="4.5020156"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 2 A 6 6 0 0 0 2 8 A 6 6 0 0 0 8 14 A 6 6 0 0 0 14 8 A 6 6 0 0 0 8 2 z M 8 4 A 4 4 0 0 1 12 8 A 4 4 0 0 1 8 12 A 4 4 0 0 1 4 8 A 4 4 0 0 1 8 4 z "
- transform="translate(0,1036.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_node_2d.svg b/editor/icons/source/icon_node_2d.svg
deleted file mode 100644
index e546f68539..0000000000
--- a/editor/icons/source/icon_node_2d.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_node_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="4.2420117"
- inkscape:cy="6.0488117"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f3;fill-opacity:0.98823529;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 2 A 6 6 0 0 0 2 8 A 6 6 0 0 0 8 14 A 6 6 0 0 0 14 8 A 6 6 0 0 0 8 2 z M 8 4 A 4 4 0 0 1 12 8 A 4 4 0 0 1 8 12 A 4 4 0 0 1 4 8 A 4 4 0 0 1 8 4 z "
- transform="translate(0,1036.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_node_warning.svg b/editor/icons/source/icon_node_warning.svg
deleted file mode 100644
index 89d3663fb0..0000000000
--- a/editor/icons/source/icon_node_warning.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_new.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_node_warning.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254832"
- inkscape:cx="6.468104"
- inkscape:cy="5.5071727"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-8"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-8"
- inkscape:label="Layer 1"
- transform="translate(0,-1.6949463e-5)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffd684;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 8.0292969 2.0019531 A 1.0001 1.0001 0 0 0 7.1425781 2.4863281 L 1.1425781 12.486328 A 1.0001 1.0001 0 0 0 2 14 L 14 14 A 1.0001 1.0001 0 0 0 14.857422 12.486328 L 8.8574219 2.4863281 A 1.0001 1.0001 0 0 0 8.0292969 2.0019531 z M 7 5 L 9 5 L 9 10 L 7 10 L 7 5 z M 7 11 L 9 11 L 9 13 L 7 13 L 7 11 z "
- id="path4155"
- transform="translate(0,1036.3622)" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_non_favorite.svg b/editor/icons/source/icon_non_favorite.svg
deleted file mode 100644
index 54fcb8577e..0000000000
--- a/editor/icons/source/icon_non_favorite.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_favorites.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_non_favorite.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.1165833"
- inkscape:cy="7.8879933"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1.7246094 L 5.625 5.8222656 L 1 6.9199219 L 4.2363281 10.326172 L 3.8769531 15 L 8.015625 13.023438 L 12.173828 14.964844 L 11.777344 10.3125 L 15 6.9199219 L 10.375 5.8222656 L 8 1.7246094 z M 8 4 L 9.6582031 6.7773438 L 12.890625 7.5214844 L 10.640625 9.8222656 L 10.916016 12.976562 L 8.0117188 11.660156 L 5.1191406 13 L 5.3710938 9.8320312 L 3.109375 7.5214844 L 6.3417969 6.7773438 L 8 4 z "
- transform="translate(0,1036.3622)"
- id="path4254" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_object.svg b/editor/icons/source/icon_object.svg
deleted file mode 100644
index 6b36b61168..0000000000
--- a/editor/icons/source/icon_object.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_object.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.0308283"
- inkscape:cy="7.6625569"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,1043.8622 0,6 6,-3 0,-6 z"
- id="path4135"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.9628906 1.0019531 A 1.0001 1.0001 0 0 0 7.5527344 1.1054688 L 1.5527344 4.1054688 A 1.0001 1.0001 0 0 0 1 5 L 1 11 A 1.0001 1.0001 0 0 0 1.5527344 11.894531 L 7.5527344 14.894531 A 1.0001 1.0001 0 0 0 8.4472656 14.894531 L 14.447266 11.894531 A 1.0001 1.0001 0 0 0 15 11 L 15 5 A 1.0001 1.0001 0 0 0 14.447266 4.1054688 L 8.4472656 1.1054688 A 1.0001 1.0001 0 0 0 7.9628906 1.0019531 z M 8 3.1191406 L 11.763672 5 L 8 6.8828125 L 4.2363281 5 L 8 3.1191406 z M 3 6.6171875 L 7 8.6171875 L 7 12.382812 L 3 10.382812 L 3 6.6171875 z M 13 6.6171875 L 13 10.382812 L 9 12.382812 L 9 8.6171875 L 13 6.6171875 z "
- id="path4139"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_occluder_polygon_2d.svg b/editor/icons/source/icon_occluder_polygon_2d.svg
deleted file mode 100644
index 8ae6dc176d..0000000000
--- a/editor/icons/source/icon_occluder_polygon_2d.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_occluder_polygon_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="15.209065"
- inkscape:cy="9.8176368"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#3552b1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1045.3622 6,6 8,0 0,-8 -6,-6 -8,0 z"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <path
- style="fill:#a5b7f3;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.98823529"
- d="m 1,1037.3622 8,0 -3,4 3,4 -8,0 z"
- id="path4154"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_omni_light.svg b/editor/icons/source/icon_omni_light.svg
deleted file mode 100644
index e1049d0039..0000000000
--- a/editor/icons/source/icon_omni_light.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_omni_light.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="2.3113909"
- inkscape:cy="9.4448661"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 5 5 0 0 0 3 6 A 5 5 0 0 0 6 10.576172 L 6 13 L 10 13 L 10 10.580078 A 5 5 0 0 0 13 6 A 5 5 0 0 0 8 1 z M 8 3 A 3 3 0 0 1 11 6 A 3 3 0 0 1 8 9 A 3 3 0 0 1 5 6 A 3 3 0 0 1 8 3 z M 7 14 L 7 15 L 9 15 L 9 14 L 7 14 z "
- transform="translate(0,1036.3622)"
- id="path4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_option_button.svg b/editor/icons/source/icon_option_button.svg
deleted file mode 100644
index a58d3d9c06..0000000000
--- a/editor/icons/source/icon_option_button.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_option_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.188738"
- inkscape:cy="6.593409"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 3 C 1.8954305 3 1 3.8954305 1 5 L 1 11 C 1 12.104569 1.8954305 13 3 13 L 8 13 L 9 13 L 10 13 L 12 13 L 13 13 C 14.104569 13 15 12.104569 15 11 L 15 5 C 15 3.8954305 14.104569 3 13 3 L 12 3 L 10 3 L 9 3 L 8 3 L 3 3 z M 11 5.9863281 A 1.0001 1.0001 0 0 1 11.716797 7.7070312 L 8.7167969 10.707031 A 1.0001 1.0001 0 0 1 7.3027344 10.707031 L 4.3027344 7.7070312 A 1.0001 1.0001 0 0 1 5 5.9902344 A 1.0001 1.0001 0 0 1 5.7167969 6.2929688 L 8.0097656 8.5859375 L 10.302734 6.2929688 A 1.0001 1.0001 0 0 1 11 5.9863281 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- <rect
- style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4181"
- width="4"
- height="4"
- x="4"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_override.svg b/editor/icons/source/icon_override.svg
deleted file mode 100644
index b7948c531c..0000000000
--- a/editor/icons/source/icon_override.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_override.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="9.4650176"
- inkscape:cy="7.2694249"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#f3f3f3;fill-opacity:1;stroke:#e4e4e4;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4135"
- r="3"
- cy="1041.3622"
- cx="4" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 5 1 C 3.8919904 1 3 1.8919904 3 3 L 3 4 L 7 4 L 7 3 L 9 3 L 9 4 L 13 4 L 13 3 C 13 1.8919904 12.10801 1 11 1 L 5 1 z "
- transform="translate(0,1036.3622)"
- id="rect4212" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 6 C 1.8919904 6 1 6.8919904 1 8 L 1 13 C 1 14.10801 1.8919904 15 3 15 L 13 15 C 14.10801 15 15 14.10801 15 13 L 15 8 C 15 6.8919904 14.10801 6 13 6 L 9 6 L 9 9 L 11 9 L 8 13 L 5 9 L 7 9 L 7 6 L 3 6 z "
- transform="translate(0,1036.3622)"
- id="rect4214" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_packed_data_container.svg b/editor/icons/source/icon_packed_data_container.svg
deleted file mode 100644
index 70aed22f2c..0000000000
--- a/editor/icons/source/icon_packed_data_container.svg
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_packed_data_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="17.645108"
- inkscape:cy="9.7856584"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1038.3622 0,12 12,0 0,-12 z"
- id="path4154"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4167"
- width="2"
- height="2.0000174"
- x="4"
- y="1040.3622" />
- <rect
- y="1043.3622"
- x="4"
- height="2.0000174"
- width="2"
- id="rect4183"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4185"
- width="2"
- height="2.0000174"
- x="4"
- y="1046.3622" />
- <rect
- y="1040.3622"
- x="7"
- height="2.0000174"
- width="2"
- id="rect4187"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4189"
- width="2"
- height="2.0000174"
- x="7"
- y="1043.3622" />
- <rect
- y="1046.3622"
- x="7"
- height="2.0000174"
- width="2"
- id="rect4191"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4193"
- width="2"
- height="2.0000174"
- x="10"
- y="1040.3622" />
- <rect
- y="1043.3622"
- x="10"
- height="2.0000174"
- width="2"
- id="rect4195"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_packed_scene.svg b/editor/icons/source/icon_packed_scene.svg
deleted file mode 100644
index 910a274841..0000000000
--- a/editor/icons/source/icon_packed_scene.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_packed_scene.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.5714695"
- inkscape:cy="9.9612352"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 7 L 1 13 L 3 13 L 3 15 L 15 15 L 15 7 L 1 7 z "
- transform="translate(0,1036.3622)"
- id="rect4136" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 0.7112932,1040.3831 1,1042.3622 l 2.2438279,-0.3273 -0.8182578,-1.9018 -1.7142769,0.25 z m 3.6933293,-0.5387 0.8182578,1.9018 1.9790524,-0.2887 -0.8182579,-1.9018 -1.9790523,0.2887 z m 3.9581047,-0.5775 0.8182579,1.9018 1.9790519,-0.2887 -0.818257,-1.9018 -1.9790528,0.2887 z m 3.9581048,-0.5774 0.818258,1.9018 1.714277,-0.25 -0.288707,-1.9791 -2.243828,0.3273 z"
- id="rect4138"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="-6.7823301"
- inkscape:transform-center-y="-2" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4150"
- cx="3"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1049.3622"
- cx="13"
- id="circle4152"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panel.svg b/editor/icons/source/icon_panel.svg
deleted file mode 100644
index 28921c4031..0000000000
--- a/editor/icons/source/icon_panel.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panel.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.4355266"
- inkscape:cy="6.9694327"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssss" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panel_container.svg b/editor/icons/source/icon_panel_container.svg
deleted file mode 100644
index decf220705..0000000000
--- a/editor/icons/source/icon_panel_container.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panel_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="1.3105266"
- inkscape:cy="8.3756827"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panels_1.svg b/editor/icons/source/icon_panels_1.svg
deleted file mode 100644
index fa8bbe9fad..0000000000
--- a/editor/icons/source/icon_panels_1.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panels_1.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.854542"
- inkscape:cy="9.2778779"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="16"
- x="0"
- y="1036.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panels_2.svg b/editor/icons/source/icon_panels_2.svg
deleted file mode 100644
index f00cc4b339..0000000000
--- a/editor/icons/source/icon_panels_2.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panels_2.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.854542"
- inkscape:cy="9.2778779"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="7.0000172"
- x="0"
- y="1036.3622" />
- <rect
- y="1045.3622"
- x="0"
- height="7.0000172"
- width="16"
- id="rect4195"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panels_2_alt.svg b/editor/icons/source/icon_panels_2_alt.svg
deleted file mode 100644
index cc3a634a3e..0000000000
--- a/editor/icons/source/icon_panels_2_alt.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panels_2_alt.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.854542"
- inkscape:cy="9.2778779"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- y="1036.3622"
- x="9"
- height="16"
- width="7"
- id="rect4195"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4216"
- width="7"
- height="16"
- x="0"
- y="1036.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panels_3.svg b/editor/icons/source/icon_panels_3.svg
deleted file mode 100644
index 04517c5a66..0000000000
--- a/editor/icons/source/icon_panels_3.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panels_3.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.854542"
- inkscape:cy="9.2778779"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="16"
- height="7.0000172"
- x="0"
- y="1036.3622" />
- <rect
- y="1045.3622"
- x="9"
- height="7.0000172"
- width="7"
- id="rect4195"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4216"
- width="7"
- height="7.0000172"
- x="0"
- y="1045.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panels_3_alt.svg b/editor/icons/source/icon_panels_3_alt.svg
deleted file mode 100644
index e5a9493287..0000000000
--- a/editor/icons/source/icon_panels_3_alt.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panels_3_alt.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.854542"
- inkscape:cy="9.2778779"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4216"
- width="7"
- height="7.0000172"
- x="0"
- y="1045.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4237"
- width="7"
- height="16.000017"
- x="9"
- y="1036.3622" />
- <rect
- y="1036.3622"
- x="0"
- height="7.0000172"
- width="7"
- id="rect4239"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panels_4.svg b/editor/icons/source/icon_panels_4.svg
deleted file mode 100644
index 6d07a0b6d5..0000000000
--- a/editor/icons/source/icon_panels_4.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panels_4.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="12.854542"
- inkscape:cy="9.2778779"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- y="1045.3622"
- x="9"
- height="7.0000172"
- width="7"
- id="rect4195"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4216"
- width="7"
- height="7.0000172"
- x="0"
- y="1045.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4237"
- width="7"
- height="7.0000172"
- x="9"
- y="1036.3622" />
- <rect
- y="1036.3622"
- x="0"
- height="7.0000172"
- width="7"
- id="rect4239"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_panorama_sky.svg b/editor/icons/source/icon_panorama_sky.svg
deleted file mode 100644
index 32a5253fe3..0000000000
--- a/editor/icons/source/icon_panorama_sky.svg
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_confirmation_dialog.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_panorama_sky.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4291">
- <stop
- style="stop-color:#1ec3ff;stop-opacity:1"
- offset="0"
- id="stop4287" />
- <stop
- style="stop-color:#b2e1ff;stop-opacity:1"
- offset="1"
- id="stop4289" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4291"
- id="linearGradient4293"
- x1="8"
- y1="1038.3622"
- x2="8"
- y2="1050.3622"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0096153,0,0,1.0227214,-0.00961532,-22.593074)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.0139922"
- inkscape:cy="7.7749171"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- originx="0"
- originy="0"
- spacingx="1"
- spacingy="1" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1037.3622)">
- <path
- style="fill:url(#linearGradient4293);fill-opacity:1;stroke-width:15.24220753"
- d="m 1,1039.3622 c 4.2748686,2.6091 10.764971,2.7449 14,0 v 12 c -3.58489,-2.6849 -9.7929096,-2.6544 -14,0 z"
- id="rect4285"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="rect4273"
- width="3"
- height="2"
- x="2"
- y="1046.3622"
- ry="1" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="rect4275"
- width="4"
- height="2"
- x="8"
- y="1044.3622"
- ry="1" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="rect4277"
- width="4"
- height="2"
- x="10"
- y="1043.3622"
- ry="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_parallax_background.svg b/editor/icons/source/icon_parallax_background.svg
deleted file mode 100644
index e1b6a4fb2f..0000000000
--- a/editor/icons/source/icon_parallax_background.svg
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_shader_graph.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_parallax_background.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="5.3916748"
- inkscape:cy="8.33855"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <ellipse
- r="2"
- style="opacity:1;fill:#6e6e6e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="ellipse4152"
- cx="3"
- cy="1039.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4232"
- sodipodi:type="arc"
- sodipodi:cx="2"
- sodipodi:cy="1039.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="3.1415927"
- sodipodi:end="4.712389"
- d="m 1,1039.3622 a 1,1 0 0 1 1,-1 l 0,1 z" />
- <path
- d="m -15,1039.3622 a 1,1 0 0 1 1,-1 l 0,1 z"
- sodipodi:end="4.712389"
- sodipodi:start="3.1415927"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="1039.3622"
- sodipodi:cx="-14"
- sodipodi:type="arc"
- id="path4234"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(-1,1)" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4236"
- width="12"
- height="1"
- x="2"
- y="1038.3622" />
- <rect
- y="1049.3622"
- x="2"
- height="1"
- width="12"
- id="rect4238"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- d="m 1,-1049.3622 a 1,1 0 0 1 1,-1 l 0,1 z"
- sodipodi:end="4.712389"
- sodipodi:start="3.1415927"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="-1049.3622"
- sodipodi:cx="2"
- sodipodi:type="arc"
- id="path4242"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(1,-1)" />
- <path
- transform="scale(-1,-1)"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4244"
- sodipodi:type="arc"
- sodipodi:cx="-14"
- sodipodi:cy="-1049.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="3.1415927"
- sodipodi:end="4.712389"
- d="m -15,-1049.3622 a 1,1 0 0 1 1,-1 l 0,1 z" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4246"
- width="1"
- height="10.000017"
- x="1"
- y="1039.3622" />
- <rect
- y="1039.3622"
- x="14"
- height="10"
- width="1"
- id="rect4248"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 7,1041.3622 -3,3 3,3 z"
- id="path4250"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4252"
- d="m 9,1041.3622 3,3 -3,3 z"
- style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_parallax_layer.svg b/editor/icons/source/icon_parallax_layer.svg
deleted file mode 100644
index 022fdd5339..0000000000
--- a/editor/icons/source/icon_parallax_layer.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_shader_graph.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_parallax_layer.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="10.053658"
- inkscape:cy="6.9687954"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <ellipse
- r="2"
- style="opacity:1;fill:#6e6e6e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="ellipse4152"
- cx="3"
- cy="1039.3622" />
- <path
- style="fill:#a5b7f8;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 7,1041.3622 -3,3 3,3 z"
- id="path4250"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4252"
- d="m 9,1041.3622 3,3 -3,3 z"
- style="fill:#a5b7f8;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,1 10,0 c 0.552281,9.6e-6 0.99999,0.4477192 1,1 l 0,10 c -10e-6,0.552281 -0.447719,0.99999 -1,1 L 3,14 C 2.4477192,13.99999 2.0000096,13.552281 2,13 L 2,3 c 9.6e-6,-0.5522808 0.4477192,-0.9999904 1,-1 z"
- transform="translate(0,1036.3622)"
- id="path4160"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_particle_attractor_2d.svg b/editor/icons/source/icon_particle_attractor_2d.svg
deleted file mode 100644
index f755d7fc37..0000000000
--- a/editor/icons/source/icon_particle_attractor_2d.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_particle_attractor_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="8.9614257"
- inkscape:cy="5.6970686"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 8 1 A 3 7 0 0 0 5 8 A 3 7 0 0 0 8 15 A 3 7 0 0 0 11 8 A 3 7 0 0 0 8 1 z M 8 2 A 2 5.9999828 0 0 1 10 8 A 2 5.9999828 0 0 1 8 14 A 2 5.9999828 0 0 1 6 8 A 2 5.9999828 0 0 1 8 2 z "
- transform="translate(0,1036.3622)"
- id="path4143" />
- <path
- id="path4148"
- d="m 1,1044.3622 a 7,3 0 0 0 7,3 7,3 0 0 0 7,-3 7,3 0 0 0 -7,-3 7,3 0 0 0 -7,3 z m 1,0 a 5.9999828,2 0 0 1 6,-2 5.9999828,2 0 0 1 6,2 5.9999828,2 0 0 1 -6,2 5.9999828,2 0 0 1 -6,-2 z"
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 3.0502525,1049.3119 a 3,7 45 0 0 7.0710675,-2.8284 3,7 45 0 0 2.828427,-7.071 3,7 45 0 0 -7.0710673,2.8284 3,7 45 0 0 -2.8284272,7.071 z m 0.7071068,-0.7071 a 2,5.9999828 45 0 1 2.8284271,-5.6568 2,5.9999828 45 0 1 5.6568546,-2.8284 2,5.9999828 45 0 1 -2.8284274,5.6568 2,5.9999828 45 0 1 -5.6568543,2.8284 z"
- id="path4150" />
- <path
- id="path4152"
- d="m 12.9497,1049.3119 a 7,3 45 0 0 -2.8284,-7.071 7,3 45 0 0 -7.0710003,-2.8284 7,3 45 0 0 2.8284,7.071 7,3 45 0 0 7.0710003,2.8284 z m -0.7071,-0.7071 a 5.9999828,2 45 0 1 -5.6568003,-2.8284 5.9999828,2 45 0 1 -2.8284,-5.6568 5.9999828,2 45 0 1 5.6568,2.8284 5.9999828,2 45 0 1 2.8284003,5.6568 z"
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- inkscape:connector-curvature="0" />
- <circle
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4154"
- cx="8"
- cy="1044.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_particles.svg b/editor/icons/source/icon_particles.svg
deleted file mode 100644
index f48929a7ef..0000000000
--- a/editor/icons/source/icon_particles.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_particles.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999998"
- inkscape:cx="5.0589841"
- inkscape:cy="5.0441142"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4138"
- cx="4"
- cy="1044.3622"
- r="3" />
- <ellipse
- cy="1042.3622"
- cx="8"
- id="circle4140"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- rx="4.4999948"
- ry="4.9999847" />
- <path
- style="fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 4,1047.3622 8,0 0,-4 -8,0 z"
- id="path4142"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <circle
- r="3"
- cy="1044.3622"
- cx="12"
- id="circle4146"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4148"
- cx="4"
- cy="1049.3622"
- r="1" />
- <circle
- r="1"
- cy="1049.3622"
- cx="12"
- id="circle4150"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="circle4152"
- cx="8"
- cy="1050.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_particles_2d.svg b/editor/icons/source/icon_particles_2d.svg
deleted file mode 100644
index 1ad1d511f8..0000000000
--- a/editor/icons/source/icon_particles_2d.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_particles_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.999999"
- inkscape:cx="10.042274"
- inkscape:cy="6.8827763"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4138"
- cx="4"
- cy="1044.3622"
- r="3" />
- <ellipse
- cy="1042.3622"
- cx="8"
- id="circle4140"
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- rx="4.4999948"
- ry="4.9999847" />
- <path
- style="fill:#a5b7f5;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 4,1047.3622 8,0 0,-4 -8,0 z"
- id="path4142"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <circle
- r="3"
- cy="1044.3622"
- cx="12"
- id="circle4146"
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <circle
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4148"
- cx="4"
- cy="1049.3622"
- r="1" />
- <circle
- r="1"
- cy="1049.3622"
- cx="12"
- id="circle4150"
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <circle
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="circle4152"
- cx="8"
- cy="1050.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_particles_material.svg b/editor/icons/source/icon_particles_material.svg
deleted file mode 100644
index b4c2ef7ccd..0000000000
--- a/editor/icons/source/icon_particles_material.svg
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_particles_shader.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4199">
- <path
- inkscape:connector-curvature="0"
- id="path4201"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4208">
- <path
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 8,1037.3622 A 4.4999948,4.9999847 0 0 0 3.5859375,1041.3934 3,3 0 0 0 1,1044.3622 a 3,3 0 0 0 3,3 l 8,0 a 3,3 0 0 0 3,-3 3,3 0 0 0 -2.589844,-2.9668 A 4.4999948,4.9999847 0 0 0 8,1037.3622 Z m -4,11 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z m 8,0 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z m -4,1 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z"
- id="path4210"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.999999"
- inkscape:cx="8.2922739"
- inkscape:cy="6.6952763"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4271"
- clip-path="url(#clipPath4208)"
- transform="translate(0,1.8694115e-5)">
- <rect
- y="1037.3622"
- x="0"
- height="2.0000031"
- width="16"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="16"
- height="2.0000029"
- x="0"
- y="1039.3622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="16"
- height="1.9999999"
- x="0"
- y="1041.3622" />
- <rect
- y="1043.3622"
- x="0"
- height="2.0000024"
- width="16"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1045.3622"
- x="0"
- height="2.0000021"
- width="16"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="16"
- height="1.9999987"
- x="0"
- y="1049.3622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="16"
- height="2.0000021"
- x="0"
- y="1047.3622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_path.svg b/editor/icons/source/icon_path.svg
deleted file mode 100644
index 39c63eac8a..0000000000
--- a/editor/icons/source/icon_path.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_path.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="5.2482063"
- inkscape:cy="13.715698"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4154"
- cx="3"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1039.3622"
- cx="13"
- id="circle4165"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 3,1049.3622 c 0,-9 10,-1 10,-10"
- id="path4167"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_path_2d.svg b/editor/icons/source/icon_path_2d.svg
deleted file mode 100644
index 6887834048..0000000000
--- a/editor/icons/source/icon_path_2d.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_path_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="6.9717791"
- inkscape:cy="15.350883"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4154"
- cx="3"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1039.3622"
- cx="13"
- id="circle4165"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 12,1039.3613 c 0,2.0648 -0.492456,2.8244 -1.136719,3.2754 -0.644262,0.451 -1.7128904,0.6055 -2.9628904,0.7305 -1.25,0.125 -2.681372,0.2205 -3.9121094,1.082 C 2.7575439,1045.3107 2,1046.9261 2,1049.3613 l 2,0 c 0,-2.0648 0.4924561,-2.8224 1.1367188,-3.2734 0.6442626,-0.451 1.7128906,-0.6055 2.9628906,-0.7305 1.25,-0.125 2.6813716,-0.2205 3.9121096,-1.082 C 13.242456,1043.4139 14,1041.7965 14,1039.3613 l -2,0 z"
- id="path4167"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_path_follow.svg b/editor/icons/source/icon_path_follow.svg
deleted file mode 100644
index 6999df33de..0000000000
--- a/editor/icons/source/icon_path_follow.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_path_follow.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="16.455225"
- inkscape:cy="0.74140894"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4154"
- cx="3"
- cy="1049.3622"
- r="2" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 12,1039.3613 c 0,2.0648 -0.492456,2.8244 -1.136719,3.2754 -0.644262,0.451 -1.7128904,0.6055 -2.9628904,0.7305 -1.25,0.125 -2.681372,0.2205 -3.9121094,1.082 C 2.7575439,1045.3107 2,1046.9261 2,1049.3613 l 2,0 c 0,-2.0648 0.4924561,-2.8224 1.1367188,-3.2734 0.6442626,-0.451 1.7128906,-0.6055 2.9628906,-0.7305 1.25,-0.125 2.6813716,-0.2205 3.9121096,-1.082 C 13.242456,1043.4139 14,1041.7965 14,1039.3613 l -2,0 z"
- id="path4167"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#fc9c9c;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.99607843"
- d="m 10,1040.3622 6,0 -3,-4 z"
- id="path4238"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_path_follow_2d.svg b/editor/icons/source/icon_path_follow_2d.svg
deleted file mode 100644
index 020a094c0a..0000000000
--- a/editor/icons/source/icon_path_follow_2d.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_path_follow_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="9.0298197"
- inkscape:cy="11.306698"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4154"
- cx="3"
- cy="1049.3622"
- r="2" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 12,1039.3613 c 0,2.0648 -0.492456,2.8244 -1.136719,3.2754 -0.644262,0.451 -1.7128904,0.6055 -2.9628904,0.7305 -1.25,0.125 -2.681372,0.2205 -3.9121094,1.082 C 2.7575439,1045.3107 2,1046.9261 2,1049.3613 l 2,0 c 0,-2.0648 0.4924561,-2.8224 1.1367188,-3.2734 0.6442626,-0.451 1.7128906,-0.6055 2.9628906,-0.7305 1.25,-0.125 2.6813716,-0.2205 3.9121096,-1.082 C 13.242456,1043.4139 14,1041.7965 14,1039.3613 l -2,0 z"
- id="path4167"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a5b7f9;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.98823529"
- d="m 10,1040.3622 6,0 -3,-4 z"
- id="path4238"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_pause.svg b/editor/icons/source/icon_pause.svg
deleted file mode 100644
index 411f1b22da..0000000000
--- a/editor/icons/source/icon_pause.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_pause.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="11.023552"
- inkscape:cy="7.2928145"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f0f0f0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 4 3 A 1.0001 1.0001 0 0 0 3 4 L 3 12 A 1.0001 1.0001 0 0 0 4 13 L 6 13 L 6 12 L 7 12 L 7 4 L 6 4 L 6 3 L 4 3 z M 10 3 L 10 4 L 9 4 L 9 12 L 10 12 L 10 13 L 12 13 A 1.0001 1.0001 0 0 0 13 12 L 13 4 A 1.0001 1.0001 0 0 0 12 3 L 10 3 z "
- transform="translate(0,1036.3622)"
- id="path4155" />
- <circle
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4169"
- cx="6"
- cy="1040.3622"
- r="1" />
- <circle
- r="1"
- cy="1040.3622"
- cx="10"
- id="circle4181"
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <circle
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="circle4183"
- cx="10"
- cy="1048.3622"
- r="1" />
- <circle
- r="1"
- cy="1048.3622"
- cx="6"
- id="circle4185"
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_pin.svg b/editor/icons/source/icon_pin.svg
deleted file mode 100644
index 8281b6438b..0000000000
--- a/editor/icons/source/icon_pin.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_pin.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="2.044657"
- inkscape:cy="7.8674742"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 3,1046.3622 10,0 -2,-3 -6,0 z"
- id="path4160"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="M 4 1 L 4 2 L 5 3 L 5 6 L 11 6 L 11 3 L 12 2 L 12 1 L 4 1 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4173"
- width="2"
- height="2.0000174"
- x="7"
- y="1047.3622" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 7,1049.3622 1,2 1,-2 -2,0 z"
- id="path4175"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_pin_joint.svg b/editor/icons/source/icon_pin_joint.svg
deleted file mode 100644
index 47dbe6be60..0000000000
--- a/editor/icons/source/icon_pin_joint.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_pin_joint.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999998"
- inkscape:cx="5.6333089"
- inkscape:cy="6.8938532"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#fc9c9c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 1.9289328,1043.2912 9,1050.3622 l 0.7071066,-3.5355 -4.2426399,-4.2426 z"
- id="path4160"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#fc9c9c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 9,1037.6343 -0.7071061,0.7071 0,1.4142 -2.1213204,2.1214 4.2426405,4.2426 2.12132,-2.1213 1.414214,0 0.707107,-0.7071 L 9,1037.6343 Z"
- id="path4162"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4173"
- width="2"
- height="2.0000174"
- x="743.08221"
- y="737.35425"
- transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
- <path
- style="fill:#fc9c9c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 2.6360396,1048.2409 -0.7071068,2.1213 2.1213204,-0.7071 -1.4142136,-1.4142 z"
- id="path4175"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_pin_joint_2d.svg b/editor/icons/source/icon_pin_joint_2d.svg
deleted file mode 100644
index 90e1579903..0000000000
--- a/editor/icons/source/icon_pin_joint_2d.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_pin_joint_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999998"
- inkscape:cx="5.6333089"
- inkscape:cy="6.8938532"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#a5b7f6;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 1.9289328,1043.2912 9,1050.3622 l 0.7071066,-3.5355 -4.2426399,-4.2426 z"
- id="path4160"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a5b7f6;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 9,1037.6343 -0.7071061,0.7071 0,1.4142 -2.1213204,2.1214 4.2426405,4.2426 2.12132,-2.1213 1.414214,0 0.707107,-0.7071 L 9,1037.6343 Z"
- id="path4162"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4173"
- width="2"
- height="2.0000174"
- x="743.08221"
- y="737.35425"
- transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
- <path
- style="fill:#a5b7f6;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 2.6360396,1048.2409 -0.7071068,2.1213 2.1213204,-0.7071 -1.4142136,-1.4142 z"
- id="path4175"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_pin_pressed.svg b/editor/icons/source/icon_pin_pressed.svg
deleted file mode 100644
index 8281b6438b..0000000000
--- a/editor/icons/source/icon_pin_pressed.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_pin.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="2.044657"
- inkscape:cy="7.8674742"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 3,1046.3622 10,0 -2,-3 -6,0 z"
- id="path4160"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="M 4 1 L 4 2 L 5 3 L 5 6 L 11 6 L 11 3 L 12 2 L 12 1 L 4 1 z "
- transform="translate(0,1036.3622)"
- id="path4162" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4173"
- width="2"
- height="2.0000174"
- x="7"
- y="1047.3622" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 7,1049.3622 1,2 1,-2 -2,0 z"
- id="path4175"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_plane.svg b/editor/icons/source/icon_plane.svg
deleted file mode 100644
index de5b5efc82..0000000000
--- a/editor/icons/source/icon_plane.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_plane.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="8.9877784"
- inkscape:cx="6.5696062"
- inkscape:zoom="31.999999"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1044.3622 7,3 7,-3 -7,-3 z"
- id="path4149"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_plane_mesh.svg b/editor/icons/source/icon_plane_mesh.svg
deleted file mode 100644
index 5273900606..0000000000
--- a/editor/icons/source/icon_plane_mesh.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_quad_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="13.201653"
- inkscape:cy="9.702363"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;stroke:#ffd684;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1048.3622 h 12 l -3,-8 H 5 Z"
- id="path4266"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_plane_shape.svg b/editor/icons/source/icon_plane_shape.svg
deleted file mode 100644
index b2d5e18b8f..0000000000
--- a/editor/icons/source/icon_plane_shape.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_plane_shape.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="6.0267957"
- inkscape:cx="3.664842"
- inkscape:zoom="31.999999"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="fill:#a2d2ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1044.3622 7,3 7,-3 -7,-3 z"
- id="path4149"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_play.svg b/editor/icons/source/icon_play.svg
deleted file mode 100644
index 9d3beab97d..0000000000
--- a/editor/icons/source/icon_play.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_play.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="10.275"
- inkscape:cy="7.6146693"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1"
- d="m 4,1048.3622 0,-8 7,4 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_play_backwards.svg b/editor/icons/source/icon_play_backwards.svg
deleted file mode 100644
index d93d529dd8..0000000000
--- a/editor/icons/source/icon_play_backwards.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_play_backwards.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.9052441"
- inkscape:cy="8.136551"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 12,1048.3622 0,-8 -6.9999995,4 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_play_custom.svg b/editor/icons/source/icon_play_custom.svg
deleted file mode 100644
index 62ff7fe710..0000000000
--- a/editor/icons/source/icon_play_custom.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_play_custom_scene.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.359274"
- inkscape:cy="4.5476192"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 7 L 1 13 A 2 2 0 0 0 3 15 L 15 15 L 15 7 L 1 7 z M 4 8 L 8 8 L 8 9 L 12 9 L 12 14 L 8 14 L 4 14 L 4 9 L 4 8 z "
- transform="translate(0,1036.3622)"
- id="rect4136" />
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 0.7112932,1040.3831 1,1042.3622 l 2.2438279,-0.3273 -0.8182578,-1.9018 -1.7142769,0.25 z m 3.6933293,-0.5387 0.8182578,1.9018 1.9790524,-0.2887 -0.8182579,-1.9018 -1.9790523,0.2887 z m 3.9581047,-0.5775 0.8182579,1.9018 1.9790519,-0.2887 -0.818257,-1.9018 -1.9790528,0.2887 z m 3.9581048,-0.5774 0.818258,1.9018 1.714277,-0.25 -0.288707,-1.9791 -2.243828,0.3273 z"
- id="rect4138"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="-6.7823301"
- inkscape:transform-center-y="-2" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_play_scene.svg b/editor/icons/source/icon_play_scene.svg
deleted file mode 100644
index 599cd14981..0000000000
--- a/editor/icons/source/icon_play_scene.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_play_scene.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-0.47309035"
- inkscape:cy="3.0665228"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 7 L 1 13 L 3 13 L 3 15 L 15 15 L 15 7 L 1 7 z M 6 8 L 11 11 L 6 14 L 6 8 z "
- transform="translate(0,1036.3622)"
- id="rect4136" />
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 0.7112932,1040.3831 1,1042.3622 l 2.2438279,-0.3273 -0.8182578,-1.9018 -1.7142769,0.25 z m 3.6933293,-0.5387 0.8182578,1.9018 1.9790524,-0.2887 -0.8182579,-1.9018 -1.9790523,0.2887 z m 3.9581047,-0.5775 0.8182579,1.9018 1.9790519,-0.2887 -0.818257,-1.9018 -1.9790528,0.2887 z m 3.9581048,-0.5774 0.818258,1.9018 1.714277,-0.25 -0.288707,-1.9791 -2.243828,0.3273 z"
- id="rect4138"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="-6.7823301"
- inkscape:transform-center-y="-2" />
- <circle
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4150"
- cx="3"
- cy="1049.3622"
- r="2" />
- <circle
- r="2"
- cy="1049.3622"
- cx="13"
- id="circle4152"
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_play_start.svg b/editor/icons/source/icon_play_start.svg
deleted file mode 100644
index 7157f59f35..0000000000
--- a/editor/icons/source/icon_play_start.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_play_start.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="2.4322492"
- inkscape:cy="9.0261053"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7.000102,1048.3622 0,-8 7,4 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- inkscape:connector-curvature="0"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 3,1039.3622 c 0.552262,10e-5 0.999945,0.4477 1,1 l 0,8 c -5.5e-5,0.5523 -0.447738,0.9999 -1,1 l -1,0 0,-1 -1,0 0,-8 1,0 0,-1 z"
- id="path4155-8"
- sodipodi:nodetypes="ccccccccccc" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4169"
- cx="-2"
- cy="1040.3622"
- r="1"
- transform="scale(-1,1)" />
- <circle
- r="1"
- cy="1048.3622"
- cx="-2"
- id="circle4185"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(-1,1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_play_start_backwards.svg b/editor/icons/source/icon_play_start_backwards.svg
deleted file mode 100644
index 06998f1043..0000000000
--- a/editor/icons/source/icon_play_start_backwards.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_play_start_backwards.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="6.9936216"
- inkscape:cy="6.940039"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8.999898,1048.3622 0,-8 -6.9999995,4 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- inkscape:connector-curvature="0"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 13,1039.3622 c -0.552262,10e-5 -0.999945,0.4477 -1,1 l 0,8 c 5.5e-5,0.5523 0.447738,0.9999 1,1 l 1,0 0,-1 1,0 0,-8 -1,0 0,-1 z"
- id="path4155-8"
- sodipodi:nodetypes="ccccccccccc" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4169"
- cx="14"
- cy="1040.3622"
- r="1" />
- <circle
- r="1"
- cy="1048.3622"
- cx="14"
- id="circle4185"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_polygon_path_finder.svg b/editor/icons/source/icon_polygon_path_finder.svg
deleted file mode 100644
index c2f8d80c3d..0000000000
--- a/editor/icons/source/icon_polygon_path_finder.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_polygon_path_finder.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="4.2632138"
- inkscape:cy="9.710537"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 2 1 C 1.4477381 1.0000552 1.0000552 1.4477381 1 2 L 1 3 L 3 3 L 3 1 L 2 1 z M 5 1 L 5 3 L 7 3 L 7 1 L 5 1 z M 9 1 L 9 3 L 11 3 L 11 1 L 9 1 z M 13 1 L 13 3 L 14.414062 3 L 14.707031 2.7070312 C 15.336587 2.0770367 14.890637 1.0003496 14 1 L 13 1 z M 1 5 L 1 7 L 3 7 L 3 5 L 1 5 z M 12 7 L 9 15 L 12 13 L 15 15 L 12 7 z M 1 9 L 1 11 L 3 11 L 3 9 L 1 9 z M 1 13 L 1 14 C 1.0000552 14.552262 1.4477381 14.999945 2 15 L 3 15 L 3 13 L 1 13 z M 5 13 L 5 15 L 6.9023438 15 C 6.9015603 14.748705 6.9458828 14.499309 7.0332031 14.263672 L 7.5078125 13 L 5 13 z "
- transform="translate(0,1036.3622)"
- id="path4144" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_popup.svg b/editor/icons/source/icon_popup.svg
deleted file mode 100644
index 1681e537f6..0000000000
--- a/editor/icons/source/icon_popup.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_popup.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.3021198"
- inkscape:cy="5.264507"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 C 1.8954305 1 1 1.8954305 1 3 L 1 13 C 1 14.104569 1.8954305 15 3 15 L 13 15 C 14.104569 15 15 14.104569 15 13 L 15 3 C 15 1.8954305 14.104569 1 13 1 L 3 1 z M 7 3 L 9 3 L 9 9 L 7 9 L 7 3 z M 7 11 L 9 11 L 9 13 L 7 13 L 7 11 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_popup_dialog.svg b/editor/icons/source/icon_popup_dialog.svg
deleted file mode 100644
index 54e14accc7..0000000000
--- a/editor/icons/source/icon_popup_dialog.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_confirmation_dialog.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_popup_dialog.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.6244901"
- inkscape:cy="5.7391918"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 C 1.89543 1 1 1.8954 1 3 L 1 4 L 15 4 L 15 3 C 15 1.8954 14.104569 1 13 1 L 3 1 z M 12 2 L 13 2 L 13 3 L 12 3 L 12 2 z M 1 5 L 1 13 C 1 14.1046 1.89543 15 3 15 L 13 15 C 14.104569 15 15 14.1046 15 13 L 15 5 L 1 5 z M 7 6 L 9 6 L 9 11 L 7 11 L 7 6 z M 7 12 L 9 12 L 9 14 L 7 14 L 7 12 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_popup_menu.svg b/editor/icons/source/icon_popup_menu.svg
deleted file mode 100644
index e812ca695b..0000000000
--- a/editor/icons/source/icon_popup_menu.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_popup_menu.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.7434649"
- inkscape:cy="5.0774028"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 6 A 1 1 0 0 0 1 7 L 1 14 A 1 1 0 0 0 2 15 L 14 15 A 1 1 0 0 0 15 14 L 15 7 A 1 1 0 0 0 14 6 L 2 6 z M 3 8 L 13 8 L 13 10 L 3 10 L 3 8 z M 3 11 L 13 11 L 13 13 L 3 13 L 3 11 z "
- transform="translate(0,1036.3622)"
- id="rect4161" />
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 5 L 7 5 L 7 1 L 1 1 z M 2 2 L 6 2 L 4 4 L 2 2 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_popup_panel.svg b/editor/icons/source/icon_popup_panel.svg
deleted file mode 100644
index c307257efe..0000000000
--- a/editor/icons/source/icon_popup_panel.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_popup_panel.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.4838665"
- inkscape:cy="2.9150134"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2,6 C 1.4477153,6 1,6.4477153 1,7 l 0,7 c 0,0.552285 0.4477153,1 1,1 l 12,0 c 0.552285,0 1,-0.447715 1,-1 L 15,7 C 15,6.4477153 14.552285,6 14,6 Z"
- transform="translate(0,1036.3622)"
- id="rect4161"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssss" />
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 5 L 7 5 L 7 1 L 1 1 z M 2 2 L 6 2 L 4 4 L 2 2 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_portal.svg b/editor/icons/source/icon_portal.svg
deleted file mode 100644
index 2f3d22025f..0000000000
--- a/editor/icons/source/icon_portal.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_portal.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254832"
- inkscape:cx="3.4176446"
- inkscape:cy="5.4395319"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 5 7 0 0 0 3 8 A 5 7 0 0 0 8 15 A 5 7 0 0 0 13 8 A 5 7 0 0 0 8 1 z M 8 3 A 2.9999998 5.0000172 0 0 1 11 8 A 2.9999998 5.0000172 0 0 1 8 13 A 2.9999998 5.0000172 0 0 1 5 8 A 2.9999998 5.0000172 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_position_2d.svg b/editor/icons/source/icon_position_2d.svg
deleted file mode 100644
index 4dbb2c188a..0000000000
--- a/editor/icons/source/icon_position_2d.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_position_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="2.4660493"
- inkscape:cy="9.4601984"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="4"
- height="2"
- x="1"
- y="1043.3622" />
- <rect
- y="1043.3622"
- x="11"
- height="2"
- width="4"
- id="rect4156"
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4158"
- width="2"
- height="4.0000172"
- x="7"
- y="1037.3622" />
- <rect
- y="1047.3622"
- x="7"
- height="4.0000172"
- width="2"
- id="rect4160"
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_position_3d.svg b/editor/icons/source/icon_position_3d.svg
deleted file mode 100644
index b735af4ac3..0000000000
--- a/editor/icons/source/icon_position_3d.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_position.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="13.15355"
- inkscape:cy="10.553948"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 5 L 9 5 L 9 1 L 7 1 z M 1 7 L 1 9 L 5 9 L 5 7 L 1 7 z M 11 7 L 11 9 L 15 9 L 15 7 L 11 7 z M 7 11 L 7 15 L 9 15 L 9 11 L 7 11 z "
- transform="translate(0,1036.3622)"
- id="rect4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_prism_mesh.svg b/editor/icons/source/icon_prism_mesh.svg
deleted file mode 100644
index 310d8f1a28..0000000000
--- a/editor/icons/source/icon_prism_mesh.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_prism_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="9.3129802"
- inkscape:cy="9.9193702"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffd684;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;opacity:1"
- d="M 7.9824219 1.0019531 A 1.0001 1.0001 0 0 0 7.1679688 1.4453125 L 1.1953125 10.40625 L 1.1679688 10.445312 A 1 1 0 0 0 1.1054688 10.552734 A 1 1 0 0 0 1.5527344 11.894531 L 7.5527344 14.894531 A 1.0001 1.0001 0 0 0 8.4472656 14.894531 L 14.447266 11.894531 A 1 1 0 0 0 14.894531 10.552734 A 1 1 0 0 0 14.832031 10.445312 L 8.8320312 1.4453125 A 1.0001 1.0001 0 0 0 7.9824219 1.0019531 z M 7 5.3027344 L 7 12.382812 L 3.4609375 10.611328 L 7 5.3027344 z M 9 5.3027344 L 12.539062 10.611328 L 9 12.382812 L 9 5.3027344 z "
- transform="translate(0,1036.3622)"
- id="path4309" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_procedural_sky.svg b/editor/icons/source/icon_procedural_sky.svg
deleted file mode 100644
index 97162f3efa..0000000000
--- a/editor/icons/source/icon_procedural_sky.svg
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_confirmation_dialog.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_procedural_sky.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4291">
- <stop
- style="stop-color:#1ec3ff;stop-opacity:1"
- offset="0"
- id="stop4287" />
- <stop
- style="stop-color:#b2e1ff;stop-opacity:1"
- offset="1"
- id="stop4289" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4291"
- id="linearGradient4303"
- x1="8"
- y1="1040.3622"
- x2="8"
- y2="1050.3622"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="12.704839"
- inkscape:cy="7.3549048"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- originx="0"
- originy="0"
- spacingx="1"
- spacingy="1" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1037.3622)">
- <path
- style="fill:url(#linearGradient4303);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:0.3254902"
- d="m 8,1040.3622 a 7,7 0 0 0 -7,7 7,7 0 0 0 0.6855469,3 H 14.316406 a 7,7 0 0 0 0.683594,-3 7,7 0 0 0 -7,-7 z"
- id="path4292"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="rect4305"
- width="3"
- height="2"
- x="2"
- y="1047.3622"
- ry="1" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="rect4307"
- width="4"
- height="2"
- x="7"
- y="1045.3622"
- ry="1" />
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:0.3254902"
- id="rect4309"
- width="4"
- height="2"
- x="9"
- y="1044.3622"
- ry="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_1.svg b/editor/icons/source/icon_progress_1.svg
deleted file mode 100644
index 4b4694d0d4..0000000000
--- a/editor/icons/source/icon_progress_1.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="4.1004505"
- inkscape:cy="7.8700042"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_2.svg b/editor/icons/source/icon_progress_2.svg
deleted file mode 100644
index 1edad60e03..0000000000
--- a/editor/icons/source/icon_progress_2.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress_2.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.2105087"
- inkscape:cy="9.593577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_3.svg b/editor/icons/source/icon_progress_3.svg
deleted file mode 100644
index 405a16854e..0000000000
--- a/editor/icons/source/icon_progress_3.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress_3.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.2105087"
- inkscape:cy="9.593577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_4.svg b/editor/icons/source/icon_progress_4.svg
deleted file mode 100644
index 26e97928ee..0000000000
--- a/editor/icons/source/icon_progress_4.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress_4.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.2105087"
- inkscape:cy="9.593577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_5.svg b/editor/icons/source/icon_progress_5.svg
deleted file mode 100644
index 024190e9fd..0000000000
--- a/editor/icons/source/icon_progress_5.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress_5.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.2105087"
- inkscape:cy="9.593577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_6.svg b/editor/icons/source/icon_progress_6.svg
deleted file mode 100644
index 3783c528e7..0000000000
--- a/editor/icons/source/icon_progress_6.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress_6.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.2105087"
- inkscape:cy="9.593577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_7.svg b/editor/icons/source/icon_progress_7.svg
deleted file mode 100644
index 2a2c744b5b..0000000000
--- a/editor/icons/source/icon_progress_7.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress_7.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.2105087"
- inkscape:cy="9.593577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_8.svg b/editor/icons/source/icon_progress_8.svg
deleted file mode 100644
index 2331aee2e7..0000000000
--- a/editor/icons/source/icon_progress_8.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_wait_preview_8.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_progress_8.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.2105087"
- inkscape:cy="9.593577"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 9,1037.4403 0,3.0547 a 4,4 0 0 1 1.027344,0.4258 l 2.158203,-2.1582 A 7,7 0 0 0 9,1037.4403 Z"
- id="path4179" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.4423 a 7,7 0 0 0 -3.1855469,1.3203 l 2.1582031,2.1582 A 4,4 0 0 1 7,1040.4931 l 0,-3.0508 z"
- id="path4177" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 2.4003906,1040.1767 a 7,7 0 0 0 -1.3222656,3.1855 l 3.0546875,0 a 4,4 0 0 1 0.4257813,-1.0273 l -2.1582032,-2.1582 z"
- id="path4175" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 13.599609,1040.1767 -2.158203,2.1582 a 4,4 0 0 1 0.427735,1.0273 l 3.050781,0 a 7,7 0 0 0 -1.320313,-3.1855 z"
- id="path4173" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 1.0800781,1045.3622 a 7,7 0 0 0 1.3203125,3.1855 l 2.1582032,-2.1582 a 4,4 0 0 1 -0.4277344,-1.0273 l -3.0507813,0 z"
- id="path4171" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11.867188,1045.3622 a 4,4 0 0 1 -0.425782,1.0273 l 2.158203,2.1582 a 7,7 0 0 0 1.322266,-3.1855 l -3.054687,0 z"
- id="path4169" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 5.9726562,1047.8036 -2.1582031,2.1582 A 7,7 0 0 0 7,1051.2841 l 0,-3.0547 a 4,4 0 0 1 -1.0273438,-0.4258 z"
- id="path4167" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.19607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.027344,1047.8036 A 4,4 0 0 1 9,1048.2313 l 0,3.0508 a 7,7 0 0 0 3.185547,-1.3203 l -2.158203,-2.1582 z"
- id="path4142" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_progress_bar.svg b/editor/icons/source/icon_progress_bar.svg
deleted file mode 100644
index 1a5458080b..0000000000
--- a/editor/icons/source/icon_progress_bar.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_progress_bar.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.6672289"
- inkscape:cy="7.9294918"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,3 C 1.8954305,3 1,3.8954305 1,5 l 0,6 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,5 C 15,3.8954305 14.104569,3 13,3 Z m 0,2 10,0 0,6 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4167"
- width="1"
- height="4.0000172"
- x="4"
- y="1042.3622" />
- <rect
- y="1042.3622"
- x="6"
- height="4.0000172"
- width="1"
- id="rect4155"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="1"
- height="4.0000172"
- x="8"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_proximity_group.svg b/editor/icons/source/icon_proximity_group.svg
deleted file mode 100644
index 041d0c5ee2..0000000000
--- a/editor/icons/source/icon_proximity_group.svg
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_proximity_group.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="6.6334983"
- inkscape:cy="8.2009021"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="14"
- x="1"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="1"
- height="2.0000174"
- width="14"
- id="rect4156"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="-1051.3622"
- x="-15"
- height="14"
- width="2"
- id="rect4158"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="scale(-1,-1)" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4160"
- width="14"
- height="2.0000174"
- x="-15"
- y="-1051.3622"
- transform="scale(-1,-1)" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4162"
- cx="10.499991"
- cy="1041.8622"
- r="1.5000087" />
- <circle
- r="1.4999913"
- cy="1046.8622"
- cx="5.4999914"
- id="circle4164"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- r="1.5000087"
- cy="1046.8622"
- cx="10.499991"
- id="circle4166"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_quad.svg b/editor/icons/source/icon_quad.svg
deleted file mode 100644
index 86bb1979e7..0000000000
--- a/editor/icons/source/icon_quad.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_quad.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="10.348747"
- inkscape:cy="8.3955541"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 1 L 1 3 L 1 13 L 1 15 L 3 15 L 15 15 L 15 13 L 15 1 L 3 1 L 1 1 z M 4.4140625 3 L 13 3 L 13 11.585938 L 4.4140625 3 z M 3 4.4140625 L 11.585938 13 L 3 13 L 3 4.4140625 z "
- transform="translate(0,1036.3622)"
- id="rect4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_quad_mesh.svg b/editor/icons/source/icon_quad_mesh.svg
deleted file mode 100644
index f511dd8a12..0000000000
--- a/editor/icons/source/icon_quad_mesh.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_quad_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="11.701653"
- inkscape:cy="9.702363"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffd684;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 15,1037.3622 v 1 13 H 1 v -14 z m -2,2 H 4.414062 L 13,1047.9481 Z m -10,1.4141 v 8.5859 h 8.585938 z"
- id="path4276"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_quat.svg b/editor/icons/source/icon_quat.svg
deleted file mode 100644
index 36560d9d8f..0000000000
--- a/editor/icons/source/icon_quat.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_quat.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="2.0756935"
- inkscape:cy="11.847423"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 7 1 L 7 7 L 9 7 L 9 1 L 7 1 z M 7 13 L 7 15 L 9 15 L 9 13 L 7 13 z "
- transform="translate(0,1036.3622)"
- id="rect4137" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 11,1039.7528 0,2.0137 a 5,2.0000043 0 0 1 2,1.5957 5,2.0000043 0 0 1 -5,2 5,2.0000043 0 0 1 -5,-2 5,2.0000043 0 0 1 2,-1.5977 l 0,-2.0097 a 7,3.9999957 0 0 0 -4,3.6074 7,3.9999957 0 0 0 7,4 7,3.9999957 0 0 0 7,-4 7,3.9999957 0 0 0 -4,-3.6094 z"
- id="path4190"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_range.svg b/editor/icons/source/icon_range.svg
deleted file mode 100644
index 1dd857ff32..0000000000
--- a/editor/icons/source/icon_range.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_range.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="6.7342772"
- inkscape:cy="7.7859674"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4158"
- width="2"
- height="10.000017"
- x="1"
- y="1039.3622" />
- <rect
- y="1043.3622"
- x="1"
- height="2.0000348"
- width="13"
- id="rect4160"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- y="1039.3622"
- x="13"
- height="9.9999657"
- width="2"
- id="rect4162"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4137"
- width="2"
- height="6.0000172"
- x="5"
- y="1041.3622" />
- <rect
- y="1041.3622"
- x="9"
- height="6"
- width="2"
- id="rect4139"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rating_no_star.svg b/editor/icons/source/icon_rating_no_star.svg
deleted file mode 100644
index 09a9efa112..0000000000
--- a/editor/icons/source/icon_rating_no_star.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_favorites.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rating_no_star.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.5847936"
- inkscape:cy="10.189102"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-7"
- inkscape:label="Layer 1"
- style="fill:#c3ae65;fill-opacity:1">
- <path
- id="path4254-1"
- transform="translate(0,1036.3622)"
- d="M 8,1.7246094 5.625,5.8222656 1,6.9199219 4.2363281,10.326172 3.8769531,15 8.015625,13.023438 12.173828,14.964844 11.777344,10.3125 15,6.9199219 10.375,5.8222656 8,1.7246094 Z M 8,4 l 1.6582031,2.7773438 3.2324219,0.7441406 -2.25,2.3007812 0.275391,3.1542964 L 8.0117188,11.660156 5.1191406,13 5.3710938,9.8320312 3.109375,7.5214844 6.3417969,6.7773438 8,4 Z"
- style="opacity:1;fill:#c3ae65;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rating_star.svg b/editor/icons/source/icon_rating_star.svg
deleted file mode 100644
index 7ed3f9fbfa..0000000000
--- a/editor/icons/source/icon_rating_star.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_favorites.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rating_star.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.1543493"
- inkscape:cy="6.6898808"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ffe484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8.0000004,1038.0862 5.62591,1042.1835 1,1043.2813 l 3.2360991,3.4074 -0.3586608,4.6735 4.1388649,-1.9766 4.1572048,1.9421 -0.395342,-4.6532 3.221834,-3.3932 -4.625909,-1.0978 -2.3740906,-4.0973 z"
- id="path4254"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_ray_cast.svg b/editor/icons/source/icon_ray_cast.svg
deleted file mode 100644
index b8cab72d07..0000000000
--- a/editor/icons/source/icon_ray_cast.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_ray_cast.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="7.3699208"
- inkscape:cy="8.6534602"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="9"
- x="7"
- y="1037.3622" />
- <path
- style="fill:#fc9c9c;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.99607843"
- d="m 4,1046.3622 8,0 -4,5 z"
- id="path4156"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_ray_cast_2d.svg b/editor/icons/source/icon_ray_cast_2d.svg
deleted file mode 100644
index faadd41a17..0000000000
--- a/editor/icons/source/icon_ray_cast_2d.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_ray_cast_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="7.3699208"
- inkscape:cy="8.6534602"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5b7f5;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="9"
- x="7"
- y="1037.3622" />
- <path
- style="fill:#a5b7f5;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.98823529"
- d="m 4,1046.3622 8,0 -4,5 z"
- id="path4156"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_ray_shape.svg b/editor/icons/source/icon_ray_shape.svg
deleted file mode 100644
index 0e0f2940ae..0000000000
--- a/editor/icons/source/icon_ray_shape.svg
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_ray_shape.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="10.045124"
- inkscape:cx="1.7215967"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <path
- style="fill:#a2d2ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,1051.3622 -2,-2 0,-7 2,2 z"
- id="path4161"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4165"
- d="m 8,1047.8622 -2,-1.5 0,-4 2,2 z"
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- style="fill:#a2d2ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 8,1037.3622 -6,5 6,4 z"
- id="path4157"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4163"
- d="m 8,1051.3622 2,-2 0,-7 -2,2 z"
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4159"
- d="m 8,1037.3622 6,5 -6,4 z"
- style="fill:#2998ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_ray_shape_2d.svg b/editor/icons/source/icon_ray_shape_2d.svg
deleted file mode 100644
index 7ffc2ff3b5..0000000000
--- a/editor/icons/source/icon_ray_shape_2d.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_ray_shape_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="-3.626492"
- inkscape:cy="10.256723"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 8,1038.3622 0,12"
- id="path4203"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- sodipodi:nodetypes="ccc"
- inkscape:connector-curvature="0"
- id="path4224"
- d="m 5,1047.3622 3,3 3,-3"
- style="fill:none;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rayito.svg b/editor/icons/source/icon_rayito.svg
deleted file mode 100644
index 56988b9e4f..0000000000
--- a/editor/icons/source/icon_rayito.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rayito.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254833"
- inkscape:cx="7.3867117"
- inkscape:cy="10.060119"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="7"
- height="7.0710845"
- x="152.19386"
- y="1047.8939"
- transform="matrix(1,0,-0.14142068,0.98994959,0,0)" />
- <path
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 6,1043.3622 8,0 -9,8 z"
- id="rect4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_real.svg b/editor/icons/source/icon_real.svg
deleted file mode 100644
index 1a3406ed48..0000000000
--- a/editor/icons/source/icon_real.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_real.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="4.517927"
- inkscape:cy="5.7292687"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="11.000017"
- x="3"
- y="1040.3622" />
- <rect
- y="1039.3622"
- x="3"
- height="2.0000174"
- width="4"
- id="rect4156"
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 7 3 A 2 2.0000055 0 0 1 9 5 A 2 2.0000055 0 0 1 7 7 L 7 9 A 4 4 0 0 0 11 5 A 4 4 0 0 0 7 1 z "
- transform="translate(0,1038.3622)"
- id="path4156" />
- <rect
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4160"
- width="4"
- height="2.0000174"
- x="3"
- y="1045.3622" />
- <rect
- y="-12"
- x="1049.3622"
- height="2.0000174"
- width="1.9999652"
- id="rect4162"
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0,1,-1,0,0,0)" />
- <path
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 7 L 8 9 A 2 2.0000055 0 0 1 10 11 L 12 11 A 4 4 0 0 0 8 7 z "
- transform="translate(0,1038.3622)"
- id="path4164" />
- <rect
- transform="matrix(0,1,-1,0,0,0)"
- style="opacity:1;fill:#cf68ea;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4168"
- width="1.9999652"
- height="2.0000174"
- x="1045.3622"
- y="-8.0000086" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rectangle_shape_2d.svg b/editor/icons/source/icon_rectangle_shape_2d.svg
deleted file mode 100644
index d362944e7a..0000000000
--- a/editor/icons/source/icon_rectangle_shape_2d.svg
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rectangle_shape_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="52.6875"
- inkscape:cx="4.6595492"
- inkscape:cy="7.9620403"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:0.98823529;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate"
- id="rect4226"
- width="12"
- height="7.9999824"
- x="2"
- y="1040.3622"
- rx="1.7382812e-05"
- ry="1.7382812e-05" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_reference_rect.svg b/editor/icons/source/icon_reference_rect.svg
deleted file mode 100644
index ace9a48a23..0000000000
--- a/editor/icons/source/icon_reference_rect.svg
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_reference_rect.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.97614"
- inkscape:cy="8.6140348"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- id="rect817"
- width="2"
- height="2"
- x="1"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="13"
- height="2"
- width="2"
- id="rect819"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- id="rect821"
- width="8"
- height="2"
- x="4"
- y="1037.3622" />
- <rect
- y="1049.3622"
- x="4"
- height="2"
- width="8"
- id="rect823"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- id="rect825"
- width="2"
- height="2"
- x="13"
- y="1049.3622" />
- <rect
- y="1049.3622"
- x="1"
- height="2"
- width="2"
- id="rect827"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- id="rect829"
- width="8"
- height="2"
- x="1040.3622"
- y="-3"
- transform="rotate(90)" />
- <rect
- transform="rotate(90)"
- y="-15"
- x="1040.3622"
- height="2"
- width="8"
- id="rect831"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_reflection_probe.svg b/editor/icons/source/icon_reflection_probe.svg
deleted file mode 100644
index 64b6493d6d..0000000000
--- a/editor/icons/source/icon_reflection_probe.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_reflection_probe.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.348015"
- inkscape:cy="11.115501"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.9628906 1.0019531 A 1.0001 1.0001 0 0 0 7.5527344 1.1054688 L 1.5527344 4.1054688 A 1.0001 1.0001 0 0 0 1 5 L 1 11 A 1.0001 1.0001 0 0 0 1.5527344 11.894531 L 7.5527344 14.894531 A 1.0001 1.0001 0 0 0 8.4472656 14.894531 L 14.447266 11.894531 A 1.0001 1.0001 0 0 0 15 11 L 15 5 A 1.0001 1.0001 0 0 0 14.447266 4.1054688 L 8.4472656 1.1054688 A 1.0001 1.0001 0 0 0 7.9628906 1.0019531 z M 7 3.6191406 L 7 12.382812 L 3 10.382812 L 3 5.6191406 L 7 3.6191406 z M 9 3.6191406 L 13 5.6191406 L 13 10.382812 L 9 12.382812 L 9 3.6191406 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_region_edit.svg b/editor/icons/source/icon_region_edit.svg
deleted file mode 100644
index b42a53e88d..0000000000
--- a/editor/icons/source/icon_region_edit.svg
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_region_edit.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="5.9007098"
- inkscape:cy="9.4003021"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4165"
- width="6"
- height="6"
- x="6"
- y="1042.3622" />
- <rect
- y="1037.3622"
- x="6"
- height="4.0000348"
- width="6"
- id="rect4167"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4169"
- width="4"
- height="4.0000348"
- x="1"
- y="1037.3622" />
- <rect
- y="1042.3622"
- x="1"
- height="6.0000348"
- width="4"
- id="rect4171"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4173"
- width="4"
- height="2.0000174"
- x="1"
- y="1049.3622" />
- <rect
- y="1049.3622"
- x="6"
- height="2.0000174"
- width="6"
- id="rect4175"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4177"
- width="2"
- height="6.0000348"
- x="13"
- y="1042.3622" />
- <rect
- y="1037.3622"
- x="13"
- height="4.0000348"
- width="2"
- id="rect4179"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.32549021;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4181"
- width="2"
- height="2.0000174"
- x="13"
- y="1049.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_reload_small.svg b/editor/icons/source/icon_reload_small.svg
deleted file mode 100644
index 2d891c2238..0000000000
--- a/editor/icons/source/icon_reload_small.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="14"
- height="14"
- viewBox="0 0 14 14"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_reload_small.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.859062"
- inkscape:cy="8.1812057"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1038.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8,1039.3622 a 6.0000172,6.0000172 0 0 0 -6,6 l 2,0 a 4,4 0 0 1 4,-4 4,4 0 0 1 4,4 4,4 0 0 1 -4,4 l 0,2 a 6.0000172,6.0000172 0 0 0 6,-6 6.0000172,6.0000172 0 0 0 -6,-6 z"
- id="path4138"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:type="star"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4142"
- sodipodi:sides="3"
- sodipodi:cx="3"
- sodipodi:cy="1046.3622"
- sodipodi:r1="2.236068"
- sodipodi:r2="1.118034"
- sodipodi:arg1="1.0471976"
- sodipodi:arg2="2.0943951"
- inkscape:flatsided="false"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 4.1180339,1048.2987 -1.6770509,-0.9683 -1.67705101,-0.9682 1.67705101,-0.9683 1.6770511,-0.9682 -1e-7,1.9365 z"
- inkscape:transform-center-x="0.00013164169"
- transform="matrix(0,-1.1925797,1.5491989,0,-1618.0232,1050.2732)"
- inkscape:transform-center-y="0.66664316" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_remote.svg b/editor/icons/source/icon_remote.svg
deleted file mode 100644
index f5b458c348..0000000000
--- a/editor/icons/source/icon_remote.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_packed_scene.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_remote.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.572511"
- inkscape:cy="7.1227734"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4157"
- cx="8"
- cy="1043.3622"
- r="2.0000174" />
- <rect
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4159"
- width="2"
- height="7"
- x="7"
- y="1044.3622" />
- <path
- style="opacity:1;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8.0878906 1 A 6.0000172 6.0000172 0 0 0 3.7578125 2.7578125 A 6.0000172 6.0000172 0 0 0 3.7578125 11.242188 L 5.1738281 9.8261719 A 4.0000172 4.0000172 0 0 1 4 7 A 4.0000172 4.0000172 0 0 1 8 3 A 4.0000172 4.0000172 0 0 1 12 7 A 4.0000172 4.0000172 0 0 1 10.826172 9.8261719 L 12.242188 11.242188 A 6.0000172 6.0000172 0 0 0 12.242188 2.7578125 A 6.0000172 6.0000172 0 0 0 8.0878906 1 z "
- transform="translate(0,1036.3622)"
- id="circle4163" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_remote_transform.svg b/editor/icons/source/icon_remote_transform.svg
deleted file mode 100644
index 814384297e..0000000000
--- a/editor/icons/source/icon_remote_transform.svg
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_remote_transform.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="10.542126"
- inkscape:cy="9.6951879"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2.66666675;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path834"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="1047.3622"
- sodipodi:rx="4"
- sodipodi:ry="4"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- d="m 12,1047.3622 a 4,4 0 0 1 -2.0000001,3.4641 4,4 0 0 1 -4,0 A 4,4 0 0 1 4,1047.3622 l 4,0 z" />
- <rect
- style="fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect836"
- width="2"
- height="4"
- x="7"
- y="1045.3622"
- ry="1" />
- <path
- style="fill:none;fill-opacity:1;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path838"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="1045.3622"
- sodipodi:rx="7.0000172"
- sodipodi:ry="7.0000172"
- sodipodi:start="3.6651914"
- sodipodi:end="5.7595865"
- d="m 1.9378072,1041.8622 a 7.0000172,7.0000172 0 0 1 6.0621926,-3.5 7.0000172,7.0000172 0 0 1 6.0621932,3.5"
- sodipodi:open="true" />
- <path
- r="3.645746"
- cy="1045.3622"
- cx="8"
- id="path846"
- style="fill:#fc9c9c;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- id="circle848"
- style="fill:none;fill-opacity:1;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="1045.3622"
- sodipodi:rx="2.9999826"
- sodipodi:ry="2.9999826"
- sodipodi:start="3.403392"
- sodipodi:end="6.0213859"
- d="m 5.1022393,1044.5857 a 2.9999826,2.9999826 0 0 1 2.8977606,-2.2235 2.9999826,2.9999826 0 0 1 2.8977611,2.2235"
- sodipodi:open="true" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_remote_transform_2d.svg b/editor/icons/source/icon_remote_transform_2d.svg
deleted file mode 100644
index 7976937a17..0000000000
--- a/editor/icons/source/icon_remote_transform_2d.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_remote_transform_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="-4.711526"
- inkscape:cy="5.1371642"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2.66666675;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path834"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="1047.3622"
- sodipodi:rx="4"
- sodipodi:ry="4"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- d="m 12,1047.3622 a 4,4 0 0 1 -2.0000001,3.4641 4,4 0 0 1 -4,0 A 4,4 0 0 1 4,1047.3622 l 4,0 z" />
- <rect
- style="fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect836"
- width="2"
- height="4"
- x="7"
- y="1045.3622"
- ry="1" />
- <path
- style="fill:none;fill-opacity:1;stroke:#a5b7f7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path838"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="1045.3622"
- sodipodi:rx="7.0000172"
- sodipodi:ry="7.0000172"
- sodipodi:start="3.6651914"
- sodipodi:end="5.7595865"
- d="m 1.9378072,1041.8622 a 7.0000172,7.0000172 0 0 1 6.0621926,-3.5 7.0000172,7.0000172 0 0 1 6.0621932,3.5"
- sodipodi:open="true" />
- <path
- id="circle848"
- style="fill:none;fill-opacity:1;stroke:#a5b7f7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- sodipodi:type="arc"
- sodipodi:cx="8"
- sodipodi:cy="1045.3622"
- sodipodi:rx="2.9999826"
- sodipodi:ry="2.9999826"
- sodipodi:start="3.403392"
- sodipodi:end="6.0213859"
- d="m 5.1022393,1044.5857 a 2.9999826,2.9999826 0 0 1 2.8977606,-2.2235 2.9999826,2.9999826 0 0 1 2.8977611,2.2235"
- sodipodi:open="true" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_remove.svg b/editor/icons/source/icon_remove.svg
deleted file mode 100644
index 9d75f1e921..0000000000
--- a/editor/icons/source/icon_remove.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_remove.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_remove.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="7.6907159"
- inkscape:cy="8.3329344"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 5 L 2 13 A 2 2 0 0 0 4 15 L 12 15 A 2 2 0 0 0 14 13 L 14 5 L 2 5 z M 3 7 L 5 7 L 5 13 L 3 13 L 3 7 z M 7 7 L 9 7 L 9 13 L 7 13 L 7 7 z M 11 7 L 13 7 L 13 13 L 11 13 L 11 7 z "
- transform="translate(0,1036.3622)"
- id="rect4136" />
- <rect
- y="1038.3622"
- x="1"
- height="2.0000174"
- width="14"
- id="rect4138"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4140"
- width="6"
- height="2.0000174"
- x="5"
- y="1037.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rename.svg b/editor/icons/source/icon_rename.svg
deleted file mode 100644
index 41eb10c7fc..0000000000
--- a/editor/icons/source/icon_rename.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_rename.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rename.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="8.1124598"
- inkscape:cy="7.4898959"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 5 2 L 5 4 L 7 4 L 7 12 L 5 12 L 5 14 L 7 14 C 7.5522847 14 8 13.5523 8 13 C 8 13.5523 8.4477153 14 9 14 L 11 14 L 11 12 L 9 12 L 9 4 L 11 4 L 11 2 L 9 2 C 8.4477153 2 8 2.4477153 8 3 C 8 2.4477153 7.5522847 2 7 2 L 5 2 z "
- transform="translate(0,1036.3622)"
- id="rect4138" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_reparent.svg b/editor/icons/source/icon_reparent.svg
deleted file mode 100644
index 79543fe066..0000000000
--- a/editor/icons/source/icon_reparent.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_edit.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_reparent.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="11.980115"
- inkscape:cy="8.5519429"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 2 A 2 2 0 0 0 1 4 A 2 2 0 0 0 2 5.7304688 L 2 11.271484 A 2 2 0 0 0 1 13 A 2 2 0 0 0 3 15 A 2 2 0 0 0 4.7304688 14 L 11.271484 14 A 2 2 0 0 0 13 15 A 2 2 0 0 0 15 13 A 2 2 0 0 0 13 11 A 2 2 0 0 0 11.269531 12 L 4.7285156 12 A 2 2 0 0 0 4 11.269531 L 4 5.7285156 A 2 2 0 0 0 5 4 A 2 2 0 0 0 3 2 z "
- transform="translate(0,1036.3622)"
- id="circle4277" />
- <path
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 9 1 L 5 4 L 9 7 L 9 5 A 3 3 0 0 1 12 8 L 12 10 L 14 10 L 14 8 A 5.0000172 5.0000172 0 0 0 9 3 L 9 1 z "
- transform="translate(0,1036.3622)"
- id="path4289" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_resource_preloader.svg b/editor/icons/source/icon_resource_preloader.svg
deleted file mode 100644
index bab1bb4e1e..0000000000
--- a/editor/icons/source/icon_resource_preloader.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_resource_preloader.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="5.6052155"
- inkscape:cy="14.599536"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-2"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- inkscape:label="Layer 1"
- id="layer1-2">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.9628906 1.0019531 A 1.0001 1.0001 0 0 0 7.5527344 1.1054688 L 1.5527344 4.1054688 A 1.0001 1.0001 0 0 0 1 5 L 1 11 A 1.0001 1.0001 0 0 0 1.5527344 11.894531 L 7.5527344 14.894531 A 1.0001 1.0001 0 0 0 8.4472656 14.894531 L 14.447266 11.894531 A 1.0001 1.0001 0 0 0 15 11 L 15 5 A 1.0001 1.0001 0 0 0 14.447266 4.1054688 L 8.4472656 1.1054688 A 1.0001 1.0001 0 0 0 7.9628906 1.0019531 z M 8 3.1191406 L 11.763672 5 L 8 6.8828125 L 4.2363281 5 L 8 3.1191406 z M 3 6.6191406 L 7 8.6191406 L 7 12.382812 L 3 10.382812 L 3 6.6191406 z M 13 6.6191406 L 13 10.382812 L 9 12.382812 L 9 8.6191406 L 13 6.6191406 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 11,1042.3622 -6,-3 -3,2 6,3 z"
- id="path4214"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rich_text_label.svg b/editor/icons/source/icon_rich_text_label.svg
deleted file mode 100644
index 4a77dbe672..0000000000
--- a/editor/icons/source/icon_rich_text_label.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rich_text_label.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="9.3773364"
- inkscape:cy="8.3725226"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="8"
- height="2"
- x="1"
- y="1037.3622" />
- <rect
- y="1041.3622"
- x="1"
- height="2"
- width="2"
- id="rect4159"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4161"
- width="4"
- height="2"
- x="5"
- y="1041.3622" />
- <rect
- y="1045.3622"
- x="1"
- height="2"
- width="8"
- id="rect4163"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4165"
- width="4"
- height="2"
- x="1"
- y="1049.3622" />
- <rect
- y="1049.3622"
- x="7"
- height="2"
- width="2"
- id="rect4167"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 12,1048.3622 -2,0 3,3 3,-3 -2,0 0,-8 2,0 -3,-3 -3,3 2,0 z"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rigid_body.svg b/editor/icons/source/icon_rigid_body.svg
deleted file mode 100644
index 6bebb5250f..0000000000
--- a/editor/icons/source/icon_rigid_body.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_animated_sprite.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rigid_body.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="5.8981998"
- inkscape:cy="3.2693775"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 1.0351562 8.6992188 A 7 7 0 0 0 1.3125 10.068359 A 7 7 0 0 0 2.2226562 11.953125 A 7 7 0 0 0 2.5253906 12.361328 C 2.5261756 12.358768 2.5265573 12.356076 2.5273438 12.353516 A 7 7 0 0 0 8 15 A 7 7 0 0 0 11.242188 14.197266 C 11.243563 14.197659 11.244719 14.198826 11.246094 14.199219 A 7 7 0 0 0 11.28125 14.177734 A 7 7 0 0 0 11.707031 13.927734 A 7 7 0 0 0 11.876953 13.824219 A 7 7 0 0 0 12.246094 13.554688 A 7 7 0 0 0 12.451172 13.398438 A 7 7 0 0 0 12.792969 13.089844 A 7 7 0 0 0 12.957031 12.935547 A 7 7 0 0 0 13.287109 12.574219 A 7 7 0 0 0 13.427734 12.414062 A 7 7 0 0 0 13.705078 12.041016 A 7 7 0 0 0 13.84375 11.845703 A 7 7 0 0 0 14.0625 11.484375 A 7 7 0 0 0 14.205078 11.234375 A 7 7 0 0 0 14.361328 10.900391 A 7 7 0 0 0 14.5 10.589844 A 7 7 0 0 0 14.607422 10.28125 A 7 7 0 0 0 14.726562 9.9277344 A 7 7 0 0 0 14.814453 9.5585938 A 7 7 0 0 0 14.880859 9.265625 A 7 7 0 0 0 14.9375 8.8652344 A 7 7 0 0 0 14.974609 8.5527344 A 7 7 0 0 0 15 8 A 7 7 0 0 0 10.615234 1.5117188 A 7 7 0 0 0 10.607422 1.5078125 A 7 7 0 0 0 10.605469 1.5078125 A 7 7 0 0 0 9.9902344 1.2949219 A 7 7 0 0 0 9.9453125 1.2792969 A 7 7 0 0 0 9.9394531 1.2773438 A 7 7 0 0 0 9.3886719 1.1464844 A 7 7 0 0 0 9.2480469 1.1152344 A 7 7 0 0 0 8.6972656 1.0429688 A 7 7 0 0 0 8.5546875 1.0253906 A 7 7 0 0 0 8 1 z M 9.9511719 2.3339844 A 6 6 0 0 1 14 8 L 7 8 A 1.9999826 1.9999826 0 0 1 6.0507812 9.6992188 C 7.3958011 11.726012 8.6521082 12.963726 9.9472656 13.667969 A 6 6 0 0 1 8 14 A 6 6 0 0 1 2.9453125 11.230469 C 3.1830255 10.651966 3.4486773 10.090161 3.7714844 9.5742188 A 1.9999826 1.9999826 0 0 1 3 8 L 2 8 A 6 6 0 0 1 3.1230469 4.5136719 C 3.2693647 5.1646014 3.4808033 5.7970038 3.8066406 6.3984375 A 1.9999826 1.9999826 0 0 1 5 6 A 1.9999826 1.9999826 0 0 1 6.0507812 6.3007812 C 7.397198 4.2718995 8.6545329 3.0376638 9.9511719 2.3339844 z "
- transform="translate(0,1036.3622)"
- id="circle4189" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4195"
- cx="5"
- cy="1044.3622"
- r="2" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rigid_body_2d.svg b/editor/icons/source/icon_rigid_body_2d.svg
deleted file mode 100644
index 9c8309ecfb..0000000000
--- a/editor/icons/source/icon_rigid_body_2d.svg
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_animated_sprite.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rigid_body_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.941452"
- inkscape:cy="2.9508684"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f1;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8,1037.3622 a 7,7 0 0 0 -7,7 7,7 0 0 0 7,7 7,7 0 0 0 7,-7 7,7 0 0 0 -7,-7 z m 0,1 a 6,6 0 0 1 6,6 6,6 0 0 1 -6,6 6,6 0 0 1 -6,-6 6,6 0 0 1 6,-6 z"
- id="circle4189"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#a5b7f1;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8,1037.3622 a 7,7 0 0 0 -5.087891,2.2051 c 0.104949,1.1207 0.354173,2.1959 0.894532,3.1933 A 1.9999826,1.9999826 0 0 1 5,1042.3622 a 1.9999826,1.9999826 0 0 1 1.050781,0.3008 c 1.787275,-2.6932 3.418131,-3.9904 5.191407,-4.4981 A 7,7 0 0 0 8,1037.3622 Z m -7,7 a 7,7 0 0 0 1.525391,4.3613 c 0.302809,-0.9877 0.71628,-1.9403 1.246093,-2.7871 A 1.9999826,1.9999826 0 0 1 3,1044.3622 l -2,0 z m 6,0 a 1.9999826,1.9999826 0 0 1 -0.949219,1.6992 c 1.788654,2.6953 3.420447,3.9932 5.195313,4.5 A 7,7 0 0 0 15,1044.3622 l -8,0 z"
- id="path4174"
- inkscape:connector-curvature="0" />
- <circle
- style="opacity:1;fill:#a5b7f2;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4195"
- cx="5"
- cy="1044.3622"
- r="2" />
- <path
- style="opacity:1;fill:#a5b7f2;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 45,1037.3585 a 7,7 0 0 0 -7,7 7,7 0 0 0 7,7 7,7 0 0 0 7,-7 7,7 0 0 0 -7,-7 z m 0,1 a 6.0000172,6.0000172 0 0 1 6,6 6.0000172,6.0000172 0 0 1 -6,6 6.0000172,6.0000172 0 0 1 -6,-6 6.0000172,6.0000172 0 0 1 6,-6 z"
- id="path4199"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a5b7f3;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 38,1044.3585 c 5,0.01 9,0.01 14,0 -2,-2.9934 -5,-4 -7,-4 -2,0 -5,1.0066 -7,4 z"
- id="path4204"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccsc" />
- <path
- style="opacity:1;fill:#a3b6f2;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 38,1044.3585 c 0,3.866 3.134007,7 7,7 3.865993,0 7,-3.134 7,-7 -2,2.9933 -5,4 -7,4 -2,0 -5,-1.0067 -7,-4 z"
- id="path4224"
- inkscape:connector-curvature="0" />
- <path
- style="opacity:1;fill:#a3b6f2;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m -9,1037.3622 a 7,7 0 0 0 -7,7 7,7 0 0 0 7,7 7,7 0 0 0 7,-7 7,7 0 0 0 -7,-7 z m 0,1 a 6,6 0 0 1 6,6 6,6 0 0 1 -6,6 6,6 0 0 1 -6,-6 6,6 0 0 1 6,-6 z"
- id="path4230"
- inkscape:connector-curvature="0" />
- <circle
- style="opacity:1;fill:#a3b6f2;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4235"
- cx="-9"
- cy="1044.3622"
- r="2" />
- <path
- style="opacity:1;fill:#a3b6f2;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m -9,1037.3622 a 7,7 0 0 0 -3.5,0.9375 l 3.5,6.0625 3.5,-6.0625 a 7,7 0 0 0 -3.5,-0.9375 z m 0,7 3.5,6.0625 a 7,7 0 0 0 2.5625,-2.5625 7,7 0 0 0 0.9375,-3.5 l -7,0 z m 0,0 -7,0 a 7,7 0 0 0 0.9375,3.5 7,7 0 0 0 2.5625,2.5625 l 3.5,-6.0625 z"
- id="path4237"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_room.svg b/editor/icons/source/icon_room.svg
deleted file mode 100644
index 599bbeb770..0000000000
--- a/editor/icons/source/icon_room.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_room.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="11.166681"
- inkscape:cy="6.6297847"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.9628906 1.0019531 A 1.0001 1.0001 0 0 0 7.5527344 1.1054688 L 1.5527344 4.1054688 A 1.0001 1.0001 0 0 0 1 5 L 1 11 A 1.0001 1.0001 0 0 0 1.5527344 11.894531 L 7.5527344 14.894531 A 1.0001 1.0001 0 0 0 8.4472656 14.894531 L 14.447266 11.894531 A 1.0001 1.0001 0 0 0 15 11 L 15 5 A 1.0001 1.0001 0 0 0 14.447266 4.1054688 L 8.4472656 1.1054688 A 1.0001 1.0001 0 0 0 7.9628906 1.0019531 z M 9 3.6191406 L 13 5.6191406 L 13 9.3828125 L 9 7.3828125 L 9 3.6191406 z M 8 9.1191406 L 11.763672 11 L 8 12.882812 L 4.2363281 11 L 8 9.1191406 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_room_bounds.svg b/editor/icons/source/icon_room_bounds.svg
deleted file mode 100644
index 8f7e6e6c83..0000000000
--- a/editor/icons/source/icon_room_bounds.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_room_bounds.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="9.5548877"
- inkscape:cy="9.0516113"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 1 1 L 1 2 L 1 3 L 2 3 L 2 2 L 3 2 L 3 1 L 2 1 L 1 1 z M 13 1 L 13 2 L 14 2 L 14 3 L 15 3 L 15 2 L 15 1 L 14 1 L 13 1 z M 7.9628906 1.0019531 A 1.0001 1.0001 0 0 0 7.5527344 1.1054688 L 1.5527344 4.1054688 A 1.0001 1.0001 0 0 0 1 5 L 1 11 A 1.0001 1.0001 0 0 0 1.5527344 11.894531 L 7.5527344 14.894531 A 1.0001 1.0001 0 0 0 8.4472656 14.894531 L 14.447266 11.894531 A 1.0001 1.0001 0 0 0 15 11 L 15 5 A 1.0001 1.0001 0 0 0 14.447266 4.1054688 L 8.4472656 1.1054688 A 1.0001 1.0001 0 0 0 7.9628906 1.0019531 z M 9 3.6191406 L 13 5.6191406 L 13 9.3828125 L 9 7.3828125 L 9 3.6191406 z M 8 9.1191406 L 11.763672 11 L 8 12.882812 L 4.2363281 11 L 8 9.1191406 z M 1 13 L 1 14 L 1 15 L 2 15 L 3 15 L 3 14 L 2 14 L 2 13 L 1 13 z M 14 13 L 14 14 L 13 14 L 13 15 L 14 15 L 15 15 L 15 14 L 15 13 L 14 13 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rotate_0.svg b/editor/icons/source/icon_rotate_0.svg
deleted file mode 100644
index 710edc8fee..0000000000
--- a/editor/icons/source/icon_rotate_0.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rotate_0.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.0020505"
- inkscape:cy="9.5378523"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="7.0000172"
- x="7"
- y="1038.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 5 5 0 0 1 13 8 A 5 5 0 0 1 8 13 A 5 5 0 0 1 3 8 A 5 5 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rotate_180.svg b/editor/icons/source/icon_rotate_180.svg
deleted file mode 100644
index ba44fa295d..0000000000
--- a/editor/icons/source/icon_rotate_180.svg
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rotate_180.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.9698535"
- inkscape:cy="9.9922105"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0000001,1038.3622 a 6,6 0 0 1 5.9999999,6 l -6,0 z"
- id="path4183" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="7.0000172"
- x="7"
- y="1038.3622"
- inkscape:transform-center-y="-2.5000088" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 5 5 0 0 1 13 8 A 5 5 0 0 1 8 13 A 5 5 0 0 1 3 8 A 5 5 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- <rect
- inkscape:transform-center-y="2.499974"
- y="-1050.3622"
- x="-9.0000172"
- height="7.0000172"
- width="2"
- id="rect4181"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="scale(-1,-1)"
- inkscape:transform-center-x="-1.7183069e-05" />
- <path
- id="path4205"
- d="m 14,1044.3622 a 6,6 0 0 1 -6,6 l 0,-6 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="-3"
- inkscape:transform-center-y="3" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rotate_270.svg b/editor/icons/source/icon_rotate_270.svg
deleted file mode 100644
index 403321cb89..0000000000
--- a/editor/icons/source/icon_rotate_270.svg
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rotate_270.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.9698535"
- inkscape:cy="9.9922105"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0000001,1038.3622 a 6,6 0 0 1 5.9999999,6 l -6,0 z"
- id="path4183" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="7.0000172"
- x="7"
- y="1038.3622"
- inkscape:transform-center-y="-2.5000088" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 5 5 0 0 1 13 8 A 5 5 0 0 1 8 13 A 5 5 0 0 1 3 8 A 5 5 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- <rect
- inkscape:transform-center-y="-1.7416931e-05"
- y="2.0000174"
- x="-1045.3622"
- height="7.0000172"
- width="2"
- id="rect4181"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0,-1,1,0,0,0)"
- inkscape:transform-center-x="2.499974" />
- <path
- id="path4205"
- d="m 8,1050.3622 a 6,6 0 0 1 -6,-6 l 6,0 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="3"
- inkscape:transform-center-y="2.9999999" />
- <path
- inkscape:transform-center-y="2.9999999"
- inkscape:transform-center-x="-3"
- inkscape:connector-curvature="0"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 14,1044.3622 a 6,6 0 0 1 -6.0000001,6 l 0,-6 z"
- id="path4226" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_rotate_90.svg b/editor/icons/source/icon_rotate_90.svg
deleted file mode 100644
index f6b7d84032..0000000000
--- a/editor/icons/source/icon_rotate_90.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_rotate_90.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.9698535"
- inkscape:cy="9.9922105"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 8.0000001,1038.3622 a 6,6 0 0 1 5.9999999,6 l -6,0 z"
- id="path4183" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="7.0000172"
- x="7"
- y="1038.3622"
- inkscape:transform-center-y="-2.5000088" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 5 5 0 0 1 13 8 A 5 5 0 0 1 8 13 A 5 5 0 0 1 3 8 A 5 5 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4157" />
- <rect
- inkscape:transform-center-y="-1.7383069e-05"
- y="-14.000017"
- x="1043.3622"
- height="7.0000172"
- width="2"
- id="rect4181"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="matrix(0,1,-1,0,0,0)"
- inkscape:transform-center-x="-2.5000086" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_sample_library.svg b/editor/icons/source/icon_sample_library.svg
deleted file mode 100644
index 78b01430c2..0000000000
--- a/editor/icons/source/icon_sample_library.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_sample_library.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="21.70867"
- inkscape:cx="6.3137691"
- inkscape:cy="6.7376711"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 9,8 0,1 0,5 0,1 5,0 c 0.552285,0 1,-0.447715 1,-1 L 15,9 C 15,8.4477153 14.552285,8 14,8 l 0,4 -1,-1 -1,1 0,-4 z"
- transform="translate(0,1036.3622)"
- id="rect4161"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccssscccccc" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ff8484;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 7.0214844,1037.3633 a 1.0001,1.0001 0 0 0 -1,0.875 l -0.5898438,4.7226 -0.5234375,-1.0468 a 1.0001,1.0001 0 0 0 -0.8945312,-0.5528 l -2,0 a 1.0001,1.0001 0 1 0 0,2 l 1.3828125,0 1.7226562,3.4473 a 1.0001,1.0001 0 0 0 1.8867188,-0.3223 l 0.5898437,-4.7226 0.5234375,1.0449 a 1.0001,1.0001 0 0 0 0.8945313,0.5527 l 3.0000001,0 a 1.0001,1.0001 0 1 0 0,-2 l -2.3808595,0 -1.7246094,-3.4472 a 1.0001,1.0001 0 0 0 -0.8867187,-0.5508 z"
- id="path4181"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_save.svg b/editor/icons/source/icon_save.svg
deleted file mode 100644
index 9307537d4b..0000000000
--- a/editor/icons/source/icon_save.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_save.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_save.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="12.546235"
- inkscape:cy="8.6646398"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,5 11,1 Z m 0,0 8,0 0,6 -8,0 z m 5,8 c 1.1045695,0 2,0.8954305 2,2 0,1.104569 -0.8954305,2 -2,2 C 6.8954305,13 6,12.104569 6,11 6,9.8954305 6.8954305,9 8,9 Z"
- transform="translate(0,1036.3622)"
- id="rect4135"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssssssccscccccsssss" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4143"
- width="3"
- height="4.9999828"
- x="4"
- y="1037.3622" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 11,1037.3622 1,0 3,3 0,2 -4,0 z"
- id="path4145"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_script.svg b/editor/icons/source/icon_script.svg
deleted file mode 100644
index 8073692ce8..0000000000
--- a/editor/icons/source/icon_script.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_script.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254833"
- inkscape:cx="2.4359625"
- inkscape:cy="9.1567888"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 1 L 6 2 A 1 1 0 0 0 5 3 L 5 13 L 4 13 L 4 11 L 2 11 L 2 13 A 1 1 0 0 0 2.5 13.865234 A 1 1 0 0 0 3 14 L 3 15 L 10 15 A 2 2 0 0 0 12 13 L 12 5 L 15 5 L 15 3 A 2 2 0 0 0 13 1 L 6 1 z "
- transform="translate(0,1036.3622)"
- id="rect4255" />
- <path
- style="opacity:1;fill:#b4b4b4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 1 C 4.8954305 1 4 1.8954305 4 3 L 4 10 L 2 10 L 1 10 L 1 11 L 1 13 C 1 14.104569 1.8954305 15 3 15 C 4.1045695 15 5 14.104569 5 13 L 5 3 C 5 2.4477153 5.4477153 2 6 2 C 6.5522847 2 7 2.4477153 7 3 L 7 4 L 7 5 L 7 6 L 8 6 L 12 6 L 12 5 L 8 5 L 8 4 L 8 3 C 8 1.8954305 7.1045695 1 6 1 z M 2 11 L 4 11 L 4 13 C 4 13.552285 3.5522847 14 3 14 C 2.4477153 14 2 13.552285 2 13 L 2 11 z "
- transform="translate(0,1036.3622)"
- id="path4265" />
- <circle
- cy="1048.3622"
- cx="3"
- id="ellipse4234"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- ry="1.0000174"
- rx="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_script_create.svg b/editor/icons/source/icon_script_create.svg
deleted file mode 100644
index 0cf16a9c3b..0000000000
--- a/editor/icons/source/icon_script_create.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/godotengine/godot/tools/editor/icons/con_script_create.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_script_create.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="21.189633"
- inkscape:cx="7.8202901"
- inkscape:cy="11.917121"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 1 L 6 2 C 5.4477153 2 5 2.4477153 5 3 L 5 13 L 4 13 L 4 11 L 2 11 L 2 13 C 2.0002826 13.356983 2.1908437 13.686743 2.5 13.865234 C 2.6519425 13.953279 2.8243914 13.999759 3 14 L 3 15 L 8 15 L 9 15 L 9 14 L 8 14 L 8 10 L 10 10 L 10 8 L 12 8 L 12 5 L 15 5 L 15 3 C 15 1.8954305 14.104569 1 13 1 L 6 1 z "
- transform="translate(0,1036.3622)"
- id="rect4255" />
- <path
- style="opacity:1;fill:#b4b4b4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 1 C 4.8954305 1 4 1.8954305 4 3 L 4 10 L 2 10 L 1 10 L 1 11 L 1 13 C 1 14.104569 1.8954305 15 3 15 C 4.1045695 15 5 14.104569 5 13 L 5 3 C 5 2.4477153 5.4477153 2 6 2 C 6.5522847 2 7 2.4477153 7 3 L 7 4 L 7 5 L 7 6 L 8 6 L 12 6 L 12 5 L 8 5 L 8 4 L 8 3 C 8 1.8954305 7.1045695 1 6 1 z M 2 11 L 4 11 L 4 13 C 4 13.552285 3.5522847 14 3 14 C 2.4477153 14 2 13.552285 2 13 L 2 11 z "
- id="path4265"
- transform="translate(0,1036.3622)" />
- <circle
- cy="1048.3622"
- cx="3"
- id="ellipse4234"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- ry="1.0000174"
- rx="1" />
- <path
- style="fill:#84ffb1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 13,1049.3622 2,0 0,-2 -2,0 0,-2 -2,0 0,2 -2,0 0,2 2,0 0,2 2,0 z"
- id="path8069"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_script_remove.svg b/editor/icons/source/icon_script_remove.svg
deleted file mode 100644
index 1a0a0eebe3..0000000000
--- a/editor/icons/source/icon_script_remove.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/godotengine/godot/tools/editor/icons/con_script_create.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_script_remove.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="42.379266"
- inkscape:cx="6.774667"
- inkscape:cy="6.9870579"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 1 L 6 2 C 5.4477153 2 5 2.4477153 5 3 L 5 13 L 4 13 L 4 11 L 2 11 L 2 13 C 2.0002826 13.356983 2.1908437 13.686743 2.5 13.865234 C 2.6519425 13.953279 2.8243914 13.999759 3 14 L 3 15 L 8.6347656 15 L 7.0507812 13.416016 L 8.4648438 12.001953 L 7.0507812 10.585938 L 10.585938 7.0507812 L 12 8.4648438 L 12 8 L 12 5 L 15 5 L 15 3 C 15 1.8954305 14.104569 1 13 1 L 6 1 z "
- transform="translate(0,1036.3622)"
- id="rect4255" />
- <path
- style="opacity:1;fill:#b4b4b4;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 1 C 4.8954305 1 4 1.8954305 4 3 L 4 10 L 2 10 L 1 10 L 1 11 L 1 13 C 1 14.104569 1.8954305 15 3 15 C 4.1045695 15 5 14.104569 5 13 L 5 3 C 5 2.4477153 5.4477153 2 6 2 C 6.5522847 2 7 2.4477153 7 3 L 7 4 L 7 5 L 7 6 L 8 6 L 12 6 L 12 5 L 8 5 L 8 4 L 8 3 C 8 1.8954305 7.1045695 1 6 1 z M 2 11 L 4 11 L 4 13 C 4 13.552285 3.5522847 14 3 14 C 2.4477153 14 2 13.552285 2 13 L 2 11 z "
- id="path4265"
- transform="translate(0,1036.3622)" />
- <circle
- cy="1048.3622"
- cx="3"
- id="ellipse4234"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- ry="1.0000174"
- rx="1" />
- <path
- style="fill:#ff8484;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 13.414214,1048.3622 1.414213,-1.4142 -1.414213,-1.4142 L 12,1046.948 l -1.414214,-1.4142 -1.4142131,1.4142 1.4142131,1.4142 -1.4142131,1.4142 1.4142131,1.4142 1.414214,-1.4142 1.414214,1.4142 1.414213,-1.4142 z"
- id="path8069"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_scroll_bar.svg b/editor/icons/source/icon_scroll_bar.svg
deleted file mode 100644
index 2f007c7c94..0000000000
--- a/editor/icons/source/icon_scroll_bar.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_h_scroll_bar.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.1371771"
- inkscape:cy="7.8450604"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,3 C 1.8954305,3 1,3.8954305 1,5 l 0,6 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,5 C 15,3.8954305 14.104569,3 13,3 Z m 0,2 10,0 0,6 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <rect
- style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4181"
- width="4"
- height="4"
- x="4"
- y="1042.3622" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4187"
- width="4"
- height="4"
- x="4"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_scroll_container.svg b/editor/icons/source/icon_scroll_container.svg
deleted file mode 100644
index d694b646e0..0000000000
--- a/editor/icons/source/icon_scroll_container.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_scroll_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.2189611"
- inkscape:cy="10.454966"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4161"
- d="m 10,1042.3622 0,4 2,-2 z"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1042.3622 0,4 -2,-2 z"
- id="path4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1042.3622 4,0 -2,-2 z"
- id="path4157"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4159"
- d="m 6,1046.3622 4,0 -2,2 z"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_search.svg b/editor/icons/source/icon_search.svg
deleted file mode 100644
index bcd2ecca46..0000000000
--- a/editor/icons/source/icon_search.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_zoom.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_search.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.8093316"
- inkscape:cy="11.467722"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 6,1037.3622 a 5,5 0 0 0 -5,5 5,5 0 0 0 5,5 5,5 0 0 0 5,-5 5,5 0 0 0 -5,-5 z m 0,2 a 3,3 0 0 1 3,3 3,3 0 0 1 -3,3 3,3 0 0 1 -3,-3 3,3 0 0 1 3,-3 z"
- id="path4135"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4140"
- width="2"
- height="7.0000172"
- x="-733.81873"
- y="745.30402"
- inkscape:transform-center-y="5.3032921"
- transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
- inkscape:transform-center-x="-5.3033134" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_segment_shape_2d.svg b/editor/icons/source/icon_segment_shape_2d.svg
deleted file mode 100644
index b509a31362..0000000000
--- a/editor/icons/source/icon_segment_shape_2d.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_segment_shape_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="52.6875"
- inkscape:cx="5.5326216"
- inkscape:cy="8.6453144"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#68b6ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate"
- d="m 2,1050.3622 12,-12"
- id="path4268"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_shader.svg b/editor/icons/source/icon_shader.svg
deleted file mode 100644
index 1a2393fec2..0000000000
--- a/editor/icons/source/icon_shader.svg
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_material.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_shader.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4253">
- <path
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- id="path4255"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4207">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6.3749999,1025.8622 c -0.931942,10e-5 -1.6874069,0.6715 -1.6875,1.5 l 0,18 c 9.31e-5,0.8284 0.755558,1.4998 1.6875,1.5 l 20.2500001,0 c 0.931942,-2e-4 1.687407,-0.6716 1.6875,-1.5 l 0,-12 -8.4375,-7.5 z m 1.6875,3 10.1250001,0 0,4.5 c 0,0.831 0.752609,1.5 1.6875,1.5 l 5.0625,0 0,9 -16.8750001,0 z"
- id="path4209"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccc" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="20.042938"
- inkscape:cy="7.6712905"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4207)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777777,353.454)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_short_cut.svg b/editor/icons/source/icon_short_cut.svg
deleted file mode 100644
index 05069e8ea1..0000000000
--- a/editor/icons/source/icon_short_cut.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_short_cut.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="7.0902833"
- inkscape:cy="8.378548"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 4 2 C 3.4477153 2 3 2.4477 3 3 L 3 12.083984 C 3.0004015 12.589984 3.4479991 13 4 13 L 12 13 C 12.552001 13 12.999599 12.589984 13 12.083984 L 13 3 C 13 2.4477 12.552285 2 12 2 L 4 2 z M 1 4 L 1 13 A 2 2 0 0 0 3 15 L 13 15 A 2 2 0 0 0 15 13 L 15 4 L 14 4 L 14 13 A 0.9999826 0.9999826 0 0 1 13 14 L 3 14 A 1 1 0 0 1 2 13 L 2 4 L 1 4 z M 7 4 L 10 4 L 9 7 L 11 7 L 7 11 L 8 8 L 6 8 L 7 4 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4194"
- width="7"
- height="14"
- x="27"
- y="1038.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_signal.svg b/editor/icons/source/icon_signal.svg
deleted file mode 100644
index b4d3ff5ac8..0000000000
--- a/editor/icons/source/icon_signal.svg
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_signal.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="21.70867"
- inkscape:cx="11.546427"
- inkscape:cy="8.2846975"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4352"
- width="6"
- height="2.0000174"
- x="5"
- y="1043.3622" />
- <path
- transform="matrix(0,1.2810265,-0.92450034,0,-948.29952,1037.9571)"
- inkscape:transform-center-y="-9.6789057e-05"
- d="m 8.122499,-1036.5594 -3.122499,0 -3.122499,0 1.5612495,-2.7042 L 5,-1041.9677 l 1.5612495,2.7041 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="1.5707963"
- sodipodi:arg1="0.52359878"
- sodipodi:r2="1.8027756"
- sodipodi:r1="3.6055512"
- sodipodi:cy="-1038.3622"
- sodipodi:cx="5"
- sodipodi:sides="3"
- id="path4435"
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-linecap:round;stroke-opacity:1"
- sodipodi:type="star"
- inkscape:transform-center-x="1.1667546" />
- <rect
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4176"
- width="2"
- height="10"
- x="1"
- y="1039.3622" />
- <rect
- y="1047.3622"
- x="3"
- height="2.0000174"
- width="4"
- id="rect4178"
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4180"
- width="4"
- height="2.0000174"
- x="3"
- y="1039.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_skeleton.svg b/editor/icons/source/icon_skeleton.svg
deleted file mode 100644
index 2850b0331d..0000000000
--- a/editor/icons/source/icon_skeleton.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_skeleton.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="8.1423285"
- inkscape:cy="8.6304475"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 2 A 4 4 0 0 0 2 6 A 4 4 0 0 0 5 9.8691406 L 5 9 L 6 9 L 6 10 L 7 10 L 7 9 L 8 9 L 9 9 L 9 10 L 10 10 L 10 9 L 11 9 L 11 9.8671875 A 4 4 0 0 0 14 6 A 4 4 0 0 0 10 2 L 6 2 z M 5 5 A 1.0000174 1.0000174 0 0 1 6 6 A 1.0000174 1.0000174 0 0 1 5 7 A 1.0000174 1.0000174 0 0 1 4 6 A 1.0000174 1.0000174 0 0 1 5 5 z M 11 5 A 1.0000174 1.0000174 0 0 1 12 6 A 1.0000174 1.0000174 0 0 1 11 7 A 1.0000174 1.0000174 0 0 1 10 6 A 1.0000174 1.0000174 0 0 1 11 5 z M 7 7 L 9 7 L 9 8 L 7 8 L 7 7 z "
- transform="translate(0,1036.3622)"
- id="path4204" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 4 9 L 4 13 L 5 13 L 5 9 L 4 9 z M 11 9 L 11 13 L 12 13 L 12 9 L 11 9 z M 6 12 L 6 13 L 6 15 L 10 15 L 10 13 L 10 12 L 9 12 L 9 13 L 7 13 L 7 12 L 6 12 z "
- transform="translate(0,1036.3622)"
- id="rect4222" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4238"
- sodipodi:type="arc"
- sodipodi:cx="6"
- sodipodi:cy="1049.3622"
- sodipodi:rx="2"
- sodipodi:ry="2"
- sodipodi:start="0"
- sodipodi:end="3.1415927"
- d="m 8,1049.3622 a 2,2 0 0 1 -1,1.732 2,2 0 0 1 -2.0000001,0 A 2,2 0 0 1 4,1049.3622 l 2,0 z" />
- <path
- d="m 12,1049.3622 a 2,2 0 0 1 -1,1.732 2,2 0 0 1 -2.0000001,0 A 2,2 0 0 1 8,1049.3622 l 2,0 z"
- sodipodi:end="3.1415927"
- sodipodi:start="0"
- sodipodi:ry="2"
- sodipodi:rx="2"
- sodipodi:cy="1049.3622"
- sodipodi:cx="10"
- sodipodi:type="arc"
- id="path4248"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_slider_joint.svg b/editor/icons/source/icon_slider_joint.svg
deleted file mode 100644
index 25bccca831..0000000000
--- a/editor/icons/source/icon_slider_joint.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_slider_joint.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.5719521"
- inkscape:cy="9.4331459"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- inkscape:connector-curvature="0"
- id="path840"
- d="m 3,1051.3622 h 5 l -1,-4 z"
- style="fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:#fb9b9b;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 6,1048.3622 9,-9 v 3 l -8,8 z"
- id="path842"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path844"
- d="m 10,1040.3622 -9,9 v -3 l 8,-8 z"
- style="fill:#fb9b9b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="cccc"
- style="fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 13,1037.3622 H 8 l 1,4 z"
- id="path846"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#fb9b9b;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="M 10,1038.3622 H 5"
- id="path850"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path852"
- d="M 11,1050.3622 H 6"
- style="fill:none;stroke:#fb9b9b;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_slot.svg b/editor/icons/source/icon_slot.svg
deleted file mode 100644
index d613f1e1a4..0000000000
--- a/editor/icons/source/icon_slot.svg
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_slot.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="21.70867"
- inkscape:cx="9.141828"
- inkscape:cy="9.2467418"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4352"
- width="6"
- height="2.0000174"
- x="1"
- y="1043.3622" />
- <path
- transform="matrix(0,1.2810265,-0.92450034,0,-952.29952,1037.9571)"
- inkscape:transform-center-y="-9.6789057e-05"
- d="m 8.122499,-1036.5594 -3.122499,0 -3.122499,0 1.5612495,-2.7042 L 5,-1041.9677 l 1.5612495,2.7041 z"
- inkscape:randomized="0"
- inkscape:rounded="0"
- inkscape:flatsided="false"
- sodipodi:arg2="1.5707963"
- sodipodi:arg1="0.52359878"
- sodipodi:r2="1.8027756"
- sodipodi:r1="3.6055512"
- sodipodi:cy="-1038.3622"
- sodipodi:cx="5"
- sodipodi:sides="3"
- id="path4435"
- style="fill:#84ffb1;fill-opacity:1;stroke:none;stroke-linecap:round;stroke-opacity:1"
- sodipodi:type="star"
- inkscape:transform-center-x="1.1667546" />
- <path
- style="opacity:1;fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 15,1039.3622 0,10 -2,0 -4,0 0,-2 4,0 0,-6 -4,0 0,-2 4,0 2,0 z"
- id="rect4176"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_snap.svg b/editor/icons/source/icon_snap.svg
deleted file mode 100644
index 321dedf6b6..0000000000
--- a/editor/icons/source/icon_snap.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_snap.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="3.5856659"
- inkscape:cy="9.0785551"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#f3f3f3;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1036.3622 0,3 -3,0 0,2 3,0 0,4 -3,0 0,2 3,0 0,3 2,0 0,-3 0,-2 0,-4 4,0 2,0 3,0 0,-2 -3,0 0,-3 -2,0 0,3 -4,0 0,-3 -2,0 z"
- id="rect4139"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11,1043.3622 a 4,4 0 0 0 -4,4 l 2,0 a 2.0000174,2.0000174 0 0 1 2,-2 2.0000174,2.0000174 0 0 1 2,2 l 2,0 a 4,4 0 0 0 -4,-4 z"
- id="path4151"
- inkscape:connector-curvature="0" />
- <rect
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="2"
- x="7"
- y="1047.3622" />
- <rect
- y="1047.3622"
- x="13"
- height="2"
- width="2"
- id="rect4157"
- style="fill:#ff8484;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1049.3622"
- x="7"
- height="2.0000174"
- width="2"
- id="rect4161"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4163"
- width="2"
- height="2.0000174"
- x="13"
- y="1049.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_sound_room_params.svg b/editor/icons/source/icon_sound_room_params.svg
deleted file mode 100644
index a71c126ddc..0000000000
--- a/editor/icons/source/icon_sound_room_params.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_sound_room_params.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="6.3922684"
- inkscape:cy="10.780991"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 8,1037.3622 -4,5 -3,0 0,4 3,0 4,5 0,-14 z"
- id="path4158" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 13,1039.3622 0,10 1,0 0,-10 -1,0 z"
- id="path4156" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 10,1039.3622 0,10 1,0 0,-10 -1,0 z"
- id="rect4154"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4160"
- width="3"
- height="1"
- x="9"
- y="1041.3622" />
- <rect
- y="1046.3622"
- x="12"
- height="1"
- width="3"
- id="rect4162"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_spatial.svg b/editor/icons/source/icon_spatial.svg
deleted file mode 100644
index 0d03754016..0000000000
--- a/editor/icons/source/icon_spatial.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_spatial.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="5.5236428"
- inkscape:cy="6.3139768"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 2 A 6 6 0 0 0 2 8 A 6 6 0 0 0 8 14 A 6 6 0 0 0 14 8 A 6 6 0 0 0 8 2 z M 8 4 A 4 4 0 0 1 12 8 A 4 4 0 0 1 8 12 A 4 4 0 0 1 4 8 A 4 4 0 0 1 8 4 z "
- transform="translate(0,1036.3622)"
- id="path4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_spatial_material.svg b/editor/icons/source/icon_spatial_material.svg
deleted file mode 100644
index 329354b716..0000000000
--- a/editor/icons/source/icon_spatial_material.svg
+++ /dev/null
@@ -1,165 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_spatial_shader.svg">
- <defs
- id="defs4">
- <clipPath
- id="clipPath4253"
- clipPathUnits="userSpaceOnUse">
- <path
- inkscape:connector-curvature="0"
- id="path4255"
- d="m 16.458984,1024.37 a 12.000027,12.000027 0 0 0 -3.564453,0.4004 12.000027,12.000027 0 0 0 -8.4863279,14.6973 12.000027,12.000027 0 0 0 14.6972659,8.4863 12.000027,12.000027 0 0 0 8.486328,-14.6973 12.000027,12.000027 0 0 0 -11.132813,-8.8867 z M 16.25,1029.8212 a 6.5451717,6.5451717 0 0 1 6.072266,4.8476 6.5451717,6.5451717 0 0 1 -4.628907,8.0157 6.5451717,6.5451717 0 0 1 -8.0156246,-4.6289 6.5451717,6.5451717 0 0 1 4.6289066,-8.0157 6.5451717,6.5451717 0 0 1 1.943359,-0.2187 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </clipPath>
- <clipPath
- id="clipPath4199"
- clipPathUnits="userSpaceOnUse">
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 16.5,1025.8622 a 11.8125,10.499999 0 0 0 -11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125001,10.5 11.8125,10.499999 0 0 0 11.8125,-10.5 11.8125,10.499999 0 0 0 -11.8125,-10.5 z m -3.375,3 a 3.375,2.9999997 0 0 1 3.375,3 3.375,2.9999997 0 0 1 -3.375,3 3.375,2.9999997 0 0 1 -3.3750001,-3 3.375,2.9999997 0 0 1 3.3750001,-3 z"
- id="path4201"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4280">
- <g
- id="g4282"
- inkscape:label="Layer 1"
- transform="translate(0,1.1802001e-5)"
- style="stroke:#fc9c9c;stroke-opacity:0.99607843">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.9628906,1.0019531 A 1.0001,1.0001 0 0 0 7.5527344,1.1054688 l -6,3 A 1.0001,1.0001 0 0 0 1,5 l 0,6 a 1.0001,1.0001 0 0 0 0.5527344,0.894531 l 6,3 a 1.0001,1.0001 0 0 0 0.8945312,0 l 6.0000004,-3 A 1.0001,1.0001 0 0 0 15,11 L 15,5 A 1.0001,1.0001 0 0 0 14.447266,4.1054688 l -6.0000004,-3 A 1.0001,1.0001 0 0 0 7.9628906,1.0019531 Z M 8,3.1191406 11.763672,5 8,6.8828125 4.2363281,5 8,3.1191406 Z m -5,3.5 4,2 0,3.7636714 -4,-2 0,-3.7636714 z m 10,0 0,3.7636714 -4,2 0,-3.7636714 4,-2 z"
- transform="translate(0,1036.3622)"
- id="path4284"
- inkscape:connector-curvature="0" />
- </g>
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.8442401"
- inkscape:cy="13.929239"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4271"
- clip-path="url(#clipPath4280)">
- <rect
- y="1037.3622"
- x="0"
- height="2.0000031"
- width="16"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="16"
- height="2.0000029"
- x="0"
- y="1039.3622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="16"
- height="1.9999999"
- x="0"
- y="1041.3622" />
- <rect
- y="1043.3622"
- x="0"
- height="2.0000024"
- width="16"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1045.3622"
- x="0"
- height="2.0000021"
- width="16"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="16"
- height="1.9999987"
- x="0"
- y="1049.3622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="16"
- height="2.0000021"
- x="0"
- y="1047.3622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_spatial_sample_player.svg b/editor/icons/source/icon_spatial_sample_player.svg
deleted file mode 100644
index 9b5f5d9af6..0000000000
--- a/editor/icons/source/icon_spatial_sample_player.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_spatial_sample_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="10.757516"
- inkscape:cy="7.2259775"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 8 1 L 4 6 L 1 6 L 1 10 L 4 10 L 8 15 L 8 1 z M 13 3 L 13 13 L 14 13 L 14 3 L 13 3 z M 10 6 L 10 11 L 11 11 L 11 6 L 10 6 z "
- transform="translate(0,1036.3622)"
- id="rect4154" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_spatial_stream_player.svg b/editor/icons/source/icon_spatial_stream_player.svg
deleted file mode 100644
index bd081a3dc2..0000000000
--- a/editor/icons/source/icon_spatial_stream_player.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_spatial_stream_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="14.523046"
- inkscape:cy="8.8504614"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 5,2 C 4.4477153,2 4,2.4477153 4,3 l 0,1 0,7 -2,0 c -0.5522847,0 -1,0.447715 -1,1 l 0,2 c 0,0.552285 0.4477153,1 1,1 l 2,0 1,0 c 0.5522847,0 1,-0.447715 1,-1 l 0,-3 0,-7 6,0 0,5 -2,0 C 9.4477153,9 9,9.4477153 9,10 l 0,2 c 0,0.552285 0.4477153,1 1,1 l 3,0 c 0.552285,0 1,-0.447715 1,-1 L 14,9 14,3 C 14,2.4477153 13.552285,2 13,2 L 6,2 Z"
- transform="translate(0,1036.3622)"
- id="rect4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssccsssscssccccsssssscsscs" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_sphere_mesh.svg b/editor/icons/source/icon_sphere_mesh.svg
deleted file mode 100644
index 1264ca3984..0000000000
--- a/editor/icons/source/icon_sphere_mesh.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_sphere_mesh.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="10.188774"
- inkscape:cy="7.9201751"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffd684;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;opacity:1"
- d="M 8 1 C 4.1458514 1 1 4.1459 1 8 C 1 11.8542 4.1458514 15 8 15 C 11.854149 15 15 11.8542 15 8 C 15 4.1459 11.854149 1 8 1 z M 7 3.0976562 L 7 7.96875 C 5.7068959 7.8974081 4.3938983 7.6705607 3.0566406 7.2773438 C 3.3574503 5.1795086 4.9418857 3.5108322 7 3.0976562 z M 9 3.0976562 C 11.05489 3.5101849 12.637036 5.1743816 12.941406 7.2675781 C 11.636828 7.6343492 10.325593 7.8701693 9 7.9550781 L 9 3.0976562 z M 12.785156 9.3789062 C 12.276517 11.157679 10.835259 12.531968 9 12.900391 L 9 9.9492188 C 10.27916 9.876918 11.541917 9.6821761 12.785156 9.3789062 z M 3.2207031 9.3964844 C 4.4939533 9.7154019 5.7543858 9.8986297 7 9.9589844 L 7 12.900391 C 5.170884 12.533201 3.7340013 11.166534 3.2207031 9.3964844 z "
- transform="translate(0,1036.3622)"
- id="path4309" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_sphere_shape.svg b/editor/icons/source/icon_sphere_shape.svg
deleted file mode 100644
index b1bca49f97..0000000000
--- a/editor/icons/source/icon_sphere_shape.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- sodipodi:docname="icon_sphere_shape.svg"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_box_shape.png"
- inkscape:version="0.91 r13725"
- version="1.1"
- id="svg2"
- viewBox="0 0 16 16"
- height="16"
- width="16">
- <sodipodi:namedview
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-paths="false"
- inkscape:window-maximized="1"
- inkscape:window-y="27"
- inkscape:window-x="0"
- inkscape:window-height="1016"
- inkscape:window-width="1920"
- inkscape:snap-center="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:bbox-nodes="true"
- inkscape:bbox-paths="true"
- inkscape:snap-bbox="true"
- units="px"
- showgrid="true"
- inkscape:current-layer="layer1"
- inkscape:document-units="px"
- inkscape:cy="11.119425"
- inkscape:cx="5.7321635"
- inkscape:zoom="22.627416"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base">
- <inkscape:grid
- id="grid3336"
- type="xygrid"
- empspacing="4" />
- </sodipodi:namedview>
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <circle
- style="opacity:1;fill:#68b6ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4157"
- cx="8"
- cy="1044.3622"
- r="7" />
- <circle
- r="2"
- cy="1041.3622"
- cx="6"
- id="circle4159"
- style="opacity:1;fill:#a2d2ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_spin_box.svg b/editor/icons/source/icon_spin_box.svg
deleted file mode 100644
index e0086ed12e..0000000000
--- a/editor/icons/source/icon_spin_box.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_spin_box.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="3.8344268"
- inkscape:cy="10.33806"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,3 C 1.8954305,3 1,3.8954305 1,5 l 0,6 c 0,1.104569 0.8954305,2 2,2 l 7,0 0,-2 -7,0 0,-6 7,0 0,-2 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssssccccccs" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4157"
- width="2"
- height="6"
- x="8"
- y="1041.3622" />
- <path
- style="fill:#a5efac;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 11,1043.3622 4,0 -2,-3 z"
- id="path4159"
- inkscape:connector-curvature="0" />
- <path
- inkscape:connector-curvature="0"
- id="path4164"
- d="m 11,1045.3622 4,0 -2,3 z"
- style="fill:#a5efac;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_spot_light.svg b/editor/icons/source/icon_spot_light.svg
deleted file mode 100644
index 04f5b42f4d..0000000000
--- a/editor/icons/source/icon_spot_light.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_spot_light.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="-0.26188668"
- inkscape:cy="8.5536108"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 6 1 A 1 1 0 0 0 5 2 L 5 5.6933594 C 3.2138662 6.5594405 2 8.153847 2 10 L 6 10 A 2 2 0 0 0 8 12 A 2 2 0 0 0 10 10 L 14 10 C 14 8.153847 12.786134 6.5594405 11 5.6933594 L 11 2 A 1 1 0 0 0 10 1 L 6 1 z M 4.9023438 10.634766 L 3.1699219 11.634766 L 4.1699219 13.365234 L 5.9023438 12.365234 L 4.9023438 10.634766 z M 11.097656 10.634766 L 10.097656 12.365234 L 11.830078 13.365234 L 12.830078 11.634766 L 11.097656 10.634766 z M 7 13 L 7 15 L 9 15 L 9 13 L 7 13 z "
- transform="translate(0,1036.3622)"
- id="path4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_sprite.svg b/editor/icons/source/icon_sprite.svg
deleted file mode 100644
index 488bbf934d..0000000000
--- a/editor/icons/source/icon_sprite.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_sprite.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.7581185"
- inkscape:cy="10.410499"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5b7f4;fill-opacity:0.98823529;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 4 6 A 1 1 0 0 1 5 7 A 1 1 0 0 1 4 8 A 1 1 0 0 1 3 7 A 1 1 0 0 1 4 6 z M 12 6 A 1 1 0 0 1 13 7 A 1 1 0 0 1 12 8 A 1 1 0 0 1 11 7 A 1 1 0 0 1 12 6 z M 5 9 L 11 9 A 3 3 0 0 1 9.5 11.597656 A 3 3 0 0 1 6.5 11.597656 A 3 3 0 0 1 5 9 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_sprite_3d.svg b/editor/icons/source/icon_sprite_3d.svg
deleted file mode 100644
index 4ea81f7ea2..0000000000
--- a/editor/icons/source/icon_sprite_3d.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite_3d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_sprite_3d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.7581185"
- inkscape:cy="10.410499"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 4 6 A 1 1 0 0 1 5 7 A 1 1 0 0 1 4 8 A 1 1 0 0 1 3 7 A 1 1 0 0 1 4 6 z M 12 6 A 1 1 0 0 1 13 7 A 1 1 0 0 1 12 8 A 1 1 0 0 1 11 7 A 1 1 0 0 1 12 6 z M 5 9 L 11 9 A 3 3 0 0 1 9.5 11.597656 A 3 3 0 0 1 6.5 11.597656 A 3 3 0 0 1 5 9 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_sprite_frames.svg b/editor/icons/source/icon_sprite_frames.svg
deleted file mode 100644
index dc445da773..0000000000
--- a/editor/icons/source/icon_sprite_frames.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_sprite_frames.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254835"
- inkscape:cx="10.147205"
- inkscape:cy="8.653875"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- y="1046.3622"
- x="10"
- height="2.0000086"
- width="2"
- id="rect4230"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4232"
- width="2"
- height="2.0000086"
- x="13"
- y="1046.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4234"
- width="2"
- height="2.0000086"
- x="10"
- y="1049.3622" />
- <rect
- y="1049.3622"
- x="13"
- height="2.0000086"
- width="2"
- id="rect4236"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 6 1 A 5 5 0 0 0 1 6 A 5 5 0 0 0 6 11 A 5 5 0 0 0 11 6 A 5 5 0 0 0 6 1 z M 3 5 A 1 1 0 0 1 4 6 A 1 1 0 0 1 3 7 A 1 1 0 0 1 2 6 A 1 1 0 0 1 3 5 z M 9 5 A 1 1 0 0 1 10 6 A 1 1 0 0 1 9 7 A 1 1 0 0 1 8 6 A 1 1 0 0 1 9 5 z M 7.9960938 7.4921875 A 0.50005 0.50005 0 0 1 8.3535156 8.3535156 C 7.7356645 8.9714156 6.8611111 9.25 6 9.25 C 5.1388889 9.25 4.2643355 8.9714156 3.6464844 8.3535156 A 0.50005 0.50005 0 0 1 3.9941406 7.4960938 A 0.50005 0.50005 0 0 1 4.3535156 7.6464844 C 4.7356645 8.0286844 5.3611111 8.25 6 8.25 C 6.6388889 8.25 7.2643355 8.0286844 7.6464844 7.6464844 A 0.50005 0.50005 0 0 1 7.9960938 7.4921875 z "
- transform="translate(0,1036.3622)"
- id="path4238" />
- <rect
- y="1043.3622"
- x="13"
- height="2.0000086"
- width="2"
- id="rect4246"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1049.3622"
- x="7"
- height="2.0000086"
- width="2"
- id="rect4248"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_static_body.svg b/editor/icons/source/icon_static_body.svg
deleted file mode 100644
index fcaa2b7d3e..0000000000
--- a/editor/icons/source/icon_static_body.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_static_body.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="10.872202"
- inkscape:cy="6.7990901"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 3 1 A 2 2 0 0 0 1.5859375 1.5859375 A 2 2 0 0 0 1 3 L 1 13 A 2 2 0 0 0 1.5859375 14.414062 A 2 2 0 0 0 3 15 L 13 15 A 2 2 0 0 0 15 13 L 15 3 A 2 2 0 0 0 13 1 L 3 1 z M 3 2 L 13 2 A 1.0000174 1.0000174 0 0 1 14 3 L 14 13 A 1.0000174 1.0000174 0 0 1 13 14 L 3 14 A 1.0000174 1.0000174 0 0 1 2 13 L 2 3 A 1.0000174 1.0000174 0 0 1 3 2 z M 3 3 L 3 5 L 5 5 L 5 3 L 3 3 z M 11 3 L 11 5 L 13 5 L 13 3 L 11 3 z M 3 11 L 3 13 L 5 13 L 5 11 L 3 11 z M 11 11 L 11 13 L 13 13 L 13 11 L 11 11 z "
- transform="translate(0,1036.3622)"
- id="rect4179" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_static_body_2d.svg b/editor/icons/source/icon_static_body_2d.svg
deleted file mode 100644
index 0ed3ef7cf0..0000000000
--- a/editor/icons/source/icon_static_body_2d.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_static_body_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-1.0099286"
- inkscape:cy="7.4019621"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- y="1042.3622"
- x="29"
- height="1"
- width="1"
- id="rect4177"
- style="opacity:1;fill:#fefeff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- style="opacity:1;fill:#a5b7f6;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 3 1 A 2 2 0 0 0 1.5859375 1.5859375 A 2 2 0 0 0 1 3 L 1 13 A 2 2 0 0 0 1.5859375 14.414062 A 2 2 0 0 0 3 15 L 13 15 A 2 2 0 0 0 15 13 L 15 3 A 2 2 0 0 0 13 1 L 3 1 z M 3 2 L 13 2 A 1.0000174 1.0000174 0 0 1 14 3 L 14 13 A 1.0000174 1.0000174 0 0 1 13 14 L 3 14 A 1.0000174 1.0000174 0 0 1 2 13 L 2 3 A 1.0000174 1.0000174 0 0 1 3 2 z M 3 3 L 3 5 L 5 5 L 5 3 L 3 3 z M 11 3 L 11 5 L 13 5 L 13 3 L 11 3 z M 3 11 L 3 13 L 5 13 L 5 11 L 3 11 z M 11 11 L 11 13 L 13 13 L 13 11 L 11 11 z "
- transform="translate(0,1036.3622)"
- id="rect4179" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_stream_player.svg b/editor/icons/source/icon_stream_player.svg
deleted file mode 100644
index 618646bbed..0000000000
--- a/editor/icons/source/icon_stream_player.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_stream_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="3.1209493"
- inkscape:cy="9.3365973"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 5,2 C 4.4477153,2 4,2.4477153 4,3 l 0,1 0,7 -2,0 c -0.5522847,0 -1,0.447715 -1,1 l 0,2 c 0,0.552285 0.4477153,1 1,1 l 2,0 1,0 c 0.5522847,0 1,-0.447715 1,-1 l 0,-3 0,-7 6,0 0,5 -2,0 C 9.4477153,9 9,9.4477153 9,10 l 0,2 c 0,0.552285 0.4477153,1 1,1 l 3,0 c 0.552285,0 1,-0.447715 1,-1 L 14,9 14,3 C 14,2.4477153 13.552285,2 13,2 L 6,2 Z"
- transform="translate(0,1036.3622)"
- id="rect4155"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ssccsssscssccccsssssscsscs" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_stream_texture.svg b/editor/icons/source/icon_stream_texture.svg
deleted file mode 100644
index 6ec701adff..0000000000
--- a/editor/icons/source/icon_stream_texture.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_stream_texture.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.200084"
- inkscape:cy="6.7708068"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2 1 A 1 1 0 0 0 1 2 L 1 14 A 1 1 0 0 0 2 15 L 8 15 L 8 13 L 10 13 L 10 11 L 8 11 L 3 11 L 3 3 L 8 3 L 8 1 L 2 1 z M 8 3 L 8 5 L 10 5 L 10 3 L 8 3 z M 10 3 L 12 3 L 12 1 L 10 1 L 10 3 z M 12 3 L 12 5 L 14 5 L 14 3 L 12 3 z M 12 5 L 10 5 L 10 7 L 12 7 L 12 5 z M 12 7 L 12 9 L 14 9 L 14 7 L 12 7 z M 12 9 L 10 9 L 10 11 L 12 11 L 12 9 z M 12 11 L 12 13 L 14 13 L 14 11 L 12 11 z M 12 13 L 10 13 L 10 15 L 12 15 L 12 13 z M 10 9 L 10 7 L 8 7 L 8 6 L 7 6 L 7 7 L 6 7 L 6 8 L 5 8 L 5 9 L 4 9 L 4 10 L 6 10 L 8 10 L 8 9 L 10 9 z "
- transform="translate(0,1036.3622)"
- id="rect4156" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_string.svg b/editor/icons/source/icon_string.svg
deleted file mode 100644
index f32e82256f..0000000000
--- a/editor/icons/source/icon_string.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_string.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="4.1642221"
- inkscape:cy="8.5720882"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 5 1 L 5 3 L 7 3 L 7 13 L 5 13 L 5 15 L 7 15 A 1 1 0 0 0 8 14 A 1 1 0 0 0 9 15 L 11 15 L 11 13 L 9 13 L 9 3 L 11 3 L 11 1 L 9 1 A 1 1 0 0 0 8 2 A 1 1 0 0 0 7 1 L 5 1 z "
- transform="translate(0,1036.3622)"
- id="rect4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_style_box_empty.svg b/editor/icons/source/icon_style_box_empty.svg
deleted file mode 100644
index c881fe1c10..0000000000
--- a/editor/icons/source/icon_style_box_empty.svg
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_style_box_empty.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4313">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6.3750001,1025.8622 c -0.931942,2e-4 -1.6874069,0.6716 -1.6875,1.5 l 0,1.5 3.375,0 0,-3 -1.6875,0 z m 5.0624999,0 0,3 3.375,0 0,-3 -3.375,0 z m 6.75,0 0,3 3.375,0 0,-3 -3.375,0 z m 6.75,0 0,3 3.375,0 0,-1.5 c -9.3e-5,-0.8284 -0.755558,-1.4998 -1.6875,-1.5 l -1.6875,0 z m -20.2499999,6 0,3 3.375,0 0,-3 -3.375,0 z m 20.2499999,0 0,0.3486 c 0.532973,0.2675 0.975667,0.657 1.282105,1.128 0.537834,0.828 1.294284,1.6769 2.092895,2.5722 l 0,-4.0488 -3.375,0 z m -1.6875,3 c -1.948558,3 -5.0625,5.0147 -5.0625,7.5 0,2.4854 2.266559,4.5 5.0625,4.5 2.795941,0 5.0625,-2.0146 5.0625,-4.5 0,-2.4853 -3.113942,-4.5 -5.0625,-7.5 z m -18.5624999,3 0,3 3.375,0 0,-3 -3.375,0 z m 0,6 0,1.5 c 9.31e-5,0.8284 0.755558,1.4998 1.6875,1.5 l 1.6875,0 0,-3 -3.375,0 z m 6.7499999,0 0,3 3.375,0 0,-3 -3.375,0 z"
- id="path4315"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.442024"
- inkscape:cy="8.6470776"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4313)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777778,353.45399)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_style_box_flat.svg b/editor/icons/source/icon_style_box_flat.svg
deleted file mode 100644
index 9071014ff3..0000000000
--- a/editor/icons/source/icon_style_box_flat.svg
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_style_box_flat.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4313">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6.3750001,1025.8622 c -0.931942,2e-4 -1.6874069,0.6716 -1.6875,1.5 l 0,1.5 3.375,0 0,-3 -1.6875,0 z m 5.0624999,0 0,3 3.375,0 0,-3 -3.375,0 z m 6.75,0 0,3 3.375,0 0,-3 -3.375,0 z m 6.75,0 0,3 3.375,0 0,-1.5 c -9.3e-5,-0.8284 -0.755558,-1.4998 -1.6875,-1.5 l -1.6875,0 z m -20.2499999,6 0,3 3.375,0 0,-3 -3.375,0 z m 20.2499999,0 0,0.3486 c 0.532973,0.2675 0.975667,0.657 1.282105,1.128 0.537834,0.828 1.294284,1.6769 2.092895,2.5722 l 0,-4.0488 -3.375,0 z m -1.6875,3 c -1.948558,3 -5.0625,5.0147 -5.0625,7.5 0,2.4854 2.266559,4.5 5.0625,4.5 2.795941,0 5.0625,-2.0146 5.0625,-4.5 0,-2.4853 -3.113942,-4.5 -5.0625,-7.5 z m -18.5624999,3 0,3 3.375,0 0,-3 -3.375,0 z m 0,6 0,1.5 c 9.31e-5,0.8284 0.755558,1.4998 1.6875,1.5 l 1.6875,0 0,-3 -3.375,0 z m 6.7499999,0 0,3 3.375,0 0,-3 -3.375,0 z"
- id="path4315"
- inkscape:connector-curvature="0" />
- </clipPath>
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4391">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6.3750001,1025.8622 c -0.931942,2e-4 -1.6874069,0.6716 -1.6875,1.5 l 0,18 c 9.31e-5,0.8284 0.755558,1.4998 1.6875,1.5 l 10.1876219,0 c -1.081633,-1.2612 -1.750122,-2.8111 -1.750122,-4.5 0,-2.3563 1.351562,-4.0453 2.494995,-5.376 1.143433,-1.3305 2.270438,-2.4714 3.019043,-3.624 0.571813,-0.8788 1.604865,-1.4416 2.745483,-1.4941 1.267652,-0.06 2.465974,0.5173 3.101441,1.4941 0.549842,0.8466 1.32435,1.7113 2.139038,2.625 l 0,-8.625 c -9.3e-5,-0.8284 -0.755558,-1.4998 -1.6875,-1.5 l -20.2499999,0 z m 16.8749999,9 c -1.948558,3 -5.0625,5.0147 -5.0625,7.5 0,2.4854 2.266559,4.5 5.0625,4.5 2.795941,0 5.0625,-2.0146 5.0625,-4.5 0,-2.4853 -3.113942,-4.5 -5.0625,-7.5 z"
- id="path4393"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="11.34212"
- inkscape:cy="7.7545325"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4391)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777778,353.45399)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_style_box_texture.svg b/editor/icons/source/icon_style_box_texture.svg
deleted file mode 100644
index 30b1f1af68..0000000000
--- a/editor/icons/source/icon_style_box_texture.svg
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_style_box_texture.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4189">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 6.3750001,1025.8622 a 1.6876688,1.5001498 0 0 0 -1.6875,1.5 l 0,18 a 1.6876688,1.5001498 0 0 0 1.6875,1.5 l 10.1217039,0 c -0.747392,-0.8796 -1.304338,-1.8888 -1.562256,-3 l -6.8719479,0 0,-15 16.8749999,0 0,3.3486 a 3.4281247,3.0472216 0 0 1 1.282105,1.1279 c 0.537834,0.828 1.294284,1.677 2.092895,2.5723 l 0,-8.5488 a 1.6876688,1.5001498 0 0 0 -1.6875,-1.5 l -20.2499999,0 z m 11.8124999,4.5 0,1.5 -1.6875,0 0,1.5 -3.375,0 0,1.5 -1.6875,0 0,1.5 -1.6874999,0 0,1.5 3.3749999,0 3.375,0 0.02637,0 c 0.246127,-0.317 0.496441,-0.6239 0.738282,-0.9053 1.145331,-1.3327 2.270672,-2.4711 3.015746,-3.6182 a 3.4281247,3.0472216 0 0 1 1.282105,-1.1279 l 0,-0.3486 -1.6875,0 0,-1.5 -1.6875,0 z m 5.0625,4.5 c -1.948558,3 -5.0625,5.0146 -5.0625,7.5 0,2.4853 2.266559,4.5 5.0625,4.5 2.795941,0 5.0625,-2.0147 5.0625,-4.5 0,-2.4854 -3.113942,-4.5 -5.0625,-7.5 z"
- id="path4191"
- inkscape:connector-curvature="0" />
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="9.8110364"
- inkscape:cy="10.993538"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4189)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777778,353.454)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tab_container.svg b/editor/icons/source/icon_tab_container.svg
deleted file mode 100644
index 6c197a86f6..0000000000
--- a/editor/icons/source/icon_tab_container.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tab_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="3.8596634"
- inkscape:cy="10.446251"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 C 1.8954305 1 1 1.8954305 1 3 L 1 13 C 1 14.104569 1.8954305 15 3 15 L 13 15 C 14.104569 15 15 14.104569 15 13 L 15 3 C 15 1.8954305 14.104569 1 13 1 L 3 1 z M 3 3 L 8 3 L 8 5 L 8 7 L 13 7 L 13 13 L 3 13 L 3 3 z M 10 3 L 13 3 L 13 5 L 10 5 L 10 3 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tabs.svg b/editor/icons/source/icon_tabs.svg
deleted file mode 100644
index c09a042033..0000000000
--- a/editor/icons/source/icon_tabs.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tabs.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.9623805"
- inkscape:cy="8.3399158"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 5 4 C 3.8919904 4 3.1821539 4.9071 3 6 L 2 12 L 1 12 L 1 14 L 5 14 L 11 14 L 15 14 L 15 12 L 13 12 L 12 6 C 11.817843 4.9071 11.108009 4 10 4 L 5 4 z "
- transform="translate(0,1036.3622)"
- id="rect821" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_test_cube.svg b/editor/icons/source/icon_test_cube.svg
deleted file mode 100644
index c42c0bb674..0000000000
--- a/editor/icons/source/icon_test_cube.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_test_cube.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.5411615"
- inkscape:cy="7.1105382"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-7"
- inkscape:label="Layer 1"
- transform="translate(0,1.1802001e-5)"
- style="stroke:#fc9c9c;stroke-opacity:0.99607843">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 7.9628906 1.0019531 A 1.0001 1.0001 0 0 0 7.5527344 1.1054688 L 1.5527344 4.1054688 A 1.0001 1.0001 0 0 0 1 5 L 1 11 A 1.0001 1.0001 0 0 0 1.5527344 11.894531 L 7.5527344 14.894531 A 1.0001 1.0001 0 0 0 8.4472656 14.894531 L 14.447266 11.894531 A 1.0001 1.0001 0 0 0 15 11 L 15 5 A 1.0001 1.0001 0 0 0 14.447266 4.1054688 L 8.4472656 1.1054688 A 1.0001 1.0001 0 0 0 7.9628906 1.0019531 z M 8 3.1191406 L 11.763672 5 L 8 6.8828125 L 4.2363281 5 L 8 3.1191406 z M 3 6.6191406 L 7 8.6191406 L 7 12.382812 L 3 10.382812 L 3 6.6191406 z M 13 6.6191406 L 13 10.382812 L 9 12.382812 L 9 8.6191406 L 13 6.6191406 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_text_edit.svg b/editor/icons/source/icon_text_edit.svg
deleted file mode 100644
index 4d08e9e3b2..0000000000
--- a/editor/icons/source/icon_text_edit.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_text_edit.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="5.6173015"
- inkscape:cy="11.506395"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- y="1042.3622"
- x="29"
- height="1"
- width="1"
- id="rect4177"
- style="opacity:1;fill:#fefeff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 3 1 C 1.8954305 1 1 1.8954 1 3 L 1 13 C 1 14.1046 1.8954305 15 3 15 L 13 15 C 14.104569 15 15 14.1046 15 13 L 15 3 C 15 1.8954 14.104569 1 13 1 L 3 1 z M 3 3 L 13 3 L 13 13 L 3 13 L 3 3 z M 4 4 L 4 8 L 5 8 L 5 4 L 4 4 z "
- transform="translate(0,1036.3622)"
- id="rect4173" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_texture_button.svg b/editor/icons/source/icon_texture_button.svg
deleted file mode 100644
index ef447af082..0000000000
--- a/editor/icons/source/icon_texture_button.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_texture_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="15.33841"
- inkscape:cy="14.971735"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 3 L 1 11 L 15 11 L 15 3 L 14 3 L 2 3 L 1 3 z M 9 5 L 10 5 L 10 6 L 11 6 L 11 8 L 12 8 L 12 10 L 10 10 L 8 10 L 6 10 L 4 10 L 4 9 L 5 9 L 5 8 L 6 8 L 6 7 L 8 7 L 8 6 L 9 6 L 9 5 z "
- transform="translate(0,1036.3622)"
- id="rect4139" />
- <rect
- transform="scale(1,-1)"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4160"
- width="14"
- height="2.0000522"
- x="1"
- y="-1049.3622" />
- <rect
- y="-1049.3622"
- x="1"
- height="2.0000522"
- width="14"
- id="rect4142"
- style="opacity:1;fill:#000000;fill-opacity:0.07843138;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- transform="scale(1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_texture_progress.svg b/editor/icons/source/icon_texture_progress.svg
deleted file mode 100644
index 493dd7fd63..0000000000
--- a/editor/icons/source/icon_texture_progress.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_texture_progress.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.953439"
- inkscape:cy="10.793984"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,3 C 1.8954305,3 1,3.8954305 1,5 l 0,6 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,5 C 15,3.8954305 14.104569,3 13,3 Z m 0,2 10,0 0,6 -10,0 z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4222"
- width="1"
- height="2"
- x="4"
- y="1042.3622" />
- <rect
- y="1043.3622"
- x="6"
- height="3.0000174"
- width="1"
- id="rect4224"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4226"
- width="1"
- height="4.0000172"
- x="8"
- y="1042.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_texture_rect.svg b/editor/icons/source/icon_texture_rect.svg
deleted file mode 100644
index e02882812c..0000000000
--- a/editor/icons/source/icon_texture_rect.svg
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_texture_rect.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.051418"
- inkscape:cy="9.9171316"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:none;fill-opacity:1;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect818"
- width="12"
- height="12"
- x="2"
- y="1038.3622" />
- <path
- inkscape:connector-curvature="0"
- id="rect4197"
- d="m 9,1042.3622 0,1 -1,0 0,1 -2,0 0,1 -1,0 0,1 -1,0 0,1 2,0 2,0 2,0 2,0 0,-2 -1,0 0,-2 -1,0 0,-1 -1,0 z"
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_theme.svg b/editor/icons/source/icon_theme.svg
deleted file mode 100644
index 2cacb9755a..0000000000
--- a/editor/icons/source/icon_theme.svg
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_theme.svg">
- <defs
- id="defs4">
- <clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4370">
- <g
- id="g4372"
- inkscape:label="Layer 1"
- transform="matrix(1.6875,0,0,1.4999998,2.9999999,-530.18094)">
- <path
- id="path4374"
- transform="translate(0,1036.3622)"
- d="M 7,1 6.4355469,3.2578125 A 5.0000172,5.0000172 0 0 0 5.7460938,3.5371094 L 3.7578125,2.34375 2.34375,3.7578125 3.5390625,5.7519531 A 5.0000172,5.0000172 0 0 0 3.2539062,6.4375 L 1,7 1,9 3.2578125,9.5644531 A 5.0000172,5.0000172 0 0 0 3.5371094,10.251953 L 2.34375,12.242188 3.7578125,13.65625 5.7519531,12.460938 A 5.0000172,5.0000172 0 0 0 6.4375,12.746094 L 7,15 9,15 9.5644531,12.742188 a 5.0000172,5.0000172 0 0 0 0.6874999,-0.279297 l 1.990235,1.193359 1.414062,-1.414062 -1.195312,-1.994141 A 5.0000172,5.0000172 0 0 0 12.746094,9.5625 L 15,9 15,7 12.742188,6.4355469 a 5.0000172,5.0000172 0 0 0 -0.279297,-0.6875 L 13.65625,3.7578125 12.242188,2.34375 10.248047,3.5390625 A 5.0000172,5.0000172 0 0 0 9.5625,3.2539062 L 9,1 7,1 Z M 8,6 A 2.0000174,2.0000174 0 0 1 10,8 2.0000174,2.0000174 0 0 1 8,10 2.0000174,2.0000174 0 0 1 6,8 2.0000174,2.0000174 0 0 1 8,6 Z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- </g>
- </clipPath>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="10.857726"
- inkscape:cy="9.3127855"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="g4181"
- mask="none"
- clip-path="url(#clipPath4370)"
- transform="matrix(0.59259259,0,0,0.66666674,-1.7777777,353.454)">
- <rect
- y="1025.8622"
- x="3"
- height="3.0000043"
- width="27"
- id="rect4159"
- style="fill:#ff7070;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ffeb70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4161-3"
- width="27"
- height="3.0000041"
- x="3"
- y="1028.8622" />
- <rect
- style="fill:#9dff70;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4163-6"
- width="27"
- height="2.9999995"
- x="3"
- y="1031.8622" />
- <rect
- y="1034.8622"
- x="3"
- height="3.0000031"
- width="27"
- id="rect4165-1"
- style="fill:#70ffb9;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1037.8622"
- x="3"
- height="3.0000029"
- width="27"
- id="rect4167"
- style="fill:#70deff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#ff70ac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4169"
- width="27"
- height="2.9999976"
- x="3"
- y="1043.8622" />
- <rect
- style="fill:#9f70ff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4146"
- width="27"
- height="3.0000029"
- x="3"
- y="1040.8622" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tile_map.svg b/editor/icons/source/icon_tile_map.svg
deleted file mode 100644
index 28f75a97e5..0000000000
--- a/editor/icons/source/icon_tile_map.svg
+++ /dev/null
@@ -1,250 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_tile_map.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="5.8997097"
- inkscape:cy="7.6139286"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4160"
- width="2"
- height="2"
- x="1"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="4"
- height="2"
- width="2"
- id="rect4162"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4164"
- width="2"
- height="2"
- x="4"
- y="1040.3622" />
- <rect
- y="1040.3622"
- x="1"
- height="2"
- width="2"
- id="rect4166"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- y="1037.3622"
- x="7"
- height="2"
- width="2"
- id="rect4168"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4170"
- width="2"
- height="2"
- x="10"
- y="1037.3622" />
- <rect
- y="1040.3622"
- x="10"
- height="2"
- width="2"
- id="rect4172"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4174"
- width="2"
- height="2"
- x="7"
- y="1040.3622" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4176"
- width="2"
- height="2"
- x="1"
- y="1043.3622" />
- <rect
- y="1043.3622"
- x="4"
- height="2"
- width="2"
- id="rect4178"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4180"
- width="2"
- height="2"
- x="4"
- y="1046.3622" />
- <rect
- y="1046.3622"
- x="1"
- height="2"
- width="2"
- id="rect4182"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- y="1037.3622"
- x="13"
- height="2"
- width="2"
- id="rect4184"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4186"
- width="2"
- height="2"
- x="13"
- y="1040.3622" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4188"
- width="2"
- height="2"
- x="7"
- y="1043.3622" />
- <rect
- y="1043.3622"
- x="10"
- height="2"
- width="2"
- id="rect4190"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4192"
- width="2"
- height="2"
- x="10"
- y="1046.3622" />
- <rect
- y="1046.3622"
- x="7"
- height="2"
- width="2"
- id="rect4194"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4196"
- width="2"
- height="2"
- x="13"
- y="1043.3622" />
- <rect
- y="1046.3622"
- x="13"
- height="2"
- width="2"
- id="rect4198"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- y="1049.3622"
- x="4"
- height="2"
- width="2"
- id="rect4200"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4202"
- width="2"
- height="2"
- x="1"
- y="1049.3622" />
- <rect
- y="1049.3622"
- x="10"
- height="2"
- width="2"
- id="rect4204"
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4206"
- width="2"
- height="2"
- x="7"
- y="1049.3622" />
- <rect
- style="opacity:1;fill:#a5b7f7;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4208"
- width="2"
- height="2"
- x="13"
- y="1049.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tile_set.svg b/editor/icons/source/icon_tile_set.svg
deleted file mode 100644
index e697f03888..0000000000
--- a/editor/icons/source/icon_tile_set.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_dependency_changed_hl.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_tile_set.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="30.700696"
- inkscape:cx="7.5612844"
- inkscape:cy="6.4018109"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 1 1 L 1 3 L 3 3 L 3 1 L 1 1 z M 4 1 L 4 3 L 6 3 L 6 1 L 4 1 z M 7 1 L 7 3 L 9 3 L 9 1 L 7 1 z M 10 1 L 10 3 L 12 3 L 12 1 L 10 1 z M 13 1 L 13 3 L 15 3 L 15 1 L 13 1 z M 1 4 L 1 6 L 3 6 L 3 4 L 1 4 z M 4 4 L 4 6 L 6 6 L 6 4 L 4 4 z M 7 4 L 7 6 L 9 6 L 9 4 L 7 4 z M 10 4 L 10 6 L 12 6 L 12 4 L 10 4 z M 13 4 L 13 6 L 15 6 L 15 4 L 13 4 z M 1 7 L 1 9 L 3 9 L 3 7 L 1 7 z M 4 7 L 4 9 L 6 9 L 6 7 L 4 7 z M 9 8 L 9 9 L 9 14 L 9 15 L 14 15 C 14.552285 15 15 14.552285 15 14 L 15 9 C 15 8.4477153 14.552285 8 14 8 L 14 12 L 13 11 L 12 12 L 12 8 L 9 8 z M 1 10 L 1 12 L 3 12 L 3 10 L 1 10 z M 4 10 L 4 12 L 6 12 L 6 10 L 4 10 z M 1 13 L 1 15 L 3 15 L 3 13 L 1 13 z M 4 13 L 4 15 L 6 15 L 6 13 L 4 13 z "
- transform="translate(0,1036.3622)"
- id="rect4161" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_timer.svg b/editor/icons/source/icon_timer.svg
deleted file mode 100644
index f156414686..0000000000
--- a/editor/icons/source/icon_timer.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_timer.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16"
- inkscape:cx="4.3214346"
- inkscape:cy="13.122944"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1.85164022;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect818"
- width="12"
- height="2"
- x="2"
- y="1037.3622"
- ry="1" />
- <rect
- ry="1"
- y="1049.3622"
- x="2"
- height="2"
- width="12"
- id="rect820"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1.85164022;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 3,1050.3622 h 10 l -3,-6 H 6 Z"
- id="path838"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:none;stroke:#e0e0e0;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1038.3622 h 10 c 0,2 -3,4 -4,6 1,2 4,4 4,6 H 3 c 0,-2 3,-4 4,-6 -1,-2 -4,-4 -4,-6 z"
- id="path840"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tool_button.svg b/editor/icons/source/icon_tool_button.svg
deleted file mode 100644
index 6fb580bc7f..0000000000
--- a/editor/icons/source/icon_tool_button.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tool_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="7.704418"
- inkscape:cy="7.4979984"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect829"
- width="6"
- height="4"
- x="2"
- y="1047.3622"
- ry="1.5" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:1.71867573;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect825"
- width="8"
- height="2.0000174"
- x="1"
- y="1049.3622"
- ry="0" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1042.3622 3,2 3,-2"
- id="path831"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5,1039.3622 v 5"
- id="path833"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <g
- id="layer1-7"
- inkscape:label="Layer 1"
- transform="translate(9,-1)"
- style="fill:#a5efac;fill-opacity:1">
- <path
- id="path828"
- d="m 2,1038.536 c -1.1978593,0.4235 -1.9990448,1.5557 -2,2.8262 9.552e-4,1.2705 0.8021407,2.4027 2,2.8262 v 6.1738 1 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 v -4 -3.1758 c 1.197184,-0.4232 1.998218,-1.5544 2,-2.8242 -0.00178,-1.2698 -0.802816,-2.401 -2,-2.8242 v 2.8242 c 0,0.5523 -0.447715,1 -1,1 -0.552285,0 -1,-0.4477 -1,-1 z"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccsssccccsssc" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tool_move.svg b/editor/icons/source/icon_tool_move.svg
deleted file mode 100644
index 243b680dfe..0000000000
--- a/editor/icons/source/icon_tool_move.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_move.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tool_move.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.7373622"
- inkscape:cy="9.2915869"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8 1 L 6.5 2.5 L 5 4 L 7 4 L 7 7 L 4 7 L 4 5 L 2.5 6.5 L 1 8 L 2.5 9.5 L 4 11 L 4 9 L 7 9 L 7 12 L 5 12 L 6.5 13.5 L 8 15 L 9.5 13.5 L 11 12 L 9 12 L 9 9 L 12 9 L 12 11 L 13.5 9.5 L 15 8 L 13.5 6.5 L 12 5 L 12 7 L 9 7 L 9 4 L 11 4 L 9.5 2.5 L 8 1 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tool_pan.svg b/editor/icons/source/icon_tool_pan.svg
deleted file mode 100644
index a93fc3d29d..0000000000
--- a/editor/icons/source/icon_tool_pan.svg
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_pan.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tool_pan.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="13.577719"
- inkscape:cy="10.651205"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="false"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="matrix(0.63636994,0,0,0.63636994,11.81847,382.85245)"
- inkscape:label="Layer 1"
- id="g4515"
- style="stroke:#ffffff;stroke-width:6.28565216;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6 8 L 6 15 L 12 15 L 12 13 L 14 13 L 14 8 L 6 8 z "
- transform="translate(0,1036.3622)"
- id="rect4179" />
- <rect
- y="1039.3622"
- x="6"
- height="7.9999657"
- width="2"
- id="rect4181"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4183"
- width="2"
- height="7.9999657"
- x="9"
- y="1038.3622" />
- <rect
- y="1040.3622"
- x="12"
- height="7.9999657"
- width="2"
- id="rect4185"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4187"
- cx="7"
- cy="1039.3622"
- r="1" />
- <circle
- r="1"
- cy="1038.3622"
- cx="10"
- id="circle4189"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4191"
- cx="13"
- cy="1040.3622"
- r="1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4193"
- cx="12"
- cy="1049.3622"
- r="2" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 3.5251027,1045.5875 c -0.520152,-0.3803 -1.1942798,-0.4556 -1.6498687,0 -0.4556596,0.4556 -0.4556352,1.1943 -2.36e-5,1.6499 L 6,1051.3622 l 1.6498923,-2.7593 z"
- id="rect4208"
- inkscape:connector-curvature="0"
- inkscape:transform-center-x="1.4083061"
- inkscape:transform-center-y="-3.0582"
- sodipodi:nodetypes="sssccs" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tool_rotate.svg b/editor/icons/source/icon_tool_rotate.svg
deleted file mode 100644
index 817aee3995..0000000000
--- a/editor/icons/source/icon_tool_rotate.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tool_rotate.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.9785059"
- inkscape:cy="10.426966"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 9 2 A 6.0000172 6.0000172 0 0 0 3 8 L 5 8 A 4 4 0 0 1 9 4 A 4 4 0 0 1 13 8 A 4 4 0 0 1 9 12 L 9 14 A 6.0000172 6.0000172 0 0 0 15 8 A 6.0000172 6.0000172 0 0 0 9 2 z "
- transform="translate(0,1036.3622)"
- id="path4138" />
- <path
- sodipodi:type="star"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4142"
- sodipodi:sides="3"
- sodipodi:cx="3"
- sodipodi:cy="1046.3622"
- sodipodi:r1="2.236068"
- sodipodi:r2="1.118034"
- sodipodi:arg1="1.0471976"
- sodipodi:arg2="2.0943951"
- inkscape:flatsided="false"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="m 4.1180339,1048.2987 -1.6770509,-0.9683 -1.67705101,-0.9682 1.67705101,-0.9683 1.6770511,-0.9682 -1e-7,1.9365 z"
- inkscape:transform-center-x="0.00013164169"
- transform="matrix(0,-1.1925797,1.5491989,0,-1617.0232,1049.2732)"
- inkscape:transform-center-y="0.66664316" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tool_scale.svg b/editor/icons/source/icon_tool_scale.svg
deleted file mode 100644
index 515bef3bb7..0000000000
--- a/editor/icons/source/icon_tool_scale.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_scale.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tool_scale.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.7380314"
- inkscape:cy="11.043755"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 14.019532,1038.3427 -2.828125,0.707 -2.8281258,0.707 1.4140624,1.4141 -4.9492186,4.9492 -1.4140625,-1.4141 -0.7070313,2.8282 L 2,1050.3622 l 2.828125,-0.707 2.828125,-0.7071 -1.4140625,-1.414 4.9492195,-4.9492 1.414062,1.414 0.707031,-2.8281 0.707032,-2.8281 z"
- id="rect4135"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tool_select.svg b/editor/icons/source/icon_tool_select.svg
deleted file mode 100644
index 2da6a3e6ba..0000000000
--- a/editor/icons/source/icon_tool_select.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_select.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tool_select.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.6219069"
- inkscape:cy="11.371689"
- inkscape:document-units="px"
- inkscape:current-layer="layer1-6"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-6"
- inkscape:label="Layer 1"
- transform="translate(-26.000893,-9.8683103)">
- <g
- style="stroke:#ffffff;stroke-width:6.28565216;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="g4515"
- inkscape:label="Layer 1"
- transform="matrix(0.63636994,0,0,0.63636994,11.81847,382.85245)" />
- <path
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0"
- id="rect4163"
- d="m 40.000893,1053.167 -12,-4.9365 4.936497,12 1.420656,-4.2301 2.8254,2.8252 1.412701,-1.4127 -2.8254,-2.8252 z"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tools.svg b/editor/icons/source/icon_tools.svg
deleted file mode 100644
index 030d38f6cf..0000000000
--- a/editor/icons/source/icon_tools.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_g_d_script.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tools.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="17.67723"
- inkscape:cy="10.600994"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 4 1 L 3 3 L 4 5 L 4 9 L 2 9 L 2 12 L 2 12.5 C 2 13.885 3.115 15 4.5 15 C 5.885 15 7 13.885 7 12.5 L 7 11.5 L 7 9 L 5 9 L 5 5 L 6 3 L 5 1 L 4 1 z M 10 1.1738281 A 3 3 0 0 0 8 4 A 3 3 0 0 0 10 6.8261719 L 10 13 L 10 14 C 10 14.554 10.446 15 11 15 C 11.554 15 12 14.554 12 14 L 12 10 L 12 6.8242188 A 3 3 0 0 0 14 4 A 3 3 0 0 0 12 1.1757812 L 12 4 A 1 1 0 0 1 11 5 A 1 1 0 0 1 10 4 L 10 1.1738281 z "
- transform="translate(0,1036.3622)"
- id="path828" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_touch_screen_button.svg b/editor/icons/source/icon_touch_screen_button.svg
deleted file mode 100644
index 70abc964aa..0000000000
--- a/editor/icons/source/icon_touch_screen_button.svg
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_touch_screen_button.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.4904718"
- inkscape:cy="7.5523354"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="matrix(0.63636994,0,0,0.63636994,10.81847,386.85247)"
- inkscape:label="Layer 1"
- id="g4515"
- style="fill:#a5b7f8;fill-opacity:0.98823529;stroke:#ffffff;stroke-width:6.28565216;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 6.0000004,1040.3624 0,7 0,0.033 -2.4746094,-1.8086 c -0.520152,-0.3803 -1.1948017,-0.4556 -1.6503906,0 -0.4556596,0.4556 -0.4556116,1.1948 0,1.6504 l 4.125,4.125 5.9999996,0 c 1.104569,0 2,-0.8954 2,-2 l 0,-5 -5.9999996,0 0,-4 -2,0 z"
- id="rect4179"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccccscssccccc" />
- <circle
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4187"
- cx="7"
- cy="1040.3622"
- r="1" />
- <rect
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4226"
- width="2"
- height="1"
- x="3"
- y="1040.3622" />
- <rect
- y="1037.3622"
- x="3"
- height="1"
- width="8"
- id="rect4228"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- y="1040.3622"
- x="9"
- height="1"
- width="2"
- id="rect4230"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4232"
- width="1"
- height="2.0000174"
- x="2"
- y="1038.3622" />
- <rect
- y="1038.3622"
- x="11"
- height="2.0000174"
- width="1"
- id="rect4234"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4236"
- sodipodi:type="arc"
- sodipodi:cx="3"
- sodipodi:cy="1038.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="3.1415927"
- sodipodi:end="0"
- d="m 2,1038.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" />
- <path
- d="m -12,1038.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z"
- sodipodi:end="0"
- sodipodi:start="3.1415927"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="1038.3622"
- sodipodi:cx="-11"
- sodipodi:type="arc"
- id="path4238"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(-1,1)" />
- <path
- transform="scale(-1,-1)"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4240"
- sodipodi:type="arc"
- sodipodi:cx="-11"
- sodipodi:cy="-1040.3622"
- sodipodi:rx="1"
- sodipodi:ry="1"
- sodipodi:start="3.1415927"
- sodipodi:end="0"
- d="m -12,-1040.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" />
- <path
- d="m -4,-1040.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z"
- sodipodi:end="0"
- sodipodi:start="3.1415927"
- sodipodi:ry="1"
- sodipodi:rx="1"
- sodipodi:cy="-1040.3622"
- sodipodi:cx="-3"
- sodipodi:type="arc"
- id="path4242"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(-1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_track_add_key.svg b/editor/icons/source/icon_track_add_key.svg
deleted file mode 100644
index f550f922bb..0000000000
--- a/editor/icons/source/icon_track_add_key.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_track_add_key.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_track_add_key.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="10.389243"
- inkscape:cy="3.816961"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 0 L 3 3 L 0 3 L 0 5 L 3 5 L 3 8 L 5 8 L 5 5 L 8 5 L 8 3 L 5 3 L 5 0 L 3 0 z "
- transform="translate(0,1044.3622)"
- id="rect4137" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_track_add_key_hl.svg b/editor/icons/source/icon_track_add_key_hl.svg
deleted file mode 100644
index 1b45cf8c4a..0000000000
--- a/editor/icons/source/icon_track_add_key_hl.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_track_add_key_hl.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_track_add_key_hl.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="-4.0417082"
- inkscape:cy="5.5439904"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="fill:#84ffb1;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 3 0 L 3 3 L 0 3 L 0 5 L 3 5 L 3 8 L 5 8 L 5 5 L 8 5 L 8 3 L 5 3 L 5 0 L 3 0 z "
- id="rect4137"
- transform="translate(0,1044.3622)" />
- <path
- transform="translate(0,1044.3622)"
- id="path4143"
- d="M 3 0 L 3 3 L 0 3 L 0 5 L 3 5 L 3 8 L 5 8 L 5 5 L 8 5 L 8 3 L 5 3 L 5 0 L 3 0 z "
- style="fill:#ffffff;fill-opacity:0.42424244;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_track_continuous.svg b/editor/icons/source/icon_track_continuous.svg
deleted file mode 100644
index 78b9dd3f4b..0000000000
--- a/editor/icons/source/icon_track_continuous.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_track_continuous.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.8686169"
- inkscape:cy="5.8136992"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#e0e0e0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 2,1050.3622 c 6,0 6,-4 12,-4"
- id="path4156"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_track_discrete.svg b/editor/icons/source/icon_track_discrete.svg
deleted file mode 100644
index 381782cf6f..0000000000
--- a/editor/icons/source/icon_track_discrete.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_track_discrete.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.8686169"
- inkscape:cy="5.8136992"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="path4230"
- cx="2"
- cy="1050.3622"
- r="1" />
- <circle
- r="1"
- cy="1048.3622"
- cx="8"
- id="circle4232"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4234"
- cx="14"
- cy="1046.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_track_trigger.svg b/editor/icons/source/icon_track_trigger.svg
deleted file mode 100644
index 9c13791f70..0000000000
--- a/editor/icons/source/icon_track_trigger.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="8"
- viewBox="0 0 16 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_track_trigger.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_track_trigger.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="0.93634514"
- inkscape:cy="3.5256605"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <circle
- r="1"
- cy="1048.3622"
- cx="11"
- id="circle4232"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4234"
- cx="14"
- cy="1046.3622"
- r="1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4169"
- width="6"
- height="2"
- x="1"
- y="1045.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4171"
- width="2"
- height="3.9999826"
- x="3"
- y="1047.3622" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4173"
- cx="8"
- cy="1050.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_translation.svg b/editor/icons/source/icon_translation.svg
deleted file mode 100644
index 389b8a40de..0000000000
--- a/editor/icons/source/icon_translation.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_translation.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="8.1812988"
- inkscape:cy="6.7732008"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 2 1 L 2 15 L 12 15 A 1.9999826 1.9999826 0 0 0 14 13 L 14 3 A 1.9999826 1.9999826 0 0 0 12 1 L 12 6 L 12 8 L 10 6 L 8 8 L 8 6 L 8 1 L 2 1 z "
- transform="translate(0,1036.3622)"
- id="rect4159" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_transpose.svg b/editor/icons/source/icon_transpose.svg
deleted file mode 100644
index ceccfecfa3..0000000000
--- a/editor/icons/source/icon_transpose.svg
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_scale.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_transpose.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="11.628028"
- inkscape:cy="13.482329"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4154"
- width="2"
- height="14"
- x="1"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="1"
- height="2.0000174"
- width="14"
- id="rect4156"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1049.3622"
- x="1"
- height="1.9999652"
- width="7"
- id="rect4158"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1037.3622"
- x="6"
- height="14"
- width="2"
- id="rect4160"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4162"
- width="14"
- height="2"
- x="1"
- y="1042.3622" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4164"
- width="7.0000172"
- height="1.9999828"
- x="1037.3622"
- y="-14.999983"
- transform="matrix(0,1,-1,0,0,0)" />
- <path
- style="fill:#e0e0e0;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- d="m 15,1051.3622 -5,0 5,-5 z"
- id="path4168"
- inkscape:connector-curvature="0" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4170"
- width="5"
- height="3"
- x="8"
- y="1039.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tree.svg b/editor/icons/source/icon_tree.svg
deleted file mode 100644
index 0c2b20f458..0000000000
--- a/editor/icons/source/icon_tree.svg
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_tree.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="7.8708755"
- inkscape:cy="9.6521385"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#fefeff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4175"
- width="1"
- height="1"
- x="20"
- y="1042.3622" />
- <rect
- y="1042.3622"
- x="29"
- height="1"
- width="1"
- id="rect4177"
- style="opacity:1;fill:#fefeff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect821"
- width="14"
- height="2"
- x="1"
- y="1037.3622" />
- <rect
- y="1041.3622"
- x="6"
- height="2"
- width="9"
- id="rect823"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:1.60356748;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:1.51185787;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect825"
- width="8"
- height="2"
- x="7"
- y="1045.3622" />
- <rect
- y="1049.3622"
- x="7"
- height="2"
- width="8"
- id="rect827"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:1.51185787;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1038.3622 v 4 h 4"
- id="path829"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 6,1042.3622 v 4 h 3"
- id="path831"
- inkscape:connector-curvature="0" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
- d="m 2,1040.3622 v 10 h 7"
- id="path833"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_tween.svg b/editor/icons/source/icon_tween.svg
deleted file mode 100644
index 7857c5f187..0000000000
--- a/editor/icons/source/icon_tween.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tween.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_tween.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.9605895"
- inkscape:cy="8.5201258"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#fbe87a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 1,1043.3613 v 8 h 8 v -2 H 3 v -6 z"
- id="path4138"
- inkscape:connector-curvature="0" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#fbe87a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 7,1037.3613 v 2 h 6 v 6 h 2 v -8 z"
- id="path4140"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path4142"
- d="m 6.0000002,1041.3622 4.9999998,0 0,5 z"
- style="opacity:1;fill:#fbe87a;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#fbe87a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 8.2929688,1042.6543 -7,7 1.4140624,1.4141 7,-7 z"
- id="path4144"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_unbone.svg b/editor/icons/source/icon_unbone.svg
deleted file mode 100644
index 7e4109f2ec..0000000000
--- a/editor/icons/source/icon_unbone.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_bone.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_unbone.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="6.4412926"
- inkscape:cy="9.085446"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 10.478516 1 A 2.4664114 2.4663006 0 0 0 8.6972656 1.7207031 A 2.4664114 2.4663006 0 0 0 8.3828125 4.8242188 L 7.3105469 5.8964844 L 10.101562 8.6875 L 11.177734 7.6132812 A 2.4664198 2.4663006 0 0 0 14.277344 7.3027344 A 2.4664198 2.4663006 0 0 0 14.277344 3.8144531 A 2.4664198 2.4663006 0 0 0 12.880859 3.1171875 A 2.4664114 2.4663006 0 0 0 12.185547 1.7207031 A 2.4664114 2.4663006 0 0 0 10.478516 1 z M 5.8964844 7.3105469 L 4.8242188 8.3847656 A 2.4664114 2.4663006 0 0 0 1.7226562 8.6972656 A 2.4664114 2.4663006 0 0 0 1.7226562 12.185547 A 2.4664114 2.4663006 0 0 0 3.1191406 12.880859 A 2.4664198 2.4663006 0 0 0 3.8144531 14.277344 A 2.4664198 2.4663006 0 0 0 7.3027344 14.277344 A 2.4664198 2.4663006 0 0 0 7.6171875 11.173828 L 8.6875 10.101562 L 5.8964844 7.3105469 z "
- transform="translate(0,1036.3622)"
- id="path4139" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_ungroup.svg b/editor/icons/source/icon_ungroup.svg
deleted file mode 100644
index f0b33465cd..0000000000
--- a/editor/icons/source/icon_ungroup.svg
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_ungroup.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.999999"
- inkscape:cx="2.9046561"
- inkscape:cy="8.8085261"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- inkscape:connector-curvature="0"
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.39215686;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 7,1037.3622 0,2 0,4 -4,0 c 0,0 -0.446,0 -1,0 -0.554,0 -1,0 -1,0 l 0,2 0,4 c 0,0 0.446,0 1,0 0.554,0 1,0 1,0 l 0,-4 4,0 0,4 -4,0 c -2.34e-5,0 0,0.446 0,1 0,0.554 -2.34e-5,1 0,1 l 4,0 c 0,0 0.446,0 1,0 0.554,0 1,0 1,0 l 0,-2 0,-4 4,0 c 0,0 0.446,0 1,0 0.554,0 1,0 1,0 l 0,-2 0,-4 c 0,0 -0.446,0 -1,0 -0.554,0 -1,0 -1,0 l 0,4 -4,0 0,-4 4,0 c 2.3e-5,0 0,-0.446 0,-1 0,-0.554 2.3e-5,-1 0,-1 l -4,0 c 0,0 -0.446,0 -1,0 -0.554,0 -1,0 -1,0 z"
- id="rect4697" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4679"
- width="2"
- height="1.9999826"
- x="1"
- y="1049.3622"
- rx="2.5000134"
- ry="4.2248896e-05" />
- <rect
- ry="4.224963e-05"
- rx="2.5000134"
- y="1043.3622"
- x="1"
- height="2.0000174"
- width="2"
- id="rect4681"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4693"
- width="2"
- height="2.0000174"
- x="13"
- y="1037.3622"
- rx="2.5000134"
- ry="4.224963e-05" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4726"
- width="2"
- height="2.0000174"
- x="7"
- y="1049.3622"
- rx="2.5000134"
- ry="4.224963e-05" />
- <rect
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="2"
- height="2.0000174"
- x="7"
- y="1037.3622"
- rx="2.5000134"
- ry="4.224963e-05" />
- <rect
- ry="4.224963e-05"
- rx="2.5000134"
- y="1043.3622"
- x="7"
- height="2.0000174"
- width="2"
- id="rect4159"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- ry="4.224963e-05"
- rx="2.5000134"
- y="1043.3622"
- x="13"
- height="2.0000174"
- width="2"
- id="rect4161"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_unlock.svg b/editor/icons/source/icon_unlock.svg
deleted file mode 100644
index b821d486ed..0000000000
--- a/editor/icons/source/icon_unlock.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_unlock.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_unlock.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.9526998"
- inkscape:cy="6.9680614"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="false"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-others="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="matrix(0.63636994,0,0,0.63636994,11.81847,382.85245)"
- inkscape:label="Layer 1"
- id="g4515"
- style="stroke:#ffffff;stroke-width:6.28565216;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 8 L 2 15 L 14 15 L 14 8 L 2 8 z M 7 10 L 9 10 L 9 13 L 7 13 L 7 10 z "
- id="rect4139"
- transform="translate(0,1036.3622)" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 8,1 C 7.1226197,1.001545 6.2610925,1.233935 5.5019531,1.6738281 l 1,1.7324219 C 6.9570181,3.1417636 7.4736593,3.0016575 8,3 c 1.6568542,0 3,1.3431458 3,3 l 2,0 C 13,3.2385763 10.761424,1 8,1 Z"
- transform="translate(0,1036.3622)"
- id="path4141"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccc" />
- <rect
- y="1042.3622"
- x="11"
- height="2"
- width="2"
- id="rect4147"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_uv.svg b/editor/icons/source/icon_uv.svg
deleted file mode 100644
index 698a57fc0a..0000000000
--- a/editor/icons/source/icon_uv.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_tool_rotate.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_uv.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="-4.4331479"
- inkscape:cy="7.1529248"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 1 5 L 1 9 A 3 2.9999914 0 0 0 2.5 11.597656 A 3 2.9999914 0 0 0 5.5 11.597656 A 3 2.9999914 0 0 0 7 9 L 7 5 L 5 5 L 5 9 A 1 1 0 0 1 4 10 A 1 1 0 0 1 3 9 L 3 5 L 1 5 z M 9 5 L 11 12 L 12 12 L 13 12 L 14 12 L 16 5 L 14 5 L 12.5 10.25 L 11 5 L 9 5 z "
- transform="translate(0,1036.3622)"
- id="rect4155" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_v_box_container.svg b/editor/icons/source/icon_v_box_container.svg
deleted file mode 100644
index 9773b253fb..0000000000
--- a/editor/icons/source/icon_v_box_container.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_v_box_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.6758349"
- inkscape:cy="9.0861534"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 15,1039.3622 c 0,-1.1046 -0.89543,-2 -2,-2 l -10,0 c -1.104569,0 -2,0.8954 -2,2 l 0,10 c 0,1.1046 0.895431,2 2,2 l 10,0 c 1.10457,0 2,-0.8954 2,-2 l 0,-10 z m -2,0 0,2 -10,0 0,-2 10,0 z m 0,4 0,2 -10,0 0,-2 10,0 z m 0,4 0,2 -10,0 0,-2 10,0 z"
- id="rect4140"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_v_button_array.svg b/editor/icons/source/icon_v_button_array.svg
deleted file mode 100644
index 08fc7d7614..0000000000
--- a/editor/icons/source/icon_v_button_array.svg
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_v_button_array.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="8.7528394"
- inkscape:cy="11.065221"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-7"
- inkscape:label="Layer 1"
- transform="translate(11.5,-2.9999826)"
- style="fill:#a5efac;fill-opacity:1" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 7 1 L 7 3.1328125 L 5.5546875 2.1679688 L 4.4453125 3.8320312 L 7.4453125 5.8320312 C 7.7812145 6.0559312 8.2187855 6.0559313 8.5546875 5.8320312 L 11.554688 3.8320312 L 10.445312 2.1679688 L 9 3.1328125 L 9 1 L 7 1 z M 6.5 7 C 5.669 7 5 7.669 5 8.5 L 5 9 L 4 9 L 4 11 L 6 11 L 6 9 L 10 9 L 10 11 L 12 11 L 12 9 L 11 9 L 11 8.5 C 11 7.669 10.331 7 9.5 7 L 6.5 7 z "
- transform="translate(0,1036.3622)"
- id="rect829-9" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1046.3622 v 2 H 5 v 2 h 2 v 2 h 2 v -2 h 2 v -2 H 9 v -2 z"
- id="rect836"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_v_scroll_bar.svg b/editor/icons/source/icon_v_scroll_bar.svg
deleted file mode 100644
index 8ad6baa5b3..0000000000
--- a/editor/icons/source/icon_v_scroll_bar.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_v_scroll_bar.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.199596"
- inkscape:cy="9.3134214"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-paths="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 5 1 C 3.8919904 1 3 1.8919904 3 3 L 3 13 C 3 14.10801 3.8919904 15 5 15 L 11 15 C 12.10801 15 13 14.10801 13 13 L 13 3 C 13 1.8919904 12.10801 1 11 1 L 5 1 z M 7.9882812 2 A 1.0001 1.0001 0 0 1 8.5546875 2.1679688 L 11.554688 4.1679688 A 1.0001 1.0001 0 1 1 10.445312 5.8320312 L 8 4.203125 L 5.5546875 5.8320312 A 1.0001 1.0001 0 1 1 4.4453125 4.1679688 L 7.4453125 2.1679688 A 1.0001 1.0001 0 0 1 7.9882812 2 z M 4.9902344 9.9921875 A 1.0001 1.0001 0 0 1 5.5546875 10.167969 L 8 11.798828 L 10.445312 10.167969 A 1.0001 1.0001 0 1 1 11.554688 11.832031 L 8.5546875 13.832031 A 1.0001 1.0001 0 0 1 7.4453125 13.832031 L 4.4453125 11.832031 A 1.0001 1.0001 0 0 1 4.9902344 9.9921875 z "
- transform="translate(0,1036.3622)"
- id="rect825" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_v_separator.svg b/editor/icons/source/icon_v_separator.svg
deleted file mode 100644
index 7e5ce39ba0..0000000000
--- a/editor/icons/source/icon_v_separator.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_v_separator.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="10.534143"
- inkscape:cy="10.281549"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="m 2,1047.3622 3,0 0,-6 -3,0 0,6 z m 5,4 2,0 0,-14 -2,0 0,14 z m 4,-4 3,0 0,-6 -3,0 0,6 z"
- id="rect4156"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_v_slider.svg b/editor/icons/source/icon_v_slider.svg
deleted file mode 100644
index e13c008d3a..0000000000
--- a/editor/icons/source/icon_v_slider.svg
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_v_slider.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.2553429"
- inkscape:cy="8.5533887"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a5efac;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 5.99995,1050.3623 a 1.0001,1.0001 0 1 1 -2,0 v -2.1308 a 4,4 0 0 0 1,0.1308 4,4 0 0 0 1,-0.1328 z m 0,-9.8691 a 4,4 0 0 0 -1,-0.1309 4,4 0 0 0 -1,0.1329 v -2.1329 a 1.0001,1.0001 0 1 1 2,0 z"
- id="path817"
- inkscape:connector-curvature="0" />
- <circle
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path824"
- cx="-1039.3623"
- cy="-4.9999676"
- r="2"
- transform="matrix(0,-1,-1,0,0,0)" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11.99995,1038.3623 h -2"
- id="path835"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10.99995,1044.3623 v 0"
- id="path837"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 11.99995,1050.3623 h -2"
- id="path839"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-curvature="0"
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 5.99995,1049.3623 h -2 v -6.1308 a 4,4 0 0 0 1,0.1308 4,4 0 0 0 1,-0.1328 z"
- id="rect841" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_v_split_container.svg b/editor/icons/source/icon_v_split_container.svg
deleted file mode 100644
index 4e7704eb4e..0000000000
--- a/editor/icons/source/icon_v_split_container.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_v_split_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.8095409"
- inkscape:cy="10.783047"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z m 0,2 10,0 0,10 -10,0 z"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssssssssccccc"
- transform="translate(0,1036.3622)" />
- <rect
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4155"
- width="2"
- height="10"
- x="1043.3622"
- y="-13"
- transform="matrix(0,1,-1,0,0,0)" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1045.3622 -4,0 2,2 z"
- id="path4173"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 10,1043.3622 -2,-2 -2,2 z"
- id="path4171"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_variant.svg b/editor/icons/source/icon_variant.svg
deleted file mode 100644
index d966190ab0..0000000000
--- a/editor/icons/source/icon_variant.svg
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92+devel unknown"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_variant.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627418"
- inkscape:cx="12.635414"
- inkscape:cy="11.860443"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-midpoints="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:document-rotation="0">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- transform="translate(0,-3)"
- id="layer1-5"
- inkscape:label="Layer 1"
- style="fill:#e0e0e0;fill-opacity:1">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4320"
- width="2"
- height="5.9999666"
- x="3"
- y="1044.3622" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4324"
- width="2"
- height="5.9999843"
- x="6"
- y="1044.3622" />
- <rect
- y="1044.3622"
- x="3"
- height="2.0000174"
- width="1"
- id="rect4326"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 3,1044.3622 a 3,3 0 0 0 -3,3 h 2 a 1.0000174,1.0000174 0 0 1 1,-1 z"
- id="path4328"
- inkscape:connector-curvature="0" />
- <path
- id="path4330"
- d="m 14,1050.3622 a 3,3 0 0 1 -3,-3 h 2 a 1.0000174,1.0000174 0 0 0 1,1 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- inkscape:connector-curvature="0" />
- <rect
- transform="scale(1,-1)"
- y="-1052.3622"
- x="14"
- height="7.9999843"
- width="2"
- id="rect4334"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- transform="scale(1,-1)"
- y="-1047.3622"
- x="11"
- height="2.9999826"
- width="2"
- id="rect4338"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4340"
- d="m 3,1050.3622 a 3,3 0 0 1 -3,-3 h 2 a 1.0000174,1.0000174 0 0 0 1,1 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- inkscape:connector-curvature="0"
- id="path4342"
- d="m 8,1044.3622 a 3,3 0 0 1 3,3 H 9 a 1.0000174,1.0000174 0 0 0 -1,-1 z"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- y="1047.3622"
- x="9"
- height="3.0000174"
- width="2"
- id="rect4344"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_vector.svg b/editor/icons/source/icon_vector.svg
deleted file mode 100644
index 3260aa77ac..0000000000
--- a/editor/icons/source/icon_vector.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_vector.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="4.3605855"
- inkscape:cy="6.1062603"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1047.3622 -4,4"
- id="path4161"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 7,1040.3622 0,7 7,0"
- id="path4163"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_vector2.svg b/editor/icons/source/icon_vector2.svg
deleted file mode 100644
index b7b157db01..0000000000
--- a/editor/icons/source/icon_vector2.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="12"
- viewBox="0 0 16 12"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot-design/assets/icons/svg/icon_graph_scalar_uniform.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_vector_2.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.3478451"
- inkscape:cy="7.2601098"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- showguides="false"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1040.3622)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#b8ea68;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="m 4,1041.3622 0,9 9,0"
- id="path4163"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_vehicle_body.svg b/editor/icons/source/icon_vehicle_body.svg
deleted file mode 100644
index a168b98a99..0000000000
--- a/editor/icons/source/icon_vehicle_body.svg
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_vehicle_body.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="63.999997"
- inkscape:cx="8.7499158"
- inkscape:cy="7.6997367"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 5 3 A 1 1 0 0 0 4 4 L 3 7 L 1 7 L 1 11 L 2.0507812 11 C 2.2824511 9.8589301 3.2905526 9 4.5 9 C 5.7094474 9 6.717549 9.8589301 6.9492188 11 L 9.0507812 11 C 9.2824511 9.8589301 10.290553 9 11.5 9 C 12.709447 9 13.717549 9.8589301 13.949219 11 L 15 11 L 15 7 L 11 7 L 11 3 L 5 3 z M 6 4 L 10 4 L 10 7 L 6 7 L 6 4 z "
- transform="translate(0,1036.3622)"
- id="rect4167" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="path4154"
- cx="4.5"
- cy="1047.8622"
- r="1.5" />
- <circle
- r="1.5"
- cy="1047.8622"
- cx="11.5"
- id="circle4165"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_vehicle_wheel.svg b/editor/icons/source/icon_vehicle_wheel.svg
deleted file mode 100644
index dff80c4d00..0000000000
--- a/editor/icons/source/icon_vehicle_wheel.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_vehicle_wheel.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="5.9995914"
- inkscape:cy="9.3390829"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 8 1 A 7 7 0 0 0 1 8 A 7 7 0 0 0 8 15 A 7 7 0 0 0 15 8 A 7 7 0 0 0 8 1 z M 8 3 A 5 5 0 0 1 13 8 A 5 5 0 0 1 8 13 A 5 5 0 0 1 3 8 A 5 5 0 0 1 8 3 z "
- transform="translate(0,1036.3622)"
- id="path4212" />
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 8 4 A 4 4 0 0 0 4 8 A 4 4 0 0 0 8 12 A 4 4 0 0 0 12 8 A 4 4 0 0 0 8 4 z M 8 5 A 1 1 0 0 1 9 6 A 1 1 0 0 1 8 7 A 1 1 0 0 1 7 6 A 1 1 0 0 1 8 5 z M 6 7 A 1 1 0 0 1 7 8 A 1 1 0 0 1 6 9 A 1 1 0 0 1 5 8 A 1 1 0 0 1 6 7 z M 10 7 A 1 1 0 0 1 11 8 A 1 1 0 0 1 10 9 A 1 1 0 0 1 9 8 A 1 1 0 0 1 10 7 z M 8 9 A 1 1 0 0 1 9 10 A 1 1 0 0 1 8 11 A 1 1 0 0 1 7 10 A 1 1 0 0 1 8 9 z "
- id="circle4229"
- transform="translate(0,1036.3622)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_video_player.svg b/editor/icons/source/icon_video_player.svg
deleted file mode 100644
index a049791930..0000000000
--- a/editor/icons/source/icon_video_player.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_video_player.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="6.7289895"
- inkscape:cy="10.226546"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:none;fill-opacity:1;stroke:#a5efac;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect819"
- width="12"
- height="12"
- x="2"
- y="1038.3622"
- ry="1.0000174" />
- <path
- style="fill:#a5efac;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 6,1045.3622 v -4 l 4,2 z"
- id="path4180"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- <rect
- style="fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect821"
- width="10"
- height="2"
- x="3"
- y="1047.3622"
- ry="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_viewport.svg b/editor/icons/source/icon_viewport.svg
deleted file mode 100644
index 631260ab33..0000000000
--- a/editor/icons/source/icon_viewport.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_viewport.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="14.11111"
- inkscape:cy="8.6614747"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 3,2 C 2.4695977,2.0000801 1.9609485,2.2108464 1.5859375,2.5859375 1.2108464,2.9609485 1.0000801,3.4695977 1,4 l 0,8 c 8.03e-5,0.530402 0.2108465,1.039051 0.5859375,1.414062 C 1.9609484,13.789153 2.4695976,13.99992 3,14 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,4 C 15,2.8954305 14.104569,2 13,2 Z m 0,1 10,0 c 0.552281,9.6e-6 0.99999,0.4477192 1,1 l 0,8 c -10e-6,0.552281 -0.447719,0.99999 -1,1 L 3,13 C 2.4477192,12.99999 2.0000096,12.552281 2,12 L 2,4 c 9.6e-6,-0.5522808 0.4477192,-0.9999904 1,-1 z"
- transform="translate(0,1036.3622)"
- id="rect4179"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccsssscccccccccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_viewport_container.svg b/editor/icons/source/icon_viewport_container.svg
deleted file mode 100644
index 300b8390c4..0000000000
--- a/editor/icons/source/icon_viewport_container.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_viewport_container.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="13.216634"
- inkscape:cy="7.7987238"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3,1 C 1.8954305,1 1,1.8954305 1,3 l 0,10 c 0,1.104569 0.8954305,2 2,2 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,3 C 15,1.8954305 14.104569,1 13,1 Z M 3,3 13,3 13,13 3,13 Z M 6,4 C 5.469598,4.0001 4.9609495,4.2108375 4.5859375,4.5859375 4.2108465,4.9609375 4.00008,5.4696 4,6 l 0,4 c 8e-5,0.5304 0.2108475,1.039063 0.5859375,1.414062 C 4.9609485,11.789162 5.469598,11.9999 6,12 l 4,0 c 1.104569,0 2,-0.8954 2,-2 L 12,6 C 12,4.8954 11.104569,4 10,4 Z m 0,1 4,0 c 0.552281,0 0.99999,0.4477 1,1 l 0,4 c -10e-6,0.5523 -0.447719,1 -1,1 L 6,11 C 5.447719,11 5.00001,10.5523 5,10 L 5,6 C 5.00001,5.4477 5.447719,5 6,5 Z"
- transform="translate(0,1036.3622)"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccccccccccccsssscssccssccs" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_viewport_sprite.svg b/editor/icons/source/icon_viewport_sprite.svg
deleted file mode 100644
index ab1ac198ce..0000000000
--- a/editor/icons/source/icon_viewport_sprite.svg
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_viewport_sprite.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="6.9421446"
- inkscape:cy="7.9109534"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#fefeff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4175"
- width="1"
- height="1"
- x="20"
- y="1042.3622" />
- <rect
- y="1042.3622"
- x="29"
- height="1"
- width="1"
- id="rect4177"
- style="opacity:1;fill:#fefeff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843" />
- <path
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 3,2 C 2.4695977,2.0000801 1.9609485,2.2108464 1.5859375,2.5859375 1.2108464,2.9609485 1.0000801,3.4695977 1,4 l 0,8 c 8.03e-5,0.530402 0.2108465,1.039051 0.5859375,1.414062 C 1.9609484,13.789153 2.4695976,13.99992 3,14 l 10,0 c 1.104569,0 2,-0.895431 2,-2 L 15,4 C 15,2.8954305 14.104569,2 13,2 Z m 0,1 10,0 c 0.552281,9.6e-6 0.99999,0.4477192 1,1 l 0,8 c -10e-6,0.552281 -0.447719,0.99999 -1,1 L 3,13 C 2.4477192,12.99999 2.0000096,12.552281 2,12 L 2,4 c 9.6e-6,-0.5522808 0.4477192,-0.9999904 1,-1 z"
- transform="translate(0,1036.3622)"
- id="rect4179"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccsssscccccccccc" />
- <rect
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4213"
- width="2"
- height="1.9999826"
- x="4"
- y="1042.3622" />
- <rect
- y="1042.3622"
- x="10"
- height="1.9999826"
- width="2"
- id="rect4215"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- y="1045.3622"
- x="4"
- height="1.0000174"
- width="8"
- id="rect4217"
- style="opacity:1;fill:#a5b7f8;fill-opacity:0.98823529;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_viewport_texture.svg b/editor/icons/source/icon_viewport_texture.svg
deleted file mode 100644
index 4cf6532059..0000000000
--- a/editor/icons/source/icon_viewport_texture.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_sprite.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_viewport_texture.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="18.523635"
- inkscape:cy="6.064799"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true"
- inkscape:snap-intersection-paths="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 3 2 C 2.4695977 2.0000801 1.9609485 2.2108464 1.5859375 2.5859375 C 1.2108464 2.9609485 1.0000801 3.4695977 1 4 L 1 12 C 1.0000803 12.530402 1.2108465 13.039051 1.5859375 13.414062 C 1.9609484 13.789154 2.4695976 13.99992 3 14 L 13 14 C 14.104569 14 15 13.104569 15 12 L 15 4 C 15 2.8954305 14.104569 2 13 2 L 3 2 z M 3 3 L 13 3 C 13.552281 3.0000096 13.99999 3.4477192 14 4 L 14 12 C 13.99999 12.552281 13.552281 12.99999 13 13 L 3 13 C 2.4477192 12.99999 2.0000096 12.552281 2 12 L 2 4 C 2.0000096 3.4477192 2.4477192 3.0000096 3 3 z M 9 6 L 9 7 L 8 7 L 8 8 L 6 8 L 6 9 L 5 9 L 5 10 L 4 10 L 4 11 L 6 11 L 8 11 L 10 11 L 12 11 L 12 9 L 11 9 L 11 8 L 11 7 L 10 7 L 10 6 L 9 6 z "
- transform="translate(0,1036.3622)"
- id="rect4179" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_visibility_enabler.svg b/editor/icons/source/icon_visibility_enabler.svg
deleted file mode 100644
index 7c3bc54c99..0000000000
--- a/editor/icons/source/icon_visibility_enabler.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_visibility_enabler.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="7.6618615"
- inkscape:cy="10.09281"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-0"
- inkscape:label="Layer 1"
- transform="translate(-1.5201563e-4,0)"
- style="fill:#fc9c9c;fill-opacity:0.99607843">
- <path
- id="path4165"
- transform="translate(0,1036.3622)"
- d="M 8,2 C 5.4432667,2 2.2093331,3.9476781 1.0449219,7.7050781 a 1.0001,1.0001 0 0 0 -0.00586,0.5703125 C 2.1634651,12.210791 5.5,14 8,14 c 2.5,0 5.836534,-1.789209 6.960938,-5.7246094 a 1.0001,1.0001 0 0 0 0,-0.5527344 C 13.86059,3.9350563 10.554367,2 8,2 Z M 8,4 A 4,4 0 0 1 12,8 4,4 0 0 1 8,12 4,4 0 0 1 4,8 4,4 0 0 1 8,4 Z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- inkscape:connector-curvature="0" />
- <circle
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4192"
- cx="8"
- cy="1044.3622"
- r="2" />
- </g>
- <path
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 1 1 L 1 4 L 2 4 L 2 2 L 4 2 L 4 1 L 1 1 z M 12 1 L 12 2 L 14 2 L 14 4 L 15 4 L 15 1 L 12 1 z M 1 12 L 1 15 L 4 15 L 4 14 L 2 14 L 2 12 L 1 12 z M 14 12 L 14 14 L 12 14 L 12 15 L 15 15 L 15 12 L 14 12 z "
- transform="translate(0,1036.3622)"
- id="rect4176" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_visibility_enabler_2d.svg b/editor/icons/source/icon_visibility_enabler_2d.svg
deleted file mode 100644
index 1e7d1a751f..0000000000
--- a/editor/icons/source/icon_visibility_enabler_2d.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_visibility_enabler_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313708"
- inkscape:cx="3.8611624"
- inkscape:cy="11.15347"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-0"
- inkscape:label="Layer 1"
- transform="translate(-1.5201563e-4,0)"
- style="fill:#a5b7f9;fill-opacity:0.98823529">
- <path
- id="path4165"
- transform="translate(0,1036.3622)"
- d="M 8,2 C 5.4432667,2 2.2093331,3.9476781 1.0449219,7.7050781 a 1.0001,1.0001 0 0 0 -0.00586,0.5703125 C 2.1634651,12.210791 5.5,14 8,14 c 2.5,0 5.836534,-1.789209 6.960938,-5.7246094 a 1.0001,1.0001 0 0 0 0,-0.5527344 C 13.86059,3.9350563 10.554367,2 8,2 Z M 8,4 A 4,4 0 0 1 12,8 4,4 0 0 1 8,12 4,4 0 0 1 4,8 4,4 0 0 1 8,4 Z"
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a5b7f9;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- inkscape:connector-curvature="0" />
- <circle
- style="opacity:1;fill:#a5b7f9;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="circle4192"
- cx="8"
- cy="1044.3622"
- r="2" />
- </g>
- <path
- style="opacity:1;fill:#a5b7f9;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- d="M 1 1 L 1 4 L 2 4 L 2 2 L 4 2 L 4 1 L 1 1 z M 12 1 L 12 2 L 14 2 L 14 4 L 15 4 L 15 1 L 12 1 z M 1 12 L 1 15 L 4 15 L 4 14 L 2 14 L 2 12 L 1 12 z M 14 12 L 14 14 L 12 14 L 12 15 L 15 15 L 15 12 L 14 12 z "
- transform="translate(0,1036.3622)"
- id="rect4176" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_visibility_notifier.svg b/editor/icons/source/icon_visibility_notifier.svg
deleted file mode 100644
index b307a6162d..0000000000
--- a/editor/icons/source/icon_visibility_notifier.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_visibility_notifier.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.999999"
- inkscape:cx="0.5167491"
- inkscape:cy="12.138813"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 8 3 C 5.4432667 3 2.2093331 4.9476781 1.0449219 8.7050781 A 1.0001 1.0001 0 0 0 1.0390625 9.2753906 C 2.1634657 13.210791 5.5 15 8 15 C 9.4906676 15 11.271733 14.347929 12.710938 13 L 12 13 L 10 13 L 10 12.458984 A 4 4 0 0 1 8 13 A 4 4 0 0 1 4 9 A 4 4 0 0 1 8 5 A 4 4 0 0 1 10 5.5410156 L 10 3.359375 C 9.3168765 3.1210335 8.635589 3 8 3 z M 8 7 A 2 2 0 0 0 6 9 A 2 2 0 0 0 8 11 A 2 2 0 0 0 10 9 A 2 2 0 0 0 8 7 z "
- transform="translate(0,1036.3622)"
- id="path4165" />
- <rect
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4157"
- width="2"
- height="6"
- x="12"
- y="1037.3622" />
- <rect
- y="-1047.3622"
- x="12"
- height="2.0000174"
- width="2"
- id="rect4159"
- style="opacity:1;fill:#fc9c9c;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_visibility_notifier_2d.svg b/editor/icons/source/icon_visibility_notifier_2d.svg
deleted file mode 100644
index dc2482f9e1..0000000000
--- a/editor/icons/source/icon_visibility_notifier_2d.svg
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_visibility_notifier_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="15.999999"
- inkscape:cx="0.5167491"
- inkscape:cy="12.138813"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="false"
- inkscape:object-nodes="false"
- inkscape:snap-intersection-paths="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a5b7fa;fill-opacity:0.98823529;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 8 3 C 5.4432667 3 2.2093331 4.9476781 1.0449219 8.7050781 A 1.0001 1.0001 0 0 0 1.0390625 9.2753906 C 2.1634657 13.210791 5.5 15 8 15 C 9.4906676 15 11.271733 14.347929 12.710938 13 L 12 13 L 10 13 L 10 12.458984 A 4 4 0 0 1 8 13 A 4 4 0 0 1 4 9 A 4 4 0 0 1 8 5 A 4 4 0 0 1 10 5.5410156 L 10 3.359375 C 9.3168765 3.1210335 8.635589 3 8 3 z M 8 7 A 2 2 0 0 0 6 9 A 2 2 0 0 0 8 11 A 2 2 0 0 0 10 9 A 2 2 0 0 0 8 7 z "
- transform="translate(0,1036.3622)"
- id="path4165" />
- <rect
- style="opacity:1;fill:#a5b7fa;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- id="rect4157"
- width="2"
- height="6"
- x="12"
- y="1037.3622" />
- <rect
- y="-1047.3622"
- x="12"
- height="2.0000174"
- width="2"
- id="rect4159"
- style="opacity:1;fill:#a5b7fa;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.99607843"
- transform="scale(1,-1)" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_visible.svg b/editor/icons/source/icon_visible.svg
deleted file mode 100644
index 0185e1f3a9..0000000000
--- a/editor/icons/source/icon_visible.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_history.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_visible.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="13.144261"
- inkscape:cy="10.090962"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="M 8 2 C 5.4432667 2 2.2093331 3.9476781 1.0449219 7.7050781 A 1.0001 1.0001 0 0 0 1.0390625 8.2753906 C 2.1634651 12.210791 5.5 14 8 14 C 10.5 14 13.836534 12.210791 14.960938 8.2753906 A 1.0001 1.0001 0 0 0 14.960938 7.7226562 C 13.86059 3.9350563 10.554367 2 8 2 z M 8 4 A 4 4 0 0 1 12 8 A 4 4 0 0 1 8 12 A 4 4 0 0 1 4 8 A 4 4 0 0 1 8 4 z "
- transform="translate(0,1036.3622)"
- id="path4165" />
- <circle
- r="2"
- cy="1044.3622"
- cx="8"
- id="circle4192"
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_visual_script.svg b/editor/icons/source/icon_visual_script.svg
deleted file mode 100644
index d82cb36cb5..0000000000
--- a/editor/icons/source/icon_visual_script.svg
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_canvas_item_shader_graph.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_visual_script.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="9.8155367"
- inkscape:cy="10.356948"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <ellipse
- r="2"
- style="opacity:1;fill:#6e6e6e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="ellipse4152"
- cx="3"
- cy="1039.3622" />
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 7 1 L 6.4355469 3.2578125 A 5.0000172 5.0000172 0 0 0 5.7460938 3.5371094 L 3.7578125 2.34375 L 2.34375 3.7578125 L 3.5390625 5.7519531 A 5.0000172 5.0000172 0 0 0 3.2539062 6.4375 L 1 7 L 1 9 L 6.2714844 9 A 2.0000174 2.0000174 0 0 1 6 8 A 2.0000174 2.0000174 0 0 1 8 6 A 2.0000174 2.0000174 0 0 1 10 8 A 2.0000174 2.0000174 0 0 1 9.7304688 9 L 15 9 L 15 7 L 12.742188 6.4355469 A 5.0000172 5.0000172 0 0 0 12.462891 5.7480469 L 13.65625 3.7578125 L 12.242188 2.34375 L 10.248047 3.5390625 A 5.0000172 5.0000172 0 0 0 9.5625 3.2539062 L 9 1 L 7 1 z M 3 10 L 3 16 L 5 16 A 3 3 0 0 0 8 13 L 8 10 L 6 10 L 6 13 A 1.0000174 1.0000174 0 0 1 5 14 L 5 10 L 3 10 z M 11 10 A 2 2 0 0 0 9.2675781 11 A 2 2 0 0 0 9.2675781 13 A 2 2 0 0 0 11 14 L 9 14 L 9 16 L 11 16 A 2 2 0 0 0 12.732422 15 A 2 2 0 0 0 12.732422 13 A 2 2 0 0 0 11 12 L 13 12 L 13 10 L 11 10 z "
- transform="translate(0,1036.3622)"
- id="path4176" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_visual_shader_port.svg b/editor/icons/source/icon_visual_shader_port.svg
deleted file mode 100644
index 9e80e0e9e9..0000000000
--- a/editor/icons/source/icon_visual_shader_port.svg
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- viewBox="0 0 10 10"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collapse.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_visual_shader_port.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="-0.97644929"
- inkscape:cy="7.6043186"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:snap-smooth-nodes="true"
- inkscape:object-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1042.3622)">
- <path
- style="fill:#f3f3f3;fill-rule:evenodd;stroke:#e4e4e4;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- d="m 2,1051.3622 0,-8 6,4 z"
- id="path4135"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_vu_empty.svg b/editor/icons/source/icon_vu_empty.svg
deleted file mode 100644
index c4c7a4e625..0000000000
--- a/editor/icons/source/icon_vu_empty.svg
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="4"
- viewBox="0 0 128 4"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_vu_empty.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_vu_empty.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4211">
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="0"
- id="stop4213" />
- <stop
- id="stop4221"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="1"
- id="stop4215" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4211"
- id="linearGradient4219"
- x1="0"
- y1="2"
- x2="128"
- y2="2"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="67.735572"
- inkscape:cy="8.9854683"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1048.3622)">
- <path
- style="opacity:1;fill:url(#linearGradient4219);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 0 A 2 2 0 0 0 0 2 A 2 2 0 0 0 2 4 L 77 4 L 80 4 L 82 4 L 85 4 L 100 4 L 100 0 L 85 0 L 82 0 L 80 0 L 77 0 L 2 0 z M 102 0 L 102 4 L 126 4 A 2 2 0 0 0 128 2 A 2 2 0 0 0 126 0 L 102 0 z "
- transform="translate(0,1048.3622)"
- id="rect4204" />
- <path
- style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 0 A 2 2 0 0 0 0 2 A 2 2 0 0 0 2 4 L 77 4 L 80 4 L 82 4 L 85 4 L 100 4 L 100 0 L 85 0 L 82 0 L 80 0 L 77 0 L 2 0 z M 102 0 L 102 4 L 126 4 A 2 2 0 0 0 128 2 A 2 2 0 0 0 126 0 L 102 0 z "
- transform="translate(0,1048.3622)"
- id="path4242" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_vu_full.svg b/editor/icons/source/icon_vu_full.svg
deleted file mode 100644
index 7084ddf204..0000000000
--- a/editor/icons/source/icon_vu_full.svg
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="4"
- viewBox="0 0 128 4"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_vu_empty.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_vu_full.svg">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4211">
- <stop
- style="stop-color:#84ffb1;stop-opacity:1"
- offset="0"
- id="stop4213" />
- <stop
- id="stop4221"
- offset="0.5"
- style="stop-color:#e1dc7a;stop-opacity:1" />
- <stop
- style="stop-color:#ff8484;stop-opacity:1"
- offset="1"
- id="stop4215" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4211"
- id="linearGradient4219"
- x1="0"
- y1="2"
- x2="128"
- y2="2"
- gradientUnits="userSpaceOnUse" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="67.735572"
- inkscape:cy="8.9854683"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="false"
- inkscape:snap-smooth-nodes="false"
- inkscape:snap-midpoints="false">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1048.3622)">
- <path
- style="opacity:1;fill:url(#linearGradient4219);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 2 0 A 2 2 0 0 0 0 2 A 2 2 0 0 0 2 4 L 77 4 L 80 4 L 82 4 L 85 4 L 100 4 L 100 0 L 85 0 L 82 0 L 80 0 L 77 0 L 2 0 z M 102 0 L 102 4 L 126 4 A 2 2 0 0 0 128 2 A 2 2 0 0 0 126 0 L 102 0 z "
- transform="translate(0,1048.3622)"
- id="rect4204" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_warning.svg b/editor/icons/source/icon_warning.svg
deleted file mode 100644
index d886fbdaed..0000000000
--- a/editor/icons/source/icon_warning.svg
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="8"
- height="8"
- viewBox="0 0 8 8"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_node.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_warning.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254832"
- inkscape:cx="-2.2536226"
- inkscape:cy="6.41947"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1044.3622)">
- <rect
- style="opacity:1;fill:#ffd684;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4142"
- width="8"
- height="8"
- x="0"
- y="1044.3622"
- ry="4" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_window_dialog.svg b/editor/icons/source/icon_window_dialog.svg
deleted file mode 100644
index 433ae48a55..0000000000
--- a/editor/icons/source/icon_window_dialog.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_confirmation_dialog.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_window_dialog.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="2.2494901"
- inkscape:cy="5.6766918"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 3 1 C 1.89543 1 1 1.8954 1 3 L 1 4 L 15 4 L 15 3 C 15 1.8954 14.104569 1 13 1 L 3 1 z M 12 2 L 13 2 L 13 3 L 12 3 L 12 2 z M 1 5 L 1 13 C 1 14.1046 1.89543 15 3 15 L 13 15 C 14.104569 15 15 14.1046 15 13 L 15 5 L 1 5 z "
- transform="translate(0,1036.3622)"
- id="rect4140" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_world.svg b/editor/icons/source/icon_world.svg
deleted file mode 100644
index b2be396217..0000000000
--- a/editor/icons/source/icon_world.svg
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_world.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="10.207753"
- inkscape:cy="6.6325397"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4219"
- cx="5.9999828"
- cy="1046.3622"
- r="4.9999828" />
- <circle
- style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4221"
- cx="12"
- cy="1039.3622"
- r="1" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_world_2d.svg b/editor/icons/source/icon_world_2d.svg
deleted file mode 100644
index cb4427808a..0000000000
--- a/editor/icons/source/icon_world_2d.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_collision_shape.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_world_2d.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="17.648364"
- inkscape:cy="4.8796811"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="false"
- inkscape:snap-intersection-paths="false"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true"
- inkscape:snap-midpoints="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- d="m 2,1037.3613 a 1.0001,1.0001 0 0 0 -1,1 l 0,10 a 1.0001,1.0001 0 0 0 1,1 c 2.3666667,0 3.9746094,0.4629 5.7246094,0.9629 1.75,0.5 3.6420576,1.0371 6.2753906,1.0371 a 1.0001,1.0001 0 0 0 1,-1 l 0,-10 a 1.0001,1.0001 0 0 0 -1,-1 c -2.366667,0 -3.974609,-0.4609 -5.7246094,-0.9609 -1.75,-0.5 -3.6420573,-1.0391 -6.2753906,-1.0391 z m 1,2.0957 c 1.798426,0.1158 3.2574477,0.448 4.7246094,0.8672 1.4977347,0.4279 3.1940466,0.8188 5.2753906,0.9414 l 0,8.002 c -1.79849,-0.1158 -3.2574125,-0.448 -4.7246094,-0.8672 C 6.7776425,1047.9725 5.0813715,1047.5796 3,1047.457 l 0,-8 z"
- id="path4157"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_world_environment.svg b/editor/icons/source/icon_world_environment.svg
deleted file mode 100644
index 33e7f86137..0000000000
--- a/editor/icons/source/icon_world_environment.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/icon_node_2d.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_world_environment.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627416"
- inkscape:cx="13.590088"
- inkscape:cy="8.7617352"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1"
- inkscape:object-paths="true"
- inkscape:snap-intersection-paths="true"
- inkscape:object-nodes="true"
- inkscape:snap-smooth-nodes="true">
- <inkscape:grid
- type="xygrid"
- id="grid3336"
- empspacing="4" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <circle
- style="fill:none;fill-opacity:1;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- id="path814"
- cx="8"
- cy="1044.3622"
- r="6" />
- <path
- style="fill:none;stroke:#fc9c9c;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 2,1044.3622 c 4.5932382,1.582 8.398513,1.0627 12,0"
- id="path816"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- <path
- sodipodi:nodetypes="cc"
- inkscape:connector-curvature="0"
- id="path820"
- d="m 8,1038.3622 c -3,4 -3,8 0,12"
- style="fill:none;stroke:#fc9c9c;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
- <path
- style="fill:none;stroke:#fc9c9c;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
- d="m 8,1038.3622 c 3,4 3,8 0,12"
- id="path822"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cc" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_y_sort.svg b/editor/icons/source/icon_y_sort.svg
deleted file mode 100644
index 65990097c6..0000000000
--- a/editor/icons/source/icon_y_sort.svg
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_center_container.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_y_sort.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="4.9766986"
- inkscape:cy="10.397342"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="true"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="opacity:1;fill:#a5b7f9;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4157"
- width="6"
- height="2"
- x="9"
- y="1038.3622" />
- <path
- style="opacity:1;fill:#a5b7f9;fill-opacity:0.98823529;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="m 3,1048.3622 -2,0 3,3 3,-3 -2,0 0,-8 2,0 -3,-3 -3,3 2,0 z"
- id="rect4140"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccccccccc" />
- <rect
- y="1043.3622"
- x="9"
- height="2"
- width="4"
- id="rect4160"
- style="opacity:1;fill:#a5b7f9;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
- <rect
- style="opacity:1;fill:#a5b7f9;fill-opacity:0.98823529;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- id="rect4162"
- width="2"
- height="2"
- x="9"
- y="1048.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_zoom.svg b/editor/icons/source/icon_zoom.svg
deleted file mode 100644
index de94ed9614..0000000000
--- a/editor/icons/source/icon_zoom.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.92.1 r"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_zoom.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_zoom.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="9.872627"
- inkscape:cy="8.8162049"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1600"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
- d="M 6 1 A 5 5 0 0 0 1 6 A 5 5 0 0 0 6 11 A 5 5 0 0 0 8.7519531 10.166016 L 13.070312 14.484375 L 14.484375 13.070312 L 10.166016 8.7519531 A 5 5 0 0 0 10.576172 8 L 10 8 L 10 6 L 9 6 A 3 3 0 0 1 6 9 A 3 3 0 0 1 3 6 A 3 3 0 0 1 6 3 A 3 3 0 0 1 8 3.7675781 L 8 2 L 8.9902344 2 A 5 5 0 0 0 6 1 z M 11 1 L 11 3 L 9 3 L 9 5 L 11 5 L 11 7 L 13 7 L 13 5 L 15 5 L 15 3 L 13 3 L 13 1 L 11 1 z "
- transform="translate(0,1036.3622)"
- id="path4135" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_zoom_less.svg b/editor/icons/source/icon_zoom_less.svg
deleted file mode 100644
index 970b1954bb..0000000000
--- a/editor/icons/source/icon_zoom_less.svg
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_zoom_less.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32.000001"
- inkscape:cx="3.0997291"
- inkscape:cy="9.8345523"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4137"
- width="14"
- height="1.9999478"
- x="1"
- y="1043.3622" />
- </g>
-</svg>
diff --git a/editor/icons/source/icon_zoom_more.svg b/editor/icons/source/icon_zoom_more.svg
deleted file mode 100644
index 87acdfb021..0000000000
--- a/editor/icons/source/icon_zoom_more.svg
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_zoom.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:docname="icon_zoom_more.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="3.7772222"
- inkscape:cy="13.690414"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1018"
- inkscape:window-x="-8"
- inkscape:window-y="-8"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <g
- id="layer1-6"
- inkscape:label="Capa 1"
- transform="translate(-201.5751,205.0256)">
- <g
- inkscape:label="Layer 1"
- id="layer1-0-4"
- transform="matrix(48.459085,0,0,53.967813,-126.63031,-55835.691)">
- <g
- transform="translate(0.51853114,-0.01988754)"
- id="g4182-8">
- <rect
- style="fill:#e0e0e0;fill-opacity:0.99607843"
- id="rect4167"
- width="0.042994563"
- height="0.26204652"
- x="6.3978949"
- y="1050.0524"
- rx="0"
- ry="0" />
- <rect
- ry="0"
- rx="0"
- y="1050.165"
- x="6.2806396"
- height="0.040943757"
- width="0.28011176"
- id="rect4169-6"
- style="fill:#e0e0e0;fill-opacity:0.99607843" />
- </g>
- </g>
- </g>
- </g>
-</svg>
diff --git a/editor/icons/source/icon_zoom_reset.svg b/editor/icons/source/icon_zoom_reset.svg
deleted file mode 100644
index a82f93dfea..0000000000
--- a/editor/icons/source/icon_zoom_reset.svg
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- viewBox="0 0 16 16"
- id="svg2"
- version="1.1"
- inkscape:version="0.91 r13725"
- inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_add_track.png"
- inkscape:export-xdpi="45"
- inkscape:export-ydpi="45"
- sodipodi:docname="icon_zoom_reset.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="16.000001"
- inkscape:cx="-8.8962151"
- inkscape:cy="11.998138"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="true"
- units="px"
- inkscape:snap-bbox="true"
- inkscape:bbox-paths="true"
- inkscape:bbox-nodes="true"
- inkscape:snap-bbox-edge-midpoints="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-object-midpoints="true"
- inkscape:snap-center="true"
- inkscape:window-width="1920"
- inkscape:window-height="1016"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid3336" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4137"
- width="2"
- height="14.000017"
- x="3"
- y="1037.3622" />
- <rect
- y="1037.3622"
- x="12"
- height="14.000017"
- width="2"
- id="rect4156"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <rect
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4160"
- width="2"
- height="1.9999995"
- x="7"
- y="1046.3622" />
- <rect
- y="1040.3622"
- x="7"
- height="1.9999995"
- width="2"
- id="rect4162"
- style="fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 1,1040.3622 2,-3 2,0 0,3 z"
- id="path4164"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="ccccc" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4166"
- d="m 10,1040.3622 2,-3 2,0 0,3 z"
- style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
-</svg>
diff --git a/editor/icons/xpmfix.sh b/editor/icons/xpmfix.sh
deleted file mode 100755
index a24dede3c9..0000000000
--- a/editor/icons/xpmfix.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-sed -i 's/static char/static const char/g' *.xpm
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index 83b94dbf9b..b1991d755b 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -41,6 +41,8 @@
#include "scene/animation/animation_player.h"
#include "scene/resources/animation.h"
#include "scene/resources/packed_scene.h"
+#include "scene/resources/surface_tool.h"
+
#include <iostream>
struct ColladaImport {
@@ -87,8 +89,8 @@ struct ColladaImport {
Error _create_scene_skeletons(Collada::Node *p_node);
Error _create_scene(Collada::Node *p_node, Spatial *p_parent);
Error _create_resources(Collada::Node *p_node);
- Error _create_material(const String &p_material);
- Error _create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_data, const Collada::MorphControllerData *p_morph_data, Vector<Ref<ArrayMesh> > p_morph_meshes = Vector<Ref<ArrayMesh> >(), bool p_for_morph = false, bool p_use_mesh_material = false);
+ Error _create_material(const String &p_target);
+ Error _create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<ArrayMesh> > p_morph_meshes = Vector<Ref<ArrayMesh> >(), bool p_for_morph = false, bool p_use_mesh_material = false);
Error load(const String &p_path, int p_flags, bool p_force_make_tangents = false);
void _fix_param_animation_tracks();
void create_animation(int p_clip, bool p_make_tracks_in_all_bones, bool p_import_value_tracks);
@@ -320,7 +322,7 @@ Error ColladaImport::_create_scene(Collada::Node *p_node, Spatial *p_parent) {
} else {
//mesh since nothing else
node = memnew(MeshInstance);
- node->cast_to<MeshInstance>()->set_flag(GeometryInstance::FLAG_USE_BAKED_LIGHT, true);
+ Object::cast_to<MeshInstance>(node)->set_flag(GeometryInstance::FLAG_USE_BAKED_LIGHT, true);
}
} break;
case Collada::Node::TYPE_SKELETON: {
@@ -591,7 +593,7 @@ static void _generate_tangents_and_binormals(const PoolVector<int> &p_indices, c
}
}
-Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<ArrayMesh> > p_morph_meshes, bool p_for_morph, bool p_use_mesh_material) {
+Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<ArrayMesh> > p_morph_meshes, bool p_for_morph, bool p_use_mesh_material) {
bool local_xform_mirror = p_local_xform.basis.determinant() < 0;
@@ -714,35 +716,35 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
bool has_weights = false;
- if (skin_controller) {
+ if (p_skin_controller) {
const Collada::SkinControllerData::Source *weight_src = NULL;
int weight_ofs = 0;
- if (skin_controller->weights.sources.has("WEIGHT")) {
+ if (p_skin_controller->weights.sources.has("WEIGHT")) {
- String weight_id = skin_controller->weights.sources["WEIGHT"].source;
- weight_ofs = skin_controller->weights.sources["WEIGHT"].offset;
- if (skin_controller->sources.has(weight_id)) {
+ String weight_id = p_skin_controller->weights.sources["WEIGHT"].source;
+ weight_ofs = p_skin_controller->weights.sources["WEIGHT"].offset;
+ if (p_skin_controller->sources.has(weight_id)) {
- weight_src = &skin_controller->sources[weight_id];
+ weight_src = &p_skin_controller->sources[weight_id];
}
}
int joint_ofs = 0;
- if (skin_controller->weights.sources.has("JOINT")) {
+ if (p_skin_controller->weights.sources.has("JOINT")) {
- joint_ofs = skin_controller->weights.sources["JOINT"].offset;
+ joint_ofs = p_skin_controller->weights.sources["JOINT"].offset;
}
//should be OK, given this was pre-checked.
int index_ofs = 0;
- int wstride = skin_controller->weights.sources.size();
- for (int w_i = 0; w_i < skin_controller->weights.sets.size(); w_i++) {
+ int wstride = p_skin_controller->weights.sources.size();
+ for (int w_i = 0; w_i < p_skin_controller->weights.sets.size(); w_i++) {
- int amount = skin_controller->weights.sets[w_i];
+ int amount = p_skin_controller->weights.sets[w_i];
Vector<Collada::Vertex::Weight> weights;
@@ -751,13 +753,13 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
Collada::Vertex::Weight w;
int read_from = index_ofs + a_i * wstride;
- ERR_FAIL_INDEX_V(read_from + wstride - 1, skin_controller->weights.indices.size(), ERR_INVALID_DATA);
- int weight_index = skin_controller->weights.indices[read_from + weight_ofs];
+ ERR_FAIL_INDEX_V(read_from + wstride - 1, p_skin_controller->weights.indices.size(), ERR_INVALID_DATA);
+ int weight_index = p_skin_controller->weights.indices[read_from + weight_ofs];
ERR_FAIL_INDEX_V(weight_index, weight_src->array.size(), ERR_INVALID_DATA);
w.weight = weight_src->array[weight_index];
- int bone_index = skin_controller->weights.indices[read_from + joint_ofs];
+ int bone_index = p_skin_controller->weights.indices[read_from + joint_ofs];
if (bone_index == -1)
continue; //ignore this weight (refers to bind shape)
ERR_FAIL_INDEX_V(bone_index, bone_remap.size(), ERR_INVALID_DATA);
@@ -867,7 +869,6 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
int normal_pos = (normal_src->stride ? normal_src->stride : 3) * p.indices[src + normal_ofs];
ERR_FAIL_INDEX_V(normal_pos, normal_src->array.size(), ERR_INVALID_DATA);
vertex.normal = Vector3(normal_src->array[normal_pos + 0], normal_src->array[normal_pos + 1], normal_src->array[normal_pos + 2]);
- vertex.normal.snap(Vector3(0.001, 0.001, 0.001));
if (tangent_src && binormal_src) {
@@ -990,18 +991,6 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
}
}
- PoolVector<int> index_array;
- index_array.resize(indices_list.size());
- PoolVector<int>::Write index_arrayw = index_array.write();
-
- int iidx = 0;
- for (List<int>::Element *F = indices_list.front(); F; F = F->next()) {
-
- index_arrayw[iidx++] = F->get();
- }
-
- index_arrayw = PoolVector<int>::Write();
-
/*****************/
/* MAKE SURFACES */
/*****************/
@@ -1010,9 +999,6 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
Ref<SpatialMaterial> material;
- //find material
- Mesh::PrimitiveType primitive = Mesh::PRIMITIVE_TRIANGLES;
-
{
if (p_material_map.has(p.material)) {
@@ -1030,391 +1016,89 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
}
}
- PoolVector<Vector3> final_vertex_array;
- PoolVector<Vector3> final_normal_array;
- PoolVector<float> final_tangent_array;
- PoolVector<Color> final_color_array;
- PoolVector<Vector3> final_uv_array;
- PoolVector<Vector3> final_uv2_array;
- PoolVector<int> final_bone_array;
- PoolVector<float> final_weight_array;
-
- uint32_t final_format = 0;
-
- //create format
- final_format = Mesh::ARRAY_FORMAT_VERTEX | Mesh::ARRAY_FORMAT_INDEX;
+ Ref<SurfaceTool> surftool;
+ surftool.instance();
+ surftool->begin(Mesh::PRIMITIVE_TRIANGLES);
- if (normal_src) {
- final_format |= Mesh::ARRAY_FORMAT_NORMAL;
- if (uv_src && binormal_src && tangent_src) {
- final_format |= Mesh::ARRAY_FORMAT_TANGENT;
+ for (int k = 0; k < vertex_array.size(); k++) {
+ if (normal_src) {
+ surftool->add_normal(vertex_array[k].normal);
+ if (binormal_src && tangent_src) {
+ surftool->add_tangent(vertex_array[k].tangent);
+ }
}
- }
-
- if (color_src)
- final_format |= Mesh::ARRAY_FORMAT_COLOR;
- if (uv_src)
- final_format |= Mesh::ARRAY_FORMAT_TEX_UV;
- if (uv2_src)
- final_format |= Mesh::ARRAY_FORMAT_TEX_UV2;
-
- if (has_weights) {
- final_format |= Mesh::ARRAY_FORMAT_WEIGHTS;
- final_format |= Mesh::ARRAY_FORMAT_BONES;
- }
-
- //set arrays
-
- int vlen = vertex_array.size();
- { //vertices
-
- PoolVector<Vector3> varray;
- varray.resize(vertex_array.size());
-
- PoolVector<Vector3>::Write varrayw = varray.write();
-
- for (int k = 0; k < vlen; k++)
- varrayw[k] = vertex_array[k].vertex;
-
- varrayw = PoolVector<Vector3>::Write();
- final_vertex_array = varray;
- }
-
- if (uv_src) { //compute uv first, may be needed for computing tangent/bionrmal
- PoolVector<Vector3> uvarray;
- uvarray.resize(vertex_array.size());
- PoolVector<Vector3>::Write uvarrayw = uvarray.write();
-
- for (int k = 0; k < vlen; k++) {
- uvarrayw[k] = vertex_array[k].uv;
+ if (uv_src) {
+ surftool->add_uv(Vector2(vertex_array[k].uv.x, vertex_array[k].uv.y));
}
-
- uvarrayw = PoolVector<Vector3>::Write();
- final_uv_array = uvarray;
- }
-
- if (uv2_src) { //compute uv first, may be needed for computing tangent/bionrmal
- PoolVector<Vector3> uv2array;
- uv2array.resize(vertex_array.size());
- PoolVector<Vector3>::Write uv2arrayw = uv2array.write();
-
- for (int k = 0; k < vlen; k++) {
- uv2arrayw[k] = vertex_array[k].uv2;
+ if (uv2_src) {
+ surftool->add_uv2(Vector2(vertex_array[k].uv2.x, vertex_array[k].uv2.y));
}
-
- uv2arrayw = PoolVector<Vector3>::Write();
- final_uv2_array = uv2array;
- }
-
- if (normal_src) {
- PoolVector<Vector3> narray;
- narray.resize(vertex_array.size());
- PoolVector<Vector3>::Write narrayw = narray.write();
-
- for (int k = 0; k < vlen; k++) {
- narrayw[k] = vertex_array[k].normal;
+ if (color_src) {
+ surftool->add_color(vertex_array[k].color);
}
- narrayw = PoolVector<Vector3>::Write();
- final_normal_array = narray;
-
- /*
- PoolVector<Vector3> altnaray;
- _generate_normals(index_array,final_vertex_array,altnaray);
-
- for(int i=0;i<altnaray.size();i++)
- print_line(rtos(altnaray[i].dot(final_normal_array[i])));
- */
-
- } else if (primitive == Mesh::PRIMITIVE_TRIANGLES) {
- //generate normals (even if unused later)
-
- _generate_normals(index_array, final_vertex_array, final_normal_array);
- if (OS::get_singleton()->is_stdout_verbose())
- print_line("Collada: Triangle mesh lacks normals, so normals were generated.");
- final_format |= Mesh::ARRAY_FORMAT_NORMAL;
- }
-
- if (final_normal_array.size() && uv_src && binormal_src && tangent_src && !force_make_tangents) {
+ if (has_weights) {
+ Vector<float> weights;
+ Vector<int> bones;
+ weights.resize(VS::ARRAY_WEIGHTS_SIZE);
+ bones.resize(VS::ARRAY_WEIGHTS_SIZE);
+ //float sum=0.0;
+ for (int l = 0; l < VS::ARRAY_WEIGHTS_SIZE; l++) {
+ if (l < vertex_array[k].weights.size()) {
+ weights[l] = vertex_array[k].weights[l].weight;
+ bones[l] = vertex_array[k].weights[l].bone_idx;
+ //sum += vertex_array[k].weights[l].weight;
+ } else {
- PoolVector<real_t> tarray;
- tarray.resize(vertex_array.size() * 4);
- PoolVector<real_t>::Write tarrayw = tarray.write();
+ weights[l] = 0;
+ bones[l] = 0;
+ }
+ }
- for (int k = 0; k < vlen; k++) {
- tarrayw[k * 4 + 0] = vertex_array[k].tangent.normal.x;
- tarrayw[k * 4 + 1] = vertex_array[k].tangent.normal.y;
- tarrayw[k * 4 + 2] = vertex_array[k].tangent.normal.z;
- tarrayw[k * 4 + 3] = vertex_array[k].tangent.d;
+ surftool->add_bones(bones);
+ surftool->add_weights(weights);
}
- tarrayw = PoolVector<real_t>::Write();
-
- final_tangent_array = tarray;
- } else if (final_normal_array.size() && primitive == Mesh::PRIMITIVE_TRIANGLES && final_uv_array.size() && (force_make_tangents || (material.is_valid()))) {
- //if this uses triangles, there are uvs and the material is using a normalmap, generate tangents and binormals, because they WILL be needed
- //generate binormals/tangents
- _generate_tangents_and_binormals(index_array, final_vertex_array, final_uv_array, final_normal_array, final_tangent_array);
- final_format |= Mesh::ARRAY_FORMAT_TANGENT;
- if (OS::get_singleton()->is_stdout_verbose())
- print_line("Collada: Triangle mesh lacks tangents (And normalmap was used), so tangents were generated.");
+ surftool->add_vertex(vertex_array[k].vertex);
}
- if (color_src) {
- PoolVector<Color> colorarray;
- colorarray.resize(vertex_array.size());
- PoolVector<Color>::Write colorarrayw = colorarray.write();
-
- for (int k = 0; k < vlen; k++) {
- colorarrayw[k] = vertex_array[k].color;
- }
-
- colorarrayw = PoolVector<Color>::Write();
-
- final_color_array = colorarray;
+ for (List<int>::Element *E = indices_list.front(); E; E = E->next()) {
+ surftool->add_index(E->get());
}
- if (has_weights) {
- PoolVector<float> weightarray;
- PoolVector<int> bonearray;
-
- weightarray.resize(vertex_array.size() * 4);
- PoolVector<float>::Write weightarrayw = weightarray.write();
- bonearray.resize(vertex_array.size() * 4);
- PoolVector<int>::Write bonearrayw = bonearray.write();
-
- for (int k = 0; k < vlen; k++) {
- float sum = 0;
-
- for (int l = 0; l < VS::ARRAY_WEIGHTS_SIZE; l++) {
- if (l < vertex_array[k].weights.size()) {
- weightarrayw[k * VS::ARRAY_WEIGHTS_SIZE + l] = vertex_array[k].weights[l].weight;
- sum += weightarrayw[k * VS::ARRAY_WEIGHTS_SIZE + l];
- bonearrayw[k * VS::ARRAY_WEIGHTS_SIZE + l] = int(vertex_array[k].weights[l].bone_idx);
- //COLLADA_PRINT(itos(k)+": "+rtos(bonearrayw[k*VS::ARRAY_WEIGHTS_SIZE+l])+":"+rtos(weightarray[k*VS::ARRAY_WEIGHTS_SIZE+l]));
- } else {
-
- weightarrayw[k * VS::ARRAY_WEIGHTS_SIZE + l] = 0;
- bonearrayw[k * VS::ARRAY_WEIGHTS_SIZE + l] = 0;
- }
- }
- /*
- if (sum<0.8)
- COLLADA_PRINT("ERROR SUMMING INDEX "+itos(k)+" had weights: "+itos(vertex_array[k].weights.size()));
- */
- }
+ if (!normal_src) {
+ //should always be normals
+ surftool->generate_normals();
+ }
- weightarrayw = PoolVector<float>::Write();
- bonearrayw = PoolVector<int>::Write();
+ if ((!binormal_src || !tangent_src) && normal_src && uv_src && force_make_tangents) {
- final_weight_array = weightarray;
- final_bone_array = bonearray;
+ surftool->generate_tangents();
}
////////////////////////////
// FINALLY CREATE SUFRACE //
////////////////////////////
- Array d;
+ Array d = surftool->commit_to_arrays();
d.resize(VS::ARRAY_MAX);
- d[Mesh::ARRAY_INDEX] = index_array;
- d[Mesh::ARRAY_VERTEX] = final_vertex_array;
-
- if (final_normal_array.size())
- d[Mesh::ARRAY_NORMAL] = final_normal_array;
- if (final_tangent_array.size())
- d[Mesh::ARRAY_TANGENT] = final_tangent_array;
- if (final_uv_array.size())
- d[Mesh::ARRAY_TEX_UV] = final_uv_array;
- if (final_uv2_array.size())
- d[Mesh::ARRAY_TEX_UV2] = final_uv2_array;
- if (final_color_array.size())
- d[Mesh::ARRAY_COLOR] = final_color_array;
- if (final_weight_array.size())
- d[Mesh::ARRAY_WEIGHTS] = final_weight_array;
- if (final_bone_array.size())
- d[Mesh::ARRAY_BONES] = final_bone_array;
-
Array mr;
-////////////////////////////
-// THEN THE MORPH TARGETS //
-////////////////////////////
-#if 0
- if (p_morph_data) {
-
- //add morphie target
- ERR_FAIL_COND_V( !p_morph_data->targets.has("MORPH_TARGET"), ERR_INVALID_DATA );
- String mt = p_morph_data->targets["MORPH_TARGET"];
- ERR_FAIL_COND_V( !p_morph_data->sources.has(mt), ERR_INVALID_DATA);
- int morph_targets = p_morph_data->sources[mt].sarray.size();
- mr.resize(morph_targets);
-
- for(int j=0;j<morph_targets;j++) {
-
- Array mrt;
- mrt.resize(VS::ARRAY_MAX);
-
- String target = p_morph_data->sources[mt].sarray[j];
- ERR_FAIL_COND_V( !collada.state.mesh_data_map.has(target), ERR_INVALID_DATA );
- String name = collada.state.mesh_data_map[target].name;
- Collada::MeshData &md = collada.state.mesh_data_map[target];
-
- // collada in itself supports morphing everything. However, the spec is unclear and no examples or exporters that
- // morph anything but "POSITIONS" seem to exit. Because of this, normals and binormals/tangents have to be regenerated here,
- // which may result in inaccurate (but most of the time good enough) results.
-
- PoolVector<Vector3> vertices;
- vertices.resize(vlen);
-
- ERR_FAIL_COND_V( md.vertices.size() != 1, ERR_INVALID_DATA);
- String vertex_src_id=md.vertices.front()->key();
- ERR_FAIL_COND_V(!md.vertices[vertex_src_id].sources.has("POSITION"),ERR_INVALID_DATA);
- String position_src_id = md.vertices[vertex_src_id].sources["POSITION"];
-
- ERR_FAIL_COND_V(!md.sources.has(position_src_id),ERR_INVALID_DATA);
-
- const Collada::MeshData::Source *m=&md.sources[position_src_id];
-
- ERR_FAIL_COND_V( m->array.size() != vertex_src->array.size(), ERR_INVALID_DATA);
- int stride=m->stride;
- if (stride==0)
- stride=3;
-
-
- //read vertices from morph target
- PoolVector<Vector3>::Write vertw = vertices.write();
-
- for(int m_i=0;m_i<m->array.size()/stride;m_i++) {
-
- int pos = m_i*stride;
- Vector3 vtx( m->array[pos+0], m->array[pos+1], m->array[pos+2] );
-
-#ifndef NO_UP_AXIS_SWAP
- if (collada.state.up_axis==Vector3::AXIS_Z) {
-
- SWAP( vtx.z, vtx.y );
- vtx.z = -vtx.z;
-
- }
-#endif
-
- Collada::Vertex vertex;
- vertex.vertex=vtx;
- vertex.fix_unit_scale(collada);
- vtx=vertex.vertex;
-
- vtx = p_local_xform.xform(vtx);
-
-
- if (vertex_map.has(m_i)) { //vertex may no longer be here, don't bother converting
-
-
- for (Set<int> ::Element *E=vertex_map[m_i].front() ; E; E=E->next() ) {
-
- vertw[E->get()]=vtx;
- }
- }
- }
-
-
- //vertices are in place, now generate everything else
- vertw = PoolVector<Vector3>::Write();
- PoolVector<Vector3> normals;
- PoolVector<float> tangents;
- print_line("vertex source id: "+vertex_src_id);
- if(md.vertices[vertex_src_id].sources.has("NORMAL")){
- //has normals
- normals.resize(vlen);
- //std::cout << "has normals" << std::endl;
- String normal_src_id = md.vertices[vertex_src_id].sources["NORMAL"];
- //std::cout << "normals source: "<< normal_src_id.utf8().get_data() <<std::endl;
- ERR_FAIL_COND_V(!md.sources.has(normal_src_id),ERR_INVALID_DATA);
-
- const Collada::MeshData::Source *m=&md.sources[normal_src_id];
-
- ERR_FAIL_COND_V( m->array.size() != vertex_src->array.size(), ERR_INVALID_DATA);
- int stride=m->stride;
- if (stride==0)
- stride=3;
-
-
- //read normals from morph target
- PoolVector<Vector3>::Write vertw = normals.write();
-
- for(int m_i=0;m_i<m->array.size()/stride;m_i++) {
-
- int pos = m_i*stride;
- Vector3 vtx( m->array[pos+0], m->array[pos+1], m->array[pos+2] );
-
-#ifndef NO_UP_AXIS_SWAP
- if (collada.state.up_axis==Vector3::AXIS_Z) {
-
- SWAP( vtx.z, vtx.y );
- vtx.z = -vtx.z;
-
- }
-#endif
-
- Collada::Vertex vertex;
- vertex.vertex=vtx;
- vertex.fix_unit_scale(collada);
- vtx=vertex.vertex;
-
- vtx = p_local_xform.xform(vtx);
-
-
- if (vertex_map.has(m_i)) { //vertex may no longer be here, don't bother converting
-
-
- for (Set<int> ::Element *E=vertex_map[m_i].front() ; E; E=E->next() ) {
-
- vertw[E->get()]=vtx;
- }
- }
- }
-
- print_line("using built-in normals");
- }else{
- print_line("generating normals");
- _generate_normals(index_array,vertices,normals);//no normals
- }
- if (final_tangent_array.size() && final_uv_array.size()) {
-
- _generate_tangents_and_binormals(index_array,vertices,final_uv_array,normals,tangents);
-
- }
-
- mrt[Mesh::ARRAY_VERTEX]=vertices;
-
- mrt[Mesh::ARRAY_NORMAL]=normals;
- if (tangents.size())
- mrt[Mesh::ARRAY_TANGENT]=tangents;
- if (final_uv_array.size())
- mrt[Mesh::ARRAY_TEX_UV]=final_uv_array;
- if (final_uv2_array.size())
- mrt[Mesh::ARRAY_TEX_UV2]=final_uv2_array;
- if (final_color_array.size())
- mrt[Mesh::ARRAY_COLOR]=final_color_array;
-
- mr[j]=mrt;
-
- }
-
- }
+ ////////////////////////////
+ // THEN THE MORPH TARGETS //
+ ////////////////////////////
-#endif
for (int mi = 0; mi < p_morph_meshes.size(); mi++) {
//print_line("want surface "+itos(mi)+" has "+itos(p_morph_meshes[mi]->get_surface_count()));
Array a = p_morph_meshes[mi]->surface_get_arrays(surface);
//add valid weight and bone arrays if they exist, TODO check if they are unique to shape (generally not)
- if (final_weight_array.size())
- a[Mesh::ARRAY_WEIGHTS] = final_weight_array;
- if (final_bone_array.size())
- a[Mesh::ARRAY_BONES] = final_bone_array;
+ if (has_weights) {
+ a[Mesh::ARRAY_WEIGHTS] = d[Mesh::ARRAY_WEIGHTS];
+ a[Mesh::ARRAY_BONES] = d[Mesh::ARRAY_BONES];
+ }
a[Mesh::ARRAY_INDEX] = Variant();
//a.resize(Mesh::ARRAY_MAX); //no need for index
@@ -1448,9 +1132,9 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
Spatial *node = node_map[p_node->id].node;
Collada::NodeGeometry *ng = static_cast<Collada::NodeGeometry *>(p_node);
- if (node->cast_to<Path>()) {
+ if (Object::cast_to<Path>(node)) {
- Path *path = node->cast_to<Path>();
+ Path *path = Object::cast_to<Path>(node);
String curve = ng->source;
@@ -1523,11 +1207,11 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
}
}
- if (node->cast_to<MeshInstance>()) {
+ if (Object::cast_to<MeshInstance>(node)) {
Collada::NodeGeometry *ng = static_cast<Collada::NodeGeometry *>(p_node);
- MeshInstance *mi = node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(node);
ERR_FAIL_COND_V(!mi, ERR_BUG);
@@ -1561,7 +1245,7 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
}
ERR_FAIL_COND_V(!node_map.has(skname), ERR_INVALID_DATA);
NodeMap nmsk = node_map[skname];
- Skeleton *sk = nmsk.node->cast_to<Skeleton>();
+ Skeleton *sk = Object::cast_to<Skeleton>(nmsk.node);
ERR_FAIL_COND_V(!sk, ERR_INVALID_DATA);
ERR_FAIL_COND_V(!skeleton_bone_map.has(sk), ERR_INVALID_DATA);
Map<String, int> &bone_remap_map = skeleton_bone_map[sk];
@@ -1584,14 +1268,12 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
apply_xform = Transform();
}
- Collada::SkinControllerData::Source *joint_src = NULL;
-
ERR_FAIL_COND_V(!skin->weights.sources.has("JOINT"), ERR_INVALID_DATA);
String joint_id = skin->weights.sources["JOINT"].source;
ERR_FAIL_COND_V(!skin->sources.has(joint_id), ERR_INVALID_DATA);
- joint_src = &skin->sources[joint_id];
+ Collada::SkinControllerData::Source *joint_src = &skin->sources[joint_id];
bone_remap.resize(joint_src->sarray.size());
@@ -2094,7 +1776,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
if (nm.bone >= 0) {
//make bone transform relative to rest (in case of skeleton)
- Skeleton *sk = nm.node->cast_to<Skeleton>();
+ Skeleton *sk = Object::cast_to<Skeleton>(nm.node);
if (sk) {
xform = sk->get_bone_rest(nm.bone).affine_inverse() * xform;
@@ -2317,7 +1999,6 @@ Ref<Animation> EditorSceneImporterCollada::import_animation(const String &p_path
if (state.animations.size() == 0)
return Ref<Animation>();
Ref<Animation> anim = state.animations[0];
- anim = state.animations[0];
print_line("Anim Load OK");
String base = p_path.get_basename().to_lower();
if (p_flags & IMPORT_ANIMATION_DETECT_LOOP) {
diff --git a/editor/import/editor_import_collada.h b/editor/import/editor_import_collada.h
index 2c60916d52..865a72739f 100644
--- a/editor/import/editor_import_collada.h
+++ b/editor/import/editor_import_collada.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/editor_import_plugin.cpp b/editor/import/editor_import_plugin.cpp
index 4ebbcb1610..8af4ab63c7 100644
--- a/editor/import/editor_import_plugin.cpp
+++ b/editor/import/editor_import_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/editor_import_plugin.h b/editor/import/editor_import_plugin.h
index b60813db61..08d6de5531 100644
--- a/editor/import/editor_import_plugin.h
+++ b/editor/import/editor_import_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp
index 1c42bcef8a..2f03e72851 100644
--- a/editor/import/editor_scene_importer_gltf.cpp
+++ b/editor/import/editor_scene_importer_gltf.cpp
@@ -1216,7 +1216,7 @@ Error EditorSceneImporterGLTF::_parse_materials(GLTFState &state) {
if (bct.has("index")) {
Ref<Texture> t = _get_texture(state, bct["index"]);
material->set_texture(SpatialMaterial::TEXTURE_METALLIC, t);
- material->set_metallic_texture_channel(SpatialMaterial::TEXTURE_CHANNEL_RED);
+ material->set_metallic_texture_channel(SpatialMaterial::TEXTURE_CHANNEL_BLUE);
material->set_texture(SpatialMaterial::TEXTURE_ROUGHNESS, t);
material->set_roughness_texture_channel(SpatialMaterial::TEXTURE_CHANNEL_GREEN);
if (!mr.has("metallicFactor")) {
@@ -1243,6 +1243,7 @@ Error EditorSceneImporterGLTF::_parse_materials(GLTFState &state) {
Dictionary bct = d["occlusionTexture"];
if (bct.has("index")) {
material->set_texture(SpatialMaterial::TEXTURE_AMBIENT_OCCLUSION, _get_texture(state, bct["index"]));
+ material->set_ao_texture_channel(SpatialMaterial::TEXTURE_CHANNEL_RED);
material->set_feature(SpatialMaterial::FEATURE_AMBIENT_OCCLUSION, true);
}
}
diff --git a/editor/import/resource_importer_csv_translation.cpp b/editor/import/resource_importer_csv_translation.cpp
index 9214b8f45e..4bbf5ba316 100644
--- a/editor/import/resource_importer_csv_translation.cpp
+++ b/editor/import/resource_importer_csv_translation.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -73,19 +73,26 @@ String ResourceImporterCSVTranslation::get_preset_name(int p_idx) const {
void ResourceImporterCSVTranslation::get_import_options(List<ImportOption> *r_options, int p_preset) const {
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "compress"), true));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "delimiter", PROPERTY_HINT_ENUM, "Comma,Semicolon,Tab"), 0));
}
Error ResourceImporterCSVTranslation::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files) {
bool compress = p_options["compress"];
+
+ String delimiter;
+ switch ((int)p_options["delimiter"]) {
+ case 0: delimiter = ","; break;
+ case 1: delimiter = ";"; break;
+ case 2: delimiter = "\t"; break;
+ }
+
FileAccessRef f = FileAccess::open(p_source_file, FileAccess::READ);
ERR_FAIL_COND_V(!f, ERR_INVALID_PARAMETER);
- Vector<String> line = f->get_csv_line();
- if (line.size() <= 1) {
- return ERR_PARSE_ERROR;
- }
+ Vector<String> line = f->get_csv_line(delimiter);
+ ERR_FAIL_COND_V(line.size() <= 1, ERR_PARSE_ERROR);
Vector<String> locales;
Vector<Ref<Translation> > translations;
@@ -93,9 +100,8 @@ Error ResourceImporterCSVTranslation::import(const String &p_source_file, const
for (int i = 1; i < line.size(); i++) {
String locale = line[i];
- if (!TranslationServer::is_locale_valid(locale)) {
- return ERR_PARSE_ERROR;
- }
+ ERR_EXPLAIN("Error importing CSV translation: '" + locale + "' is not a valid locale");
+ ERR_FAIL_COND_V(!TranslationServer::is_locale_valid(locale), ERR_PARSE_ERROR);
locales.push_back(locale);
Ref<Translation> translation;
@@ -104,7 +110,7 @@ Error ResourceImporterCSVTranslation::import(const String &p_source_file, const
translations.push_back(translation);
}
- line = f->get_csv_line();
+ line = f->get_csv_line(delimiter);
while (line.size() == locales.size() + 1) {
@@ -116,7 +122,7 @@ Error ResourceImporterCSVTranslation::import(const String &p_source_file, const
}
}
- line = f->get_csv_line();
+ line = f->get_csv_line(delimiter);
}
for (int i = 0; i < translations.size(); i++) {
diff --git a/editor/import/resource_importer_csv_translation.h b/editor/import/resource_importer_csv_translation.h
index 748c6264df..8919f4ed33 100644
--- a/editor/import/resource_importer_csv_translation.h
+++ b/editor/import/resource_importer_csv_translation.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/resource_importer_obj.cpp b/editor/import/resource_importer_obj.cpp
index 8f86e64cf2..6a936649c3 100644
--- a/editor/import/resource_importer_obj.cpp
+++ b/editor/import/resource_importer_obj.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/resource_importer_obj.h b/editor/import/resource_importer_obj.h
index c8285ce6c9..247d58e148 100644
--- a/editor/import/resource_importer_obj.h
+++ b/editor/import/resource_importer_obj.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp
index ae89dfd77f..7fa76713f3 100644
--- a/editor/import/resource_importer_scene.cpp
+++ b/editor/import/resource_importer_scene.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -104,7 +104,7 @@ bool ResourceImporterScene::get_option_visibility(const String &p_option, const
}
}
- if (p_option == "materials/keep_files" && int(p_options["materials/storage"]) == 0) {
+ if (p_option == "materials/keep_on_reimport" && int(p_options["materials/storage"]) == 0) {
return false;
}
@@ -171,41 +171,10 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
memdelete(p_node);
return NULL;
}
-#if 0
- if (p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- bool bb = false;
-
- if ((_teststr(name, "bb"))) {
- bb = true;
- } else if (mi->get_mesh().is_valid() && (_teststr(mi->get_mesh()->get_name(), "bb"))) {
- bb = true;
- }
- if (bb) {
- mi->set_flag(GeometryInstance::FLAG_BILLBOARD, true);
- if (mi->get_mesh().is_valid()) {
+ if (Object::cast_to<MeshInstance>(p_node)) {
- Ref<ArrayMesh> m = mi->get_mesh();
- for (int i = 0; i < m->get_surface_count(); i++) {
-
- Ref<SpatialMaterial> fm = m->surface_get_material(i);
- if (fm.is_valid()) {
- //fm->set_flag(Material::FLAG_UNSHADED,true);
- //fm->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- //fm->set_depth_draw_mode(Material::DEPTH_DRAW_NEVER);
- //fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- }
- }
- }
- }
- }
-#endif
- if (p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_node);
Ref<ArrayMesh> m = mi->get_mesh();
@@ -232,9 +201,9 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
}
}
- if (p_node->cast_to<AnimationPlayer>()) {
+ if (Object::cast_to<AnimationPlayer>(p_node)) {
//remove animations referencing non-importable nodes
- AnimationPlayer *ap = p_node->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
List<StringName> anims;
ap->get_animation_list(&anims);
@@ -256,133 +225,24 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
}
}
}
-#if 0
- if (p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- String str;
-
- if ((_teststr(name, "imp"))) {
- str = name;
- } else if (mi->get_mesh().is_valid() && (_teststr(mi->get_mesh()->get_name(), "imp"))) {
- str = mi->get_mesh()->get_name();
- }
-
- if (p_node->get_parent() && p_node->get_parent()->cast_to<MeshInstance>()) {
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- MeshInstance *mip = p_node->get_parent()->cast_to<MeshInstance>();
- String d = str.substr(str.find("imp") + 3, str.length());
- if (d != "") {
- if ((d[0] < '0' || d[0] > '9'))
- d = d.substr(1, d.length());
- if (d.length() && d[0] >= '0' && d[0] <= '9') {
- float dist = d.to_double();
- mi->set_flag(GeometryInstance::FLAG_BILLBOARD, true);
- mi->set_flag(GeometryInstance::FLAG_BILLBOARD_FIX_Y, true);
- //mi->set_draw_range_begin(dist);
- //mi->set_draw_range_end(100000);
-
- //mip->set_draw_range_begin(0);
- //mip->set_draw_range_end(dist);
-
- if (mi->get_mesh().is_valid()) {
-
- Ref<ArrayMesh> m = mi->get_mesh();
- for (int i = 0; i < m->get_surface_count(); i++) {
-
- Ref<SpatialMaterial> fm = m->surface_get_material(i);
- if (fm.is_valid()) {
- //fm->set_flag(Material::FLAG_UNSHADED,true);
- //fm->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- //fm->set_depth_draw_mode(Material::DEPTH_DRAW_NEVER);
- //fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- }
- }
- }
- }
- }
- }
- }
-
-#endif
-#if 0
- if (p_flags&SCENE_FLAG_CREATE_LODS && p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- String str;
-
- if ((_teststr(name,"lod"))) {
- str=name;
- } else if (mi->get_mesh().is_valid() && (_teststr(mi->get_mesh()->get_name(),"lod"))) {
- str=mi->get_mesh()->get_name();
-
- }
-
-
- if (p_node->get_parent() && p_node->get_parent()->cast_to<MeshInstance>()) {
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- MeshInstance *mip = p_node->get_parent()->cast_to<MeshInstance>();
- String d=str.substr(str.find("lod")+3,str.length());
- if (d!="") {
- if ((d[0]<'0' || d[0]>'9'))
- d=d.substr(1,d.length());
- if (d.length() && d[0]>='0' && d[0]<='9') {
- float dist = d.to_double();
- /// mi->set_draw_range_begin(dist);
- // mi->set_draw_range_end(100000);
-
- // mip->set_draw_range_begin(0);
- // mip->set_draw_range_end(dist);
-
- /*if (mi->get_mesh().is_valid()) {
-
- Ref<ArrayMesh> m = mi->get_mesh();
- for(int i=0;i<m->get_surface_count();i++) {
-
- Ref<SpatialMaterial> fm = m->surface_get_material(i);
- if (fm.is_valid()) {
- fm->set_flag(Material::FLAG_UNSHADED,true);
- fm->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- fm->set_hint(Material::HINT_NO_DEPTH_DRAW,true);
- fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- }
- }
- }*/
- }
- }
- }
- }
-
-
- if (p_flags&SCENE_FLAG_DETECT_LIGHTMAP_LAYER && _teststr(name,"lm") && p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- String str=name;
- int layer = str.substr(str.find("lm")+3,str.length()).to_int();
- //mi->set_baked_light_texture_id(layer);
- }
-#endif
if (_teststr(name, "colonly")) {
if (isroot)
return p_node;
- if (p_node->cast_to<MeshInstance>()) {
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ if (MeshInstance *mi = Object::cast_to<MeshInstance>(p_node)) {
Node *col = mi->create_trimesh_collision_node();
ERR_FAIL_COND_V(!col, NULL);
col->set_name(_fixstr(name, "colonly"));
- col->cast_to<Spatial>()->set_transform(mi->get_transform());
+ Object::cast_to<Spatial>(col)->set_transform(mi->get_transform());
p_node->replace_by(col);
memdelete(p_node);
p_node = col;
- StaticBody *sb = col->cast_to<StaticBody>();
- CollisionShape *colshape = sb->get_child(0)->cast_to<CollisionShape>();
+ StaticBody *sb = Object::cast_to<StaticBody>(col);
+ CollisionShape *colshape = Object::cast_to<CollisionShape>(sb->get_child(0));
colshape->set_name("shape");
colshape->set_owner(p_node->get_owner());
} else if (p_node->has_meta("empty_draw_type")) {
@@ -390,7 +250,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
print_line(empty_draw_type);
StaticBody *sb = memnew(StaticBody);
sb->set_name(_fixstr(name, "colonly"));
- sb->cast_to<Spatial>()->set_transform(p_node->cast_to<Spatial>()->get_transform());
+ Object::cast_to<Spatial>(sb)->set_transform(Object::cast_to<Spatial>(p_node)->get_transform());
p_node->replace_by(sb);
memdelete(p_node);
CollisionShape *colshape = memnew(CollisionShape);
@@ -404,7 +264,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
rayShape->set_length(1);
colshape->set_shape(rayShape);
colshape->set_name("RayShape");
- sb->cast_to<Spatial>()->rotate_x(Math_PI / 2);
+ Object::cast_to<Spatial>(sb)->rotate_x(Math_PI / 2);
} else if (empty_draw_type == "IMAGE") {
PlaneShape *planeShape = memnew(PlaneShape);
colshape->set_shape(planeShape);
@@ -419,13 +279,13 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
colshape->set_owner(sb->get_owner());
}
- } else if (_teststr(name, "rigid") && p_node->cast_to<MeshInstance>()) {
+ } else if (_teststr(name, "rigid") && Object::cast_to<MeshInstance>(p_node)) {
if (isroot)
return p_node;
// get mesh instance and bounding box
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_node);
Rect3 aabb = mi->get_aabb();
// create a new rigid body collision node
@@ -436,12 +296,12 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
// remove node name postfix
col->set_name(_fixstr(name, "rigid"));
// get mesh instance xform matrix to the rigid body collision node
- col->cast_to<Spatial>()->set_transform(mi->get_transform());
+ Object::cast_to<Spatial>(col)->set_transform(mi->get_transform());
// save original node by duplicating it into a new instance and correcting the name
Node *mesh = p_node->duplicate();
mesh->set_name(_fixstr(name, "rigid"));
// reset the xform matrix of the duplicated node so it can inherit parent node xform
- mesh->cast_to<Spatial>()->set_transform(Transform(Basis()));
+ Object::cast_to<Spatial>(mesh)->set_transform(Transform(Basis()));
// reparent the new mesh node to the rigid body collision node
p_node->add_child(mesh);
mesh->set_owner(p_node->get_owner());
@@ -451,7 +311,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
p_node = col;
// create an alias for the rigid body collision node
- RigidBody *rb = col->cast_to<RigidBody>();
+ RigidBody *rb = Object::cast_to<RigidBody>(col);
// create a new Box collision shape and set the right extents
Ref<BoxShape> shape = memnew(BoxShape);
shape->set_extents(aabb.get_size() * 0.5);
@@ -462,9 +322,9 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
rb->add_child(colshape);
colshape->set_owner(p_node->get_owner());
- } else if (_teststr(name, "col") && p_node->cast_to<MeshInstance>()) {
+ } else if (_teststr(name, "col") && Object::cast_to<MeshInstance>(p_node)) {
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_node);
mi->set_name(_fixstr(name, "col"));
Node *col = mi->create_trimesh_collision_node();
@@ -473,19 +333,19 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
col->set_name("col");
p_node->add_child(col);
- StaticBody *sb = col->cast_to<StaticBody>();
- CollisionShape *colshape = sb->get_child(0)->cast_to<CollisionShape>();
+ StaticBody *sb = Object::cast_to<StaticBody>(col);
+ CollisionShape *colshape = Object::cast_to<CollisionShape>(sb->get_child(0));
colshape->set_name("shape");
col->add_child(colshape);
colshape->set_owner(p_node->get_owner());
sb->set_owner(p_node->get_owner());
- } else if (_teststr(name, "navmesh") && p_node->cast_to<MeshInstance>()) {
+ } else if (_teststr(name, "navmesh") && Object::cast_to<MeshInstance>(p_node)) {
if (isroot)
return p_node;
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_node);
Ref<ArrayMesh> mesh = mi->get_mesh();
ERR_FAIL_COND_V(mesh.is_null(), NULL);
@@ -495,7 +355,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
Ref<NavigationMesh> nmesh = memnew(NavigationMesh);
nmesh->create_from_mesh(mesh);
nmi->set_navigation_mesh(nmesh);
- nmi->cast_to<Spatial>()->set_transform(mi->get_transform());
+ Object::cast_to<Spatial>(nmi)->set_transform(mi->get_transform());
p_node->replace_by(nmi);
memdelete(p_node);
p_node = nmi;
@@ -505,7 +365,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
return p_node;
Node *owner = p_node->get_owner();
- Spatial *s = p_node->cast_to<Spatial>();
+ Spatial *s = Object::cast_to<Spatial>(p_node);
VehicleBody *bv = memnew(VehicleBody);
String n = _fixstr(p_node->get_name(), "vehicle");
bv->set_name(n);
@@ -525,7 +385,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
return p_node;
Node *owner = p_node->get_owner();
- Spatial *s = p_node->cast_to<Spatial>();
+ Spatial *s = Object::cast_to<Spatial>(p_node);
VehicleWheel *bv = memnew(VehicleWheel);
String n = _fixstr(p_node->get_name(), "wheel");
bv->set_name(n);
@@ -538,13 +398,13 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
s->set_transform(Transform());
p_node = bv;
-
- } else if (_teststr(name, "room") && p_node->cast_to<MeshInstance>()) {
+#if 0
+ } else if (_teststr(name, "room") && Object::cast_to<MeshInstance>(p_node)) {
if (isroot)
return p_node;
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_node);
PoolVector<Face3> faces = mi->get_faces(VisualInstance::FACES_SOLID);
BSP_Tree bsptree(faces);
@@ -567,7 +427,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
if (isroot)
return p_node;
- Spatial *dummy = p_node->cast_to<Spatial>();
+ Spatial *dummy = Object::cast_to<Spatial>(p_node);
ERR_FAIL_COND_V(!dummy, NULL);
Room *room = memnew(Room);
@@ -580,12 +440,12 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
//room->compute_room_from_subtree();
- } else if (_teststr(name, "portal") && p_node->cast_to<MeshInstance>()) {
+ } else if (_teststr(name, "portal") && Object::cast_to<MeshInstance>(p_node)) {
if (isroot)
return p_node;
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_node);
PoolVector<Face3> faces = mi->get_faces(VisualInstance::FACES_SOLID);
ERR_FAIL_COND_V(faces.size() == 0, NULL);
@@ -658,12 +518,12 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
p_node->replace_by(portal);
memdelete(p_node);
p_node = portal;
-
- } else if (p_node->cast_to<MeshInstance>()) {
+#endif
+ } else if (Object::cast_to<MeshInstance>(p_node)) {
//last attempt, maybe collision insde the mesh data
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_node);
Ref<ArrayMesh> mesh = mi->get_mesh();
if (!mesh.is_null()) {
@@ -682,38 +542,6 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Array
if (!shape.is_null())
collision_map[mesh] = shape;
}
-
- if (!shape.is_null()) {
-#if 0
- StaticBody* static_body = memnew( StaticBody );
- ERR_FAIL_COND_V(!static_body,NULL);
- static_body->set_name( String(mesh->get_name()) + "_col" );
- shape->set_name(static_body->get_name());
- static_body->add_shape(shape);
-
- mi->add_child(static_body);
- if (mi->get_owner())
- static_body->set_owner( mi->get_owner() );
-#endif
- }
- }
-
- for (int i = 0; i < mesh->get_surface_count(); i++) {
-
- Ref<SpatialMaterial> fm = mesh->surface_get_material(i);
- if (fm.is_valid()) {
- String name = fm->get_name();
- /* if (_teststr(name,"alpha")) {
- fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- name=_fixstr(name,"alpha");
- }
-
- if (_teststr(name,"vcol")) {
- fm->set_fixed_flag(SpatialMaterial::FLAG_USE_COLOR_ARRAY,true);
- name=_fixstr(name,"vcol");
- }*/
- fm->set_name(name);
- }
}
}
}
@@ -728,7 +556,7 @@ void ResourceImporterScene::_create_clips(Node *scene, const Array &p_clips, boo
Node *n = scene->get_node(String("AnimationPlayer"));
ERR_FAIL_COND(!n);
- AnimationPlayer *anim = n->cast_to<AnimationPlayer>();
+ AnimationPlayer *anim = Object::cast_to<AnimationPlayer>(n);
ERR_FAIL_COND(!anim);
if (!anim->has_animation("default"))
@@ -847,7 +675,7 @@ void ResourceImporterScene::_filter_tracks(Node *scene, const String &p_text) {
return;
Node *n = scene->get_node(String("AnimationPlayer"));
ERR_FAIL_COND(!n);
- AnimationPlayer *anim = n->cast_to<AnimationPlayer>();
+ AnimationPlayer *anim = Object::cast_to<AnimationPlayer>(n);
ERR_FAIL_COND(!anim);
Vector<String> strings = p_text.split("\n");
@@ -954,7 +782,7 @@ void ResourceImporterScene::_optimize_animations(Node *scene, float p_max_lin_er
return;
Node *n = scene->get_node(String("AnimationPlayer"));
ERR_FAIL_COND(!n);
- AnimationPlayer *anim = n->cast_to<AnimationPlayer>();
+ AnimationPlayer *anim = Object::cast_to<AnimationPlayer>(n);
ERR_FAIL_COND(!anim);
List<StringName> anim_names;
@@ -986,6 +814,8 @@ void ResourceImporterScene::_make_external_resources(Node *p_node, const String
List<PropertyInfo> pi;
+ print_line("node: " + String(p_node->get_name()));
+
p_node->get_property_list(&pi);
for (List<PropertyInfo>::Element *E = pi.front(); E; E = E->next()) {
@@ -993,6 +823,7 @@ void ResourceImporterScene::_make_external_resources(Node *p_node, const String
if (E->get().type == Variant::OBJECT) {
Ref<Material> mat = p_node->get(E->get().name);
+
if (p_make_materials && mat.is_valid() && mat->get_name() != "") {
if (!p_materials.has(mat)) {
@@ -1045,7 +876,8 @@ void ResourceImporterScene::_make_external_resources(Node *p_node, const String
if (!p_materials.has(mat)) {
- String ext_name = p_base_path + "." + _make_extname(mat->get_name()) + ".material";
+ String ext_name = p_base_path.plus_file(_make_extname(mat->get_name()) + ".material");
+ ;
if (FileAccess::exists(ext_name)) {
//if exists, use it
Ref<Material> existing = ResourceLoader::load(ext_name);
@@ -1101,13 +933,13 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in
r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "nodes/custom_script", PROPERTY_HINT_FILE, script_ext_hint), ""));
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "nodes/storage", PROPERTY_HINT_ENUM, "Single Scene,Instanced Sub-Scenes"), scenes_out ? 1 : 0));
- r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "materials/location", PROPERTY_HINT_ENUM, "Node,Mesh"), meshes_out ? 1 : 0));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "materials/location", PROPERTY_HINT_ENUM, "Node,Mesh"), (meshes_out || materials_out) ? 1 : 0));
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "materials/storage", PROPERTY_HINT_ENUM, "Built-In,Files", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), materials_out ? 1 : 0));
- r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "materials/keep_files"), materials_out ? true : false));
- r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "geometry/compress"), true));
- r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "geometry/ensure_tangents"), true));
- r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "geometry/storage", PROPERTY_HINT_ENUM, "Built-In,Files"), meshes_out ? true : false));
- r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "external_files/store_in_subdir"), true));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "materials/keep_on_reimport"), materials_out ? true : false));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/compress"), true));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/ensure_tangents"), true));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/storage", PROPERTY_HINT_ENUM, "Built-In,Files"), meshes_out ? true : false));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "external_files/store_in_subdir"), false));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/import", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), true));
r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "animation/fps", PROPERTY_HINT_RANGE, "1,120,1"), 15));
r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "animation/filter_script", PROPERTY_HINT_MULTILINE_TEXT), ""));
@@ -1176,7 +1008,7 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
if (bool(p_options["animation/import"]))
import_flags |= EditorSceneImporter::IMPORT_ANIMATION;
- if (bool(p_options["geometry/ensure_tangents"]))
+ if (bool(p_options["meshes/ensure_tangents"]))
import_flags |= EditorSceneImporter::IMPORT_GENERATE_TANGENT_ARRAYS;
if (int(p_options["materials/location"]) == 0)
@@ -1192,10 +1024,7 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
String root_type = p_options["nodes/root_type"];
if (scene->get_class() != root_type) {
- Object *base = ClassDB::instance(root_type);
- Node *base_node = NULL;
- if (base)
- base_node = base->cast_to<Node>();
+ Node *base_node = base_node = Object::cast_to<Node>(ClassDB::instance(root_type));
if (base_node) {
@@ -1250,7 +1079,7 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
}
bool external_materials = p_options["materials/storage"];
- bool external_meshes = p_options["geometry/storage"];
+ bool external_meshes = p_options["meshes/storage"];
bool external_scenes = int(p_options["nodes/storage"]) == 1;
String base_path = p_source_file.get_base_dir();
@@ -1272,7 +1101,7 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
Map<Ref<Material>, Ref<Material> > mat_map;
Map<Ref<ArrayMesh>, Ref<ArrayMesh> > mesh_map;
- bool keep_materials = bool(p_options["materials/keep_files"]);
+ bool keep_materials = bool(p_options["materials/keep_on_reimport"]);
_make_external_resources(scene, base_path, external_materials, keep_materials, external_meshes, mat_map, mesh_map);
}
@@ -1283,7 +1112,6 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
Ref<EditorScenePostImport> post_import_script;
if (post_import_script_path != "") {
- post_import_script_path = post_import_script_path; // FIXME: is there a good reason for this?
Ref<Script> scr = ResourceLoader::load(post_import_script_path);
if (!scr.is_valid()) {
EditorNode::add_io_error(TTR("Couldn't load post-import script:") + " " + post_import_script_path);
diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h
index f404582d7e..9c3d5e7876 100644
--- a/editor/import/resource_importer_scene.h
+++ b/editor/import/resource_importer_scene.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -83,9 +83,9 @@ class ResourceImporterScene : public ResourceImporter {
static ResourceImporterScene *singleton;
enum Presets {
- PRESET_SINGLE_SCENE,
PRESET_SEPARATE_MATERIALS,
PRESET_SEPARATE_MESHES,
+ PRESET_SINGLE_SCENE,
PRESET_SEPARATE_MESHES_AND_MATERIALS,
PRESET_MULTIPLE_SCENES,
PRESET_MULTIPLE_SCENES_AND_MATERIALS,
diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp
index c0c507c2d6..6de523736b 100644
--- a/editor/import/resource_importer_texture.cpp
+++ b/editor/import/resource_importer_texture.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -45,8 +45,6 @@ void ResourceImporterTexture::_texture_reimport_srgb(const Ref<StreamTexture> &p
singleton->make_flags[path] |= MAKE_SRGB_FLAG;
- print_line("requesting srgb for " + String(path));
-
singleton->mutex->unlock();
}
@@ -61,8 +59,6 @@ void ResourceImporterTexture::_texture_reimport_3d(const Ref<StreamTexture> &p_t
singleton->make_flags[path] |= MAKE_3D_FLAG;
- print_line("requesting 3d for " + String(path));
-
singleton->mutex->unlock();
}
@@ -77,8 +73,6 @@ void ResourceImporterTexture::_texture_reimport_normal(const Ref<StreamTexture>
singleton->make_flags[path] |= MAKE_NORMAL_FLAG;
- print_line("requesting normalfor " + String(path));
-
singleton->mutex->unlock();
}
@@ -97,8 +91,6 @@ void ResourceImporterTexture::update_imports() {
Vector<String> to_reimport;
for (Map<StringName, int>::Element *E = make_flags.front(); E; E = E->next()) {
- print_line("checking for reimport " + String(E->key()));
-
Ref<ConfigFile> cf;
cf.instance();
String src_path = String(E->key()) + ".import";
@@ -207,11 +199,11 @@ void ResourceImporterTexture::get_import_options(List<ImportOption> *r_options,
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "stream"), false));
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "size_limit", PROPERTY_HINT_RANGE, "0,4096,1"), 0));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "detect_3d"), p_preset == PRESET_DETECT));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "scale", PROPERTY_HINT_RANGE, "0.001,100,0.1"), 1.0));
}
void ResourceImporterTexture::_save_stex(const Ref<Image> &p_image, const String &p_to_path, int p_compress_mode, float p_lossy_quality, Image::CompressMode p_vram_compression, bool p_mipmaps, int p_texture_flags, bool p_streamable, bool p_detect_3d, bool p_detect_srgb, bool p_force_rgbe, bool p_detect_normal, bool p_force_normal) {
- print_line("saving: " + p_to_path);
FileAccess *f = FileAccess::open(p_to_path, FileAccess::WRITE);
f->store_8('G');
f->store_8('D');
@@ -365,10 +357,11 @@ Error ResourceImporterTexture::import(const String &p_source_file, const String
bool force_rgbe = int(p_options["compress/hdr_mode"]) == 1;
bool hdr_as_srgb = p_options["process/HDR_as_SRGB"];
int normal = p_options["compress/normal_map"];
+ float scale = p_options["scale"];
Ref<Image> image;
image.instance();
- Error err = ImageLoader::load_image(p_source_file, image, NULL, hdr_as_srgb);
+ Error err = ImageLoader::load_image(p_source_file, image, NULL, hdr_as_srgb, scale);
if (err != OK)
return err;
diff --git a/editor/import/resource_importer_texture.h b/editor/import/resource_importer_texture.h
index 31bd0f29b0..b374a9bc04 100644
--- a/editor/import/resource_importer_texture.h
+++ b/editor/import/resource_importer_texture.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp
index 07f1f4dd9f..25185149b1 100644
--- a/editor/import/resource_importer_wav.cpp
+++ b/editor/import/resource_importer_wav.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import/resource_importer_wav.h b/editor/import/resource_importer_wav.h
index 6b4f86e641..f58392e820 100644
--- a/editor/import/resource_importer_wav.h
+++ b/editor/import/resource_importer_wav.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp
index a4f744aa84..6662fa9f21 100644
--- a/editor/import_dock.cpp
+++ b/editor/import_dock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/import_dock.h b/editor/import_dock.h
index 4844fc07ea..afb899d9c9 100644
--- a/editor/import_dock.h
+++ b/editor/import_dock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
deleted file mode 100644
index a644558521..0000000000
--- a/editor/inspector_dock.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*************************************************************************/
-/* inspector_dock.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "inspector_dock.h"
-
-#if 0
-void InspectorDock::_go_next() {
-
-
-}
-
-void InspectorDock::_go_prev() {
-
-
-}
-
-void InspectorDock::_bind_methods() {
-
-}
-
-InspectorDock::InspectorDock() {
-
-
-}
-#endif
diff --git a/editor/inspector_dock.h b/editor/inspector_dock.h
deleted file mode 100644
index cee18f2d49..0000000000
--- a/editor/inspector_dock.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*************************************************************************/
-/* inspector_dock.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 INSPECTOR_DOCK_H
-#define INSPECTOR_DOCK_H
-
-#include "property_editor.h"
-#include "scene/gui/box_container.h"
-
-//this is for now bundled in EditorNode, will be moved away here eventually
-
-#if 0
-class InspectorDock : public VBoxContainer
-{
- GDCLASS(InspectorDock,VBoxContainer);
-
- PropertyEditor *property_editor;
-
- EditorHistory editor_history;
-
- void _go_next();
- void _go_prev();
-
-protected:
-
- static void _bind_methods();
-public:
-
- EditorHistory &get_editor_history();
-
- PropertyEditor *get_property_editor();
-
- InspectorDock();
-};
-
-#endif
-#endif // INSPECTOR_DOCK_H
diff --git a/editor/io_plugins/SCsub b/editor/io_plugins/SCsub
deleted file mode 100644
index f1fa50148f..0000000000
--- a/editor/io_plugins/SCsub
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-Export('env')
-env.add_source_files(env.editor_sources, "*.cpp")
diff --git a/editor/io_plugins/editor_atlas.cpp b/editor/io_plugins/editor_atlas.cpp
deleted file mode 100644
index 42800ee80d..0000000000
--- a/editor/io_plugins/editor_atlas.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*************************************************************************/
-/* editor_atlas.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_atlas.h"
-
-#include "print_string.h"
-
-struct _EditorAtlasWorkRect {
-
- Size2i s;
- Point2i p;
- int idx;
- _FORCE_INLINE_ bool operator<(const _EditorAtlasWorkRect &p_r) const { return s.width > p_r.s.width; };
-};
-
-struct _EditorAtlasWorkRectResult {
-
- Vector<_EditorAtlasWorkRect> result;
- int max_w;
- int max_h;
-};
-
-void EditorAtlas::fit(const Vector<Size2i> &p_rects, Vector<Point2i> &r_result, Size2i &r_size) {
-
- //super simple, almost brute force scanline stacking fitter
- //it's pretty basic for now, but it tries to make sure that the aspect ratio of the
- //resulting atlas is somehow square. This is necessary because video cards have limits
- //on texture size (usually 2048 or 4096), so the more square a texture, the more chances
- //it will work in every hardware.
- // for example, it will prioritize a 1024x1024 atlas (works everywhere) instead of a
- // 256x8192 atlas (won't work anywhere).
-
- ERR_FAIL_COND(p_rects.size() == 0);
-
- Vector<_EditorAtlasWorkRect> wrects;
- wrects.resize(p_rects.size());
- for (int i = 0; i < p_rects.size(); i++) {
- wrects[i].s = p_rects[i];
- wrects[i].idx = i;
- }
- wrects.sort();
- int widest = wrects[0].s.width;
-
- Vector<_EditorAtlasWorkRectResult> results;
-
- for (int i = 0; i <= 12; i++) {
-
- int w = 1 << i;
- int max_h = 0;
- int max_w = 0;
- if (w < widest)
- continue;
-
- Vector<int> hmax;
- hmax.resize(w);
- for (int j = 0; j < w; j++)
- hmax[j] = 0;
-
- //place them
- int ofs = 0;
-
- for (int j = 0; j < wrects.size(); j++) {
-
- if (ofs + wrects[j].s.width > w) {
-
- ofs = 0;
- }
-
- int from_y = 0;
- for (int k = 0; k < wrects[j].s.width; k++) {
-
- if (hmax[ofs + k] > from_y)
- from_y = hmax[ofs + k];
- }
-
- wrects[j].p.x = ofs;
- wrects[j].p.y = from_y;
-
- int end_h = from_y + wrects[j].s.height;
- int end_w = ofs + wrects[j].s.width;
-
- for (int k = 0; k < wrects[j].s.width; k++) {
-
- hmax[ofs + k] = end_h;
- }
-
- if (end_h > max_h)
- max_h = end_h;
-
- if (end_w > max_w)
- max_w = end_w;
-
- ofs += wrects[j].s.width;
- }
-
- _EditorAtlasWorkRectResult result;
- result.result = wrects;
- result.max_h = max_h;
- result.max_w = max_w;
- results.push_back(result);
- }
-
- //find the result with the best aspect ratio
-
- int best = -1;
- float best_aspect = 1e20;
-
- for (int i = 0; i < results.size(); i++) {
-
- float h = results[i].max_h;
- float w = results[i].max_w;
- float aspect = h > w ? h / w : w / h;
- if (aspect < best_aspect) {
- best = i;
- best_aspect = aspect;
- }
- }
-
- r_result.resize(p_rects.size());
-
- for (int i = 0; i < p_rects.size(); i++) {
-
- r_result[results[best].result[i].idx] = results[best].result[i].p;
- }
-
- r_size = Size2(results[best].max_w, results[best].max_h);
-}
diff --git a/editor/io_plugins/editor_atlas.h b/editor/io_plugins/editor_atlas.h
deleted file mode 100644
index 206897c8e5..0000000000
--- a/editor/io_plugins/editor_atlas.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*************************************************************************/
-/* editor_atlas.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_ATLAS_H
-#define EDITOR_ATLAS_H
-
-#include "math_2d.h"
-#include "vector.h"
-
-class EditorAtlas {
-public:
- static void fit(const Vector<Size2i> &p_rects, Vector<Point2i> &r_result, Size2i &r_size);
-};
-
-#endif // EDITOR_ATLAS_H
diff --git a/editor/io_plugins/editor_bitmask_import_plugin.cpp b/editor/io_plugins/editor_bitmask_import_plugin.cpp
deleted file mode 100644
index e508dc0a9d..0000000000
--- a/editor/io_plugins/editor_bitmask_import_plugin.cpp
+++ /dev/null
@@ -1,388 +0,0 @@
-/*************************************************************************/
-/* editor_bitmask_import_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_bitmask_import_plugin.h"
-#if 0
-#include "editor/editor_dir_dialog.h"
-#include "editor/editor_file_dialog.h"
-#include "editor/editor_node.h"
-#include "editor/editor_settings.h"
-#include "editor/property_editor.h"
-#include "io/image_loader.h"
-#include "io/marshalls.h"
-#include "io/resource_saver.h"
-#include "os/file_access.h"
-
-class _EditorBitMaskImportOptions : public Object {
-
- GDCLASS(_EditorBitMaskImportOptions, Object);
-public:
-
- bool _set(const StringName& p_name, const Variant& p_value) {
-
- return false;
- }
-
- bool _get(const StringName& p_name, Variant &r_ret) const{
-
- return false;
- }
-
- void _get_property_list(List<PropertyInfo> *p_list) const{
-
- }
-
- static void _bind_methods() {
-
- ADD_SIGNAL(MethodInfo("changed"));
- }
-
-
- _EditorBitMaskImportOptions() {
-
- }
-
-};
-
-class EditorBitMaskImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorBitMaskImportDialog, ConfirmationDialog);
-
- EditorBitMaskImportPlugin *plugin;
-
- LineEdit *import_path;
- LineEdit *save_path;
- EditorFileDialog *file_select;
- EditorDirDialog *save_select;
- ConfirmationDialog *error_dialog;
- PropertyEditor *option_editor;
-
-public:
-
- void _choose_files(const Vector<String>& p_path) {
-
- String files;
- for (int i = 0; i<p_path.size(); i++) {
-
- if (i>0)
- files += ",";
- files += p_path[i];
- }
-
- import_path->set_text(files);
-
- }
- void _choose_save_dir(const String& p_path) {
-
- save_path->set_text(p_path);
- }
-
- void _browse() {
-
- file_select->popup_centered_ratio();
- }
-
- void _browse_target() {
-
- save_select->popup_centered_ratio();
-
- }
-
-
- void popup_import(const String& p_path) {
-
- popup_centered(Size2(400, 100)*EDSCALE);
- if (p_path != "") {
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path);
- ERR_FAIL_COND(!rimd.is_valid());
-
- save_path->set_text(p_path.get_base_dir());
-
- String src = "";
- for (int i = 0; i<rimd->get_source_count(); i++) {
- if (i>0)
- src += ",";
- src += EditorImportPlugin::expand_source_path(rimd->get_source_path(i));
- }
- import_path->set_text(src);
- }
- }
-
-
- void _import() {
-
- Vector<String> bitmasks = import_path->get_text().split(",");
-
- if (bitmasks.size() == 0) {
- error_dialog->set_text(TTR("No bit masks to import!"));
- error_dialog->popup_centered(Size2(200, 100)*EDSCALE);
- }
-
- if (save_path->get_text().strip_edges() == "") {
- error_dialog->set_text(TTR("Target path is empty."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (!save_path->get_text().begins_with("res://")) {
- error_dialog->set_text(TTR("Target path must be a complete resource path."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (!DirAccess::exists(save_path->get_text())) {
- error_dialog->set_text(TTR("Target path must exist."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- for (int i = 0; i<bitmasks.size(); i++) {
-
- Ref<ResourceImportMetadata> imd = memnew(ResourceImportMetadata);
-
- imd->add_source(EditorImportPlugin::validate_source_path(bitmasks[i]));
-
- String dst = save_path->get_text();
- if (dst == "") {
- error_dialog->set_text(TTR("Save path is empty!"));
- error_dialog->popup_centered(Size2(200, 100)*EDSCALE);
- }
-
- dst = dst.plus_file(bitmasks[i].get_file().get_basename() + ".pbm");
-
- plugin->import(dst, imd);
- }
-
- hide();
-
- }
-
-
- void _notification(int p_what) {
-
- }
-
- static void _bind_methods() {
-
-
- ClassDB::bind_method("_choose_files", &EditorBitMaskImportDialog::_choose_files);
- ClassDB::bind_method("_choose_save_dir", &EditorBitMaskImportDialog::_choose_save_dir);
- ClassDB::bind_method("_import", &EditorBitMaskImportDialog::_import);
- ClassDB::bind_method("_browse", &EditorBitMaskImportDialog::_browse);
- ClassDB::bind_method("_browse_target", &EditorBitMaskImportDialog::_browse_target);
- //ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
- }
-
- EditorBitMaskImportDialog(EditorBitMaskImportPlugin *p_plugin) {
-
- plugin = p_plugin;
-
-
- set_title(TTR("Import BitMasks"));
-
- VBoxContainer *vbc = memnew(VBoxContainer);
- add_child(vbc);
- //set_child_rect(vbc);
-
-
- HBoxContainer *hbc = memnew(HBoxContainer);
- vbc->add_margin_child(TTR("Source Texture(s):"), hbc);
-
- import_path = memnew(LineEdit);
- import_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(import_path);
-
- Button * import_choose = memnew(Button);
- import_choose->set_text(" .. ");
- hbc->add_child(import_choose);
-
- import_choose->connect("pressed", this, "_browse");
-
- hbc = memnew(HBoxContainer);
- vbc->add_margin_child(TTR("Target Path:"), hbc);
-
- save_path = memnew(LineEdit);
- save_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(save_path);
-
- Button * save_choose = memnew(Button);
- save_choose->set_text(" .. ");
- hbc->add_child(save_choose);
-
- save_choose->connect("pressed", this, "_browse_target");
-
- file_select = memnew(EditorFileDialog);
- file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- add_child(file_select);
- file_select->set_mode(EditorFileDialog::MODE_OPEN_FILES);
- file_select->connect("files_selected", this, "_choose_files");
-
- List<String> extensions;
- ImageLoader::get_recognized_extensions(&extensions);
- file_select->clear_filters();
- for (int i = 0; i<extensions.size(); i++) {
-
- file_select->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
- }
-
- save_select = memnew(EditorDirDialog);
- add_child(save_select);
-
- //save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
- save_select->connect("dir_selected", this, "_choose_save_dir");
-
- get_ok()->connect("pressed", this, "_import");
- get_ok()->set_text(TTR("Import"));
-
-
- error_dialog = memnew(ConfirmationDialog);
- add_child(error_dialog);
- error_dialog->get_ok()->set_text(TTR("Accept"));
- //error_dialog->get_cancel()->hide();
-
- set_hide_on_ok(false);
- }
-
- ~EditorBitMaskImportDialog() {
- }
-
-};
-
-
-String EditorBitMaskImportPlugin::get_name() const {
-
- return "bitmask";
-}
-String EditorBitMaskImportPlugin::get_visible_name() const{
-
- return TTR("Bit Mask");
-}
-void EditorBitMaskImportPlugin::import_dialog(const String& p_from){
-
- dialog->popup_import(p_from);
-}
-Error EditorBitMaskImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from){
-
- ERR_FAIL_COND_V(p_from->get_source_count() != 1, ERR_INVALID_PARAMETER);
-
- Ref<ResourceImportMetadata> from = p_from;
-
- String src_path = EditorImportPlugin::expand_source_path(from->get_source_path(0));
- Ref<ImageTexture> it = ResourceLoader::load(src_path);
- ERR_FAIL_COND_V(it.is_null(), ERR_CANT_OPEN);
-
- Ref<BitMap> target = memnew(BitMap);
- target->create_from_image_alpha(it.ptr()->get_data());
-
- from->set_source_md5(0, FileAccess::get_md5(src_path));
- from->set_editor(get_name());
- target->set_import_metadata(from);
-
-
- Error err = ResourceSaver::save(p_path, target);
-
- return err;
-
-}
-
-
-EditorBitMaskImportPlugin* EditorBitMaskImportPlugin::singleton = NULL;
-
-
-void EditorBitMaskImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
- Vector<String> files;
-
- List<String> valid_extensions;
- ImageLoader::get_recognized_extensions(&valid_extensions);
- for(int i=0;i<p_drop.size();i++) {
-
- String extension=p_drop[i].get_extension().to_lower();
-
- for (List<String>::Element *E=valid_extensions.front();E;E=E->next()) {
-
- if (E->get()==extension) {
- files.push_back(p_drop[i]);
- break;
- }
- }
- }
-
- if (files.size()) {
- import_dialog();
- dialog->_choose_files(files);
- dialog->_choose_save_dir(p_dest_path);
- }
-}
-
-void EditorBitMaskImportPlugin::reimport_multiple_files(const Vector<String>& p_list) {
-
- if (p_list.size() == 0)
- return;
-
- Vector<String> sources;
- for (int i = 0; i<p_list.size(); i++) {
- int idx;
- EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(p_list[i], &idx);
- if (efsd) {
- for (int j = 0; j<efsd->get_source_count(idx); j++) {
- String file = expand_source_path(efsd->get_source_file(idx, j));
- if (sources.find(file) == -1) {
- sources.push_back(file);
- }
-
- }
- }
- }
-
- if (sources.size()) {
-
- dialog->popup_import(p_list[0]);
- dialog->_choose_files(sources);
- dialog->_choose_save_dir(p_list[0].get_base_dir());
- }
-}
-
-bool EditorBitMaskImportPlugin::can_reimport_multiple_files() const {
-
- return true;
-}
-
-EditorBitMaskImportPlugin::EditorBitMaskImportPlugin(EditorNode* p_editor) {
-
- singleton = this;
- dialog = memnew(EditorBitMaskImportDialog(this));
- p_editor->get_gui_base()->add_child(dialog);
-}
-
-EditorBitMaskExportPlugin::EditorBitMaskExportPlugin() {
-
-}
-#endif
diff --git a/editor/io_plugins/editor_bitmask_import_plugin.h b/editor/io_plugins/editor_bitmask_import_plugin.h
deleted file mode 100644
index b31ee9c86a..0000000000
--- a/editor/io_plugins/editor_bitmask_import_plugin.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*************************************************************************/
-/* editor_bitmask_import_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_BITMASK_IMPORT_PLUGIN_H
-#define EDITOR_BITMASK_IMPORT_PLUGIN_H
-#if 0
-#include "editor/editor_import_export.h"
-#include "scene/resources/font.h"
-
-class EditorNode;
-class EditorBitMaskImportDialog;
-
-class EditorBitMaskImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorBitMaskImportPlugin, EditorImportPlugin);
-
- EditorBitMaskImportDialog *dialog;
-public:
-
- static EditorBitMaskImportPlugin *singleton;
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from = "");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
- void import_from_drop(const Vector<String>& p_drop, const String &p_dest_path);
- virtual void reimport_multiple_files(const Vector<String>& p_list);
- virtual bool can_reimport_multiple_files() const;
-
-
- EditorBitMaskImportPlugin(EditorNode* p_editor);
-};
-
-class EditorBitMaskExportPlugin : public EditorExportPlugin {
-
- GDCLASS(EditorBitMaskExportPlugin, EditorExportPlugin);
-
-
-public:
-
- EditorBitMaskExportPlugin();
-};
-
-#endif
-#endif // EDITOR_SAMPLE_IMPORT_PLUGIN_H
diff --git a/editor/io_plugins/editor_export_scene.cpp b/editor/io_plugins/editor_export_scene.cpp
deleted file mode 100644
index 6392b4a715..0000000000
--- a/editor/io_plugins/editor_export_scene.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/*************************************************************************/
-/* editor_export_scene.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_export_scene.h"
-#if 0
-#include "editor/editor_settings.h"
-#include "io/resource_loader.h"
-#include "io/resource_saver.h"
-#include "os/dir_access.h"
-#include "os/file_access.h"
-#include "project_settings.h"
-#include "scene/resources/packed_scene.h"
-
-Vector<uint8_t> EditorSceneExportPlugin::custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform) {
-
- if (!EditorImportExport::get_singleton()->get_convert_text_scenes()) {
- return Vector<uint8_t>();
- }
-
-
- String extension = p_path.get_extension();
-
- //step 1 check if scene
-
- if (extension=="xml" || extension=="xres") {
-
- String type = ResourceLoader::get_resource_type(p_path);
-
- if (type!="PackedScene")
- return Vector<uint8_t>();
-
- } else if (extension!="tscn" && extension!="xscn") {
- return Vector<uint8_t>();
- }
-
- //step 2 check if cached
-
- uint64_t sd=0;
- String smd5;
- String gp = ProjectSettings::get_singleton()->globalize_path(p_path);
- String md5=gp.md5_text();
- String tmp_path = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp/");
-
- bool valid=false;
- {
- //if existing, make sure it's valid
- FileAccessRef f = FileAccess::open(tmp_path+"scnexp-"+md5+".txt",FileAccess::READ);
- if (f) {
-
- uint64_t d = f->get_line().strip_edges().to_int64();
- sd = FileAccess::get_modified_time(p_path);
-
- if (d==sd) {
- valid=true;
- } else {
- String cmd5 = f->get_line().strip_edges();
- smd5 = FileAccess::get_md5(p_path);
- if (cmd5==smd5) {
- valid=true;
- }
- }
-
-
- }
- }
-
- if (!valid) {
- //cache failed, convert
- DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
-
- String copy = p_path+".convert."+extension;
-
- // a copy will allow loading the internal resources without conflicting with opened scenes
- da->copy(p_path,copy);
-
- //@todo for tscn use something more efficient
-
- Ref<PackedScene> copyres = ResourceLoader::load(copy,"PackedScene");
-
- da->remove(copy);
-
- memdelete(da);
-
- ERR_FAIL_COND_V(!copyres.is_valid(),Vector<uint8_t>());
-
- Error err = ResourceSaver::save(tmp_path+"scnexp-"+md5+".scn",copyres);
-
- copyres=Ref<PackedScene>();
-
- ERR_FAIL_COND_V(err!=OK,Vector<uint8_t>());
-
- FileAccessRef f = FileAccess::open(tmp_path+"scnexp-"+md5+".txt",FileAccess::WRITE);
-
- if (sd==0)
- sd = FileAccess::get_modified_time(p_path);
- if (smd5==String())
- smd5 = FileAccess::get_md5(p_path);
-
- f->store_line(String::num(sd));
- f->store_line(smd5);
- f->store_line(gp); //source path for reference
- }
-
-
- Vector<uint8_t> ret = FileAccess::get_file_as_array(tmp_path+"scnexp-"+md5+".scn");
-
- p_path+=".converted.scn";
-
- return ret;
-
-}
-
-
-EditorSceneExportPlugin::EditorSceneExportPlugin()
-{
-}
-#endif
diff --git a/editor/io_plugins/editor_export_scene.h b/editor/io_plugins/editor_export_scene.h
deleted file mode 100644
index d8fe21adfc..0000000000
--- a/editor/io_plugins/editor_export_scene.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*************************************************************************/
-/* editor_export_scene.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_EXPORT_SCENE_H
-#define EDITOR_EXPORT_SCENE_H
-
-#include "editor/editor_export.h"
-
-#if 0
-class EditorSceneExportPlugin : public EditorExportPlugin {
- GDCLASS( EditorSceneExportPlugin, EditorExportPlugin );
-public:
-
- virtual Vector<uint8_t> custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform);
-
- EditorSceneExportPlugin();
-};
-#endif
-#endif // EDITOR_EXPORT_SCENE_H
diff --git a/editor/io_plugins/editor_font_import_plugin.cpp b/editor/io_plugins/editor_font_import_plugin.cpp
deleted file mode 100644
index 9831e08cf1..0000000000
--- a/editor/io_plugins/editor_font_import_plugin.cpp
+++ /dev/null
@@ -1,1705 +0,0 @@
-/*************************************************************************/
-/* editor_font_import_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_font_import_plugin.h"
-#if 0
-#include "editor/editor_file_dialog.h"
-#include "editor/editor_node.h"
-#include "editor_atlas.h"
-#include "io/image_loader.h"
-#include "io/resource_saver.h"
-#include "os/file_access.h"
-#include "scene/gui/dialogs.h"
-
-#ifdef FREETYPE_ENABLED
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#endif
-
-
-class _EditorFontImportOptions : public Object {
-
- GDCLASS(_EditorFontImportOptions,Object);
-public:
-
- enum FontMode {
-
- FONT_BITMAP,
- FONT_DISTANCE_FIELD
- };
-
- enum ColorType {
- COLOR_WHITE,
- COLOR_CUSTOM,
- COLOR_GRADIENT_RANGE,
- COLOR_GRADIENT_IMAGE
- };
-
-
- int char_extra_spacing;
- int top_extra_spacing;
- int bottom_extra_spacing;
- int space_extra_spacing;
-
- enum CharacterSet {
-
- CHARSET_ASCII,
- CHARSET_LATIN,
- CHARSET_UNICODE,
- CHARSET_CUSTOM,
- CHARSET_CUSTOM_LATIN
- };
-
-
- FontMode font_mode;
-
- CharacterSet character_set;
- String custom_file;
-
- bool shadow;
- Vector2 shadow_offset;
- int shadow_radius;
- Color shadow_color;
- float shadow_transition;
-
- bool shadow2;
- Vector2 shadow2_offset;
- int shadow2_radius;
- Color shadow2_color;
- float shadow2_transition;
-
- ColorType color_type;
- Color color;
- Color gradient_begin;
- Color gradient_end;
- bool color_use_monochrome;
- String gradient_image;
-
- bool enable_filter;
- bool round_advance;
- bool premultiply_alpha;
-
-
-
- bool _set(const StringName& p_name, const Variant& p_value) {
-
- String n = p_name;
- if (n=="mode/mode") {
- font_mode=FontMode(int(p_value));
- _change_notify();
- } else if (n=="extra_space/char")
- char_extra_spacing=p_value;
- else if (n=="extra_space/space")
- space_extra_spacing=p_value;
- else if (n=="extra_space/top")
- top_extra_spacing=p_value;
- else if (n=="extra_space/bottom")
- bottom_extra_spacing=p_value;
-
- else if (n=="character_set/mode") {
- character_set=CharacterSet(int(p_value));
- _change_notify();
- } else if (n=="character_set/custom")
- custom_file=p_value;
-
- else if (n=="shadow/enabled") {
- shadow=p_value;
- _change_notify();
- }else if (n=="shadow/radius")
- shadow_radius=p_value;
- else if (n=="shadow/offset")
- shadow_offset=p_value;
- else if (n=="shadow/color")
- shadow_color=p_value;
- else if (n=="shadow/transition")
- shadow_transition=p_value;
-
- else if (n=="shadow2/enabled") {
- shadow2=p_value;
- _change_notify();
- }else if (n=="shadow2/radius")
- shadow2_radius=p_value;
- else if (n=="shadow2/offset")
- shadow2_offset=p_value;
- else if (n=="shadow2/color")
- shadow2_color=p_value;
- else if (n=="shadow2/transition")
- shadow2_transition=p_value;
-
- else if (n=="color/mode") {
- color_type=ColorType(int(p_value));
- _change_notify();
- }else if (n=="color/color")
- color=p_value;
- else if (n=="color/begin")
- gradient_begin=p_value;
- else if (n=="color/end")
- gradient_end=p_value;
- else if (n=="color/image")
- gradient_image=p_value;
- else if (n=="color/monochrome")
- color_use_monochrome=p_value;
- else if (n=="advanced/round_advance")
- round_advance=p_value;
- else if (n=="advanced/enable_filter")
- enable_filter=p_value;
- else if (n=="advanced/premultiply_alpha")
- premultiply_alpha=p_value;
- else
- return false;
-
- emit_signal("changed");
-
-
- return true;
-
- }
-
- bool _get(const StringName& p_name,Variant &r_ret) const{
-
- String n = p_name;
- if (n=="mode/mode")
- r_ret=font_mode;
- else if (n=="extra_space/char")
- r_ret=char_extra_spacing;
- else if (n=="extra_space/space")
- r_ret=space_extra_spacing;
- else if (n=="extra_space/top")
- r_ret=top_extra_spacing;
- else if (n=="extra_space/bottom")
- r_ret=bottom_extra_spacing;
-
- else if (n=="character_set/mode")
- r_ret=character_set;
- else if (n=="character_set/custom")
- r_ret=custom_file;
-
- else if (n=="shadow/enabled")
- r_ret=shadow;
- else if (n=="shadow/radius")
- r_ret=shadow_radius;
- else if (n=="shadow/offset")
- r_ret=shadow_offset;
- else if (n=="shadow/color")
- r_ret=shadow_color;
- else if (n=="shadow/transition")
- r_ret=shadow_transition;
-
- else if (n=="shadow2/enabled")
- r_ret=shadow2;
- else if (n=="shadow2/radius")
- r_ret=shadow2_radius;
- else if (n=="shadow2/offset")
- r_ret=shadow2_offset;
- else if (n=="shadow2/color")
- r_ret=shadow2_color;
- else if (n=="shadow2/transition")
- r_ret=shadow2_transition;
-
-
- else if (n=="color/mode")
- r_ret=color_type;
- else if (n=="color/color")
- r_ret=color;
- else if (n=="color/begin")
- r_ret=gradient_begin;
- else if (n=="color/end")
- r_ret=gradient_end;
- else if (n=="color/image")
- r_ret=gradient_image;
- else if (n=="color/monochrome")
- r_ret=color_use_monochrome;
- else if (n=="advanced/round_advance")
- r_ret=round_advance;
- else if (n=="advanced/enable_filter")
- r_ret=enable_filter;
- else if (n=="advanced/premultiply_alpha")
- r_ret=premultiply_alpha;
- else
- return false;
-
- return true;
-
- }
-
- void _get_property_list( List<PropertyInfo> *p_list) const{
-
-
- p_list->push_back(PropertyInfo(Variant::INT,"mode/mode",PROPERTY_HINT_ENUM,"Bitmap,Distance Field"));
-
- p_list->push_back(PropertyInfo(Variant::INT,"extra_space/char",PROPERTY_HINT_RANGE,"-64,64,1"));
- p_list->push_back(PropertyInfo(Variant::INT,"extra_space/space",PROPERTY_HINT_RANGE,"-64,64,1"));
- p_list->push_back(PropertyInfo(Variant::INT,"extra_space/top",PROPERTY_HINT_RANGE,"-64,64,1"));
- p_list->push_back(PropertyInfo(Variant::INT,"extra_space/bottom",PROPERTY_HINT_RANGE,"-64,64,1"));
- p_list->push_back(PropertyInfo(Variant::INT,"character_set/mode",PROPERTY_HINT_ENUM,"Ascii,Latin,Unicode,Custom,Custom&Latin"));
-
- if (character_set>=CHARSET_CUSTOM)
- p_list->push_back(PropertyInfo(Variant::STRING,"character_set/custom",PROPERTY_HINT_GLOBAL_FILE));
-
- int usage = PROPERTY_USAGE_DEFAULT;
-
- if (font_mode==FONT_DISTANCE_FIELD) {
- usage = PROPERTY_USAGE_NOEDITOR;
- }
-
- {
-
- p_list->push_back(PropertyInfo(Variant::BOOL,"shadow/enabled",PROPERTY_HINT_NONE,"",usage));
- if (shadow) {
- p_list->push_back(PropertyInfo(Variant::INT,"shadow/radius",PROPERTY_HINT_RANGE,"-64,64,1",usage));
- p_list->push_back(PropertyInfo(Variant::VECTOR2,"shadow/offset",PROPERTY_HINT_NONE,"",usage));
- p_list->push_back(PropertyInfo(Variant::COLOR,"shadow/color",PROPERTY_HINT_NONE,"",usage));
- p_list->push_back(PropertyInfo(Variant::REAL,"shadow/transition",PROPERTY_HINT_EXP_EASING,"",usage));
- }
-
- p_list->push_back(PropertyInfo(Variant::BOOL,"shadow2/enabled",PROPERTY_HINT_NONE,"",usage));
- if (shadow2) {
- p_list->push_back(PropertyInfo(Variant::INT,"shadow2/radius",PROPERTY_HINT_RANGE,"-64,64,1",usage));
- p_list->push_back(PropertyInfo(Variant::VECTOR2,"shadow2/offset",PROPERTY_HINT_NONE,"",usage));
- p_list->push_back(PropertyInfo(Variant::COLOR,"shadow2/color",PROPERTY_HINT_NONE,"",usage));
- p_list->push_back(PropertyInfo(Variant::REAL,"shadow2/transition",PROPERTY_HINT_EXP_EASING,"",usage));
- }
-
- p_list->push_back(PropertyInfo(Variant::INT,"color/mode",PROPERTY_HINT_ENUM,"White,Color,Gradient,Gradient Image",usage));
- if (color_type==COLOR_CUSTOM) {
- p_list->push_back(PropertyInfo(Variant::COLOR,"color/color",PROPERTY_HINT_NONE,"",usage));
-
- }
- if (color_type==COLOR_GRADIENT_RANGE) {
- p_list->push_back(PropertyInfo(Variant::COLOR,"color/begin",PROPERTY_HINT_NONE,"",usage));
- p_list->push_back(PropertyInfo(Variant::COLOR,"color/end",PROPERTY_HINT_NONE,"",usage));
- }
- if (color_type==COLOR_GRADIENT_IMAGE) {
- p_list->push_back(PropertyInfo(Variant::STRING,"color/image",PROPERTY_HINT_GLOBAL_FILE,"",usage));
- }
- p_list->push_back(PropertyInfo(Variant::BOOL,"color/monochrome",PROPERTY_HINT_NONE,"",usage));
- }
-
- p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/round_advance"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/enable_filter"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/premultiply_alpha"));
-
- }
-
-
- static void _bind_methods() {
-
-
- ADD_SIGNAL( MethodInfo("changed"));
- }
-
-
- void reset() {
-
- char_extra_spacing=0;
- top_extra_spacing=0;
- bottom_extra_spacing=0;
- space_extra_spacing=0;
-
- character_set=CHARSET_LATIN;
-
- shadow=false;
- shadow_radius=2;
- shadow_color=Color(0,0,0,0.3);
- shadow_transition=1.0;
-
- shadow2=false;
- shadow2_radius=2;
- shadow2_color=Color(0,0,0,0.3);
- shadow2_transition=1.0;
-
- color_type=COLOR_WHITE;
- color=Color(1,1,1,1);
- gradient_begin=Color(1,1,1,1);
- gradient_end=Color(0.5,0.5,0.5,1);
- color_use_monochrome=false;
-
- font_mode=FONT_BITMAP;
- round_advance=true;
- enable_filter=true;
- premultiply_alpha=false;
-
- }
-
- _EditorFontImportOptions() {
-
- font_mode=FONT_BITMAP;
-
- char_extra_spacing=0;
- top_extra_spacing=0;
- bottom_extra_spacing=0;
- space_extra_spacing=0;
-
- character_set=CHARSET_LATIN;
-
- shadow=false;
- shadow_radius=2;
- shadow_color=Color(0,0,0,0.3);
- shadow_transition=1.0;
-
- shadow2=false;
- shadow2_radius=2;
- shadow2_color=Color(0,0,0,0.3);
- shadow2_transition=1.0;
-
- color_type=COLOR_WHITE;
- color=Color(1,1,1,1);
- gradient_begin=Color(1,1,1,1);
- gradient_end=Color(0.5,0.5,0.5,1);
- color_use_monochrome=false;
-
- round_advance=true;
- enable_filter=true;
- premultiply_alpha=false;
- }
-
-
-};
-
-
-class EditorFontImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorFontImportDialog, ConfirmationDialog);
-
-
- EditorLineEditFileChooser *source;
- EditorLineEditFileChooser *dest;
- SpinBox *font_size;
- LineEdit *test_string;
- ColorPickerButton *test_color;
- Label *test_label;
- PropertyEditor *prop_edit;
- Timer *timer;
- ConfirmationDialog *error_dialog;
-
-
- Ref<ResourceImportMetadata> get_rimd() {
-
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
- List<PropertyInfo> pl;
- options->_get_property_list(&pl);
- for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) {
-
- Variant v;
- String opt=E->get().name;
- options->_get(opt,v);
- if (opt=="color/image" || opt=="character_set/custom") {
- v = EditorImportPlugin::validate_source_path(v);
- }
- imd->set_option(opt,v);
- }
-
- String src_path = EditorImportPlugin::validate_source_path(source->get_line_edit()->get_text());
- //print_line("pre src path "+source->get_line_edit()->get_text());
- //print_line("src path "+src_path);
- imd->add_source(src_path);
- imd->set_option("font/size",font_size->get_value());
-
- return imd;
-
- }
-
- void _src_changed(String) {
- _prop_changed();
- }
-
- void _update_text2(String) {
- _update_text();
- }
- void _update_text3(Color) {
- _update_text();
- }
-
- void _update_text() {
-
- test_label->set_text("");
- test_label->set_text(test_string->get_text());
- test_label->add_color_override("font_color",test_color->get_pick_color());
- }
-
- void _update() {
-
- Ref<ResourceImportMetadata> imd = get_rimd();
- Ref<BitmapFont> font = plugin->generate_font(imd);
- test_label->add_font_override("font",font);
- _update_text();
- }
-
- void _font_size_changed(double) {
-
- _prop_changed();
- }
-
- void _prop_changed() {
-
- timer->start();
- }
-
- void _import_inc(String p_font) {
-
- Ref<BitmapFont> font = ResourceLoader::load(p_font);
- if (!font.is_valid())
- return;
- Ref<ImageTexture> tex = font->get_texture(0);
- if (tex.is_null())
- return;
- FileAccessRef f=FileAccess::open(p_font.get_basename()+".inc",FileAccess::WRITE);
- Vector<CharType> ck = font->get_char_keys();
-
- f->store_line("static const int _builtin_font_height="+itos(font->get_height())+";");
- f->store_line("static const int _builtin_font_ascent="+itos(font->get_ascent())+";");
- f->store_line("static const int _builtin_font_charcount="+itos(ck.size())+";");
- f->store_line("static const int _builtin_font_charrects["+itos(ck.size())+"][8]={");
- f->store_line("/* charidx , ofs_x, ofs_y, size_x, size_y, valign, halign, advance */");
-
- for(int i=0;i<ck.size();i++) {
- CharType k=ck[i];
- BitmapFont::Character c=font->get_character(k);
- f->store_line("{"+itos(k)+","+rtos(c.rect.pos.x)+","+rtos(c.rect.pos.y)+","+rtos(c.rect.size.x)+","+rtos(c.rect.size.y)+","+rtos(c.v_align)+","+rtos(c.h_align)+","+rtos(c.advance)+"},");
- }
- f->store_line("};");
-
- Vector<BitmapFont::KerningPairKey> kp=font->get_kerning_pair_keys();
- f->store_line("static const int _builtin_font_kerning_pair_count="+itos(kp.size())+";");
- f->store_line("static const int _builtin_font_kerning_pairs["+itos(kp.size())+"][3]={");
- for(int i=0;i<kp.size();i++) {
-
- int d = font->get_kerning_pair(kp[i].A,kp[i].B);
- f->store_line("{"+itos(kp[i].A)+","+itos(kp[i].B)+","+itos(d)+"},");
- }
-
- f->store_line("};");
- Image img = tex->get_data();
-
- f->store_line("static const int _builtin_font_img_width="+itos(img.get_width())+";");
- f->store_line("static const int _builtin_font_img_height="+itos(img.get_height())+";");
-
- String fname = p_font.get_basename()+".sv.png";
- ResourceSaver::save(fname,tex);
- Vector<uint8_t> data=FileAccess::get_file_as_array(fname);
-
-
- f->store_line("static const int _builtin_font_img_data_size="+itos(data.size())+";");
- f->store_line("static const unsigned char _builtin_font_img_data["+itos(data.size())+"]={");
-
-
-
- for(int i=0;i<data.size();i++) {
-
- f->store_line(itos(data[i])+",");
-
- }
- f->store_line("};");
-
- }
-
- void _import() {
-
- if (source->get_line_edit()->get_text()=="") {
- error_dialog->set_text(TTR("No source font file!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- if (dest->get_line_edit()->get_text()=="") {
- error_dialog->set_text(TTR("No target font resource!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- if (dest->get_line_edit()->get_text().get_file()==".font") {
- dest->get_line_edit()->set_text(dest->get_line_edit()->get_text().get_base_dir() + "/" + source->get_line_edit()->get_text().get_file().get_basename() + ".font" );
- }
-
- if (dest->get_line_edit()->get_text().get_extension() == dest->get_line_edit()->get_text()) {
- dest->get_line_edit()->set_text(dest->get_line_edit()->get_text() + ".font");
- }
-
- if (dest->get_line_edit()->get_text().get_extension().to_lower() != "font") {
- error_dialog->set_text(TTR("Invalid file extension.\nPlease use .font."));
- error_dialog->popup_centered(Size2(200,100));
- return;
- }
-
- Ref<ResourceImportMetadata> rimd = get_rimd();
-
- if (rimd.is_null()) {
- error_dialog->set_text(TTR("Can't load/process source font."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- Error err = plugin->import(dest->get_line_edit()->get_text(),rimd);
-
- if (err!=OK) {
- error_dialog->set_text(TTR("Couldn't save font."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- _import_inc(dest->get_line_edit()->get_text());
-
- hide();
- }
-
- EditorFontImportPlugin *plugin;
- _EditorFontImportOptions *options;
-
- static void _bind_methods() {
-
- ClassDB::bind_method("_update",&EditorFontImportDialog::_update);
- ClassDB::bind_method("_update_text",&EditorFontImportDialog::_update_text);
- ClassDB::bind_method("_update_text2",&EditorFontImportDialog::_update_text2);
- ClassDB::bind_method("_update_text3",&EditorFontImportDialog::_update_text3);
- ClassDB::bind_method("_prop_changed",&EditorFontImportDialog::_prop_changed);
- ClassDB::bind_method("_src_changed",&EditorFontImportDialog::_src_changed);
- ClassDB::bind_method("_font_size_changed",&EditorFontImportDialog::_font_size_changed);
- ClassDB::bind_method("_import",&EditorFontImportDialog::_import);
-
- }
-
-public:
-
- void _notification(int p_what) {
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
- prop_edit->edit(options);
- _update_text();
- }
- }
-
- void popup_import(const String& p_path) {
-
- popup_centered(Size2(600,500)*EDSCALE);
-
- if (p_path!="") {
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path);
- ERR_FAIL_COND(!rimd.is_valid());
-
- dest->get_line_edit()->set_text(p_path);
- List<String> opts;
- rimd->get_options(&opts);
- options->reset();
- for(List<String>::Element *E=opts.front();E;E=E->next()) {
-
- options->_set(E->get(),rimd->get_option(E->get()));
- }
-
- String src = "";
- for(int i=0;i<rimd->get_source_count();i++) {
- if (i>0)
- src+=",";
- src+=EditorImportPlugin::expand_source_path(rimd->get_source_path(i));
- }
- source->get_line_edit()->set_text(src);
-
- font_size->set_value(rimd->get_option("font/size"));
- }
- }
-
-
- void set_source_and_dest(const String& p_font,const String& p_dest) {
- source->get_line_edit()->set_text(p_font);
- dest->get_line_edit()->set_text(p_dest);
- _prop_changed();
- }
-
- EditorFontImportDialog(EditorFontImportPlugin *p_plugin) {
- plugin=p_plugin;
- VBoxContainer *vbc = memnew( VBoxContainer );
- add_child(vbc);
- //set_child_rect(vbc);
- HBoxContainer *hbc = memnew( HBoxContainer);
- vbc->add_child(hbc);
- VBoxContainer *vbl = memnew( VBoxContainer );
- hbc->add_child(vbl);
- hbc->set_v_size_flags(SIZE_EXPAND_FILL);
- vbl->set_h_size_flags(SIZE_EXPAND_FILL);
- VBoxContainer *vbr = memnew( VBoxContainer );
- hbc->add_child(vbr);
- vbr->set_h_size_flags(SIZE_EXPAND_FILL);
-
- source = memnew( EditorLineEditFileChooser );
- source->get_file_dialog()->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- source->get_file_dialog()->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- source->get_file_dialog()->add_filter("*.ttf;TrueType");
- source->get_file_dialog()->add_filter("*.otf;OpenType");
- source->get_file_dialog()->add_filter("*.fnt;BMFont");
- source->get_line_edit()->connect("text_entered",this,"_src_changed");
-
- vbl->add_margin_child(TTR("Source Font:"),source);
- font_size = memnew( SpinBox );
- vbl->add_margin_child(TTR("Source Font Size:"),font_size);
- font_size->set_min(3);
- font_size->set_max(256);
- font_size->set_value(16);
- font_size->connect("value_changed",this,"_font_size_changed");
- dest = memnew( EditorLineEditFileChooser );
- //
- List<String> fl;
- Ref<BitmapFont> font= memnew(BitmapFont);
- dest->get_file_dialog()->add_filter("*.font ; Font" );
- /*
- ResourceSaver::get_recognized_extensions(font,&fl);
- for(List<String>::Element *E=fl.front();E;E=E->next()) {
- dest->get_file_dialog()->add_filter("*."+E->get());
- }
- */
-
- vbl->add_margin_child(TTR("Dest Resource:"),dest);
- HBoxContainer *testhb = memnew( HBoxContainer );
- test_string = memnew( LineEdit );
- test_string->set_text(TTR("The quick brown fox jumps over the lazy dog."));
- test_string->set_h_size_flags(SIZE_EXPAND_FILL);
- test_string->set_stretch_ratio(5);
-
- testhb->add_child(test_string);
- test_color = memnew( ColorPickerButton );
- test_color->set_pick_color(get_color("font_color","Label"));
- test_color->set_h_size_flags(SIZE_EXPAND_FILL);
- test_color->set_stretch_ratio(1);
- test_color->connect("color_changed",this,"_update_text3");
- testhb->add_child(test_color);
-
- vbl->add_spacer();
- vbl->add_margin_child(TTR("Test:")+" ",testhb);
- /*
- HBoxContainer *upd_hb = memnew( HBoxContainer );
- //vbl->add_child(upd_hb);
- upd_hb->add_spacer();
- Button *update = memnew( Button);
- upd_hb->add_child(update);
- update->set_text("Update");
- update->connect("pressed",this,"_update");
-*/
- options = memnew( _EditorFontImportOptions );
- prop_edit = memnew( PropertyEditor() );
- vbr->add_margin_child(TTR("Options:"),prop_edit,true);
- options->connect("changed",this,"_prop_changed");
-
- prop_edit->hide_top_label();
-
- Panel *panel = memnew( Panel );
- vbc->add_child(panel);
- test_label = memnew( Label );
- test_label->set_autowrap(true);
- panel->add_child(test_label);
- test_label->set_area_as_parent_rect();
- panel->set_v_size_flags(SIZE_EXPAND_FILL);
- test_string->connect("text_changed",this,"_update_text2");
- set_title(TTR("Font Import"));
- timer = memnew( Timer );
- add_child(timer);
- timer->connect("timeout",this,"_update");
- timer->set_wait_time(0.4);
- timer->set_one_shot(true);
-
- get_ok()->connect("pressed", this,"_import");
- get_ok()->set_text(TTR("Import"));
-
- error_dialog = memnew ( ConfirmationDialog );
- add_child(error_dialog);
- error_dialog->get_ok()->set_text(TTR("Accept"));
- set_hide_on_ok(false);
-
-
- }
-
- ~EditorFontImportDialog() {
- memdelete(options);
- }
-};
-
-
-///////////////////////////////////////
-
-
-
-struct _EditorFontData {
-
- Vector<uint8_t> bitmap;
- int width,height;
- int ofs_x; //offset to center, from ABOVE
- int ofs_y; //offset to beginning, from LEFT
- int valign; //vertical alignment
- int halign;
- float advance;
- int character;
- int glyph;
-
- int texture;
- Image blit;
- Point2i blit_ofs;
- //bool printable;
-
-};
-
-
-struct _EditorFontDataSort {
-
- bool operator()(const _EditorFontData *p_A,const _EditorFontData *p_B) const {
- return p_A->height > p_B->height;
- };
-};
-
-struct _EditorKerningKey {
-
- CharType A,B;
- bool operator<(const _EditorKerningKey& p_k) const { return (A==p_k.A)?(B<p_k.B):(A<p_k.A); }
-
-};
-
-
-static unsigned char get_SDF_radial(
- unsigned char *fontmap,
- int w, int h,
- int x, int y,
- int max_radius )
-{
- //hideous brute force method
- float d2 = max_radius*max_radius+1.0;
- unsigned char v = fontmap[x+y*w];
- for( int radius = 1; (radius <= max_radius) && (radius*radius < d2); ++radius )
- {
- int line, lo, hi;
- //north
- line = y - radius;
- if( (line >= 0) && (line < h) )
- {
- lo = x - radius;
- hi = x + radius;
- if( lo < 0 ) { lo = 0; }
- if( hi >= w ) { hi = w-1; }
- int idx = line * w + lo;
- for( int i = lo; i <= hi; ++i )
- {
- //check this pixel
- if( fontmap[idx] != v )
- {
- float nx = i - x;
- float ny = line - y;
- float nd2 = nx*nx+ny*ny;
- if( nd2 < d2 )
- {
- d2 = nd2;
- }
- }
- //move on
- ++idx;
- }
- }
- //south
- line = y + radius;
- if( (line >= 0) && (line < h) )
- {
- lo = x - radius;
- hi = x + radius;
- if( lo < 0 ) { lo = 0; }
- if( hi >= w ) { hi = w-1; }
- int idx = line * w + lo;
- for( int i = lo; i <= hi; ++i )
- {
- //check this pixel
- if( fontmap[idx] != v )
- {
- float nx = i - x;
- float ny = line - y;
- float nd2 = nx*nx+ny*ny;
- if( nd2 < d2 )
- {
- d2 = nd2;
- }
- }
- //move on
- ++idx;
- }
- }
- //west
- line = x - radius;
- if( (line >= 0) && (line < w) )
- {
- lo = y - radius + 1;
- hi = y + radius - 1;
- if( lo < 0 ) { lo = 0; }
- if( hi >= h ) { hi = h-1; }
- int idx = lo * w + line;
- for( int i = lo; i <= hi; ++i )
- {
- //check this pixel
- if( fontmap[idx] != v )
- {
- float nx = line - x;
- float ny = i - y;
- float nd2 = nx*nx+ny*ny;
- if( nd2 < d2 )
- {
- d2 = nd2;
- }
- }
- //move on
- idx += w;
- }
- }
- //east
- line = x + radius;
- if( (line >= 0) && (line < w) )
- {
- lo = y - radius + 1;
- hi = y + radius - 1;
- if( lo < 0 ) { lo = 0; }
- if( hi >= h ) { hi = h-1; }
- int idx = lo * w + line;
- for( int i = lo; i <= hi; ++i )
- {
- //check this pixel
- if( fontmap[idx] != v )
- {
- float nx = line - x;
- float ny = i - y;
- float nd2 = nx*nx+ny*ny;
- if( nd2 < d2 )
- {
- d2 = nd2;
- }
- }
- //move on
- idx += w;
- }
- }
- }
- d2 = sqrtf( d2 );
- if( v==0 )
- {
- d2 = -d2;
- }
- d2 *= 127.5 / max_radius;
- d2 += 127.5;
- if( d2 < 0.0 ) d2 = 0.0;
- if( d2 > 255.0 ) d2 = 255.0;
- return (unsigned char)(d2 + 0.5);
-}
-
-
-Ref<BitmapFont> EditorFontImportPlugin::generate_font(const Ref<ResourceImportMetadata>& p_from, const String &p_existing) {
-
-
-
- Ref<ResourceImportMetadata> from = p_from;
- ERR_FAIL_COND_V(from->get_source_count()!=1,Ref<BitmapFont>());
-
- String src_path = EditorImportPlugin::expand_source_path(from->get_source_path(0));
-
- if (src_path.get_extension().to_lower()=="fnt") {
-
- if (ResourceLoader::load(src_path).is_valid()) {
- EditorNode::get_singleton()->show_warning(TTR("Path:")+" "+src_path+"\n"+TTR("This file is already a Godot font file, please supply a BMFont type file instead."));
- return Ref<BitmapFont>();
- }
-
- Ref<BitmapFont> font;
- font.instance();
- Error err = font->create_from_fnt(src_path);
- if (err) {
- EditorNode::get_singleton()->show_warning(TTR("Path:")+" "+src_path+"\n"+TTR("Failed opening as BMFont file."));
- return Ref<BitmapFont>();
- }
-
- return font;
- }
-
- int size = from->get_option("font/size");
-
-#ifdef FREETYPE_ENABLED
- FT_Library library; /* handle to library */
- FT_Face face; /* handle to face object */
-
- Vector<_EditorFontData*> font_data_list;
-
- int error = FT_Init_FreeType( &library );
-
- ERR_EXPLAIN(TTR("Error initializing FreeType."));
- ERR_FAIL_COND_V( error !=0, Ref<BitmapFont>() );
-
- print_line("loadfrom: "+src_path);
- error = FT_New_Face( library, src_path.utf8().get_data(),0,&face );
-
- if ( error == FT_Err_Unknown_File_Format ) {
- ERR_EXPLAIN(TTR("Unknown font format."));
- FT_Done_FreeType( library );
- } else if ( error ) {
-
- ERR_EXPLAIN(TTR("Error loading font."));
- FT_Done_FreeType( library );
-
- }
-
- ERR_FAIL_COND_V(error,Ref<BitmapFont>());
-
-
- int height=0;
- int ascent=0;
- int font_spacing=0;
-
- error = FT_Set_Char_Size(face,0,64*size,512,512);
-
- if ( error ) {
- FT_Done_FreeType( library );
- ERR_EXPLAIN(TTR("Invalid font size."));
- ERR_FAIL_COND_V( error,Ref<BitmapFont>() );
-
- }
-
- int font_mode = from->get_option("mode/mode");
-
- int scaler=(font_mode==_EditorFontImportOptions::FONT_DISTANCE_FIELD)?16:1;
-
- error = FT_Set_Pixel_Sizes(face,0,size*scaler);
-
- FT_GlyphSlot slot = face->glyph;
-
- //error = FT_Set_Charmap(face,ft_encoding_unicode ); /* encoding.. */
-
-
- /* PRINT CHARACTERS TO INDIVIDUAL BITMAPS */
-
-
- //int space_size=5; //size for space, if none found.. 5!
- //int min_valign=500; //some ridiculous number
-
- FT_ULong charcode;
- FT_UInt gindex;
-
- int max_up=-1324345; ///gibberish
- int max_down=124232;
-
- Map<_EditorKerningKey,int> kerning_map;
-
- charcode = FT_Get_First_Char( face, &gindex );
-
- Set<CharType> import_chars;
-
- int import_mode = from->get_option("character_set/mode");
- bool round_advance = from->get_option("advanced/round_advance");
-
- if (import_mode>=_EditorFontImportOptions::CHARSET_CUSTOM) {
-
- //load from custom text
- String path = from->get_option("character_set/custom");
-
- FileAccess *fa = FileAccess::open(EditorImportPlugin::expand_source_path(path),FileAccess::READ);
-
- if ( !fa ) {
-
- FT_Done_FreeType( library );
- ERR_EXPLAIN(TTR("Invalid font custom source."));
- ERR_FAIL_COND_V( !fa,Ref<BitmapFont>() );
-
- }
-
-
- while(!fa->eof_reached()) {
-
- String line = fa->get_line();
- for(int i=0;i<line.length();i++) {
- import_chars.insert(line[i]);
- }
- }
-
- if (import_mode==_EditorFontImportOptions::CHARSET_CUSTOM_LATIN) {
-
- for(int i=32;i<128;i++)
- import_chars.insert(i);
- }
-
- memdelete(fa);
- }
-
- int xsize=0;
- while ( gindex != 0 )
- {
-
- bool skip=false;
- error = FT_Load_Char( face, charcode, font_mode==_EditorFontImportOptions::FONT_BITMAP?FT_LOAD_RENDER:FT_LOAD_MONOCHROME );
- if (error) skip=true;
- else error = FT_Render_Glyph( face->glyph, font_mode==_EditorFontImportOptions::FONT_BITMAP?ft_render_mode_normal:ft_render_mode_mono );
- if (error) {
- skip=true;
- } else if (!skip) {
-
- switch(import_mode) {
-
- case _EditorFontImportOptions::CHARSET_ASCII: skip = charcode>127; break;
- case _EditorFontImportOptions::CHARSET_LATIN: skip = charcode>255 ;break;
- case _EditorFontImportOptions::CHARSET_UNICODE: break; //none
- case _EditorFontImportOptions::CHARSET_CUSTOM:
- case _EditorFontImportOptions::CHARSET_CUSTOM_LATIN: skip = !import_chars.has(charcode); break;
-
- }
- }
-
- if (charcode<=32) //??
- skip=true;
-
- if (skip) {
- charcode=FT_Get_Next_Char(face,charcode,&gindex);
- continue;
- }
-
- _EditorFontData * fdata = memnew( _EditorFontData );
-
-
- int w = slot->bitmap.width;
- int h = slot->bitmap.rows;
- int p = slot->bitmap.pitch;
-
- //print_line("W: "+itos(w)+" P: "+itos(slot->bitmap.pitch));
-
- if (font_mode==_EditorFontImportOptions::FONT_DISTANCE_FIELD) {
-
- //oversize the holding buffer so I can smooth it!
- int sw = w + scaler * 4;
- int sh = h + scaler * 4;
- //do the SDF
- int sdfw = sw / scaler;
- int sdfh = sh / scaler;
-
- fdata->width=sdfw;
- fdata->height=sdfh;
- } else {
- fdata->width=w;
- fdata->height=h;
- }
-
- fdata->character=charcode;
- fdata->glyph=FT_Get_Char_Index(face,charcode);
- if (charcode=='x')
- xsize=w/scaler;
-
-
-
- fdata->valign=slot->bitmap_top;
- fdata->halign=slot->bitmap_left;
-
- if (round_advance)
- fdata->advance=(slot->advance.x+(1<<5))>>6;
- else
- fdata->advance=slot->advance.x/float(1<<6);
-
- if (font_mode==_EditorFontImportOptions::FONT_DISTANCE_FIELD) {
-
- fdata->halign = fdata->halign / scaler - 1.5;
- fdata->valign = fdata->valign / scaler + 1.5;
- fdata->advance/=scaler;
-
- }
-
- fdata->advance+=font_spacing;
-
-
- if (charcode<127) {
- int top = fdata->valign;
- int hmax = h/scaler;
-
- if (top>max_up) {
-
- max_up=top;
- }
-
-
- if ( (top - hmax)<max_down ) {
-
- max_down=top - hmax;
- }
- }
-
- if (font_mode==_EditorFontImportOptions::FONT_DISTANCE_FIELD) {
-
-
- //oversize the holding buffer so I can smooth it!
- int sw = w + scaler * 4;
- int sh = h + scaler * 4;
-
- unsigned char *smooth_buf = new unsigned char[sw*sh];
-
- for( int i = 0; i < sw*sh; ++i ) {
- smooth_buf[i] = 0;
- }
-
- // copy the glyph into the buffer to be smoothed
- unsigned char *buf = slot->bitmap.buffer;
- for( int j = 0; j < h; ++j ) {
- for( int i = 0; i < w; ++i ) {
- smooth_buf[scaler*2+i+(j+scaler*2)*sw] = 255 * ((buf[j*p+(i>>3)] >> (7 - (i & 7))) & 1);
- }
- }
-
- // do the SDF
- int sdfw = fdata->width;
- int sdfh = fdata->height;
-
- fdata->bitmap.resize( sdfw*sdfh );
-
- for( int j = 0; j < sdfh; ++j ) {
- for( int i = 0; i < sdfw; ++i ) {
- int pd_idx = j*sdfw+i;
-
- //fdata->bitmap[j*slot->bitmap.width+i]=slot->bitmap.buffer[j*slot->bitmap.width+i];
-
- fdata->bitmap[pd_idx] =
- //get_SDF
- get_SDF_radial
- ( smooth_buf, sw, sh,
- i*scaler + (scaler >>1), j*scaler + (scaler >>1),
- 2*scaler );
-
- }
- }
-
- delete [] smooth_buf;
-
- } else {
- fdata->bitmap.resize( slot->bitmap.width*slot->bitmap.rows );
- for (int i=0;i<slot->bitmap.width;i++) {
- for (int j=0;j<slot->bitmap.rows;j++) {
-
- fdata->bitmap[j*slot->bitmap.width+i]=slot->bitmap.buffer[j*slot->bitmap.width+i];
- }
- }
- }
-
- font_data_list.push_back(fdata);
- charcode=FT_Get_Next_Char(face,charcode,&gindex);
-// printf("reading char %i\n",charcode);
- }
-
- /* SPACE */
-
- _EditorFontData *spd = memnew( _EditorFontData );
- spd->advance=0;
- spd->character=' ';
- spd->halign=0;
- spd->valign=0;
- spd->width=0;
- spd->height=0;
- spd->ofs_x=0;
- spd->ofs_y=0;
-
- if (!FT_Load_Char( face, ' ', FT_LOAD_RENDER ) && !FT_Render_Glyph( face->glyph, font_mode==_EditorFontImportOptions::FONT_BITMAP?ft_render_mode_normal:ft_render_mode_mono )) {
-
- spd->advance = slot->advance.x>>6; //round to nearest or store as float
- spd->advance/=scaler;
- spd->advance+=font_spacing;
- } else {
-
- spd->advance=xsize;
- spd->advance+=font_spacing;
- }
-
- font_data_list.push_back(spd);
-
- Set<CharType> exported;
- for (int i=0; i<font_data_list.size(); i++) {
- exported.insert(font_data_list[i]->character);
- };
- int missing = 0;
- for(Set<CharType>::Element *E=import_chars.front();E;E=E->next()) {
- CharType c = E->get();
- if (!exported.has(c)) {
- CharType str[2] = {c, 0};
- printf("** Warning: character %i (%ls) not exported\n", (int)c, str);
- ++missing;
- };
- };
- print_line("total_chars: "+itos(font_data_list.size()));
-
- /* KERNING */
-
-
- for(int i=0;i<font_data_list.size();i++) {
-
- if (font_data_list[i]->character>512)
- continue;
- for(int j=0;j<font_data_list.size();j++) {
-
- if (font_data_list[j]->character>512)
- continue;
-
- FT_Vector delta;
- FT_Get_Kerning( face, font_data_list[i]->glyph,font_data_list[j]->glyph, FT_KERNING_DEFAULT, &delta );
-
- if (delta.x!=0) {
-
- _EditorKerningKey kpk;
- kpk.A = font_data_list[i]->character;
- kpk.B = font_data_list[j]->character;
- int kern = ((-delta.x)+(1<<5))>>6;
-
- if (kern==0)
- continue;
- kerning_map[kpk]=kern/scaler;
- }
- }
- }
-
- height=max_up-max_down;
- ascent=max_up;
-
- /* FIND OUT WHAT THE FONT HEIGHT FOR THIS IS */
-
- /* ADJUST THE VALIGN FOR EACH CHARACTER */
-
- for (int i=0;i<(int)font_data_list.size();i++) {
-
- font_data_list[i]->valign=max_up-font_data_list[i]->valign;
- }
-
-
-
- /* ADD THE SPACEBAR CHARACTER */
-/*
- _EditorFontData * fdata = new _EditorFontData;
-
- fdata->character=32;
- fdata->bitmap=0;
- fdata->width=xsize;
- fdata->height=1;
- fdata->valign=0;
-
- font_data_list.push_back(fdata);
-*/
- /* SORT BY HEIGHT, SO THEY FIT BETTER ON THE TEXTURE */
-
- font_data_list.sort_custom<_EditorFontDataSort>();
- Color *color=memnew_arr(Color,height);
-
- int gradient_type=from->get_option("color/mode");
- switch(gradient_type) {
- case _EditorFontImportOptions::COLOR_WHITE: {
-
- for(int i=0;i<height;i++){
- color[i]=Color(1,1,1,1);
- }
-
- } break;
- case _EditorFontImportOptions::COLOR_CUSTOM: {
-
- Color cc = from->get_option("color/color");
- for(int i=0;i<height;i++){
- color[i]=cc;
- }
-
- } break;
- case _EditorFontImportOptions::COLOR_GRADIENT_RANGE: {
-
- Color src=from->get_option("color/begin");
- Color to=from->get_option("color/end");
- for(int i=0;i<height;i++){
- color[i]=src.linear_interpolate(to,i/float(height));
- }
-
- } break;
- case _EditorFontImportOptions::COLOR_GRADIENT_IMAGE: {
-
- String fp = EditorImportPlugin::expand_source_path(from->get_option("color/image"));
- Image img;
- Error err = ImageLoader::load_image(fp,&img);
- if (err==OK) {
-
- for(int i=0;i<height;i++){
- //color[i]=img.get_pixel(0,i*img.get_height()/height);
- }
- } else {
-
- for(int i=0;i<height;i++){
- color[i]=Color(1,1,1,1);
- }
- }
-
- } break;
- }
-
-
- for(int i=0;i<font_data_list.size();i++) {
-
- if (font_data_list[i]->bitmap.size()==0)
- continue;
-
- int margin[4]={0,0,0,0};
-
- if (from->get_option("shadow/enabled").operator bool()) {
- int r=from->get_option("shadow/radius");
- Point2i ofs=Point2(from->get_option("shadow/offset"));
- margin[ MARGIN_LEFT ] = MAX( r - ofs.x, 0);
- margin[ MARGIN_RIGHT ] = MAX( r + ofs.x, 0);
- margin[ MARGIN_TOP ] = MAX( r - ofs.y, 0);
- margin[ MARGIN_BOTTOM ] = MAX( r + ofs.y, 0);
-
- }
-
- if (from->get_option("shadow2/enabled").operator bool()) {
- int r=from->get_option("shadow2/radius");
- Point2i ofs=Point2(from->get_option("shadow2/offset"));
- margin[ MARGIN_LEFT ] = MAX( r - ofs.x, margin[ MARGIN_LEFT ]);
- margin[ MARGIN_RIGHT ] = MAX( r + ofs.x, margin[ MARGIN_RIGHT ]);
- margin[ MARGIN_TOP ] = MAX( r - ofs.y, margin[ MARGIN_TOP ]);
- margin[ MARGIN_BOTTOM ] = MAX( r + ofs.y, margin[ MARGIN_BOTTOM ]);
-
- }
-
- Size2i s;
- s.width=font_data_list[i]->width+margin[MARGIN_LEFT]+margin[MARGIN_RIGHT];
- s.height=font_data_list[i]->height+margin[MARGIN_TOP]+margin[MARGIN_BOTTOM];
- Point2i o;
- o.x=margin[MARGIN_LEFT];
- o.y=margin[MARGIN_TOP];
-
- int ow=font_data_list[i]->width;
- int oh=font_data_list[i]->height;
-
- PoolVector<uint8_t> pixels;
- pixels.resize(s.x*s.y*4);
-
- PoolVector<uint8_t>::Write w = pixels.write();
- //print_line("val: "+itos(font_data_list[i]->valign));
- for(int y=0;y<s.height;y++) {
-
- int yc=CLAMP(y-o.y+font_data_list[i]->valign,0,height-1);
- Color c=color[yc];
- c.a=0;
-
- for(int x=0;x<s.width;x++) {
-
- int ofs=y*s.x+x;
- w[ofs*4+0]=c.r*255.0;
- w[ofs*4+1]=c.g*255.0;
- w[ofs*4+2]=c.b*255.0;
- w[ofs*4+3]=c.a*255.0;
- }
- }
-
-
- for(int si=0;si<2;si++) {
-
-#define S_VAR(m_v) (String(si == 0 ? "shadow/" : "shadow2/") + m_v)
- if (from->get_option(S_VAR("enabled")).operator bool()) {
- int r = from->get_option(S_VAR("radius"));
-
- Color sc = from->get_option(S_VAR("color"));
- Point2i so=Point2(from->get_option(S_VAR("offset")));
-
- float tr = from->get_option(S_VAR("transition"));
- print_line("shadow enabled: "+itos(si));
-
- Vector<uint8_t> s2buf;
- s2buf.resize(s.x*s.y);
- uint8_t *wa=s2buf.ptr();
-
- for(int j=0;j<s.x*s.y;j++){
-
- wa[j]=0;
- }
-
- // blit shadowa
- for(int x=0;x<ow;x++) {
- for(int y=0;y<oh;y++) {
- int ofs = (o.y+y+so.y)*s.x+x+o.x+so.x;
- wa[ofs]=font_data_list[i]->bitmap[y*ow+x];
- }
- }
- //blur shadow2 with separatable convolution
-
- if (r>0) {
-
- Vector<uint8_t> pixels2;
- pixels2.resize(s2buf.size());
- uint8_t *w2=pixels2.ptr();
- //vert
- for(int x=0;x<s.width;x++) {
- for(int y=0;y<s.height;y++) {
-
- int ofs = y*s.width+x;
- int sum=wa[ofs];
-
- for(int k=1;k<=r;k++) {
-
- int ofs_d=MIN(y+k,s.height-1)*s.width+x;
- int ofs_u=MAX(y-k,0)*s.width+x;
- sum+=wa[ofs_d];
- sum+=wa[ofs_u];
- }
-
- w2[ofs]=sum/(r*2+1);
-
- }
- }
- //horiz
- for(int x=0;x<s.width;x++) {
- for(int y=0;y<s.height;y++) {
-
- int ofs = y*s.width+x;
- int sum=w2[ofs];
-
- for(int k=1;k<=r;k++) {
-
- int ofs_r=MIN(x+k,s.width-1)+s.width*y;
- int ofs_l=MAX(x-k,0)+s.width*y;
- sum+=w2[ofs_r];
- sum+=w2[ofs_l];
- }
-
- wa[ofs]=Math::pow(float(sum/(r*2+1))/255.0f,tr)*255.0f;
-
- }
- }
-
- }
-
- //blend back
-
- for(int j=0;j<s.x*s.y;j++){
- Color wd(w[j*4+0]/255.0,w[j*4+1]/255.0,w[j*4+2]/255.0,w[j*4+3]/255.0);
- Color ws(sc.r,sc.g,sc.b,sc.a*(wa[j]/255.0));
- Color b = wd.blend(ws);
-
- w[j*4+0]=b.r*255.0;
- w[j*4+1]=b.g*255.0;
- w[j*4+2]=b.b*255.0;
- w[j*4+3]=b.a*255.0;
-
- }
- }
- }
-
- for(int y=0;y<oh;y++) {
- int yc=CLAMP(y+font_data_list[i]->valign,0,height-1);
- Color sc=color[yc];
- for(int x=0;x<ow;x++) {
- int ofs = (o.y+y)*s.x+x+o.x;
- float c = font_data_list[i]->bitmap[y*ow+x]/255.0;
- Color src_col=sc;
- src_col.a*=c;
- Color dst_col(w[ofs*4+0]/255.0,w[ofs*4+1]/255.0,w[ofs*4+2]/255.0,w[ofs*4+3]/255.0);
- dst_col = dst_col.blend(src_col);
- w[ofs*4+0]=dst_col.r*255.0;
- w[ofs*4+1]=dst_col.g*255.0;
- w[ofs*4+2]=dst_col.b*255.0;
- w[ofs*4+3]=dst_col.a*255.0;
- }
- }
-
-
- w=PoolVector<uint8_t>::Write();
-
- Image img(s.width,s.height,0,Image::FORMAT_RGBA8,pixels);
-
- font_data_list[i]->blit=img;
- font_data_list[i]->blit_ofs=o;
-
- }
-
- //make atlas
- int spacing=2;
- Vector<Size2i> sizes;
- sizes.resize(font_data_list.size());
- for(int i=0;i<font_data_list.size();i++) {
-
- sizes[i]=Size2(font_data_list[i]->blit.get_width()+spacing*2,font_data_list[i]->blit.get_height()+spacing*2);
-
- }
- Vector<Point2i> res;
- Size2i res_size;
- EditorAtlas::fit(sizes,res,res_size);
- res_size.x=nearest_power_of_2(res_size.x);
- res_size.y=nearest_power_of_2(res_size.y);
- print_line("Atlas size: "+res_size);
-
- Image atlas(res_size.x,res_size.y,0,Image::FORMAT_RGBA8);
-
- for(int i=0;i<font_data_list.size();i++) {
-
- if (font_data_list[i]->bitmap.size()==0)
- continue;
- atlas.blit_rect(font_data_list[i]->blit,Rect2(0,0,font_data_list[i]->blit.get_width(),font_data_list[i]->blit.get_height()),res[i]+Size2(spacing,spacing));
- font_data_list[i]->ofs_x=res[i].x+spacing;
- font_data_list[i]->ofs_y=res[i].y+spacing;
-
-
- }
-
- if (from->has_option("advanced/premultiply_alpha") && bool(from->get_option("advanced/premultiply_alpha"))) {
-
- PoolVector<uint8_t> data = atlas.get_data();
- int dl = data.size();
- {
- PoolVector<uint8_t>::Write w = data.write();
-
- for(int i=0;i<dl;i+=4) {
-
- w[i+0]= uint8_t(int(w[i+0])*int(w[i+3])/255);
- w[i+1]= uint8_t(int(w[i+1])*int(w[i+3])/255);
- w[i+2]= uint8_t(int(w[i+2])*int(w[i+3])/255);
- }
- }
-
- atlas=Image(res_size.x,res_size.y,0,Image::FORMAT_RGBA8,data);
- }
-
- if (from->has_option("color/monochrome") && bool(from->get_option("color/monochrome"))) {
-
- atlas.convert(Image::FORMAT_LA8);
- }
-
-
- if (0) {
- //debug the texture
- Ref<ImageTexture> atlast = memnew( ImageTexture );
- atlast->create_from_image(atlas);
- //atlast->create_from_image(font_data_list[5]->blit);
- TextureRect *tf = memnew( TextureRect );
- tf->set_texture(atlast);
- dialog->add_child(tf);
- }
-
-
- /* CREATE FONT */
-
- int char_space = from->get_option("extra_space/char");
- int space_space = from->get_option("extra_space/space");
- int top_space = from->get_option("extra_space/top");
- int bottom_space = from->get_option("extra_space/bottom");
- bool enable_filter = from->get_option("advanced/enable_filter");
- if (from->has_option("advanced/disable_filter")){ // this is a compatibility check for a deprecated option
- enable_filter = !from->get_option("advanced/disable_filter");
- }
-
- Ref<BitmapFont> font;
-
- if (p_existing!=String() && ResourceCache::has(p_existing)) {
-
- font = Ref<BitmapFont>( ResourceCache::get(p_existing)->cast_to<BitmapFont>());
- }
-
- if (font.is_null()) {
- font = Ref<BitmapFont>( memnew( BitmapFont ) );
- }
-
- font->clear();
- font->set_height(height+bottom_space+top_space);
- font->set_ascent(ascent+top_space);
- font->set_distance_field_hint(font_mode==_EditorFontImportOptions::FONT_DISTANCE_FIELD);
-
- //register texures
- {
- Ref<ImageTexture> t = memnew(ImageTexture);
- int flags;
- if (!enable_filter)
- flags=0;
- else
- flags=Texture::FLAG_FILTER;
- t->create_from_image(atlas,flags);
- t->set_storage( ImageTexture::STORAGE_COMPRESS_LOSSLESS );
- font->add_texture(t);
-
- }
- //register characters
-
-
- for(int i=0;i<font_data_list.size();i++) {
- _EditorFontData *fd=font_data_list[i];
- int tex_idx=0;
-
- font->add_char(fd->character,tex_idx,Rect2( fd->ofs_x, fd->ofs_y, fd->blit.get_width(), fd->blit.get_height()),Point2(fd->halign-fd->blit_ofs.x,fd->valign-fd->blit_ofs.y+top_space), fd->advance+char_space+(fd->character==' '?space_space:0));
- memdelete(fd);
- }
-
- for(Map<_EditorKerningKey,int>::Element *E=kerning_map.front();E;E=E->next()) {
-
- font->add_kerning_pair(E->key().A,E->key().B,E->get());
- }
-
- FT_Done_FreeType( library );
-
- return font;
-#else
-
- return Ref<BitmapFont>();
-#endif
-}
-
-
-String EditorFontImportPlugin::get_name() const {
-
- return "font";
-}
-String EditorFontImportPlugin::get_visible_name() const{
-
- return TTR("Font");
-}
-void EditorFontImportPlugin::import_dialog(const String& p_from){
-
- dialog->popup_import(p_from);
-}
-Error EditorFontImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from){
-
-
- Ref<BitmapFont> font = EditorFontImportPlugin::generate_font(p_from,p_path);
- if (!font.is_valid())
- return ERR_CANT_CREATE;
-
- Ref<ResourceImportMetadata> from=p_from;
- from->set_source_md5(0,FileAccess::get_md5(EditorImportPlugin::expand_source_path(from->get_source_path(0))));
- from->set_editor(get_name());
- font->set_import_metadata(from);
-
- return ResourceSaver::save(p_path,font);
-
-}
-
-void EditorFontImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
- for(int i=0;i<p_drop.size();i++) {
- String ext = p_drop[i].get_extension().to_lower();
- String file = p_drop[i].get_file();
- if (ext=="ttf" || ext=="otf" || ext=="fnt") {
-
- import_dialog();
- dialog->set_source_and_dest(p_drop[i],p_dest_path.plus_file(file.get_basename()+".font"));
- break;
- }
- }
-}
-
-
-EditorFontImportPlugin::EditorFontImportPlugin(EditorNode* p_editor) {
-
- dialog = memnew( EditorFontImportDialog(this) );
- p_editor->get_gui_base()->add_child(dialog);
-}
-#endif
diff --git a/editor/io_plugins/editor_font_import_plugin.h b/editor/io_plugins/editor_font_import_plugin.h
deleted file mode 100644
index d204b8ea97..0000000000
--- a/editor/io_plugins/editor_font_import_plugin.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*************************************************************************/
-/* editor_font_import_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_FONT_IMPORT_PLUGIN_H
-#define EDITOR_FONT_IMPORT_PLUGIN_H
-
-#include "editor/editor_export.h"
-#include "scene/resources/font.h"
-#if 0
-class EditorNode;
-class EditorFontImportDialog;
-
-class EditorFontImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorFontImportPlugin,EditorImportPlugin);
-
- EditorFontImportDialog *dialog;
-public:
-
- Ref<BitmapFont> generate_font(const Ref<ResourceImportMetadata>& p_from,const String& p_existing=String()); //used by editor
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from="");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
- virtual void import_from_drop(const Vector<String>& p_drop,const String& p_dest_path);
-
-
- EditorFontImportPlugin(EditorNode* p_editor);
-};
-
-#endif // EDITOR_FONT_IMPORT_PLUGIN_H
-#endif
diff --git a/editor/io_plugins/editor_mesh_import_plugin.cpp b/editor/io_plugins/editor_mesh_import_plugin.cpp
deleted file mode 100644
index 0c9f3a3f37..0000000000
--- a/editor/io_plugins/editor_mesh_import_plugin.cpp
+++ /dev/null
@@ -1,594 +0,0 @@
-/*************************************************************************/
-/* editor_mesh_import_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_mesh_import_plugin.h"
-
-#if 0
-
-#include "editor/editor_dir_dialog.h"
-#include "editor/editor_file_dialog.h"
-#include "editor/editor_node.h"
-#include "editor/property_editor.h"
-//#include "scene/resources/sample.h"
-#include "io/marshalls.h"
-#include "io/resource_saver.h"
-#include "os/file_access.h"
-#include "scene/resources/surface_tool.h"
-
-class _EditorMeshImportOptions : public Object {
-
- GDCLASS(_EditorMeshImportOptions,Object);
-public:
-
-
- bool generate_tangents;
- bool generate_normals;
- bool flip_faces;
- bool smooth_shading;
- bool weld_vertices;
- bool import_material;
- bool import_textures;
- float weld_tolerance;
-
-
- bool _set(const StringName& p_name, const Variant& p_value) {
-
- String n = p_name;
- if (n=="generate/tangents")
- generate_tangents=p_value;
- else if (n=="generate/normals")
- generate_normals=p_value;
- else if (n=="import/materials")
- import_material=p_value;
- else if (n=="import/textures")
- import_textures=p_value;
- else if (n=="force/flip_faces")
- flip_faces=p_value;
- else if (n=="force/smooth_shading")
- smooth_shading=p_value;
- else if (n=="force/weld_vertices")
- weld_vertices=p_value;
- else if (n=="force/weld_tolerance")
- weld_tolerance=p_value;
- else
- return false;
-
- return true;
-
- }
-
- bool _get(const StringName& p_name,Variant &r_ret) const{
-
- String n = p_name;
- if (n=="generate/tangents")
- r_ret=generate_tangents;
- else if (n=="generate/normals")
- r_ret=generate_normals;
- else if (n=="import/materials")
- r_ret=import_material;
- else if (n=="import/textures")
- r_ret=import_textures;
- else if (n=="force/flip_faces")
- r_ret=flip_faces;
- else if (n=="force/smooth_shading")
- r_ret=smooth_shading;
- else if (n=="force/weld_vertices")
- r_ret=weld_vertices;
- else if (n=="force/weld_tolerance")
- r_ret=weld_tolerance;
- else
- return false;
-
- return true;
-
- }
- void _get_property_list( List<PropertyInfo> *p_list) const{
-
- p_list->push_back(PropertyInfo(Variant::BOOL,"generate/tangents"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"generate/normals"));
- //not for nowp
- //p_list->push_back(PropertyInfo(Variant::BOOL,"import/materials"));
- //p_list->push_back(PropertyInfo(Variant::BOOL,"import/textures"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/flip_faces"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/smooth_shading"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/weld_vertices"));
- p_list->push_back(PropertyInfo(Variant::REAL,"force/weld_tolerance",PROPERTY_HINT_RANGE,"0.00001,16,0.00001"));
- //p_list->push_back(PropertyInfo(Variant::BOOL,"compress/enable"));
- //p_list->push_back(PropertyInfo(Variant::INT,"compress/bitrate",PROPERTY_HINT_ENUM,"64,96,128,192"));
-
-
- }
-
-
- static void _bind_methods() {
-
-
- ADD_SIGNAL( MethodInfo("changed"));
- }
-
-
- _EditorMeshImportOptions() {
-
- generate_tangents=true;
- generate_normals=false;
- flip_faces=false;
- smooth_shading=false;
- weld_vertices=true;
- weld_tolerance=0.0001;
- import_material=false;
- import_textures=false;
-
- }
-
-
-};
-
-class EditorMeshImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorMeshImportDialog,ConfirmationDialog);
-
- EditorMeshImportPlugin *plugin;
-
- LineEdit *import_path;
- LineEdit *save_path;
- EditorFileDialog *file_select;
- EditorDirDialog *save_select;
- AcceptDialog *error_dialog;
- PropertyEditor *option_editor;
-
- _EditorMeshImportOptions *options;
-
-
-public:
-
- void _choose_files(const Vector<String>& p_path) {
-
- String files;
- for(int i=0;i<p_path.size();i++) {
-
- if (i>0)
- files+=",";
- files+=p_path[i];
- }
- /*
- if (p_path.size()) {
- String srctex=p_path[0];
- String ipath = EditorImportDB::get_singleton()->find_source_path(srctex);
-
- if (ipath!="")
- save_path->set_text(ipath.get_base_dir());
- }*/
- import_path->set_text(files);
-
- }
- void _choose_save_dir(const String& p_path) {
-
- save_path->set_text(p_path);
- }
-
- void _browse() {
-
- file_select->popup_centered_ratio();
- }
-
- void _browse_target() {
-
- save_select->popup_centered_ratio();
- }
-
- void popup_import(const String& p_path) {
-
- popup_centered(Size2(400,400)*EDSCALE);
-
- if (p_path!="") {
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path);
- ERR_FAIL_COND(!rimd.is_valid());
-
- save_path->set_text(p_path.get_base_dir());
- List<String> opts;
- rimd->get_options(&opts);
- for(List<String>::Element *E=opts.front();E;E=E->next()) {
-
- options->_set(E->get(),rimd->get_option(E->get()));
- }
-
- String src = "";
- for(int i=0;i<rimd->get_source_count();i++) {
- if (i>0)
- src+=",";
- src+=EditorImportPlugin::expand_source_path(rimd->get_source_path(i));
- }
- import_path->set_text(src);
- }
- }
-
- void _import() {
-
- Vector<String> meshes = import_path->get_text().split(",");
- if (meshes.size()==0) {
- error_dialog->set_text(TTR("No meshes to import!"));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- String dst = save_path->get_text();
- if (dst=="") {
- error_dialog->set_text(TTR("Save path is empty!"));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- for(int i=0;i<meshes.size();i++) {
-
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
-
- List<PropertyInfo> pl;
- options->_get_property_list(&pl);
- for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) {
-
- Variant v;
- String opt=E->get().name;
- options->_get(opt,v);
- imd->set_option(opt,v);
-
- }
-
- imd->add_source(EditorImportPlugin::validate_source_path(meshes[i]));
-
- String file_path = dst.plus_file(meshes[i].get_file().get_basename()+".mesh");
-
- plugin->import(file_path,imd);
- }
-
- hide();
- }
-
- void _notification(int p_what) {
-
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
- option_editor->edit(options);
- }
- }
-
- static void _bind_methods() {
-
- ClassDB::bind_method("_choose_files",&EditorMeshImportDialog::_choose_files);
- ClassDB::bind_method("_choose_save_dir",&EditorMeshImportDialog::_choose_save_dir);
- ClassDB::bind_method("_import",&EditorMeshImportDialog::_import);
- ClassDB::bind_method("_browse",&EditorMeshImportDialog::_browse);
- ClassDB::bind_method("_browse_target",&EditorMeshImportDialog::_browse_target);
- }
-
- EditorMeshImportDialog(EditorMeshImportPlugin *p_plugin) {
-
- plugin=p_plugin;
-
- set_title(TTR("Single Mesh Import"));
- set_hide_on_ok(false);
-
- VBoxContainer *vbc = memnew( VBoxContainer );
- add_child(vbc);
- //set_child_rect(vbc);
-
- HBoxContainer *hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Source Mesh(es):"),hbc);
-
- import_path = memnew( LineEdit );
- import_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(import_path);
-
- Button * import_choose = memnew( Button );
- import_choose->set_text(" .. ");
- hbc->add_child(import_choose);
-
- import_choose->connect("pressed", this,"_browse");
-
- hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Target Path:"),hbc);
-
- save_path = memnew( LineEdit );
- save_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(save_path);
-
- Button * save_choose = memnew( Button );
- save_choose->set_text(" .. ");
- hbc->add_child(save_choose);
-
- save_choose->connect("pressed", this,"_browse_target");
-
- file_select = memnew( EditorFileDialog );
- file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- file_select->set_mode(EditorFileDialog::MODE_OPEN_FILES);
- file_select->add_filter("*.obj ; Wavefront OBJ");
- add_child(file_select);
- file_select->connect("files_selected", this,"_choose_files");
-
- save_select = memnew( EditorDirDialog );
- add_child(save_select);
- save_select->connect("dir_selected", this,"_choose_save_dir");
-
- get_ok()->connect("pressed", this,"_import");
- get_ok()->set_text(TTR("Import"));
-
- error_dialog = memnew( AcceptDialog );
- add_child(error_dialog);
-
- options = memnew( _EditorMeshImportOptions );
-
- option_editor = memnew( PropertyEditor );
- option_editor->hide_top_label();
- vbc->add_margin_child(TTR("Options:"),option_editor,true);
- }
-
- ~EditorMeshImportDialog() {
- memdelete(options);
- }
-
-};
-
-
-String EditorMeshImportPlugin::get_name() const {
-
- return "mesh";
-}
-String EditorMeshImportPlugin::get_visible_name() const{
-
- return TTR("Mesh");
-}
-void EditorMeshImportPlugin::import_dialog(const String& p_from){
-
- dialog->popup_import(p_from);
-}
-Error EditorMeshImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from){
-
-
- ERR_FAIL_COND_V(p_from->get_source_count()!=1,ERR_INVALID_PARAMETER);
-
- Ref<ResourceImportMetadata> from=p_from;
-
- String src_path=EditorImportPlugin::expand_source_path(from->get_source_path(0));
- FileAccessRef f = FileAccess::open(src_path,FileAccess::READ);
- ERR_FAIL_COND_V(!f,ERR_CANT_OPEN);
-
- Ref<Mesh> mesh;
- Map<String,Ref<Material> > name_map;
-
- if (FileAccess::exists(p_path)) {
- mesh=ResourceLoader::load(p_path,"Mesh");
- if (mesh.is_valid()) {
- for(int i=0;i<mesh->get_surface_count();i++) {
-
- if (!mesh->surface_get_material(i).is_valid())
- continue;
- String name;
- if (mesh->surface_get_name(i)!="")
- name=mesh->surface_get_name(i);
- else
- name=vformat(TTR("Surface %d"),i+1);
-
- name_map[name]=mesh->surface_get_material(i);
- }
-
- while(mesh->get_surface_count()) {
- mesh->surface_remove(0);
- }
- }
- }
-
- if (!mesh.is_valid())
- mesh = Ref<Mesh>( memnew( Mesh ) );
-
-
- bool generate_normals=from->get_option("generate/normals");
- bool generate_tangents=from->get_option("generate/tangents");
- bool flip_faces=from->get_option("force/flip_faces");
- bool force_smooth=from->get_option("force/smooth_shading");
- bool weld_vertices=from->get_option("force/weld_vertices");
- float weld_tolerance=from->get_option("force/weld_tolerance");
- Vector<Vector3> vertices;
- Vector<Vector3> normals;
- Vector<Vector2> uvs;
- String name;
-
- Ref<SurfaceTool> surf_tool = memnew( SurfaceTool) ;
- surf_tool->begin(Mesh::PRIMITIVE_TRIANGLES);
- if (force_smooth)
- surf_tool->add_smooth_group(true);
- int has_index_data=false;
-
- while(true) {
-
-
- String l = f->get_line().strip_edges();
-
- if (l.begins_with("v ")) {
- //vertex
- Vector<String> v = l.split(" ",false);
- ERR_FAIL_COND_V(v.size()<4,ERR_INVALID_DATA);
- Vector3 vtx;
- vtx.x=v[1].to_float();
- vtx.y=v[2].to_float();
- vtx.z=v[3].to_float();
- vertices.push_back(vtx);
- } else if (l.begins_with("vt ")) {
- //uv
- Vector<String> v = l.split(" ",false);
- ERR_FAIL_COND_V(v.size()<3,ERR_INVALID_DATA);
- Vector2 uv;
- uv.x=v[1].to_float();
- uv.y=1.0-v[2].to_float();
- uvs.push_back(uv);
-
- } else if (l.begins_with("vn ")) {
- //normal
- Vector<String> v = l.split(" ",false);
- ERR_FAIL_COND_V(v.size()<4,ERR_INVALID_DATA);
- Vector3 nrm;
- nrm.x=v[1].to_float();
- nrm.y=v[2].to_float();
- nrm.z=v[3].to_float();
- normals.push_back(nrm);
- } if (l.begins_with("f ")) {
- //vertex
-
- has_index_data=true;
- Vector<String> v = l.split(" ",false);
- ERR_FAIL_COND_V(v.size()<4,ERR_INVALID_DATA);
-
- //not very fast, could be sped up
-
-
- Vector<String> face[3];
- face[0] = v[1].split("/");
- face[1] = v[2].split("/");
- ERR_FAIL_COND_V(face[0].size()==0,ERR_PARSE_ERROR);
- ERR_FAIL_COND_V(face[0].size()!=face[1].size(),ERR_PARSE_ERROR);
- for(int i=2;i<v.size()-1;i++) {
-
- face[2] = v[i+1].split("/");
- ERR_FAIL_COND_V(face[0].size()!=face[2].size(),ERR_PARSE_ERROR);
- for(int j=0;j<3;j++) {
-
- int idx=j;
-
- if (!flip_faces && idx<2) {
- idx=1^idx;
- }
-
-
- if (face[idx].size()==3) {
- int norm = face[idx][2].to_int()-1;
- ERR_FAIL_INDEX_V(norm,normals.size(),ERR_PARSE_ERROR);
- surf_tool->add_normal(normals[norm]);
- }
-
- if (face[idx].size()>=2 && face[idx][1]!=String()) {
-
- int uv = face[idx][1].to_int()-1;
- ERR_FAIL_INDEX_V(uv,uvs.size(),ERR_PARSE_ERROR);
- surf_tool->add_uv(uvs[uv]);
- }
-
- int vtx = face[idx][0].to_int()-1;
- ERR_FAIL_INDEX_V(vtx,vertices.size(),ERR_PARSE_ERROR);
-
- Vector3 vertex = vertices[vtx];
- if (weld_vertices)
- vertex=vertex.snapped(weld_tolerance);
- surf_tool->add_vertex(vertex);
- }
-
- face[1]=face[2];
- }
- } else if (l.begins_with("s ") && !force_smooth) { //smoothing
- String what = l.substr(2,l.length()).strip_edges();
- if (what=="off")
- surf_tool->add_smooth_group(false);
- else
- surf_tool->add_smooth_group(true);
-
- } else if (l.begins_with("o ") || f->eof_reached()) { //new surface or done
-
- if (has_index_data) {
- //new object/surface
- if (generate_normals || force_smooth)
- surf_tool->generate_normals();
- if (uvs.size() && (normals.size() || generate_normals) && generate_tangents)
- surf_tool->generate_tangents();
-
- surf_tool->index();
- mesh = surf_tool->commit(mesh);
- if (name=="")
- name=vformat(TTR("Surface %d"),mesh->get_surface_count()-1);
- mesh->surface_set_name(mesh->get_surface_count()-1,name);
- name="";
- surf_tool->clear();
- surf_tool->begin(Mesh::PRIMITIVE_TRIANGLES);
- if (force_smooth)
- surf_tool->add_smooth_group(true);
-
- has_index_data=false;
-
- if (f->eof_reached())
- break;
- }
-
- if (l.begins_with("o ")) //name
- name=l.substr(2,l.length()).strip_edges();
- }
- }
-
-
- from->set_source_md5(0,FileAccess::get_md5(src_path));
- from->set_editor(get_name());
- mesh->set_import_metadata(from);
-
- //re-apply materials if exist
- for(int i=0;i<mesh->get_surface_count();i++) {
-
- String n = mesh->surface_get_name(i);
- if (name_map.has(n))
- mesh->surface_set_material(i,name_map[n]);
- }
-
- Error err = ResourceSaver::save(p_path,mesh);
-
- return err;
-}
-
-
-void EditorMeshImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
-
- Vector<String> files;
- for(int i=0;i<p_drop.size();i++) {
- String ext = p_drop[i].get_extension().to_lower();
- String file = p_drop[i].get_file();
- if (ext=="obj") {
-
- files.push_back(p_drop[i]);
- }
- }
-
- if (files.size()) {
- import_dialog();
- dialog->_choose_files(files);
- dialog->_choose_save_dir(p_dest_path);
- }
-}
-
-EditorMeshImportPlugin::EditorMeshImportPlugin(EditorNode* p_editor) {
-
- dialog = memnew( EditorMeshImportDialog(this));
- p_editor->get_gui_base()->add_child(dialog);
-}
-#endif
diff --git a/editor/io_plugins/editor_mesh_import_plugin.h b/editor/io_plugins/editor_mesh_import_plugin.h
deleted file mode 100644
index 06fdc4195e..0000000000
--- a/editor/io_plugins/editor_mesh_import_plugin.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*************************************************************************/
-/* editor_mesh_import_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_MESH_IMPORT_PLUGIN_H
-#define EDITOR_MESH_IMPORT_PLUGIN_H
-
-#if 0
-#include "editor/editor_import_export.h"
-#include "scene/resources/font.h"
-
-class EditorNode;
-class EditorMeshImportDialog;
-
-class EditorMeshImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorMeshImportPlugin,EditorImportPlugin);
-
- EditorMeshImportDialog *dialog;
-
-
-public:
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from="");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
- void import_from_drop(const Vector<String>& p_drop, const String &p_dest_path);
-
-
- EditorMeshImportPlugin(EditorNode* p_editor);
-};
-
-#endif
-#endif // EDITOR_MESH_IMPORT_PLUGIN_H
diff --git a/editor/io_plugins/editor_sample_import_plugin.cpp b/editor/io_plugins/editor_sample_import_plugin.cpp
deleted file mode 100644
index 0909b96cdc..0000000000
--- a/editor/io_plugins/editor_sample_import_plugin.cpp
+++ /dev/null
@@ -1,930 +0,0 @@
-/*************************************************************************/
-/* editor_sample_import_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_sample_import_plugin.h"
-
-#include "editor/editor_dir_dialog.h"
-#include "editor/editor_file_dialog.h"
-#include "editor/editor_node.h"
-#include "editor/editor_settings.h"
-#include "editor/property_editor.h"
-#include "io/marshalls.h"
-#include "io/resource_saver.h"
-#include "os/file_access.h"
-
-#if 0
-
-class _EditorSampleImportOptions : public Object {
-
- GDCLASS(_EditorSampleImportOptions,Object);
-public:
-
- enum CompressMode {
- COMPRESS_MODE_DISABLED,
- COMPRESS_MODE_RAM,
- COMPRESS_MODE_DISK
- };
-
- enum CompressBitrate {
- COMPRESS_64,
- COMPRESS_96,
- COMPRESS_128,
- COMPRESS_192
- };
-
- bool force_8_bit;
- bool force_mono;
- bool force_rate;
- float force_rate_hz;
-
- bool edit_trim;
- bool edit_normalize;
- bool edit_loop;
-
- CompressMode compress_mode;
- CompressBitrate compress_bitrate;
-
-
- bool _set(const StringName& p_name, const Variant& p_value) {
-
- String n = p_name;
- if (n=="force/8_bit")
- force_8_bit=p_value;
- else if (n=="force/mono")
- force_mono=p_value;
- else if (n=="force/max_rate")
- force_rate=p_value;
- else if (n=="force/max_rate_hz")
- force_rate_hz=p_value;
- else if (n=="edit/trim")
- edit_trim=p_value;
- else if (n=="edit/normalize")
- edit_normalize=p_value;
- else if (n=="edit/loop")
- edit_loop=p_value;
- else if (n=="compress/mode")
- compress_mode=CompressMode(int(p_value));
- else if (n=="compress/bitrate")
- compress_bitrate=CompressBitrate(int(p_value));
- else
- return false;
-
- return true;
-
- }
-
- bool _get(const StringName& p_name,Variant &r_ret) const{
-
- String n = p_name;
- if (n=="force/8_bit")
- r_ret=force_8_bit;
- else if (n=="force/mono")
- r_ret=force_mono;
- else if (n=="force/max_rate")
- r_ret=force_rate;
- else if (n=="force/max_rate_hz")
- r_ret=force_rate_hz;
- else if (n=="edit/trim")
- r_ret=edit_trim;
- else if (n=="edit/normalize")
- r_ret=edit_normalize;
- else if (n=="edit/loop")
- r_ret=edit_loop;
- else if (n=="compress/mode")
- r_ret=compress_mode;
- else if (n=="compress/bitrate")
- r_ret=compress_bitrate;
- else
- return false;
-
- return true;
-
- }
- void _get_property_list( List<PropertyInfo> *p_list) const{
-
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/8_bit"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/mono"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"force/max_rate"));
- p_list->push_back(PropertyInfo(Variant::REAL,"force/max_rate_hz",PROPERTY_HINT_EXP_RANGE,"11025,192000,1"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"edit/trim"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"edit/normalize"));
- p_list->push_back(PropertyInfo(Variant::BOOL,"edit/loop"));
- p_list->push_back(PropertyInfo(Variant::INT,"compress/mode",PROPERTY_HINT_ENUM,"Disabled,RAM (Ima-ADPCM)"));
- //p_list->push_back(PropertyInfo(Variant::INT,"compress/bitrate",PROPERTY_HINT_ENUM,"64,96,128,192"));
-
-
- }
-
-
- static void _bind_methods() {
-
-
- ADD_SIGNAL( MethodInfo("changed"));
- }
-
-
- _EditorSampleImportOptions() {
-
- force_8_bit=false;
- force_mono=false;
- force_rate=true;
- force_rate_hz=44100;
-
- edit_trim=true;
- edit_normalize=true;
- edit_loop=false;
-
- compress_mode=COMPRESS_MODE_RAM;
- compress_bitrate=COMPRESS_128;
- }
-
-
-};
-
-class EditorSampleImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorSampleImportDialog,ConfirmationDialog);
-
- EditorSampleImportPlugin *plugin;
-
- LineEdit *import_path;
- LineEdit *save_path;
- EditorFileDialog *file_select;
- EditorDirDialog *save_select;
- ConfirmationDialog *error_dialog;
- PropertyEditor *option_editor;
-
- _EditorSampleImportOptions *options;
-
-
-public:
-
- void _choose_files(const Vector<String>& p_path) {
-
- String files;
- for(int i=0;i<p_path.size();i++) {
-
- if (i>0)
- files+=",";
- files+=p_path[i];
- }
- /*
- if (p_path.size()) {
- String srctex=p_path[0];
- String ipath = EditorImportDB::get_singleton()->find_source_path(srctex);
-
- if (ipath!="")
- save_path->set_text(ipath.get_base_dir());
- }*/
- import_path->set_text(files);
-
- }
- void _choose_save_dir(const String& p_path) {
-
- save_path->set_text(p_path);
- }
-
- void _browse() {
-
- file_select->popup_centered_ratio();
- }
-
- void _browse_target() {
-
- save_select->popup_centered_ratio();
-
- }
-
-
- void popup_import(const String& p_path) {
-
- popup_centered(Size2(400,400)*EDSCALE);
- if (p_path!="") {
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path);
- ERR_FAIL_COND(!rimd.is_valid());
-
- save_path->set_text(p_path.get_base_dir());
- List<String> opts;
- rimd->get_options(&opts);
- for(List<String>::Element *E=opts.front();E;E=E->next()) {
-
- options->_set(E->get(),rimd->get_option(E->get()));
- }
-
- String src = "";
- for(int i=0;i<rimd->get_source_count();i++) {
- if (i>0)
- src+=",";
- src+=EditorImportPlugin::expand_source_path(rimd->get_source_path(i));
- }
- import_path->set_text(src);
- }
- }
-
-
- void _import() {
-
- Vector<String> samples = import_path->get_text().split(",");
-
- if (samples.size()==0) {
- error_dialog->set_text(TTR("No samples to import!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- }
-
- if (save_path->get_text().strip_edges()=="") {
- error_dialog->set_text(TTR("Target path is empty."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (!save_path->get_text().begins_with("res://")) {
- error_dialog->set_text(TTR("Target path must be a complete resource path."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (!DirAccess::exists(save_path->get_text())) {
- error_dialog->set_text(TTR("Target path must exist."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- for(int i=0;i<samples.size();i++) {
-
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
-
- List<PropertyInfo> pl;
- options->_get_property_list(&pl);
- for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) {
-
- Variant v;
- String opt=E->get().name;
- options->_get(opt,v);
- imd->set_option(opt,v);
-
- }
-
- imd->add_source(EditorImportPlugin::validate_source_path(samples[i]));
-
- String dst = save_path->get_text();
- if (dst=="") {
- error_dialog->set_text(TTR("Save path is empty!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- }
-
- dst = dst.plus_file(samples[i].get_file().get_basename()+".sample");
-
- plugin->import(dst,imd);
- }
-
- hide();
-
- }
-
-
- void _notification(int p_what) {
-
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
- option_editor->edit(options);
- }
- }
-
- static void _bind_methods() {
-
-
- ClassDB::bind_method("_choose_files",&EditorSampleImportDialog::_choose_files);
- ClassDB::bind_method("_choose_save_dir",&EditorSampleImportDialog::_choose_save_dir);
- ClassDB::bind_method("_import",&EditorSampleImportDialog::_import);
- ClassDB::bind_method("_browse",&EditorSampleImportDialog::_browse);
- ClassDB::bind_method("_browse_target",&EditorSampleImportDialog::_browse_target);
- //ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
- }
-
- EditorSampleImportDialog(EditorSampleImportPlugin *p_plugin) {
-
- plugin=p_plugin;
-
-
- set_title(TTR("Import Audio Samples"));
-
- VBoxContainer *vbc = memnew( VBoxContainer );
- add_child(vbc);
- //set_child_rect(vbc);
-
-
- HBoxContainer *hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Source Sample(s):"),hbc);
-
- import_path = memnew( LineEdit );
- import_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(import_path);
-
- Button * import_choose = memnew( Button );
- import_choose->set_text(" .. ");
- hbc->add_child(import_choose);
-
- import_choose->connect("pressed", this,"_browse");
-
- hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Target Path:"),hbc);
-
- save_path = memnew( LineEdit );
- save_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(save_path);
-
- Button * save_choose = memnew( Button );
- save_choose->set_text(" .. ");
- hbc->add_child(save_choose);
-
- save_choose->connect("pressed", this,"_browse_target");
-
- file_select = memnew(EditorFileDialog);
- file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- add_child(file_select);
- file_select->set_mode(EditorFileDialog::MODE_OPEN_FILES);
- file_select->connect("files_selected", this,"_choose_files");
- file_select->add_filter("*.wav ; MS Waveform");
- save_select = memnew( EditorDirDialog );
- add_child(save_select);
-
- //save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
- save_select->connect("dir_selected", this,"_choose_save_dir");
-
- get_ok()->connect("pressed", this,"_import");
- get_ok()->set_text(TTR("Import"));
-
-
- error_dialog = memnew ( ConfirmationDialog );
- add_child(error_dialog);
- error_dialog->get_ok()->set_text(TTR("Accept"));
- //error_dialog->get_cancel()->hide();
-
- set_hide_on_ok(false);
- options = memnew( _EditorSampleImportOptions );
-
- option_editor = memnew( PropertyEditor );
- option_editor->hide_top_label();
- vbc->add_margin_child(TTR("Options:"),option_editor,true);
- }
-
- ~EditorSampleImportDialog() {
- memdelete(options);
- }
-
-};
-
-
-String EditorSampleImportPlugin::get_name() const {
-
- return "sample";
-}
-String EditorSampleImportPlugin::get_visible_name() const{
-
- return TTR("Audio Sample");
-}
-void EditorSampleImportPlugin::import_dialog(const String& p_from){
-
- dialog->popup_import(p_from);
-}
-Error EditorSampleImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from){
-
- ERR_FAIL_COND_V(p_from->get_source_count()!=1,ERR_INVALID_PARAMETER);
-
- Ref<ResourceImportMetadata> from=p_from;
-
- String src_path=EditorImportPlugin::expand_source_path(from->get_source_path(0));
- Ref<Sample> smp = ResourceLoader::load(src_path);
- ERR_FAIL_COND_V(smp.is_null(),ERR_CANT_OPEN);
-
-
- float rate = smp->get_mix_rate();
- bool is16 = smp->get_format()==Sample::FORMAT_PCM16;
- int chans = smp->is_stereo()?2:1;
- int len = smp->get_length();
- Sample::LoopFormat loop= smp->get_loop_format();
- int loop_beg = smp->get_loop_begin();
- int loop_end = smp->get_loop_end();
-
- print_line("Input Sample: ");
- print_line("\tlen: "+itos(len));
- print_line("\tchans: "+itos(chans));
- print_line("\t16bits: "+itos(is16));
- print_line("\trate: "+itos(rate));
- print_line("\tloop: "+itos(loop));
- print_line("\tloop begin: "+itos(loop_beg));
- print_line("\tloop end: "+itos(loop_end));
- Vector<float> data;
- data.resize(len*chans);
-
- {
- PoolVector<uint8_t> src_data = smp->get_data();
- PoolVector<uint8_t>::Read sr = src_data.read();
-
-
- for(int i=0;i<len*chans;i++) {
-
- float s=0;
- if (is16) {
-
- int16_t i16 = decode_uint16(&sr[i*2]);
- s=i16/32767.0;
- } else {
-
- int8_t i8 = sr[i];
- s=i8/127.0;
- }
- data[i]=s;
- }
- }
-
- //apply frequency limit
-
- bool limit_rate = from->get_option("force/max_rate");
- int limit_rate_hz = from->get_option("force/max_rate_hz");
- if (limit_rate && rate > limit_rate_hz) {
- //resampleeee!!!
- int new_data_len = len * limit_rate_hz / rate;
- Vector<float> new_data;
- new_data.resize( new_data_len * chans );
- for(int c=0;c<chans;c++) {
-
- for(int i=0;i<new_data_len;i++) {
-
- //simple cubic interpolation should be enough.
- float pos = float(i) * len / new_data_len;
- float mu = pos-Math::floor(pos);
- int ipos = int(Math::floor(pos));
-
- float y0=data[MAX(0,ipos-1)*chans+c];
- float y1=data[ipos*chans+c];
- float y2=data[MIN(len-1,ipos+1)*chans+c];
- float y3=data[MIN(len-1,ipos+2)*chans+c];
-
- float mu2 = mu*mu;
- float a0 = y3 - y2 - y0 + y1;
- float a1 = y0 - y1 - a0;
- float a2 = y2 - y0;
- float a3 = y1;
-
- float res=(a0*mu*mu2+a1*mu2+a2*mu+a3);
-
- new_data[i*chans+c]=res;
- }
- }
-
- if (loop) {
-
- loop_beg=loop_beg*new_data_len/len;
- loop_end=loop_end*new_data_len/len;
- }
- data=new_data;
- rate=limit_rate_hz;
- len=new_data_len;
- }
-
-
- bool normalize = from->get_option("edit/normalize");
-
- if (normalize) {
-
- float max=0;
- for(int i=0;i<data.size();i++) {
-
- float amp = Math::abs(data[i]);
- if (amp>max)
- max=amp;
- }
-
- if (max>0) {
-
- float mult=1.0/max;
- for(int i=0;i<data.size();i++) {
-
- data[i]*=mult;
- }
-
- }
- }
-
- bool trim = from->get_option("edit/trim");
-
- if (trim && !loop) {
-
- int first=0;
- int last=(len*chans)-1;
- bool found=false;
- float limit = Math::db2linear((float)-30);
- for(int i=0;i<data.size();i++) {
- float amp = Math::abs(data[i]);
-
- if (!found && amp > limit) {
- first=i;
- found=true;
- }
-
- if (found && amp > limit) {
- last=i;
- }
- }
-
- first/=chans;
- last/=chans;
-
- if (first<last) {
-
- Vector<float> new_data;
- new_data.resize((last-first+1)*chans);
- for(int i=first*chans;i<=last*chans;i++) {
- new_data[i-first*chans]=data[i];
- }
-
- data=new_data;
- len=data.size()/chans;
- }
-
- }
-
- bool make_loop = from->get_option("edit/loop");
-
- if (make_loop && !loop) {
-
- loop=Sample::LOOP_FORWARD;
- loop_beg=0;
- loop_end=len;
- }
-
- int compression = from->get_option("compress/mode");
- bool force_mono = from->get_option("force/mono");
-
-
- if (force_mono && chans==2) {
-
- Vector<float> new_data;
- new_data.resize(data.size()/2);
- for(int i=0;i<len;i++) {
- new_data[i]=(data[i*2+0]+data[i*2+1])/2.0;
- }
-
- data=new_data;
- chans=1;
- }
-
- bool force_8_bit = from->get_option("force/8_bit");
- if (force_8_bit) {
-
- is16=false;
- }
-
-
- PoolVector<uint8_t> dst_data;
- Sample::Format dst_format;
-
- if ( compression == _EditorSampleImportOptions::COMPRESS_MODE_RAM) {
-
- dst_format=Sample::FORMAT_IMA_ADPCM;
- if (chans==1) {
- _compress_ima_adpcm(data,dst_data);
- } else {
-
- print_line("INTERLEAAVE!");
-
-
-
- //byte interleave
- Vector<float> left;
- Vector<float> right;
-
- int tlen = data.size()/2;
- left.resize(tlen);
- right.resize(tlen);
-
- for(int i=0;i<tlen;i++) {
- left[i]=data[i*2+0];
- right[i]=data[i*2+1];
- }
-
- PoolVector<uint8_t> bleft;
- PoolVector<uint8_t> bright;
-
- _compress_ima_adpcm(left,bleft);
- _compress_ima_adpcm(right,bright);
-
- int dl = bleft.size();
- dst_data.resize( dl *2 );
-
- PoolVector<uint8_t>::Write w=dst_data.write();
- PoolVector<uint8_t>::Read rl=bleft.read();
- PoolVector<uint8_t>::Read rr=bright.read();
-
- for(int i=0;i<dl;i++) {
- w[i*2+0]=rl[i];
- w[i*2+1]=rr[i];
- }
- }
-
- //print_line("compressing ima-adpcm, resulting buffersize is "+itos(dst_data.size())+" from "+itos(data.size()));
-
- } else {
-
- dst_format=is16?Sample::FORMAT_PCM16:Sample::FORMAT_PCM8;
- dst_data.resize( data.size() * (is16?2:1));
- {
- PoolVector<uint8_t>::Write w = dst_data.write();
-
- int ds=data.size();
- for(int i=0;i<ds;i++) {
-
- if (is16) {
- int16_t v = CLAMP(data[i]*32767,-32768,32767);
- encode_uint16(v,&w[i*2]);
- } else {
- int8_t v = CLAMP(data[i]*127,-128,127);
- w[i]=v;
- }
- }
- }
- }
-
-
- Ref<Sample> target;
-
- if (ResourceCache::has(p_path)) {
-
- target = Ref<Sample>( ResourceCache::get(p_path)->cast_to<Sample>() );
- } else {
-
- target = smp;
- }
-
- target->create(dst_format,chans==2?true:false,len);
- target->set_data(dst_data);
- target->set_mix_rate(rate);
- target->set_loop_format(loop);
- target->set_loop_begin(loop_beg);
- target->set_loop_end(loop_end);
-
- from->set_source_md5(0,FileAccess::get_md5(src_path));
- from->set_editor(get_name());
- target->set_import_metadata(from);
-
-
- Error err = ResourceSaver::save(p_path,smp);
-
- return err;
-
-}
-
-void EditorSampleImportPlugin::_compress_ima_adpcm(const Vector<float>& p_data,PoolVector<uint8_t>& dst_data) {
-
-
- /*p_sample_data->data = (void*)malloc(len);
- xm_s8 *dataptr=(xm_s8*)p_sample_data->data;*/
-
- static const int16_t _ima_adpcm_step_table[89] = {
- 7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
- 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
- 50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
- 130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
- 337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
- 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
- 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
- 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
- 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
- };
-
- static const int8_t _ima_adpcm_index_table[16] = {
- -1, -1, -1, -1, 2, 4, 6, 8,
- -1, -1, -1, -1, 2, 4, 6, 8
- };
-
-
- int datalen = p_data.size();
- int datamax=datalen;
- if (datalen&1)
- datalen++;
-
- dst_data.resize(datalen/2+4);
- PoolVector<uint8_t>::Write w = dst_data.write();
-
-
- int i,step_idx=0,prev=0;
- uint8_t *out = w.ptr();
- //int16_t xm_prev=0;
- const float *in=p_data.ptr();
-
-
- /* initial value is zero */
- *(out++) =0;
- *(out++) =0;
- /* Table index initial value */
- *(out++) =0;
- /* unused */
- *(out++) =0;
-
- for (i=0;i<datalen;i++) {
- int step,diff,vpdiff,mask;
- uint8_t nibble;
- int16_t xm_sample;
-
- if (i>=datamax)
- xm_sample=0;
- else {
-
-
- xm_sample=CLAMP(in[i]*32767.0,-32768,32767);
- /*
- if (xm_sample==32767 || xm_sample==-32768)
- printf("clippy!\n",xm_sample);
- */
- }
-
- //xm_sample=xm_sample+xm_prev;
- //xm_prev=xm_sample;
-
- diff = (int)xm_sample - prev ;
-
- nibble=0 ;
- step = _ima_adpcm_step_table[ step_idx ];
- vpdiff = step >> 3 ;
- if (diff < 0) {
- nibble=8;
- diff=-diff ;
- }
- mask = 4 ;
- while (mask) {
-
- if (diff >= step) {
-
- nibble |= mask;
- diff -= step;
- vpdiff += step;
- }
-
- step >>= 1 ;
- mask >>= 1 ;
- };
-
- if (nibble&8)
- prev-=vpdiff ;
- else
- prev+=vpdiff ;
-
- if (prev > 32767) {
- //printf("%i,xms %i, prev %i,diff %i, vpdiff %i, clip up %i\n",i,xm_sample,prev,diff,vpdiff,prev);
- prev=32767;
- } else if (prev < -32768) {
- //printf("%i,xms %i, prev %i,diff %i, vpdiff %i, clip down %i\n",i,xm_sample,prev,diff,vpdiff,prev);
- prev = -32768 ;
- }
-
- step_idx += _ima_adpcm_index_table[nibble];
- if (step_idx< 0)
- step_idx= 0 ;
- else if (step_idx> 88)
- step_idx= 88 ;
-
-
- if (i&1) {
- *out|=nibble<<4;
- out++;
- } else {
- *out=nibble;
- }
- /*dataptr[i]=prev>>8;*/
- }
-
-}
-
-
-EditorSampleImportPlugin* EditorSampleImportPlugin::singleton=NULL;
-
-
-void EditorSampleImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
-
- Vector<String> files;
- for(int i=0;i<p_drop.size();i++) {
- String ext = p_drop[i].get_extension().to_lower();
-
- if (ext=="wav") {
-
- files.push_back(p_drop[i]);
- }
- }
-
- if (files.size()) {
- import_dialog();
- dialog->_choose_files(files);
- dialog->_choose_save_dir(p_dest_path);
- }
-}
-
-void EditorSampleImportPlugin::reimport_multiple_files(const Vector<String>& p_list) {
-
- if (p_list.size()==0)
- return;
-
- Vector<String> sources;
- for(int i=0;i<p_list.size();i++) {
- int idx;
- EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(p_list[i],&idx);
- if (efsd) {
- for(int j=0;j<efsd->get_source_count(idx);j++) {
- String file = expand_source_path(efsd->get_source_file(idx,j));
- if (sources.find(file)==-1) {
- sources.push_back(file);
- }
-
- }
- }
- }
-
- if (sources.size()) {
-
- dialog->popup_import(p_list[0]);
- dialog->_choose_files(sources);
- dialog->_choose_save_dir(p_list[0].get_base_dir());
- }
-}
-
-bool EditorSampleImportPlugin::can_reimport_multiple_files() const {
-
- return true;
-}
-
-EditorSampleImportPlugin::EditorSampleImportPlugin(EditorNode* p_editor) {
-
- singleton=this;
- dialog = memnew( EditorSampleImportDialog(this));
- p_editor->get_gui_base()->add_child(dialog);
-}
-
-Vector<uint8_t> EditorSampleExportPlugin::custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform) {
-
-
-
- if (EditorImportExport::get_singleton()->sample_get_action()==EditorImportExport::SAMPLE_ACTION_NONE || p_path.get_extension().to_lower()!="wav") {
-
- return Vector<uint8_t>();
- }
-
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
-
- imd->add_source(EditorImportPlugin::validate_source_path(p_path));
-
- imd->set_option("force/8_bit",false);
- imd->set_option("force/mono",false);
- imd->set_option("force/max_rate",true);
- imd->set_option("force/max_rate_hz",EditorImportExport::get_singleton()->sample_get_max_hz());
- imd->set_option("edit/trim",EditorImportExport::get_singleton()->sample_get_trim());
- imd->set_option("edit/normalize",false);
- imd->set_option("edit/loop",false);
- imd->set_option("compress/mode",1);
-
- String savepath = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp/smpconv.sample");
- Error err = EditorSampleImportPlugin::singleton->import(savepath,imd);
-
-
- ERR_FAIL_COND_V(err!=OK,Vector<uint8_t>());
-
- p_path=p_path.get_basename()+".converted.sample";
- return FileAccess::get_file_as_array(savepath);
-
-}
-
-
-
-EditorSampleExportPlugin::EditorSampleExportPlugin() {
-
-}
-
-#endif
diff --git a/editor/io_plugins/editor_sample_import_plugin.h b/editor/io_plugins/editor_sample_import_plugin.h
deleted file mode 100644
index 134868f8c2..0000000000
--- a/editor/io_plugins/editor_sample_import_plugin.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*************************************************************************/
-/* editor_sample_import_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_SAMPLE_IMPORT_PLUGIN_H
-#define EDITOR_SAMPLE_IMPORT_PLUGIN_H
-
-#if 0
-#include "editor/editor_import_export.h"
-#include "scene/resources/font.h"
-
-class EditorNode;
-class EditorSampleImportDialog;
-
-class EditorSampleImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorSampleImportPlugin,EditorImportPlugin);
-
- EditorSampleImportDialog *dialog;
- void _compress_ima_adpcm(const Vector<float>& p_data,PoolVector<uint8_t>& dst_data);
-public:
-
- static EditorSampleImportPlugin *singleton;
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from="");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
- void import_from_drop(const Vector<String>& p_drop, const String &p_dest_path);
- virtual void reimport_multiple_files(const Vector<String>& p_list);
- virtual bool can_reimport_multiple_files() const;
-
-
- EditorSampleImportPlugin(EditorNode* p_editor);
-};
-
-class EditorSampleExportPlugin : public EditorExportPlugin {
-
- GDCLASS( EditorSampleExportPlugin, EditorExportPlugin);
-
-
-public:
-
- virtual Vector<uint8_t> custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform);
-
- EditorSampleExportPlugin();
-};
-
-#endif // EDITOR_SAMPLE_IMPORT_PLUGIN_H
-#endif
diff --git a/editor/io_plugins/editor_scene_import_plugin.cpp b/editor/io_plugins/editor_scene_import_plugin.cpp
deleted file mode 100644
index aa96f731ce..0000000000
--- a/editor/io_plugins/editor_scene_import_plugin.cpp
+++ /dev/null
@@ -1,2998 +0,0 @@
-/*************************************************************************/
-/* editor_scene_import_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_scene_import_plugin.h"
-#if 0
-#include "editor/create_dialog.h"
-#include "editor/editor_node.h"
-#include "io/resource_saver.h"
-#include "os/file_access.h"
-#include "os/os.h"
-#include "project_settings.h"
-#include "scene/3d/body_shape.h"
-#include "scene/3d/mesh_instance.h"
-#include "scene/3d/navigation.h"
-#include "scene/3d/path.h"
-#include "scene/3d/physics_body.h"
-#include "scene/3d/portal.h"
-#include "scene/3d/room_instance.h"
-#include "scene/3d/vehicle_body.h"
-#include "scene/animation/animation_player.h"
-#include "scene/resources/box_shape.h"
-#include "scene/resources/packed_scene.h"
-#include "scene/resources/sphere_shape.h"
-#include <scene/resources/box_shape.h>
-#include <scene/resources/plane_shape.h>
-#include <scene/resources/ray_shape.h>
-
-
-
-
-EditorSceneImporter::EditorSceneImporter() {
-
-
-}
-
-void EditorScenePostImport::_bind_methods() {
-
- BIND_VMETHOD( MethodInfo("post_import",PropertyInfo(Variant::OBJECT,"scene")) );
-
-}
-
-Node *EditorScenePostImport::post_import(Node* p_scene) {
-
- if (get_script_instance())
- return get_script_instance()->call("post_import",p_scene);
-
- return p_scene;
-}
-
-EditorScenePostImport::EditorScenePostImport() {
-
-
-}
-
-
-/////////////////////////////
-
-
-class EditorImportAnimationOptions : public VBoxContainer {
-
- GDCLASS( EditorImportAnimationOptions, VBoxContainer );
-
-
-
- TreeItem *fps;
- TreeItem* optimize_linear_error;
- TreeItem* optimize_angular_error;
- TreeItem* optimize_max_angle;
-
- TreeItem *clips_base;
-
- TextEdit *filters;
- Vector<TreeItem*> clips;
-
- Tree *flags;
- Tree *clips_tree;
- Tree *optimization_tree;
- Vector<TreeItem*> items;
-
-
- bool updating;
- bool validating;
-
-
-
- void _changed();
- void _item_edited();
- void _button_action(Object *p_obj,int p_col,int p_id);
-
-protected:
- static void _bind_methods();
- void _notification(int p_what);
-
-public:
-
- void set_flags(uint32_t p_flags);
- uint32_t get_flags() const;
-
- void set_fps(int p_fps);
- int get_fps() const;
-
- void set_optimize_linear_error(float p_error);
- float get_optimize_linear_error() const;
-
- void set_optimize_angular_error(float p_error);
- float get_optimize_angular_error() const;
-
- void set_optimize_max_angle(float p_error);
- float get_optimize_max_angle() const;
-
- void setup_clips(const Array& p_clips);
- Array get_clips() const;
-
- void set_filter(const String& p_filter);
- String get_filter() const;
-
- EditorImportAnimationOptions();
-
-
-};
-
-////////////////////////////
-
-class EditorSceneImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorSceneImportDialog,ConfirmationDialog);
-
-
- struct FlagInfo {
- int value;
- const char *category;
- const char *text;
- bool defval;
- };
-
- static const FlagInfo scene_flag_names[];
-
- EditorImportTextureOptions *texture_options;
- EditorImportAnimationOptions *animation_options;
-
- EditorSceneImportPlugin *plugin;
-
- EditorNode *editor;
-
- LineEdit *import_path;
- LineEdit *save_path;
- LineEdit *script_path;
- Tree *import_options;
- EditorFileDialog *file_select;
- EditorFileDialog *script_select;
- EditorDirDialog *save_select;
- OptionButton *texture_action;
- CreateDialog *root_type_choose;
- LineEdit *root_node_name;
-
- ConfirmationDialog *confirm_open;
-
- ConfirmationDialog *confirm_import;
- RichTextLabel *missing_files;
-
- Vector<TreeItem*> scene_flags;
-
- Map<Ref<Mesh>,Ref<Shape> > collision_map;
- ConfirmationDialog *error_dialog;
-
- Button *root_type;
- CheckBox *root_default;
-
-
- void _root_default_pressed();
- void _root_type_pressed();
- void _set_root_type();
-
- void _choose_file(const String& p_path);
- void _choose_save_file(const String& p_path);
- void _choose_script(const String& p_path);
- void _browse();
- void _browse_target();
- void _browse_script();
- void _import(bool p_and_open=false);
- void _import_confirm();
-
- Ref<ResourceImportMetadata> wip_rimd;
- Node *wip_import;
- String wip_save_file;
- bool wip_blocked;
- bool wip_open;
-
- void _dialog_hid();
- void _open_and_import();
-
-
-protected:
-
- void _notification(int p_what);
- static void _bind_methods();
-public:
-
- void setup_popup(const String& p_from,const String& p_to_path) {
- _choose_file(p_from);
- _choose_save_file(p_to_path);
- }
-
- Error import(const String& p_from, const String& p_to, const String& p_preset);
- void popup_import(const String& p_from);
- EditorSceneImportDialog(EditorNode *p_editor,EditorSceneImportPlugin *p_plugin);
-};
-
-///////////////////////////////////
-
-
-static const char *anim_flag_names[]={
- "Detect Loop (-loop,-cycle)",
- "Keep Value Tracks",
- "Optimize",
- "Force All Tracks in All Clips",
- NULL
-};
-
-static const char *anim_flag_descript[]={
- "Set loop flag for animation names that\ncontain 'cycle' or 'loop' in the name.",
- "When merging an existing aimation,\nkeep the user-created value-tracks.",
- "Remove redundant keyframes in\n transform tacks.",
- "Some exporters will rely on default pose for some bones.\nThis forces those bones to have at least one animation key.",
- NULL
-};
-
-
-
-void EditorImportAnimationOptions::set_flags(uint32_t p_flags){
-
- updating=true;
- for(int i=0;i<items.size();i++) {
-
- items[i]->set_checked(0,p_flags&(1<<i));
- }
- updating=false;
-
-}
-uint32_t EditorImportAnimationOptions::get_flags() const{
-
- uint32_t f=0;
- for(int i=0;i<items.size();i++) {
-
- if (items[i]->is_checked(0))
- f|=(1<<i);
- }
-
- return f;
-}
-
-
-void EditorImportAnimationOptions::_changed() {
-
- if (updating)
- return;
- emit_signal("changed");
-}
-
-
-void EditorImportAnimationOptions::_button_action(Object *p_obj,int p_col,int p_id) {
-
- memdelete(p_obj);
-
-}
-
-
-void EditorImportAnimationOptions::_item_edited() {
-
- if (validating)
- return;
-
- if (clips.size()==0)
- return;
- validating=true;
- print_line("edited");
- TreeItem *item = clips_tree->get_edited();
- if (item==clips[clips.size()-1]) {
- //add new
- print_line("islast");
- if (item->get_text(0).find("<")!=-1 || item->get_text(0).find(">")!=-1) {
- validating=false;
- return; //fuckit
- }
-
- item->set_editable(1,true);
- item->set_editable(2,true);
- item->add_button(0,EditorNode::get_singleton()->get_gui_base()->get_icon("Del","EditorIcons"));
- item->set_cell_mode(1,TreeItem::CELL_MODE_RANGE);
- item->set_range_config(1,0,3600,0.01);
- item->set_range(1,0);
- item->set_editable(1,true);
- item->set_cell_mode(2,TreeItem::CELL_MODE_RANGE);
- item->set_range_config(2,0,3600,0.01);
- item->set_range(2,0);
- item->set_cell_mode(3,TreeItem::CELL_MODE_CHECK);
- item->set_editable(3,true);
-
- TreeItem *newclip = clips_tree->create_item(clips_base);
- newclip->set_text(0,"<new clip>");
- newclip->set_editable(0,true);
- newclip->set_editable(1,false);
- newclip->set_editable(2,false);
- clips.push_back(newclip);
-
-
-
- }
-
-
- //make name unique JUST IN CASE
- String name = item->get_text(0);
- name=name.replace("/","_").replace(":","_").strip_edges();
- if (name=="")
- name=TTR("New Clip");
-
- if (clips.size()>2) {
- int index=1;
- while(true) {
- bool valid = true;
- String try_name=name;
- if (index>1)
- try_name+=" "+itos(index);
-
- for(int i=0;i<clips.size()-1;i++) {
-
- if (clips[i]==item)
- continue;
- if (clips[i]->get_text(0)==try_name) {
- index++;
- valid=false;
- break;
- }
- }
-
- if (valid) {
- name=try_name;
- break;
- }
-
- }
- }
-
- if (item->get_text(0)!=name)
- item->set_text(0,name);
-
- validating=false;
-
-}
-
-void EditorImportAnimationOptions::_bind_methods() {
-
- ClassDB::bind_method("_changed",&EditorImportAnimationOptions::_changed);
- ClassDB::bind_method("_item_edited",&EditorImportAnimationOptions::_item_edited);
- ClassDB::bind_method("_button_action",&EditorImportAnimationOptions::_button_action);
- //ClassDB::bind_method("_changedp",&EditorImportAnimationOptions::_changedp);
-
- ADD_SIGNAL(MethodInfo("changed"));
-}
-
-
-void EditorImportAnimationOptions::_notification(int p_what) {
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
- flags->connect("item_edited",this,"_changed");
- clips_tree->connect("item_edited",this,"_item_edited");
- clips_tree->connect("button_pressed",this,"_button_action",varray(),CONNECT_DEFERRED);
- //format->connect("item_selected",this,"_changedp");
- }
-}
-
-
-Array EditorImportAnimationOptions::get_clips() const {
-
- Array arr;
- for(int i=0;i<clips.size()-1;i++) {
-
- arr.push_back(clips[i]->get_text(0));
- arr.push_back(clips[i]->get_range(1));
- arr.push_back(clips[i]->get_range(2));
- arr.push_back(clips[i]->is_checked(3));
- }
-
- return arr;
-}
-
-
-void EditorImportAnimationOptions::setup_clips(const Array& p_clips) {
-
- ERR_FAIL_COND(p_clips.size()%4!=0);
- for(int i=0;i<clips.size();i++) {
-
- memdelete(clips[i]);
- }
-
-
- clips.clear();
-
- for(int i=0;i<p_clips.size();i+=4) {
-
- TreeItem *clip = clips_tree->create_item(clips_base);
- clip->set_text(0,p_clips[i]);
- clip->add_button(0,EditorNode::get_singleton()->get_gui_base()->get_icon("Del","EditorIcons"));
- clip->set_editable(0,true);
- clip->set_cell_mode(1,TreeItem::CELL_MODE_RANGE);
- clip->set_range_config(1,0,3600,0.01);
- clip->set_range(1,p_clips[i+1]);
- clip->set_editable(1,true);
- clip->set_cell_mode(2,TreeItem::CELL_MODE_RANGE);
- clip->set_range_config(2,0,3600,0.01);
- clip->set_range(2,p_clips[i+2]);
- clip->set_editable(2,true);
- clip->set_cell_mode(3,TreeItem::CELL_MODE_CHECK);
- clip->set_editable(3,true);
- clip->set_checked(3,p_clips[i+3]);
- clips.push_back(clip);
-
- }
-
- TreeItem *newclip = clips_tree->create_item(clips_base);
- newclip->set_text(0,"<new clip>");
- newclip->set_editable(0,true);
- newclip->set_editable(1,false);
- newclip->set_editable(2,false);
- newclip->set_editable(3,false);
- clips.push_back(newclip);
-
-}
-
-
-EditorImportAnimationOptions::EditorImportAnimationOptions() {
-
-
- updating=false;
- validating=false;
-
- TabContainer *tab= memnew(TabContainer);
- add_margin_child(TTR("Animation Options"),tab,true);
-
- flags = memnew( Tree );
- flags->set_hide_root(true);
- tab->add_child(flags);
- flags->set_name(TTR("Flags"));
- TreeItem *root = flags->create_item();
-
- const char ** fname=anim_flag_names;
- const char ** fdescr=anim_flag_descript;
-
- while( *fname ) {
-
- TreeItem*ti = flags->create_item(root);
- ti->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
- ti->set_text(0,*fname);
- ti->set_editable(0,true);
- ti->set_tooltip(0,*fdescr);
- items.push_back(ti);
- fname++;
- fdescr++;
- }
-
-
- TreeItem *fps_base = flags->create_item(root);
- fps_base->set_text(0,TTR("Bake FPS:"));
- fps_base->set_editable(0,false);
- fps = flags->create_item(fps_base);
- fps->set_cell_mode(0,TreeItem::CELL_MODE_RANGE);
- fps->set_editable(0,true);
- fps->set_range_config(0,1,120,1);
- fps->set_range(0,15);
-
- optimization_tree = memnew( Tree );
- optimization_tree->set_columns(2);
- tab->add_child(optimization_tree);
- optimization_tree->set_name(TTR("Optimizer"));
- optimization_tree->set_column_expand(0,true);
- optimization_tree->set_column_expand(1,false);
- optimization_tree->set_column_min_width(1,80);
- optimization_tree->set_hide_root(true);
-
-
- TreeItem *optimize_root = optimization_tree->create_item();
-
- optimize_linear_error = optimization_tree->create_item(optimize_root);
- optimize_linear_error->set_text(0,TTR("Max Linear Error"));
- optimize_linear_error->set_cell_mode(1,TreeItem::CELL_MODE_RANGE);
- optimize_linear_error->set_editable(1,true);
- optimize_linear_error->set_range_config(1,0,1,0.001);
- optimize_linear_error->set_range(1,0.05);
-
- optimize_angular_error = optimization_tree->create_item(optimize_root);
- optimize_angular_error->set_text(0,TTR("Max Angular Error"));
- optimize_angular_error->set_cell_mode(1,TreeItem::CELL_MODE_RANGE);
- optimize_angular_error->set_editable(1,true);
- optimize_angular_error->set_range_config(1,0,1,0.001);
- optimize_angular_error->set_range(1,0.01);
-
- optimize_max_angle = optimization_tree->create_item(optimize_root);
- optimize_max_angle->set_text(0,TTR("Max Angle"));
- optimize_max_angle->set_cell_mode(1,TreeItem::CELL_MODE_RANGE);
- optimize_max_angle->set_editable(1,true);
- optimize_max_angle->set_range_config(1,0,360,0.001);
- optimize_max_angle->set_range(1,int(180*0.125));
-
- clips_tree = memnew( Tree );
- clips_tree->set_hide_root(true);
- tab->add_child(clips_tree);
- clips_tree->set_name(TTR("Clips"));
-
- clips_tree->set_columns(4);
- clips_tree->set_column_expand(0,1);
- clips_tree->set_column_expand(1,0);
- clips_tree->set_column_expand(2,0);
- clips_tree->set_column_expand(3,0);
- clips_tree->set_column_min_width(1,60);
- clips_tree->set_column_min_width(2,60);
- clips_tree->set_column_min_width(3,40);
- clips_tree->set_column_titles_visible(true);
- clips_tree->set_column_title(0,TTR("Name"));
- clips_tree->set_column_title(1,TTR("Start(s)"));
- clips_tree->set_column_title(2,TTR("End(s)"));
- clips_tree->set_column_title(3,TTR("Loop"));
- clips_base =clips_tree->create_item(0);
-
-
- setup_clips(Array());
-
-
- filters = memnew( TextEdit );
- tab->add_child(filters);
- filters->set_name(TTR("Filters"));
-}
-
-
-
-void EditorImportAnimationOptions::set_fps(int p_fps) {
-
- fps->set_range(0,p_fps);
-}
-
-int EditorImportAnimationOptions::get_fps() const {
-
- return fps->get_range(0);
-}
-
-
-void EditorImportAnimationOptions::set_optimize_linear_error(float p_optimize_linear_error) {
-
- optimize_linear_error->set_range(1,p_optimize_linear_error);
-}
-
-float EditorImportAnimationOptions::get_optimize_linear_error() const {
-
- return optimize_linear_error->get_range(1);
-}
-
-void EditorImportAnimationOptions::set_optimize_angular_error(float p_optimize_angular_error) {
-
- optimize_angular_error->set_range(1,p_optimize_angular_error);
-}
-
-float EditorImportAnimationOptions::get_optimize_angular_error() const {
-
- return optimize_angular_error->get_range(1);
-}
-
-void EditorImportAnimationOptions::set_optimize_max_angle(float p_optimize_max_angle) {
-
- optimize_max_angle->set_range(1,p_optimize_max_angle);
-}
-
-float EditorImportAnimationOptions::get_optimize_max_angle() const {
-
- return optimize_max_angle->get_range(1);
-}
-
-
-void EditorImportAnimationOptions::set_filter(const String& p_filter) {
-
- filters->set_text(p_filter);
-}
-
-String EditorImportAnimationOptions::get_filter() const {
-
- return filters->get_text();
-}
-
-
-
-
-
-////////////////////////////////////////////////////////
-
-
-
-void EditorSceneImportDialog::_choose_file(const String& p_path) {
-#if 0
- StringName sn = EditorImportDB::get_singleton()->find_source_path(p_path);
- if (sn!=StringName()) {
-
- EditorImportDB::ImportScene isc;
- if (EditorImportDB::get_singleton()->get_scene(sn,isc)==OK) {
-
- save_path->set_text(String(sn).get_base_dir());
- texture_options->set_flags( isc.image_flags );
- texture_options->set_quality( isc.image_quality );
- texture_options->set_format( isc.image_format );
- animation_options->set_flags( isc.anim_flags );
- script_path->set_text( isc.import_script );
- uint32_t f = isc.flags;
- for(int i=0;i<scene_flags.size();i++) {
-
- scene_flags[i]->set_checked(0,f&(1<<i));
- }
- }
- } else {
-#endif
- save_path->set_text("");
- root_node_name->set_text("");
- //save_path->set_text(p_path.get_file().basename()+".scn");
-#if 0
- }
-#endif
-
- if (p_path!=String()) {
-
- String from_path = EditorFileSystem::get_singleton()->find_resource_from_source(EditorImportPlugin::validate_source_path(p_path));
- print_line("from path.."+from_path);
- if (from_path!=String()) {
- popup_import(from_path);
-
- }
- }
-
-
- import_path->set_text(p_path);
- if (root_node_name->get_text().size()==0){
- root_node_name->set_text(import_path->get_text().get_file().get_basename());
- }
-
-}
-void EditorSceneImportDialog::_choose_save_file(const String& p_path) {
-
- save_path->set_text(p_path);
-}
-
-void EditorSceneImportDialog::_choose_script(const String& p_path) {
-
- String p = ProjectSettings::get_singleton()->localize_path(p_path);
- if (!p.is_resource_file())
- p=ProjectSettings::get_singleton()->get_resource_path().path_to(p_path.get_base_dir())+p_path.get_file();
- script_path->set_text(p);
-
-}
-
-
-void EditorSceneImportDialog::_open_and_import() {
-
- bool unsaved=EditorNode::has_unsaved_changes();
-
- if (unsaved) {
-
- confirm_open->popup_centered_minsize(Size2(300,80)*EDSCALE);
- } else {
- _import(true);
- }
-}
-
-void EditorSceneImportDialog::_import(bool p_and_open) {
-
- wip_open=p_and_open;
-//' ImportMonitorBlock imb;
-
-
- if (import_path->get_text().strip_edges()=="") {
- error_dialog->set_text(TTR("Source path is empty."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (save_path->get_text().strip_edges()=="") {
- error_dialog->set_text(TTR("Target path is empty."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (!save_path->get_text().begins_with("res://")) {
- error_dialog->set_text(TTR("Target path must be a complete resource path."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (!DirAccess::exists(save_path->get_text())) {
- error_dialog->set_text(TTR("Target path must exist."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- String dst_path;
-
- if (texture_action->get_selected()==0)
- dst_path=save_path->get_text();//.get_base_dir();
- else
- dst_path=ProjectSettings::get_singleton()->get("import/shared_textures");
-
- uint32_t flags=0;
-
- for(int i=0;i<scene_flags.size();i++) {
-
- if (scene_flags[i]->is_checked(0)) {
- int md = scene_flags[i]->get_metadata(0);
- flags|=md;
- }
- }
-
-
-
-
-
- if (script_path->get_text()!="") {
- Ref<Script> scr = ResourceLoader::load(script_path->get_text());
- if (!scr.is_valid()) {
- error_dialog->set_text(TTR("Couldn't load post-import script."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- Ref<EditorScenePostImport> pi = Ref<EditorScenePostImport>( memnew( EditorScenePostImport ) );
- pi->set_script(scr.get_ref_ptr());
- if (!pi->get_script_instance()) {
-
- error_dialog->set_text(TTR("Invalid/broken script for post-import."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- }
-
-
- // Scenes should always be imported as binary format since vertex data is large and would take
- // up a lot of space and time to load if imported as text format (GH-5778)
- String save_file = save_path->get_text().plus_file(import_path->get_text().get_file().get_basename()+".scn");
- print_line("Saving to: "+save_file);
-
-
-
-
-
- Node *scene=NULL;
-
-
- Ref<ResourceImportMetadata> rim = memnew( ResourceImportMetadata );
-
- rim->add_source(EditorImportPlugin::validate_source_path(import_path->get_text()));
- rim->set_option("flags",flags);
- print_line("GET FLAGS: "+itos(texture_options->get_flags()));
- rim->set_option("texture_flags",texture_options->get_flags());
- rim->set_option("texture_format",texture_options->get_format());
- rim->set_option("texture_quality",texture_options->get_quality());
- rim->set_option("animation_flags",animation_options->get_flags());
- rim->set_option("animation_bake_fps",animation_options->get_fps());
- rim->set_option("animation_optimizer_linear_error",animation_options->get_optimize_linear_error());
- rim->set_option("animation_optimizer_angular_error",animation_options->get_optimize_angular_error());
- rim->set_option("animation_optimizer_max_angle",animation_options->get_optimize_max_angle());
- rim->set_option("animation_filters",animation_options->get_filter());
- rim->set_option("animation_clips",animation_options->get_clips());
- rim->set_option("post_import_script",script_path->get_text());
- rim->set_option("reimport",true);
- if (!root_default->is_pressed()) {
- rim->set_option("root_type",root_type->get_text());
- }
- if (root_node_name->get_text().size()==0) {
- root_node_name->set_text(import_path->get_text().get_file().get_basename());
- }
- rim->set_option("root_name",root_node_name->get_text());
-
- List<String> missing;
- Error err = plugin->import1(rim,&scene,&missing);
-
- if (err || !scene) {
-
- error_dialog->set_text(TTR("Error importing scene."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- if (missing.size()) {
-
- missing_files->clear();
- for(List<String>::Element *E=missing.front();E;E=E->next()) {
-
- missing_files->add_text(E->get());
- missing_files->add_newline();
- }
- wip_import=scene;
- wip_rimd=rim;
- wip_save_file=save_file;
- confirm_import->popup_centered_ratio();
- return;
-
- } else {
-
- err = plugin->import2(scene,save_file,rim);
-
- if (err) {
-
- error_dialog->set_text(TTR("Error importing scene."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
- if (wip_open)
- EditorNode::get_singleton()->load_scene(save_file,false,false,false);
-
- }
-
- hide();
-
- /*
- editor->clear_scene();
-
- Error err = EditorImport::import_scene(import_path->get_text(),save_file,dst_path,flags,texture_options->get_format(),compression,texture_options->get_flags(),texture_options->get_quality(),animation_options->get_flags(), &scene,pi);
-
- if (err) {
-
- error_dialog->set_text("Error importing scene.");
- error_dialog->popup_centered(Size2(200,100));
- return;
- }
-
- editor->save_import_export();
- if (scene)
- editor->set_edited_scene(scene);
-
- hide();
- */
-};
-
-
-void EditorSceneImportDialog::_import_confirm() {
-
- wip_blocked=true;
- print_line("import confirm!");
- Error err = plugin->import2(wip_import,wip_save_file,wip_rimd);
- wip_blocked=false;
- wip_import=NULL;
- wip_rimd=Ref<ResourceImportMetadata>();
- confirm_import->hide();
- if (err) {
-
- wip_save_file="";
- error_dialog->set_text(TTR("Error importing scene."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- if (wip_open)
- EditorNode::get_singleton()->load_scene(wip_save_file,false,false,false);
- wip_open=false;
- wip_save_file="";
-
- hide();
-
-}
-
-
-void EditorSceneImportDialog::_browse() {
-
- file_select->popup_centered_ratio();
-}
-
-void EditorSceneImportDialog::_browse_target() {
-
- save_select->popup_centered_ratio();
- if (save_path->get_text()!="")
- save_select->set_current_path(save_path->get_text());
-
-}
-
-void EditorSceneImportDialog::_browse_script() {
-
- script_select->popup_centered_ratio();
-
-}
-
-void EditorSceneImportDialog::popup_import(const String &p_from) {
-
- popup_centered(Size2(750,550)*EDSCALE);
- if (p_from!="") {
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_from);
- if (rimd.is_null())
- return;
-
- int flags = rimd->get_option("flags");
-
- for(int i=0;i<scene_flags.size();i++) {
-
- int md = scene_flags[i]->get_metadata(0);
- scene_flags[i]->set_checked(0,flags&md);
- }
-
- texture_options->set_flags(rimd->get_option("texture_flags"));
- texture_options->set_format(EditorTextureImportPlugin::ImageFormat(int(rimd->get_option("texture_format"))));
- texture_options->set_quality(rimd->get_option("texture_quality"));
- animation_options->set_flags(rimd->get_option("animation_flags"));
- if (rimd->has_option("animation_clips"))
- animation_options->setup_clips(rimd->get_option("animation_clips"));
- if (rimd->has_option("animation_filters"))
- animation_options->set_filter(rimd->get_option("animation_filters"));
- if (rimd->has_option("animation_bake_fps"))
- animation_options->set_fps(rimd->get_option("animation_bake_fps"));
- if (rimd->has_option("animation_optimizer_linear_error"))
- animation_options->set_optimize_linear_error(rimd->get_option("animation_optimizer_linear_error"));
- if (rimd->has_option("animation_optimizer_angular_error"))
- animation_options->set_optimize_angular_error(rimd->get_option("animation_optimizer_angular_error"));
- if (rimd->has_option("animation_optimizer_max_angle"))
- animation_options->set_optimize_max_angle(rimd->get_option("animation_optimizer_max_angle"));
-
- if (rimd->has_option("root_type")) {
- root_default->set_pressed(false);
- String type = rimd->get_option("root_type");
- root_type->set_text(type);
- root_type->set_disabled(false);
-
- if (has_icon(type,"EditorIcons")) {
- root_type->set_icon(get_icon(type,"EditorIcons"));
- } else {
- root_type->set_icon(get_icon("Object","EditorIcons"));
- }
-
- } else {
- root_default->set_pressed(true);
- root_type->set_disabled(true);
- }
- if (rimd->has_option("root_name")) {
- root_node_name->set_text(rimd->get_option("root_name"));
- } else {
- root_node_name->set_text(root_type->get_text()); // backward compatibility for 2.1 or before
- }
- script_path->set_text(rimd->get_option("post_import_script"));
-
- save_path->set_text(p_from.get_base_dir());
- import_path->set_text(EditorImportPlugin::expand_source_path(rimd->get_source_path(0)));
-
- }
-}
-
-
-void EditorSceneImportDialog::_notification(int p_what) {
-
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
-
- List<String> extensions;
- file_select->clear_filters();
- root_type->set_icon(get_icon("Spatial","EditorIcons"));
- root_type->set_text("Spatial");
- root_type->set_disabled(true);
-
- for(int i=0;i<plugin->get_importers().size();i++) {
- plugin->get_importers()[i]->get_extensions(&extensions);
- }
-
-
- for(int i=0;i<extensions.size();i++) {
-
- file_select->add_filter("*."+extensions[i]+" ; "+extensions[i].to_upper());
- }
-
- extensions.clear();
-
- //EditorImport::get_import_extensions(&extensions)
- /* ResourceLoader::get_recognized_extensions_for_type("PackedScene",&extensions);
- save_select->clear_filters();
- for(int i=0;i<extensions.size();i++) {
-
- save_select->add_filter("*."+extensions[i]+" ; "+extensions[i].to_upper());
- }*/
-
-
- }
-}
-
-Error EditorSceneImportDialog::import(const String& p_from, const String& p_to, const String& p_preset) {
-
- import_path->set_text(p_from);
- save_path->set_text(p_to);
- script_path->set_text(p_preset);
-
- _import();
-
-
-
- return OK;
-}
-
-void EditorSceneImportDialog::_dialog_hid() {
-
- if (wip_blocked)
- return;
- print_line("DIALOGHID!");
- if (wip_import) {
- memdelete(wip_import);
- wip_import=NULL;
- wip_save_file="";
- wip_rimd=Ref<ResourceImportMetadata>();
- }
-}
-void EditorSceneImportDialog::_root_default_pressed() {
-
- root_type->set_disabled(root_default->is_pressed());
-}
-
-void EditorSceneImportDialog::_root_type_pressed() {
-
-
- root_type_choose->popup(false);
-}
-
-
-void EditorSceneImportDialog::_set_root_type() {
-
- String type = root_type_choose->get_selected_type();
- if (type==String())
- return;
- root_type->set_text(type);
- if (has_icon(type,"EditorIcons")) {
- root_type->set_icon(get_icon(type,"EditorIcons"));
- } else {
- root_type->set_icon(get_icon("Object","EditorIcons"));
- }
-}
-
-void EditorSceneImportDialog::_bind_methods() {
-
-
- ClassDB::bind_method("_choose_file",&EditorSceneImportDialog::_choose_file);
- ClassDB::bind_method("_choose_save_file",&EditorSceneImportDialog::_choose_save_file);
- ClassDB::bind_method("_choose_script",&EditorSceneImportDialog::_choose_script);
- ClassDB::bind_method("_import",&EditorSceneImportDialog::_import,DEFVAL(false));
- ClassDB::bind_method("_browse",&EditorSceneImportDialog::_browse);
- ClassDB::bind_method("_browse_target",&EditorSceneImportDialog::_browse_target);
- ClassDB::bind_method("_browse_script",&EditorSceneImportDialog::_browse_script);
- ClassDB::bind_method("_dialog_hid",&EditorSceneImportDialog::_dialog_hid);
- ClassDB::bind_method("_import_confirm",&EditorSceneImportDialog::_import_confirm);
- ClassDB::bind_method("_open_and_import",&EditorSceneImportDialog::_open_and_import);
- ClassDB::bind_method("_root_default_pressed",&EditorSceneImportDialog::_root_default_pressed);
- ClassDB::bind_method("_root_type_pressed",&EditorSceneImportDialog::_root_type_pressed);
- ClassDB::bind_method("_set_root_type",&EditorSceneImportDialog::_set_root_type);
-
-
- ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
-}
-
-
-
-const EditorSceneImportDialog::FlagInfo EditorSceneImportDialog::scene_flag_names[]={
-
- {EditorSceneImportPlugin::SCENE_FLAG_REMOVE_NOIMP,("Actions"),"Remove Nodes (-noimp)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_IMPORT_ANIMATIONS,("Actions"),"Import Animations",true},
- {EditorSceneImportPlugin::SCENE_FLAG_COMPRESS_GEOMETRY,("Actions"),"Compress Geometry",false},
- {EditorSceneImportPlugin::SCENE_FLAG_GENERATE_TANGENT_ARRAYS,("Actions"),"Force Generation of Tangent Arrays",false},
- {EditorSceneImportPlugin::SCENE_FLAG_LINEARIZE_DIFFUSE_TEXTURES,("Actions"),"SRGB->Linear Of Diffuse Textures",false},
- {EditorSceneImportPlugin::SCENE_FLAG_CONVERT_NORMALMAPS_TO_XY,("Actions"),"Convert Normal Maps to XY",true},
- {EditorSceneImportPlugin::SCENE_FLAG_SET_LIGHTMAP_TO_UV2_IF_EXISTS,("Actions"),"Set Material Lightmap to UV2 if Tex2Array Exists",true},
- {EditorSceneImportPlugin::SCENE_FLAG_MERGE_KEEP_MATERIALS,("Merge"),"Keep Materials after first import (delete them for re-import).",true},
- {EditorSceneImportPlugin::SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,("Merge"),"Keep user-added Animation tracks.",true},
- {EditorSceneImportPlugin::SCENE_FLAG_DETECT_ALPHA,("Materials"),"Set Alpha in Materials (-alpha)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_DETECT_VCOLOR,("Materials"),"Set Vert. Color in Materials (-vcol)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_COLLISIONS,("Create"),"Create Collisions and/or Rigid Bodies (-col,-colonly,-rigid,-rigidonly)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_PORTALS,("Create"),"Create Portals (-portal)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_ROOMS,("Create"),"Create Rooms (-room)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_SIMPLIFY_ROOMS,("Create"),"Simplify Rooms",false},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_BILLBOARDS,("Create"),"Create Billboards (-bb)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_IMPOSTORS,("Create"),"Create Impostors (-imp:dist)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_LODS,("Create"),"Create LODs (-lod:dist)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_CARS,("Create"),"Create Vehicles (-vehicle)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_WHEELS,("Create"),"Create Vehicle Wheels (-wheel)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_CREATE_NAVMESH,("Create"),"Create Navigation Meshes (-navmesh)",true},
- {EditorSceneImportPlugin::SCENE_FLAG_DETECT_LIGHTMAP_LAYER,("Create"),"Detect LightMap Layer (-lm:<int>).",true},
- {-1,NULL,NULL,false}
-};
-
-
-EditorSceneImportDialog::EditorSceneImportDialog(EditorNode *p_editor, EditorSceneImportPlugin *p_plugin) {
-
-
- editor=p_editor;
- plugin=p_plugin;
-
- set_title(TTR("Import 3D Scene"));
- HBoxContainer *import_hb = memnew( HBoxContainer );
- add_child(import_hb);
- //set_child_rect(import_hb);
-
- VBoxContainer *vbc = memnew( VBoxContainer );
- import_hb->add_child(vbc);
- vbc->set_h_size_flags(SIZE_EXPAND_FILL);
-
- HBoxContainer *hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Source Scene:"),hbc);
-
- import_path = memnew( LineEdit );
- import_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(import_path);
-
- Button * import_choose = memnew( Button );
- import_choose->set_text(" .. ");
- hbc->add_child(import_choose);
-
- import_choose->connect("pressed", this,"_browse");
-
- hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Target Path:"),hbc);
-
- save_path = memnew( LineEdit );
- save_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(save_path);
-
- Button * save_choose = memnew( Button );
- save_choose->set_text(" .. ");
- hbc->add_child(save_choose);
-
- save_choose->connect("pressed", this,"_browse_target");
-
- texture_action = memnew( OptionButton );
- texture_action->add_item(TTR("Same as Target Scene"));
- texture_action->add_item(TTR("Shared"));
- texture_action->select(0);
- vbc->add_margin_child(TTR("Target Texture Folder:"),texture_action);
-
- import_options = memnew( Tree );
- vbc->set_v_size_flags(SIZE_EXPAND_FILL);
- vbc->add_margin_child(TTR("Options:"),import_options,true);
-
- file_select = memnew(EditorFileDialog);
- file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- add_child(file_select);
-
-
- file_select->set_mode(EditorFileDialog::MODE_OPEN_FILE);
-
- file_select->connect("file_selected", this,"_choose_file");
-
- save_select = memnew(EditorDirDialog);
- add_child(save_select);
-
- //save_select->set_mode(EditorFileDialog::MODE_SAVE_FILE);
- save_select->connect("dir_selected", this,"_choose_save_file");
-
- get_ok()->connect("pressed", this,"_import");
- get_ok()->set_text(TTR("Import"));
-
- TreeItem *root = import_options->create_item(NULL);
- import_options->set_hide_root(true);
-
- const FlagInfo* fn=scene_flag_names;
-
- Map<String,TreeItem*> categories;
-
- while(fn->text) {
-
- String cat = fn->category;
- TreeItem *parent;
- if (!categories.has(cat)) {
- parent = import_options->create_item(root);
- parent->set_text(0,cat);
- categories[cat]=parent;
- } else {
- parent=categories[cat];
- }
-
- TreeItem *opt = import_options->create_item(parent);
- opt->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
- opt->set_checked(0,fn->defval);
- opt->set_editable(0,true);
- opt->set_text(0,fn->text);
- opt->set_metadata(0,fn->value);
-
- scene_flags.push_back(opt);
- fn++;
- }
-
- hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Post-Process Script:"),hbc);
-
- script_path = memnew( LineEdit );
- script_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(script_path);
-
- Button * script_choose = memnew( Button );
- script_choose->set_text(" .. ");
- hbc->add_child(script_choose);
-
- script_choose->connect("pressed", this,"_browse_script");
-
- script_select = memnew(EditorFileDialog);
- add_child(script_select);
- for(int i=0;i<ScriptServer::get_language_count();i++) {
-
- ScriptLanguage *sl=ScriptServer::get_language(i);
- String ext = sl->get_extension();
- if (ext=="")
- continue;
- script_select->add_filter("*."+ext+" ; "+sl->get_name());
- }
-
-
- script_select->set_mode(EditorFileDialog::MODE_OPEN_FILE);
-
- script_select->connect("file_selected", this,"_choose_script");
-
- error_dialog = memnew ( ConfirmationDialog );
- add_child(error_dialog);
- error_dialog->get_ok()->set_text(TTR("Accept"));
- //error_dialog->get_cancel()->hide();
-
-
- HBoxContainer *custom_root_hb = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Custom Root Node Type:"),custom_root_hb);
- root_type = memnew(Button);
- root_type->set_h_size_flags(SIZE_EXPAND_FILL);
- root_type->set_text_align(Button::ALIGN_LEFT);
- root_type->connect("pressed",this,"_root_type_pressed");
- custom_root_hb->add_child(root_type);
-
- root_default = memnew(CheckBox);
- root_default->set_text(TTR("Auto"));
- root_default->set_pressed(true);
- root_default->connect("pressed",this,"_root_default_pressed");
- custom_root_hb->add_child(root_default);
-
- root_node_name = memnew( LineEdit );
- root_node_name->set_h_size_flags(SIZE_EXPAND_FILL);
- vbc->add_margin_child(TTR("Root Node Name:"),root_node_name);
- /*
- this_import = memnew( OptionButton );
- this_import->add_item("Overwrite Existing Scene");
- this_import->add_item("Overwrite Existing, Keep Materials");
- this_import->add_item("Keep Existing, Merge with New");
- this_import->add_item("Keep Existing, Ignore New");
- vbc->add_margin_child("This Time:",this_import);
-
- next_import = memnew( OptionButton );
- next_import->add_item("Overwrite Existing Scene");
- next_import->add_item("Overwrite Existing, Keep Materials");
- next_import->add_item("Keep Existing, Merge with New");
- next_import->add_item("Keep Existing, Ignore New");
- vbc->add_margin_child("Next Time:",next_import);
-*/
- set_hide_on_ok(false);
-
- GLOBAL_DEF("import/shared_textures","res://");
- ProjectSettings::get_singleton()->set_custom_property_info("import/shared_textures",PropertyInfo(Variant::STRING,"import/shared_textures",PROPERTY_HINT_DIR));
-
- import_hb->add_constant_override("separation",30);
-
-
- VBoxContainer *ovb = memnew( VBoxContainer);
- ovb->set_h_size_flags(SIZE_EXPAND_FILL);
- import_hb->add_child(ovb);
-
- texture_options = memnew( EditorImportTextureOptions );
- ovb->add_child(texture_options);
- texture_options->set_v_size_flags(SIZE_EXPAND_FILL);
- //animation_options->set_flags(EditorImport::
- texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM);
- texture_options->set_flags( EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA | EditorTextureImportPlugin::IMAGE_FLAG_REPEAT | EditorTextureImportPlugin::IMAGE_FLAG_FILTER );
-
-
- animation_options = memnew( EditorImportAnimationOptions );
- ovb->add_child(animation_options);
- animation_options->set_v_size_flags(SIZE_EXPAND_FILL);
- animation_options->set_flags(EditorSceneAnimationImportPlugin::ANIMATION_DETECT_LOOP|EditorSceneAnimationImportPlugin::ANIMATION_KEEP_VALUE_TRACKS|EditorSceneAnimationImportPlugin::ANIMATION_OPTIMIZE|EditorSceneAnimationImportPlugin::ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS);
-
-
- confirm_import = memnew( ConfirmationDialog );
- add_child(confirm_import);
- VBoxContainer *cvb = memnew( VBoxContainer );
- confirm_import->add_child(cvb);
- //confirm_import->set_child_rect(cvb);
-
- PanelContainer *pc = memnew( PanelContainer );
- pc->add_style_override("panel",get_stylebox("normal","TextEdit"));
- //ec->add_child(pc);
- missing_files = memnew( RichTextLabel );
- cvb->add_margin_child(TTR("The Following Files are Missing:"),pc,true);
- pc->add_child(missing_files);
- confirm_import->get_ok()->set_text(TTR("Import Anyway"));
- confirm_import->get_cancel()->set_text(TTR("Cancel"));
- confirm_import->connect("popup_hide",this,"_dialog_hid");
- confirm_import->connect("confirmed",this,"_import_confirm");
- confirm_import->set_hide_on_ok(false);
-
- add_button(TTR("Import & Open"),!OS::get_singleton()->get_swap_ok_cancel())->connect("pressed",this,"_open_and_import");
-
- confirm_open = memnew( ConfirmationDialog );
- add_child(confirm_open);
- confirm_open->set_text(TTR("Edited scene has not been saved, open imported scene anyway?"));
- confirm_open->connect("confirmed",this,"_import",varray(true));
-
-
- wip_import=NULL;
- wip_blocked=false;
- wip_open=false;
- //texture_options->set_format(EditorImport::IMAGE_FORMAT_C);
-
- root_type_choose = memnew( CreateDialog );
- add_child(root_type_choose);
- root_type_choose->set_base_type("Node");
- root_type_choose->connect("create",this,"_set_root_type");
-}
-
-
-
-////////////////////////////////
-
-
-
-String EditorSceneImportPlugin::get_name() const {
-
- return "scene_3d";
-}
-
-String EditorSceneImportPlugin::get_visible_name() const{
-
- return TTR("Scene");
-}
-
-void EditorSceneImportPlugin::import_dialog(const String& p_from){
-
- dialog->popup_import(p_from);
-}
-
-
-//////////////////////////
-
-
-static bool _teststr(const String& p_what,const String& p_str) {
-
- if (p_what.findn("$"+p_str)!=-1) //blender and other stuff
- return true;
- if (p_what.to_lower().ends_with("-"+p_str)) //collada only supports "_" and "-" besides letters
- return true;
- if (p_what.to_lower().ends_with("_"+p_str)) //collada only supports "_" and "-" besides letters
- return true;
- return false;
-}
-
-static String _fixstr(const String& p_what,const String& p_str) {
-
- if (p_what.findn("$"+p_str)!=-1) //blender and other stuff
- return p_what.replace("$"+p_str,"");
- if (p_what.to_lower().ends_with("-"+p_str)) //collada only supports "_" and "-" besides letters
- return p_what.substr(0,p_what.length()-(p_str.length()+1));
- if (p_what.to_lower().ends_with("_"+p_str)) //collada only supports "_" and "-" besides letters
- return p_what.substr(0,p_what.length()-(p_str.length()+1));
- return p_what;
-}
-
-
-
-void EditorSceneImportPlugin::_find_resources(const Variant& p_var, Map<Ref<ImageTexture>, TextureRole> &image_map,int p_flags) {
-
-
- switch(p_var.get_type()) {
-
- case Variant::OBJECT: {
-
- Ref<Resource> res = p_var;
- if (res.is_valid()) {
-
- if (res->is_class("Texture") && !image_map.has(res)) {
-
- image_map.insert(res,TEXTURE_ROLE_DEFAULT);
-
-
- } else {
-
-
- List<PropertyInfo> pl;
- res->get_property_list(&pl);
- for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) {
-
- if (E->get().type==Variant::OBJECT || E->get().type==Variant::ARRAY || E->get().type==Variant::DICTIONARY) {
- if (E->get().type==Variant::OBJECT && res->cast_to<SpatialMaterial>() && (E->get().name=="textures/diffuse" || E->get().name=="textures/detail" || E->get().name=="textures/emission")) {
-
- Ref<ImageTexture> tex =res->get(E->get().name);
- if (tex.is_valid()) {
-
- image_map.insert(tex,TEXTURE_ROLE_DIFFUSE);
- }
-
- } else if (E->get().type==Variant::OBJECT && res->cast_to<SpatialMaterial>() && (E->get().name=="textures/normal")) {
-
- Ref<ImageTexture> tex =res->get(E->get().name);
- if (tex.is_valid()) {
-
- image_map.insert(tex,TEXTURE_ROLE_NORMALMAP);
- /*
- if (p_flags&SCENE_FLAG_CONVERT_NORMALMAPS_TO_XY)
- res->cast_to<SpatialMaterial>()->set_fixed_flag(SpatialMaterial::FLAG_USE_XY_NORMALMAP,true);
- */
- }
-
-
- } else {
- _find_resources(res->get(E->get().name),image_map,p_flags);
- }
- }
- }
-
- }
- }
-
- } break;
- case Variant::DICTIONARY: {
-
- Dictionary d= p_var;
-
- List<Variant> keys;
- d.get_key_list(&keys);
-
- for(List<Variant>::Element *E=keys.front();E;E=E->next()) {
-
-
- _find_resources(E->get(),image_map,p_flags);
- _find_resources(d[E->get()],image_map,p_flags);
-
- }
-
-
- } break;
- case Variant::ARRAY: {
-
- Array a = p_var;
- for(int i=0;i<a.size();i++) {
-
- _find_resources(a[i],image_map,p_flags);
- }
-
- } break;
- default: {}
-
- }
-
-}
-
-
-Node* EditorSceneImportPlugin::_fix_node(Node *p_node,Node *p_root,Map<Ref<Mesh>,Ref<Shape> > &collision_map,uint32_t p_flags,Map<Ref<ImageTexture>,TextureRole >& image_map) {
-
- // children first..
- for(int i=0;i<p_node->get_child_count();i++) {
-
-
- Node *r = _fix_node(p_node->get_child(i),p_root,collision_map,p_flags,image_map);
- if (!r) {
- print_line("was erased..");
- i--; //was erased
- }
- }
-
- String name = p_node->get_name();
-
- bool isroot = p_node==p_root;
-
-
- if (!isroot && p_flags&SCENE_FLAG_REMOVE_NOIMP && _teststr(name,"noimp")) {
-
- memdelete(p_node);
- return NULL;
- }
-
- {
-
- List<PropertyInfo> pl;
- p_node->get_property_list(&pl);
- for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) {
-
- if (E->get().type==Variant::OBJECT || E->get().type==Variant::ARRAY || E->get().type==Variant::DICTIONARY) {
- _find_resources(p_node->get(E->get().name),image_map,p_flags);
- }
- }
-
- }
-
-
-
-
- if (p_flags&SCENE_FLAG_CREATE_BILLBOARDS && p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- bool bb=false;
-
- if ((_teststr(name,"bb"))) {
- bb=true;
- } else if (mi->get_mesh().is_valid() && (_teststr(mi->get_mesh()->get_name(),"bb"))) {
- bb=true;
-
- }
-
- if (bb) {
- mi->set_flag(GeometryInstance::FLAG_BILLBOARD,true);
- if (mi->get_mesh().is_valid()) {
-
- Ref<Mesh> m = mi->get_mesh();
- for(int i=0;i<m->get_surface_count();i++) {
-
- Ref<SpatialMaterial> fm = m->surface_get_material(i);
- if (fm.is_valid()) {
- //fm->set_flag(Material::FLAG_UNSHADED,true);
- //fm->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- //fm->set_depth_draw_mode(Material::DEPTH_DRAW_NEVER);
- //fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- }
- }
- }
- }
- }
-
-
- if (p_flags&(SCENE_FLAG_DETECT_ALPHA|SCENE_FLAG_DETECT_VCOLOR|SCENE_FLAG_SET_LIGHTMAP_TO_UV2_IF_EXISTS) && p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- Ref<Mesh> m = mi->get_mesh();
-
- if (m.is_valid()) {
-
- for(int i=0;i<m->get_surface_count();i++) {
-
- Ref<SpatialMaterial> mat = m->surface_get_material(i);
- if (!mat.is_valid())
- continue;
-
- if (p_flags&SCENE_FLAG_DETECT_ALPHA && _teststr(mat->get_name(),"alpha")) {
-
- //mat->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- //mat->set_name(_fixstr(mat->get_name(),"alpha"));
- }
- if (p_flags&SCENE_FLAG_DETECT_VCOLOR && _teststr(mat->get_name(),"vcol")) {
-
- //mat->set_fixed_flag(SpatialMaterial::FLAG_USE_COLOR_ARRAY,true);
- //mat->set_name(_fixstr(mat->get_name(),"vcol"));
- }
-
- if (p_flags&SCENE_FLAG_SET_LIGHTMAP_TO_UV2_IF_EXISTS && m->surface_get_format(i)&Mesh::ARRAY_FORMAT_TEX_UV2) {
- //mat->set_flag(Material::FLAG_LIGHTMAP_ON_UV2,true);
- }
-
- }
- }
- }
-
- if (p_flags&SCENE_FLAG_REMOVE_NOIMP && p_node->cast_to<AnimationPlayer>()) {
- //remove animations referencing non-importable nodes
- AnimationPlayer *ap = p_node->cast_to<AnimationPlayer>();
-
- List<StringName> anims;
- ap->get_animation_list(&anims);
- for(List<StringName>::Element *E=anims.front();E;E=E->next()) {
-
- Ref<Animation> anim=ap->get_animation(E->get());
- ERR_CONTINUE(anim.is_null());
- for(int i=0;i<anim->get_track_count();i++) {
- NodePath path = anim->track_get_path(i);
-
- for(int j=0;j<path.get_name_count();j++) {
- String node = path.get_name(j);
- if (_teststr(node,"noimp")) {
- anim->remove_track(i);
- i--;
- break;
- }
- }
- }
-
- }
- }
-
-
- if (p_flags&SCENE_FLAG_CREATE_IMPOSTORS && p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- String str;
-
- if ((_teststr(name,"imp"))) {
- str=name;
- } else if (mi->get_mesh().is_valid() && (_teststr(mi->get_mesh()->get_name(),"imp"))) {
- str=mi->get_mesh()->get_name();
-
- }
-
-
- if (p_node->get_parent() && p_node->get_parent()->cast_to<MeshInstance>()) {
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- MeshInstance *mip = p_node->get_parent()->cast_to<MeshInstance>();
- String d=str.substr(str.find("imp")+3,str.length());
- if (d!="") {
- if ((d[0]<'0' || d[0]>'9'))
- d=d.substr(1,d.length());
- if (d.length() && d[0]>='0' && d[0]<='9') {
- float dist = d.to_double();
- mi->set_flag(GeometryInstance::FLAG_BILLBOARD,true);
- mi->set_flag(GeometryInstance::FLAG_BILLBOARD_FIX_Y,true);
- //mi->set_draw_range_begin(dist);
- //mi->set_draw_range_end(100000);
-
- //mip->set_draw_range_begin(0);
- //mip->set_draw_range_end(dist);
-
- if (mi->get_mesh().is_valid()) {
-
- Ref<Mesh> m = mi->get_mesh();
- for(int i=0;i<m->get_surface_count();i++) {
-
- Ref<SpatialMaterial> fm = m->surface_get_material(i);
- if (fm.is_valid()) {
- //fm->set_flag(Material::FLAG_UNSHADED,true);
- //fm->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- //fm->set_depth_draw_mode(Material::DEPTH_DRAW_NEVER);
- //fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- }
- }
- }
- }
- }
- }
- }
-
- if (p_flags&SCENE_FLAG_CREATE_LODS && p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- String str;
-
- if ((_teststr(name,"lod"))) {
- str=name;
- } else if (mi->get_mesh().is_valid() && (_teststr(mi->get_mesh()->get_name(),"lod"))) {
- str=mi->get_mesh()->get_name();
-
- }
-
-
- if (p_node->get_parent() && p_node->get_parent()->cast_to<MeshInstance>()) {
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- MeshInstance *mip = p_node->get_parent()->cast_to<MeshInstance>();
- String d=str.substr(str.find("lod")+3,str.length());
- if (d!="") {
- if ((d[0]<'0' || d[0]>'9'))
- d=d.substr(1,d.length());
- if (d.length() && d[0]>='0' && d[0]<='9') {
- float dist = d.to_double();
- /// mi->set_draw_range_begin(dist);
- // mi->set_draw_range_end(100000);
-
- // mip->set_draw_range_begin(0);
- // mip->set_draw_range_end(dist);
-
- /*if (mi->get_mesh().is_valid()) {
-
- Ref<Mesh> m = mi->get_mesh();
- for(int i=0;i<m->get_surface_count();i++) {
-
- Ref<SpatialMaterial> fm = m->surface_get_material(i);
- if (fm.is_valid()) {
- fm->set_flag(Material::FLAG_UNSHADED,true);
- fm->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- fm->set_hint(Material::HINT_NO_DEPTH_DRAW,true);
- fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- }
- }
- }*/
- }
- }
- }
- }
-
-
- if (p_flags&SCENE_FLAG_DETECT_LIGHTMAP_LAYER && _teststr(name,"lm") && p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- String str=name;
- int layer = str.substr(str.find("lm")+3,str.length()).to_int();
- //mi->set_baked_light_texture_id(layer);
- }
-
- bool is_rigid = _teststr(name, "rigidonly");
-
- if (p_flags & SCENE_FLAG_CREATE_COLLISIONS && (_teststr(name, "colonly") || is_rigid)) {
-
- if (isroot)
- return p_node;
-
- if (p_node->cast_to<MeshInstance>() && !is_rigid) {
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- Node * col = mi->create_trimesh_collision_node();
- ERR_FAIL_COND_V(!col,NULL);
-
- col->set_name(_fixstr(name,"colonly"));
- col->cast_to<Spatial>()->set_transform(mi->get_transform());
- p_node->replace_by(col);
- memdelete(p_node);
- p_node=col;
-
- StaticBody *sb = col->cast_to<StaticBody>();
- CollisionShape *colshape = memnew( CollisionShape);
- colshape->set_shape(sb->get_shape(0));
- colshape->set_name("shape");
- sb->add_child(colshape);
- colshape->set_owner(p_node->get_owner());
- } else if (p_node->has_meta("empty_draw_type")) {
- String empty_draw_type = String(p_node->get_meta("empty_draw_type"));
- print_line(empty_draw_type);
- PhysicsBody *pb;
- if (is_rigid) {
- pb = memnew(RigidBody);
- pb->set_name(_fixstr(name, "rigidonly"));
- } else {
- pb = memnew(StaticBody);
- pb->set_name(_fixstr(name, "colonly"));
- }
- pb->cast_to<Spatial>()->set_transform(p_node->cast_to<Spatial>()->get_transform());
- p_node->replace_by(pb);
- memdelete(p_node);
- CollisionShape *colshape = memnew( CollisionShape);
- if (empty_draw_type == "CUBE") {
- BoxShape *boxShape = memnew( BoxShape);
- boxShape->set_extents(Vector3(1, 1, 1));
- colshape->set_shape(boxShape);
- colshape->set_name("BoxShape");
- } else if (empty_draw_type == "SINGLE_ARROW") {
- RayShape *rayShape = memnew( RayShape);
- rayShape->set_length(1);
- colshape->set_shape(rayShape);
- colshape->set_name("RayShape");
- pb->cast_to<Spatial>()->rotate_x(Math_PI / 2);
- } else if (empty_draw_type == "IMAGE") {
- PlaneShape *planeShape = memnew( PlaneShape);
- colshape->set_shape(planeShape);
- colshape->set_name("PlaneShape");
- } else {
- SphereShape *sphereShape = memnew( SphereShape);
- sphereShape->set_radius(1);
- colshape->set_shape(sphereShape);
- colshape->set_name("SphereShape");
- }
- pb->add_child(colshape);
- colshape->set_owner(pb->get_owner());
- }
-
- } else if (p_flags&SCENE_FLAG_CREATE_COLLISIONS && _teststr(name,"rigid") && p_node->cast_to<MeshInstance>()) {
-
- if (isroot)
- return p_node;
-
- // get mesh instance and bounding box
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- Rect3 aabb = mi->get_aabb();
-
- // create a new rigid body collision node
- RigidBody * rigid_body = memnew( RigidBody );
- Node * col = rigid_body;
- ERR_FAIL_COND_V(!col,NULL);
-
- // remove node name postfix
- col->set_name(_fixstr(name,"rigid"));
- // get mesh instance xform matrix to the rigid body collision node
- col->cast_to<Spatial>()->set_transform(mi->get_transform());
- // save original node by duplicating it into a new instance and correcting the name
- Node * mesh = p_node->duplicate();
- mesh->set_name(_fixstr(name,"rigid"));
- // reset the xform matrix of the duplicated node so it can inherit parent node xform
- mesh->cast_to<Spatial>()->set_transform(Transform(Basis()));
- // reparent the new mesh node to the rigid body collision node
- p_node->add_child(mesh);
- mesh->set_owner(p_node->get_owner());
- // replace the original node with the rigid body collision node
- p_node->replace_by(col);
- memdelete(p_node);
- p_node=col;
-
- // create an alias for the rigid body collision node
- RigidBody *rb = col->cast_to<RigidBody>();
- // create a new Box collision shape and set the right extents
- Ref<BoxShape> shape = memnew( BoxShape );
- shape->set_extents(aabb.get_size() * 0.5);
- CollisionShape *colshape = memnew( CollisionShape);
- colshape->set_name("shape");
- colshape->set_shape(shape);
- // reparent the new collision shape to the rigid body collision node
- rb->add_child(colshape);
- colshape->set_owner(p_node->get_owner());
-
- } else if (p_flags&SCENE_FLAG_CREATE_COLLISIONS &&_teststr(name,"col") && p_node->cast_to<MeshInstance>()) {
-
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- mi->set_name(_fixstr(name,"col"));
- Node *col= mi->create_trimesh_collision_node();
- ERR_FAIL_COND_V(!col,NULL);
-
- col->set_name("col");
- p_node->add_child(col);
-
- StaticBody *sb=col->cast_to<StaticBody>();
- CollisionShape *colshape = memnew( CollisionShape);
- colshape->set_shape(sb->get_shape(0));
- colshape->set_name("shape");
- col->add_child(colshape);
- colshape->set_owner(p_node->get_owner());
- sb->set_owner(p_node->get_owner());
-
- } else if (p_flags&SCENE_FLAG_CREATE_NAVMESH &&_teststr(name,"navmesh") && p_node->cast_to<MeshInstance>()) {
-
- if (isroot)
- return p_node;
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- Ref<Mesh> mesh=mi->get_mesh();
- ERR_FAIL_COND_V(mesh.is_null(),NULL);
- NavigationMeshInstance *nmi = memnew( NavigationMeshInstance );
-
-
- nmi->set_name(_fixstr(name,"navmesh"));
- Ref<NavigationMesh> nmesh = memnew( NavigationMesh);
- nmesh->create_from_mesh(mesh);
- nmi->set_navigation_mesh(nmesh);
- nmi->cast_to<Spatial>()->set_transform(mi->get_transform());
- p_node->replace_by(nmi);
- memdelete(p_node);
- p_node=nmi;
- } else if (p_flags&SCENE_FLAG_CREATE_CARS &&_teststr(name,"vehicle")) {
-
- if (isroot)
- return p_node;
-
- Node *owner = p_node->get_owner();
- Spatial *s = p_node->cast_to<Spatial>();
- VehicleBody *bv = memnew( VehicleBody );
- String n = _fixstr(p_node->get_name(),"vehicle");
- bv->set_name(n);
- p_node->replace_by(bv);
- p_node->set_name(n);
- bv->add_child(p_node);
- bv->set_owner(owner);
- p_node->set_owner(owner);
- bv->set_transform(s->get_transform());
- s->set_transform(Transform());
-
- p_node=bv;
-
-
- } else if (p_flags&SCENE_FLAG_CREATE_CARS &&_teststr(name,"wheel")) {
-
- if (isroot)
- return p_node;
-
- Node *owner = p_node->get_owner();
- Spatial *s = p_node->cast_to<Spatial>();
- VehicleWheel *bv = memnew( VehicleWheel );
- String n = _fixstr(p_node->get_name(),"wheel");
- bv->set_name(n);
- p_node->replace_by(bv);
- p_node->set_name(n);
- bv->add_child(p_node);
- bv->set_owner(owner);
- p_node->set_owner(owner);
- bv->set_transform(s->get_transform());
- s->set_transform(Transform());
-
- p_node=bv;
-
- } else if (p_flags&SCENE_FLAG_CREATE_ROOMS && _teststr(name,"room") && p_node->cast_to<MeshInstance>()) {
-
-
- if (isroot)
- return p_node;
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- PoolVector<Face3> faces = mi->get_faces(VisualInstance::FACES_SOLID);
-
-
- BSP_Tree bsptree(faces);
-
- Ref<RoomBounds> area = memnew( RoomBounds );
- //area->set_bounds(faces);
- //area->set_geometry_hint(faces);
-
-
- Room * room = memnew( Room );
- room->set_name(_fixstr(name,"room"));
- room->set_transform(mi->get_transform());
- room->set_room(area);
-
- p_node->replace_by(room);
- memdelete(p_node);
- p_node=room;
-
- } else if (p_flags&SCENE_FLAG_CREATE_ROOMS &&_teststr(name,"room")) {
-
- if (isroot)
- return p_node;
-
- Spatial *dummy = p_node->cast_to<Spatial>();
- ERR_FAIL_COND_V(!dummy,NULL);
-
- Room * room = memnew( Room );
- room->set_name(_fixstr(name,"room"));
- room->set_transform(dummy->get_transform());
-
- p_node->replace_by(room);
- memdelete(p_node);
- p_node=room;
-
- //room->compute_room_from_subtree();
-
- } else if (p_flags&SCENE_FLAG_CREATE_PORTALS &&_teststr(name,"portal") && p_node->cast_to<MeshInstance>()) {
-
- if (isroot)
- return p_node;
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
- PoolVector<Face3> faces = mi->get_faces(VisualInstance::FACES_SOLID);
-
- ERR_FAIL_COND_V(faces.size()==0,NULL);
- //step 1 compute the plane
- Set<Vector3> points;
- Plane plane;
-
- Vector3 center;
-
- for(int i=0;i<faces.size();i++) {
-
- Face3 f = faces.get(i);
- Plane p = f.get_plane();
- plane.normal+=p.normal;
- plane.d+=p.d;
-
- for(int i=0;i<3;i++) {
-
- Vector3 v = f.vertex[i].snapped(0.01);
- if (!points.has(v)) {
- points.insert(v);
- center+=v;
- }
- }
- }
-
- plane.normal.normalize();
- plane.d/=faces.size();
- center/=points.size();
-
- //step 2, create points
-
- Transform t;
- t.basis.from_z(plane.normal);
- t.basis.transpose();
- t.origin=center;
-
- Vector<Point2> portal_points;
-
- for(Set<Vector3>::Element *E=points.front();E;E=E->next()) {
-
- Vector3 local = t.xform_inv(E->get());
- portal_points.push_back(Point2(local.x,local.y));
- }
- // step 3 bubbly sort points
-
- int swaps=0;
-
- do {
- swaps=0;
-
- for(int i=0;i<portal_points.size()-1;i++) {
-
- float a = portal_points[i].angle();
- float b = portal_points[i+1].angle();
-
- if (a>b) {
- SWAP( portal_points[i], portal_points[i+1] );
- swaps++;
- }
-
- }
-
- } while(swaps);
-
-
- Portal *portal = memnew( Portal );
-
- portal->set_shape(portal_points);
- portal->set_transform( mi->get_transform() * t);
-
- p_node->replace_by(portal);
- memdelete(p_node);
- p_node=portal;
-
- } else if (p_node->cast_to<MeshInstance>()) {
-
- //last attempt, maybe collision insde the mesh data
-
- MeshInstance *mi = p_node->cast_to<MeshInstance>();
-
- Ref<Mesh> mesh = mi->get_mesh();
- if (!mesh.is_null()) {
-
- if (p_flags&SCENE_FLAG_CREATE_COLLISIONS && _teststr(mesh->get_name(),"col")) {
-
- mesh->set_name( _fixstr(mesh->get_name(),"col") );
- Ref<Shape> shape;
-
- if (collision_map.has(mesh)) {
- shape = collision_map[mesh];
-
- } else {
-
- shape = mesh->create_trimesh_shape();
- if (!shape.is_null())
- collision_map[mesh]=shape;
-
-
- }
-
- if (!shape.is_null()) {
-#if 0
- StaticBody* static_body = memnew( StaticBody );
- ERR_FAIL_COND_V(!static_body,NULL);
- static_body->set_name( String(mesh->get_name()) + "_col" );
- shape->set_name(static_body->get_name());
- static_body->add_shape(shape);
-
- mi->add_child(static_body);
- if (mi->get_owner())
- static_body->set_owner( mi->get_owner() );
-#endif
- }
-
- }
-
- for(int i=0;i<mesh->get_surface_count();i++) {
-
- Ref<SpatialMaterial> fm = mesh->surface_get_material(i);
- if (fm.is_valid()) {
- String name = fm->get_name();
- /* if (_teststr(name,"alpha")) {
- fm->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- name=_fixstr(name,"alpha");
- }
-
- if (_teststr(name,"vcol")) {
- fm->set_fixed_flag(SpatialMaterial::FLAG_USE_COLOR_ARRAY,true);
- name=_fixstr(name,"vcol");
- }*/
- fm->set_name(name);
- }
- }
-
- }
-
- }
-
-
- return p_node;
-}
-
-#if 0
-
-Error EditorImport::import_scene(const String& p_path,const String& p_dest_path,const String& p_resource_path,uint32_t p_flags,ImageFormat p_image_format,ImageCompression p_image_compression,uint32_t p_image_flags,float p_quality,uint32_t animation_flags,Node **r_scene,Ref<EditorPostImport> p_post_import) {
-
-
-}
-#endif
-
-void EditorSceneImportPlugin::_tag_import_paths(Node *p_scene,Node *p_node) {
-
- if (p_scene!=p_node && p_node->get_owner()!=p_scene)
- return;
-
- NodePath path = p_scene->get_path_to(p_node);
- p_node->set_import_path( path );
-
- Spatial *snode=p_node->cast_to<Spatial>();
-
- if (snode) {
-
- snode->set_import_transform(snode->get_transform());
- }
-
- for(int i=0;i<p_node->get_child_count();i++) {
- _tag_import_paths(p_scene,p_node->get_child(i));
- }
-
-}
-
-Error EditorSceneImportPlugin::import1(const Ref<ResourceImportMetadata>& p_from,Node**r_node,List<String> *r_missing) {
-
- Ref<ResourceImportMetadata> from=p_from;
-
- ERR_FAIL_COND_V(from->get_source_count()!=1,ERR_INVALID_PARAMETER);
-
- String src_path=EditorImportPlugin::expand_source_path(from->get_source_path(0));
-
- Ref<EditorSceneImporter> importer;
- String ext=src_path.get_extension().to_lower();
-
-
- EditorProgress progress("import",TTR("Import Scene"),104);
- progress.step(TTR("Importing Scene.."),0);
-
- for(int i=0;i<importers.size();i++) {
-
- List<String> extensions;
- importers[i]->get_extensions(&extensions);
-
- for(List<String>::Element *E=extensions.front();E;E=E->next()) {
-
- if (E->get().to_lower()==ext) {
-
- importer = importers[i];
- break;
- }
- }
-
- if (importer.is_valid())
- break;
- }
-
- ERR_FAIL_COND_V(!importer.is_valid(),ERR_FILE_UNRECOGNIZED);
-
- int animation_flags=p_from->get_option("animation_flags");
- int scene_flags = from->get_option("flags");
- int fps = 24;
- if (from->has_option("animation_bake_fps"))
- fps=from->get_option("animation_bake_fps");
-
-
- Array clips;
- if (from->has_option("animation_clips"))
- clips=from->get_option("animation_clips");
-
- uint32_t import_flags=0;
- if (animation_flags&EditorSceneAnimationImportPlugin::ANIMATION_DETECT_LOOP)
- import_flags|=EditorSceneImporter::IMPORT_ANIMATION_DETECT_LOOP;
- if (animation_flags&EditorSceneAnimationImportPlugin::ANIMATION_KEEP_VALUE_TRACKS)
- import_flags |= EditorSceneImporter::IMPORT_ANIMATION_KEEP_VALUE_TRACKS;
- if (animation_flags&EditorSceneAnimationImportPlugin::ANIMATION_OPTIMIZE)
- import_flags|=EditorSceneImporter::IMPORT_ANIMATION_OPTIMIZE;
- if (animation_flags&EditorSceneAnimationImportPlugin::ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS)
- import_flags|=EditorSceneImporter::IMPORT_ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS;
- if (scene_flags&SCENE_FLAG_IMPORT_ANIMATIONS)
- import_flags|=EditorSceneImporter::IMPORT_ANIMATION;
- /*
- if (scene_flags&SCENE_FLAG_FAIL_ON_MISSING_IMAGES)
- import_flags|=EditorSceneImporter::IMPORT_FAIL_ON_MISSING_DEPENDENCIES;
- */
- if (scene_flags&SCENE_FLAG_GENERATE_TANGENT_ARRAYS)
- import_flags|=EditorSceneImporter::IMPORT_GENERATE_TANGENT_ARRAYS;
-
-
-
-
-
- Error err=OK;
- Node *scene = importer->import_scene(src_path,import_flags,fps,r_missing,&err);
- if (!scene || err!=OK) {
- return err;
- }
-
- if (from->has_option("root_type")) {
- String type = from->get_option("root_type");
- Object *base = ClassDB::instance(type);
- Node *base_node = NULL;
- if (base)
- base_node=base->cast_to<Node>();
-
- if (base_node) {
-
- scene->replace_by(base_node);
- memdelete(scene);
- scene=base_node;
- }
- }
-
- scene->set_name(from->get_option("root_name"));
- _tag_import_paths(scene,scene);
-
- *r_node=scene;
- return OK;
-}
-
-
-void EditorSceneImportPlugin::_create_clips(Node *scene, const Array& p_clips,bool p_bake_all) {
-
- if (!scene->has_node(String("AnimationPlayer")))
- return;
-
- Node* n = scene->get_node(String("AnimationPlayer"));
- ERR_FAIL_COND(!n);
- AnimationPlayer *anim = n->cast_to<AnimationPlayer>();
- ERR_FAIL_COND(!anim);
-
- if (!anim->has_animation("default"))
- return;
-
-
- Ref<Animation> default_anim = anim->get_animation("default");
-
- for(int i=0;i<p_clips.size();i+=4) {
-
- String name = p_clips[i];
- float from=p_clips[i+1];
- float to=p_clips[i+2];
- bool loop=p_clips[i+3];
- if (from>=to)
- continue;
-
- Ref<Animation> new_anim = memnew( Animation );
-
- for(int j=0;j<default_anim->get_track_count();j++) {
-
-
- List<float> keys;
- int kc = default_anim->track_get_key_count(j);
- int dtrack=-1;
- for(int k=0;k<kc;k++) {
-
- float kt = default_anim->track_get_key_time(j,k);
- if (kt>=from && kt<to) {
-
- //found a key within range, so create track
- if (dtrack==-1) {
- new_anim->add_track(default_anim->track_get_type(j));
- dtrack = new_anim->get_track_count()-1;
- new_anim->track_set_path(dtrack,default_anim->track_get_path(j));
-
- if (kt>(from+0.01) && k>0) {
-
- if (default_anim->track_get_type(j)==Animation::TYPE_TRANSFORM) {
- Quat q;
- Vector3 p;
- Vector3 s;
- default_anim->transform_track_interpolate(j,from,&p,&q,&s);
- new_anim->transform_track_insert_key(dtrack,0,p,q,s);
- }
- }
-
- }
-
- if (default_anim->track_get_type(j)==Animation::TYPE_TRANSFORM) {
- Quat q;
- Vector3 p;
- Vector3 s;
- default_anim->transform_track_get_key(j,k,&p,&q,&s);
- new_anim->transform_track_insert_key(dtrack,kt-from,p,q,s);
- }
-
- }
-
- if (dtrack!=-1 && kt>=to) {
-
- if (default_anim->track_get_type(j)==Animation::TYPE_TRANSFORM) {
- Quat q;
- Vector3 p;
- Vector3 s;
- default_anim->transform_track_interpolate(j,to,&p,&q,&s);
- new_anim->transform_track_insert_key(dtrack,to-from,p,q,s);
- }
- }
-
- }
-
- if (dtrack==-1 && p_bake_all) {
- new_anim->add_track(default_anim->track_get_type(j));
- dtrack = new_anim->get_track_count()-1;
- new_anim->track_set_path(dtrack,default_anim->track_get_path(j));
- if (default_anim->track_get_type(j)==Animation::TYPE_TRANSFORM) {
-
-
- Quat q;
- Vector3 p;
- Vector3 s;
- default_anim->transform_track_interpolate(j,from,&p,&q,&s);
- new_anim->transform_track_insert_key(dtrack,0,p,q,s);
- default_anim->transform_track_interpolate(j,to,&p,&q,&s);
- new_anim->transform_track_insert_key(dtrack,to-from,p,q,s);
- }
-
- }
- }
-
-
- new_anim->set_loop(loop);
- new_anim->set_length(to-from);
- anim->add_animation(name,new_anim);
- }
-
- anim->remove_animation("default"); //remove default (no longer needed)
-}
-
-void EditorSceneImportPlugin::_filter_anim_tracks(Ref<Animation> anim,Set<String> &keep) {
-
- Ref<Animation> a = anim;
- ERR_FAIL_COND(!a.is_valid());
-
- print_line("From Anim "+anim->get_name()+":");
-
- for(int j=0;j<a->get_track_count();j++) {
-
- String path = a->track_get_path(j);
-
- if (!keep.has(path)) {
-
- print_line("Remove: "+path);
- a->remove_track(j);
- j--;
- }
-
- }
-}
-
-
-void EditorSceneImportPlugin::_filter_tracks(Node *scene, const String& p_text) {
-
- if (!scene->has_node(String("AnimationPlayer")))
- return;
- Node* n = scene->get_node(String("AnimationPlayer"));
- ERR_FAIL_COND(!n);
- AnimationPlayer *anim = n->cast_to<AnimationPlayer>();
- ERR_FAIL_COND(!anim);
-
- Vector<String> strings = p_text.split("\n");
- for(int i=0;i<strings.size();i++) {
-
- strings[i]=strings[i].strip_edges();
- }
-
- List<StringName> anim_names;
- anim->get_animation_list(&anim_names);
- for(List<StringName>::Element *E=anim_names.front();E;E=E->next()) {
-
- String name = E->get();
- bool valid_for_this=false;
- bool valid=false;
-
- Set<String> keep;
- Set<String> keep_local;
-
-
- for(int i=0;i<strings.size();i++) {
-
-
- if (strings[i].begins_with("@")) {
-
- valid_for_this=false;
- for(Set<String>::Element *F=keep_local.front();F;F=F->next()) {
- keep.insert(F->get());
- }
- keep_local.clear();
-
- Vector<String> filters=strings[i].substr(1,strings[i].length()).split(",");
- for(int j=0;j<filters.size();j++) {
-
- String fname = filters[j].strip_edges();
- if (fname=="")
- continue;
- int fc = fname[0];
- bool plus;
- if (fc=='+')
- plus=true;
- else if (fc=='-')
- plus=false;
- else
- continue;
-
- String filter=fname.substr(1,fname.length()).strip_edges();
-
- if (!name.matchn(filter))
- continue;
- valid_for_this=plus;
- }
-
- if (valid_for_this)
- valid=true;
-
- } else if (valid_for_this) {
-
- Ref<Animation> a = anim->get_animation(name);
- if (!a.is_valid())
- continue;
-
- for(int j=0;j<a->get_track_count();j++) {
-
- String path = a->track_get_path(j);
-
- String tname = strings[i];
- if (tname=="")
- continue;
- int fc = tname[0];
- bool plus;
- if (fc=='+')
- plus=true;
- else if (fc=='-')
- plus=false;
- else
- continue;
-
- String filter=tname.substr(1,tname.length()).strip_edges();
-
- if (!path.matchn(filter))
- continue;
-
- if (plus)
- keep_local.insert(path);
- else if (!keep.has(path)) {
- keep_local.erase(path);
- }
- }
-
- }
-
- }
-
- if (valid) {
- for(Set<String>::Element *F=keep_local.front();F;F=F->next()) {
- keep.insert(F->get());
- }
- print_line("FILTERING ANIM: "+String(E->get()));
- _filter_anim_tracks(anim->get_animation(name),keep);
- } else {
- print_line("NOT FILTERING ANIM: "+String(E->get()));
-
- }
-
- }
-
-
-
-}
-
-void EditorSceneImportPlugin::_optimize_animations(Node *scene, float p_max_lin_error,float p_max_ang_error,float p_max_angle) {
-
- if (!scene->has_node(String("AnimationPlayer")))
- return;
- Node* n = scene->get_node(String("AnimationPlayer"));
- ERR_FAIL_COND(!n);
- AnimationPlayer *anim = n->cast_to<AnimationPlayer>();
- ERR_FAIL_COND(!anim);
-
-
- List<StringName> anim_names;
- anim->get_animation_list(&anim_names);
- for(List<StringName>::Element *E=anim_names.front();E;E=E->next()) {
-
- Ref<Animation> a = anim->get_animation(E->get());
- a->optimize(p_max_lin_error,p_max_ang_error,Math::deg2rad(p_max_angle));
- }
-}
-
-
-void EditorSceneImportPlugin::_find_resources_to_merge(Node *scene, Node *node, bool p_merge_material, Map<String, Ref<Material> > &materials, bool p_merge_anims, Map<String,Ref<Animation> >& merged_anims,Set<Ref<Mesh> > &tested_meshes) {
-
- if (node!=scene && node->get_owner()!=scene)
- return;
-
- String path = scene->get_path_to(node);
-
- if (p_merge_anims && node->cast_to<AnimationPlayer>()) {
-
- AnimationPlayer *ap = node->cast_to<AnimationPlayer>();
- List<StringName> anims;
- ap->get_animation_list(&anims);
- for (List<StringName>::Element *E=anims.front();E;E=E->next()) {
- Ref<Animation> anim = ap->get_animation(E->get());
- Ref<Animation> clone;
-
- bool has_user_tracks=false;
-
- for(int i=0;i<anim->get_track_count();i++) {
-
- if (!anim->track_is_imported(i)) {
- has_user_tracks=true;
- break;
- }
- }
-
- if (has_user_tracks) {
-
- clone = anim->duplicate();
- for(int i=0;i<clone->get_track_count();i++) {
- if (clone->track_is_imported(i)) {
- clone->remove_track(i);
- i--;
- }
- }
-
- merged_anims[path+"::"+String(E->get())]=clone;
- }
- }
- }
-
-
-
- if (p_merge_material && node->cast_to<MeshInstance>()) {
- MeshInstance *mi=node->cast_to<MeshInstance>();
- Ref<Mesh> mesh = mi->get_mesh();
- if (mesh.is_valid() && mesh->get_name()!=String() && !tested_meshes.has(mesh)) {
-
- for(int i=0;i<mesh->get_surface_count();i++) {
- Ref<Material> material = mesh->surface_get_material(i);
-
- if (material.is_valid()) {
-
- String sname = mesh->surface_get_name(i);
- if (sname=="")
- sname="surf_"+itos(i);
-
- sname=mesh->get_name()+":surf:"+sname;
- materials[sname]=material;
- }
- }
-
- tested_meshes.insert(mesh);
- }
-
- if (mesh.is_valid()) {
-
- for(int i=0;i<mesh->get_surface_count();i++) {
- Ref<Material> material = mi->get_surface_material(i);
- if (material.is_valid()) {
- String sname = mesh->surface_get_name(i);
- if (sname=="")
- sname="surf_"+itos(i);
-
- sname=path+":inst_surf:"+sname;
- materials[sname]=material;
- }
- }
-
- }
-
- Ref<Material> override = mi->get_material_override();
-
- if (override.is_valid()) {
-
- materials[path+":override"]=override;
- }
- }
-
-
-
- for(int i=0;i<node->get_child_count();i++) {
- _find_resources_to_merge(scene,node->get_child(i),p_merge_material,materials,p_merge_anims,merged_anims,tested_meshes);
- }
-
-}
-
-
-void EditorSceneImportPlugin::_merge_found_resources(Node *scene, Node *node, bool p_merge_material, const Map<String, Ref<Material> > &materials, bool p_merge_anims, const Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes) {
-
- if (node!=scene && node->get_owner()!=scene)
- return;
-
- String path = scene->get_path_to(node);
-
- print_line("at path: "+path);
-
- if (node->cast_to<AnimationPlayer>()) {
-
- AnimationPlayer *ap = node->cast_to<AnimationPlayer>();
- List<StringName> anims;
- ap->get_animation_list(&anims);
- for (List<StringName>::Element *E=anims.front();E;E=E->next()) {
- Ref<Animation> anim = ap->get_animation(E->get());
-
- String anim_path = path+"::"+String(E->get());
-
- if (merged_anims.has(anim_path)) {
-
- Ref<Animation> user_tracks = merged_anims[anim_path];
- for(int i=0;i<user_tracks->get_track_count();i++) {
-
- int idx = anim->get_track_count();
- anim->add_track(user_tracks->track_get_type(i));
- anim->track_set_path(idx,user_tracks->track_get_path(i));
- anim->track_set_interpolation_type(idx,user_tracks->track_get_interpolation_type(i));
- for(int j=0;j<user_tracks->track_get_key_count(i);j++) {
-
- float ofs = user_tracks->track_get_key_time(i,j);
- float trans = user_tracks->track_get_key_transition(i,j);
- Variant value = user_tracks->track_get_key_value(i,j);
-
- anim->track_insert_key(idx,ofs,value,trans);
- }
- }
- }
- }
- }
-
-
-
- if (node->cast_to<MeshInstance>()) {
- MeshInstance *mi=node->cast_to<MeshInstance>();
- Ref<Mesh> mesh = mi->get_mesh();
- if (mesh.is_valid() && mesh->get_name()!=String() && !tested_meshes.has(mesh)) {
-
- for(int i=0;i<mesh->get_surface_count();i++) {
-
- String sname = mesh->surface_get_name(i);
- if (sname=="")
- sname="surf_"+itos(i);
-
- sname=mesh->get_name()+":surf:"+sname;
-
-
- if (materials.has(sname)) {
-
- mesh->surface_set_material(i,materials[sname]);
- }
- }
-
- tested_meshes.insert(mesh);
- }
-
- if (mesh.is_valid()) {
-
- for(int i=0;i<mesh->get_surface_count();i++) {
-
- String sname = mesh->surface_get_name(i);
- if (sname=="")
- sname="surf_"+itos(i);
-
- sname=path+":inst_surf:"+sname;
-
-
- if (materials.has(sname)) {
-
- mi->set_surface_material(i,materials[sname]);
- }
- }
-
- }
-
-
- String opath = path+":override";
- if (materials.has(opath)) {
- mi->set_material_override(materials[opath]);
- }
-
- }
-
-
-
- for(int i=0;i<node->get_child_count();i++) {
- _merge_found_resources(scene,node->get_child(i),p_merge_material,materials,p_merge_anims,merged_anims,tested_meshes);
- }
-
-}
-
-Error EditorSceneImportPlugin::import2(Node *scene, const String& p_dest_path, const Ref<ResourceImportMetadata>& p_from) {
-
- Error err=OK;
- Ref<ResourceImportMetadata> from=p_from;
- String src_path=EditorImportPlugin::expand_source_path(from->get_source_path(0));
- int animation_flags=p_from->get_option("animation_flags");
- Array animation_clips = p_from->get_option("animation_clips");
- String animation_filter = p_from->get_option("animation_filters");
- int scene_flags = from->get_option("flags");
- float anim_optimizer_linerr=0.05;
- float anim_optimizer_angerr=0.01;
- float anim_optimizer_maxang=22;
-
- if (from->has_option("animation_optimizer_linear_error"))
- anim_optimizer_linerr=from->get_option("animation_optimizer_linear_error");
- if (from->has_option("animation_optimizer_angular_error"))
- anim_optimizer_angerr=from->get_option("animation_optimizer_angular_error");
- if (from->has_option("animation_optimizer_max_angle"))
- anim_optimizer_maxang=from->get_option("animation_optimizer_max_angle");
-
- EditorProgress progress("import",TTR("Import Scene"),104);
- progress.step(TTR("Importing Scene.."),2);
-
-
- from->set_source_md5(0,FileAccess::get_md5(src_path));
- from->set_editor(get_name());
-
- from->set_option("reimport",false);
- String target_res_path=p_dest_path.get_base_dir();
-
- Map<Ref<Mesh>,Ref<Shape> > collision_map;
-
- Map< Ref<ImageTexture>,TextureRole > imagemap;
-
- scene=_fix_node(scene,scene,collision_map,scene_flags,imagemap);
- if (animation_flags&EditorSceneAnimationImportPlugin::ANIMATION_OPTIMIZE)
- _optimize_animations(scene,anim_optimizer_linerr,anim_optimizer_angerr,anim_optimizer_maxang);
- if (animation_clips.size())
- _create_clips(scene,animation_clips,animation_flags&EditorSceneAnimationImportPlugin::ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS);
-
- _filter_tracks(scene,animation_filter);
-
-
- if (scene_flags&(SCENE_FLAG_MERGE_KEEP_MATERIALS|SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS) && FileAccess::exists(p_dest_path)) {
- //must merge!
-
- print_line("MUST MERGE");
- Ref<PackedScene> pscene = ResourceLoader::load(p_dest_path,"PackedScene",true);
- if (pscene.is_valid()) {
-
- Node *instance = pscene->instance();
- if (instance) {
- Map<String,Ref<Animation> > merged_anims;
- Map<String,Ref<Material> > merged_materials;
- Set<Ref<Mesh> > tested_meshes;
-
- _find_resources_to_merge(instance,instance,scene_flags&SCENE_FLAG_MERGE_KEEP_MATERIALS,merged_materials,scene_flags&SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,merged_anims,tested_meshes);
-
- tested_meshes.clear();
- _merge_found_resources(scene,scene,scene_flags&SCENE_FLAG_MERGE_KEEP_MATERIALS,merged_materials,scene_flags&SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,merged_anims,tested_meshes);
-
- memdelete(instance);
- }
-
- }
-
- }
-
- /// BEFORE ANYTHING, RUN SCRIPT
-
- progress.step(TTR("Running Custom Script.."),2);
-
- String post_import_script_path = from->get_option("post_import_script");
- Ref<EditorScenePostImport> post_import_script;
-
- if (post_import_script_path!="") {
- post_import_script_path = post_import_script_path;
- Ref<Script> scr = ResourceLoader::load(post_import_script_path);
- if (!scr.is_valid()) {
- EditorNode::add_io_error(TTR("Couldn't load post-import script:")+" "+post_import_script_path);
- } else {
-
- post_import_script = Ref<EditorScenePostImport>( memnew( EditorScenePostImport ) );
- post_import_script->set_script(scr.get_ref_ptr());
- if (!post_import_script->get_script_instance()) {
- EditorNode::add_io_error(TTR("Invalid/broken script for post-import (check console):")+" "+post_import_script_path);
- post_import_script.unref();
- return ERR_CANT_CREATE;
- }
- }
- }
-
-
- if (post_import_script.is_valid()) {
- scene = post_import_script->post_import(scene);
- if (!scene) {
- EditorNode::add_io_error(TTR("Error running post-import script:")+" "+post_import_script_path);
- return err;
- }
-
-
- }
-
-
- /// IMPORT IMAGES
-
-
- int idx=0;
-
- int image_format = from->get_option("texture_format");
- int image_flags = from->get_option("texture_flags");
- float image_quality = from->get_option("texture_quality");
-
- for (Map< Ref<ImageTexture>,TextureRole >::Element *E=imagemap.front();E;E=E->next()) {
-
- //texture could be converted to something more useful for 3D, that could load individual mipmaps and stuff
- //but not yet..
-
- Ref<ImageTexture> texture = E->key();
-
- ERR_CONTINUE(!texture.is_valid());
-
- String path = texture->get_path();
- String fname= path.get_file();
- String target_path = ProjectSettings::get_singleton()->localize_path(target_res_path.plus_file(fname));
- progress.step(TTR("Import Image:")+" "+fname,3+(idx)*100/imagemap.size());
-
- idx++;
-
- if (path==target_path) {
-
- EditorNode::add_io_error(TTR("Can't import a file over itself:")+" "+target_path);
- continue;
- }
-
- if (!target_path.begins_with("res://")) {
- EditorNode::add_io_error(vformat(TTR("Couldn't localize path: %s (already local)"),target_path));
- continue;
- }
-
-
- {
-
-
- target_path=target_path.get_basename()+".tex";
-
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
-
- uint32_t flags = image_flags;
- if (E->get()==TEXTURE_ROLE_DIFFUSE && scene_flags&SCENE_FLAG_LINEARIZE_DIFFUSE_TEXTURES)
- flags|=EditorTextureImportPlugin::IMAGE_FLAG_CONVERT_TO_LINEAR;
-
- if (E->get()==TEXTURE_ROLE_NORMALMAP && scene_flags&SCENE_FLAG_CONVERT_NORMALMAPS_TO_XY)
- flags|=EditorTextureImportPlugin::IMAGE_FLAG_CONVERT_NORMAL_TO_XY;
-
- imd->set_option("flags",flags);
- imd->set_option("format",image_format);
- imd->set_option("quality",image_quality);
- imd->set_option("atlas",false);
- imd->add_source(EditorImportPlugin::validate_source_path(path));
-
-
- if (FileAccess::exists(target_path)) {
-
- Ref<ResourceImportMetadata> rimdex = ResourceLoader::load_import_metadata(target_path);
- if (rimdex.is_valid()) {
- //make sure the options are the same, otherwise re-import
- List<String> opts;
- imd->get_options(&opts);
- bool differ=false;
- for (List<String>::Element *E=opts.front();E;E=E->next()) {
- if (!(rimdex->get_option(E->get())==imd->get_option(E->get()))) {
- differ=true;
- break;
- }
- }
-
- if (!differ) {
- texture->set_path(target_path);
- continue; //already imported
- }
- }
- }
-
- EditorTextureImportPlugin::get_singleton()->import(target_path,imd);
-
- }
- }
-
-
-
- progress.step(TTR("Saving.."),104);
-
- Ref<PackedScene> packer = memnew( PackedScene );
- packer->pack(scene);
- //packer->set_path(p_dest_path); do not take over, let the changed files reload themselves
- packer->set_import_metadata(from);
-
- print_line("SAVING TO: "+p_dest_path);
- err = ResourceSaver::save(p_dest_path,packer); //do not take over, let the changed files reload themselves
-
- //EditorFileSystem::get_singleton()->update_resource(packer);
-
- memdelete(scene);
-
- /*
- scene->set_filename(p_dest_path);
- if (r_scene) {
- *r_scene=scene;
- } else {
- memdelete(scene);
- }
-
- String sp;
- if (p_post_import.is_valid() && !p_post_import->get_script().is_null()) {
- Ref<Script> scr = p_post_import->get_script();
- if (scr.is_valid())
- sp=scr->get_path();
- }
-
- String op=_getrelpath(p_path,p_dest_path);
-
- */
-
- EditorNode::get_singleton()->reload_scene(p_dest_path);
-
- return err;
-
-}
-
-
-Error EditorSceneImportPlugin::import(const String& p_dest_path, const Ref<ResourceImportMetadata>& p_from){
-
-
- Node *n=NULL;
- Error err = import1(p_from,&n);
- if (err!=OK) {
- if (n) {
- memdelete(n);
- }
- return err;
- }
- return import2(n,p_dest_path,p_from);
-}
-
-void EditorSceneImportPlugin::add_importer(const Ref<EditorSceneImporter>& p_importer) {
-
- importers.push_back(p_importer);
-}
-
-void EditorSceneImportPlugin::import_from_drop(const Vector<String>& p_drop,const String& p_dest_path) {
-
- List<String> extensions;
- for(int i=0;i<importers.size();i++) {
- importers[i]->get_extensions(&extensions);
- }
- //bool warn_compatible=false;
- for(int i=0;i<p_drop.size();i++) {
-
- String extension = p_drop[i].get_extension().to_lower();
-
- for(List<String>::Element *E=extensions.front();E;E=E->next()) {
-
- if (E->get()==extension) {
-
- dialog->popup_import(String());
- dialog->setup_popup(p_drop[i],p_dest_path);
- return;
- }
- }
- }
-
-}
-
-
-EditorSceneImportPlugin::EditorSceneImportPlugin(EditorNode* p_editor) {
-
- dialog = memnew( EditorSceneImportDialog(p_editor,this) );
- p_editor->get_gui_base()->add_child(dialog);
-}
-
-
-///////////////////////////////
-
-
-String EditorSceneAnimationImportPlugin::get_name() const {
-
- return "anim_3d";
-}
-String EditorSceneAnimationImportPlugin::get_visible_name() const{
-
-
- return TTR("3D Scene Animation");
-}
-void EditorSceneAnimationImportPlugin::import_dialog(const String& p_from){
-
-
-}
-Error EditorSceneAnimationImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from){
-
- return OK;
-}
-
-EditorSceneAnimationImportPlugin::EditorSceneAnimationImportPlugin(EditorNode* p_editor) {
-
-
-}
-#endif
diff --git a/editor/io_plugins/editor_scene_import_plugin.h b/editor/io_plugins/editor_scene_import_plugin.h
deleted file mode 100644
index 44526deb8b..0000000000
--- a/editor/io_plugins/editor_scene_import_plugin.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/*************************************************************************/
-/* editor_scene_import_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_SCENE_IMPORT_PLUGIN_H
-#define EDITOR_SCENE_IMPORT_PLUGIN_H
-#if 0
-#include "editor/editor_dir_dialog.h"
-#include "editor/editor_file_system.h"
-#include "editor/editor_import_export.h"
-#include "editor/io_plugins/editor_texture_import_plugin.h"
-#include "scene/gui/dialogs.h"
-#include "scene/gui/file_dialog.h"
-#include "scene/gui/label.h"
-#include "scene/gui/line_edit.h"
-#include "scene/gui/option_button.h"
-#include "scene/gui/progress_bar.h"
-#include "scene/gui/slider.h"
-#include "scene/gui/spin_box.h"
-#include "scene/gui/tree.h"
-#include "scene/resources/animation.h"
-#include "scene/resources/mesh.h"
-
-
-class EditorNode;
-class EditorSceneImportDialog;
-
-class EditorSceneImporter : public Reference {
-
- GDCLASS(EditorSceneImporter,Reference );
-public:
-
- enum ImportFlags {
- IMPORT_SCENE=1,
- IMPORT_ANIMATION=2,
- IMPORT_ANIMATION_DETECT_LOOP=4,
- IMPORT_ANIMATION_OPTIMIZE=8,
- IMPORT_ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS=16,
- IMPORT_ANIMATION_KEEP_VALUE_TRACKS=32,
- IMPORT_GENERATE_TANGENT_ARRAYS=256,
- IMPORT_FAIL_ON_MISSING_DEPENDENCIES=512
-
- };
-
- virtual uint32_t get_import_flags() const=0;
- virtual void get_extensions(List<String> *r_extensions) const=0;
- virtual Node* import_scene(const String& p_path,uint32_t p_flags,int p_bake_fps,List<String> *r_missing_deps,Error* r_err=NULL)=0;
- virtual Ref<Animation> import_animation(const String& p_path,uint32_t p_flags)=0;
-
-
-
- EditorSceneImporter();
-};
-
-/////////////////////////////////////////
-
-
-//Plugin for post processing scenes or images
-
-class EditorScenePostImport : public Reference {
-
- GDCLASS(EditorScenePostImport,Reference );
-protected:
-
- static void _bind_methods();
-public:
-
- virtual Node* post_import(Node* p_scene);
- EditorScenePostImport();
-};
-
-
-class EditorSceneImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorSceneImportPlugin,EditorImportPlugin);
-
- EditorSceneImportDialog *dialog;
-
- Vector<Ref<EditorSceneImporter> > importers;
-
- enum TextureRole {
- TEXTURE_ROLE_DEFAULT,
- TEXTURE_ROLE_DIFFUSE,
- TEXTURE_ROLE_NORMALMAP
- };
-
- void _find_resources(const Variant& p_var,Map<Ref<ImageTexture>,TextureRole >& image_map,int p_flags);
- Node* _fix_node(Node *p_node,Node *p_root,Map<Ref<Mesh>,Ref<Shape> > &collision_map,uint32_t p_flags,Map<Ref<ImageTexture>,TextureRole >& image_map);
- void _create_clips(Node *scene, const Array& p_clips, bool p_bake_all);
- void _filter_anim_tracks(Ref<Animation> anim,Set<String> &keep);
- void _filter_tracks(Node *scene, const String& p_text);
- void _optimize_animations(Node *scene, float p_max_lin_error,float p_max_ang_error,float p_max_angle);
-
- void _tag_import_paths(Node *p_scene,Node *p_node);
-
- void _find_resources_to_merge(Node *scene, Node *node, bool p_merge_material, Map<String,Ref<Material> >&materials, bool p_merge_anims, Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes);
- void _merge_found_resources(Node *scene, Node *node, bool p_merge_material, const Map<String, Ref<Material> > &materials, bool p_merge_anims, const Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes);
-
-
-public:
-
- enum SceneFlags {
-
- SCENE_FLAG_CREATE_COLLISIONS=1<<0,
- SCENE_FLAG_CREATE_PORTALS=1<<1,
- SCENE_FLAG_CREATE_ROOMS=1<<2,
- SCENE_FLAG_SIMPLIFY_ROOMS=1<<3,
- SCENE_FLAG_CREATE_BILLBOARDS=1<<4,
- SCENE_FLAG_CREATE_IMPOSTORS=1<<5,
- SCENE_FLAG_CREATE_LODS=1<<6,
- SCENE_FLAG_CREATE_CARS=1<<8,
- SCENE_FLAG_CREATE_WHEELS=1<<9,
- SCENE_FLAG_DETECT_ALPHA=1<<15,
- SCENE_FLAG_DETECT_VCOLOR=1<<16,
- SCENE_FLAG_CREATE_NAVMESH=1<<17,
- SCENE_FLAG_DETECT_LIGHTMAP_LAYER=1<<18,
-
- SCENE_FLAG_MERGE_KEEP_MATERIALS=1<<20,
- SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS=1<<21,
-
- SCENE_FLAG_REMOVE_NOIMP=1<<24,
- SCENE_FLAG_IMPORT_ANIMATIONS=1<<25,
- SCENE_FLAG_COMPRESS_GEOMETRY=1<<26,
- SCENE_FLAG_GENERATE_TANGENT_ARRAYS=1<<27,
- SCENE_FLAG_LINEARIZE_DIFFUSE_TEXTURES=1<<28,
- SCENE_FLAG_SET_LIGHTMAP_TO_UV2_IF_EXISTS=1<<29,
- SCENE_FLAG_CONVERT_NORMALMAPS_TO_XY=1<<30,
- };
-
-
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from="");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
-
- Error import1(const Ref<ResourceImportMetadata>& p_from,Node**r_node,List<String> *r_missing=NULL);
- Error import2(Node* p_scene,const String& p_path, const Ref<ResourceImportMetadata>& p_from);
-
- void add_importer(const Ref<EditorSceneImporter>& p_importer);
- const Vector<Ref<EditorSceneImporter> >& get_importers() { return importers; }
-
- virtual void import_from_drop(const Vector<String>& p_drop,const String& p_dest_path);
-
- EditorSceneImportPlugin(EditorNode* p_editor=NULL);
-
-
-};
-
-
-class EditorSceneAnimationImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorSceneAnimationImportPlugin,EditorImportPlugin);
-public:
-
-
- enum AnimationFlags {
-
- ANIMATION_DETECT_LOOP=1,
- ANIMATION_KEEP_VALUE_TRACKS=2,
- ANIMATION_OPTIMIZE=4,
- ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS=8
- };
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from="");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
-
- EditorSceneAnimationImportPlugin(EditorNode* p_editor=NULL);
-
-
-};
-
-#endif
-#endif // EDITOR_SCENE_IMPORT_PLUGIN_H
diff --git a/editor/io_plugins/editor_scene_importer_fbxconv.cpp b/editor/io_plugins/editor_scene_importer_fbxconv.cpp
deleted file mode 100644
index 784ad8536e..0000000000
--- a/editor/io_plugins/editor_scene_importer_fbxconv.cpp
+++ /dev/null
@@ -1,1137 +0,0 @@
-/*************************************************************************/
-/* editor_scene_importer_fbxconv.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_scene_importer_fbxconv.h"
-
-#include "editor/editor_settings.h"
-#include "os/file_access.h"
-#include "os/os.h"
-#include "scene/3d/mesh_instance.h"
-#include "scene/animation/animation_player.h"
-
-#if 0
-String EditorSceneImporterFBXConv::_id(const String& p_id) const {
-
- return p_id.replace(":","_").replace("/","_");
-}
-
-uint32_t EditorSceneImporterFBXConv::get_import_flags() const {
-
- return IMPORT_SCENE|IMPORT_ANIMATION;
-}
-void EditorSceneImporterFBXConv::get_extensions(List<String> *r_extensions) const{
-
- r_extensions->push_back("fbx");
- r_extensions->push_back("g3dj");
-}
-
-
-Color EditorSceneImporterFBXConv::_get_color(const Array& a) {
-
- if (a.size()<3)
- return Color();
- Color c;
- c.r=a[0];
- c.g=a[1];
- c.b=a[2];
- if (a.size()>=4)
- c.a=a[3];
- return c;
-
-}
-
-Transform EditorSceneImporterFBXConv::_get_transform_mixed(const Dictionary& d,const Dictionary& dbase) {
-
-
-
-
- Array translation;
-
- if (d.has("translation"))
- translation=d["translation"];
- else if (dbase.has("translation"))
- translation=dbase["translation"];
-
- Array rotation;
-
- if (d.has("rotation"))
- rotation=d["rotation"];
- else if (dbase.has("rotation"))
- rotation=dbase["rotation"];
-
- Array scale;
-
- if (d.has("scale"))
- scale=d["scale"];
- else if (dbase.has("scale"))
- scale=dbase["scale"];
-
- Transform t;
-
-
- if (translation.size()) {
- Array tr = translation;
- if (tr.size()>=3) {
- t.origin.x=tr[0];
- t.origin.y=tr[1];
- t.origin.z=tr[2];
- }
- }
-
- if (rotation.size()) {
-
- Array r = rotation;
- if (r.size()>=4) {
-
- Quat q;
- q.x = r[0];
- q.y = r[1];
- q.z = r[2];
- q.w = r[3];
- t.basis=Matrix3(q);
- }
- }
-
-
- if (scale.size()) {
-
- Array sc = scale;
- if (sc.size()>=3) {
- Vector3 s;
- s.x=sc[0];
- s.y=sc[1];
- s.z=sc[2];
- t.basis.scale(s);
- }
- }
-
- return t;
-
-
-}
-
-Transform EditorSceneImporterFBXConv::_get_transform(const Dictionary& d) {
-
-
- Transform t;
-
- if (d.has("translation")) {
- Array tr = d["translation"];
- if (tr.size()>=3) {
- t.origin.x=tr[0];
- t.origin.y=tr[1];
- t.origin.z=tr[2];
- }
- }
-
- if (d.has("rotation")) {
-
- Array r = d["rotation"];
- if (r.size()>=4) {
-
- Quat q;
- q.x = r[0];
- q.y = r[1];
- q.z = r[2];
- q.w = r[3];
- t.basis=Matrix3(q);
- }
- }
-
-
- if (d.has("scale")) {
-
- Array sc = d["scale"];
- if (sc.size()>=3) {
- Vector3 s;
- s.x=sc[0];
- s.y=sc[1];
- s.z=sc[2];
- t.basis.scale(s);
- }
- }
-
- return t;
-}
-
-
-void EditorSceneImporterFBXConv::_detect_bones_in_nodes(State& state,const Array& p_nodes) {
-
-
- for(int i=0;i<p_nodes.size();i++) {
-
- Dictionary d = p_nodes[i];
- if (d.has("isBone") && bool(d["isBone"])) {
-
- String bone_name=_id(d["id"]);
- print_line("IS BONE: "+bone_name);
- if (!state.bones.has(bone_name)) {
- state.bones.insert(bone_name,BoneInfo());
- }
-
- if (!state.bones[bone_name].has_rest) {
- state.bones[bone_name].rest=_get_transform(d).affine_inverse();
- }
-
- state.bones[bone_name].node=d;
-
- //state.bones[name].rest=_get_transform(b);
- }
-
- if (d.has("parts")) {
-
- Array parts=d["parts"];
- for(int j=0;j<parts.size();j++) {
-
- Dictionary p=parts[j];
- if (p.has("bones")) {
- Array bones=p["bones"];
- //omfg
- for(int k=0;k<bones.size();k++) {
-
- Dictionary b = bones[k];
- if (b.has("node")) {
-
- String name = _id(b["node"]);
- if (!state.bones.has(name)) {
- state.bones.insert(name,BoneInfo());
- }
-
- state.bones[name].rest=_get_transform(b);
- state.bones[name].has_rest=true;
- }
- }
- }
-
- }
- }
-
- if (d.has("children")) {
-
- _detect_bones_in_nodes(state,d["children"]);
- }
- }
-
-}
-
-void EditorSceneImporterFBXConv::_parse_skeletons(const String& p_name,State& state, const Array &p_nodes, Skeleton *p_skeleton,int p_parent) {
-
-
-
- for(int i=0;i<p_nodes.size();i++) {
-
-
- Dictionary d = p_nodes[i];
- int bone_idx=-1;
- String id;
- Skeleton* skeleton=p_skeleton;
- if (d.has("id")) {
-
- id=_id(d["id"]);
- if (state.bones.has(id)) {
- //BONER
- if (!skeleton) {
- skeleton=memnew( Skeleton );
- state.skeletons[id]=skeleton;
- }
- bone_idx = skeleton->get_bone_count();
- skeleton->add_bone(id);
- skeleton->set_bone_parent(bone_idx,p_parent);
- skeleton->set_bone_rest(bone_idx,state.bones[id].rest);
- state.bones[id].skeleton=skeleton;
- }
- }
-
- if (d.has("children")) {
-
- _parse_skeletons(id,state,d["children"],skeleton,bone_idx);
- }
- }
-
-}
-
-void EditorSceneImporterFBXConv::_detect_bones(State& state) {
- //This format should mark when a node is a bone,
- //which is the only thing that Collada does right.
- //think about others implementing a parser.
- //Just _one_ string and you avoid loads of lines of code to other people.
-
- for(int i=0;i<state.animations.size();i++) {
-
- Dictionary an = state.animations[i];
- if (an.has("bones")) {
-
- Array bo=an["bones"];
- for(int j=0;j<bo.size();j++) {
-
- Dictionary b=bo[j];
- if (b.has("boneId")) {
-
- String id = b["boneId"];
- if (!state.bones.has(id)) {
- state.bones.insert(id,BoneInfo());
- }
- state.bones[id].has_anim_chan=true; //used in anim
-
-
- }
- }
- }
- }
-
- _detect_bones_in_nodes(state,state.nodes);
- _parse_skeletons("",state,state.nodes,NULL,-1);
-
- print_line("found bones: "+itos(state.bones.size()));
- print_line("found skeletons: "+itos(state.skeletons.size()));
-}
-
-Error EditorSceneImporterFBXConv::_parse_bones(State& state,const Array &p_bones,Skeleton* p_skeleton) {
-
-
-
- return OK;
-}
-
-
-void EditorSceneImporterFBXConv::_add_surface(State& state,Ref<Mesh>& m,const Dictionary &part) {
-
- if (part.has("meshpartid")) {
-
- String id = part["meshpartid"];
- ERR_FAIL_COND(!state.surface_cache.has(id));
-
-
- Ref<Material> mat;
- if (part.has("materialid")) {
- String matid=part["materialid"];
- if (state.material_cache.has(matid)) {
- mat=state.material_cache[matid];
- }
- }
- int idx = m->get_surface_count();
-
- Array array = state.surface_cache[id].array;
- PoolVector<float> indices = array[Mesh::ARRAY_BONES];
- if (indices.size() && part.has("bones")) {
-
-
- Map<int,int> index_map;
-
- Array bones=part["bones"];
-
- for(int i=0;i<bones.size();i++) {
-
- Dictionary bone=bones[i];
- String name=_id(bone["node"]);
-
- if (state.bones.has(name)) {
- int idx=state.bones[name].skeleton->find_bone(name);
- if (idx==-1)
- idx=0;
- index_map[i]=idx;
- }
- }
-
-
-
- int ilen=indices.size();
- {
- PoolVector<float>::Write iw=indices.write();
- for(int j=0;j<ilen;j++) {
- int b = iw[j];
- ERR_CONTINUE(!index_map.has(b));
- b=index_map[b];
- iw[j]=b;
- }
- }
-
- array[Mesh::ARRAY_BONES]=indices;
-
-
- }
-
- m->add_surface(state.surface_cache[id].primitive,array);
- m->surface_set_material(idx,mat);
- m->surface_set_name(idx,id);
- }
-
-}
-
-Error EditorSceneImporterFBXConv::_parse_nodes(State& state,const Array &p_nodes,Node* p_base) {
-
- for(int i=0;i<p_nodes.size();i++) {
-
- Dictionary n = p_nodes[i];
- Spatial *node=NULL;
- bool skip=false;
-
- String id;
- if (n.has("id")) {
- id=_id(n["id"]);
- }
-
- print_line("ID: "+id);
-
- if (state.skeletons.has(id)) {
-
- Skeleton *skeleton = state.skeletons[id];
- node=skeleton;
- skeleton->localize_rests();
- print_line("IS SKELETON! ");
- } else if (state.bones.has(id)) {
- if (p_base)
- node=p_base->cast_to<Spatial>();
- if (!state.bones[id].has_anim_chan) {
- print_line("no has anim "+id);
- }
- skip=true;
- } else if (n.has("parts")) {
- //is a mesh
- MeshInstance *mesh = memnew( MeshInstance );
- node=mesh;
-
- Array parts=n["parts"];
- String long_identifier;
- for(int j=0;j<parts.size();j++) {
-
- Dictionary part=parts[j];
- if (part.has("meshpartid")) {
- String partid=part["meshpartid"];
- long_identifier+=partid;
- }
- }
-
- Ref<Mesh> m;
-
- if (state.mesh_cache.has(long_identifier)) {
- m=state.mesh_cache[long_identifier];
- } else {
- m = Ref<Mesh>( memnew( Mesh ) );
-
- //and parts are surfaces
- for(int j=0;j<parts.size();j++) {
-
- Dictionary part=parts[j];
- if (part.has("meshpartid")) {
- _add_surface(state,m,part);
- }
- }
-
-
- state.mesh_cache[long_identifier]=m;
- }
-
- mesh->set_mesh(m);
- }
-
- if (!skip) {
-
- if (!node) {
- node = memnew( Spatial );
- }
-
- node->set_name(id);
- node->set_transform(_get_transform(n));
- p_base->add_child(node);
- node->set_owner(state.scene);
- }
-
-
- if (n.has("children")) {
- Error err = _parse_nodes(state,n["children"],node);
- if (err)
- return err;
- }
- }
-
- return OK;
-}
-
-
-void EditorSceneImporterFBXConv::_parse_materials(State& state) {
-
- for(int i=0;i<state.materials.size();i++) {
-
- Dictionary material = state.materials[i];
-
- ERR_CONTINUE(!material.has("id"));
- String id = _id(material["id"]);
-
- Ref<SpatialMaterial> mat = memnew( SpatialMaterial );
-
- if (material.has("diffuse")) {
- mat->set_parameter(SpatialMaterial::PARAM_DIFFUSE,_get_color(material["diffuse"]));
- }
-
- if (material.has("specular")) {
- mat->set_parameter(SpatialMaterial::PARAM_SPECULAR,_get_color(material["specular"]));
- }
-
- if (material.has("emissive")) {
- mat->set_parameter(SpatialMaterial::PARAM_EMISSION,_get_color(material["emissive"]));
- }
-
- if (material.has("shininess")) {
- float exp = material["shininess"];
- mat->set_parameter(SpatialMaterial::PARAM_SPECULAR_EXP,exp);
- }
-
- if (material.has("opacity")) {
- Color c = mat->get_parameter(SpatialMaterial::PARAM_DIFFUSE);
- c.a=material["opacity"];
- mat->set_parameter(SpatialMaterial::PARAM_DIFFUSE,c);
- }
-
-
- if (material.has("textures")) {
-
- Array textures = material["textures"];
- for(int j=0;j<textures.size();j++) {
-
- Dictionary texture=textures[j];
- Ref<Texture> tex;
- if (texture.has("filename")) {
-
-
- String filename=texture["filename"];
- String path=state.base_path+"/"+filename.replace("\\","/");
- if (state.texture_cache.has(path)) {
- tex=state.texture_cache[path];
- } else {
- tex = ResourceLoader::load(path,"ImageTexture");
- if (tex.is_null()) {
- if (state.missing_deps)
- state.missing_deps->push_back(path);
- }
- state.texture_cache[path]=tex; //add anyway
- }
- }
-
- if (tex.is_valid() && texture.has("type")) {
-
- String type=texture["type"];
- if (type=="DIFFUSE")
- mat->set_texture(SpatialMaterial::PARAM_DIFFUSE,tex);
- else if (type=="SPECULAR")
- mat->set_texture(SpatialMaterial::PARAM_SPECULAR,tex);
- else if (type=="SHININESS")
- mat->set_texture(SpatialMaterial::PARAM_SPECULAR_EXP,tex);
- else if (type=="NORMAL")
- mat->set_texture(SpatialMaterial::PARAM_NORMAL,tex);
- else if (type=="EMISSIVE")
- mat->set_texture(SpatialMaterial::PARAM_EMISSION,tex);
- }
-
- }
- }
-
- state.material_cache[id]=mat;
-
- }
-
-}
-
-void EditorSceneImporterFBXConv::_parse_surfaces(State& state) {
-
- for(int i=0;i<state.meshes.size();i++) {
-
- Dictionary mesh = state.meshes[i];
-
- ERR_CONTINUE(!mesh.has("attributes"));
- ERR_CONTINUE(!mesh.has("vertices"));
- ERR_CONTINUE(!mesh.has("parts"));
-
- print_line("MESH #"+itos(i));
-
- Array attrlist=mesh["attributes"];
- Array vertices=mesh["vertices"];
- bool exists[Mesh::ARRAY_MAX];
- int ofs[Mesh::ARRAY_MAX];
- int weight_max=0;
- int binormal_ofs=-1;
- int weight_ofs[4];
-
- for(int j=0;j<Mesh::ARRAY_MAX;j++) {
- exists[j]=false;
- ofs[j]=0;
- }
- exists[Mesh::ARRAY_INDEX]=true;
- float stride=0;
-
- for(int j=0;j<attrlist.size();j++) {
-
- String attr=attrlist[j];
- if (attr=="POSITION") {
- exists[Mesh::ARRAY_VERTEX]=true;
- ofs[Mesh::ARRAY_VERTEX]=stride;
- stride+=3;
- } else if (attr=="NORMAL") {
- exists[Mesh::ARRAY_NORMAL]=true;
- ofs[Mesh::ARRAY_NORMAL]=stride;
- stride+=3;
- } else if (attr=="COLOR") {
- exists[Mesh::ARRAY_COLOR]=true;
- ofs[Mesh::ARRAY_COLOR]=stride;
- stride+=4;
- } else if (attr=="COLORPACKED") {
- stride+=1; //ignore
- } else if (attr=="TANGENT") {
- exists[Mesh::ARRAY_TANGENT]=true;
- ofs[Mesh::ARRAY_TANGENT]=stride;
- stride+=3;
- } else if (attr=="BINORMAL") {
- binormal_ofs=stride;
- stride+=3;
- } else if (attr=="TEXCOORD0") {
- exists[Mesh::ARRAY_TEX_UV]=true;
- ofs[Mesh::ARRAY_TEX_UV]=stride;
- stride+=2;
- } else if (attr=="TEXCOORD1") {
- exists[Mesh::ARRAY_TEX_UV2]=true;
- ofs[Mesh::ARRAY_TEX_UV2]=stride;
- stride+=2;
- } else if (attr.begins_with("TEXCOORD")) {
- stride+=2;
- } else if (attr.begins_with("BLENDWEIGHT")) {
- int idx=attr.replace("BLENDWEIGHT","").to_int();
- if (idx==0) {
- exists[Mesh::ARRAY_BONES]=true;
- ofs[Mesh::ARRAY_BONES]=stride;
- exists[Mesh::ARRAY_WEIGHTS]=true;
- ofs[Mesh::ARRAY_WEIGHTS]=stride+1;
- } if (idx<4) {
- weight_ofs[idx]=stride;
- weight_max=MAX(weight_max,idx+1);
- }
-
- stride+=2;
- }
-
- print_line("ATTR "+attr+" OFS: "+itos(stride));
-
- }
-
- Array parts=mesh["parts"];
-
- for(int j=0;j<parts.size();j++) {
-
-
-
- Dictionary part=parts[j];
- ERR_CONTINUE(!part.has("indices"));
- ERR_CONTINUE(!part.has("id"));
-
- print_line("PART: "+String(part["id"]));
- Array indices=part["indices"];
- Map<int,int> iarray;
- Map<int,int> array;
-
- for(int k=0;k<indices.size();k++) {
-
- int idx = indices[k];
- if (!iarray.has(idx)) {
- int map_to=array.size();
- iarray[idx]=map_to;
- array[map_to]=idx;
- }
- }
-
- print_line("indices total "+itos(indices.size())+" vertices used: "+itos(array.size()));
-
- Array arrays;
- arrays.resize(Mesh::ARRAY_MAX);
-
-
-
- for(int k=0;k<Mesh::ARRAY_MAX;k++) {
-
-
- if (!exists[k])
- continue;
- print_line("exists: "+itos(k));
- int lofs = ofs[k];
- switch(k) {
-
- case Mesh::ARRAY_VERTEX:
- case Mesh::ARRAY_NORMAL: {
-
- PoolVector<Vector3> vtx;
- vtx.resize(array.size());
- {
- int len=array.size();
- PoolVector<Vector3>::Write w = vtx.write();
- for(int l=0;l<len;l++) {
-
- int pos = array[l];
- w[l].x=vertices[pos*stride+lofs+0];
- w[l].y=vertices[pos*stride+lofs+1];
- w[l].z=vertices[pos*stride+lofs+2];
- }
- }
- arrays[k]=vtx;
-
- } break;
- case Mesh::ARRAY_TANGENT: {
-
- if (binormal_ofs<0)
- break;
-
- PoolVector<float> tangents;
- tangents.resize(array.size()*4);
- {
- int len=array.size();
-
- PoolVector<float>::Write w = tangents.write();
- for(int l=0;l<len;l++) {
-
- int pos = array[l];
- Vector3 n;
- n.x=vertices[pos*stride+ofs[Mesh::ARRAY_NORMAL]+0];
- n.y=vertices[pos*stride+ofs[Mesh::ARRAY_NORMAL]+1];
- n.z=vertices[pos*stride+ofs[Mesh::ARRAY_NORMAL]+2];
- Vector3 t;
- t.x=vertices[pos*stride+lofs+0];
- t.y=vertices[pos*stride+lofs+1];
- t.z=vertices[pos*stride+lofs+2];
- Vector3 bi;
- bi.x=vertices[pos*stride+binormal_ofs+0];
- bi.y=vertices[pos*stride+binormal_ofs+1];
- bi.z=vertices[pos*stride+binormal_ofs+2];
- float d = bi.dot(n.cross(t));
-
- w[l*4+0]=t.x;
- w[l*4+1]=t.y;
- w[l*4+2]=t.z;
- w[l*4+3]=d;
-
- }
- }
- arrays[k]=tangents;
-
- } break;
- case Mesh::ARRAY_COLOR: {
-
- PoolVector<Color> cols;
- cols.resize(array.size());
- {
- int len=array.size();
- PoolVector<Color>::Write w = cols.write();
- for(int l=0;l<len;l++) {
-
- int pos = array[l];
- w[l].r=vertices[pos*stride+lofs+0];
- w[l].g=vertices[pos*stride+lofs+1];
- w[l].b=vertices[pos*stride+lofs+2];
- w[l].a=vertices[pos*stride+lofs+3];
- }
- }
- arrays[k]=cols;
-
- } break;
- case Mesh::ARRAY_TEX_UV:
- case Mesh::ARRAY_TEX_UV2: {
-
- PoolVector<Vector2> uvs;
- uvs.resize(array.size());
- {
- int len=array.size();
- PoolVector<Vector2>::Write w = uvs.write();
- for(int l=0;l<len;l++) {
-
- int pos = array[l];
- w[l].x=vertices[pos*stride+lofs+0];
- w[l].y=vertices[pos*stride+lofs+1];
- w[l].y=1.0-w[l].y;
- }
- }
- arrays[k]=uvs;
-
- } break;
- case Mesh::ARRAY_BONES:
- case Mesh::ARRAY_WEIGHTS: {
-
- PoolVector<float> arr;
- arr.resize(array.size()*4);
- int po=k==Mesh::ARRAY_WEIGHTS?1:0;
- lofs=ofs[Mesh::ARRAY_BONES];
- {
- int len=array.size();
-
- PoolVector<float>::Write w = arr.write();
- for(int l=0;l<len;l++) {
-
- int pos = array[l];
-
- for(int m=0;m<4;m++) {
-
- float val=0;
- if (m<=weight_max)
- val=vertices[pos*stride+lofs+m*2+po];
- w[l*4+m]=val;
- }
- }
- }
-
- arrays[k]=arr;
- } break;
- case Mesh::ARRAY_INDEX: {
-
- PoolVector<int> arr;
- arr.resize(indices.size());
- {
- int len=indices.size();
-
- PoolVector<int>::Write w = arr.write();
- for(int l=0;l<len;l++) {
-
- w[l]=iarray[ indices[l] ];
- }
- }
-
- arrays[k]=arr;
-
- } break;
-
-
- }
-
-
- }
-
- Mesh::PrimitiveType pt=Mesh::PRIMITIVE_TRIANGLES;
-
- if (part.has("type")) {
- String type=part["type"];
- if (type=="LINES")
- pt=Mesh::PRIMITIVE_LINES;
- else if (type=="POINTS")
- pt=Mesh::PRIMITIVE_POINTS;
- else if (type=="TRIANGLE_STRIP")
- pt=Mesh::PRIMITIVE_TRIANGLE_STRIP;
- else if (type=="LINE_STRIP")
- pt=Mesh::PRIMITIVE_LINE_STRIP;
- }
-
- if (pt==Mesh::PRIMITIVE_TRIANGLES) {
- PoolVector<int> ia=arrays[Mesh::ARRAY_INDEX];
- int len=ia.size();
- {
- PoolVector<int>::Write w=ia.write();
- for(int l=0;l<len;l+=3) {
- SWAP(w[l+1],w[l+2]);
- }
- }
- arrays[Mesh::ARRAY_INDEX]=ia;
-
-
- }
- SurfaceInfo si;
- si.array=arrays;
- si.primitive=pt;
- state.surface_cache[_id(part["id"])]=si;
-
- }
- }
-}
-
-
-Error EditorSceneImporterFBXConv::_parse_animations(State& state) {
-
- AnimationPlayer *ap = memnew( AnimationPlayer );
-
- state.scene->add_child(ap);
- ap->set_owner(state.scene);
-
- for(int i=0;i<state.animations.size();i++) {
-
- Dictionary anim = state.animations[i];
- ERR_CONTINUE(!anim.has("id"));
- Ref<Animation> an = memnew( Animation );
- an->set_name(_id(anim["id"]));
-
-
- if (anim.has("bones")) {
-
- Array bone_tracks = anim["bones"];
- for(int j=0;j<bone_tracks.size();j++) {
- Dictionary bone_track=bone_tracks[j];
- String bone = bone_track["boneId"];
- if (!bone_track.has("keyframes"))
- continue;
- if (!state.bones.has(bone))
- continue;
-
- Skeleton *sk = state.bones[bone].skeleton;
-
- if (!sk)
- continue;
- int bone_idx=sk->find_bone(bone);
- if (bone_idx==-1)
- continue;
-
-
-
- String path = state.scene->get_path_to(sk);
- path+=":"+bone;
- an->add_track(Animation::TYPE_TRANSFORM);
- int tidx = an->get_track_count()-1;
- an->track_set_path(tidx,path);
-
-
- Dictionary parent_xform_dict;
- Dictionary xform_dict;
-
- if (state.bones.has(bone)) {
- xform_dict=state.bones[bone].node;
- }
-
-
- Array parent_keyframes;
- if (sk->get_bone_parent(bone_idx)!=-1) {
- String parent_name = sk->get_bone_name(sk->get_bone_parent(bone_idx));
- if (state.bones.has(parent_name)) {
- parent_xform_dict=state.bones[parent_name].node;
- }
-
- print_line("parent for "+bone+"? "+parent_name+" XFD: "+String(Variant(parent_xform_dict)));
- for(int k=0;k<bone_tracks.size();k++) {
- Dictionary d = bone_tracks[k];
- if (d["boneId"]==parent_name) {
- parent_keyframes=d["keyframes"];
- print_line("found keyframes");
- break;
- }
- }
-
-
- }
-
- print_line("BONE XFD "+String(Variant(xform_dict)));
-
- Array keyframes=bone_track["keyframes"];
-
- for(int k=0;k<keyframes.size();k++) {
-
- Dictionary key=keyframes[k];
- Transform xform=_get_transform_mixed(key,xform_dict);
- float time = key["keytime"];
- time=time/1000.0;
-#if 0
- if (parent_keyframes.size()) {
- //localize
- print_line(itos(k)+" localizate for: "+bone);
-
- float prev_kt=-1;
- float kt;
- int idx=0;
-
- for(int l=0;l<parent_keyframes.size();l++) {
-
- Dictionary d=parent_keyframes[l];
- kt=d["keytime"];
- kt=kt/1000.0;
- if (kt>time)
- break;
- prev_kt=kt;
- idx++;
-
- }
-
- Transform t;
- if (idx==0) {
- t=_get_transform_mixed(parent_keyframes[0],parent_xform_dict);
- } else if (idx==parent_keyframes.size()){
- t=_get_transform_mixed(parent_keyframes[idx-1],parent_xform_dict);
- } else {
- t=_get_transform_mixed(parent_keyframes[idx-1],parent_xform_dict);
- float d = (time-prev_kt)/(kt-prev_kt);
- if (d>0) {
- Transform t2=_get_transform_mixed(parent_keyframes[idx],parent_xform_dict);
- t=t.interpolate_with(t2,d);
- } else {
- print_line("exact: "+rtos(kt));
- }
- }
-
- xform = t.affine_inverse() * xform; //localize
- } else if (!parent_xform_dict.empty()) {
- Transform t = _get_transform(parent_xform_dict);
- xform = t.affine_inverse() * xform; //localize
- }
-#endif
-
- xform = sk->get_bone_rest(bone_idx).affine_inverse() * xform;
-
-
- Quat q = xform.basis;
- q.normalize();
- Vector3 s = xform.basis.get_scale();
- Vector3 l = xform.origin;
-
-
-
- an->transform_track_insert_key(tidx,time,l,q,s);
-
- }
-
- }
-
-
- }
-
-
- ap->add_animation(_id(anim["id"]),an);
-
- }
-
- return OK;
-}
-
-Error EditorSceneImporterFBXConv::_parse_json(State& state, const String &p_path) {
-
- //not the happiest....
- Vector<uint8_t> data = FileAccess::get_file_as_array(p_path);
- ERR_FAIL_COND_V(!data.size(),ERR_FILE_CANT_OPEN);
- String str;
- bool utferr = str.parse_utf8((const char*)data.ptr(),data.size());
- ERR_FAIL_COND_V(utferr,ERR_PARSE_ERROR);
-
- Dictionary dict;
- Error err = dict.parse_json(str);
- str=String(); //free mem immediately
- ERR_FAIL_COND_V(err,err);
-
- if (dict.has("meshes"))
- state.meshes=dict["meshes"];
- if (dict.has("materials"))
- state.materials=dict["materials"];
- if (dict.has("nodes"))
- state.nodes=dict["nodes"];
- if (dict.has("animations"))
- state.animations=dict["animations"];
-
-
- state.scene = memnew( Spatial );
- _detect_bones(state);
- _parse_surfaces(state);
- _parse_materials(state);
- err = _parse_nodes(state,state.nodes,state.scene);
- if (err)
- return err;
-
- if (state.import_animations) {
- err = _parse_animations(state);
- if (err)
- return err;
- }
-
- print_line("JSON PARSED O-K!");
-
- return OK;
-}
-
-Error EditorSceneImporterFBXConv::_parse_fbx(State& state,const String& p_path) {
-
- state.base_path=p_path.get_base_dir();
-
- if (p_path.to_lower().ends_with("g3dj")) {
- return _parse_json(state,p_path.basename()+".g3dj");
- }
-
- String tool = EDITOR_DEF("fbxconv/path","");
- ERR_FAIL_COND_V( !FileAccess::exists(tool),ERR_UNCONFIGURED);
- String wine = EDITOR_DEF("fbxconv/use_wine","");
-
- List<String> args;
- String path=p_path;
- if (wine!="") {
- List<String> wpargs;
- wpargs.push_back("-w");
- wpargs.push_back(p_path);
- String pipe; //winepath to convert to windows path
- int wpres;
- Error wperr = OS::get_singleton()->execute(wine+"path",wpargs,true,NULL,&pipe,&wpres);
- ERR_FAIL_COND_V(wperr!=OK,ERR_CANT_CREATE);
- ERR_FAIL_COND_V(wpres!=0,ERR_CANT_CREATE);
- path=pipe.strip_edges();
- args.push_back(tool);
- tool=wine;
- }
-
- args.push_back("-o");
- args.push_back("G3DJ");
- args.push_back(path);
-
- int res;
- Error err = OS::get_singleton()->execute(tool,args,true,NULL,NULL,&res);
- ERR_FAIL_COND_V(err!=OK,ERR_CANT_CREATE);
- ERR_FAIL_COND_V(res!=0,ERR_CANT_CREATE);
-
- return _parse_json(state,p_path.basename()+".g3dj");
-
-
-}
-
-Node* EditorSceneImporterFBXConv::import_scene(const String& p_path,uint32_t p_flags,List<String> *r_missing_deps,Error* r_err){
-
- State state;
- state.scene=NULL;
- state.missing_deps=r_missing_deps;
- state.import_animations=p_flags&IMPORT_ANIMATION;
- Error err = _parse_fbx(state,p_path);
- if (err!=OK) {
- if (r_err)
- *r_err=err;
- return NULL;
- }
-
-
- return state.scene;
-}
-Ref<Animation> EditorSceneImporterFBXConv::import_animation(const String& p_path,uint32_t p_flags){
-
-
- return Ref<Animation>();
-}
-
-
-EditorSceneImporterFBXConv::EditorSceneImporterFBXConv() {
-
- EDITOR_DEF("fbxconv/path","");
-#ifndef WINDOWS_ENABLED
- EDITOR_DEF("fbxconv/use_wine","");
- EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,"fbxconv/use_wine",PROPERTY_HINT_GLOBAL_FILE));
- EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,"fbxconv/path",PROPERTY_HINT_GLOBAL_FILE));
-#else
- EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,"fbxconv/path",PROPERTY_HINT_GLOBAL_FILE,"exe"));
-#endif
-
-}
-#endif
diff --git a/editor/io_plugins/editor_scene_importer_fbxconv.h b/editor/io_plugins/editor_scene_importer_fbxconv.h
deleted file mode 100644
index d191a17489..0000000000
--- a/editor/io_plugins/editor_scene_importer_fbxconv.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*************************************************************************/
-/* editor_scene_importer_fbxconv.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_SCENE_IMPORTER_FBXCONV_H
-#define EDITOR_SCENE_IMPORTER_FBXCONV_H
-
-#include "editor/io_plugins/editor_scene_import_plugin.h"
-#include "scene/3d/skeleton.h"
-
-#if 0
-
-class EditorSceneImporterFBXConv : public EditorSceneImporter {
-
- GDCLASS(EditorSceneImporterFBXConv,EditorSceneImporter );
-
-
- struct BoneInfo {
-
- Skeleton *skeleton;
- Transform rest;
- int index;
- bool has_anim_chan;
- bool has_rest;
- Dictionary node;
- BoneInfo() {
- has_rest=false;
- skeleton=NULL;
- index=-1;
- has_anim_chan=false;
- }
- };
-
- struct SurfaceInfo {
- Array array;
- Mesh::PrimitiveType primitive;
- };
-
- struct State {
-
- Node *scene;
- Array meshes;
- Array materials;
- Array nodes;
- Array animations;
- Map<String,BoneInfo > bones;
- Map<String,Skeleton*> skeletons;
- Map<String,Ref<Mesh> > mesh_cache;
- Map<String,SurfaceInfo> surface_cache;
- Map<String,Ref<Material> > material_cache;
- Map<String,Ref<Texture> > texture_cache;
- List<String> *missing_deps;
- String base_path;
- bool import_animations;
- };
-
- String _id(const String& p_id) const;
-
- Transform _get_transform_mixed(const Dictionary& d, const Dictionary& dbase);
- Transform _get_transform(const Dictionary& d);
- Color _get_color(const Array& a);
- void _detect_bones_in_nodes(State& state,const Array& p_nodes);
- void _detect_bones(State& state);
-
- Error _parse_bones(State& state,const Array &p_bones,Skeleton* p_skeleton);
- void _parse_skeletons(const String& p_name,State& state, const Array &p_nodes, Skeleton*p_skeleton=NULL, int p_parent=-1);
-
- void _add_surface(State& state,Ref<Mesh>& m,const Dictionary &part);
- Error _parse_nodes(State& state,const Array &p_nodes,Node* p_base);
- Error _parse_animations(State& state);
- void _parse_materials(State& state);
- void _parse_surfaces(State& state);
- Error _parse_json(State& state,const String& p_path);
- Error _parse_fbx(State &state, const String &p_path);
-
-public:
-
- virtual uint32_t get_import_flags() const;
- virtual void get_extensions(List<String> *r_extensions) const;
- virtual Node* import_scene(const String& p_path,uint32_t p_flags,List<String> *r_missing_deps=NULL,Error* r_err=NULL);
- virtual Ref<Animation> import_animation(const String& p_path,uint32_t p_flags);
-
- EditorSceneImporterFBXConv();
-};
-
-#endif // EDITOR_SCENE_IMPORTER_FBXCONV_H
-#endif
diff --git a/editor/io_plugins/editor_texture_import_plugin.cpp b/editor/io_plugins/editor_texture_import_plugin.cpp
deleted file mode 100644
index 095bc02fa0..0000000000
--- a/editor/io_plugins/editor_texture_import_plugin.cpp
+++ /dev/null
@@ -1,1896 +0,0 @@
-/*************************************************************************/
-/* editor_texture_import_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_texture_import_plugin.h"
-
-#if 0
-#include "editor/editor_node.h"
-#include "editor/editor_settings.h"
-#include "editor_atlas.h"
-#include "io/image_loader.h"
-#include "io/marshalls.h"
-#include "io/resource_saver.h"
-#include "project_settings.h"
-#include "scene/gui/button_group.h"
-#include "scene/gui/check_button.h"
-#include "scene/gui/margin_container.h"
-#include "scene/io/resource_format_image.h"
-
-#include "thirdparty/misc/md5.h"
-
-static const char *flag_names[]={
- ("Streaming Format"),
- ("Fix Border Alpha"),
- ("Alpha Bit Hint"),
- ("Compress Extra (PVRTC2)"),
- ("No MipMaps"),
- ("Repeat"),
- ("Filter (Magnifying)"),
- ("Premultiply Alpha"),
- ("Convert SRGB->Linear"),
- ("Convert NormalMap to XY"),
- ("Use Anisotropy"),
- NULL
-};
-
-#if 0 // not used
-static const char *flag_short_names[]={
- "Stream",
- "FixBorder",
- "AlphBit",
- "ExtComp",
- "NoMipMap",
- "Repeat",
- "Filter",
- "PMAlpha",
- "ToLinear",
- "ToRG",
- "Anisoropic",
- NULL
-};
-#endif
-
-
-void EditorImportTextureOptions::set_format(EditorTextureImportPlugin::ImageFormat p_format) {
-
- updating=true;
- format->select(p_format);
- if (p_format==EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY) {
- quality_vb->show();
- } else {
- quality_vb->hide();
- }
-
- updating=false;
-
-}
-
-EditorTextureImportPlugin::ImageFormat EditorImportTextureOptions::get_format() const{
-
- return (EditorTextureImportPlugin::ImageFormat)format->get_selected();
-
-}
-
-void EditorImportTextureOptions::set_flags(uint32_t p_flags){
-
- updating=true;
- for(int i=0;i<items.size();i++) {
-
- items[i]->set_checked(0,p_flags&(1<<i));
- }
- updating=false;
-
-}
-
-void EditorImportTextureOptions::set_quality(float p_quality) {
-
- quality->set_value(p_quality);
-}
-
-float EditorImportTextureOptions::get_quality() const {
-
- return quality->get_value();
-}
-
-
-uint32_t EditorImportTextureOptions::get_flags() const{
-
- uint32_t f=0;
- for(int i=0;i<items.size();i++) {
-
- if (items[i]->is_checked(0))
- f|=(1<<i);
- }
-
- return f;
-}
-
-void EditorImportTextureOptions::_changedp(int p_value) {
-
- _changed();
-}
-
-void EditorImportTextureOptions::_changed() {
-
- if (updating)
- return;
- if (format->get_selected()==EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY) {
- quality_vb->show();
- } else {
- quality_vb->hide();
- }
-
- emit_signal("changed");
-}
-
-
-void EditorImportTextureOptions::_bind_methods() {
-
- ClassDB::bind_method("_changed",&EditorImportTextureOptions::_changed);
- ClassDB::bind_method("_changedp",&EditorImportTextureOptions::_changedp);
-
- ADD_SIGNAL(MethodInfo("changed"));
-}
-
-
-void EditorImportTextureOptions::_notification(int p_what) {
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
- flags->connect("item_edited",this,"_changed");
- format->connect("item_selected",this,"_changedp");
- }
-}
-
-void EditorImportTextureOptions::show_2d_notice() {
-
- //notice_for_2d->show();
-}
-
-EditorImportTextureOptions::EditorImportTextureOptions() {
-
-
- add_constant_override("separation",3);
- updating=false;
- format = memnew( OptionButton );
-
- format->add_item(TTR("Uncompressed"),EditorTextureImportPlugin::IMAGE_FORMAT_UNCOMPRESSED);
- format->add_item(TTR("Compress Lossless (PNG)"),EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS);
- format->add_item(TTR("Compress Lossy (WebP)"),EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY);
- format->add_item(TTR("Compress (VRAM)"),EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM);
-
-
- add_margin_child(TTR("Texture Format"),format);
-
- quality_vb = memnew( VBoxContainer );
-
- HBoxContainer *quality_hb = memnew(HBoxContainer);
- HSlider *hs = memnew( HSlider );
- hs->set_h_size_flags(SIZE_EXPAND_FILL);
- hs->set_stretch_ratio(0.8);
- quality_hb->add_child(hs);
- quality_hb->set_h_size_flags(SIZE_EXPAND_FILL);
- SpinBox *sb = memnew( SpinBox );
- sb->set_h_size_flags(SIZE_EXPAND_FILL);
- sb->set_stretch_ratio(0.2);
- quality_hb->add_child(sb);
- sb->share(hs);
- hs->set_min(0);
- hs->set_max(1.0);
- hs->set_step(0.01);
- hs->set_value(0.7);
- quality=hs;
- quality_vb->add_margin_child(TTR("Texture Compression Quality (WebP):"),quality_hb);
-
- add_child(quality_vb);
-
- flags = memnew( Tree );
- flags->set_hide_root(true);
- TreeItem *root = flags->create_item();
-
-
-
- const char ** fname=flag_names;
-
- while( *fname ) {
-
- TreeItem*ti = flags->create_item(root);
- ti->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
- ti->set_text(0,*fname);
- ti->set_editable(0,true);
- items.push_back(ti);
- fname++;
- }
-
- add_margin_child(TTR("Texture Options"),flags,true);
-
-
-}
-
-///////////////////////////////////////////////////////////
-
-
-
-
-class EditorTextureImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorTextureImportDialog,ConfirmationDialog);
-
-
-
- HBoxContainer *mode_hb;
- CheckBox *mode_check[EditorTextureImportPlugin::MODE_MAX];
-
- EditorImportTextureOptions *texture_options;
-
- EditorTextureImportPlugin::Mode mode;
- //EditorNode *editor;
-
- LineEdit *import_path;
- LineEdit *save_path;
- EditorFileDialog *file_select;
- EditorFileDialog *save_file_select;
- EditorDirDialog *save_select;
- OptionButton *texture_action;
- ConfirmationDialog *error_dialog;
- CheckButton *crop_source;
- SpinBox *size;
-
- MarginContainer *size_mc;
- Label* size_label;
-
- Label* source_label;
- Label *notice_for_2d;
-
- EditorTextureImportPlugin *plugin;
-
- void _mode_changed(int p_mode);
- void _choose_files(const Vector<String>& p_path);
- void _choose_file(const String& p_path);
- void _choose_save_dir(const String& p_path);
- void _browse();
- void _browse_target();
- void _import();
-
-
-protected:
-
- void _notification(int p_what);
- static void _bind_methods();
-public:
-
-
- void setup_multiple_import_3d(const Vector<String>& p_path,const String& p_dest) {
-
- _mode_changed(EditorTextureImportPlugin::MODE_TEXTURE_3D);
- _choose_files(p_path);
- _choose_save_dir(p_dest);
- }
-
- void add_sources_and_dest(const Vector<String>& p_path,const String& p_dest) {
-
- _choose_files(p_path);
- _choose_save_dir(p_dest);
- }
-
- Error import(const String& p_from, const String& p_to, const String& p_preset);
- void popup_import(const String &p_from=String());
- EditorTextureImportDialog(EditorTextureImportPlugin *p_plugin=NULL);
-};
-
-
-/////////////////////////////////////////////////////////
-
-
-
-
-void EditorTextureImportDialog::_choose_files(const Vector<String>& p_path) {
-
- String files;
- for(int i=0;i<p_path.size();i++) {
-
- if (i>0)
- files+=",";
- files+=p_path[i];
- }
- /*
- if (p_path.size()) {
- String srctex=p_path[0];
- String ipath = EditorImportDB::get_singleton()->find_source_path(srctex);
-
- if (ipath!="")
- save_path->set_text(ipath.get_base_dir());
- }*/
- import_path->set_text(files);
-
-}
-
-
-
-void EditorTextureImportDialog::_choose_file(const String& p_path) {
-
-
- import_path->set_text(p_path);
-
-}
-void EditorTextureImportDialog::_choose_save_dir(const String& p_path) {
-
- save_path->set_text(p_path);
-}
-
-
-void EditorTextureImportDialog::_import() {
-
-
- //ImportMonitorBlock imb;
-
- Vector<String> files=import_path->get_text().split(",");
-
- if (!files.size()) {
-
- error_dialog->set_text(TTR("Please specify some files!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
- }
-
- String dst_path=save_path->get_text();
-
- if (save_path->get_text().strip_edges()=="") {
- error_dialog->set_text(TTR("Target path is empty."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (!save_path->get_text().begins_with("res://")) {
- error_dialog->set_text(TTR("Target path must be a complete resource path."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
-
- if (mode!=EditorTextureImportPlugin::MODE_ATLAS && mode!=EditorTextureImportPlugin::MODE_LARGE && !DirAccess::exists(save_path->get_text())) {
- error_dialog->set_text(TTR("Target path must exist."));
- error_dialog->popup_centered_minsize();
- return;
- }
-
- if (mode==EditorTextureImportPlugin::MODE_ATLAS) { //atlas
-
- if (files.size()==0) {
-
- error_dialog->set_text(TTR("At least one file needed for Atlas."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
-
- }
- String dst_file = dst_path;
- //dst_file=dst_file.basename()+".tex";
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
- //imd->set_editor();
- for(int i=0;i<files.size();i++) {
- imd->add_source(EditorImportPlugin::validate_source_path(files[i]));
- }
- imd->set_option("format",texture_options->get_format());
- imd->set_option("flags",texture_options->get_flags());
- imd->set_option("quality",texture_options->get_quality());
- imd->set_option("atlas",true);
- imd->set_option("atlas_size",int(size->get_value()));
- imd->set_option("large",false);
- imd->set_option("crop",crop_source->is_pressed());
- imd->set_option("mode",mode);
-
- Error err = plugin->import(dst_file,imd);
- if (err) {
-
- error_dialog->set_text(TTR("Error importing:")+" "+dst_file.get_file());
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
-
- }
- } else if (mode==EditorTextureImportPlugin::MODE_LARGE) { //large
-
- if (files.size()!=1) {
-
- error_dialog->set_text(TTR("Only one file is required for large texture."));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
-
- }
- String dst_file = dst_path;
- //dst_file=dst_file.basename()+".tex";
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
- //imd->set_editor();
- for(int i=0;i<files.size();i++) {
- imd->add_source(EditorImportPlugin::validate_source_path(files[i]));
- }
- imd->set_option("format",texture_options->get_format());
- imd->set_option("flags",texture_options->get_flags());
- imd->set_option("quality",texture_options->get_quality());
- imd->set_option("atlas",false);
- imd->set_option("large",true);
- imd->set_option("large_cell_size",int(size->get_value()));
- imd->set_option("crop",crop_source->is_pressed());
- imd->set_option("mode",mode);
-
- Error err = plugin->import(dst_file,imd);
- if (err) {
-
- error_dialog->set_text(TTR("Error importing:")+" "+dst_file.get_file());
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
-
- }
- } else {
-
-
- for(int i=0;i<files.size();i++) {
-
- String dst_file = dst_path.plus_file(files[i].get_file());
- dst_file=dst_file.get_basename()+".tex";
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
- //imd->set_editor();
- imd->add_source(EditorImportPlugin::validate_source_path(files[i]));
- imd->set_option("format",texture_options->get_format());
- imd->set_option("flags",texture_options->get_flags());
- imd->set_option("quality",texture_options->get_quality());
- imd->set_option("atlas",false);
- imd->set_option("large",false);
- imd->set_option("mode",mode);
-
- Error err = plugin->import(dst_file,imd);
- if (err) {
-
- error_dialog->set_text(TTR("Error importing:")+" "+dst_file.get_file());
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
-
- }
- }
- }
-
- hide();
-}
-
-void EditorTextureImportDialog::_browse() {
-
- file_select->popup_centered_ratio();
-}
-
-void EditorTextureImportDialog::_browse_target() {
-
- if (mode==EditorTextureImportPlugin::MODE_ATLAS || mode==EditorTextureImportPlugin::MODE_LARGE) {
- save_file_select->popup_centered_ratio();
- } else {
- save_select->popup_centered_ratio();
- }
-
-}
-
-
-void EditorTextureImportDialog::popup_import(const String& p_from) {
-
- popup_centered(Size2(600,500)*EDSCALE);
- if (p_from!="") {
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_from);
- ERR_FAIL_COND(!rimd.is_valid());
-
- if (rimd->has_option("mode")) {
- //new imported stuff uses this option
- _mode_changed(rimd->get_option("mode"));
- } else {
- //this one is for compatibility, will have to guess it
- if (rimd->has_option("atlas") && rimd->get_option("atlas")) {
- _mode_changed(EditorTextureImportPlugin::MODE_ATLAS);
- } else if (rimd->has_option("large") && rimd->get_option("large")) {
- _mode_changed(EditorTextureImportPlugin::MODE_LARGE);
- } else {
- //guess by usage of mipmaps..?
- _mode_changed(EditorTextureImportPlugin::MODE_TEXTURE_2D);
- }
-
- }
-
- if (mode==EditorTextureImportPlugin::MODE_ATLAS || mode==EditorTextureImportPlugin::MODE_LARGE)
- save_path->set_text(p_from);
- else
- save_path->set_text(p_from.get_base_dir());
-
- texture_options->set_format(EditorTextureImportPlugin::ImageFormat(int(rimd->get_option("format"))));
- texture_options->set_flags(rimd->get_option("flags"));
- texture_options->set_quality(rimd->get_option("quality"));
- String src = "";
- for(int i=0;i<rimd->get_source_count();i++) {
- if (i>0)
- src+=",";
- src+=EditorImportPlugin::expand_source_path(rimd->get_source_path(i));
- }
- import_path->set_text(src);
- }
-}
-
-
-void EditorTextureImportDialog::_notification(int p_what) {
-
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
-
- List<String> extensions;
- ImageLoader::get_recognized_extensions(&extensions);
- //ResourceLoader::get_recognized_extensions_for_type("PackedTexture",&extensions);
- file_select->clear_filters();
- for(int i=0;i<extensions.size();i++) {
-
- file_select->add_filter("*."+extensions[i]+" ; "+extensions[i].to_upper());
- }
- }
-}
-
-Error EditorTextureImportDialog::import(const String& p_from, const String& p_to, const String& p_preset) {
-
-
- import_path->set_text(p_from);
- save_path->set_text(p_to);
- _import();
-
- return OK;
-}
-
-void EditorTextureImportDialog::_mode_changed(int p_mode) {
-
- mode = EditorTextureImportPlugin::Mode(p_mode);
-
- for(int i=0;i<EditorTextureImportPlugin::MODE_MAX;i++) {
- mode_check[i]->set_pressed(i==mode);
- }
-
- if (p_mode==EditorTextureImportPlugin::MODE_ATLAS) {
-
- size_label->set_text(TTR("Max Texture Size:"));
- size->set_value(2048);
- crop_source->show();
- size_label->show();
- size->show();
-
- texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FILTER);
- texture_options->set_quality(0.7);
- texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY);
- set_title(TTR("Import Textures for Atlas (2D)"));
-
- } else {
- crop_source->hide();
- }
-
-
- if (p_mode==EditorTextureImportPlugin::MODE_LARGE) {
-
- size_label->set_text(TTR("Cell Size:"));
- size->set_value(256);
- size_label->show();
- size->show();
-
- file_select->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- save_file_select->add_filter("*.largetex;"+TTR("Large Texture"));
-
- texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FILTER);
- texture_options->set_quality(0.7);
- texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS);
- set_title(TTR("Import Large Textures (2D)"));
- source_label->set_text(TTR("Source Texture"));
-
- } else {
- file_select->set_mode(EditorFileDialog::MODE_OPEN_FILES);
- save_file_select->add_filter("*.tex;"+TTR("Base Atlas Texture"));
- source_label->set_text(TTR("Source Texture(s)"));
- }
-
- if (p_mode==EditorTextureImportPlugin::MODE_TEXTURE_2D) {
-
- size_label->hide();
- size->hide();
-
- texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_FILTER);
- texture_options->set_quality(0.7);
- texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY);
- notice_for_2d->show();
- set_title(TTR("Import Textures for 2D"));
-
- } else {
- notice_for_2d->hide();
- }
-
- if (p_mode==EditorTextureImportPlugin::MODE_TEXTURE_3D) {
-
- size_label->hide();
- size->hide();
- //texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_);
- //texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS);
- texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_FILTER|EditorTextureImportPlugin::IMAGE_FLAG_REPEAT);
- texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM);
- set_title(TTR("Import Textures for 3D"));
- }
-}
-
-void EditorTextureImportDialog::_bind_methods() {
-
-
- ClassDB::bind_method("_choose_files",&EditorTextureImportDialog::_choose_files);
- ClassDB::bind_method("_choose_file",&EditorTextureImportDialog::_choose_file);
- ClassDB::bind_method("_choose_save_dir",&EditorTextureImportDialog::_choose_save_dir);
- ClassDB::bind_method("_import",&EditorTextureImportDialog::_import);
- ClassDB::bind_method("_browse",&EditorTextureImportDialog::_browse);
- ClassDB::bind_method("_browse_target",&EditorTextureImportDialog::_browse_target);
- ClassDB::bind_method("_mode_changed",&EditorTextureImportDialog::_mode_changed);
- //ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
-}
-
-EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* p_plugin) {
-
-
-
-
-
- plugin=p_plugin;
- set_title(TTR("Import Textures"));
-
- mode_hb = memnew( HBoxContainer );
- add_child(mode_hb);
- //set_child_rect(mode_hb);
-
- VBoxContainer *vbcg = memnew( VBoxContainer);
-
-
- mode_hb->add_child(vbcg);
- mode_hb->add_constant_override("separation",15);
- VBoxContainer *bg = memnew( VBoxContainer );
- vbcg->add_margin_child("Import Mode",bg);
-
- for(int i=0;i<EditorTextureImportPlugin::MODE_MAX;i++) {
- String mode_name[EditorTextureImportPlugin::MODE_MAX]={
- TTR("2D Texture"),
- TTR("3D Texture"),
- TTR("Atlas Texture"),
- TTR("Large Texture")
- };
-
-
- mode_check[i]=memnew(CheckBox);
- bg->add_child(mode_check[i]);
- mode_check[i]->set_text(mode_name[i]);
- mode_check[i]->connect("pressed",this,"_mode_changed",varray(i));
- }
-
- VBoxContainer *vbc = memnew(VBoxContainer);
- mode_hb->add_child(vbc);
- vbc->set_h_size_flags(SIZE_EXPAND_FILL);
- vbc->add_constant_override("separation",4);
-
- notice_for_2d = memnew( Label );
- notice_for_2d->set_text(TTR("NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to the project."));
- //notice_for_2d->set_custom_minimum_size(Size2(0,50));
- notice_for_2d->set_autowrap(true);
- notice_for_2d->hide();
- vbcg->add_child(notice_for_2d);
- notice_for_2d->set_v_size_flags(SIZE_EXPAND_FILL);
- notice_for_2d->set_valign(Label::VALIGN_BOTTOM);
-
- VBoxContainer *source_vb=memnew(VBoxContainer);
- MarginContainer *source_mc = vbc->add_margin_child(TTR("Source Texture(s):"),source_vb);
-
- source_label = vbc->get_child(source_mc->get_index()-1)->cast_to<Label>();
-
- HBoxContainer *hbc = memnew( HBoxContainer );
- source_vb->add_child(hbc);
-
- import_path = memnew( LineEdit );
- import_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(import_path);
- crop_source = memnew( CheckButton );
- crop_source->set_pressed(true);
- source_vb->add_child(crop_source);
- crop_source->set_text(TTR("Crop empty space."));
-
-
- Button * import_choose = memnew( Button );
- import_choose->set_text(" .. ");
- hbc->add_child(import_choose);
-
- import_choose->connect("pressed", this,"_browse");
-
- hbc = memnew( HBoxContainer );
- vbc->add_margin_child(TTR("Target Path:"),hbc);
-
- size = memnew( SpinBox );
- size->set_min(128);
- size->set_max(16384);
-
-
- size->set_value(256);
- size_mc=vbc->add_margin_child(TTR("Cell Size:"),size);
- size_label=vbc->get_child(size_mc->get_index()-1)->cast_to<Label>();
-
-
- save_path = memnew( LineEdit );
- save_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(save_path);
-
- Button * save_choose = memnew( Button );
- save_choose->set_text(" .. ");
- hbc->add_child(save_choose);
-
- save_choose->connect("pressed", this,"_browse_target");
-
- file_select = memnew(EditorFileDialog);
- file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- add_child(file_select);
-
- file_select->connect("files_selected", this,"_choose_files");
- file_select->connect("file_selected", this,"_choose_file");
-
- save_file_select = memnew(EditorFileDialog);
- save_file_select->set_access(EditorFileDialog::ACCESS_RESOURCES);
- add_child(save_file_select);
- save_file_select->set_mode(EditorFileDialog::MODE_SAVE_FILE);
- save_file_select->clear_filters();
-
- save_file_select->connect("file_selected", this,"_choose_save_dir");
-
- save_select = memnew( EditorDirDialog );
- add_child(save_select);
-
- //save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
- save_select->connect("dir_selected", this,"_choose_save_dir");
-
- get_ok()->connect("pressed", this,"_import");
- get_ok()->set_text(TTR("Import"));
-
- //move stuff up
- /*
- for(int i=0;i<4;i++)
- vbc->move_child( vbc->get_child( vbc->get_child_count() -1), 0);
- */
-
- error_dialog = memnew ( ConfirmationDialog );
- add_child(error_dialog);
- error_dialog->get_ok()->set_text(TTR("Accept"));
- //error_dialog->get_cancel()->hide();
-
- set_hide_on_ok(false);
-
- texture_options = memnew( EditorImportTextureOptions );
- vbc->add_child(texture_options);
- texture_options->set_v_size_flags(SIZE_EXPAND_FILL);
-
- _mode_changed(EditorTextureImportPlugin::MODE_TEXTURE_3D);
-
-
- //GLOBAL_DEF("import/shared_textures","res://");
- //Globals::get_singleton()->set_custom_property_info("import/shared_textures",PropertyInfo(Variant::STRING,"import/shared_textures",PROPERTY_HINT_DIR));
-
-
-}
-
-
-
-///////////////////////////////////////////////////////////
-
-
-String EditorTextureImportPlugin::get_name() const {
-
- return "texture";
-#if 0 //old names, kept for compatibility reference
- switch(mode) {
- case MODE_TEXTURE_2D: {
-
- return "texture_2d";
- } break;
- case MODE_TEXTURE_3D: {
-
- return "texture_3d";
-
- } break;
- case MODE_ATLAS: {
-
- return "texture_atlas";
- } break;
- case MODE_LARGE: {
-
- return "texture_large";
- } break;
-
- }
-
-
- return "";
-#endif
-}
-
-String EditorTextureImportPlugin::get_visible_name() const {
-
- return TTR("Texture");
-
-}
-void EditorTextureImportPlugin::import_dialog(const String& p_from) {
-
- dialog->popup_import(p_from);
-}
-
-void EditorTextureImportPlugin::compress_image(EditorExportPlatform::ImageCompression p_mode,Image& image,bool p_smaller) {
-
-
- switch(p_mode) {
- case EditorExportPlatform::IMAGE_COMPRESSION_NONE: {
-
- //do absolutely nothing
-
- } break;
- case EditorExportPlatform::IMAGE_COMPRESSION_BC: {
-
-
- // for maximum compatibility, BC shall always use mipmaps and be PO2
- image.resize_to_po2();
- if (!image.has_mipmaps())
- image.generate_mipmaps();
-
- image.compress(Image::COMPRESS_S3TC);
- /*
- if (has_alpha) {
-
- if (flags&IMAGE_FLAG_ALPHA_BIT) {
- image.convert(Image::FORMAT_DXT5);
- } else {
- image.convert(Image::FORMAT_DXT3);
- }
- } else {
-
- image.convert(Image::FORMAT_DXT1);
- }*/
-
-
- } break;
- case EditorExportPlatform::IMAGE_COMPRESSION_PVRTC:
- case EditorExportPlatform::IMAGE_COMPRESSION_PVRTC_SQUARE: {
-
- // for maximum compatibility (hi apple!), PVRT shall always
- // use mipmaps, be PO2 and square
-
- if (!image.has_mipmaps())
- image.generate_mipmaps();
- image.resize_to_po2(true);
-
- if (p_smaller) {
-
- image.compress(Image::COMPRESS_PVRTC2);
- //image.convert(has_alpha ? Image::FORMAT_PVRTC2A : Image::FORMAT_PVRTC2);
- } else {
- image.compress(Image::COMPRESS_PVRTC4);
- //image.convert(has_alpha ? Image::FORMAT_PVRTC4A : Image::FORMAT_PVRTC4);
- }
-
- } break;
- case EditorExportPlatform::IMAGE_COMPRESSION_ETC1: {
-
- image.resize_to_po2(); //square or not?
- if (!image.has_mipmaps())
- image.generate_mipmaps();
- if (!image.detect_alpha()) {
- //ETC1 is only opaque
- image.compress(Image::COMPRESS_ETC);
- }
-
- } break;
- case EditorExportPlatform::IMAGE_COMPRESSION_ETC2: {
-
-
- } break;
- }
-
-
-}
-
-Error EditorTextureImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from) {
-
-
- return import2(p_path,p_from,EditorExportPlatform::IMAGE_COMPRESSION_BC,false);
-}
-
-
-Error EditorTextureImportPlugin::_process_texture_data(Ref<ImageTexture> &texture,int format, float quality,int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,float shrink) {
-
-
- if (format==IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS || format==IMAGE_FORMAT_COMPRESS_DISK_LOSSY) {
-
- Image image=texture->get_data();
- ERR_FAIL_COND_V(image.empty(),ERR_INVALID_DATA);
-
- bool has_alpha=image.detect_alpha();
- if (!has_alpha && image.get_format()==Image::FORMAT_RGBA8) {
-
- image.convert(Image::FORMAT_RGB8);
-
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_FIX_BORDER_ALPHA) {
-
- image.fix_alpha_edges();
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_PREMULT_ALPHA) {
-
- image.premultiply_alpha();
- }
-
- if (flags&IMAGE_FLAG_CONVERT_NORMAL_TO_XY) {
- image.normalmap_to_xy();
- }
-
- /*
- if ((image.get_format()==Image::FORMAT_RGB8 || image.get_format()==Image::FORMAT_RGBA8) && flags&IMAGE_FLAG_CONVERT_TO_LINEAR) {
-
- image.srgb_to_linear();
- }
- */
-
- if (shrink>1) {
-
- int orig_w=image.get_width();
- int orig_h=image.get_height();
- image.resize(orig_w/shrink,orig_h/shrink,Image::INTERPOLATE_CUBIC);
- texture->create_from_image(image,tex_flags);
- texture->set_size_override(Size2(orig_w,orig_h));
-
-
- } else {
-
- texture->create_from_image(image,tex_flags);
- }
-
-
- if (format==IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS) {
- texture->set_storage(ImageTexture::STORAGE_COMPRESS_LOSSLESS);
- } else {
- texture->set_storage(ImageTexture::STORAGE_COMPRESS_LOSSY);
- }
-
-
-
- texture->set_lossy_storage_quality(quality);
-
-
- } else {
-
-
- Image image=texture->get_data();
- ERR_FAIL_COND_V(image.empty(),ERR_INVALID_DATA);
-
-
- bool has_alpha=image.detect_alpha();
- if (!has_alpha && image.get_format()==Image::FORMAT_RGBA8) {
-
- image.convert(Image::FORMAT_RGB8);
-
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_FIX_BORDER_ALPHA) {
-
- image.fix_alpha_edges();
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_PREMULT_ALPHA) {
-
- image.premultiply_alpha();
- }
-
- if (flags&IMAGE_FLAG_CONVERT_NORMAL_TO_XY) {
- image.normalmap_to_xy();
- }
-
- /*
- if ((image.get_format()==Image::FORMAT_RGB8 || image.get_format()==Image::FORMAT_RGBA8) && flags&IMAGE_FLAG_CONVERT_TO_LINEAR) {
-
- print_line("CONVERT BECAUSE: "+itos(flags));
- image.srgb_to_linear();
- }
- */
-
- int orig_w=image.get_width();
- int orig_h=image.get_height();
-
- if (shrink>1) {
- image.resize(orig_w/shrink,orig_h/shrink,Image::INTERPOLATE_CUBIC);
- texture->create_from_image(image,tex_flags);
- texture->set_size_override(Size2(orig_w,orig_h));
- }
-
- if (!(flags&IMAGE_FLAG_NO_MIPMAPS)) {
- image.generate_mipmaps();
-
- }
-
- if (format!=IMAGE_FORMAT_UNCOMPRESSED) {
-
- compress_image(p_compr,image,flags&IMAGE_FLAG_COMPRESS_EXTRA);
- }
-
-
- texture->create_from_image(image,tex_flags);
-
-
- if (shrink>1 || (format!=IMAGE_FORMAT_UNCOMPRESSED && (image.get_width()!=orig_w || image.get_height()!=orig_h))) {
- texture->set_size_override(Size2(orig_w,orig_h));
- }
-
- //uint32_t save_flags=ResourceSaver::FLAG_COMPRESS;
- }
-
- return OK;
-}
-
-
-Error EditorTextureImportPlugin::import2(const String& p_path, const Ref<ResourceImportMetadata>& p_from,EditorExportPlatform::ImageCompression p_compr, bool p_external){
-
-
-
- ERR_FAIL_COND_V(p_from->get_source_count()==0,ERR_INVALID_PARAMETER);
-
- Ref<ResourceImportMetadata> from=p_from;
-
- Ref<ImageTexture> texture;
- Vector<Ref<AtlasTexture> > atlases;
- bool atlas = from->get_option("atlas");
- bool large = from->get_option("large");
-
- int flags=from->get_option("flags");
- int format=from->get_option("format");
- float quality=from->get_option("quality");
-
- uint32_t tex_flags=0;
-
- if (flags&EditorTextureImportPlugin::IMAGE_FLAG_REPEAT)
- tex_flags|=Texture::FLAG_REPEAT;
- if (flags&EditorTextureImportPlugin::IMAGE_FLAG_FILTER)
- tex_flags|=Texture::FLAG_FILTER;
- if (!(flags&EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS))
- tex_flags|=Texture::FLAG_MIPMAPS;
- if (flags&EditorTextureImportPlugin::IMAGE_FLAG_CONVERT_TO_LINEAR)
- tex_flags|=Texture::FLAG_CONVERT_TO_LINEAR;
- if (flags&EditorTextureImportPlugin::IMAGE_FLAG_USE_ANISOTROPY)
- tex_flags|=Texture::FLAG_ANISOTROPIC_FILTER;
-
- print_line("path: "+p_path+" flags: "+itos(tex_flags));
- float shrink=1;
- if (from->has_option("shrink"))
- shrink=from->get_option("shrink");
-
- if (large) {
- ERR_FAIL_COND_V(from->get_source_count()!=1,ERR_INVALID_PARAMETER);
-
- String src_path = EditorImportPlugin::expand_source_path(from->get_source_path(0));
-
-
- int cell_size=from->get_option("large_cell_size");
- ERR_FAIL_COND_V(cell_size<128 || cell_size>16384,ERR_CANT_OPEN);
-
- EditorProgress pg("largetex",TTR("Import Large Texture"),3);
-
- pg.step(TTR("Load Source Image"),0);
- Image img;
- Error err = ImageLoader::load_image(src_path,&img);
- if (err) {
- return err;
- }
-
- pg.step(TTR("Slicing"),1);
-
- Map<Vector2,Image> pieces;
- for(int i=0;i<img.get_width();i+=cell_size) {
- int w = MIN(img.get_width()-i,cell_size);
- for(int j=0;j<img.get_height();j+=cell_size) {
- int h = MIN(img.get_height()-j,cell_size);
-
- Image piece(w,h,0,img.get_format());
- piece.blit_rect(img,Rect2(i,j,w,h),Point2(0,0));
- if (!piece.is_invisible()) {
- pieces[Vector2(i,j)]=piece;
- //print_line("ADDING PIECE AT "+Vector2(i,j));
- }
- }
- }
-
- Ref<LargeTexture> existing;
- if (ResourceCache::has(p_path)) {
- existing = ResourceCache::get(p_path);
- }
-
- if (existing.is_valid()) {
- existing->clear();
- } else {
- existing = Ref<LargeTexture>(memnew( LargeTexture ));
- }
-
- existing->set_size(Size2(img.get_width(),img.get_height()));
- pg.step(TTR("Inserting"),2);
-
- for (Map<Vector2,Image>::Element *E=pieces.front();E;E=E->next()) {
-
- Ref<ImageTexture> imgtex = Ref<ImageTexture>( memnew( ImageTexture ) );
- imgtex->create_from_image(E->get(),tex_flags);
- _process_texture_data(imgtex,format,quality,flags,p_compr,tex_flags,shrink);
- existing->add_piece(E->key(),imgtex);
- }
-
- if (!p_external) {
- from->set_editor(get_name());
- from->set_source_md5(0,FileAccess::get_md5(src_path));
- existing->set_path(p_path);
- existing->set_import_metadata(from);
- }
- pg.step(TTR("Saving"),3);
-
- err = ResourceSaver::save(p_path,existing);
- if (err!=OK) {
- EditorNode::add_io_error(TTR("Couldn't save large texture:")+" "+p_path);
- return err;
- }
-
- return OK;
-
-
- } else if (atlas) {
-
- //prepare atlas!
- Vector< Image > sources;
- Vector< Image > tsources;
- bool alpha=false;
- bool crop = from->get_option("crop");
-
- EditorProgress ep("make_atlas",TTR("Build Atlas For:")+" "+p_path.get_file(),from->get_source_count()+3);
-
- print_line("sources: "+itos(from->get_source_count()));
-
- for(int i=0;i<from->get_source_count();i++) {
-
- String path = EditorImportPlugin::expand_source_path(from->get_source_path(i));
- String md5 = FileAccess::get_md5(path);
- from->set_source_md5(i,FileAccess::get_md5(path));
- ep.step(TTR("Loading Image:")+" "+path,i);
- print_line("source path: "+path+" md5 "+md5);
- Image src;
- Error err = ImageLoader::load_image(path,&src);
- if (err) {
- EditorNode::add_io_error(TTR("Couldn't load image:")+" "+path);
- return err;
- }
-
- if (src.detect_alpha())
- alpha=true;
-
- tsources.push_back(src);
- }
- ep.step(TTR("Converting Images"),sources.size());
-
-
- Map<uint64_t,int> source_md5;
- Map<int,List<int> > source_map;
-
- for(int i=0;i<tsources.size();i++) {
-
- Image src = tsources[i];
-
- if (alpha) {
- src.convert(Image::FORMAT_RGBA8);
- } else {
- src.convert(Image::FORMAT_RGB8);
- }
-
- PoolVector<uint8_t> data = src.get_data();
- MD5_CTX md5;
- PoolVector<uint8_t>::Read r=data.read();
- MD5Init(&md5);
- int len=data.size();
- for(int j=0;j<len;j++) {
- uint8_t b = r[j];
- b>>=2; //to aid in comparing
- MD5Update(&md5,(unsigned char*)&b,1);
- }
- MD5Final(&md5);
- uint64_t *cmp = (uint64_t*)md5.digest; //less bits, but still useful for this
-
- tsources[i]=Image(); //clear
-
- if (source_md5.has(*cmp)) {
- int sidx=source_md5[*cmp];
- source_map[sidx].push_back(i);
- print_line("REUSING "+from->get_source_path(i));
-
- } else {
- int sidx=sources.size();
- source_md5[*cmp]=sidx;
- sources.push_back(src);
- List<int> sm;
- sm.push_back(i);
- source_map[sidx]=sm;
-
- }
-
-
- }
-
- //texturepacker is not really good for optimizing, so..
- //will at some point likely replace with my own
- //first, will find the nearest to a square packing
- int border=1;
-
- Vector<Size2i> src_sizes;
- Vector<Rect2> crops;
-
- ep.step(TTR("Cropping Images"),sources.size()+1);
-
- for(int j=0;j<sources.size();j++) {
-
- Size2i s;
- if (crop) {
- Rect2 crop = sources[j].get_used_rect();
- print_line("CROP: "+crop);
- s=crop.size;
- crops.push_back(crop);
- } else {
-
- s=Size2i(sources[j].get_width(),sources[j].get_height());
- }
- s+=Size2i(border*2,border*2);
- src_sizes.push_back(s); //add a line to constraint width
- }
-
- Vector<Point2i> dst_positions;
- Size2i dst_size;
- EditorAtlas::fit(src_sizes,dst_positions,dst_size);
-
- print_line("size that worked: "+itos(dst_size.width)+","+itos(dst_size.height));
-
- ep.step(TTR("Blitting Images"),sources.size()+2);
-
- bool blit_to_po2=tex_flags&Texture::FLAG_MIPMAPS;
- int atlas_w=dst_size.width;
- int atlas_h=dst_size.height;
- if (blit_to_po2) {
- atlas_w=nearest_power_of_2(dst_size.width);
- atlas_h=nearest_power_of_2(dst_size.height);
- }
- Image atlas;
- atlas.create(atlas_w,atlas_h,0,alpha?Image::FORMAT_RGBA8:Image::FORMAT_RGB8);
-
-
- atlases.resize(from->get_source_count());
-
- for(int i=0;i<sources.size();i++) {
-
- int x=dst_positions[i].x;
- int y=dst_positions[i].y;
-
- Size2 sz = Size2(sources[i].get_width(),sources[i].get_height());
-
- Rect2 region;
- Rect2 margin;
-
- if (crop && sz!=crops[i].size) {
- Rect2 rect = crops[i];
- rect.size=sz-rect.size;
- region=Rect2(x+border,y+border,crops[i].size.width,crops[i].size.height);
- margin=rect;
- atlas.blit_rect(sources[i],crops[i],Point2(x+border,y+border));
- } else {
- region=Rect2(x+border,y+border,sz.x,sz.y);
- atlas.blit_rect(sources[i],Rect2(0,0,sources[i].get_width(),sources[i].get_height()),Point2(x+border,y+border));
- }
-
- ERR_CONTINUE( !source_map.has(i) );
- for (List<int>::Element *E=source_map[i].front();E;E=E->next()) {
-
- String apath;
- String spath = from->get_source_path(E->get()).get_file();
-
- if (p_external) {
- apath = p_path.get_base_dir().plus_file(spath.get_basename()+"."+from->get_source_path(E->get()).md5_text()+".atlastex");
- } else {
- apath = p_path.get_base_dir().plus_file(spath.get_basename()+".atlastex");
- }
-
- Ref<AtlasTexture> at;
-
- if (ResourceCache::has(apath)) {
-
- at = Ref<AtlasTexture>( ResourceCache::get(apath)->cast_to<AtlasTexture>() );
- } else {
-
- at = Ref<AtlasTexture>( memnew( AtlasTexture ) );
-
- }
- at->set_region(region);
- at->set_margin(margin);
- at->set_path(apath);
- atlases[E->get()]=at;
-
- }
- }
- if (ResourceCache::has(p_path)) {
- texture = Ref<ImageTexture> ( ResourceCache::get(p_path)->cast_to<ImageTexture>() );
- } else {
- texture = Ref<ImageTexture>( memnew( ImageTexture ) );
- }
- texture->create_from_image(atlas,tex_flags);
-
- } else {
- ERR_FAIL_COND_V(from->get_source_count()!=1,ERR_INVALID_PARAMETER);
-
- String src_path = EditorImportPlugin::expand_source_path(from->get_source_path(0));
-
- if (ResourceCache::has(p_path)) {
- Resource *r = ResourceCache::get(p_path);
-
- texture = Ref<ImageTexture> ( r->cast_to<ImageTexture>() );
-
- Image img;
- Error err = img.load(src_path);
- ERR_FAIL_COND_V(err!=OK,ERR_CANT_OPEN);
- texture->create_from_image(img);
- } else {
- texture=ResourceLoader::load(src_path,"ImageTexture");
- }
-
- ERR_FAIL_COND_V(texture.is_null(),ERR_CANT_OPEN);
- if (!p_external)
- from->set_source_md5(0,FileAccess::get_md5(src_path));
-
- }
-
-
-
- if (!p_external) {
- from->set_editor(get_name());
- texture->set_path(p_path);
- texture->set_import_metadata(from);
- }
-
- if (atlas) {
-
- if (p_external) {
- //used by exporter
- Array rects;
- for(int i=0;i<atlases.size();i++) {
- rects.push_back(atlases[i]->get_region());
- rects.push_back(atlases[i]->get_margin());
- }
- from->set_option("rects",rects);
-
- } else {
- //used by importer
- for(int i=0;i<atlases.size();i++) {
- String apath = atlases[i]->get_path();
- atlases[i]->set_atlas(texture);
- Error err = ResourceSaver::save(apath,atlases[i]);
- if (err) {
- EditorNode::add_io_error(TTR("Couldn't save atlas image:")+" "+apath);
- return err;
- }
- //from->set_source_md5(i,FileAccess::get_md5(apath));
- }
- }
- }
-
- bool compress=false;
-#if 1
-
- _process_texture_data(texture,format,quality,flags,p_compr,tex_flags,shrink);
-#else
- if (format==IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS || format==IMAGE_FORMAT_COMPRESS_DISK_LOSSY) {
-
- Image image=texture->get_data();
- ERR_FAIL_COND_V(image.empty(),ERR_INVALID_DATA);
-
- bool has_alpha=image.detect_alpha();
- if (!has_alpha && image.get_format()==Image::FORMAT_RGBA8) {
-
- image.convert(Image::FORMAT_RGB8);
-
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_FIX_BORDER_ALPHA) {
-
- image.fix_alpha_edges();
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_PREMULT_ALPHA) {
-
- image.premultiply_alpha();
- }
-
- if (flags&IMAGE_FLAG_CONVERT_NORMAL_TO_XY) {
- image.normalmap_to_xy();
- }
-
- /*
- if ((image.get_format()==Image::FORMAT_RGB8 || image.get_format()==Image::FORMAT_RGBA8) && flags&IMAGE_FLAG_CONVERT_TO_LINEAR) {
-
- image.srgb_to_linear();
- }
- */
-
- if (shrink>1) {
-
- int orig_w=image.get_width();
- int orig_h=image.get_height();
- image.resize(orig_w/shrink,orig_h/shrink);
- texture->create_from_image(image,tex_flags);
- texture->set_size_override(Size2(orig_w,orig_h));
-
-
- } else {
-
- texture->create_from_image(image,tex_flags);
- }
-
-
- if (format==IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS) {
- texture->set_storage(ImageTexture::STORAGE_COMPRESS_LOSSLESS);
- } else {
- texture->set_storage(ImageTexture::STORAGE_COMPRESS_LOSSY);
- }
-
-
-
- texture->set_lossy_storage_quality(quality);
-
-
- } else {
-
-
- Image image=texture->get_data();
- ERR_FAIL_COND_V(image.empty(),ERR_INVALID_DATA);
-
-
- bool has_alpha=image.detect_alpha();
- if (!has_alpha && image.get_format()==Image::FORMAT_RGBA8) {
-
- image.convert(Image::FORMAT_RGB8);
-
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_FIX_BORDER_ALPHA) {
-
- image.fix_alpha_edges();
- }
-
- if (image.get_format()==Image::FORMAT_RGBA8 && flags&IMAGE_FLAG_PREMULT_ALPHA) {
-
- image.premultiply_alpha();
- }
-
- if (flags&IMAGE_FLAG_CONVERT_NORMAL_TO_XY) {
- image.normalmap_to_xy();
- }
-
- /*
- if ((image.get_format()==Image::FORMAT_RGB8 || image.get_format()==Image::FORMAT_RGBA8) && flags&IMAGE_FLAG_CONVERT_TO_LINEAR) {
-
- print_line("CONVERT BECAUSE: "+itos(flags));
- image.srgb_to_linear();
- }
- */
-
- int orig_w=image.get_width();
- int orig_h=image.get_height();
-
- if (shrink>1) {
- image.resize(orig_w/shrink,orig_h/shrink);
- texture->create_from_image(image,tex_flags);
- texture->set_size_override(Size2(orig_w,orig_h));
- }
-
- if (!(flags&IMAGE_FLAG_NO_MIPMAPS)) {
- image.generate_mipmaps();
-
- }
-
- if (format!=IMAGE_FORMAT_UNCOMPRESSED) {
-
- compress_image(p_compr,image,flags&IMAGE_FLAG_COMPRESS_EXTRA);
- }
-
-
- texture->create_from_image(image,tex_flags);
-
-
- if (shrink>1 || (format!=IMAGE_FORMAT_UNCOMPRESSED && (image.get_width()!=orig_w || image.get_height()!=orig_h))) {
- texture->set_size_override(Size2(orig_w,orig_h));
- }
-
- compress=true;
-
-
- }
-#endif
- uint32_t save_flags=0;
- if (compress)
- save_flags=ResourceSaver::FLAG_COMPRESS;
-
- Error err = ResourceSaver::save(p_path,texture,save_flags);
- if (err!=OK) {
- EditorNode::add_io_error(TTR("Couldn't save converted texture:")+" "+p_path);
- return err;
- }
-
- return OK;
-}
-
-Vector<uint8_t> EditorTextureImportPlugin::custom_export(const String& p_path, const Ref<EditorExportPlatform> &p_platform) {
-
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path);
-
- if (rimd.is_null()) {
-
- StringName group = EditorImportExport::get_singleton()->image_get_export_group(p_path);
-
- if (group!=StringName()) {
- //handled by export group
- rimd = Ref<ResourceImportMetadata>( memnew( ResourceImportMetadata ) );
-
- int group_format=0;
- float group_lossy_quality=EditorImportExport::get_singleton()->image_export_group_get_lossy_quality(group);
- int group_shrink=EditorImportExport::get_singleton()->image_export_group_get_shrink(group);
- group_shrink*=EditorImportExport::get_singleton()->get_export_image_shrink();
-
- switch(EditorImportExport::get_singleton()->image_export_group_get_image_action(group)) {
- case EditorImportExport::IMAGE_ACTION_NONE: {
-
- switch(EditorImportExport::get_singleton()->get_export_image_action()) {
- case EditorImportExport::IMAGE_ACTION_NONE: {
-
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS; //?
-
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_DISK: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY;
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_RAM: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM;
- } break; //use default
- }
-
- group_lossy_quality=EditorImportExport::get_singleton()->get_export_image_quality();
-
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_DISK: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY;
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_COMPRESS_RAM: {
- group_format=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM;
- } break; //use default
- case EditorImportExport::IMAGE_ACTION_KEEP: {
- return Vector<uint8_t>();
- } break; //use default
- }
-
- String validated_path=EditorImportPlugin::validate_source_path(p_path);
-
- int flags=texture_flags_to_export_flags(ResourceFormatLoaderImage::load_image_flags(validated_path));
- flags|=IMAGE_FLAG_FIX_BORDER_ALPHA;
-
- print_line("group format"+itos(group_format));
- rimd->set_option("format",group_format);
- rimd->set_option("flags",flags);
- rimd->set_option("quality",group_lossy_quality);
- rimd->set_option("atlas",false);
- rimd->set_option("shrink",group_shrink);
- rimd->add_source(validated_path,FileAccess::get_md5(p_path));
-
- } else if (EditorImportExport::get_singleton()->get_image_formats().has(p_path.get_extension().to_lower()) && EditorImportExport::get_singleton()->get_export_image_action()!=EditorImportExport::IMAGE_ACTION_NONE) {
- //handled by general image export settings
-
- rimd = Ref<ResourceImportMetadata>( memnew( ResourceImportMetadata ) );
-
- switch(EditorImportExport::get_singleton()->get_export_image_action()) {
- case EditorImportExport::IMAGE_ACTION_COMPRESS_DISK: rimd->set_option("format",IMAGE_FORMAT_COMPRESS_DISK_LOSSY); break;
- case EditorImportExport::IMAGE_ACTION_COMPRESS_RAM: rimd->set_option("format",IMAGE_FORMAT_COMPRESS_RAM); break;
- }
-
- String validated_path=EditorImportPlugin::validate_source_path(p_path);
-
- int flags=texture_flags_to_export_flags(ResourceFormatLoaderImage::load_image_flags(validated_path));
- flags|=IMAGE_FLAG_FIX_BORDER_ALPHA;
-
- rimd->set_option("shrink",EditorImportExport::get_singleton()->get_export_image_shrink());
- rimd->set_option("flags",flags);
- rimd->set_option("quality",EditorImportExport::get_singleton()->get_export_image_quality());
- rimd->set_option("atlas",false);
- rimd->add_source(validated_path,FileAccess::get_md5(p_path));
-
- } else {
- return Vector<uint8_t>();
- }
- }
-
- int fmt = rimd->get_option("format");
-
- if (fmt!=IMAGE_FORMAT_COMPRESS_RAM && fmt!=IMAGE_FORMAT_COMPRESS_DISK_LOSSY) {
- print_line("no compress ram or lossy");
- return Vector<uint8_t>(); //pointless to do anything, since no need to reconvert
- }
-
- uint32_t flags = rimd->get_option("flags");
- uint8_t shrink = rimd->has_option("shrink") ? rimd->get_option("shrink"): Variant(1);
- uint8_t format = rimd->get_option("format");
- uint8_t comp = (format==EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM)?uint8_t(p_platform->get_image_compression()):uint8_t(255);
-
- MD5_CTX ctx;
- uint8_t f4[4];
- encode_uint32(flags,&f4[0]);
- MD5Init(&ctx);
- String gp = ProjectSettings::get_singleton()->globalize_path(p_path);
- CharString cs = gp.utf8();
- MD5Update(&ctx,(unsigned char*)cs.get_data(),cs.length());
- MD5Update(&ctx,f4,4);
- MD5Update(&ctx,&format,1);
- MD5Update(&ctx,&comp,1);
- MD5Update(&ctx,&shrink,1);
- MD5Final(&ctx);
-
-
-
- uint64_t sd=0;
- String smd5;
-
- String md5 = String::md5(ctx.digest);
- print_line(p_path+" MD5: "+md5+" FLAGS: "+itos(flags));
-
- String tmp_path = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp/");
-
- bool valid=false;
- {
- //if existing, make sure it's valid
- FileAccessRef f = FileAccess::open(tmp_path+"imgexp-"+md5+".txt",FileAccess::READ);
- if (f) {
-
- uint64_t d = f->get_line().strip_edges().to_int64();
- sd = FileAccess::get_modified_time(p_path);
-
- if (d==sd) {
- valid=true;
- } else {
- String cmd5 = f->get_line().strip_edges();
- smd5 = FileAccess::get_md5(p_path);
- if (cmd5==smd5) {
- valid=true;
- }
- }
-
-
- }
- }
-
- if (!valid) {
- //cache failed, convert
- Error err = import2(tmp_path+"imgexp-"+md5+".tex",rimd,p_platform->get_image_compression(),true);
- ERR_FAIL_COND_V(err!=OK,Vector<uint8_t>());
- FileAccessRef f = FileAccess::open(tmp_path+"imgexp-"+md5+".txt",FileAccess::WRITE);
-
- if (sd==0)
- sd = FileAccess::get_modified_time(p_path);
- if (smd5==String())
- smd5 = FileAccess::get_md5(p_path);
-
- f->store_line(String::num(sd));
- f->store_line(smd5);
- f->store_line(gp); //source path for reference
- }
-
-
- Vector<uint8_t> ret;
- FileAccessRef f = FileAccess::open(tmp_path+"imgexp-"+md5+".tex",FileAccess::READ);
- ERR_FAIL_COND_V(!f,ret);
-
- ret.resize(f->get_len());
- f->get_buffer(ret.ptr(),ret.size());
-
- return ret;
-}
-
-uint32_t EditorTextureImportPlugin::texture_flags_to_export_flags(uint32_t p_tex_flags) const {
-
- uint32_t flags=0;
-
- if (!(p_tex_flags&Texture::FLAG_MIPMAPS)) {
- flags|=IMAGE_FLAG_NO_MIPMAPS;
- }
- if (p_tex_flags&Texture::FLAG_REPEAT) {
- flags|=IMAGE_FLAG_REPEAT;
- }
- if (p_tex_flags&Texture::FLAG_FILTER) {
- flags|=IMAGE_FLAG_FILTER;
- }
- if (p_tex_flags&Texture::FLAG_ANISOTROPIC_FILTER) {
- flags|=IMAGE_FLAG_USE_ANISOTROPY;
- }
- if (p_tex_flags&Texture::FLAG_CONVERT_TO_LINEAR) {
- flags|=IMAGE_FLAG_CONVERT_TO_LINEAR;
- }
- /* // no correspondence yet
- if (p_tex_flags&Texture::TEXTURE_FLAG_MIRRORED_REPEAT) {
- flags|=;
- }*/
-
- return flags;
-}
-
-void EditorTextureImportPlugin::import_from_drop(const Vector<String>& p_drop,const String& p_dest_path) {
-
- Vector<String> valid;
-
- List<String> valid_extensions;
- ImageLoader::get_recognized_extensions(&valid_extensions);
- for(int i=0;i<p_drop.size();i++) {
-
- String extension=p_drop[i].get_extension().to_lower();
-
- for (List<String>::Element *E=valid_extensions.front();E;E=E->next()) {
-
- if (E->get()==extension) {
- valid.push_back(p_drop[i]);
- break;
- }
- }
- }
-
- if (valid.size()) {
- dialog->popup_import();
- dialog->setup_multiple_import_3d(valid,p_dest_path);
- }
-}
-
-void EditorTextureImportPlugin::reimport_multiple_files(const Vector<String>& p_list) {
-
- Vector<String> valid;
-
-
- for(int i=0;i<p_list.size();i++) {
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_list[i]);
- String type = rimd->get_editor();
- if (type=="texture" || type.begins_with("texture_")) {
-
- if ((rimd->has_option("atlas") && rimd->get_option("atlas")) || (rimd->has_option("large") && rimd->get_option("large"))) {
- continue;
- }
-
- valid.push_back(p_list[i]);
- }
- }
-
- if (valid.size()) {
-
- dialog->popup_import(valid[0]);
-
- Vector<String> sources;
- for(int i=0;i<valid.size();i++) {
- int idx;
- EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(valid[i],&idx);
- if (efsd) {
- for(int j=0;j<efsd->get_source_count(idx);j++) {
- String file = expand_source_path(efsd->get_source_file(idx,j));
- if (sources.find(file)==-1) {
- sources.push_back(file);
- }
-
- }
- }
- }
-
- if (sources.size()) {
-
- dialog->add_sources_and_dest(sources,valid[0].get_base_dir());
- }
- }
-}
-
-bool EditorTextureImportPlugin::can_reimport_multiple_files() const {
-
- return true;
-
-}
-
-
-
-EditorTextureImportPlugin *EditorTextureImportPlugin::singleton=NULL;
-
-EditorTextureImportPlugin::EditorTextureImportPlugin(EditorNode *p_editor) {
-
- singleton=this;
- editor=p_editor;
- dialog = memnew( EditorTextureImportDialog(this) );
- editor->get_gui_base()->add_child(dialog);
-
-}
-
-////////////////////////////
-
-
- Vector<uint8_t> EditorTextureExportPlugin::custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform) {
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path);
-
- if (rimd.is_valid()) {
-
- if (rimd->get_editor()!="") {
- int compression = rimd->get_option("format");
- if (compression!=EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM)
- return Vector<uint8_t>(); //only useful for RAM compression to reconvert
- Ref<EditorImportPlugin> pl = EditorImportExport::get_singleton()->get_import_plugin_by_name(rimd->get_editor());
- if (pl.is_valid()) {
- Vector<uint8_t> ce = pl->custom_export(p_path,p_platform);
- if (ce.size())
- return ce;
- }
- }
- } else if (EditorImportExport::get_singleton()->image_get_export_group(p_path)) {
-
-
- Ref<EditorImportPlugin> pl = EditorImportExport::get_singleton()->get_import_plugin_by_name("texture");
- if (pl.is_valid()) {
- Vector<uint8_t> ce = pl->custom_export(p_path,p_platform);
- if (ce.size()) {
- p_path=p_path.get_basename()+".converted.tex";
- return ce;
- }
- }
-
- } else if (EditorImportExport::get_singleton()->get_export_image_action()!=EditorImportExport::IMAGE_ACTION_NONE){
-
- String xt = p_path.get_extension().to_lower();
- if (EditorImportExport::get_singleton()->get_image_formats().has(xt)) { //should check for more I guess?
-
- Ref<EditorImportPlugin> pl = EditorImportExport::get_singleton()->get_import_plugin_by_name("texture");
- if (pl.is_valid()) {
- Vector<uint8_t> ce = pl->custom_export(p_path,p_platform);
- if (ce.size()) {
- p_path=p_path.get_basename()+".converted.tex";
- return ce;
- }
- }
- }
- }
-
- return Vector<uint8_t>();
-}
-
-EditorTextureExportPlugin::EditorTextureExportPlugin() {
-
-
-}
-#endif
diff --git a/editor/io_plugins/editor_texture_import_plugin.h b/editor/io_plugins/editor_texture_import_plugin.h
deleted file mode 100644
index ea09227713..0000000000
--- a/editor/io_plugins/editor_texture_import_plugin.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*************************************************************************/
-/* editor_texture_import_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_TEXTURE_IMPORT_PLUGIN_H
-#define EDITOR_TEXTURE_IMPORT_PLUGIN_H
-
-#if 0
-#include "editor/editor_dir_dialog.h"
-#include "editor/editor_file_system.h"
-#include "editor/editor_import_export.h"
-#include "scene/gui/dialogs.h"
-#include "scene/gui/file_dialog.h"
-#include "scene/gui/label.h"
-#include "scene/gui/line_edit.h"
-#include "scene/gui/option_button.h"
-#include "scene/gui/progress_bar.h"
-#include "scene/gui/slider.h"
-#include "scene/gui/spin_box.h"
-#include "scene/gui/tree.h"
-
-
-
-class EditorNode;
-class EditorTextureImportDialog;
-
-class EditorTextureImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorTextureImportPlugin,EditorImportPlugin);
-public:
-
-
- enum Mode {
- MODE_TEXTURE_2D,
- MODE_TEXTURE_3D,
- MODE_ATLAS,
- MODE_LARGE,
- MODE_MAX
- };
-
-
-
-private:
-
- EditorNode *editor;
- EditorTextureImportDialog *dialog;
- static EditorTextureImportPlugin *singleton;
- //used by other importers such as mesh
-
- Error _process_texture_data(Ref<ImageTexture> &texture, int format, float quality, int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,float shrink);
- void compress_image(EditorExportPlatform::ImageCompression p_mode,Image& image,bool p_smaller);
-
- uint32_t texture_flags_to_export_flags(uint32_t p_tex_flags) const;
-public:
-
-
- static EditorTextureImportPlugin *get_singleton() { return singleton; }
-
- enum ImageFormat {
-
- IMAGE_FORMAT_UNCOMPRESSED,
- IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS,
- IMAGE_FORMAT_COMPRESS_DISK_LOSSY,
- IMAGE_FORMAT_COMPRESS_RAM,
- };
-
- enum ImageFlags {
-
- IMAGE_FLAG_STREAM_FORMAT=1,
- IMAGE_FLAG_FIX_BORDER_ALPHA=2,
- IMAGE_FLAG_ALPHA_BIT=4, //hint for compressions that use a bit for alpha
- IMAGE_FLAG_COMPRESS_EXTRA=8, // used for pvrtc2
- IMAGE_FLAG_NO_MIPMAPS=16, //normal for 2D games
- IMAGE_FLAG_REPEAT=32, //usually disabled in 2D
- IMAGE_FLAG_FILTER=64, //almost always enabled
- IMAGE_FLAG_PREMULT_ALPHA=128,//almost always enabled
- IMAGE_FLAG_CONVERT_TO_LINEAR=256, //convert image to linear
- IMAGE_FLAG_CONVERT_NORMAL_TO_XY=512, //convert image to linear
- IMAGE_FLAG_USE_ANISOTROPY=1024, //convert image to linear
- };
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from="");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
- virtual Error import2(const String& p_path, const Ref<ResourceImportMetadata>& p_from,EditorExportPlatform::ImageCompression p_compr, bool p_external=false);
- virtual Vector<uint8_t> custom_export(const String& p_path,const Ref<EditorExportPlatform> &p_platform);
-
- virtual void import_from_drop(const Vector<String>& p_drop,const String& p_dest_path);
- virtual void reimport_multiple_files(const Vector<String>& p_list);
- virtual bool can_reimport_multiple_files() const;
-
- EditorTextureImportPlugin(EditorNode* p_editor=NULL);
-};
-
-
-class EditorTextureExportPlugin : public EditorExportPlugin {
-
- GDCLASS( EditorTextureExportPlugin, EditorExportPlugin);
-
-
-public:
-
- virtual Vector<uint8_t> custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform);
- EditorTextureExportPlugin();
-};
-
-class EditorImportTextureOptions : public VBoxContainer {
-
- GDCLASS( EditorImportTextureOptions, VBoxContainer );
-
-
- OptionButton *format;
- VBoxContainer *quality_vb;
- HSlider *quality;
- Tree *flags;
- Vector<TreeItem*> items;
-
-
- bool updating;
-
- void _changedp(int p_value);
- void _changed();
-
-
-protected:
- static void _bind_methods();
- void _notification(int p_what);
-
-public:
-
-
-
- void set_format(EditorTextureImportPlugin::ImageFormat p_format);
- EditorTextureImportPlugin::ImageFormat get_format() const;
-
- void set_flags(uint32_t p_flags);
- uint32_t get_flags() const;
-
- void set_quality(float p_quality);
- float get_quality() const;
-
- void show_2d_notice();
-
- EditorImportTextureOptions();
-
-
-};
-#endif // EDITOR_TEXTURE_IMPORT_PLUGIN_H
-#endif
diff --git a/editor/io_plugins/editor_translation_import_plugin.cpp b/editor/io_plugins/editor_translation_import_plugin.cpp
deleted file mode 100644
index 5b15b94006..0000000000
--- a/editor/io_plugins/editor_translation_import_plugin.cpp
+++ /dev/null
@@ -1,480 +0,0 @@
-/*************************************************************************/
-/* editor_translation_import_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "editor_translation_import_plugin.h"
-
-#if 0
-#include "editor/editor_dir_dialog.h"
-#include "editor/editor_node.h"
-#include "editor/property_editor.h"
-#include "scene/gui/file_dialog.h"
-//#include "scene/resources/sample.h"
-#include "compressed_translation.h"
-#include "editor/project_settings.h"
-#include "io/resource_saver.h"
-#include "os/file_access.h"
-#include "translation.h"
-
-
-class EditorTranslationImportDialog : public ConfirmationDialog {
-
- GDCLASS(EditorTranslationImportDialog,ConfirmationDialog);
-
- EditorTranslationImportPlugin *plugin;
-
- LineEdit *import_path;
- LineEdit *save_path;
- EditorFileDialog *file_select;
- CheckButton *ignore_first;
- CheckButton *compress;
- CheckButton *add_to_project;
- EditorDirDialog *save_select;
- ConfirmationDialog *error_dialog;
- Vector<TreeItem*> items;
- Tree *columns;
-
-public:
-
- void _choose_file(const String& p_path) {
-
- import_path->set_text(p_path);
- FileAccess *f = FileAccess::open(p_path,FileAccess::READ);
- if (!f) {
-
- error_dialog->set_text(TTR("Invalid source!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
-
- }
-
- Vector<String> csvh = f->get_csv_line();
- memdelete(f);
-
- if (csvh.size()<2) {
-
- error_dialog->set_text(TTR("Invalid translation source!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- return;
-
- }
-
- columns->clear();
- columns->set_columns(2);
- TreeItem *root = columns->create_item();
- columns->set_hide_root(true);
- columns->set_column_titles_visible(true);
- columns->set_column_title(0,TTR("Column"));
- columns->set_column_title(1,TTR("Language"));
- Vector<String> langs = TranslationServer::get_all_locales();
- Vector<String> names = TranslationServer::get_all_locale_names();
- if (csvh[0]=="")
- ignore_first->set_pressed(true);
-
-
- items.clear();
-
- for(int i=1;i<csvh.size();i++) {
-
- TreeItem *ti = columns->create_item(root);
-
- ti->set_editable(0,true);
- ti->set_selectable(0,false);
- ti->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
- ti->set_checked(0,true);
- ti->set_text(0,itos(i));
- items.push_back(ti);
-
- String lname = csvh[i].to_lower().strip_edges();
- int idx=-1;
- String hint;
- for(int j=0;j<langs.size();j++) {
-
- if (langs[j]==lname.substr(0,langs[j].length()).to_lower()) {
- idx=j;
- }
- if (j>0) {
- hint+=",";
- }
- hint+=names[j].replace(","," ");
- }
-
- ti->set_cell_mode(1,TreeItem::CELL_MODE_RANGE);
- ti->set_text(1,hint);
- ti->set_editable(1,true);
-
-
- if (idx!=-1) {
- ignore_first->set_pressed(true);
- ti->set_range(1,idx);
- } else {
-
- //not found, maybe used stupid name
- if (lname.begins_with("br")) //brazilian
- ti->set_range(1,langs.find("pt"));
- else if (lname.begins_with("ch")) //chinese
- ti->set_range(1,langs.find("zh"));
- else if (lname.begins_with("sp")) //spanish
- ti->set_range(1,langs.find("es"));
- else if (lname.begins_with("kr"))// kprean
- ti->set_range(1,langs.find("ko"));
- else if (i==0)
- ti->set_range(1,langs.find("en"));
- else
- ti->set_range(1,langs.find("es"));
- }
-
- ti->set_metadata(1,names[ti->get_range(1)]);
- }
-
-
-
- }
- void _choose_save_dir(const String& p_path) {
-
- save_path->set_text(p_path);
- }
-
- void _browse() {
-
- file_select->popup_centered_ratio();
- }
-
- void _browse_target() {
-
- save_select->popup_centered_ratio();
-
- }
-
-
- void popup_import(const String& p_from) {
-
- popup_centered(Size2(400,400)*EDSCALE);
-
- if (p_from!="") {
-
- Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_from);
- ERR_FAIL_COND(!rimd.is_valid());
- ERR_FAIL_COND(rimd->get_source_count()!=1);
- _choose_file(EditorImportPlugin::expand_source_path(rimd->get_source_path(0)));
- _choose_save_dir(p_from.get_base_dir());
- String locale = rimd->get_option("locale");
- bool skip_first=rimd->get_option("skip_first");
- bool compressed = rimd->get_option("compress");
-
- int idx=-1;
-
- for(int i=0;i<items.size();i++) {
-
- String il = TranslationServer::get_all_locales()[items[i]->get_range(1)];
- if (il==locale) {
- idx=i;
- break;
- }
- }
-
- if (idx!=-1) {
- idx=rimd->get_option("index");
- }
-
- for(int i=0;i<items.size();i++) {
-
- if (i==idx) {
-
- Vector<String> locs = TranslationServer::get_all_locales();
- for(int j=0;j<locs.size();j++) {
- if (locs[j]==locale) {
- items[i]->set_range(1,j);
- }
-
- }
- items[i]->set_checked(0,true);
- } else {
- items[i]->set_checked(0,false);
-
- }
- }
-
- ignore_first->set_pressed(skip_first);
- compress->set_pressed(compressed);
-
-
-
- }
-
- }
-
-
- void _import() {
-
-
- if (items.size()==0) {
- error_dialog->set_text(TTR("No items to import!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- }
-
- if (!save_path->get_text().begins_with("res://")) {
- error_dialog->set_text(TTR("No target path!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- }
-
- EditorProgress progress("import_xl",TTR("Import Translations"),items.size());
- for(int i=0;i<items.size();i++) {
-
- progress.step(items[i]->get_metadata(1),i);
- if (!items[i]->is_checked(0))
- continue;
-
- String locale = TranslationServer::get_all_locales()[items[i]->get_range(1)];
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
- imd->add_source(EditorImportPlugin::validate_source_path(import_path->get_text()));
- imd->set_option("locale",locale);
- imd->set_option("index",i);
- imd->set_option("skip_first",ignore_first->is_pressed());
- imd->set_option("compress",compress->is_pressed());
-
- String savefile = save_path->get_text().plus_file(import_path->get_text().get_file().get_basename()+"."+locale+".translation");
- Error err = plugin->import(savefile,imd);
- if (err!=OK) {
- error_dialog->set_text(TTR("Couldn't import!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
- } else if (add_to_project->is_pressed()) {
-
- ProjectSettings::get_singleton()->add_translation(savefile);
- }
- }
- hide();
-
- }
-
-
- void _notification(int p_what) {
-
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
-
- }
- }
-
- static void _bind_methods() {
-
-
- ClassDB::bind_method("_choose_file",&EditorTranslationImportDialog::_choose_file);
- ClassDB::bind_method("_choose_save_dir",&EditorTranslationImportDialog::_choose_save_dir);
- ClassDB::bind_method("_import",&EditorTranslationImportDialog::_import);
- ClassDB::bind_method("_browse",&EditorTranslationImportDialog::_browse);
- ClassDB::bind_method("_browse_target",&EditorTranslationImportDialog::_browse_target);
- //ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
- }
-
- EditorTranslationImportDialog(EditorTranslationImportPlugin *p_plugin) {
-
- plugin=p_plugin;
-
-
- set_title(TTR("Import Translation"));
-
- VBoxContainer *vbc = memnew( VBoxContainer );
- add_child(vbc);
- //set_child_rect(vbc);
-
-
-
- VBoxContainer *csvb = memnew( VBoxContainer );
-
- HBoxContainer *hbc = memnew( HBoxContainer );
- csvb->add_child(hbc);
- vbc->add_margin_child(TTR("Source CSV:"),csvb);
-
- import_path = memnew( LineEdit );
- import_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(import_path);
- ignore_first = memnew( CheckButton );
- ignore_first->set_text(TTR("Ignore First Row"));
- csvb->add_child(ignore_first);
-
- Button * import_choose = memnew( Button );
- import_choose->set_text(" .. ");
- hbc->add_child(import_choose);
-
- import_choose->connect("pressed", this,"_browse");
-
- VBoxContainer *tcomp = memnew( VBoxContainer);
- hbc = memnew( HBoxContainer );
- tcomp->add_child(hbc);
- vbc->add_margin_child(TTR("Target Path:"),tcomp);
-
- save_path = memnew( LineEdit );
- save_path->set_h_size_flags(SIZE_EXPAND_FILL);
- hbc->add_child(save_path);
-
- Button * save_choose = memnew( Button );
- save_choose->set_text(" .. ");
- hbc->add_child(save_choose);
-
- save_choose->connect("pressed", this,"_browse_target");
-
- compress = memnew( CheckButton);
- compress->set_pressed(true);
- compress->set_text(TTR("Compress"));
- tcomp->add_child(compress);
-
- add_to_project = memnew( CheckButton);
- add_to_project->set_pressed(true);
- add_to_project->set_text(TTR("Add to Project (project.godot)"));
- tcomp->add_child(add_to_project);
-
- file_select = memnew(EditorFileDialog);
- file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
- add_child(file_select);
- file_select->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- file_select->connect("file_selected", this,"_choose_file");
- file_select->add_filter("*.csv ; Translation CSV");
- save_select = memnew( EditorDirDialog );
- add_child(save_select);
-
- //save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
- save_select->connect("dir_selected", this,"_choose_save_dir");
-
- get_ok()->connect("pressed", this,"_import");
- get_ok()->set_text(TTR("Import"));
-
-
- error_dialog = memnew ( ConfirmationDialog );
- add_child(error_dialog);
- error_dialog->get_ok()->set_text(TTR("Accept"));
- //error_dialog->get_cancel()->hide();
-
- set_hide_on_ok(false);
-
- columns = memnew( Tree );
- vbc->add_margin_child(TTR("Import Languages:"),columns,true);
- }
-
- ~EditorTranslationImportDialog() {
-
- }
-
-};
-
-
-String EditorTranslationImportPlugin::get_name() const {
-
- return "translation";
-}
-String EditorTranslationImportPlugin::get_visible_name() const {
-
- return TTR("Translation");
-}
-void EditorTranslationImportPlugin::import_dialog(const String& p_from) {
-
- dialog->popup_import(p_from);
-}
-
-
-
-void EditorTranslationImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
-
- for(int i=0;i<p_drop.size();i++) {
- String ext = p_drop[i].get_extension().to_lower();
-
- if (ext=="csv") {
-
- import_dialog();
- dialog->_choose_file(p_drop[i]);
- dialog->_choose_save_dir(p_dest_path);
- break;
- }
- }
-
-
-}
-
-Error EditorTranslationImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from) {
-
- Ref<ResourceImportMetadata> from = p_from;
- ERR_FAIL_COND_V( from->get_source_count()!=1, ERR_INVALID_PARAMETER);
-
- String source = EditorImportPlugin::expand_source_path( from->get_source_path(0) );
-
- FileAccessRef f = FileAccess::open(source,FileAccess::READ);
-
- ERR_FAIL_COND_V( !f, ERR_INVALID_PARAMETER );
-
- bool skip_first = from->get_option("skip_first");
- int index = from->get_option("index");
- index+=1;
- String locale = from->get_option("locale");
-
- Ref<Translation> translation = memnew( Translation );
-
- translation->set_locale( locale );
-
- Vector<String> line = f->get_csv_line();
-
- while(line.size()>1) {
-
- if (!skip_first) {
- ERR_FAIL_INDEX_V(index,line.size(),ERR_INVALID_DATA );
- translation->add_message(line[0].strip_edges(),line[index]);
-
- } else {
-
- skip_first=false;
- }
-
- line = f->get_csv_line();
- }
-
- from->set_source_md5(0,FileAccess::get_md5(source));
- from->set_editor(get_name());
-
- String dst_path = p_path;
-
- if (from->get_option("compress")) {
-
- Ref<PHashTranslation> cxl = memnew( PHashTranslation );
- cxl->generate( translation );
- translation=cxl;
- }
-
- translation->set_import_metadata(from);
- return ResourceSaver::save(dst_path,translation);
-
-}
-
-
-EditorTranslationImportPlugin::EditorTranslationImportPlugin(EditorNode* p_editor) {
-
- dialog = memnew(EditorTranslationImportDialog(this));
- p_editor->get_gui_base()->add_child(dialog);
-}
-
-#endif
diff --git a/editor/io_plugins/editor_translation_import_plugin.h b/editor/io_plugins/editor_translation_import_plugin.h
deleted file mode 100644
index 78335b531d..0000000000
--- a/editor/io_plugins/editor_translation_import_plugin.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*************************************************************************/
-/* editor_translation_import_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef EDITOR_TRANSLATION_IMPORT_PLUGIN_H
-#define EDITOR_TRANSLATION_IMPORT_PLUGIN_H
-
-#include "editor/editor_export.h"
-#include "scene/resources/font.h"
-#if 0
-class EditorNode;
-class EditorTranslationImportDialog;
-
-class EditorTranslationImportPlugin : public EditorImportPlugin {
-
- GDCLASS(EditorTranslationImportPlugin,EditorImportPlugin);
-
- EditorTranslationImportDialog *dialog;
-public:
-
- virtual String get_name() const;
- virtual String get_visible_name() const;
- virtual void import_dialog(const String& p_from="");
- virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from);
- void import_from_drop(const Vector<String>& p_drop, const String &p_dest_path);
-
-
- EditorTranslationImportPlugin(EditorNode* p_editor);
-};
-
-#endif
-#endif // EDITOR_TRANSLATION_IMPORT_PLUGIN_H
diff --git a/editor/multi_node_edit.cpp b/editor/multi_node_edit.cpp
index a0f7b1e9dd..df1d7ff3d1 100644
--- a/editor/multi_node_edit.cpp
+++ b/editor/multi_node_edit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/multi_node_edit.h b/editor/multi_node_edit.h
index 3ffb0e205e..5abe7f6438 100644
--- a/editor/multi_node_edit.h
+++ b/editor/multi_node_edit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp
index 0f3f4b96f5..bfbb2dc3d3 100644
--- a/editor/node_dock.cpp
+++ b/editor/node_dock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -63,6 +63,11 @@ void NodeDock::_notification(int p_what) {
NodeDock *NodeDock::singleton = NULL;
+void NodeDock::update_lists() {
+
+ connections->update_tree();
+}
+
void NodeDock::set_node(Node *p_node) {
connections->set_node(p_node);
diff --git a/editor/node_dock.h b/editor/node_dock.h
index 0af65719c9..7c4f6bbecc 100644
--- a/editor/node_dock.h
+++ b/editor/node_dock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -59,6 +59,8 @@ public:
void show_groups();
void show_connections();
+ void update_lists();
+
NodeDock();
};
diff --git a/editor/output_strings.cpp b/editor/output_strings.cpp
index eb2fc62f03..213cd47d01 100644
--- a/editor/output_strings.cpp
+++ b/editor/output_strings.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,15 +38,15 @@ void OutputStrings::update_scrollbars() {
v_scroll->set_anchor(MARGIN_RIGHT, ANCHOR_END);
v_scroll->set_anchor(MARGIN_BOTTOM, ANCHOR_END);
- v_scroll->set_begin(Point2(vmin.width, 0));
+ v_scroll->set_begin(Point2(-vmin.width, 0));
v_scroll->set_end(Point2(0, 0));
h_scroll->set_anchor(MARGIN_RIGHT, ANCHOR_END);
h_scroll->set_anchor(MARGIN_TOP, ANCHOR_END);
h_scroll->set_anchor(MARGIN_BOTTOM, ANCHOR_END);
- h_scroll->set_begin(Point2(0, hmin.y));
- h_scroll->set_end(Point2(vmin.x, 0));
+ h_scroll->set_begin(Point2(0, -hmin.y));
+ h_scroll->set_end(Point2(-vmin.x, 0));
margin.y = hmin.y;
margin.x = vmin.x;
diff --git a/editor/output_strings.h b/editor/output_strings.h
index aeaad35c0c..8482e55752 100644
--- a/editor/output_strings.h
+++ b/editor/output_strings.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/pane_drag.cpp b/editor/pane_drag.cpp
index 22b306f941..33db2307b5 100644
--- a/editor/pane_drag.cpp
+++ b/editor/pane_drag.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/pane_drag.h b/editor/pane_drag.h
index 0be017b8f7..55372198d1 100644
--- a/editor/pane_drag.h
+++ b/editor/pane_drag.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index c4e79bf263..cc7fc57cde 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -367,10 +367,6 @@ void AnimationPlayerEditor::_animation_save_in_path(const Ref<Resource> &p_resou
int flg = 0;
if (EditorSettings::get_singleton()->get("filesystem/on_save/compress_binary_resources"))
flg |= ResourceSaver::FLAG_COMPRESS;
- /*
- if (EditorSettings::get_singleton()->get("filesystem/on_save/save_paths_as_relative"))
- flg |= ResourceSaver::FLAG_RELATIVE_PATHS;
- */
String path = ProjectSettings::get_singleton()->localize_path(p_path);
Error err = ResourceSaver::save(path, p_resource, flg | ResourceSaver::FLAG_REPLACE_SUBRESOURCE_PATHS);
@@ -380,7 +376,6 @@ void AnimationPlayerEditor::_animation_save_in_path(const Ref<Resource> &p_resou
accept->popup_centered_minsize();
return;
}
- //EditorFileSystem::get_singleton()->update_file(path,p_resource->get_type());
((Resource *)p_resource.ptr())->set_path(path);
editor->emit_signal("resource_saved", p_resource);
@@ -656,8 +651,8 @@ void AnimationPlayerEditor::set_state(const Dictionary &p_state) {
return;
Node *n = EditorNode::get_singleton()->get_edited_scene()->get_node(p_state["player"]);
- if (n && n->cast_to<AnimationPlayer>() && EditorNode::get_singleton()->get_editor_selection()->is_selected(n)) {
- player = n->cast_to<AnimationPlayer>();
+ if (Object::cast_to<AnimationPlayer>(n) && EditorNode::get_singleton()->get_editor_selection()->is_selected(n)) {
+ player = Object::cast_to<AnimationPlayer>(n);
_update_player();
show();
set_process(true);
@@ -737,9 +732,9 @@ void AnimationPlayerEditor::_dialog_action(String p_file) {
if (current != "") {
Ref<Animation> anim = player->get_animation(current);
- ERR_FAIL_COND(!anim->cast_to<Resource>())
+ ERR_FAIL_COND(!Object::cast_to<Resource>(*anim))
- RES current_res = RES(anim->cast_to<Resource>());
+ RES current_res = RES(Object::cast_to<Resource>(*anim));
_animation_save_in_path(current_res, p_file);
}
@@ -970,71 +965,6 @@ void AnimationPlayerEditor::_list_changed() {
if (is_visible_in_tree())
_update_player();
}
-#if 0
-void AnimationPlayerEditor::_editor_store() {
-
- if (animation->get_item_count()==0)
- return;
- String current = animation->get_item_text(animation->get_selected());
- Ref<Animation> anim = player->get_animation(current);
-
- if (key_editor->get_current_animation()==anim)
- return; //already there
-
-
- undo_redo->create_action("Store anim in editor");
- undo_redo->add_do_method(key_editor,"set_animation",anim);
- undo_redo->add_undo_method(key_editor,"remove_animation",anim);
- undo_redo->commit_action();
-}
-
-void AnimationPlayerEditor::_editor_load(){
-
- Ref<Animation> anim = key_editor->get_current_animation();
- if (anim.is_null())
- return;
-
- String existing = player->find_animation(anim);
- if (existing!="") {
- _select_anim_by_name(existing);
- return; //already has
- }
-
- int count=1;
- String base=anim->get_name();
- bool noname=false;
- if (base=="") {
- base="New Anim";
- noname=true;
- }
-
- while(true) {
- String attempt = base;
- if (count>1)
- attempt+=" ("+itos(count)+")";
- if (player->has_animation(attempt)) {
- count++;
- continue;
- }
- base=attempt;
- break;
- }
-
- if (noname)
- anim->set_name(base);
-
- undo_redo->create_action("Add Animation From Editor");
- undo_redo->add_do_method(player,"add_animation",base,anim);
- undo_redo->add_undo_method(player,"remove_animation",base);
- undo_redo->add_do_method(this,"_animation_player_changed",player);
- undo_redo->add_undo_method(this,"_animation_player_changed",player);
- undo_redo->commit_action();
-
- _select_anim_by_name(base);
-
-
-}
-#endif
void AnimationPlayerEditor::_animation_key_editor_anim_len_changed(float p_len) {
@@ -1246,7 +1176,7 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) {
set_focus_mode(FOCUS_ALL);
player = NULL;
- add_style_override("panel", get_stylebox("panel", "Panel"));
+ add_style_override("panel", editor->get_gui_base()->get_stylebox("panel", "Panel"));
Label *l;
@@ -1395,7 +1325,6 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) {
error_dialog = memnew(ConfirmationDialog);
error_dialog->get_ok()->set_text(TTR("Close"));
- //error_dialog->get_cancel()->set_text("Close");
error_dialog->set_text(TTR("Error!"));
add_child(error_dialog);
@@ -1461,7 +1390,7 @@ void AnimationPlayerEditorPlugin::edit(Object *p_object) {
anim_editor->set_undo_redo(&get_undo_redo());
if (!p_object)
return;
- anim_editor->edit(p_object->cast_to<AnimationPlayer>());
+ anim_editor->edit(Object::cast_to<AnimationPlayer>(p_object));
}
bool AnimationPlayerEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h
index ceaa73569a..cea6b05ed4 100644
--- a/editor/plugins/animation_player_editor_plugin.h
+++ b/editor/plugins/animation_player_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -155,7 +155,7 @@ class AnimationPlayerEditor : public VBoxContainer {
void _animation_player_changed(Object *p_pl);
void _animation_key_editor_seek(float p_pos, bool p_drag);
- void _animation_key_editor_anim_len_changed(float p_new);
+ void _animation_key_editor_anim_len_changed(float p_len);
void _animation_key_editor_anim_step_changed(float p_len);
void _unhandled_key_input(const Ref<InputEvent> &p_ev);
@@ -198,8 +198,8 @@ public:
virtual String get_name() const { return "Anim"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
AnimationPlayerEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/animation_tree_editor_plugin.cpp b/editor/plugins/animation_tree_editor_plugin.cpp
index 156a74144c..054124da8f 100644
--- a/editor/plugins/animation_tree_editor_plugin.cpp
+++ b/editor/plugins/animation_tree_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -212,7 +212,7 @@ void AnimationTreeEditor::_edit_dialog_animation_changed() {
void AnimationTreeEditor::_edit_dialog_edit_animation() {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
get_tree()->get_root()->get_child(0)->call("_resource_selected", property_editor->get_variant().operator RefPtr());
};
};
@@ -281,11 +281,11 @@ void AnimationTreeEditor::_popup_edit_dialog() {
case AnimationTreePlayer::NODE_ANIMATION:
- if (anim_tree->get_master_player() != NodePath() && anim_tree->has_node(anim_tree->get_master_player()) && anim_tree->get_node(anim_tree->get_master_player())->cast_to<AnimationPlayer>()) {
+ if (anim_tree->get_master_player() != NodePath() && anim_tree->has_node(anim_tree->get_master_player()) && Object::cast_to<AnimationPlayer>(anim_tree->get_node(anim_tree->get_master_player()))) {
- AnimationPlayer *ap = anim_tree->get_node(anim_tree->get_master_player())->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(anim_tree->get_node(anim_tree->get_master_player()));
master_anim_popup->clear();
- master_anim_popup->add_item("Edit Filters");
+ master_anim_popup->add_item(TTR("Edit Filters"));
master_anim_popup->add_separator();
List<StringName> sn;
ap->get_animation_list(&sn);
@@ -605,15 +605,6 @@ void AnimationTreeEditor::_draw_node(const StringName &p_node) {
}
}
-#if 0
-void AnimationTreeEditor::_node_param_changed() {
-
- //anim_tree->node_set_param( click_node,property_editor->get_variant() );
- //update();
- //_write_anim_tree_graph();
-}
-#endif
-
AnimationTreeEditor::ClickType AnimationTreeEditor::_locate_click(const Point2 &p_click, StringName *p_node_id, int *p_slot_index) const {
Ref<StyleBox> style = get_stylebox("panel", "PopupMenu");
@@ -676,16 +667,16 @@ AnimationTreeEditor::ClickType AnimationTreeEditor::_locate_click(const Point2 &
return CLICK_NONE;
}
-Point2 AnimationTreeEditor::_get_slot_pos(const StringName &p_node, bool p_input, int p_slot) {
+Point2 AnimationTreeEditor::_get_slot_pos(const StringName &p_node_id, bool p_input, int p_slot) {
Ref<StyleBox> style = get_stylebox("panel", "PopupMenu");
Ref<Font> font = get_font("font", "PopupMenu");
Ref<Texture> slot_icon = get_icon("NodeRealSlot", "EditorIcons");
- Size2 size = get_node_size(p_node);
- Point2 pos = anim_tree->node_get_pos(p_node);
+ Size2 size = get_node_size(p_node_id);
+ Point2 pos = anim_tree->node_get_pos(p_node_id);
- if (click_type == CLICK_NODE && click_node == p_node) {
+ if (click_type == CLICK_NODE && click_node == p_node_id) {
pos += click_motion - click_pos;
if (pos.x < 5)
@@ -714,32 +705,6 @@ Point2 AnimationTreeEditor::_get_slot_pos(const StringName &p_node, bool p_input
return pos;
}
-#if 0
-void AnimationTreeEditor::_node_edit_property(const StringName& p_node) {
-
- Ref<StyleBox> style = get_stylebox("panel","PopupMenu");
- Size2 size = get_node_size(p_node);
- Point2 pos = Point2( anim_tree->node_get_pos_x(p_node), anim_tree->node_get_pos_y(p_node) )-offset;
-
- VisualServer::AnimationTreeNodeType type=anim_tree->node_get_type(p_node);
-
- PropertyInfo ph = VisualServer::get_singleton()->anim_tree_node_get_type_info(type);
- if (ph.type==Variant::NIL)
- return;
- if (ph.type==Variant::_RID)
- ph.type=Variant::RESOURCE;
-
- property_editor->edit(NULL,ph.name,ph.type,anim_tree->node_get_param(p_node),ph.hint,ph.hint_string);
-
- Point2 popup_pos=Point2( pos.x+(size.width-property_editor->get_size().width)/2.0,pos.y+(size.y-style->get_margin(MARGIN_BOTTOM))).floor();
- popup_pos+=get_global_position();
- property_editor->set_position(popup_pos);
-
- property_editor->popup();
-
-}
-#endif
-
void AnimationTreeEditor::_gui_input(Ref<InputEvent> p_event) {
Ref<InputEventMouseButton> mb = p_event;
@@ -1233,7 +1198,7 @@ void AnimationTreeEditor::_edit_filters() {
if (np.get_property() != StringName()) {
Node *n = base->get_node(np);
- Skeleton *s = n->cast_to<Skeleton>();
+ Skeleton *s = Object::cast_to<Skeleton>(n);
if (s) {
String skelbase = E->get().substr(0, E->get().find(":"));
@@ -1371,7 +1336,7 @@ AnimationTreeEditor::AnimationTreeEditor() {
edit_option = memnew(OptionButton);
edit_option->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- edit_option->set_margin(MARGIN_RIGHT, 10);
+ edit_option->set_margin(MARGIN_RIGHT, -10);
edit_dialog->add_child(edit_option);
edit_option->connect("item_selected", this, "_edit_dialog_changedf");
edit_option->hide();
@@ -1379,7 +1344,7 @@ AnimationTreeEditor::AnimationTreeEditor() {
for (int i = 0; i < 2; i++) {
edit_scroll[i] = memnew(HSlider);
edit_scroll[i]->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- edit_scroll[i]->set_margin(MARGIN_RIGHT, 10);
+ edit_scroll[i]->set_margin(MARGIN_RIGHT, -10);
edit_dialog->add_child(edit_scroll[i]);
edit_scroll[i]->hide();
edit_scroll[i]->connect("value_changed", this, "_edit_dialog_changedf");
@@ -1387,7 +1352,7 @@ AnimationTreeEditor::AnimationTreeEditor() {
for (int i = 0; i < 4; i++) {
edit_line[i] = memnew(LineEdit);
edit_line[i]->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- edit_line[i]->set_margin(MARGIN_RIGHT, 10);
+ edit_line[i]->set_margin(MARGIN_RIGHT, -10);
edit_dialog->add_child(edit_line[i]);
edit_line[i]->hide();
edit_line[i]->connect("text_changed", this, "_edit_dialog_changeds");
@@ -1399,14 +1364,14 @@ AnimationTreeEditor::AnimationTreeEditor() {
edit_button = memnew(Button);
edit_button->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- edit_button->set_margin(MARGIN_RIGHT, 10);
+ edit_button->set_margin(MARGIN_RIGHT, -10);
edit_dialog->add_child(edit_button);
edit_button->hide();
edit_button->connect("pressed", this, "_edit_oneshot_start");
edit_check = memnew(CheckButton);
edit_check->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- edit_check->set_margin(MARGIN_RIGHT, 10);
+ edit_check->set_margin(MARGIN_RIGHT, -10);
edit_dialog->add_child(edit_check);
edit_check->hide();
edit_check->connect("pressed", this, "_edit_dialog_changed");
@@ -1428,7 +1393,7 @@ AnimationTreeEditor::AnimationTreeEditor() {
filter_button = memnew(Button);
filter_button->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- filter_button->set_margin(MARGIN_RIGHT, 10);
+ filter_button->set_margin(MARGIN_RIGHT, -10);
edit_dialog->add_child(filter_button);
filter_button->hide();
filter_button->set_text(TTR("Filters.."));
@@ -1439,7 +1404,7 @@ AnimationTreeEditor::AnimationTreeEditor() {
void AnimationTreeEditorPlugin::edit(Object *p_object) {
- anim_tree_editor->edit(p_object->cast_to<AnimationTreePlayer>());
+ anim_tree_editor->edit(Object::cast_to<AnimationTreePlayer>(p_object));
}
bool AnimationTreeEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/animation_tree_editor_plugin.h b/editor/plugins/animation_tree_editor_plugin.h
index 785f042dd9..a5bef263f4 100644
--- a/editor/plugins/animation_tree_editor_plugin.h
+++ b/editor/plugins/animation_tree_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -160,7 +160,7 @@ protected:
public:
virtual Size2 get_minimum_size() const;
- void edit(AnimationTreePlayer *p_player);
+ void edit(AnimationTreePlayer *p_anim_tree);
AnimationTreeEditor();
};
@@ -175,8 +175,8 @@ class AnimationTreeEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "AnimTree"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
AnimationTreeEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp
new file mode 100644
index 0000000000..626b4f5a7f
--- /dev/null
+++ b/editor/plugins/asset_library_editor_plugin.cpp
@@ -0,0 +1,1486 @@
+/*************************************************************************/
+/* asset_library_editor_plugin.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 "asset_library_editor_plugin.h"
+
+#include "editor_node.h"
+#include "editor_settings.h"
+#include "io/json.h"
+
+void EditorAssetLibraryItem::configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost) {
+
+ title->set_text(p_title);
+ asset_id = p_asset_id;
+ category->set_text(p_category);
+ category_id = p_category_id;
+ author->set_text(p_author);
+ author_id = p_author_id;
+ price->set_text(p_cost);
+
+ for (int i = 0; i < 5; i++) {
+ if (i < p_rating)
+ stars[i]->set_texture(get_icon("RatingStar", "EditorIcons"));
+ else
+ stars[i]->set_texture(get_icon("RatingNoStar", "EditorIcons"));
+ }
+}
+
+void EditorAssetLibraryItem::set_image(int p_type, int p_index, const Ref<Texture> &p_image) {
+
+ ERR_FAIL_COND(p_type != EditorAssetLibrary::IMAGE_QUEUE_ICON);
+ ERR_FAIL_COND(p_index != 0);
+
+ icon->set_normal_texture(p_image);
+}
+
+void EditorAssetLibraryItem::_notification(int p_what) {
+
+ if (p_what == NOTIFICATION_ENTER_TREE) {
+
+ icon->set_normal_texture(get_icon("GodotAssetDefault", "EditorIcons"));
+ category->add_color_override("font_color", Color(0.5, 0.5, 0.5));
+ author->add_color_override("font_color", Color(0.5, 0.5, 0.5));
+ }
+}
+
+void EditorAssetLibraryItem::_asset_clicked() {
+
+ emit_signal("asset_selected", asset_id);
+}
+
+void EditorAssetLibraryItem::_category_clicked() {
+
+ emit_signal("category_selected", category_id);
+}
+void EditorAssetLibraryItem::_author_clicked() {
+
+ emit_signal("author_selected", author_id);
+}
+
+void EditorAssetLibraryItem::_bind_methods() {
+
+ ClassDB::bind_method("set_image", &EditorAssetLibraryItem::set_image);
+ ClassDB::bind_method("_asset_clicked", &EditorAssetLibraryItem::_asset_clicked);
+ ClassDB::bind_method("_category_clicked", &EditorAssetLibraryItem::_category_clicked);
+ ClassDB::bind_method("_author_clicked", &EditorAssetLibraryItem::_author_clicked);
+ ADD_SIGNAL(MethodInfo("asset_selected"));
+ ADD_SIGNAL(MethodInfo("category_selected"));
+ ADD_SIGNAL(MethodInfo("author_selected"));
+}
+
+EditorAssetLibraryItem::EditorAssetLibraryItem() {
+
+ Ref<StyleBoxEmpty> border;
+ border.instance();
+ border->set_default_margin(MARGIN_LEFT, 5);
+ border->set_default_margin(MARGIN_RIGHT, 5);
+ border->set_default_margin(MARGIN_BOTTOM, 5);
+ border->set_default_margin(MARGIN_TOP, 5);
+ add_style_override("panel", border);
+
+ HBoxContainer *hb = memnew(HBoxContainer);
+ add_child(hb);
+
+ icon = memnew(TextureButton);
+ icon->set_default_cursor_shape(CURSOR_POINTING_HAND);
+ icon->connect("pressed", this, "_asset_clicked");
+
+ hb->add_child(icon);
+
+ VBoxContainer *vb = memnew(VBoxContainer);
+
+ hb->add_child(vb);
+ vb->set_h_size_flags(SIZE_EXPAND_FILL);
+
+ title = memnew(LinkButton);
+ title->set_text("My Awesome Addon");
+ title->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ title->connect("pressed", this, "_asset_clicked");
+ vb->add_child(title);
+
+ category = memnew(LinkButton);
+ category->set_text("Editor Tools");
+ category->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ category->connect("pressed", this, "_category_clicked");
+ vb->add_child(category);
+
+ author = memnew(LinkButton);
+ author->set_text("Johny Tolengo");
+ author->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ author->connect("pressed", this, "_author_clicked");
+ vb->add_child(author);
+
+ HBoxContainer *rating_hb = memnew(HBoxContainer);
+ vb->add_child(rating_hb);
+
+ for (int i = 0; i < 5; i++) {
+ stars[i] = memnew(TextureRect);
+ rating_hb->add_child(stars[i]);
+ }
+ price = memnew(Label);
+ price->set_text(TTR("Free"));
+ vb->add_child(price);
+
+ set_custom_minimum_size(Size2(250, 100));
+ set_h_size_flags(SIZE_EXPAND_FILL);
+
+ set_mouse_filter(MOUSE_FILTER_PASS);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+void EditorAssetLibraryItemDescription::set_image(int p_type, int p_index, const Ref<Texture> &p_image) {
+
+ switch (p_type) {
+
+ case EditorAssetLibrary::IMAGE_QUEUE_ICON: {
+
+ item->call("set_image", p_type, p_index, p_image);
+ icon = p_image;
+ } break;
+ case EditorAssetLibrary::IMAGE_QUEUE_THUMBNAIL: {
+
+ for (int i = 0; i < preview_images.size(); i++) {
+ if (preview_images[i].id == p_index) {
+ preview_images[i].button->set_icon(p_image);
+ break;
+ }
+ }
+ //item->call("set_image",p_type,p_index,p_image);
+ } break;
+ case EditorAssetLibrary::IMAGE_QUEUE_SCREENSHOT: {
+
+ for (int i = 0; i < preview_images.size(); i++) {
+ if (preview_images[i].id == p_index) {
+ preview_images[i].image = p_image;
+ if (preview_images[i].button->is_pressed()) {
+ _preview_click(p_index);
+ }
+ break;
+ }
+ }
+ //item->call("set_image",p_type,p_index,p_image);
+ } break;
+ }
+}
+void EditorAssetLibraryItemDescription::_notification(int p_what) {
+ switch (p_what) {
+ case NOTIFICATION_ENTER_TREE: {
+ previews_bg->add_style_override("panel", get_stylebox("normal", "TextEdit"));
+ desc_bg->add_style_override("panel", get_stylebox("normal", "TextEdit"));
+ } break;
+ }
+}
+void EditorAssetLibraryItemDescription::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_image"), &EditorAssetLibraryItemDescription::set_image);
+ ClassDB::bind_method(D_METHOD("_link_click"), &EditorAssetLibraryItemDescription::_link_click);
+ ClassDB::bind_method(D_METHOD("_preview_click"), &EditorAssetLibraryItemDescription::_preview_click);
+}
+
+void EditorAssetLibraryItemDescription::_link_click(const String &p_url) {
+ ERR_FAIL_COND(!p_url.begins_with("http"));
+ OS::get_singleton()->shell_open(p_url);
+}
+
+void EditorAssetLibraryItemDescription::_preview_click(int p_id) {
+ for (int i = 0; i < preview_images.size(); i++) {
+ if (preview_images[i].id == p_id) {
+ preview_images[i].button->set_pressed(true);
+ if (!preview_images[i].is_video) {
+ if (preview_images[i].image.is_valid()) {
+ preview->set_texture(preview_images[i].image);
+ }
+ } else {
+ _link_click(preview_images[i].video_link);
+ }
+ } else {
+ preview_images[i].button->set_pressed(false);
+ }
+ }
+}
+
+void EditorAssetLibraryItemDescription::configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost, int p_version, const String &p_version_string, const String &p_description, const String &p_download_url, const String &p_browse_url, const String &p_sha256_hash) {
+
+ asset_id = p_asset_id;
+ title = p_title;
+ download_url = p_download_url;
+ sha256 = p_sha256_hash;
+ item->configure(p_title, p_asset_id, p_category, p_category_id, p_author, p_author_id, p_rating, p_cost);
+ description->clear();
+ description->add_text(TTR("Version:") + " " + p_version_string + "\n");
+ description->add_text(TTR("Contents:") + " ");
+ description->push_meta(p_browse_url);
+ description->add_text(TTR("View Files"));
+ description->pop();
+ description->add_text("\n" + TTR("Description:") + "\n\n");
+ description->append_bbcode(p_description);
+ set_title(p_title);
+}
+
+void EditorAssetLibraryItemDescription::add_preview(int p_id, bool p_video, const String &p_url) {
+
+ Preview preview;
+ preview.id = p_id;
+ preview.video_link = p_url;
+ preview.is_video = p_video;
+ preview.button = memnew(Button);
+ preview.button->set_flat(true);
+ preview.button->set_icon(get_icon("ThumbnailWait", "EditorIcons"));
+ preview.button->set_toggle_mode(true);
+ preview.button->connect("pressed", this, "_preview_click", varray(p_id));
+ preview_hb->add_child(preview.button);
+ if (!p_video) {
+ preview.image = get_icon("ThumbnailWait", "EditorIcons");
+ }
+ if (preview_images.size() == 0 && !p_video) {
+ _preview_click(p_id);
+ }
+ preview_images.push_back(preview);
+}
+
+EditorAssetLibraryItemDescription::EditorAssetLibraryItemDescription() {
+
+ VBoxContainer *vbox = memnew(VBoxContainer);
+ add_child(vbox);
+
+ HBoxContainer *hbox = memnew(HBoxContainer);
+ vbox->add_child(hbox);
+ vbox->add_constant_override("separation", 15);
+ VBoxContainer *desc_vbox = memnew(VBoxContainer);
+ hbox->add_child(desc_vbox);
+ hbox->add_constant_override("separation", 15);
+
+ item = memnew(EditorAssetLibraryItem);
+
+ desc_vbox->add_child(item);
+ desc_vbox->set_custom_minimum_size(Size2(300, 0));
+
+ desc_bg = memnew(PanelContainer);
+ desc_vbox->add_child(desc_bg);
+ desc_bg->set_v_size_flags(SIZE_EXPAND_FILL);
+
+ description = memnew(RichTextLabel);
+ description->connect("meta_clicked", this, "_link_click");
+ desc_bg->add_child(description);
+
+ preview = memnew(TextureRect);
+ preview->set_custom_minimum_size(Size2(640, 345));
+ hbox->add_child(preview);
+
+ previews_bg = memnew(PanelContainer);
+ vbox->add_child(previews_bg);
+ previews_bg->set_custom_minimum_size(Size2(0, 85));
+
+ previews = memnew(ScrollContainer);
+ previews_bg->add_child(previews);
+ previews->set_enable_v_scroll(false);
+ previews->set_enable_h_scroll(true);
+ preview_hb = memnew(HBoxContainer);
+ preview_hb->set_v_size_flags(SIZE_EXPAND_FILL);
+
+ previews->add_child(preview_hb);
+ get_ok()->set_text(TTR("Install"));
+ get_cancel()->set_text(TTR("Close"));
+}
+///////////////////////////////////////////////////////////////////////////////////
+
+void EditorAssetLibraryItemDownload::_http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data) {
+
+ String error_text;
+ print_line("COMPLETED: " + itos(p_status) + " code: " + itos(p_code) + " data size: " + itos(p_data.size()));
+
+ switch (p_status) {
+
+ case HTTPRequest::RESULT_CANT_RESOLVE: {
+ error_text = TTR("Can't resolve hostname:") + " " + host;
+ status->set_text(TTR("Can't resolve."));
+ } break;
+ case HTTPRequest::RESULT_BODY_SIZE_LIMIT_EXCEEDED:
+ case HTTPRequest::RESULT_CONNECTION_ERROR:
+ case HTTPRequest::RESULT_CHUNKED_BODY_SIZE_MISMATCH: {
+ error_text = TTR("Connection error, please try again.");
+ status->set_text(TTR("Can't connect."));
+ } break;
+ case HTTPRequest::RESULT_SSL_HANDSHAKE_ERROR:
+ case HTTPRequest::RESULT_CANT_CONNECT: {
+ error_text = TTR("Can't connect to host:") + " " + host;
+ status->set_text(TTR("Can't connect."));
+ } break;
+ case HTTPRequest::RESULT_NO_RESPONSE: {
+ error_text = TTR("No response from host:") + " " + host;
+ status->set_text(TTR("No response."));
+ } break;
+ case HTTPRequest::RESULT_REQUEST_FAILED: {
+ error_text = TTR("Request failed, return code:") + " " + itos(p_code);
+ status->set_text(TTR("Req. Failed."));
+ } break;
+ case HTTPRequest::RESULT_REDIRECT_LIMIT_REACHED: {
+ error_text = TTR("Request failed, too many redirects");
+ status->set_text(TTR("Redirect Loop."));
+ } break;
+ default: {
+ if (p_code != 200) {
+ error_text = TTR("Request failed, return code:") + " " + itos(p_code);
+ status->set_text(TTR("Failed:") + " " + itos(p_code));
+ } else if (sha256 != "") {
+ String download_sha256 = FileAccess::get_sha256(download->get_download_file());
+ if (sha256 != download_sha256) {
+ error_text = TTR("Bad download hash, assuming file has been tampered with.") + "\n";
+ error_text += TTR("Expected:") + " " + sha256 + "\n" + TTR("Got:") + " " + download_sha256;
+ status->set_text(TTR("Failed sha256 hash check"));
+ }
+ }
+ } break;
+ }
+
+ if (error_text != String()) {
+ download_error->set_text(TTR("Asset Download Error:") + "\n" + error_text);
+ download_error->popup_centered_minsize();
+ return;
+ }
+
+ progress->set_max(download->get_body_size());
+ progress->set_value(download->get_downloaded_bytes());
+
+ print_line("max: " + itos(download->get_body_size()) + " bytes: " + itos(download->get_downloaded_bytes()));
+ install->set_disabled(false);
+
+ progress->set_value(download->get_downloaded_bytes());
+
+ status->set_text(TTR("Success!") + " (" + String::humanize_size(download->get_downloaded_bytes()) + ")");
+ set_process(false);
+}
+
+void EditorAssetLibraryItemDownload::configure(const String &p_title, int p_asset_id, const Ref<Texture> &p_preview, const String &p_download_url, const String &p_sha256_hash) {
+
+ title->set_text(p_title);
+ icon->set_texture(p_preview);
+ asset_id = p_asset_id;
+ if (!p_preview.is_valid())
+ icon->set_texture(get_icon("GodotAssetDefault", "EditorIcons"));
+ host = p_download_url;
+ sha256 = p_sha256_hash;
+ asset_installer->connect("confirmed", this, "_close");
+ dismiss->set_normal_texture(get_icon("Close", "EditorIcons"));
+ _make_request();
+}
+
+void EditorAssetLibraryItemDownload::_notification(int p_what) {
+
+ if (p_what == NOTIFICATION_PROCESS) {
+
+ progress->set_max(download->get_body_size());
+ progress->set_value(download->get_downloaded_bytes());
+
+ int cstatus = download->get_http_client_status();
+
+ if (cstatus == HTTPClient::STATUS_BODY)
+ status->set_text(TTR("Fetching:") + " " + String::humanize_size(download->get_downloaded_bytes()));
+
+ if (cstatus != prev_status) {
+ switch (cstatus) {
+
+ case HTTPClient::STATUS_RESOLVING: {
+ status->set_text(TTR("Resolving.."));
+ } break;
+ case HTTPClient::STATUS_CONNECTING: {
+ status->set_text(TTR("Connecting.."));
+ } break;
+ case HTTPClient::STATUS_REQUESTING: {
+ status->set_text(TTR("Requesting.."));
+ } break;
+ default: {}
+ }
+ prev_status = cstatus;
+ }
+ }
+}
+void EditorAssetLibraryItemDownload::_close() {
+
+ DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+ da->remove(download->get_download_file()); //clean up removed file
+ memdelete(da);
+ queue_delete();
+}
+
+void EditorAssetLibraryItemDownload::_install() {
+
+ String file = download->get_download_file();
+
+ if (external_install) {
+ emit_signal("install_asset", file, title->get_text());
+ return;
+ }
+
+ asset_installer->open(file, 1);
+}
+
+void EditorAssetLibraryItemDownload::_make_request() {
+ download->cancel_request();
+ download->set_download_file(EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("tmp_asset_" + itos(asset_id)) + ".zip");
+
+ Error err = download->request(host);
+ if (err != OK) {
+ status->set_text(TTR("Error making request"));
+ } else {
+ set_process(true);
+ }
+}
+
+void EditorAssetLibraryItemDownload::_bind_methods() {
+
+ ClassDB::bind_method("_http_download_completed", &EditorAssetLibraryItemDownload::_http_download_completed);
+ ClassDB::bind_method("_install", &EditorAssetLibraryItemDownload::_install);
+ ClassDB::bind_method("_close", &EditorAssetLibraryItemDownload::_close);
+ ClassDB::bind_method("_make_request", &EditorAssetLibraryItemDownload::_make_request);
+
+ ADD_SIGNAL(MethodInfo("install_asset", PropertyInfo(Variant::STRING, "zip_path"), PropertyInfo(Variant::STRING, "name")));
+}
+
+EditorAssetLibraryItemDownload::EditorAssetLibraryItemDownload() {
+
+ HBoxContainer *hb = memnew(HBoxContainer);
+ add_child(hb);
+ icon = memnew(TextureRect);
+ hb->add_child(icon);
+
+ VBoxContainer *vb = memnew(VBoxContainer);
+ hb->add_child(vb);
+ vb->set_h_size_flags(SIZE_EXPAND_FILL);
+
+ HBoxContainer *title_hb = memnew(HBoxContainer);
+ vb->add_child(title_hb);
+ title = memnew(Label);
+ title_hb->add_child(title);
+ title->set_h_size_flags(SIZE_EXPAND_FILL);
+
+ dismiss = memnew(TextureButton);
+ dismiss->connect("pressed", this, "_close");
+ title_hb->add_child(dismiss);
+
+ title->set_clip_text(true);
+
+ vb->add_spacer();
+
+ status = memnew(Label(TTR("Idle")));
+ vb->add_child(status);
+ status->add_color_override("font_color", Color(0.5, 0.5, 0.5));
+ progress = memnew(ProgressBar);
+ vb->add_child(progress);
+
+ HBoxContainer *hb2 = memnew(HBoxContainer);
+ vb->add_child(hb2);
+ hb2->add_spacer();
+
+ install = memnew(Button);
+ install->set_text(TTR("Install"));
+ install->set_disabled(true);
+ install->connect("pressed", this, "_install");
+
+ retry = memnew(Button);
+ retry->set_text(TTR("Retry"));
+ retry->connect("pressed", this, "_make_request");
+
+ hb2->add_child(retry);
+ hb2->add_child(install);
+ set_custom_minimum_size(Size2(250, 0));
+
+ download = memnew(HTTPRequest);
+ add_child(download);
+ download->connect("request_completed", this, "_http_download_completed");
+
+ download_error = memnew(AcceptDialog);
+ add_child(download_error);
+ download_error->set_title(TTR("Download Error"));
+
+ asset_installer = memnew(EditorAssetInstaller);
+ add_child(asset_installer);
+
+ prev_status = -1;
+
+ external_install = false;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void EditorAssetLibrary::_notification(int p_what) {
+
+ switch (p_what) {
+ case NOTIFICATION_READY: {
+
+ TextureRect *tf = memnew(TextureRect);
+ tf->set_texture(get_icon("Error", "EditorIcons"));
+ reverse->set_icon(get_icon("Sort", "EditorIcons"));
+
+ error_hb->add_child(tf);
+ error_label->raise();
+ } break;
+
+ case NOTIFICATION_VISIBILITY_CHANGED: {
+
+ if (is_visible()) {
+ _repository_changed(0); // Update when shown for the first time
+ }
+ } break;
+
+ case NOTIFICATION_PROCESS: {
+
+ HTTPClient::Status s = request->get_http_client_status();
+ bool visible = s != HTTPClient::STATUS_DISCONNECTED;
+
+ if (visible != load_status->is_visible()) {
+ load_status->set_visible(visible);
+ }
+
+ if (visible) {
+ switch (s) {
+
+ case HTTPClient::STATUS_RESOLVING: {
+ load_status->set_value(0.1);
+ } break;
+ case HTTPClient::STATUS_CONNECTING: {
+ load_status->set_value(0.2);
+ } break;
+ case HTTPClient::STATUS_REQUESTING: {
+ load_status->set_value(0.3);
+ } break;
+ case HTTPClient::STATUS_BODY: {
+ load_status->set_value(0.4);
+ } break;
+ default: {}
+ }
+ }
+
+ bool no_downloads = downloads_hb->get_child_count() == 0;
+ if (no_downloads == downloads_scroll->is_visible()) {
+ downloads_scroll->set_visible(!no_downloads);
+ }
+
+ } break;
+ case NOTIFICATION_THEME_CHANGED: {
+
+ library_scroll_bg->add_style_override("panel", get_stylebox("bg", "Tree"));
+ } break;
+ }
+}
+
+void EditorAssetLibrary::_install_asset() {
+
+ ERR_FAIL_COND(!description);
+
+ for (int i = 0; i < downloads_hb->get_child_count(); i++) {
+
+ EditorAssetLibraryItemDownload *d = Object::cast_to<EditorAssetLibraryItemDownload>(downloads_hb->get_child(i));
+ if (d && d->get_asset_id() == description->get_asset_id()) {
+
+ if (EditorNode::get_singleton() != NULL)
+ EditorNode::get_singleton()->show_warning(TTR("Download for this asset is already in progress!"));
+ return;
+ }
+ }
+
+ EditorAssetLibraryItemDownload *download = memnew(EditorAssetLibraryItemDownload);
+ downloads_hb->add_child(download);
+ download->configure(description->get_title(), description->get_asset_id(), description->get_preview_icon(), description->get_download_url(), description->get_sha256());
+
+ if (templates_only) {
+ download->set_external_install(true);
+ download->connect("install_asset", this, "_install_external_asset");
+ }
+}
+
+const char *EditorAssetLibrary::sort_key[SORT_MAX] = {
+ "rating",
+ "downloads",
+ "name",
+ "cost",
+ "updated"
+};
+
+const char *EditorAssetLibrary::sort_text[SORT_MAX] = {
+ "Rating",
+ "Downloads",
+ "Name",
+ "Cost",
+ "Updated"
+};
+
+const char *EditorAssetLibrary::support_key[SUPPORT_MAX] = {
+ "official",
+ "community",
+ "testing"
+};
+
+void EditorAssetLibrary::_select_author(int p_id) {
+
+ //opemn author window
+}
+
+void EditorAssetLibrary::_select_category(int p_id) {
+
+ for (int i = 0; i < categories->get_item_count(); i++) {
+
+ if (i == 0)
+ continue;
+ int id = categories->get_item_metadata(i);
+ if (id == p_id) {
+ categories->select(i);
+ _search();
+ break;
+ }
+ }
+}
+void EditorAssetLibrary::_select_asset(int p_id) {
+
+ _api_request("asset/" + itos(p_id), REQUESTING_ASSET);
+
+ /*
+ if (description) {
+ memdelete(description);
+ }
+
+
+ description = memnew( EditorAssetLibraryItemDescription );
+ add_child(description);
+ description->popup_centered_minsize();*/
+}
+
+void EditorAssetLibrary::_image_update(bool use_cache, bool final, const PoolByteArray &p_data, int p_queue_id) {
+ Object *obj = ObjectDB::get_instance(image_queue[p_queue_id].target);
+
+ if (obj) {
+ bool image_set = false;
+ PoolByteArray image_data = p_data;
+
+ if (use_cache) {
+ String cache_filename_base = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("assetimage_" + image_queue[p_queue_id].image_url.md5_text());
+
+ FileAccess *file = FileAccess::open(cache_filename_base + ".data", FileAccess::READ);
+
+ if (file) {
+ PoolByteArray cached_data;
+ int len = file->get_32();
+ cached_data.resize(len);
+
+ PoolByteArray::Write w = cached_data.write();
+ file->get_buffer(w.ptr(), len);
+
+ image_data = cached_data;
+ file->close();
+ }
+ }
+
+ int len = image_data.size();
+ PoolByteArray::Read r = image_data.read();
+ Ref<Image> image = Ref<Image>(memnew(Image(r.ptr(), len)));
+
+ if (!image->empty()) {
+ float max_height = 10000;
+ switch (image_queue[p_queue_id].image_type) {
+ case IMAGE_QUEUE_ICON: max_height = 80; break;
+ case IMAGE_QUEUE_THUMBNAIL: max_height = 80; break;
+ case IMAGE_QUEUE_SCREENSHOT: max_height = 345; break;
+ }
+ float scale_ratio = max_height / image->get_height();
+ if (scale_ratio < 1) {
+ image->resize(image->get_width() * scale_ratio, image->get_height() * scale_ratio, Image::INTERPOLATE_CUBIC);
+ }
+
+ Ref<ImageTexture> tex;
+ tex.instance();
+ tex->create_from_image(image);
+
+ obj->call("set_image", image_queue[p_queue_id].image_type, image_queue[p_queue_id].image_index, tex);
+ image_set = true;
+ }
+
+ if (!image_set && final) {
+ obj->call("set_image", image_queue[p_queue_id].image_type, image_queue[p_queue_id].image_index, get_icon("ErrorSign", "EditorIcons"));
+ }
+ }
+}
+
+void EditorAssetLibrary::_image_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data, int p_queue_id) {
+
+ ERR_FAIL_COND(!image_queue.has(p_queue_id));
+
+ if (p_status == HTTPRequest::RESULT_SUCCESS) {
+
+ print_line("GOT IMAGE YAY!");
+
+ if (p_code != HTTPClient::RESPONSE_NOT_MODIFIED) {
+ for (int i = 0; i < headers.size(); i++) {
+ if (headers[i].findn("ETag:") == 0) { // Save etag
+ String cache_filename_base = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("assetimage_" + image_queue[p_queue_id].image_url.md5_text());
+ String new_etag = headers[i].substr(headers[i].find(":") + 1, headers[i].length()).strip_edges();
+ FileAccess *file;
+
+ file = FileAccess::open(cache_filename_base + ".etag", FileAccess::WRITE);
+ if (file) {
+ file->store_line(new_etag);
+ file->close();
+ }
+
+ int len = p_data.size();
+ PoolByteArray::Read r = p_data.read();
+ file = FileAccess::open(cache_filename_base + ".data", FileAccess::WRITE);
+ if (file) {
+ file->store_32(len);
+ file->store_buffer(r.ptr(), len);
+ file->close();
+ }
+
+ break;
+ }
+ }
+ }
+ _image_update(p_code == HTTPClient::RESPONSE_NOT_MODIFIED, true, p_data, p_queue_id);
+
+ } else {
+ WARN_PRINTS("Error getting PNG file for asset id " + itos(image_queue[p_queue_id].asset_id));
+ Object *obj = ObjectDB::get_instance(image_queue[p_queue_id].target);
+ if (obj) {
+ obj->call("set_image", image_queue[p_queue_id].image_type, image_queue[p_queue_id].image_index, get_icon("ErrorSign", "EditorIcons"));
+ }
+ }
+
+ image_queue[p_queue_id].request->queue_delete();
+ image_queue.erase(p_queue_id);
+
+ _update_image_queue();
+}
+
+void EditorAssetLibrary::_update_image_queue() {
+
+ int max_images = 2;
+ int current_images = 0;
+
+ List<int> to_delete;
+ for (Map<int, ImageQueue>::Element *E = image_queue.front(); E; E = E->next()) {
+ if (!E->get().active && current_images < max_images) {
+
+ String cache_filename_base = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp").plus_file("assetimage_" + E->get().image_url.md5_text());
+ Vector<String> headers;
+
+ if (FileAccess::exists(cache_filename_base + ".etag") && FileAccess::exists(cache_filename_base + ".data")) {
+ FileAccess *file = FileAccess::open(cache_filename_base + ".etag", FileAccess::READ);
+ if (file) {
+ headers.push_back("If-None-Match: " + file->get_line());
+ file->close();
+ }
+ }
+
+ print_line("REQUEST ICON FOR: " + itos(E->get().asset_id));
+ Error err = E->get().request->request(E->get().image_url, headers);
+ if (err != OK) {
+ to_delete.push_back(E->key());
+ } else {
+ E->get().active = true;
+ }
+ current_images++;
+ } else if (E->get().active) {
+ current_images++;
+ }
+ }
+
+ while (to_delete.size()) {
+ image_queue[to_delete.front()->get()].request->queue_delete();
+ image_queue.erase(to_delete.front()->get());
+ to_delete.pop_front();
+ }
+}
+
+void EditorAssetLibrary::_request_image(ObjectID p_for, String p_image_url, ImageType p_type, int p_image_index) {
+
+ ImageQueue iq;
+ iq.image_url = p_image_url;
+ iq.image_index = p_image_index;
+ iq.image_type = p_type;
+ iq.request = memnew(HTTPRequest);
+
+ iq.target = p_for;
+ iq.queue_id = ++last_queue_id;
+ iq.active = false;
+
+ iq.request->connect("request_completed", this, "_image_request_completed", varray(iq.queue_id));
+
+ image_queue[iq.queue_id] = iq;
+
+ add_child(iq.request);
+
+ _image_update(true, false, PoolByteArray(), iq.queue_id);
+ _update_image_queue();
+}
+
+void EditorAssetLibrary::_repository_changed(int p_repository_id) {
+ host = repository->get_item_metadata(p_repository_id);
+ print_line(".." + host);
+ if (templates_only) {
+ _api_request("configure", REQUESTING_CONFIG, "?type=project");
+ } else {
+ _api_request("configure", REQUESTING_CONFIG);
+ }
+}
+
+void EditorAssetLibrary::_support_toggled(int p_support) {
+ support->get_popup()->set_item_checked(p_support, !support->get_popup()->is_item_checked(p_support));
+ _search();
+}
+
+void EditorAssetLibrary::_rerun_search(int p_ignore) {
+ _search();
+}
+
+void EditorAssetLibrary::_search(int p_page) {
+
+ String args;
+
+ if (templates_only) {
+ args += "?type=project&";
+ } else {
+ args += "?";
+ }
+ args += String() + "sort=" + sort_key[sort->get_selected()];
+
+ String support_list;
+ for (int i = 0; i < SUPPORT_MAX; i++) {
+ if (support->get_popup()->is_item_checked(i)) {
+ support_list += String(support_key[i]) + "+";
+ }
+ }
+ if (support_list != String()) {
+ args += "&support=" + support_list.substr(0, support_list.length() - 1);
+ }
+
+ if (categories->get_selected() > 0) {
+
+ args += "&category=" + itos(categories->get_item_metadata(categories->get_selected()));
+ }
+
+ if (reverse->is_pressed()) {
+
+ args += "&reverse=true";
+ }
+
+ if (filter->get_text() != String()) {
+ args += "&filter=" + filter->get_text().http_escape();
+ }
+
+ if (p_page > 0) {
+ args += "&page=" + itos(p_page);
+ }
+
+ _api_request("asset", REQUESTING_SEARCH, args);
+}
+
+HBoxContainer *EditorAssetLibrary::_make_pages(int p_page, int p_page_count, int p_page_len, int p_total_items, int p_current_items) {
+
+ HBoxContainer *hbc = memnew(HBoxContainer);
+
+ //do the mario
+ int from = p_page - 5;
+ if (from < 0)
+ from = 0;
+ int to = from + 10;
+ if (to > p_page_count)
+ to = p_page_count;
+
+ Color gray = Color(0.65, 0.65, 0.65);
+
+ hbc->add_spacer();
+ hbc->add_constant_override("separation", 10);
+
+ if (p_page != 0) {
+ LinkButton *first = memnew(LinkButton);
+ first->set_text(TTR("first"));
+ first->add_color_override("font_color", gray);
+ first->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ first->connect("pressed", this, "_search", varray(0));
+ hbc->add_child(first);
+ }
+
+ if (p_page > 0) {
+ LinkButton *prev = memnew(LinkButton);
+ prev->set_text(TTR("prev"));
+ prev->add_color_override("font_color", gray);
+ prev->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ prev->connect("pressed", this, "_search", varray(p_page - 1));
+ hbc->add_child(prev);
+ }
+
+ for (int i = from; i < to; i++) {
+
+ if (i == p_page) {
+
+ Label *current = memnew(Label);
+ current->set_text(itos(i + 1));
+ hbc->add_child(current);
+ } else {
+
+ LinkButton *current = memnew(LinkButton);
+ current->add_color_override("font_color", gray);
+ current->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ current->set_text(itos(i + 1));
+ current->connect("pressed", this, "_search", varray(i));
+
+ hbc->add_child(current);
+ }
+ }
+
+ if (p_page < p_page_count - 1) {
+ LinkButton *next = memnew(LinkButton);
+ next->set_text(TTR("next"));
+ next->add_color_override("font_color", gray);
+ next->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ next->connect("pressed", this, "_search", varray(p_page + 1));
+
+ hbc->add_child(next);
+ }
+
+ if (p_page != p_page_count - 1) {
+ LinkButton *last = memnew(LinkButton);
+ last->set_text(TTR("last"));
+ last->add_color_override("font_color", gray);
+ last->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
+ hbc->add_child(last);
+ last->connect("pressed", this, "_search", varray(p_page_count - 1));
+ }
+
+ Label *totals = memnew(Label);
+ totals->set_text("( " + itos(from * p_page_len) + " - " + itos(from * p_page_len + p_current_items - 1) + " / " + itos(p_total_items) + " )");
+ hbc->add_child(totals);
+
+ hbc->add_spacer();
+
+ return hbc;
+}
+
+void EditorAssetLibrary::_api_request(const String &p_request, RequestType p_request_type, const String &p_arguments) {
+
+ if (requesting != REQUESTING_NONE) {
+ request->cancel_request();
+ }
+
+ requesting = p_request_type;
+
+ error_hb->hide();
+ request->request(host + "/" + p_request + p_arguments);
+}
+
+void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data) {
+
+ String str;
+
+ {
+ int datalen = p_data.size();
+ PoolByteArray::Read r = p_data.read();
+ str.parse_utf8((const char *)r.ptr(), datalen);
+ }
+
+ bool error_abort = true;
+
+ switch (p_status) {
+
+ case HTTPRequest::RESULT_CANT_RESOLVE: {
+ error_label->set_text(TTR("Can't resolve hostname:") + " " + host);
+ } break;
+ case HTTPRequest::RESULT_BODY_SIZE_LIMIT_EXCEEDED:
+ case HTTPRequest::RESULT_CONNECTION_ERROR:
+ case HTTPRequest::RESULT_CHUNKED_BODY_SIZE_MISMATCH: {
+ error_label->set_text(TTR("Connection error, please try again."));
+ } break;
+ case HTTPRequest::RESULT_SSL_HANDSHAKE_ERROR:
+ case HTTPRequest::RESULT_CANT_CONNECT: {
+ error_label->set_text(TTR("Can't connect to host:") + " " + host);
+ } break;
+ case HTTPRequest::RESULT_NO_RESPONSE: {
+ error_label->set_text(TTR("No response from host:") + " " + host);
+ } break;
+ case HTTPRequest::RESULT_REQUEST_FAILED: {
+ error_label->set_text(TTR("Request failed, return code:") + " " + itos(p_code));
+ } break;
+ case HTTPRequest::RESULT_REDIRECT_LIMIT_REACHED: {
+ error_label->set_text(TTR("Request failed, too many redirects"));
+
+ } break;
+ default: {
+ if (p_code != 200) {
+ error_label->set_text(TTR("Request failed, return code:") + " " + itos(p_code));
+ } else {
+
+ error_abort = false;
+ }
+ } break;
+ }
+
+ if (error_abort) {
+ error_hb->show();
+ return;
+ }
+
+ print_line("response: " + itos(p_status) + " code: " + itos(p_code));
+
+ Dictionary d;
+ {
+ Variant js;
+ String errs;
+ int errl;
+ JSON::parse(str, js, errs, errl);
+ d = js;
+ }
+
+ print_line(Variant(d).get_construct_string());
+
+ RequestType requested = requesting;
+ requesting = REQUESTING_NONE;
+
+ switch (requested) {
+ case REQUESTING_CONFIG: {
+
+ categories->clear();
+ categories->add_item(TTR("All"));
+ categories->set_item_metadata(0, 0);
+ if (d.has("categories")) {
+ Array clist = d["categories"];
+ for (int i = 0; i < clist.size(); i++) {
+ Dictionary cat = clist[i];
+ if (!cat.has("name") || !cat.has("id"))
+ continue;
+ String name = cat["name"];
+ int id = cat["id"];
+ categories->add_item(name);
+ categories->set_item_metadata(categories->get_item_count() - 1, id);
+ category_map[cat["id"]] = name;
+ }
+ }
+
+ _search();
+ } break;
+ case REQUESTING_SEARCH: {
+ if (asset_items) {
+ memdelete(asset_items);
+ }
+
+ if (asset_top_page) {
+ memdelete(asset_top_page);
+ }
+
+ if (asset_bottom_page) {
+ memdelete(asset_bottom_page);
+ }
+
+ int page = 0;
+ int pages = 1;
+ int page_len = 10;
+ int total_items = 1;
+ Array result;
+
+ if (d.has("page")) {
+ page = d["page"];
+ }
+ if (d.has("pages")) {
+ pages = d["pages"];
+ }
+ if (d.has("page_length")) {
+ page_len = d["page_length"];
+ }
+ if (d.has("total")) {
+ total_items = d["total"];
+ }
+ if (d.has("result")) {
+ result = d["result"];
+ }
+
+ asset_top_page = _make_pages(page, pages, page_len, total_items, result.size());
+ library_vb->add_child(asset_top_page);
+
+ asset_items = memnew(GridContainer);
+ asset_items->set_columns(2);
+ asset_items->add_constant_override("hseparation", 10);
+ asset_items->add_constant_override("vseparation", 10);
+
+ library_vb->add_child(asset_items);
+
+ asset_bottom_page = _make_pages(page, pages, page_len, total_items, result.size());
+ library_vb->add_child(asset_bottom_page);
+
+ for (int i = 0; i < result.size(); i++) {
+
+ Dictionary r = result[i];
+
+ ERR_CONTINUE(!r.has("title"));
+ ERR_CONTINUE(!r.has("asset_id"));
+ ERR_CONTINUE(!r.has("author"));
+ ERR_CONTINUE(!r.has("author_id"));
+ ERR_CONTINUE(!r.has("category_id"));
+ ERR_FAIL_COND(!category_map.has(r["category_id"]));
+ ERR_CONTINUE(!r.has("rating"));
+ ERR_CONTINUE(!r.has("cost"));
+
+ EditorAssetLibraryItem *item = memnew(EditorAssetLibraryItem);
+ asset_items->add_child(item);
+ item->configure(r["title"], r["asset_id"], category_map[r["category_id"]], r["category_id"], r["author"], r["author_id"], r["rating"], r["cost"]);
+ item->connect("asset_selected", this, "_select_asset");
+ item->connect("author_selected", this, "_select_author");
+ item->connect("category_selected", this, "_select_category");
+
+ if (r.has("icon_url") && r["icon_url"] != "") {
+ _request_image(item->get_instance_id(), r["icon_url"], IMAGE_QUEUE_ICON, 0);
+ }
+ }
+ } break;
+ case REQUESTING_ASSET: {
+ Dictionary r = d;
+
+ ERR_FAIL_COND(!r.has("title"));
+ ERR_FAIL_COND(!r.has("asset_id"));
+ ERR_FAIL_COND(!r.has("author"));
+ ERR_FAIL_COND(!r.has("author_id"));
+ ERR_FAIL_COND(!r.has("version"));
+ ERR_FAIL_COND(!r.has("version_string"));
+ ERR_FAIL_COND(!r.has("category_id"));
+ ERR_FAIL_COND(!category_map.has(r["category_id"]));
+ ERR_FAIL_COND(!r.has("rating"));
+ ERR_FAIL_COND(!r.has("cost"));
+ ERR_FAIL_COND(!r.has("description"));
+ ERR_FAIL_COND(!r.has("download_url"));
+ ERR_FAIL_COND(!r.has("download_hash"));
+ ERR_FAIL_COND(!r.has("browse_url"));
+
+ if (description) {
+ memdelete(description);
+ }
+
+ description = memnew(EditorAssetLibraryItemDescription);
+ add_child(description);
+ description->popup_centered_minsize();
+ description->connect("confirmed", this, "_install_asset");
+
+ description->configure(r["title"], r["asset_id"], category_map[r["category_id"]], r["category_id"], r["author"], r["author_id"], r["rating"], r["cost"], r["version"], r["version_string"], r["description"], r["download_url"], r["browse_url"], r["download_hash"]);
+ /*item->connect("asset_selected",this,"_select_asset");
+ item->connect("author_selected",this,"_select_author");
+ item->connect("category_selected",this,"_category_selected");*/
+
+ if (r.has("icon_url") && r["icon_url"] != "") {
+ _request_image(description->get_instance_id(), r["icon_url"], IMAGE_QUEUE_ICON, 0);
+ }
+
+ if (d.has("previews")) {
+ Array previews = d["previews"];
+
+ for (int i = 0; i < previews.size(); i++) {
+
+ Dictionary p = previews[i];
+
+ ERR_CONTINUE(!p.has("type"));
+ ERR_CONTINUE(!p.has("link"));
+
+ bool is_video = p.has("type") && String(p["type"]) == "video";
+ String video_url;
+ if (is_video && p.has("link")) {
+ video_url = p["link"];
+ }
+
+ description->add_preview(i, is_video, video_url);
+
+ if (p.has("thumbnail")) {
+ _request_image(description->get_instance_id(), p["thumbnail"], IMAGE_QUEUE_THUMBNAIL, i);
+ }
+ if (is_video) {
+ //_request_image(description->get_instance_id(),p["link"],IMAGE_QUEUE_SCREENSHOT,i);
+ } else {
+ _request_image(description->get_instance_id(), p["link"], IMAGE_QUEUE_SCREENSHOT, i);
+ }
+ }
+ }
+ } break;
+ default: break;
+ }
+}
+
+void EditorAssetLibrary::_asset_file_selected(const String &p_file) {
+
+ if (asset_installer) {
+ memdelete(asset_installer);
+ asset_installer = NULL;
+ }
+
+ asset_installer = memnew(EditorAssetInstaller);
+ add_child(asset_installer);
+ asset_installer->open(p_file);
+}
+
+void EditorAssetLibrary::_asset_open() {
+
+ asset_open->popup_centered_ratio();
+}
+
+void EditorAssetLibrary::_manage_plugins() {
+
+ ProjectSettingsEditor::get_singleton()->popup_project_settings();
+ ProjectSettingsEditor::get_singleton()->set_plugins_page();
+}
+
+void EditorAssetLibrary::_install_external_asset(String p_zip_path, String p_title) {
+
+ emit_signal("install_asset", p_zip_path, p_title);
+}
+
+void EditorAssetLibrary::_bind_methods() {
+
+ ClassDB::bind_method("_http_request_completed", &EditorAssetLibrary::_http_request_completed);
+ ClassDB::bind_method("_select_asset", &EditorAssetLibrary::_select_asset);
+ ClassDB::bind_method("_select_author", &EditorAssetLibrary::_select_author);
+ ClassDB::bind_method("_select_category", &EditorAssetLibrary::_select_category);
+ ClassDB::bind_method("_image_request_completed", &EditorAssetLibrary::_image_request_completed);
+ ClassDB::bind_method("_search", &EditorAssetLibrary::_search, DEFVAL(0));
+ ClassDB::bind_method("_install_asset", &EditorAssetLibrary::_install_asset);
+ ClassDB::bind_method("_manage_plugins", &EditorAssetLibrary::_manage_plugins);
+ ClassDB::bind_method("_asset_open", &EditorAssetLibrary::_asset_open);
+ ClassDB::bind_method("_asset_file_selected", &EditorAssetLibrary::_asset_file_selected);
+ ClassDB::bind_method("_repository_changed", &EditorAssetLibrary::_repository_changed);
+ ClassDB::bind_method("_support_toggled", &EditorAssetLibrary::_support_toggled);
+ ClassDB::bind_method("_rerun_search", &EditorAssetLibrary::_rerun_search);
+ ClassDB::bind_method("_install_external_asset", &EditorAssetLibrary::_install_external_asset);
+
+ ADD_SIGNAL(MethodInfo("install_asset", PropertyInfo(Variant::STRING, "zip_path"), PropertyInfo(Variant::STRING, "name")));
+}
+
+EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) {
+
+ templates_only = p_templates_only;
+
+ VBoxContainer *library_main = memnew(VBoxContainer);
+
+ add_child(library_main);
+
+ HBoxContainer *search_hb = memnew(HBoxContainer);
+
+ library_main->add_child(search_hb);
+ library_main->add_constant_override("separation", 10);
+
+ search_hb->add_child(memnew(Label(TTR("Search:") + " ")));
+ filter = memnew(LineEdit);
+ search_hb->add_child(filter);
+ filter->set_h_size_flags(SIZE_EXPAND_FILL);
+ filter->connect("text_entered", this, "_search");
+ search = memnew(Button(TTR("Search")));
+ search->connect("pressed", this, "_search");
+ search_hb->add_child(search);
+
+ if (!p_templates_only)
+ search_hb->add_child(memnew(VSeparator));
+
+ Button *open_asset = memnew(Button);
+ open_asset->set_text(TTR("Import"));
+ search_hb->add_child(open_asset);
+ open_asset->connect("pressed", this, "_asset_open");
+
+ Button *plugins = memnew(Button);
+ plugins->set_text(TTR("Plugins"));
+ search_hb->add_child(plugins);
+ plugins->connect("pressed", this, "_manage_plugins");
+
+ if (p_templates_only) {
+ open_asset->hide();
+ plugins->hide();
+ }
+
+ HBoxContainer *search_hb2 = memnew(HBoxContainer);
+ library_main->add_child(search_hb2);
+
+ search_hb2->add_child(memnew(Label(TTR("Sort:") + " ")));
+ sort = memnew(OptionButton);
+ for (int i = 0; i < SORT_MAX; i++) {
+ sort->add_item(sort_text[i]);
+ }
+
+ search_hb2->add_child(sort);
+
+ sort->set_h_size_flags(SIZE_EXPAND_FILL);
+ sort->connect("item_selected", this, "_rerun_search");
+
+ reverse = memnew(ToolButton);
+ reverse->set_toggle_mode(true);
+ reverse->connect("toggled", this, "_rerun_search");
+ //reverse->set_text(TTR("Reverse"));
+ search_hb2->add_child(reverse);
+
+ search_hb2->add_child(memnew(VSeparator));
+
+ //search_hb2->add_spacer();
+
+ search_hb2->add_child(memnew(Label(TTR("Category:") + " ")));
+ categories = memnew(OptionButton);
+ categories->add_item(TTR("All"));
+ search_hb2->add_child(categories);
+ categories->set_h_size_flags(SIZE_EXPAND_FILL);
+ //search_hb2->add_spacer();
+ categories->connect("item_selected", this, "_rerun_search");
+
+ search_hb2->add_child(memnew(VSeparator));
+
+ search_hb2->add_child(memnew(Label(TTR("Site:") + " ")));
+ repository = memnew(OptionButton);
+
+ // FIXME: Reenable me once GH-7147 is fixed.
+ /*
+ repository->add_item("godotengine.org");
+ repository->set_item_metadata(0, "https://godotengine.org/asset-library/api");
+ */
+ repository->add_item("localhost");
+ repository->set_item_metadata(/*1*/ 0, "http://127.0.0.1/asset-library/api");
+ repository->connect("item_selected", this, "_repository_changed");
+
+ search_hb2->add_child(repository);
+ repository->set_h_size_flags(SIZE_EXPAND_FILL);
+
+ search_hb2->add_child(memnew(VSeparator));
+
+ support = memnew(MenuButton);
+ search_hb2->add_child(support);
+ support->set_text(TTR("Support.."));
+ support->get_popup()->add_check_item(TTR("Official"), SUPPORT_OFFICIAL);
+ support->get_popup()->add_check_item(TTR("Community"), SUPPORT_COMMUNITY);
+ support->get_popup()->add_check_item(TTR("Testing"), SUPPORT_TESTING);
+ support->get_popup()->set_item_checked(SUPPORT_OFFICIAL, true);
+ support->get_popup()->set_item_checked(SUPPORT_COMMUNITY, true);
+ support->get_popup()->connect("id_pressed", this, "_support_toggled");
+
+ /////////
+
+ library_scroll_bg = memnew(PanelContainer);
+ library_main->add_child(library_scroll_bg);
+ library_scroll_bg->set_v_size_flags(SIZE_EXPAND_FILL);
+
+ library_scroll = memnew(ScrollContainer);
+ library_scroll->set_enable_v_scroll(true);
+ library_scroll->set_enable_h_scroll(false);
+
+ library_scroll_bg->add_child(library_scroll);
+
+ Ref<StyleBoxEmpty> border2;
+ border2.instance();
+ border2->set_default_margin(MARGIN_LEFT, 15);
+ border2->set_default_margin(MARGIN_RIGHT, 35);
+ border2->set_default_margin(MARGIN_BOTTOM, 15);
+ border2->set_default_margin(MARGIN_TOP, 15);
+
+ PanelContainer *library_vb_border = memnew(PanelContainer);
+ library_scroll->add_child(library_vb_border);
+ library_vb_border->add_style_override("panel", border2);
+ library_vb_border->set_h_size_flags(SIZE_EXPAND_FILL);
+ library_vb_border->set_mouse_filter(MOUSE_FILTER_PASS);
+
+ library_vb = memnew(VBoxContainer);
+ library_vb->set_h_size_flags(SIZE_EXPAND_FILL);
+
+ library_vb_border->add_child(library_vb);
+ //margin_panel->set_stop_mouse(false);
+
+ asset_top_page = memnew(HBoxContainer);
+ library_vb->add_child(asset_top_page);
+
+ asset_items = memnew(GridContainer);
+ asset_items->set_columns(2);
+ asset_items->add_constant_override("hseparation", 10);
+ asset_items->add_constant_override("vseparation", 10);
+
+ library_vb->add_child(asset_items);
+
+ asset_bottom_page = memnew(HBoxContainer);
+ library_vb->add_child(asset_bottom_page);
+
+ request = memnew(HTTPRequest);
+ add_child(request);
+ request->set_use_threads(EDITOR_DEF("asset_library/use_threads", true));
+ request->connect("request_completed", this, "_http_request_completed");
+
+ last_queue_id = 0;
+
+ library_vb->add_constant_override("separation", 20);
+
+ load_status = memnew(ProgressBar);
+ load_status->set_min(0);
+ load_status->set_max(1);
+ load_status->set_step(0.001);
+ library_main->add_child(load_status);
+
+ error_hb = memnew(HBoxContainer);
+ library_main->add_child(error_hb);
+ error_label = memnew(Label);
+ error_label->add_color_override("color", Color(1, 0.4, 0.3));
+ error_hb->add_child(error_label);
+
+ description = NULL;
+
+ set_process(true);
+
+ downloads_scroll = memnew(ScrollContainer);
+ downloads_scroll->set_enable_h_scroll(true);
+ downloads_scroll->set_enable_v_scroll(false);
+ library_main->add_child(downloads_scroll);
+ downloads_hb = memnew(HBoxContainer);
+ downloads_scroll->add_child(downloads_hb);
+
+ asset_open = memnew(EditorFileDialog);
+
+ asset_open->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
+ asset_open->add_filter("*.zip ; " + TTR("Assets ZIP File"));
+ asset_open->set_mode(EditorFileDialog::MODE_OPEN_FILE);
+ add_child(asset_open);
+ asset_open->connect("file_selected", this, "_asset_file_selected");
+
+ asset_installer = NULL;
+}
+
+///////
+
+void AssetLibraryEditorPlugin::make_visible(bool p_visible) {
+
+ if (p_visible) {
+
+ addon_library->show();
+ } else {
+
+ addon_library->hide();
+ }
+}
+
+AssetLibraryEditorPlugin::AssetLibraryEditorPlugin(EditorNode *p_node) {
+
+ editor = p_node;
+ addon_library = memnew(EditorAssetLibrary);
+ addon_library->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ editor->get_viewport()->add_child(addon_library);
+ addon_library->set_area_as_parent_rect();
+ addon_library->hide();
+}
+
+AssetLibraryEditorPlugin::~AssetLibraryEditorPlugin() {
+}
diff --git a/editor/plugins/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h
new file mode 100644
index 0000000000..35977f3949
--- /dev/null
+++ b/editor/plugins/asset_library_editor_plugin.h
@@ -0,0 +1,328 @@
+/*************************************************************************/
+/* asset_library_editor_plugin.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 ASSET_LIBRARY_EDITOR_PLUGIN_H
+#define ASSET_LIBRARY_EDITOR_PLUGIN_H
+
+#include "editor_plugin.h"
+#include "scene/gui/box_container.h"
+#include "scene/gui/check_box.h"
+#include "scene/gui/line_edit.h"
+#include "scene/gui/link_button.h"
+#include "scene/gui/option_button.h"
+#include "scene/gui/panel_container.h"
+#include "scene/gui/progress_bar.h"
+#include "scene/gui/separator.h"
+#include "scene/gui/tab_container.h"
+
+#include "editor_plugin_settings.h"
+#include "scene/gui/grid_container.h"
+#include "scene/gui/rich_text_label.h"
+#include "scene/gui/scroll_container.h"
+#include "scene/gui/texture_button.h"
+
+#include "editor_asset_installer.h"
+#include "scene/main/http_request.h"
+
+class EditorAssetLibraryItem : public PanelContainer {
+
+ GDCLASS(EditorAssetLibraryItem, PanelContainer);
+
+ TextureButton *icon;
+ LinkButton *title;
+ LinkButton *category;
+ LinkButton *author;
+ TextureRect *stars[5];
+ Label *price;
+
+ int asset_id;
+ int category_id;
+ int author_id;
+
+ void _asset_clicked();
+ void _category_clicked();
+ void _author_clicked();
+
+ void set_image(int p_type, int p_index, const Ref<Texture> &p_image);
+
+protected:
+ void _notification(int p_what);
+ static void _bind_methods();
+
+public:
+ void configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost);
+
+ EditorAssetLibraryItem();
+};
+
+class EditorAssetLibraryItemDescription : public ConfirmationDialog {
+
+ GDCLASS(EditorAssetLibraryItemDescription, ConfirmationDialog);
+
+ EditorAssetLibraryItem *item;
+ RichTextLabel *description;
+ ScrollContainer *previews;
+ HBoxContainer *preview_hb;
+ PanelContainer *previews_bg;
+ PanelContainer *desc_bg;
+
+ struct Preview {
+ int id;
+ bool is_video;
+ String video_link;
+ Button *button;
+ Ref<Texture> image;
+ };
+
+ Vector<Preview> preview_images;
+ TextureRect *preview;
+
+ void set_image(int p_type, int p_index, const Ref<Texture> &p_image);
+
+ int asset_id;
+ String download_url;
+ String title;
+ String sha256;
+ Ref<Texture> icon;
+
+ void _link_click(const String &p_url);
+ void _preview_click(int p_id);
+
+protected:
+ void _notification(int p_what);
+ static void _bind_methods();
+
+public:
+ void configure(const String &p_title, int p_asset_id, const String &p_category, int p_category_id, const String &p_author, int p_author_id, int p_rating, const String &p_cost, int p_version, const String &p_version_string, const String &p_description, const String &p_download_url, const String &p_browse_url, const String &p_sha256_hash);
+ void add_preview(int p_id, bool p_video, const String &p_url);
+
+ String get_title() { return title; }
+ Ref<Texture> get_preview_icon() { return icon; }
+ String get_download_url() { return download_url; }
+ int get_asset_id() { return asset_id; }
+ String get_sha256() { return sha256; }
+ EditorAssetLibraryItemDescription();
+};
+
+class EditorAssetLibraryItemDownload : public PanelContainer {
+
+ GDCLASS(EditorAssetLibraryItemDownload, PanelContainer);
+
+ TextureRect *icon;
+ Label *title;
+ ProgressBar *progress;
+ Button *install;
+ Button *retry;
+ TextureButton *dismiss;
+
+ AcceptDialog *download_error;
+ HTTPRequest *download;
+ String host;
+ String sha256;
+ Label *status;
+
+ int prev_status;
+
+ int asset_id;
+
+ bool external_install;
+
+ EditorAssetInstaller *asset_installer;
+
+ void _close();
+ void _install();
+ void _make_request();
+ void _http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
+
+protected:
+ void _notification(int p_what);
+ static void _bind_methods();
+
+public:
+ void set_external_install(bool p_enable) { external_install = p_enable; }
+ int get_asset_id() { return asset_id; }
+ void configure(const String &p_title, int p_asset_id, const Ref<Texture> &p_preview, const String &p_download_url, const String &p_sha256_hash);
+ EditorAssetLibraryItemDownload();
+};
+
+class EditorAssetLibrary : public PanelContainer {
+ GDCLASS(EditorAssetLibrary, PanelContainer);
+
+ String host;
+
+ EditorFileDialog *asset_open;
+ EditorAssetInstaller *asset_installer;
+
+ void _asset_open();
+ void _asset_file_selected(const String &p_file);
+
+ PanelContainer *library_scroll_bg;
+ ScrollContainer *library_scroll;
+ VBoxContainer *library_vb;
+ LineEdit *filter;
+ OptionButton *categories;
+ OptionButton *repository;
+ OptionButton *sort;
+ ToolButton *reverse;
+ Button *search;
+ ProgressBar *load_status;
+ HBoxContainer *error_hb;
+ Label *error_label;
+ MenuButton *support;
+
+ HBoxContainer *contents;
+
+ HBoxContainer *asset_top_page;
+ GridContainer *asset_items;
+ HBoxContainer *asset_bottom_page;
+
+ HTTPRequest *request;
+
+ bool templates_only;
+
+ enum Support {
+ SUPPORT_OFFICIAL,
+ SUPPORT_COMMUNITY,
+ SUPPORT_TESTING,
+ SUPPORT_MAX
+ };
+
+ enum SortOrder {
+ SORT_RATING,
+ SORT_DOWNLOADS,
+ SORT_NAME,
+ SORT_COST,
+ SORT_UPDATED,
+ SORT_MAX
+ };
+
+ static const char *sort_key[SORT_MAX];
+ static const char *sort_text[SORT_MAX];
+ static const char *support_key[SUPPORT_MAX];
+
+ ///MainListing
+
+ enum ImageType {
+ IMAGE_QUEUE_ICON,
+ IMAGE_QUEUE_THUMBNAIL,
+ IMAGE_QUEUE_SCREENSHOT,
+
+ };
+
+ struct ImageQueue {
+
+ bool active;
+ int queue_id;
+ int asset_id;
+ ImageType image_type;
+ int image_index;
+ String image_url;
+ HTTPRequest *request;
+ ObjectID target;
+ };
+
+ int last_queue_id;
+ Map<int, ImageQueue> image_queue;
+
+ void _image_update(bool use_cache, bool final, const PoolByteArray &p_data, int p_queue_id);
+ void _image_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data, int p_queue_id);
+ void _request_image(ObjectID p_for, String p_image_url, ImageType p_type, int p_image_index);
+ void _update_image_queue();
+
+ HBoxContainer *_make_pages(int p_page, int p_page_count, int p_page_len, int p_total_items, int p_current_items);
+
+ //
+ EditorAssetLibraryItemDescription *description;
+ //
+
+ enum RequestType {
+ REQUESTING_NONE,
+ REQUESTING_CONFIG,
+ REQUESTING_SEARCH,
+ REQUESTING_ASSET,
+ };
+
+ RequestType requesting;
+ Dictionary category_map;
+
+ ScrollContainer *downloads_scroll;
+ HBoxContainer *downloads_hb;
+
+ void _install_asset();
+
+ void _select_author(int p_id);
+ void _select_category(int p_id);
+ void _select_asset(int p_id);
+
+ void _manage_plugins();
+
+ void _search(int p_page = 0);
+ void _rerun_search(int p_ignore);
+ void _api_request(const String &p_request, RequestType p_request_type, const String &p_arguments = "");
+ void _http_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
+ void _http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
+
+ void _repository_changed(int p_repository_id);
+ void _support_toggled(int p_support);
+
+ void _install_external_asset(String p_zip_path, String p_title);
+
+ friend class EditorAssetLibraryItemDescription;
+ friend class EditorAssetLibraryItem;
+
+protected:
+ static void _bind_methods();
+ void _notification(int p_what);
+
+public:
+ EditorAssetLibrary(bool p_templates_only = false);
+};
+
+class AssetLibraryEditorPlugin : public EditorPlugin {
+
+ GDCLASS(AssetLibraryEditorPlugin, EditorPlugin);
+
+ EditorAssetLibrary *addon_library;
+ EditorNode *editor;
+
+public:
+ virtual String get_name() const { return "AssetLib"; }
+ bool has_main_screen() const { return true; }
+ virtual void edit(Object *p_object) {}
+ virtual bool handles(Object *p_object) const { return false; }
+ virtual void make_visible(bool p_visible);
+ //virtual bool get_remove_list(List<Node*> *p_list) { return canvas_item_editor->get_remove_list(p_list); }
+ //virtual Dictionary get_state() const;
+ //virtual void set_state(const Dictionary& p_state);
+
+ AssetLibraryEditorPlugin(EditorNode *p_node);
+ ~AssetLibraryEditorPlugin();
+};
+
+#endif // EDITORASSETLIBRARY_H
diff --git a/editor/plugins/baked_light_baker.cpp b/editor/plugins/baked_light_baker.cpp
deleted file mode 100644
index 036229a7af..0000000000
--- a/editor/plugins/baked_light_baker.cpp
+++ /dev/null
@@ -1,2732 +0,0 @@
-/*************************************************************************/
-/* baked_light_baker.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "baked_light_baker.h"
-
-#include "editor/editor_node.h"
-#include "editor/editor_settings.h"
-#include "io/marshalls.h"
-#include <stdlib.h>
-#include <cmath>
-
-#if 0
-void baked_light_baker_add_64f(double *dst,double value);
-void baked_light_baker_add_64i(int64_t *dst,int64_t value);
-
-//-separar en 2 testuras?
-//*mejorar performance y threads
-//*modos lineales
-//*saturacion
-
-_FORCE_INLINE_ static uint64_t get_uv_normal_bit(const Vector3& p_vector) {
-
- int lat = Math::fast_ftoi(Math::floor(Math::acos(p_vector.dot(Vector3(0,1,0)))*6.0/Math_PI+0.5));
-
- if (lat==0) {
- return 60;
- } else if (lat==6) {
- return 61;
- }
-
- int lon = Math::fast_ftoi(Math::floor( (Math_PI+Math::atan2(p_vector.x,p_vector.z))*12.0/(Math_PI*2.0) + 0.5))%12;
-
- return lon+(lat-1)*12;
-}
-
-
-
-_FORCE_INLINE_ static Vector3 get_bit_normal(int p_bit) {
-
- if (p_bit==61) {
- return Vector3(0,1,0);
- } else if (p_bit==62){
- return Vector3(0,-1,0);
- }
-
- float latang = ((p_bit / 12)+1)*Math_PI/6.0;
-
- Vector2 latv(Math::sin(latang),Math::cos(latang));
-
- float lonang = ((p_bit%12)*Math_PI*2.0/12.0)-Math_PI;
-
- Vector2 lonv(Math::sin(lonang),Math::cos(lonang));
-
- return Vector3(lonv.x*latv.x,latv.y,lonv.y*latv.x).normalized();
-
-}
-
-
-BakedLightBaker::MeshTexture* BakedLightBaker::_get_mat_tex(const Ref<Texture>& p_tex) {
-
- if (!tex_map.has(p_tex)) {
-
- Ref<ImageTexture> imgtex=p_tex;
- if (imgtex.is_null())
- return NULL;
- Image image=imgtex->get_data();
- if (image.empty())
- return NULL;
-
- if (image.get_format()!=Image::FORMAT_RGBA8) {
- if (image.get_format()>Image::FORMAT_INDEXED_ALPHA) {
- Error err = image.decompress();
- if (err)
- return NULL;
- }
-
- if (image.get_format()!=Image::FORMAT_RGBA8)
- image.convert(Image::FORMAT_RGBA8);
- }
-
- if (imgtex->get_flags()&Texture::FLAG_CONVERT_TO_LINEAR) {
- Image copy = image;
- copy.srgb_to_linear();
- image=copy;
- }
-
- PoolVector<uint8_t> dvt=image.get_data();
- PoolVector<uint8_t>::Read r=dvt.read();
- MeshTexture mt;
- mt.tex_w=image.get_width();
- mt.tex_h=image.get_height();
- int len = image.get_width()*image.get_height()*4;
- mt.tex.resize(len);
- copymem(mt.tex.ptr(),r.ptr(),len);
-
- textures.push_back(mt);
- tex_map[p_tex]=&textures.back()->get();
- }
-
- return tex_map[p_tex];
-}
-
-
-void BakedLightBaker::_add_mesh(const Ref<Mesh>& p_mesh,const Ref<Material>& p_mat_override,const Transform& p_xform,int p_baked_texture) {
-
-
- for(int i=0;i<p_mesh->get_surface_count();i++) {
-
- if (p_mesh->surface_get_primitive_type(i)!=Mesh::PRIMITIVE_TRIANGLES)
- continue;
- Ref<Material> mat = p_mat_override.is_valid()?p_mat_override:p_mesh->surface_get_material(i);
-
- MeshMaterial *matptr=NULL;
- int baked_tex=p_baked_texture;
-
- if (mat.is_valid()) {
-
- if (!mat_map.has(mat)) {
-
- MeshMaterial mm;
-
- Ref<SpatialMaterial> fm = mat;
- if (fm.is_valid()) {
- //fixed route
- mm.diffuse.color=fm->get_parameter(SpatialMaterial::PARAM_DIFFUSE);
- if (linear_color)
- mm.diffuse.color=mm.diffuse.color.to_linear();
- mm.diffuse.tex=_get_mat_tex(fm->get_texture(SpatialMaterial::PARAM_DIFFUSE));
- mm.specular.color=fm->get_parameter(SpatialMaterial::PARAM_SPECULAR);
- if (linear_color)
- mm.specular.color=mm.specular.color.to_linear();
-
- mm.specular.tex=_get_mat_tex(fm->get_texture(SpatialMaterial::PARAM_SPECULAR));
- } else {
-
- mm.diffuse.color=Color(1,1,1,1);
- mm.diffuse.tex=NULL;
- mm.specular.color=Color(0,0,0,1);
- mm.specular.tex=NULL;
- }
-
- materials.push_back(mm);
- mat_map[mat]=&materials.back()->get();
-
- }
-
- matptr=mat_map[mat];
-
- }
-
-
- int facecount=0;
-
-
- if (p_mesh->surface_get_format(i)&Mesh::ARRAY_FORMAT_INDEX) {
-
- facecount=p_mesh->surface_get_array_index_len(i);
- } else {
-
- facecount=p_mesh->surface_get_array_len(i);
- }
-
- ERR_CONTINUE((facecount==0 || (facecount%3)!=0));
-
- facecount/=3;
-
- int tbase=triangles.size();
- triangles.resize(facecount+tbase);
-
-
- Array a = p_mesh->surface_get_arrays(i);
-
- PoolVector<Vector3> vertices = a[Mesh::ARRAY_VERTEX];
- PoolVector<Vector3>::Read vr=vertices.read();
- PoolVector<Vector2> uv;
- PoolVector<Vector2>::Read uvr;
- PoolVector<Vector2> uv2;
- PoolVector<Vector2>::Read uv2r;
- PoolVector<Vector3> normal;
- PoolVector<Vector3>::Read normalr;
- bool read_uv=false;
- bool read_normal=false;
-
- if (p_mesh->surface_get_format(i)&Mesh::ARRAY_FORMAT_TEX_UV) {
-
- uv=a[Mesh::ARRAY_TEX_UV];
- uvr=uv.read();
- read_uv=true;
-
- if (mat.is_valid() && mat->get_flag(Material::FLAG_LIGHTMAP_ON_UV2) && p_mesh->surface_get_format(i)&Mesh::ARRAY_FORMAT_TEX_UV2) {
-
- uv2=a[Mesh::ARRAY_TEX_UV2];
- uv2r=uv2.read();
-
- } else {
- uv2r=uv.read();
- if (baked_light->get_transfer_lightmaps_only_to_uv2()) {
- baked_tex=-1;
- }
- }
- }
-
- if (p_mesh->surface_get_format(i)&Mesh::ARRAY_FORMAT_NORMAL) {
-
- normal=a[Mesh::ARRAY_NORMAL];
- normalr=normal.read();
- read_normal=true;
- }
-
- Matrix3 normal_xform = p_xform.basis.inverse().transposed();
-
-
- if (p_mesh->surface_get_format(i)&Mesh::ARRAY_FORMAT_INDEX) {
-
- PoolVector<int> indices = a[Mesh::ARRAY_INDEX];
- PoolVector<int>::Read ir = indices.read();
-
- for(int i=0;i<facecount;i++) {
- Triangle &t=triangles[tbase+i];
- t.vertices[0]=p_xform.xform(vr[ ir[i*3+0] ]);
- t.vertices[1]=p_xform.xform(vr[ ir[i*3+1] ]);
- t.vertices[2]=p_xform.xform(vr[ ir[i*3+2] ]);
- t.material=matptr;
- t.baked_texture=baked_tex;
- if (read_uv) {
-
- t.uvs[0]=uvr[ ir[i*3+0] ];
- t.uvs[1]=uvr[ ir[i*3+1] ];
- t.uvs[2]=uvr[ ir[i*3+2] ];
-
- t.bake_uvs[0]=uv2r[ ir[i*3+0] ];
- t.bake_uvs[1]=uv2r[ ir[i*3+1] ];
- t.bake_uvs[2]=uv2r[ ir[i*3+2] ];
- }
- if (read_normal) {
-
- t.normals[0]=normal_xform.xform(normalr[ ir[i*3+0] ]).normalized();
- t.normals[1]=normal_xform.xform(normalr[ ir[i*3+1] ]).normalized();
- t.normals[2]=normal_xform.xform(normalr[ ir[i*3+2] ]).normalized();
- }
- }
-
- } else {
-
- for(int i=0;i<facecount;i++) {
- Triangle &t=triangles[tbase+i];
- t.vertices[0]=p_xform.xform(vr[ i*3+0 ]);
- t.vertices[1]=p_xform.xform(vr[ i*3+1 ]);
- t.vertices[2]=p_xform.xform(vr[ i*3+2 ]);
- t.material=matptr;
- t.baked_texture=baked_tex;
- if (read_uv) {
-
- t.uvs[0]=uvr[ i*3+0 ];
- t.uvs[1]=uvr[ i*3+1 ];
- t.uvs[2]=uvr[ i*3+2 ];
-
- t.bake_uvs[0]=uv2r[ i*3+0 ];
- t.bake_uvs[1]=uv2r[ i*3+1 ];
- t.bake_uvs[2]=uv2r[ i*3+2 ];
-
- }
- if (read_normal) {
-
- t.normals[0]=normal_xform.xform(normalr[ i*3+0 ]).normalized();
- t.normals[1]=normal_xform.xform(normalr[ i*3+1 ]).normalized();
- t.normals[2]=normal_xform.xform(normalr[ i*3+2 ]).normalized();
- }
- }
- }
- }
-
-}
-
-
-void BakedLightBaker::_parse_geometry(Node* p_node) {
-
- if (p_node->cast_to<MeshInstance>()) {
-
- MeshInstance *meshi=p_node->cast_to<MeshInstance>();
- Ref<Mesh> mesh=meshi->get_mesh();
- if (mesh.is_valid()) {
- _add_mesh(mesh,meshi->get_material_override(),base_inv * meshi->get_global_transform(),meshi->get_baked_light_texture_id());
- }
- } else if (p_node->cast_to<Light>()) {
-
- Light *dl=p_node->cast_to<Light>();
-
- if (dl->get_bake_mode()!=Light::BAKE_MODE_DISABLED) {
-
-
- LightData dirl;
- dirl.type=VS::LightType(dl->get_light_type());
- dirl.diffuse=dl->get_color(DirectionalLight::COLOR_DIFFUSE);
- dirl.specular=dl->get_color(DirectionalLight::COLOR_SPECULAR);
- if (linear_color)
- dirl.diffuse=dirl.diffuse.to_linear();
- if (linear_color)
- dirl.specular=dirl.specular.to_linear();
-
- dirl.energy=dl->get_parameter(DirectionalLight::PARAM_ENERGY);
- dirl.pos=dl->get_global_transform().origin;
- dirl.up=dl->get_global_transform().basis.get_axis(1).normalized();
- dirl.left=dl->get_global_transform().basis.get_axis(0).normalized();
- dirl.dir=-dl->get_global_transform().basis.get_axis(2).normalized();
- dirl.spot_angle=dl->get_parameter(DirectionalLight::PARAM_SPOT_ANGLE);
- dirl.spot_attenuation=dl->get_parameter(DirectionalLight::PARAM_SPOT_ATTENUATION);
- dirl.attenuation=dl->get_parameter(DirectionalLight::PARAM_ATTENUATION);
- dirl.darkening=dl->get_parameter(DirectionalLight::PARAM_SHADOW_DARKENING);
- dirl.radius=dl->get_parameter(DirectionalLight::PARAM_RADIUS);
- dirl.bake_direct=dl->get_bake_mode()==Light::BAKE_MODE_FULL;
- dirl.rays_thrown=0;
- dirl.bake_shadow=dl->get_bake_mode()==Light::BAKE_MODE_INDIRECT_AND_SHADOWS;
- lights.push_back(dirl);
- }
-
- } else if (p_node->cast_to<Spatial>()){
-
- Spatial *sp = p_node->cast_to<Spatial>();
-
- Array arr = p_node->call("_get_baked_light_meshes");
- for(int i=0;i<arr.size();i+=2) {
-
- Transform xform=arr[i];
- Ref<Mesh> mesh=arr[i+1];
- _add_mesh(mesh,Ref<Material>(),base_inv * (sp->get_global_transform() * xform));
- }
- }
-
- for(int i=0;i<p_node->get_child_count();i++) {
-
- _parse_geometry(p_node->get_child(i));
- }
-}
-
-
-void BakedLightBaker::_fix_lights() {
-
-
- total_light_area=0;
- for(int i=0;i<lights.size();i++) {
-
- LightData &dl=lights[i];
-
- switch(dl.type) {
- case VS::LIGHT_DIRECTIONAL: {
-
- float up_max=-1e10;
- float dir_max=-1e10;
- float left_max=-1e10;
- float up_min=1e10;
- float dir_min=1e10;
- float left_min=1e10;
-
- for(int j=0;j<triangles.size();j++) {
-
- for(int k=0;k<3;k++) {
-
- Vector3 v = triangles[j].vertices[k];
-
- float up_d = dl.up.dot(v);
- float dir_d = dl.dir.dot(v);
- float left_d = dl.left.dot(v);
-
- if (up_d>up_max)
- up_max=up_d;
- if (up_d<up_min)
- up_min=up_d;
-
- if (left_d>left_max)
- left_max=left_d;
- if (left_d<left_min)
- left_min=left_d;
-
- if (dir_d>dir_max)
- dir_max=dir_d;
- if (dir_d<dir_min)
- dir_min=dir_d;
-
- }
- }
-
- //make a center point, then the upvector and leftvector
- dl.pos = dl.left*( left_max+left_min )*0.5 + dl.up*( up_max+up_min )*0.5 + dl.dir*(dir_min-(dir_max-dir_min));
- dl.left*=(left_max-left_min)*0.5;
- dl.up*=(up_max-up_min)*0.5;
- dl.length = (dir_max - dir_min)*10; //arbitrary number to keep it in scale
- dl.area=dl.left.length()*2*dl.up.length()*2;
- dl.constant=1.0/dl.area;
- } break;
- case VS::LIGHT_OMNI:
- case VS::LIGHT_SPOT: {
-
- dl.attenuation_table.resize(ATTENUATION_CURVE_LEN);
- for(int j=0;j<ATTENUATION_CURVE_LEN;j++) {
- dl.attenuation_table[j]=1.0-Math::pow(j/float(ATTENUATION_CURVE_LEN),dl.attenuation);
- float falloff=j*dl.radius/float(ATTENUATION_CURVE_LEN);
- if (falloff==0)
- falloff=0.000001;
- float intensity=4*Math_PI*(falloff*falloff);
- //dl.attenuation_table[j]*=falloff*falloff;
- dl.attenuation_table[j]*=1.0/(3.0/intensity);
-
- }
- if (dl.type==VS::LIGHT_OMNI) {
-
- dl.area=4.0*Math_PI*pow(dl.radius,2.0f);
- dl.constant=1.0/3.5;
- } else {
-
-
- float r = Math::tan(Math::deg2rad(dl.spot_angle))*dl.radius;
- float c = 1.0-(Math::deg2rad(dl.spot_angle)*0.5+0.5);
- dl.constant=1.0/3.5;
- dl.constant*=1.0/c;
-
- dl.area=Math_PI*r*r*c;
- }
-
- } break;
-
-
- }
-
- total_light_area+=dl.area;
- }
-}
-
-BakedLightBaker::BVH* BakedLightBaker::_parse_bvh(BVH** p_children, int p_size, int p_depth, int &max_depth) {
-
- if (p_depth>max_depth) {
- max_depth=p_depth;
- }
-
- if (p_size==1) {
-
- return p_children[0];
- } else if (p_size==0) {
-
- return NULL;
- }
-
-
- AABB aabb;
- aabb=p_children[0]->aabb;
- for(int i=1;i<p_size;i++) {
-
- aabb.merge_with(p_children[i]->aabb);
- }
-
- int li=aabb.get_longest_axis_index();
-
- switch(li) {
-
- case Vector3::AXIS_X: {
- SortArray<BVH*,BVHCmpX> sort_x;
- sort_x.nth_element(0,p_size,p_size/2,p_children);
- //sort_x.sort(&p_bb[p_from],p_size);
- } break;
- case Vector3::AXIS_Y: {
- SortArray<BVH*,BVHCmpY> sort_y;
- sort_y.nth_element(0,p_size,p_size/2,p_children);
- //sort_y.sort(&p_bb[p_from],p_size);
- } break;
- case Vector3::AXIS_Z: {
- SortArray<BVH*,BVHCmpZ> sort_z;
- sort_z.nth_element(0,p_size,p_size/2,p_children);
- //sort_z.sort(&p_bb[p_from],p_size);
-
- } break;
- }
-
-
- BVH* left = _parse_bvh(p_children,p_size/2,p_depth+1,max_depth);
- BVH* right = _parse_bvh(&p_children[p_size/2],p_size-p_size/2,p_depth+1,max_depth);
-
- BVH *_new = memnew(BVH);
- _new->aabb=aabb;
- _new->center=aabb.pos+aabb.size*0.5;
- _new->children[0]=left;
- _new->children[1]=right;
- _new->leaf=NULL;
-
- return _new;
-}
-
-void BakedLightBaker::_make_bvh() {
-
- Vector<BVH*> bases;
- bases.resize(triangles.size());
- int max_depth=0;
- for(int i=0;i<triangles.size();i++) {
- bases[i]=memnew( BVH );
- bases[i]->leaf=&triangles[i];
- bases[i]->aabb.pos=triangles[i].vertices[0];
- bases[i]->aabb.expand_to(triangles[i].vertices[1]);
- bases[i]->aabb.expand_to(triangles[i].vertices[2]);
- triangles[i].aabb=bases[i]->aabb;
- bases[i]->center=bases[i]->aabb.pos+bases[i]->aabb.size*0.5;
- }
-
- bvh=_parse_bvh(bases.ptr(),bases.size(),1,max_depth);
-
- ray_stack = memnew_arr(uint32_t,max_depth);
- bvh_stack = memnew_arr(BVH*,max_depth);
-
- bvh_depth = max_depth;
-}
-
-void BakedLightBaker::_octree_insert(int p_octant,Triangle* p_triangle, int p_depth) {
-
-
-
-
- uint32_t *stack=octant_stack;
- uint32_t *ptr_stack=octantptr_stack;
- Octant *octants=octant_pool.ptr();
-
- stack[0]=0;
- ptr_stack[0]=0;
-
- int stack_pos=0;
-
-
- while(true) {
-
- Octant *octant=&octants[ptr_stack[stack_pos]];
- if (stack[stack_pos]<8) {
-
- int i = stack[stack_pos];
- stack[stack_pos]++;
-
-
-
- //fit_aabb=fit_aabb.grow(bvh->aabb.size.x*0.0001);
-
- int child_idx =octant->children[i];
- bool encloses;
- if (!child_idx) {
-
- AABB aabb=octant->aabb;
- aabb.size*=0.5;
- if (i&1)
- aabb.pos.x+=aabb.size.x;
- if (i&2)
- aabb.pos.y+=aabb.size.y;
- if (i&4)
- aabb.pos.z+=aabb.size.z;
-
- aabb.grow_by(cell_size*octree_extra_margin);
- if (!aabb.intersects(p_triangle->aabb))
- continue;
- encloses=aabb.grow(cell_size*-octree_extra_margin*2.0).encloses(p_triangle->aabb);
- if (!encloses && !Face3(p_triangle->vertices[0],p_triangle->vertices[1],p_triangle->vertices[2]).intersects_aabb2(aabb))
- continue;
- } else {
-
- Octant *child=&octants[child_idx];
- AABB aabb=child->aabb;
- aabb.grow_by(cell_size*octree_extra_margin);
- if (!aabb.intersects(p_triangle->aabb))
- continue;
- encloses=aabb.grow(cell_size*-octree_extra_margin*2.0).encloses(p_triangle->aabb);
- if (!encloses && !Face3(p_triangle->vertices[0],p_triangle->vertices[1],p_triangle->vertices[2]).intersects_aabb2(aabb))
- continue;
-
- }
-
- if (encloses)
- stack[stack_pos]=8; // quick and dirty opt
-
- if (!child_idx) {
-
-
- if (octant_pool_size==octant_pool.size()) {
- octant_pool.resize(octant_pool_size+OCTANT_POOL_CHUNK);
- octants=octant_pool.ptr();
- octant=&octants[ptr_stack[stack_pos]];
- }
- child_idx=octant_pool_size++;
- octant->children[i]=child_idx;
- Octant *child=&octants[child_idx];
-
- child->aabb=octant->aabb;
- child->texture_x=0;
- child->texture_y=0;
-
- child->aabb.size*=0.5;
- if (i&1)
- child->aabb.pos.x+=child->aabb.size.x;
- if (i&2)
- child->aabb.pos.y+=child->aabb.size.y;
- if (i&4)
- child->aabb.pos.z+=child->aabb.size.z;
-
-
- child->full_accum[0]=0;
- child->full_accum[1]=0;
- child->full_accum[2]=0;
- child->sampler_ofs=0;
-
-
-
- if (stack_pos==octree_depth-1) {
- child->leaf=true;
- child->offset[0]=child->aabb.pos.x+child->aabb.size.x*0.5;
- child->offset[1]=child->aabb.pos.y+child->aabb.size.y*0.5;
- child->offset[2]=child->aabb.pos.z+child->aabb.size.z*0.5;
- child->next_leaf=leaf_list;
-
-
- for(int ci=0;ci<8;ci++) {
- child->normal_accum[ci][0]=0;
- child->normal_accum[ci][1]=0;
- child->normal_accum[ci][2]=0;
-
- }
-
- child->bake_neighbour=0;
- child->first_neighbour=true;
- leaf_list=child_idx;
- cell_count++;
-
- for(int ci=0;ci<8;ci++) {
- child->light_accum[ci][0]=0;
- child->light_accum[ci][1]=0;
- child->light_accum[ci][2]=0;
- }
-
- child->parent=ptr_stack[stack_pos];
-
- } else {
-
- child->leaf=false;
- for(int j=0;j<8;j++) {
- child->children[j]=0;
- }
- }
- }
-
- if (!octants[child_idx].leaf) {
- stack_pos++;
- stack[stack_pos]=0;
- ptr_stack[stack_pos]=child_idx;
- } else {
-
- Octant *child=&octants[child_idx];
-
- Vector3 n = Plane(p_triangle->vertices[0],p_triangle->vertices[1],p_triangle->vertices[2]).normal;
-
-
- for(int ci=0;ci<8;ci++) {
-
- Vector3 pos = child->aabb.pos;
-
- if (ci&1)
- pos.x+=child->aabb.size.x;
- if (ci&2)
- pos.y+=child->aabb.size.y;
- if (ci&4)
- pos.z+=child->aabb.size.z;
-
-
- pos.x=floor((pos.x+cell_size*0.5)/cell_size);
- pos.y=floor((pos.y+cell_size*0.5)/cell_size);
- pos.z=floor((pos.z+cell_size*0.5)/cell_size);
-
- {
- Map<Vector3,Vector3>::Element *E=endpoint_normal.find(pos);
- if (!E) {
- endpoint_normal[pos]=n;
- } else {
- E->get()+=n;
- }
- }
-
- {
-
- uint64_t bit = get_uv_normal_bit(n);
-
- Map<Vector3,uint64_t>::Element *E=endpoint_normal_bits.find(pos);
- if (!E) {
- endpoint_normal_bits[pos]=(1<<bit);
- } else {
- E->get()|=(1<<bit);
- }
-
- }
-
- }
-
- }
-
-
- } else {
- stack_pos--;
- if (stack_pos<0)
- break;
- }
- }
-
-
-}
-
-
-void BakedLightBaker::_make_octree() {
-
-
- AABB base = bvh->aabb;
- float lal=base.get_longest_axis_size();
- //must be square because we want square blocks
- base.size.x=lal;
- base.size.y=lal;
- base.size.z=lal;
- base.grow_by(lal*0.001); //for precision
- octree_aabb=base;
-
- cell_size=base.size.x;
- for(int i=0;i<octree_depth;i++)
- cell_size/=2.0;
- octant_stack = memnew_arr(uint32_t,octree_depth*2 );
- octantptr_stack = memnew_arr(uint32_t,octree_depth*2 );
-
- octant_pool.resize(OCTANT_POOL_CHUNK);
- octant_pool_size=1;
- Octant *root=octant_pool.ptr();
- root->leaf=false;
- root->aabb=octree_aabb;
- root->parent=-1;
- for(int i=0;i<8;i++)
- root->children[i]=0;
-
- EditorProgress ep("bake_octree",vformat(TTR("Parsing %d Triangles:"), triangles.size()),triangles.size());
-
- for(int i=0;i<triangles.size();i++) {
-
- _octree_insert(0,&triangles[i],octree_depth-1);
- if ((i%1000)==0) {
-
- ep.step(TTR("Triangle #")+itos(i),i);
- }
- }
-
- {
- uint32_t oct_idx=leaf_list;
- Octant *octants=octant_pool.ptr();
- while(oct_idx) {
-
- BakedLightBaker::Octant *oct = &octants[oct_idx];
- for(int ci=0;ci<8;ci++) {
-
-
- Vector3 pos = oct->aabb.pos;
-
- if (ci&1)
- pos.x+=oct->aabb.size.x;
- if (ci&2)
- pos.y+=oct->aabb.size.y;
- if (ci&4)
- pos.z+=oct->aabb.size.z;
-
-
- pos.x=floor((pos.x+cell_size*0.5)/cell_size);
- pos.y=floor((pos.y+cell_size*0.5)/cell_size);
- pos.z=floor((pos.z+cell_size*0.5)/cell_size);
-
- {
- Map<Vector3,Vector3>::Element *E=endpoint_normal.find(pos);
- if (!E) {
- //?
- print_line("lolwut?");
- } else {
- Vector3 n = E->get().normalized();
- oct->normal_accum[ci][0]=n.x;
- oct->normal_accum[ci][1]=n.y;
- oct->normal_accum[ci][2]=n.z;
-
- }
-
- }
-
- {
-
- Map<Vector3,uint64_t>::Element *E=endpoint_normal_bits.find(pos);
- if (!E) {
- //?
- print_line("lolwut?");
- } else {
-
- float max_aper=0;
- for(uint64_t i=0;i<62;i++) {
-
- if (!(E->get()&(1<<i)))
- continue;
- Vector3 ang_i = get_bit_normal(i);
-
- for(uint64_t j=0;j<62;j++) {
-
- if (i==j)
- continue;
- if (!(E->get()&(1<<j)))
- continue;
- Vector3 ang_j = get_bit_normal(j);
- float ang = Math::acos(ang_i.dot(ang_j));
- if (ang>max_aper)
- max_aper=ang;
- }
- }
- if (max_aper>0.75*Math_PI) {
- //angle too wide prevent problems and forget
- oct->normal_accum[ci][0]=0;
- oct->normal_accum[ci][1]=0;
- oct->normal_accum[ci][2]=0;
- }
- }
- }
-
-
- }
-
- oct_idx=oct->next_leaf;
- }
- }
-
-
-}
-
-
-
-
-
-void BakedLightBaker::_plot_light(ThreadStack& thread_stack,const Vector3& p_plot_pos, const AABB& p_plot_aabb, const Color& p_light,const Color& p_tint_light,bool p_only_full, const Plane& p_plane) {
-
- //stackless version
-
- uint32_t *stack=thread_stack.octant_stack;
- uint32_t *ptr_stack=thread_stack.octantptr_stack;
- Octant *octants=octant_pool.ptr();
-
- stack[0]=0;
- ptr_stack[0]=0;
-
- int stack_pos=0;
-
-
- while(true) {
-
- Octant &octant=octants[ptr_stack[stack_pos]];
-
- if (stack[stack_pos]==0) {
-
-
- Vector3 pos = octant.aabb.pos + octant.aabb.size*0.5;
- float md = 1<<(octree_depth - stack_pos );
- float r=cell_size*plot_size*md;
- float div = 1.0/(md*md*md);
- //div=1.0;
-
-
- float d = p_plot_pos.distance_to(pos);
-
- if ((p_plane.distance_to(pos)>-cell_size*1.75*md) && d<=r) {
-
-
- float intensity = 1.0 - (d/r)*(d/r); //not gauss but..
-
- baked_light_baker_add_64f(&octant.full_accum[0],p_tint_light.r*intensity*div);
- baked_light_baker_add_64f(&octant.full_accum[1],p_tint_light.g*intensity*div);
- baked_light_baker_add_64f(&octant.full_accum[2],p_tint_light.b*intensity*div);
- }
- }
-
- if (octant.leaf) {
-
-
-
- //if (p_plane.normal.dot(octant.aabb.get_support(p_plane.normal)) < p_plane.d-CMP_EPSILON) { //octants behind are no go
-
-
- if (!p_only_full) {
- float r=cell_size*plot_size;
- for(int i=0;i<8;i++) {
- Vector3 pos=octant.aabb.pos;
- if (i&1)
- pos.x+=octant.aabb.size.x;
- if (i&2)
- pos.y+=octant.aabb.size.y;
- if (i&4)
- pos.z+=octant.aabb.size.z;
-
-
-
- float d = p_plot_pos.distance_to(pos);
-
- if ((p_plane.distance_to(pos)>-cell_size*1.75) && d<=r) {
-
-
- float intensity = 1.0 - (d/r)*(d/r); //not gauss but..
- if (edge_damp>0) {
- Vector3 normal = Vector3(octant.normal_accum[i][0],octant.normal_accum[i][1],octant.normal_accum[i][2]);
- if (normal.x>0 || normal.y>0 || normal.z>0) {
-
- float damp = Math::abs(p_plane.normal.dot(normal));
- intensity*=pow(damp,edge_damp);
-
- }
- }
-
- //intensity*=1.0-Math::abs(p_plane.distance_to(pos))/(plot_size*cell_size);
- //intensity = Math::cos(d*Math_PI*0.5/r);
-
- baked_light_baker_add_64f(&octant.light_accum[i][0],p_light.r*intensity);
- baked_light_baker_add_64f(&octant.light_accum[i][1],p_light.g*intensity);
- baked_light_baker_add_64f(&octant.light_accum[i][2],p_light.b*intensity);
-
-
- }
- }
- }
-
- stack_pos--;
- } else if (stack[stack_pos]<8) {
-
- int i = stack[stack_pos];
- stack[stack_pos]++;
-
- if (!octant.children[i]) {
- continue;
- }
-
- Octant &child=octants[octant.children[i]];
-
- if (!child.aabb.intersects(p_plot_aabb))
- continue;
-
- if (child.aabb.encloses(p_plot_aabb)) {
- stack[stack_pos]=8; //don't test the rest
- }
-
- stack_pos++;
- stack[stack_pos]=0;
- ptr_stack[stack_pos]=octant.children[i];
- } else {
- stack_pos--;
- if (stack_pos<0)
- break;
- }
- }
-
-
-}
-
-
-float BakedLightBaker::_throw_ray(ThreadStack& thread_stack,bool p_bake_direct,const Vector3& p_begin, const Vector3& p_end,float p_rest,const Color& p_light,float *p_att_curve,float p_att_pos,int p_att_curve_len,int p_bounces,bool p_first_bounce,bool p_only_dist) {
-
-
- uint32_t* stack = thread_stack.ray_stack;
- BVH **bstack = thread_stack.bvh_stack;
-
- enum {
- TEST_AABB_BIT=0,
- VISIT_LEFT_BIT=1,
- VISIT_RIGHT_BIT=2,
- VISIT_DONE_BIT=3,
-
-
- };
-
- Vector3 n = (p_end-p_begin);
- float len=n.length();
- if (len==0)
- return 0;
- n/=len;
-
-
-
- real_t d=1e10;
- bool inters=false;
- Vector3 r_normal;
- Vector3 r_point;
- Vector3 end=p_end;
-
- Triangle *triangle=NULL;
-
- /*
- for(int i=0;i<max_depth;i++)
- stack[i]=0;
- */
-
- int level=0;
- //AABB ray_aabb;
- //ray_aabb.pos=p_begin;
- //ray_aabb.expand_to(p_end);
-
-
- bstack[0]=bvh;
- stack[0]=TEST_AABB_BIT;
-
-
- while(true) {
-
- uint32_t mode = stack[level];
- const BVH &b = *bstack[level];
- bool done=false;
-
- switch(mode) {
- case TEST_AABB_BIT: {
-
- if (b.leaf) {
-
-
- Face3 f3(b.leaf->vertices[0],b.leaf->vertices[1],b.leaf->vertices[2]);
-
-
- Vector3 res;
-
- if (f3.intersects_segment(p_begin,end,&res)) {
-
-
- float nd = n.dot(res);
- if (nd<d) {
-
- d=nd;
- r_point=res;
- end=res;
- len=(p_begin-end).length();
- r_normal=f3.get_plane().get_normal();
- triangle=b.leaf;
- inters=true;
- }
-
- }
-
- stack[level]=VISIT_DONE_BIT;
- } else {
-
-
- bool valid = b.aabb.smits_intersect_ray(p_begin,n,0,len);
- //bool valid = b.aabb.intersects_segment(p_begin,p_end);
- //bool valid = b.aabb.intersects(ray_aabb);
-
- if (!valid) {
-
- stack[level]=VISIT_DONE_BIT;
-
- } else {
-
- stack[level]=VISIT_LEFT_BIT;
- }
- }
-
- } continue;
- case VISIT_LEFT_BIT: {
-
- stack[level]=VISIT_RIGHT_BIT;
- bstack[level+1]=b.children[0];
- stack[level+1]=TEST_AABB_BIT;
- level++;
-
- } continue;
- case VISIT_RIGHT_BIT: {
-
- stack[level]=VISIT_DONE_BIT;
- bstack[level+1]=b.children[1];
- stack[level+1]=TEST_AABB_BIT;
- level++;
- } continue;
- case VISIT_DONE_BIT: {
-
- if (level==0) {
- done=true;
- break;
- } else
- level--;
-
- } continue;
- }
-
-
- if (done)
- break;
- }
-
-
-
- if (inters) {
-
- if (p_only_dist) {
-
- return p_begin.distance_to(r_point);
- }
-
-
- //should check if there is normals first
- Vector2 uv;
- if (true) {
-
- triangle->get_uv_and_normal(r_point,uv,r_normal);
-
- } else {
-
- }
-
- if (n.dot(r_normal)>0)
- return -1;
-
- if (n.dot(r_normal)>0)
- r_normal=-r_normal;
-
-
- //ok...
- Color diffuse_at_point(0.8,0.8,0.8);
- Color specular_at_point(0.0,0.0,0.0);
-
-
- float dist = p_begin.distance_to(r_point);
-
- AABB aabb;
- aabb.pos=r_point;
- aabb.pos-=Vector3(1,1,1)*cell_size*plot_size;
- aabb.size=Vector3(2,2,2)*cell_size*plot_size;
-
- Color res_light=p_light;
- float att=1.0;
- float dp=(1.0-normal_damp)*n.dot(-r_normal)+normal_damp;
-
- if (p_att_curve) {
-
- p_att_pos+=dist;
- int cpos = Math::fast_ftoi((p_att_pos/p_att_curve_len)*ATTENUATION_CURVE_LEN);
- cpos=CLAMP(cpos,0,ATTENUATION_CURVE_LEN-1);
- att=p_att_curve[cpos];
- }
-
-
- res_light.r*=dp;
- res_light.g*=dp;
- res_light.b*=dp;
-
- //light is plotted before multiplication with diffuse, this way
- //the multiplication can happen with more detail in the shader
-
-
-
- if (triangle->material) {
-
- //triangle->get_uv(r_point);
-
- diffuse_at_point=triangle->material->diffuse.get_color(uv);
- specular_at_point=triangle->material->specular.get_color(uv);
- }
-
-
- diffuse_at_point.r=res_light.r*diffuse_at_point.r;
- diffuse_at_point.g=res_light.g*diffuse_at_point.g;
- diffuse_at_point.b=res_light.b*diffuse_at_point.b;
-
- if (p_bounces>0) {
-
-
- p_rest-=dist;
- if (p_rest<CMP_EPSILON)
- return 0;
-
- if (r_normal==-n)
- return 0; //todo change a little
-
- r_point+=r_normal*0.01;
-
-
-
-
- specular_at_point.r=res_light.r*specular_at_point.r;
- specular_at_point.g=res_light.g*specular_at_point.g;
- specular_at_point.b=res_light.b*specular_at_point.b;
-
-
-
- if (use_diffuse && (diffuse_at_point.r>CMP_EPSILON || diffuse_at_point.g>CMP_EPSILON || diffuse_at_point.b>CMP_EPSILON)) {
- //diffuse bounce
-
- Vector3 c1=r_normal.cross(n).normalized();
- Vector3 c2=r_normal.cross(c1).normalized();
- double r1 = double(rand())/RAND_MAX;
- double r2 = double(rand())/RAND_MAX;
- double r3 = double(rand())/RAND_MAX;
-#if 0
- Vector3 next = - ((c1*(r1-0.5)) + (c2*(r2-0.5)) + (r_normal*(r3-0.5))).normalized()*0.5 + r_normal*0.5;
-
- if (next==Vector3())
- next=r_normal;
- Vector3 rn=next.normalized();
-
-#else
- Vector3 rn = ((c1*(r1-0.5)) + (c2*(r2-0.5)) + (r_normal*r3*0.5)).normalized();
-#endif
-
-
- _throw_ray(thread_stack,p_bake_direct,r_point,r_point+rn*p_rest,p_rest,diffuse_at_point,p_att_curve,p_att_pos,p_att_curve_len,p_bounces-1);
- }
-
- if (use_specular && (specular_at_point.r>CMP_EPSILON || specular_at_point.g>CMP_EPSILON || specular_at_point.b>CMP_EPSILON)) {
- //specular bounce
-
- //Vector3 c1=r_normal.cross(n).normalized();
- //Vector3 c2=r_normal.cross(c1).normalized();
-
- Vector3 rn = n - r_normal *r_normal.dot(n) * 2.0;
-
- _throw_ray(thread_stack,p_bake_direct,r_point,r_point+rn*p_rest,p_rest,specular_at_point,p_att_curve,p_att_pos,p_att_curve_len,p_bounces-1);
- }
- }
-
- //specular later
- //_plot_light_point(r_point,octree,octree_aabb,p_light);
-
-
- Color plot_light=res_light.linear_interpolate(diffuse_at_point,tint);
- plot_light.r*=att;
- plot_light.g*=att;
- plot_light.b*=att;
- Color tint_light=diffuse_at_point;
- tint_light.r*=att;
- tint_light.g*=att;
- tint_light.b*=att;
-
- bool skip=false;
-
- if (!p_first_bounce || p_bake_direct) {
-
-
- float r = plot_size * cell_size*2;
- if (dist<r) {
- //avoid accumulaiton of light on corners
- //plot_light=plot_light.linear_interpolate(Color(0,0,0,0),1.0-sd/plot_size*plot_size);
- skip=true;
-
- } else {
-
-
- Vector3 c1=r_normal.cross(n).normalized();
- Vector3 c2=r_normal.cross(c1).normalized();
- double r1 = double(rand())/RAND_MAX;
- double r2 = double(rand())/RAND_MAX;
- double r3 = double(rand())/RAND_MAX;
- Vector3 rn = ((c1*(r1-0.5)) + (c2*(r2-0.5)) + (r_normal*r3*0.25)).normalized();
- float d =_throw_ray(thread_stack,p_bake_direct,r_point,r_point+rn*p_rest,p_rest,diffuse_at_point,p_att_curve,p_att_pos,p_att_curve_len,p_bounces-1,false,true);
- r = plot_size*cell_size*ao_radius;
- if (d>0 && d<r) {
- //avoid accumulaiton of light on corners
- //plot_light=plot_light.linear_interpolate(Color(0,0,0,0),1.0-sd/plot_size*plot_size);
- skip=true;
-
- } else {
- //plot_light=Color(0,0,0,0);
- }
- }
- }
-
-
- Plane plane(r_point,r_normal);
- if (!skip)
- _plot_light(thread_stack,r_point,aabb,plot_light,tint_light,!(!p_first_bounce || p_bake_direct),plane);
-
-
- return dist;
- }
-
- return -1;
-
-}
-
-
-
-
-void BakedLightBaker::_make_octree_texture() {
-
-
- BakedLightBaker::Octant *octants=octant_pool.ptr();
-
- //find neighbours first, to have a better idea of what amount of space is needed
- {
-
- Vector<OctantHash> octant_hashing;
- octant_hashing.resize(octant_pool_size);
- Vector<uint32_t> hash_table;
- int hash_table_size=Math::larger_prime(16384);
- hash_table.resize(hash_table_size);
- uint32_t*hashptr = hash_table.ptr();
- OctantHash*octhashptr = octant_hashing.ptr();
-
- for(int i=0;i<hash_table_size;i++)
- hashptr[i]=0;
-
-
- //step 1 add to hash table
-
- uint32_t oct_idx=leaf_list;
-
-
- while(oct_idx) {
-
- BakedLightBaker::Octant *oct = &octants[oct_idx];
- uint64_t base=0;
- Vector3 pos = oct->aabb.pos - octree_aabb.pos; //make sure is always positive
- base=int((pos.x+cell_size*0.5)/cell_size);
- base<<=16;
- base|=int((pos.y+cell_size*0.5)/cell_size);
- base<<=16;
- base|=int((pos.z+cell_size*0.5)/cell_size);
-
- uint32_t hash = HashMapHasherDefault::hash(base);
- uint32_t idx = hash % hash_table_size;
- octhashptr[oct_idx].next=hashptr[idx];
- octhashptr[oct_idx].hash=hash;
- octhashptr[oct_idx].value=base;
- hashptr[idx]=oct_idx;
-
- oct_idx=oct->next_leaf;
-
- }
-
- //step 2 find neighbours
- oct_idx=leaf_list;
- int neighbours=0;
-
-
- while(oct_idx) {
-
- BakedLightBaker::Octant *oct = &octants[oct_idx];
- Vector3 pos = oct->aabb.pos - octree_aabb.pos; //make sure is always positive
- pos.x+=cell_size;
- uint64_t base=0;
- base=int((pos.x+cell_size*0.5)/cell_size);
- base<<=16;
- base|=int((pos.y+cell_size*0.5)/cell_size);
- base<<=16;
- base|=int((pos.z+cell_size*0.5)/cell_size);
-
- uint32_t hash = HashMapHasherDefault::hash(base);
- uint32_t idx = hash % hash_table_size;
-
- uint32_t bucket = hashptr[idx];
-
- while(bucket) {
-
- if (octhashptr[bucket].value==base) {
-
- oct->bake_neighbour=bucket;
- octants[bucket].first_neighbour=false;
- neighbours++;
- break;
- }
-
- bucket = octhashptr[bucket].next;
- }
-
- oct_idx=oct->next_leaf;
-
- }
-
- print_line("octant with neighbour: "+itos(neighbours));
-
- }
-
-
- //ok let's try to just create a texture
-
- int otex_w=256;
-
- while (true) {
-
-
-
- uint32_t oct_idx=leaf_list;
-
- int row=0;
-
-
- print_line("begin at row "+itos(row));
- int longest_line_reused=0;
- int col=0;
- int processed=0;
-
- //reset
- while(oct_idx) {
-
- BakedLightBaker::Octant *oct = &octants[oct_idx];
- oct->texture_x=0;
- oct->texture_y=0;
- oct_idx=oct->next_leaf;
-
- }
-
- oct_idx=leaf_list;
- //assign
- while(oct_idx) {
-
- BakedLightBaker::Octant *oct = &octants[oct_idx];
- if (oct->first_neighbour && oct->texture_x==0 && oct->texture_y==0) {
- //was not processed
- uint32_t current_idx=oct_idx;
- int reused=0;
-
- while(current_idx) {
- BakedLightBaker::Octant *o = &octants[current_idx];
- if (col+1 >= otex_w) {
- col=0;
- row+=4;
- }
- o->texture_x=col;
- o->texture_y=row;
- processed++;
-
- if (o->bake_neighbour) {
- reused++;
- }
- col+=o->bake_neighbour ? 1 : 2; //reuse neighbour
- current_idx=o->bake_neighbour;
- }
-
- if (reused>longest_line_reused) {
- longest_line_reused=reused;
- }
- }
- oct_idx=oct->next_leaf;
- }
-
- row+=4;
-
- if (otex_w < row) {
-
- otex_w*=2;
- } else {
-
- baked_light_texture_w=otex_w;
- baked_light_texture_h=nearest_power_of_2(row);
- print_line("w: "+itos(otex_w));
- print_line("h: "+itos(row));
- break;
- }
-
-
- }
-
-
- {
-
- otex_w=(1<<lattice_size)*(1<<lattice_size)*2; //make sure lattice fits horizontally
- Vector3 lattice_cell_size=octree_aabb.size;
- for(int i=0;i<lattice_size;i++) {
-
- lattice_cell_size*=0.5;
- }
-
-
-
- while(true) {
-
- //let's plot the leafs first, given the octree is not so obvious which size it will have
- int row=4+4*(1<<lattice_size);
- int col=0;
-
- col=0;
- row+=4;
- print_line("end at row "+itos(row));
-
- //put octree, no need for recursion, just loop backwards.
- int regular_octants=0;
- for(int i=octant_pool_size-1;i>=0;i--) {
-
- BakedLightBaker::Octant *oct = &octants[i];
- if (oct->leaf) //ignore leaf
- continue;
- if (oct->aabb.size.x>lattice_cell_size.x*1.1) { //bigger than latice, skip
- oct->texture_x=0;
- oct->texture_y=0;
- } else if (oct->aabb.size.x>lattice_cell_size.x*0.8) {
- //this is the initial lattice
- Vector3 pos = oct->aabb.pos - octree_aabb.pos; //make sure is always positive
- int x = int((pos.x+lattice_cell_size.x*0.5)/lattice_cell_size.x);
- int y = int((pos.y+lattice_cell_size.y*0.5)/lattice_cell_size.y);
- int z = int((pos.z+lattice_cell_size.z*0.5)/lattice_cell_size.z);
- //bug net
- ERR_FAIL_INDEX(x,(1<<lattice_size));
- ERR_FAIL_INDEX(y,(1<<lattice_size));
- ERR_FAIL_INDEX(z,(1<<lattice_size));
-
- /*int ofs = z*(1<<lattice_size)*(1<<lattice_size)+y*(1<<lattice_size)+x;
- ofs*=4;
- oct->texture_x=ofs%otex_w;
- oct->texture_y=(ofs/otex_w)*4+4;
- */
-
- oct->texture_x=(x+(1<<lattice_size)*z)*2;
- oct->texture_y=4+y*4;
- //print_line("pos: "+itos(x)+","+itos(y)+","+itos(z)+" - ofs"+itos(oct->texture_x)+","+itos(oct->texture_y));
-
-
- } else {
- //an everyday regular octant
-
- if (col+2 > otex_w) {
- col=0;
- row+=4;
- }
-
- oct->texture_x=col;
- oct->texture_y=row;
- col+=2;
- regular_octants++;
-
-
- }
- }
- print_line("octants end at row "+itos(row)+" totalling"+itos(regular_octants));
-
- //ok evaluation.
-
- if (otex_w<=2048 && row>2048) { //too big upwards, try bigger texture
- otex_w*=2;
- continue;
- } else {
- baked_octree_texture_w=otex_w;
- baked_octree_texture_h=row+4;
- break;
- }
-
- }
-
-
- }
-
-
- baked_octree_texture_h=nearest_power_of_2(baked_octree_texture_h);
- print_line("RESULT! "+itos(baked_octree_texture_w)+","+itos(baked_octree_texture_h));
-
-}
-
-
-
-
-
-
-
-
-double BakedLightBaker::get_normalization(int p_light_idx) const {
-
- double nrg=0;
-
- const LightData &dl=lights[p_light_idx];
- double cell_area = cell_size*cell_size;
- //nrg+= /*dl.energy */ (dl.rays_thrown * cell_area / dl.area);
- nrg=dl.rays_thrown * cell_area;
- nrg*=(Math_PI*plot_size*plot_size)*0.5; // damping of radial linear gradient kernel
- nrg*=dl.constant;
- //nrg*=5;
-
-
- return nrg;
-}
-
-
-
-double BakedLightBaker::get_modifier(int p_light_idx) const {
-
- double nrg=0;
-
- const LightData &dl=lights[p_light_idx];
- double cell_area = cell_size*cell_size;
- //nrg+= /*dl.energy */ (dl.rays_thrown * cell_area / dl.area);
- nrg=cell_area;
- nrg*=(Math_PI*plot_size*plot_size)*0.5; // damping of radial linear gradient kernel
- nrg*=dl.constant;
- //nrg*=5;
-
-
- return nrg;
-}
-
-void BakedLightBaker::throw_rays(ThreadStack& thread_stack,int p_amount) {
-
-
-
- for(int i=0;i<lights.size();i++) {
-
- LightData &dl=lights[i];
-
-
- int amount = p_amount * total_light_area / dl.area;
- double mod = 1.0/double(get_modifier(i));
- mod*=p_amount/float(amount);
-
- switch(dl.type) {
-
- case VS::LIGHT_DIRECTIONAL: {
-
-
- for(int j=0;j<amount;j++) {
- Vector3 from = dl.pos;
- double r1 = double(rand())/RAND_MAX;
- double r2 = double(rand())/RAND_MAX;
- from+=dl.up*(r1*2.0-1.0);
- from+=dl.left*(r2*2.0-1.0);
- Vector3 to = from+dl.dir*dl.length;
- Color col=dl.diffuse;
- float m = mod*dl.energy;
- col.r*=m;
- col.g*=m;
- col.b*=m;
-
- dl.rays_thrown++;
- baked_light_baker_add_64i(&total_rays,1);
-
- _throw_ray(thread_stack,dl.bake_direct,from,to,dl.length,col,NULL,0,0,max_bounces,true);
- }
- } break;
- case VS::LIGHT_OMNI: {
-
-
- for(int j=0;j<amount;j++) {
- Vector3 from = dl.pos;
-
- double r1 = double(rand())/RAND_MAX;
- double r2 = double(rand())/RAND_MAX;
- double r3 = double(rand())/RAND_MAX;
-
-#if 0
- //crap is not uniform..
- Vector3 dir = Vector3(r1*2.0-1.0,r2*2.0-1.0,r3*2.0-1.0).normalized();
-
-#else
-
- double phi = r1*Math_PI*2.0;
- double costheta = r2*2.0-1.0;
- double u = r3;
-
- double theta = acos( costheta );
- double r = 1.0 * pow( u,1/3.0 );
-
- Vector3 dir(
- r * sin( theta) * cos( phi ),
- r * sin( theta) * sin( phi ),
- r * cos( theta )
- );
- dir.normalize();
-
-#endif
- Vector3 to = dl.pos+dir*dl.radius;
- Color col=dl.diffuse;
- float m = mod*dl.energy;
- col.r*=m;
- col.g*=m;
- col.b*=m;
-
- dl.rays_thrown++;
- baked_light_baker_add_64i(&total_rays,1);
- _throw_ray(thread_stack,dl.bake_direct,from,to,dl.radius,col,dl.attenuation_table.ptr(),0,dl.radius,max_bounces,true);
- //_throw_ray(i,from,to,dl.radius,col,NULL,0,dl.radius,max_bounces,true);
- }
-
- } break;
- case VS::LIGHT_SPOT: {
-
- for(int j=0;j<amount;j++) {
- Vector3 from = dl.pos;
-
- double r1 = double(rand())/RAND_MAX;
- //double r2 = double(rand())/RAND_MAX;
- double r3 = double(rand())/RAND_MAX;
-
- float d=Math::tan(Math::deg2rad(dl.spot_angle));
-
- float x = sin(r1*Math_PI*2.0)*d;
- float y = cos(r1*Math_PI*2.0)*d;
-
- Vector3 dir = r3*(dl.dir + dl.up*y + dl.left*x) + (1.0-r3)*dl.dir;
- dir.normalize();
-
-
- Vector3 to = dl.pos+dir*dl.radius;
- Color col=dl.diffuse;
- float m = mod*dl.energy;
- col.r*=m;
- col.g*=m;
- col.b*=m;
-
- dl.rays_thrown++;
- baked_light_baker_add_64i(&total_rays,1);
- _throw_ray(thread_stack,dl.bake_direct,from,to,dl.radius,col,dl.attenuation_table.ptr(),0,dl.radius,max_bounces,true);
- //_throw_ray(i,from,to,dl.radius,col,NULL,0,dl.radius,max_bounces,true);
- }
-
- } break;
-
- }
- }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-void BakedLightBaker::bake(const Ref<BakedLight> &p_light, Node* p_node) {
-
- if (baking)
- return;
- cell_count=0;
-
- base_inv=p_node->cast_to<Spatial>()->get_global_transform().affine_inverse();
- EditorProgress ep("bake",TTR("Light Baker Setup:"),5);
- baked_light=p_light;
- lattice_size=baked_light->get_initial_lattice_subdiv();
- octree_depth=baked_light->get_cell_subdivision();
- plot_size=baked_light->get_plot_size();
- max_bounces=baked_light->get_bounces();
- use_diffuse=baked_light->get_bake_flag(BakedLight::BAKE_DIFFUSE);
- use_specular=baked_light->get_bake_flag(BakedLight::BAKE_SPECULAR);
- use_translucency=baked_light->get_bake_flag(BakedLight::BAKE_TRANSLUCENT);
-
- edge_damp=baked_light->get_edge_damp();
- normal_damp=baked_light->get_normal_damp();
- octree_extra_margin=baked_light->get_cell_extra_margin();
- tint=baked_light->get_tint();
- ao_radius=baked_light->get_ao_radius();
- ao_strength=baked_light->get_ao_strength();
- linear_color=baked_light->get_bake_flag(BakedLight::BAKE_LINEAR_COLOR);
-
- baked_textures.clear();
- for(int i=0;i<baked_light->get_lightmaps_count();i++) {
- BakeTexture bt;
- bt.width=baked_light->get_lightmap_gen_size(i).x;
- bt.height=baked_light->get_lightmap_gen_size(i).y;
- baked_textures.push_back(bt);
- }
-
-
- ep.step(TTR("Parsing Geometry"),0);
- _parse_geometry(p_node);
- mat_map.clear();
- tex_map.clear();
- print_line("\ttotal triangles: "+itos(triangles.size()));
- // no geometry
- if (triangles.size() == 0) {
- return;
- }
- ep.step(TTR("Fixing Lights"),1);
- _fix_lights();
- ep.step(TTR("Making BVH"),2);
- _make_bvh();
- ep.step(TTR("Creating Light Octree"),3);
- _make_octree();
- ep.step(TTR("Creating Octree Texture"),4);
- _make_octree_texture();
- baking=true;
- _start_thread();
-
-}
-
-
-void BakedLightBaker::update_octree_sampler(PoolVector<int> &p_sampler) {
-
- BakedLightBaker::Octant *octants=octant_pool.ptr();
- double norm = 1.0/double(total_rays);
-
-
-
- if (p_sampler.size()==0 || first_bake_to_map) {
-
- Vector<int> tmp_smp;
- tmp_smp.resize(32); //32 for header
-
- for(int i=0;i<32;i++) {
- tmp_smp[i]=0;
- }
-
- for(int i=octant_pool_size-1;i>=0;i--) {
-
- if (i==0)
- tmp_smp[1]=tmp_smp.size();
-
- Octant &octant=octants[i];
- octant.sampler_ofs = tmp_smp.size();
- int idxcol[2]={0,0};
-
- int r = CLAMP((octant.full_accum[0]*norm)*2048,0,32767);
- int g = CLAMP((octant.full_accum[1]*norm)*2048,0,32767);
- int b = CLAMP((octant.full_accum[2]*norm)*2048,0,32767);
-
- idxcol[0]|=r;
- idxcol[1]|=(g<<16)|b;
-
- if (octant.leaf) {
- tmp_smp.push_back(idxcol[0]);
- tmp_smp.push_back(idxcol[1]);
- } else {
-
- for(int j=0;j<8;j++) {
- if (octant.children[j]) {
- idxcol[0]|=(1<<(j+16));
- }
- }
- tmp_smp.push_back(idxcol[0]);
- tmp_smp.push_back(idxcol[1]);
- for(int j=0;j<8;j++) {
- if (octant.children[j]) {
- tmp_smp.push_back(octants[octant.children[j]].sampler_ofs);
- if (octants[octant.children[j]].sampler_ofs==0) {
- print_line("FUUUUUUUUCK");
- }
- }
- }
- }
-
- }
-
- p_sampler.resize(tmp_smp.size());
- PoolVector<int>::Write w = p_sampler.write();
- int ss = tmp_smp.size();
- for(int i=0;i<ss;i++) {
- w[i]=tmp_smp[i];
- }
-
- first_bake_to_map=false;
-
- }
-
- double gamma = baked_light->get_gamma_adjust();
- double mult = baked_light->get_energy_multiplier();
- float saturation = baked_light->get_saturation();
-
- PoolVector<int>::Write w = p_sampler.write();
-
- encode_uint32(octree_depth,(uint8_t*)&w[2]);
- encode_uint32(linear_color,(uint8_t*)&w[3]);
-
- encode_float(octree_aabb.pos.x,(uint8_t*)&w[4]);
- encode_float(octree_aabb.pos.y,(uint8_t*)&w[5]);
- encode_float(octree_aabb.pos.z,(uint8_t*)&w[6]);
- encode_float(octree_aabb.size.x,(uint8_t*)&w[7]);
- encode_float(octree_aabb.size.y,(uint8_t*)&w[8]);
- encode_float(octree_aabb.size.z,(uint8_t*)&w[9]);
-
- //norm*=multiplier;
-
- for(int i=octant_pool_size-1;i>=0;i--) {
-
- Octant &octant=octants[i];
- int idxcol[2]={w[octant.sampler_ofs],w[octant.sampler_ofs+1]};
-
- double rf=pow(octant.full_accum[0]*norm*mult,gamma);
- double gf=pow(octant.full_accum[1]*norm*mult,gamma);
- double bf=pow(octant.full_accum[2]*norm*mult,gamma);
-
- double gray = (rf+gf+bf)/3.0;
- rf = gray + (rf-gray)*saturation;
- gf = gray + (gf-gray)*saturation;
- bf = gray + (bf-gray)*saturation;
-
-
- int r = CLAMP((rf)*2048,0,32767);
- int g = CLAMP((gf)*2048,0,32767);
- int b = CLAMP((bf)*2048,0,32767);
-
- idxcol[0]=((idxcol[0]>>16)<<16)|r;
- idxcol[1]=(g<<16)|b;
- w[octant.sampler_ofs]=idxcol[0];
- w[octant.sampler_ofs+1]=idxcol[1];
- }
-
-}
-
-void BakedLightBaker::update_octree_images(PoolVector<uint8_t> &p_octree,PoolVector<uint8_t> &p_light) {
-
-
- int len = baked_octree_texture_w*baked_octree_texture_h*4;
- p_octree.resize(len);
-
- int ilen = baked_light_texture_w*baked_light_texture_h*4;
- p_light.resize(ilen);
-
-
- PoolVector<uint8_t>::Write w = p_octree.write();
- zeromem(w.ptr(),len);
-
- PoolVector<uint8_t>::Write iw = p_light.write();
- zeromem(iw.ptr(),ilen);
-
- float gamma = baked_light->get_gamma_adjust();
- float mult = baked_light->get_energy_multiplier();
-
- for(int i=0;i<len;i+=4) {
- w[i+0]=0xFF;
- w[i+1]=0;
- w[i+2]=0xFF;
- w[i+3]=0xFF;
- }
-
- for(int i=0;i<ilen;i+=4) {
- iw[i+0]=0xFF;
- iw[i+1]=0;
- iw[i+2]=0xFF;
- iw[i+3]=0xFF;
- }
-
- float multiplier=1.0;
-
- if (baked_light->get_format()==BakedLight::FORMAT_HDR8)
- multiplier=8;
- encode_uint32(baked_octree_texture_w,&w[0]);
- encode_uint32(baked_octree_texture_h,&w[4]);
- encode_uint32(0,&w[8]);
- encode_float(1<<lattice_size,&w[12]);
- encode_uint32(octree_depth-lattice_size,&w[16]);
- encode_uint32(multiplier,&w[20]);
- encode_uint16(baked_light_texture_w,&w[24]); //if present, use the baked light texture
- encode_uint16(baked_light_texture_h,&w[26]);
- encode_uint32(0,&w[28]); //baked light texture format
-
- encode_float(octree_aabb.pos.x,&w[32]);
- encode_float(octree_aabb.pos.y,&w[36]);
- encode_float(octree_aabb.pos.z,&w[40]);
- encode_float(octree_aabb.size.x,&w[44]);
- encode_float(octree_aabb.size.y,&w[48]);
- encode_float(octree_aabb.size.z,&w[52]);
-
-
- BakedLightBaker::Octant *octants=octant_pool.ptr();
- int octant_count=octant_pool_size;
- uint8_t *ptr = w.ptr();
- uint8_t *lptr = iw.ptr();
-
-
- int child_offsets[8]={
- 0,
- 4,
- baked_octree_texture_w*4,
- baked_octree_texture_w*4+4,
- baked_octree_texture_w*8+0,
- baked_octree_texture_w*8+4,
- baked_octree_texture_w*8+baked_octree_texture_w*4,
- baked_octree_texture_w*8+baked_octree_texture_w*4+4,
- };
-
- int lchild_offsets[8]={
- 0,
- 4,
- baked_light_texture_w*4,
- baked_light_texture_w*4+4,
- baked_light_texture_w*8+0,
- baked_light_texture_w*8+4,
- baked_light_texture_w*8+baked_light_texture_w*4,
- baked_light_texture_w*8+baked_light_texture_w*4+4,
- };
-
- /*Vector<double> norm_arr;
- norm_arr.resize(lights.size());
-
- for(int i=0;i<lights.size();i++) {
- norm_arr[i] = 1.0/get_normalization(i);
- }
-
- const double *normptr=norm_arr.ptr();
-*/
- double norm = 1.0/double(total_rays);
- mult/=multiplier;
- double saturation = baked_light->get_saturation();
-
- for(int i=0;i<octant_count;i++) {
-
- Octant &oct=octants[i];
- if (oct.texture_x==0 && oct.texture_y==0)
- continue;
-
-
- if (oct.leaf) {
-
- int ofs = (oct.texture_y * baked_light_texture_w + oct.texture_x)<<2;
- ERR_CONTINUE(ofs<0 || ofs >ilen);
- //write colors
- for(int j=0;j<8;j++) {
-
- /*
- if (!oct.children[j])
- continue;
- */
- uint8_t *iptr=&lptr[ofs+lchild_offsets[j]];
-
- float r=oct.light_accum[j][0]*norm;
- float g=oct.light_accum[j][1]*norm;
- float b=oct.light_accum[j][2]*norm;
-
- r=pow(r*mult,gamma);
- g=pow(g*mult,gamma);
- b=pow(b*mult,gamma);
-
- double gray = (r+g+b)/3.0;
- r = gray + (r-gray)*saturation;
- g = gray + (g-gray)*saturation;
- b = gray + (b-gray)*saturation;
-
- float ic[3]={
- r,
- g,
- b,
- };
- iptr[0]=CLAMP(ic[0]*255.0,0,255);
- iptr[1]=CLAMP(ic[1]*255.0,0,255);
- iptr[2]=CLAMP(ic[2]*255.0,0,255);
- iptr[3]=255;
- }
-
- } else {
-
- int ofs = (oct.texture_y * baked_octree_texture_w + oct.texture_x)<<2;
- ERR_CONTINUE(ofs<0 || ofs >len);
-
- //write indices
- for(int j=0;j<8;j++) {
-
- if (!oct.children[j])
- continue;
- Octant&choct=octants[oct.children[j]];
- uint8_t *iptr=&ptr[ofs+child_offsets[j]];
-
- iptr[0]=choct.texture_x>>8;
- iptr[1]=choct.texture_x&0xFF;
- iptr[2]=choct.texture_y>>8;
- iptr[3]=choct.texture_y&0xFF;
-
- }
- }
-
- }
-
-
-}
-
-
-void BakedLightBaker::_free_bvh(BVH* p_bvh) {
-
- if (!p_bvh->leaf) {
- if (p_bvh->children[0])
- _free_bvh(p_bvh->children[0]);
- if (p_bvh->children[1])
- _free_bvh(p_bvh->children[1]);
- }
-
- memdelete(p_bvh);
-
-}
-
-
-bool BakedLightBaker::is_baking() {
-
- return baking;
-}
-
-void BakedLightBaker::set_pause(bool p_pause){
-
- if (paused==p_pause)
- return;
-
- paused=p_pause;
-
- if (paused) {
- _stop_thread();
- } else {
- _start_thread();
- }
-}
-bool BakedLightBaker::is_paused() {
-
- return paused;
-
-}
-
-void BakedLightBaker::_bake_thread_func(void *arg) {
-
- BakedLightBaker *ble = (BakedLightBaker*)arg;
-
-
-
- ThreadStack thread_stack;
-
- thread_stack.ray_stack = memnew_arr(uint32_t,ble->bvh_depth);
- thread_stack.bvh_stack = memnew_arr(BVH*,ble->bvh_depth);
- thread_stack.octant_stack = memnew_arr(uint32_t,ble->octree_depth*2 );
- thread_stack.octantptr_stack = memnew_arr(uint32_t,ble->octree_depth*2 );
-
- while(!ble->bake_thread_exit) {
-
- ble->throw_rays(thread_stack,1000);
- }
-
- memdelete_arr(thread_stack.ray_stack );
- memdelete_arr(thread_stack.bvh_stack );
- memdelete_arr(thread_stack.octant_stack );
- memdelete_arr(thread_stack.octantptr_stack );
-
-}
-
-void BakedLightBaker::_start_thread() {
-
- if (threads.size()!=0)
- return;
- bake_thread_exit=false;
-
- int thread_count = EDITOR_DEF("light_baker/custom_bake_threads",0);
- if (thread_count<=0 || thread_count>64)
- thread_count=OS::get_singleton()->get_processor_count();
-
- //thread_count=1;
- threads.resize(thread_count);
- for(int i=0;i<threads.size();i++) {
- threads[i]=Thread::create(_bake_thread_func,this);
- }
-}
-
-void BakedLightBaker::_stop_thread() {
-
- if (threads.size()==0)
- return;
- bake_thread_exit=true;
- for(int i=0;i<threads.size();i++) {
- Thread::wait_to_finish(threads[i]);
- memdelete(threads[i]);
- }
- threads.clear();
-}
-
-void BakedLightBaker::_plot_pixel_to_lightmap(int x, int y, int width, int height, uint8_t *image, const Vector3& p_pos,const Vector3& p_normal,double *p_norm_ptr,float mult,float gamma) {
-
-
- uint8_t *ptr = &image[(y*width+x)*4];
- //int lc = lights.size();
- double norm = 1.0/double(total_rays);
-
-
- Color color;
-
- Octant *octants=octant_pool.ptr();
-
-
- int octant_idx=0;
-
-
- while(true) {
-
- Octant &octant=octants[octant_idx];
-
- if (octant.leaf) {
-
- Vector3 lpos = p_pos-octant.aabb.pos;
- lpos/=octant.aabb.size;
-
- Vector3 cols[8];
-
- for(int i=0;i<8;i++) {
-
- cols[i].x+=octant.light_accum[i][0]*norm;
- cols[i].y+=octant.light_accum[i][1]*norm;
- cols[i].z+=octant.light_accum[i][2]*norm;
- }
-
-
- /*Vector3 final = (cols[0] + (cols[1] - cols[0]) * lpos.y);
- final = final + ((cols[2] + (cols[3] - cols[2]) * lpos.y) - final)*lpos.x;
-
- Vector3 final2 = (cols[4+0] + (cols[4+1] - cols[4+0]) * lpos.y);
- final2 = final2 + ((cols[4+2] + (cols[4+3] - cols[4+2]) * lpos.y) - final2)*lpos.x;*/
-
- Vector3 finala = cols[0].linear_interpolate(cols[1],lpos.x);
- Vector3 finalb = cols[2].linear_interpolate(cols[3],lpos.x);
- Vector3 final = finala.linear_interpolate(finalb,lpos.y);
-
- Vector3 final2a = cols[4+0].linear_interpolate(cols[4+1],lpos.x);
- Vector3 final2b = cols[4+2].linear_interpolate(cols[4+3],lpos.x);
- Vector3 final2 = final2a.linear_interpolate(final2b,lpos.y);
-
- final = final.linear_interpolate(final2,lpos.z);
- if (baked_light->get_format()==BakedLight::FORMAT_HDR8)
- final*=8.0;
-
-
- color.r=pow(final.x*mult,gamma);
- color.g=pow(final.y*mult,gamma);
- color.b=pow(final.z*mult,gamma);
- color.a=1.0;
-
- int lc = lights.size();
- LightData *lv = lights.ptr();
- for(int i=0;i<lc;i++) {
- //shadow baking
- if (!lv[i].bake_shadow)
- continue;
- Vector3 from = p_pos+p_normal*0.01;
- Vector3 to;
- float att=0;
- switch(lv[i].type) {
- case VS::LIGHT_DIRECTIONAL: {
- to=from-lv[i].dir*lv[i].length;
- } break;
- case VS::LIGHT_OMNI: {
- to=lv[i].pos;
- float d = MIN(lv[i].radius,to.distance_to(from))/lv[i].radius;
- att=d;//1.0-d;
- } break;
- default: continue;
- }
-
- uint32_t* stack = ray_stack;
- BVH **bstack = bvh_stack;
-
- enum {
- TEST_RAY_BIT=0,
- VISIT_LEFT_BIT=1,
- VISIT_RIGHT_BIT=2,
- VISIT_DONE_BIT=3,
-
-
- };
-
- bool intersected=false;
-
- int level=0;
-
- Vector3 n = (to-from);
- float len=n.length();
- if (len==0)
- continue;
- n/=len;
-
- bstack[0]=bvh;
- stack[0]=TEST_RAY_BIT;
-
-
- while(!intersected) {
-
- uint32_t mode = stack[level];
- const BVH &b = *bstack[level];
- bool done=false;
-
- switch(mode) {
- case TEST_RAY_BIT: {
-
- if (b.leaf) {
-
-
- Face3 f3(b.leaf->vertices[0],b.leaf->vertices[1],b.leaf->vertices[2]);
-
-
- Vector3 res;
-
- if (f3.intersects_segment(from,to)) {
- intersected=true;
- done=true;
- }
-
- stack[level]=VISIT_DONE_BIT;
- } else {
-
-
- bool valid = b.aabb.smits_intersect_ray(from,n,0,len);
- //bool valid = b.aabb.intersects_segment(p_begin,p_end);
- //bool valid = b.aabb.intersects(ray_aabb);
-
- if (!valid) {
-
- stack[level]=VISIT_DONE_BIT;
-
- } else {
-
- stack[level]=VISIT_LEFT_BIT;
- }
- }
-
- } continue;
- case VISIT_LEFT_BIT: {
-
- stack[level]=VISIT_RIGHT_BIT;
- bstack[level+1]=b.children[0];
- stack[level+1]=TEST_RAY_BIT;
- level++;
-
- } continue;
- case VISIT_RIGHT_BIT: {
-
- stack[level]=VISIT_DONE_BIT;
- bstack[level+1]=b.children[1];
- stack[level+1]=TEST_RAY_BIT;
- level++;
- } continue;
- case VISIT_DONE_BIT: {
-
- if (level==0) {
- done=true;
- break;
- } else
- level--;
-
- } continue;
- }
-
-
- if (done)
- break;
- }
-
-
-
- if (intersected) {
-
- color.a=Math::lerp(MAX(0.01,lv[i].darkening),1.0,att);
- }
-
- }
-
- break;
- } else {
-
- Vector3 lpos = p_pos - octant.aabb.pos;
- Vector3 half = octant.aabb.size * 0.5;
-
- int ofs=0;
-
- if (lpos.x >= half.x)
- ofs|=1;
- if (lpos.y >= half.y)
- ofs|=2;
- if (lpos.z >= half.z)
- ofs|=4;
-
- octant_idx = octant.children[ofs];
-
- if (octant_idx==0)
- return;
-
- }
- }
-
- ptr[0]=CLAMP(color.r*255.0,0,255);
- ptr[1]=CLAMP(color.g*255.0,0,255);
- ptr[2]=CLAMP(color.b*255.0,0,255);
- ptr[3]=CLAMP(color.a*255.0,0,255);
-
-}
-
-
-Error BakedLightBaker::transfer_to_lightmaps() {
-
- if (!triangles.size() || baked_textures.size()==0)
- return ERR_UNCONFIGURED;
-
- EditorProgress ep("transfer_to_lightmaps",TTR("Transfer to Lightmaps:"),baked_textures.size()*2+triangles.size());
-
- for(int i=0;i<baked_textures.size();i++) {
-
- ERR_FAIL_COND_V( baked_textures[i].width<=0 || baked_textures[i].height<=0,ERR_UNCONFIGURED );
-
- baked_textures[i].data.resize( baked_textures[i].width*baked_textures[i].height*4 );
- zeromem(baked_textures[i].data.ptr(),baked_textures[i].data.size());
- ep.step(TTR("Allocating Texture #")+itos(i+1),i);
- }
-
- Vector<double> norm_arr;
- norm_arr.resize(lights.size());
-
- for(int i=0;i<lights.size();i++) {
- norm_arr[i] = 1.0/get_normalization(i);
- }
- float gamma = baked_light->get_gamma_adjust();
- float mult = baked_light->get_energy_multiplier();
-
- for(int i=0;i<triangles.size();i++) {
-
- if (i%200==0) {
- ep.step(TTR("Baking Triangle #")+itos(i),i+baked_textures.size());
- }
- Triangle &t=triangles[i];
- if (t.baked_texture<0 || t.baked_texture>=baked_textures.size())
- continue;
-
- BakeTexture &bt=baked_textures[t.baked_texture];
- Vector3 normal = Plane(t.vertices[0],t.vertices[1],t.vertices[2]).normal;
-
-
- int x[3];
- int y[3];
-
- Vector3 vertices[3]={
- t.vertices[0],
- t.vertices[1],
- t.vertices[2]
- };
-
- for(int j=0;j<3;j++) {
-
- x[j]=t.bake_uvs[j].x*bt.width;
- y[j]=t.bake_uvs[j].y*bt.height;
- x[j]=CLAMP(x[j],0,bt.width-1);
- y[j]=CLAMP(y[j],0,bt.height-1);
- }
-
-
- {
-
- // sort the points vertically
- if (y[1] > y[2]) {
- SWAP(x[1], x[2]);
- SWAP(y[1], y[2]);
- SWAP(vertices[1],vertices[2]);
- }
- if (y[0] > y[1]) {
- SWAP(x[0], x[1]);
- SWAP(y[0], y[1]);
- SWAP(vertices[0],vertices[1]);
- }
- if (y[1] > y[2]) {
- SWAP(x[1], x[2]);
- SWAP(y[1], y[2]);
- SWAP(vertices[1],vertices[2]);
- }
-
- double dx_far = double(x[2] - x[0]) / (y[2] - y[0] + 1);
- double dx_upper = double(x[1] - x[0]) / (y[1] - y[0] + 1);
- double dx_low = double(x[2] - x[1]) / (y[2] - y[1] + 1);
- double xf = x[0];
- double xt = x[0] + dx_upper; // if y[0] == y[1], special case
- for (int yi = y[0]; yi <= (y[2] > bt.height-1 ? bt.height-1 : y[2]); yi++)
- {
- if (yi >= 0) {
- for (int xi = (xf > 0 ? int(xf) : 0); xi <= (xt < bt.width ? xt : bt.width-1) ; xi++) {
- //pixels[int(x + y * width)] = color;
-
- Vector2 v0 = Vector2(x[1]-x[0],y[1]-y[0]);
- Vector2 v1 = Vector2(x[2]-x[0],y[2]-y[0]);
- //vertices[2] - vertices[0];
- Vector2 v2 = Vector2(xi-x[0],yi-y[0]);
- float d00 = v0.dot( v0);
- float d01 = v0.dot( v1);
- float d11 = v1.dot( v1);
- float d20 = v2.dot( v0);
- float d21 = v2.dot( v1);
- float denom = (d00 * d11 - d01 * d01);
- Vector3 pos;
- if (denom==0) {
- pos=t.vertices[0];
- } else {
- float v = (d11 * d20 - d01 * d21) / denom;
- float w = (d00 * d21 - d01 * d20) / denom;
- float u = 1.0f - v - w;
- pos = vertices[0]*u + vertices[1]*v + vertices[2]*w;
- }
- _plot_pixel_to_lightmap(xi,yi,bt.width,bt.height,bt.data.ptr(),pos,normal,norm_arr.ptr(),mult,gamma);
-
- }
-
- for (int xi = (xf < bt.width ? int(xf) : bt.width-1); xi >= (xt > 0 ? xt : 0); xi--) {
- //pixels[int(x + y * width)] = color;
- Vector2 v0 = Vector2(x[1]-x[0],y[1]-y[0]);
- Vector2 v1 = Vector2(x[2]-x[0],y[2]-y[0]);
- //vertices[2] - vertices[0];
- Vector2 v2 = Vector2(xi-x[0],yi-y[0]);
- float d00 = v0.dot( v0);
- float d01 = v0.dot( v1);
- float d11 = v1.dot( v1);
- float d20 = v2.dot( v0);
- float d21 = v2.dot( v1);
- float denom = (d00 * d11 - d01 * d01);
- Vector3 pos;
- if (denom==0) {
- pos=t.vertices[0];
- } else {
- float v = (d11 * d20 - d01 * d21) / denom;
- float w = (d00 * d21 - d01 * d20) / denom;
- float u = 1.0f - v - w;
- pos = vertices[0]*u + vertices[1]*v + vertices[2]*w;
- }
-
- _plot_pixel_to_lightmap(xi,yi,bt.width,bt.height,bt.data.ptr(),pos,normal,norm_arr.ptr(),mult,gamma);
-
- }
- }
- xf += dx_far;
- if (yi < y[1])
- xt += dx_upper;
- else
- xt += dx_low;
- }
- }
-
- }
-
-
- for(int i=0;i<baked_textures.size();i++) {
-
-
- {
-
- ep.step(TTR("Post-Processing Texture #")+itos(i),i+baked_textures.size()+triangles.size());
-
- BakeTexture &bt=baked_textures[i];
-
- Vector<uint8_t> copy_data=bt.data;
- uint8_t *data=bt.data.ptr();
- const int max_radius=8;
- const int shadow_radius=2;
- const int max_dist=0x7FFFFFFF;
-
- for(int x=0;x<bt.width;x++) {
-
- for(int y=0;y<bt.height;y++) {
-
-
- uint8_t a = copy_data[(y*bt.width+x)*4+3];
-
- if (a>0) {
- //blur shadow
-
- int from_x = MAX(0,x-shadow_radius);
- int to_x = MIN(bt.width-1,x+shadow_radius);
- int from_y = MAX(0,y-shadow_radius);
- int to_y = MIN(bt.height-1,y+shadow_radius);
-
- int sum=0;
- int sumc=0;
-
- for(int k=from_y;k<=to_y;k++) {
- for(int l=from_x;l<=to_x;l++) {
-
- const uint8_t * rp = &copy_data[(k*bt.width+l)<<2];
-
- sum+=rp[3];
- sumc++;
- }
- }
-
- sum/=sumc;
- data[(y*bt.width+x)*4+3]=sum;
-
- } else {
-
- int closest_dist=max_dist;
- uint8_t closest_color[4];
-
- int from_x = MAX(0,x-max_radius);
- int to_x = MIN(bt.width-1,x+max_radius);
- int from_y = MAX(0,y-max_radius);
- int to_y = MIN(bt.height-1,y+max_radius);
-
- for(int k=from_y;k<=to_y;k++) {
- for(int l=from_x;l<=to_x;l++) {
-
- int dy = y-k;
- int dx = x-l;
- int dist = dy*dy+dx*dx;
- if (dist>=closest_dist)
- continue;
-
- const uint8_t * rp = &copy_data[(k*bt.width+l)<<2];
-
- if (rp[3]==0)
- continue;
-
- closest_dist=dist;
- closest_color[0]=rp[0];
- closest_color[1]=rp[1];
- closest_color[2]=rp[2];
- closest_color[3]=rp[3];
- }
- }
-
-
- if (closest_dist!=max_dist) {
-
- data[(y*bt.width+x)*4+0]=closest_color[0];
- data[(y*bt.width+x)*4+1]=closest_color[1];
- data[(y*bt.width+x)*4+2]=closest_color[2];
- data[(y*bt.width+x)*4+3]=closest_color[3];
- }
- }
- }
- }
- }
-
- PoolVector<uint8_t> dv;
- dv.resize(baked_textures[i].data.size());
- {
- PoolVector<uint8_t>::Write w = dv.write();
- copymem(w.ptr(),baked_textures[i].data.ptr(),baked_textures[i].data.size());
- }
-
- Image img(baked_textures[i].width,baked_textures[i].height,0,Image::FORMAT_RGBA8,dv);
- Ref<ImageTexture> tex = memnew( ImageTexture );
- tex->create_from_image(img);
- baked_light->set_lightmap_texture(i,tex);
- }
-
-
- return OK;
-}
-
-void BakedLightBaker::clear() {
-
-
-
- _stop_thread();
-
- if (bvh)
- _free_bvh(bvh);
-
- if (ray_stack)
- memdelete_arr(ray_stack);
- if (octant_stack)
- memdelete_arr(octant_stack);
- if (octantptr_stack)
- memdelete_arr(octantptr_stack);
- if (bvh_stack)
- memdelete_arr(bvh_stack);
-/*
- * ???
- for(int i=0;i<octant_pool.size();i++) {
- /*
- if (octant_pool[i].leaf) {
- memdelete_arr( octant_pool[i].light );
- }
- Vector<double> norm_arr;
- norm_arr.resize(lights.size());
- */
-
- for(int i=0;i<lights.size();i++) {
- norm_arr[i] = 1.0/get_normalization(i);
- }
-
- const double *normptr=norm_arr.ptr();
- }
-*/
- octant_pool.clear();
- octant_pool_size=0;
- bvh=NULL;
- leaf_list=0;
- cell_count=0;
- ray_stack=NULL;
- octant_stack=NULL;
- octantptr_stack=NULL;
- bvh_stack=NULL;
- materials.clear();
- materials.clear();
- textures.clear();
- lights.clear();
- triangles.clear();
- endpoint_normal.clear();
- endpoint_normal_bits.clear();
- baked_octree_texture_w=0;
- baked_octree_texture_h=0;
- paused=false;
- baking=false;
-
- bake_thread_exit=false;
- first_bake_to_map=true;
- baked_light=Ref<BakedLight>();
- total_rays=0;
-
-}
-
-BakedLightBaker::BakedLightBaker() {
- octree_depth=9;
- lattice_size=4;
- octant_pool.clear();
- octant_pool_size=0;
- bvh=NULL;
- leaf_list=0;
- cell_count=0;
- ray_stack=NULL;
- bvh_stack=NULL;
- octant_stack=NULL;
- octantptr_stack=NULL;
- plot_size=2.5;
- max_bounces=2;
- materials.clear();
- baked_octree_texture_w=0;
- baked_octree_texture_h=0;
- paused=false;
- baking=false;
-
- bake_thread_exit=false;
- total_rays=0;
- first_bake_to_map=true;
- linear_color=false;
-
-}
-
-BakedLightBaker::~BakedLightBaker() {
-
- clear();
-}
-#endif
diff --git a/editor/plugins/baked_light_baker.h b/editor/plugins/baked_light_baker.h
deleted file mode 100644
index 123812fc07..0000000000
--- a/editor/plugins/baked_light_baker.h
+++ /dev/null
@@ -1,382 +0,0 @@
-/*************************************************************************/
-/* baked_light_baker.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 BAKED_LIGHT_BAKER_H
-#define BAKED_LIGHT_BAKER_H
-
-#include "os/thread.h"
-
-#include "scene/3d/light.h"
-#include "scene/3d/mesh_instance.h"
-
-#if 0
-
-class BakedLightBaker {
-public:
-
- enum {
-
- ATTENUATION_CURVE_LEN=256,
- OCTANT_POOL_CHUNK=1000000
- };
-
- /*
- struct OctantLight {
- double accum[8][3];
- };
- */
-
- struct Octant {
- bool leaf;
- AABB aabb;
- uint16_t texture_x;
- uint16_t texture_y;
- int sampler_ofs;
- float normal_accum[8][3];
- double full_accum[3];
- int parent;
- union {
- struct {
- int next_leaf;
- float offset[3];
- int bake_neighbour;
- bool first_neighbour;
- double light_accum[8][3];
- };
- int children[8];
- };
- };
-
- struct OctantHash {
-
- int next;
- uint32_t hash;
- uint64_t value;
-
- };
-
- struct MeshTexture {
-
- Vector<uint8_t> tex;
- int tex_w,tex_h;
-
- _FORCE_INLINE_ void get_color(const Vector2& p_uv,Color& ret) {
-
- if (tex_w && tex_h) {
-
- int x = Math::fast_ftoi(Math::fposmod(p_uv.x,1.0)*tex_w);
- int y = Math::fast_ftoi(Math::fposmod(p_uv.y,1.0)*tex_w);
- x=CLAMP(x,0,tex_w-1);
- y=CLAMP(y,0,tex_h-1);
- const uint8_t*ptr = &tex[(y*tex_w+x)*4];
- ret.r*=ptr[0]/255.0;
- ret.g*=ptr[1]/255.0;
- ret.b*=ptr[2]/255.0;
- ret.a*=ptr[3]/255.0;
- }
- }
-
- };
-
- struct Param {
-
- Color color;
- MeshTexture*tex;
- _FORCE_INLINE_ Color get_color(const Vector2& p_uv) {
-
- Color ret=color;
- if (tex)
- tex->get_color(p_uv,ret);
- return ret;
-
- }
-
- };
-
- struct MeshMaterial {
-
- Param diffuse;
- Param specular;
- Param emission;
- };
-
- struct Triangle {
-
- AABB aabb;
- Vector3 vertices[3];
- Vector2 uvs[3];
- Vector2 bake_uvs[3];
- Vector3 normals[3];
- MeshMaterial *material;
- int baked_texture;
-
- _FORCE_INLINE_ Vector2 get_uv(const Vector3& p_pos) {
-
- Vector3 v0 = vertices[1] - vertices[0];
- Vector3 v1 = vertices[2] - vertices[0];
- Vector3 v2 = p_pos - vertices[0];
-
- float d00 = v0.dot( v0);
- float d01 = v0.dot( v1);
- float d11 = v1.dot( v1);
- float d20 = v2.dot( v0);
- float d21 = v2.dot( v1);
- float denom = (d00 * d11 - d01 * d01);
- if (denom==0)
- return uvs[0];
- float v = (d11 * d20 - d01 * d21) / denom;
- float w = (d00 * d21 - d01 * d20) / denom;
- float u = 1.0f - v - w;
-
- return uvs[0]*u + uvs[1]*v + uvs[2]*w;
- }
-
- _FORCE_INLINE_ void get_uv_and_normal(const Vector3& p_pos,Vector2& r_uv,Vector3& r_normal) {
-
- Vector3 v0 = vertices[1] - vertices[0];
- Vector3 v1 = vertices[2] - vertices[0];
- Vector3 v2 = p_pos - vertices[0];
-
- float d00 = v0.dot( v0);
- float d01 = v0.dot( v1);
- float d11 = v1.dot( v1);
- float d20 = v2.dot( v0);
- float d21 = v2.dot( v1);
- float denom = (d00 * d11 - d01 * d01);
- if (denom==0) {
- r_normal=normals[0];
- r_uv=uvs[0];
- return;
- }
- float v = (d11 * d20 - d01 * d21) / denom;
- float w = (d00 * d21 - d01 * d20) / denom;
- float u = 1.0f - v - w;
-
- r_uv=uvs[0]*u + uvs[1]*v + uvs[2]*w;
- r_normal=(normals[0]*u+normals[1]*v+normals[2]*w).normalized();
- }
- };
-
-
- struct BVH {
-
- AABB aabb;
- Vector3 center;
- Triangle *leaf;
- BVH*children[2];
- };
-
-
- struct BVHCmpX {
-
- bool operator()(const BVH* p_left, const BVH* p_right) const {
-
- return p_left->center.x < p_right->center.x;
- }
- };
-
- struct BVHCmpY {
-
- bool operator()(const BVH* p_left, const BVH* p_right) const {
-
- return p_left->center.y < p_right->center.y;
- }
- };
- struct BVHCmpZ {
-
- bool operator()(const BVH* p_left, const BVH* p_right) const {
-
- return p_left->center.z < p_right->center.z;
- }
- };
-
- struct BakeTexture {
-
- Vector<uint8_t> data;
- int width,height;
- };
-
-
- struct LightData {
-
- VS::LightType type;
-
- Vector3 pos;
- Vector3 up;
- Vector3 left;
- Vector3 dir;
- Color diffuse;
- Color specular;
- float energy;
- float length;
- int rays_thrown;
- bool bake_shadow;
-
- float radius;
- float attenuation;
- float spot_angle;
- float darkening;
- float spot_attenuation;
- float area;
-
- float constant;
-
- bool bake_direct;
-
- Vector<float> attenuation_table;
-
- };
-
-
- Vector<LightData> lights;
-
- List<MeshMaterial> materials;
- List<MeshTexture> textures;
-
- AABB octree_aabb;
- Vector<Octant> octant_pool;
- int octant_pool_size;
- BVH*bvh;
- Vector<Triangle> triangles;
- Vector<BakeTexture> baked_textures;
- Transform base_inv;
- int leaf_list;
- int octree_depth;
- int bvh_depth;
- int cell_count;
- uint32_t *ray_stack;
- BVH **bvh_stack;
- uint32_t *octant_stack;
- uint32_t *octantptr_stack;
-
- struct ThreadStack {
- uint32_t *octant_stack;
- uint32_t *octantptr_stack;
- uint32_t *ray_stack;
- BVH **bvh_stack;
- };
-
- Map<Vector3,Vector3> endpoint_normal;
- Map<Vector3,uint64_t> endpoint_normal_bits;
-
- float cell_size;
- float plot_size; //multiplied by cell size
- float octree_extra_margin;
-
- int max_bounces;
- int64_t total_rays;
- bool use_diffuse;
- bool use_specular;
- bool use_translucency;
- bool linear_color;
-
-
- int baked_octree_texture_w;
- int baked_octree_texture_h;
- int baked_light_texture_w;
- int baked_light_texture_h;
- int lattice_size;
- float edge_damp;
- float normal_damp;
- float tint;
- float ao_radius;
- float ao_strength;
-
- bool paused;
- bool baking;
- bool first_bake_to_map;
-
- Map<Ref<Material>,MeshMaterial*> mat_map;
- Map<Ref<Texture>,MeshTexture*> tex_map;
-
-
-
- MeshTexture* _get_mat_tex(const Ref<Texture>& p_tex);
- void _add_mesh(const Ref<Mesh>& p_mesh,const Ref<Material>& p_mat_override,const Transform& p_xform,int p_baked_texture=-1);
- void _parse_geometry(Node* p_node);
- BVH* _parse_bvh(BVH** p_children,int p_size,int p_depth,int& max_depth);
- void _make_bvh();
- void _make_octree();
- void _make_octree_texture();
- void _octree_insert(int p_octant, Triangle* p_triangle, int p_depth);
- _FORCE_INLINE_ void _plot_pixel_to_lightmap(int x, int y, int width, int height, uint8_t *image, const Vector3& p_pos,const Vector3& p_normal,double *p_norm_ptr,float mult,float gamma);
-
-
- void _free_bvh(BVH* p_bvh);
-
- void _fix_lights();
-
- Ref<BakedLight> baked_light;
-
-
- //void _plot_light(const Vector3& p_plot_pos,const AABB& p_plot_aabb,const Color& p_light,int p_octant=0);
- void _plot_light(ThreadStack& thread_stack,const Vector3& p_plot_pos,const AABB& p_plot_aabb,const Color& p_light,const Color& p_tint_light,bool p_only_full,const Plane& p_plane);
- //void _plot_light_point(const Vector3& p_plot_pos, Octant *p_octant, const AABB& p_aabb,const Color& p_light);
-
- float _throw_ray(ThreadStack& thread_stack,bool p_bake_direct,const Vector3& p_begin, const Vector3& p_end,float p_rest,const Color& p_light,float *p_att_curve,float p_att_pos,int p_att_curve_len,int p_bounces,bool p_first_bounce=false,bool p_only_dist=false);
-
-
- float total_light_area;
-
- Vector<Thread*> threads;
-
- bool bake_thread_exit;
- static void _bake_thread_func(void *arg);
-
- void _start_thread();
- void _stop_thread();
-public:
-
-
- void throw_rays(ThreadStack &thread_stack, int p_amount);
- double get_normalization(int p_light_idx) const;
- double get_modifier(int p_light_idx) const;
-
- void bake(const Ref<BakedLight>& p_light,Node *p_base);
- bool is_baking();
- void set_pause(bool p_pause);
- bool is_paused();
- uint64_t get_rays_thrown() { return total_rays; }
-
- Error transfer_to_lightmaps();
-
- void update_octree_sampler(PoolVector<int> &p_sampler);
- void update_octree_images(PoolVector<uint8_t> &p_octree,PoolVector<uint8_t> &p_light);
-
- Ref<BakedLight> get_baked_light() { return baked_light; }
-
- void clear();
-
- BakedLightBaker();
- ~BakedLightBaker();
-
-};
-
-#endif // BAKED_LIGHT_BAKER_H
-#endif
diff --git a/editor/plugins/baked_light_baker_cmpxchg.cpp b/editor/plugins/baked_light_baker_cmpxchg.cpp
deleted file mode 100644
index f0a1aea416..0000000000
--- a/editor/plugins/baked_light_baker_cmpxchg.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*************************************************************************/
-/* baked_light_baker_cmpxchg.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "typedefs.h"
-
-#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40100
-
-void baked_light_baker_add_64f(double *dst, double value) {
-
- union {
- int64_t i;
- double f;
- } swapy;
-
- while (true) {
- swapy.f = *dst;
- int64_t from = swapy.i;
- swapy.f += value;
- int64_t to = swapy.i;
- if (__sync_bool_compare_and_swap((int64_t *)dst, from, to))
- break;
- }
-}
-
-void baked_light_baker_add_64i(int64_t *dst, int64_t value) {
-
- while (!__sync_bool_compare_and_swap(dst, *dst, (*dst) + value)) {
- }
-}
-
-#elif defined(WINDOWS_ENABLED)
-
-#include "windows.h"
-
-void baked_light_baker_add_64f(double *dst, double value) {
-
- union {
- int64_t i;
- double f;
- } swapy;
-
- while (true) {
- swapy.f = *dst;
- int64_t from = swapy.i;
- swapy.f += value;
- int64_t to = swapy.i;
- int64_t result = InterlockedCompareExchange64((int64_t *)dst, to, from);
- if (result == from)
- break;
- }
-}
-
-void baked_light_baker_add_64i(int64_t *dst, int64_t value) {
-
- while (true) {
- int64_t from = *dst;
- int64_t to = from + value;
- int64_t result = InterlockedCompareExchange64(dst, to, from);
- if (result == from)
- break;
- }
-}
-
-#else
-
-//in goder (the god of programmers) we trust
-#warning seems this platform or compiler does not support safe cmpxchg, your baked lighting may be funny
-
-void baked_light_baker_add_64f(double *dst, double value) {
-
- *dst += value;
-}
-
-void baked_light_baker_add_64i(int64_t *dst, int64_t value) {
-
- *dst += value;
-}
-
-#endif
diff --git a/editor/plugins/baked_light_editor_plugin.cpp b/editor/plugins/baked_light_editor_plugin.cpp
deleted file mode 100644
index f973639a67..0000000000
--- a/editor/plugins/baked_light_editor_plugin.cpp
+++ /dev/null
@@ -1,377 +0,0 @@
-/*************************************************************************/
-/* baked_light_editor_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "baked_light_editor_plugin.h"
-
-#include "io/marshalls.h"
-#include "io/resource_saver.h"
-#include "scene/3d/mesh_instance.h"
-#include "scene/gui/box_container.h"
-
-#if 0
-
-
-void BakedLightEditor::_end_baking() {
-
- baker->clear();
- set_process(false);
- button_bake->set_pressed(false);
- bake_info->set_text("");
-}
-
-void BakedLightEditor::_node_removed(Node *p_node) {
-
- if(p_node==node) {
- _end_baking();
- node=NULL;
-
- hide();
- }
-
-}
-
-
-
-
-
-void BakedLightEditor::_notification(int p_option) {
-
-
- if (p_option==NOTIFICATION_ENTER_TREE) {
-
- button_bake->set_icon(get_icon("Bake","EditorIcons"));
- button_reset->set_icon(get_icon("Reload","EditorIcons"));
- button_make_lightmaps->set_icon(get_icon("LightMap","EditorIcons"));
- }
-
- if (p_option==NOTIFICATION_PROCESS) {
-
- if (baker->is_baking() && !baker->is_paused()) {
-
- update_timeout-=get_process_delta_time();
- if (update_timeout<0) {
-
- if (baker->get_baked_light()!=node->get_baked_light()) {
- _end_baking();
- return;
- }
-
- uint64_t t = OS::get_singleton()->get_ticks_msec();
-
-#ifdef DEBUG_CUBES
- double norm = baker->get_normalization();
- float max_lum=0;
-
- {
- PoolVector<Color>::Write cw=colors.write();
- BakedLightBaker::Octant *octants=baker->octant_pool.ptr();
- BakedLightBaker::Octant *oct = &octants[baker->leaf_list];
- int vert_idx=0;
-
- while(oct) {
-
-
-
- Color colors[8];
- for(int i=0;i<8;i++) {
-
- colors[i].r=oct->light_accum[i][0]/norm;
- colors[i].g=oct->light_accum[i][1]/norm;
- colors[i].b=oct->light_accum[i][2]/norm;
-
- float lum = colors[i].get_v();
- /*
- if (lum<0.05)
- color.a=0;
- */
- if (lum>max_lum)
- max_lum=lum;
-
- }
- static const int vert2cub[36]={7,3,1,1,5,7,7,6,2,2,3,7,7,5,4,4,6,7,2,6,4,4,0,2,4,5,1,1,0,4,1,3,2,2,0,1};
- for (int i=0;i<36;i++) {
-
-
- cw[vert_idx++]=colors[vert2cub[i]];
- }
-
- if (oct->next_leaf)
- oct=&octants[oct->next_leaf];
- else
- oct=NULL;
-
- }
- }
- print_line("MSCOL: "+itos(OS::get_singleton()->get_ticks_msec()-t));
- t = OS::get_singleton()->get_ticks_msec();
-
- Array a;
- a.resize(Mesh::ARRAY_MAX);
- a[Mesh::ARRAY_VERTEX]=vertices;
- a[Mesh::ARRAY_COLOR]=colors;
- while(mesh->get_surface_count())
- mesh->surface_remove(0);
- mesh->add_surface(Mesh::PRIMITIVE_TRIANGLES,a);
- mesh->surface_set_material(0,material);
-#endif
- ERR_FAIL_COND(node->get_baked_light().is_null());
-
- baker->update_octree_images(octree_texture,light_texture);
- baker->update_octree_sampler(octree_sampler);
- //print_line("sampler size: "+itos(octree_sampler.size()*4));
-
-#if 1
-//debug
- Image img(baker->baked_octree_texture_w,baker->baked_octree_texture_h,0,Image::FORMAT_RGBA8,octree_texture);
- Ref<ImageTexture> it = memnew( ImageTexture );
- it->create_from_image(img);
- ResourceSaver::save("baked_octree.png",it);
-
-#endif
-
-
- uint64_t rays_snap = baker->get_rays_thrown();
- int rays_sec = (rays_snap-last_rays_time)*1.0-(update_timeout);
- last_rays_time=rays_snap;
-
- bake_info->set_text("rays/s: "+itos(rays_sec));
- update_timeout=1;
- print_line("MSUPDATE: "+itos(OS::get_singleton()->get_ticks_msec()-t));
- t=OS::get_singleton()->get_ticks_msec();
- node->get_baked_light()->set_octree(octree_texture);
- node->get_baked_light()->set_light(light_texture);
- node->get_baked_light()->set_sampler_octree(octree_sampler);
- node->get_baked_light()->set_edited(true);
-
- print_line("MSSET: "+itos(OS::get_singleton()->get_ticks_msec()-t));
-
-
-
- }
- }
- }
-}
-
-
-void BakedLightEditor::_menu_option(int p_option) {
-
-
- switch(p_option) {
-
-
- case MENU_OPTION_BAKE: {
-
- ERR_FAIL_COND(!node);
- ERR_FAIL_COND(node->get_baked_light().is_null());
- baker->bake(node->get_baked_light(),node);
- node->get_baked_light()->set_mode(BakedLight::MODE_OCTREE);
- update_timeout=0;
- set_process(true);
-
-
- } break;
- case MENU_OPTION_CLEAR: {
-
-
-
- } break;
-
- }
-}
-
-void BakedLightEditor::_bake_pressed() {
-
- ERR_FAIL_COND(!node);
- const String conf_warning = node->get_configuration_warning();
- if (!conf_warning.empty()) {
- err_dialog->set_text(conf_warning);
- err_dialog->popup_centered_minsize();
- button_bake->set_pressed(false);
- return;
- }
-
- if (baker->is_baking()) {
-
- baker->set_pause(!button_bake->is_pressed());
- if (baker->is_paused()) {
-
- set_process(false);
- bake_info->set_text("");
- button_reset->show();
- button_make_lightmaps->show();
-
- } else {
-
- update_timeout=0;
- set_process(true);
- button_make_lightmaps->hide();
- button_reset->hide();
- }
- } else {
- baker->bake(node->get_baked_light(),node);
- node->get_baked_light()->set_mode(BakedLight::MODE_OCTREE);
- update_timeout=0;
-
- last_rays_time=0;
- button_bake->set_pressed(false);
-
- set_process(true);
- }
-
-}
-
-void BakedLightEditor::_clear_pressed(){
-
- baker->clear();
- button_bake->set_pressed(false);
- bake_info->set_text("");
-
-}
-
-void BakedLightEditor::edit(BakedLightInstance *p_baked_light) {
-
- if (p_baked_light==NULL || node==p_baked_light) {
- return;
- }
- if (node && node!=p_baked_light)
- _end_baking();
-
-
- node=p_baked_light;
- //_end_baking();
-
-}
-
-void BakedLightEditor::_bake_lightmaps() {
-
- Error err = baker->transfer_to_lightmaps();
- if (err) {
-
- err_dialog->set_text("Error baking to lightmaps!\nMake sure that a bake has just\n happened and that lightmaps are\n configured. ");
- err_dialog->popup_centered_minsize();
- return;
- }
-
- node->get_baked_light()->set_mode(BakedLight::MODE_LIGHTMAPS);
-
-
-}
-
-void BakedLightEditor::_bind_methods() {
-
- ClassDB::bind_method("_menu_option",&BakedLightEditor::_menu_option);
- ClassDB::bind_method("_bake_pressed",&BakedLightEditor::_bake_pressed);
- ClassDB::bind_method("_clear_pressed",&BakedLightEditor::_clear_pressed);
- ClassDB::bind_method("_bake_lightmaps",&BakedLightEditor::_bake_lightmaps);
-}
-
-BakedLightEditor::BakedLightEditor() {
-
-
- bake_hbox = memnew( HBoxContainer );
- button_bake = memnew( ToolButton );
- button_bake->set_text(TTR("Bake!"));
- button_bake->set_toggle_mode(true);
- button_reset = memnew( Button );
- button_make_lightmaps = memnew( Button );
- button_bake->set_tooltip("Start/Unpause the baking process.\nThis bakes lighting into the lightmap octree.");
- button_make_lightmaps ->set_tooltip("Convert the lightmap octree to lightmap textures\n(must have set up UV/Lightmaps properly before!).");
-
-
- bake_info = memnew( Label );
- bake_hbox->add_child( button_bake );
- bake_hbox->add_child( button_reset );
- bake_hbox->add_child( bake_info );
-
- err_dialog = memnew( AcceptDialog );
- add_child(err_dialog);
- node=NULL;
- baker = memnew( BakedLightBaker );
-
- bake_hbox->add_child(button_make_lightmaps);
- button_make_lightmaps->hide();
-
- button_bake->connect("pressed",this,"_bake_pressed");
- button_reset->connect("pressed",this,"_clear_pressed");
- button_make_lightmaps->connect("pressed",this,"_bake_lightmaps");
- button_reset->hide();
- button_reset->set_tooltip(TTR("Reset the lightmap octree baking process (start over)."));
-
-
- update_timeout=0;
-
-
-
-}
-
-BakedLightEditor::~BakedLightEditor() {
-
- memdelete(baker);
-}
-
-void BakedLightEditorPlugin::edit(Object *p_object) {
-
- baked_light_editor->edit(p_object->cast_to<BakedLightInstance>());
-}
-
-bool BakedLightEditorPlugin::handles(Object *p_object) const {
-
- return p_object->is_type("BakedLightInstance");
-}
-
-void BakedLightEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
- baked_light_editor->show();
- baked_light_editor->bake_hbox->show();
- } else {
-
- baked_light_editor->hide();
- baked_light_editor->bake_hbox->hide();
- baked_light_editor->edit(NULL);
- }
-
-}
-
-BakedLightEditorPlugin::BakedLightEditorPlugin(EditorNode *p_node) {
-
- editor=p_node;
- baked_light_editor = memnew( BakedLightEditor );
- editor->get_viewport()->add_child(baked_light_editor);
- add_control_to_container(CONTAINER_SPATIAL_EDITOR_MENU,baked_light_editor->bake_hbox);
- baked_light_editor->hide();
- baked_light_editor->bake_hbox->hide();
-}
-
-
-BakedLightEditorPlugin::~BakedLightEditorPlugin()
-{
-}
-
-#endif
diff --git a/editor/plugins/baked_light_editor_plugin.h b/editor/plugins/baked_light_editor_plugin.h
deleted file mode 100644
index c4a7cd51cf..0000000000
--- a/editor/plugins/baked_light_editor_plugin.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*************************************************************************/
-/* baked_light_editor_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 BAKED_LIGHT_EDITOR_PLUGIN_H
-#define BAKED_LIGHT_EDITOR_PLUGIN_H
-
-#include "editor/editor_node.h"
-#include "editor/editor_plugin.h"
-#include "editor/plugins/baked_light_baker.h"
-#include "scene/gui/spin_box.h"
-
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-
-#if 0
-
-class MeshInstance;
-
-class BakedLightEditor : public Control {
-
- GDCLASS(BakedLightEditor, Control );
-
-
- float update_timeout;
- PoolVector<uint8_t> octree_texture;
- PoolVector<uint8_t> light_texture;
- PoolVector<int> octree_sampler;
-
- BakedLightBaker *baker;
- AcceptDialog *err_dialog;
-
- HBoxContainer *bake_hbox;
- Button *button_bake;
- Button *button_reset;
- Button *button_make_lightmaps;
- Label *bake_info;
-
- uint64_t last_rays_time;
-
-
-
- BakedLightInstance *node;
-
- enum Menu {
-
- MENU_OPTION_BAKE,
- MENU_OPTION_CLEAR
- };
-
- void _bake_lightmaps();
-
- void _bake_pressed();
- void _clear_pressed();
-
- void _end_baking();
- void _menu_option(int);
-
-friend class BakedLightEditorPlugin;
-protected:
- void _node_removed(Node *p_node);
- static void _bind_methods();
- void _notification(int p_what);
-public:
-
- void edit(BakedLightInstance *p_baked_light);
- BakedLightEditor();
- ~BakedLightEditor();
-};
-
-class BakedLightEditorPlugin : public EditorPlugin {
-
- GDCLASS( BakedLightEditorPlugin, EditorPlugin );
-
- BakedLightEditor *baked_light_editor;
- EditorNode *editor;
-
-public:
-
- virtual String get_name() const { return "BakedLight"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
- virtual void make_visible(bool p_visible);
-
- BakedLightEditorPlugin(EditorNode *p_node);
- ~BakedLightEditorPlugin();
-
-};
-
-#endif // MULTIMESH_EDITOR_PLUGIN_H
-#endif
diff --git a/editor/plugins/camera_editor_plugin.cpp b/editor/plugins/camera_editor_plugin.cpp
index b8f8464bae..c19540116e 100644
--- a/editor/plugins/camera_editor_plugin.cpp
+++ b/editor/plugins/camera_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -88,7 +88,7 @@ CameraEditor::CameraEditor() {
preview->set_toggle_mode(true);
preview->set_anchor(MARGIN_LEFT, Control::ANCHOR_END);
preview->set_anchor(MARGIN_RIGHT, Control::ANCHOR_END);
- preview->set_margin(MARGIN_LEFT, 60);
+ preview->set_margin(MARGIN_LEFT, -60);
preview->set_margin(MARGIN_RIGHT, 0);
preview->set_margin(MARGIN_TOP, 0);
preview->set_margin(MARGIN_BOTTOM, 10);
@@ -97,8 +97,8 @@ CameraEditor::CameraEditor() {
void CameraEditorPlugin::edit(Object *p_object) {
- SpatialEditor::get_singleton()->set_can_preview(p_object->cast_to<Camera>());
- //camera_editor->edit(p_object->cast_to<Node>());
+ SpatialEditor::get_singleton()->set_can_preview(Object::cast_to<Camera>(p_object));
+ //camera_editor->edit(Object::cast_to<Node>(p_object));
}
bool CameraEditorPlugin::handles(Object *p_object) const {
@@ -109,7 +109,7 @@ bool CameraEditorPlugin::handles(Object *p_object) const {
void CameraEditorPlugin::make_visible(bool p_visible) {
if (p_visible) {
- //SpatialEditor::get_singleton()->set_can_preview(p_object->cast_to<Camera>());
+ //SpatialEditor::get_singleton()->set_can_preview(Object::cast_to<Camera>(p_object));
} else {
SpatialEditor::get_singleton()->set_can_preview(NULL);
}
diff --git a/editor/plugins/camera_editor_plugin.h b/editor/plugins/camera_editor_plugin.h
index f4b26fcdac..12702db7a5 100644
--- a/editor/plugins/camera_editor_plugin.h
+++ b/editor/plugins/camera_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -68,8 +68,8 @@ class CameraEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "Camera"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
CameraEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index a35d7a9a50..329395d9c4 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -175,7 +175,7 @@ void CanvasItemEditor::_edit_set_pivot(const Vector2 &mouse_pos) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node2D *n2d = E->get()->cast_to<Node2D>();
+ Node2D *n2d = Object::cast_to<Node2D>(E->get());
if (n2d && n2d->edit_has_pivot()) {
Vector2 offset = n2d->edit_get_pivot();
@@ -190,7 +190,7 @@ void CanvasItemEditor::_edit_set_pivot(const Vector2 &mouse_pos) {
undo_redo->add_undo_method(n2d, "set_global_position", gpos);
undo_redo->add_undo_method(n2d, "edit_set_pivot", offset);
for (int i = 0; i < n2d->get_child_count(); i++) {
- Node2D *n2dc = n2d->get_child(i)->cast_to<Node2D>();
+ Node2D *n2dc = Object::cast_to<Node2D>(n2d->get_child(i));
if (!n2dc)
continue;
@@ -199,7 +199,7 @@ void CanvasItemEditor::_edit_set_pivot(const Vector2 &mouse_pos) {
}
}
- Control *cnt = E->get()->cast_to<Control>();
+ Control *cnt = Object::cast_to<Control>(E->get());
if (cnt) {
Vector2 old_pivot = cnt->get_pivot_offset();
@@ -265,7 +265,7 @@ void CanvasItemEditor::_tool_select(int p_index) {
Object *CanvasItemEditor::_get_editor_data(Object *p_what) {
- CanvasItem *ci = p_what->cast_to<CanvasItem>();
+ CanvasItem *ci = Object::cast_to<CanvasItem>(p_what);
if (!ci)
return NULL;
@@ -382,54 +382,15 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) {
void CanvasItemEditor::_add_canvas_item(CanvasItem *p_canvas_item) {
editor_selection->add_node(p_canvas_item);
-#if 0
- if (canvas_items.has(p_canvas_item))
- return;
-
- canvas_items.insert(p_canvas_item,p_info);
- p_canvas_item->connect("hide",this,"_visibility_changed",varray(p_canvas_item->get_instance_id()),CONNECT_ONESHOT);
-#endif
}
void CanvasItemEditor::_remove_canvas_item(CanvasItem *p_canvas_item) {
editor_selection->remove_node(p_canvas_item);
-#if 0
- p_canvas_item->disconnect("hide",this,"_visibility_changed");
- canvas_items.erase(p_canvas_item);
-#endif
}
void CanvasItemEditor::_clear_canvas_items() {
editor_selection->clear();
-#if 0
- while(canvas_items.size())
- _remove_canvas_item(canvas_items.front()->key());
-#endif
-}
-
-void CanvasItemEditor::_visibility_changed(ObjectID p_canvas_item) {
-#if 0
- Object *c = ObjectDB::get_instance(p_canvas_item);
- if (!c)
- return;
- CanvasItem *ct = c->cast_to<CanvasItem>();
- if (!ct)
- return;
- canvas_items.erase(ct);
- //_remove_canvas_item(ct);
- update();
-#endif
-}
-
-void CanvasItemEditor::_node_removed(Node *p_node) {
-#if 0
- CanvasItem *canvas_item = (CanvasItem*)p_node; //not a good cast, but safe
- if (canvas_items.has(canvas_item))
- _remove_canvas_item(canvas_item);
-
- update();
-#endif
}
void CanvasItemEditor::_keying_changed() {
@@ -451,17 +412,17 @@ bool CanvasItemEditor::_is_part_of_subscene(CanvasItem *p_item) {
void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_node, const Transform2D &p_parent_xform, const Transform2D &p_canvas_xform, Vector<_SelectResult> &r_items, unsigned int limit) {
if (!p_node)
return;
- if (p_node->cast_to<Viewport>())
+ if (Object::cast_to<Viewport>(p_node))
return;
- CanvasItem *c = p_node->cast_to<CanvasItem>();
+ CanvasItem *c = Object::cast_to<CanvasItem>(p_node);
for (int i = p_node->get_child_count() - 1; i >= 0; i--) {
if (c && !c->is_set_as_toplevel())
_find_canvas_items_at_pos(p_pos, p_node->get_child(i), p_parent_xform * c->get_transform(), p_canvas_xform, r_items);
else {
- CanvasLayer *cl = p_node->cast_to<CanvasLayer>();
+ CanvasLayer *cl = Object::cast_to<CanvasLayer>(p_node);
_find_canvas_items_at_pos(p_pos, p_node->get_child(i), transform, cl ? cl->get_transform() : p_canvas_xform, r_items); //use base transform
}
@@ -469,13 +430,13 @@ void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_no
return;
}
- if (c && c->is_visible_in_tree() && !c->has_meta("_edit_lock_") && !c->cast_to<CanvasLayer>()) {
+ if (c && c->is_visible_in_tree() && !c->has_meta("_edit_lock_") && !Object::cast_to<CanvasLayer>(c)) {
Rect2 rect = c->get_item_rect();
Point2 local_pos = (p_parent_xform * p_canvas_xform * c->get_transform()).affine_inverse().xform(p_pos);
if (rect.has_point(local_pos)) {
- Node2D *node = c->cast_to<Node2D>();
+ Node2D *node = Object::cast_to<Node2D>(c);
_SelectResult res;
res.item = c;
@@ -492,10 +453,10 @@ void CanvasItemEditor::_find_canvas_items_at_rect(const Rect2 &p_rect, Node *p_n
if (!p_node)
return;
- if (p_node->cast_to<Viewport>())
+ if (Object::cast_to<Viewport>(p_node))
return;
- CanvasItem *c = p_node->cast_to<CanvasItem>();
+ CanvasItem *c = Object::cast_to<CanvasItem>(p_node);
bool inherited = p_node != get_tree()->get_edited_scene_root() && p_node->get_filename() != "";
bool editable = false;
@@ -509,13 +470,13 @@ void CanvasItemEditor::_find_canvas_items_at_rect(const Rect2 &p_rect, Node *p_n
if (c && !c->is_set_as_toplevel())
_find_canvas_items_at_rect(p_rect, p_node->get_child(i), p_parent_xform * c->get_transform(), p_canvas_xform, r_items);
else {
- CanvasLayer *cl = p_node->cast_to<CanvasLayer>();
+ CanvasLayer *cl = Object::cast_to<CanvasLayer>(p_node);
_find_canvas_items_at_rect(p_rect, p_node->get_child(i), transform, cl ? cl->get_transform() : p_canvas_xform, r_items);
}
}
}
- if (c && c->is_visible_in_tree() && !c->has_meta("_edit_lock_") && !c->cast_to<CanvasLayer>()) {
+ if (c && c->is_visible_in_tree() && !c->has_meta("_edit_lock_") && !Object::cast_to<CanvasLayer>(c)) {
Rect2 rect = c->get_item_rect();
Transform2D xform = p_parent_xform * p_canvas_xform * c->get_transform();
@@ -561,7 +522,7 @@ bool CanvasItemEditor::_select_click_on_item(CanvasItem *item, Point2 p_click_po
editor_selection->clear();
editor_selection->add_node(item);
// Reselect
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
editor->call("edit_node", item);
}
}
@@ -590,7 +551,7 @@ void CanvasItemEditor::_key_move(const Vector2 &p_dir, bool p_snap, KeyMoveMODE
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -619,7 +580,7 @@ void CanvasItemEditor::_key_move(const Vector2 &p_dir, bool p_snap, KeyMoveMODE
} else { // p_move_mode==MOVE_LOCAL_BASE || p_move_mode==MOVE_LOCAL_WITH_ROT
- if (Node2D *node_2d = canvas_item->cast_to<Node2D>()) {
+ if (Node2D *node_2d = Object::cast_to<Node2D>(canvas_item)) {
if (p_move_mode == MOVE_LOCAL_WITH_ROT) {
Transform2D m;
@@ -628,7 +589,7 @@ void CanvasItemEditor::_key_move(const Vector2 &p_dir, bool p_snap, KeyMoveMODE
}
node_2d->set_position(node_2d->get_position() + drag);
- } else if (Control *control = canvas_item->cast_to<Control>()) {
+ } else if (Control *control = Object::cast_to<Control>(canvas_item)) {
control->set_position(control->get_position() + drag);
}
@@ -648,7 +609,7 @@ Point2 CanvasItemEditor::_find_topleftmost_point() {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -673,7 +634,7 @@ int CanvasItemEditor::get_item_count() {
int ic = 0;
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
@@ -694,7 +655,7 @@ CanvasItem *CanvasItemEditor::get_single_item() {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->key());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -709,8 +670,8 @@ CanvasItem *CanvasItemEditor::get_single_item() {
return single_item;
}
-CanvasItemEditor::DragType CanvasItemEditor::_find_drag_type(const Point2 &p_click, Vector2 &r_point) {
-
+CanvasItemEditor::DragType CanvasItemEditor::_get_resize_handle_drag_type(const Point2 &p_click, Vector2 &r_point) {
+ // Returns a drag type if a resize handle is clicked
CanvasItem *canvas_item = get_single_item();
ERR_FAIL_COND_V(!canvas_item, DRAG_NONE);
@@ -775,13 +736,97 @@ CanvasItemEditor::DragType CanvasItemEditor::_find_drag_type(const Point2 &p_cli
return DRAG_NONE;
}
+float CanvasItemEditor::_anchor_snap(float p_anchor, bool *p_snapped, float p_opposite_anchor) {
+ bool snapped = false;
+ float dist, dist_min = 0.0;
+ float radius = 0.05 / zoom;
+ float basic_anchors[3] = { 0.0, 0.5, 1.0 };
+ for (int i = 0; i < 3; i++) {
+ if ((dist = fabs(p_anchor - basic_anchors[i])) < radius) {
+ if (!snapped || dist <= dist_min) {
+ p_anchor = basic_anchors[i];
+ dist_min = dist;
+ snapped = true;
+ }
+ }
+ }
+ if (p_opposite_anchor >= 0 && (dist = fabs(p_anchor - p_opposite_anchor)) < radius) {
+ if (!snapped || dist <= dist_min) {
+ p_anchor = p_opposite_anchor;
+ dist_min = dist;
+ snapped = true;
+ }
+ }
+ if (p_snapped)
+ *p_snapped = snapped;
+ return p_anchor;
+}
+
+Vector2 CanvasItemEditor::_anchor_to_position(Control *p_control, Vector2 anchor) {
+ ERR_FAIL_COND_V(!p_control, Vector2());
+
+ Transform2D parent_transform = p_control->get_transform().affine_inverse();
+ Size2 parent_size = p_control->get_parent_area_size();
+
+ return parent_transform.xform(Vector2(parent_size.x * anchor.x, parent_size.y * anchor.y));
+}
+
+Vector2 CanvasItemEditor::_position_to_anchor(Control *p_control, Vector2 position) {
+ ERR_FAIL_COND_V(!p_control, Vector2());
+ Size2 parent_size = p_control->get_parent_area_size();
+
+ return p_control->get_transform().xform(position) / parent_size;
+}
+
+CanvasItemEditor::DragType CanvasItemEditor::_get_anchor_handle_drag_type(const Point2 &p_click, Vector2 &r_point) {
+ // Returns a drag type if an anchor handle is clicked
+ CanvasItem *canvas_item = get_single_item();
+ ERR_FAIL_COND_V(!canvas_item, DRAG_NONE);
+
+ Control *control = Object::cast_to<Control>(canvas_item);
+ ERR_FAIL_COND_V(!control, DRAG_NONE);
+
+ Vector2 anchor_pos[4];
+ anchor_pos[0] = Vector2(control->get_anchor(MARGIN_LEFT), control->get_anchor(MARGIN_TOP));
+ anchor_pos[1] = Vector2(control->get_anchor(MARGIN_RIGHT), control->get_anchor(MARGIN_TOP));
+ anchor_pos[2] = Vector2(control->get_anchor(MARGIN_RIGHT), control->get_anchor(MARGIN_BOTTOM));
+ anchor_pos[3] = Vector2(control->get_anchor(MARGIN_LEFT), control->get_anchor(MARGIN_BOTTOM));
+
+ Rect2 anchor_rects[4];
+ for (int i = 0; i < 4; i++) {
+ anchor_pos[i] = (transform * control->get_global_transform_with_canvas()).xform(_anchor_to_position(control, anchor_pos[i]));
+ anchor_rects[i] = Rect2(anchor_pos[i], anchor_handle->get_size());
+ anchor_rects[i].position -= anchor_handle->get_size() * Vector2(i == 0 || i == 3, i <= 1);
+ }
+
+ DragType dragger[] = {
+ DRAG_ANCHOR_TOP_LEFT,
+ DRAG_ANCHOR_TOP_RIGHT,
+ DRAG_ANCHOR_BOTTOM_RIGHT,
+ DRAG_ANCHOR_BOTTOM_LEFT,
+ };
+
+ for (int i = 0; i < 4; i++) {
+ if (anchor_rects[i].has_point(p_click)) {
+ r_point = transform.affine_inverse().xform(anchor_pos[i]);
+ if ((anchor_pos[0] == anchor_pos[2]) && (anchor_pos[0].distance_to(p_click) < anchor_handle->get_size().length() / 3.0)) {
+ return DRAG_ANCHOR_ALL;
+ } else {
+ return dragger[i];
+ }
+ }
+ }
+
+ return DRAG_NONE;
+}
+
void CanvasItemEditor::_prepare_drag(const Point2 &p_click_pos) {
List<Node *> &selection = editor_selection->get_selected_node_list();
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -792,15 +837,15 @@ void CanvasItemEditor::_prepare_drag(const Point2 &p_click_pos) {
continue;
se->undo_state = canvas_item->edit_get_state();
- if (canvas_item->cast_to<Node2D>())
- se->undo_pivot = canvas_item->cast_to<Node2D>()->edit_get_pivot();
- if (canvas_item->cast_to<Control>())
- se->undo_pivot = canvas_item->cast_to<Control>()->get_pivot_offset();
+ if (Object::cast_to<Node2D>(canvas_item))
+ se->undo_pivot = Object::cast_to<Node2D>(canvas_item)->edit_get_pivot();
+ if (Object::cast_to<Control>(canvas_item))
+ se->undo_pivot = Object::cast_to<Control>(canvas_item)->get_pivot_offset();
}
- if (selection.size() == 1 && selection[0]->cast_to<Node2D>()) {
+ if (selection.size() == 1 && Object::cast_to<Node2D>(selection[0])) {
drag = DRAG_NODE_2D;
- drag_point_from = selection[0]->cast_to<Node2D>()->get_global_position();
+ drag_point_from = Object::cast_to<Node2D>(selection[0])->get_global_position();
} else {
drag = DRAG_ALL;
drag_point_from = _find_topleftmost_point();
@@ -863,9 +908,9 @@ void CanvasItemEditor::incend(float &beg, float &end, float inc, float minsize,
}
}
-void CanvasItemEditor::_append_canvas_item(CanvasItem *c) {
+void CanvasItemEditor::_append_canvas_item(CanvasItem *p_item) {
- editor_selection->add_node(c);
+ editor_selection->add_node(p_item);
}
void CanvasItemEditor::_snap_changed() {
@@ -909,11 +954,6 @@ void CanvasItemEditor::_selection_menu_hide() {
selection_menu->set_size(Vector2(0, 0));
}
-bool CanvasItemEditor::get_remove_list(List<Node *> *p_list) {
-
- return false; //!p_list->empty();
-}
-
void CanvasItemEditor::_list_select(const Ref<InputEventMouseButton> &b) {
Point2 click = b->get_position();
@@ -1085,7 +1125,7 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
List<Node *> &selection = editor_selection->get_selected_node_list();
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -1096,10 +1136,10 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
continue;
canvas_item->edit_set_state(se->undo_state);
- if (canvas_item->cast_to<Node2D>())
- canvas_item->cast_to<Node2D>()->edit_set_pivot(se->undo_pivot);
- if (canvas_item->cast_to<Control>())
- canvas_item->cast_to<Control>()->set_pivot_offset(se->undo_pivot);
+ if (Object::cast_to<Node2D>(canvas_item))
+ Object::cast_to<Node2D>(canvas_item)->edit_set_pivot(se->undo_pivot);
+ if (Object::cast_to<Control>(canvas_item))
+ Object::cast_to<Control>(canvas_item)->set_pivot_offset(se->undo_pivot);
}
}
@@ -1167,7 +1207,7 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -1181,13 +1221,13 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
undo_redo->add_do_method(canvas_item, "edit_set_state", state);
undo_redo->add_undo_method(canvas_item, "edit_set_state", se->undo_state);
{
- Node2D *pvt = canvas_item->cast_to<Node2D>();
+ Node2D *pvt = Object::cast_to<Node2D>(canvas_item);
if (pvt && pvt->edit_has_pivot()) {
undo_redo->add_do_method(canvas_item, "edit_set_pivot", pvt->edit_get_pivot());
undo_redo->add_undo_method(canvas_item, "edit_set_pivot", se->undo_pivot);
}
- Control *cnt = canvas_item->cast_to<Control>();
+ Control *cnt = Object::cast_to<Control>(canvas_item);
if (cnt) {
undo_redo->add_do_method(canvas_item, "set_pivot_offset", cnt->get_pivot_offset());
undo_redo->add_undo_method(canvas_item, "set_pivot_offset", se->undo_pivot);
@@ -1257,14 +1297,12 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
}
if (Cbone) {
- Node2D *b = NULL;
- Object *obj = ObjectDB::get_instance(Cbone->get().bone);
- if (obj)
- b = obj->cast_to<Node2D>();
+ Node2D *b = Object::cast_to<Node2D>(ObjectDB::get_instance(Cbone->get().bone));
if (b) {
bool ik_found = false;
+
bool first = true;
while (b) {
@@ -1274,7 +1312,7 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
break;
float len = pi->get_global_transform().get_origin().distance_to(b->get_global_position());
- b = pi->cast_to<Node2D>();
+ b = Object::cast_to<Node2D>(pi);
if (!b)
break;
@@ -1320,10 +1358,10 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
drag = DRAG_ROTATE;
drag_from = transform.affine_inverse().xform(click);
se->undo_state = canvas_item->edit_get_state();
- if (canvas_item->cast_to<Node2D>())
- se->undo_pivot = canvas_item->cast_to<Node2D>()->edit_get_pivot();
- if (canvas_item->cast_to<Control>())
- se->undo_pivot = canvas_item->cast_to<Control>()->get_pivot_offset();
+ if (Object::cast_to<Node2D>(canvas_item))
+ se->undo_pivot = Object::cast_to<Node2D>(canvas_item)->edit_get_pivot();
+ if (Object::cast_to<Control>(canvas_item))
+ se->undo_pivot = Object::cast_to<Control>(canvas_item)->get_pivot_offset();
return;
}
@@ -1336,17 +1374,27 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
}
}
- // Drag
- drag = _find_drag_type(click, drag_point_from);
+ // Drag resize handles
+ drag = _get_resize_handle_drag_type(click, drag_point_from);
if (drag != DRAG_NONE) {
drag_from = transform.affine_inverse().xform(click);
se->undo_state = canvas_item->edit_get_state();
- if (canvas_item->cast_to<Node2D>())
- se->undo_pivot = canvas_item->cast_to<Node2D>()->edit_get_pivot();
- if (canvas_item->cast_to<Control>())
- se->undo_pivot = canvas_item->cast_to<Control>()->get_pivot_offset();
+ if (Object::cast_to<Node2D>(canvas_item))
+ se->undo_pivot = Object::cast_to<Node2D>(canvas_item)->edit_get_pivot();
+ if (Object::cast_to<Control>(canvas_item))
+ se->undo_pivot = Object::cast_to<Control>(canvas_item)->get_pivot_offset();
return;
}
+
+ // Drag anchor handles
+ if (Object::cast_to<Control>(canvas_item)) {
+ drag = _get_anchor_handle_drag_type(click, drag_point_from);
+ if (drag != DRAG_NONE) {
+ drag_from = transform.affine_inverse().xform(click);
+ se->undo_state = canvas_item->edit_get_state();
+ return;
+ }
+ }
}
}
@@ -1362,9 +1410,7 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
CanvasItem *c = NULL;
if (Cbone) {
- Object *obj = ObjectDB::get_instance(Cbone->get().bone);
- if (obj)
- c = obj->cast_to<CanvasItem>();
+ c = Object::cast_to<CanvasItem>(ObjectDB::get_instance(Cbone->get().bone));
if (c)
c = c->get_parent_item();
}
@@ -1394,7 +1440,7 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
};
if (n) {
- c = n->cast_to<CanvasItem>();
+ c = Object::cast_to<CanvasItem>(n);
} else {
c = NULL;
}
@@ -1423,9 +1469,8 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
}
if (drag == DRAG_NONE) {
-
if ((m->get_button_mask() & BUTTON_MASK_LEFT && tool == TOOL_PAN) || m->get_button_mask() & BUTTON_MASK_MIDDLE || (m->get_button_mask() & BUTTON_MASK_LEFT && Input::get_singleton()->is_key_pressed(KEY_SPACE))) {
-
+ // Pan the viewport
Point2i relative;
if (bool(EditorSettings::get_singleton()->get("editors/2d/warped_mouse_panning"))) {
relative = Input::get_singleton()->warp_mouse_motion(m, viewport->get_global_rect());
@@ -1441,10 +1486,9 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
}
List<Node *> &selection = editor_selection->get_selected_node_list();
-
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -1458,10 +1502,10 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
if (!dragging_bone) {
canvas_item->edit_set_state(se->undo_state); //reset state and reapply
- if (canvas_item->cast_to<Node2D>())
- canvas_item->cast_to<Node2D>()->edit_set_pivot(se->undo_pivot);
- if (canvas_item->cast_to<Control>())
- canvas_item->cast_to<Control>()->set_pivot_offset(se->undo_pivot);
+ if (Object::cast_to<Node2D>(canvas_item))
+ Object::cast_to<Node2D>(canvas_item)->edit_set_pivot(se->undo_pivot);
+ if (Object::cast_to<Control>(canvas_item))
+ Object::cast_to<Control>(canvas_item)->set_pivot_offset(se->undo_pivot);
}
Vector2 dfrom = drag_from;
@@ -1470,10 +1514,10 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
continue;
if (drag == DRAG_ROTATE) {
-
+ // Rotate the node
Vector2 center = canvas_item->get_global_transform_with_canvas().get_origin();
{
- Node2D *node = canvas_item->cast_to<Node2D>();
+ Node2D *node = Object::cast_to<Node2D>(canvas_item);
if (node) {
real_t angle = node->get_rotation();
@@ -1485,7 +1529,7 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
}
{
- Control *node = canvas_item->cast_to<Control>();
+ Control *node = Object::cast_to<Control>(canvas_item);
if (node) {
real_t angle = node->get_rotation();
@@ -1499,10 +1543,47 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
continue;
}
+ Control *control = Object::cast_to<Control>(canvas_item);
+ if (control) {
+ // Drag and snap the anchor
+ Vector2 anchor = _position_to_anchor(control, canvas_item->get_global_transform_with_canvas().affine_inverse().xform(dto - drag_from + drag_point_from));
+
+ switch (drag) {
+ case DRAG_ANCHOR_TOP_LEFT:
+ control->set_anchor(MARGIN_LEFT, _anchor_snap(anchor.x, NULL, control->get_anchor(MARGIN_RIGHT)), false, false);
+ control->set_anchor(MARGIN_TOP, _anchor_snap(anchor.y, NULL, control->get_anchor(MARGIN_BOTTOM)), false, false);
+ continue;
+ break;
+ case DRAG_ANCHOR_TOP_RIGHT:
+ control->set_anchor(MARGIN_RIGHT, _anchor_snap(anchor.x, NULL, control->get_anchor(MARGIN_LEFT)), false, false);
+ control->set_anchor(MARGIN_TOP, _anchor_snap(anchor.y, NULL, control->get_anchor(MARGIN_BOTTOM)), false, false);
+ continue;
+ break;
+ case DRAG_ANCHOR_BOTTOM_RIGHT:
+ control->set_anchor(MARGIN_RIGHT, _anchor_snap(anchor.x, NULL, control->get_anchor(MARGIN_LEFT)), false, false);
+ control->set_anchor(MARGIN_BOTTOM, _anchor_snap(anchor.y, NULL, control->get_anchor(MARGIN_TOP)), false, false);
+ continue;
+ break;
+ case DRAG_ANCHOR_BOTTOM_LEFT:
+ control->set_anchor(MARGIN_LEFT, _anchor_snap(anchor.x, NULL, control->get_anchor(MARGIN_RIGHT)), false, false);
+ control->set_anchor(MARGIN_BOTTOM, _anchor_snap(anchor.y, NULL, control->get_anchor(MARGIN_TOP)), false, false);
+ continue;
+ break;
+ case DRAG_ANCHOR_ALL:
+ control->set_anchor(MARGIN_LEFT, _anchor_snap(anchor.x));
+ control->set_anchor(MARGIN_RIGHT, _anchor_snap(anchor.x));
+ control->set_anchor(MARGIN_TOP, _anchor_snap(anchor.y));
+ control->set_anchor(MARGIN_BOTTOM, _anchor_snap(anchor.y));
+ continue;
+ break;
+ }
+ }
+
bool uniform = m->get_shift();
bool symmetric = m->get_alt();
- dto = dto - (drag == DRAG_ALL || drag == DRAG_NODE_2D ? drag_from - drag_point_from : Vector2(0, 0));
+ if (drag == DRAG_ALL || drag == DRAG_NODE_2D)
+ dto -= drag_from - drag_point_from;
if (uniform && (drag == DRAG_ALL || drag == DRAG_NODE_2D)) {
if (ABS(dto.x - drag_point_from.x) > ABS(dto.y - drag_point_from.y)) {
@@ -1528,94 +1609,91 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
// Keep the height/width ratio of the item
float aspect = local_rect.size.aspect();
switch (drag) {
- case DRAG_LEFT: {
+ case DRAG_LEFT:
drag_vector.y = -drag_vector.x / aspect;
- } break;
- case DRAG_RIGHT: {
+ break;
+ case DRAG_RIGHT:
drag_vector.y = drag_vector.x / aspect;
- } break;
- case DRAG_TOP: {
+ break;
+ case DRAG_TOP:
drag_vector.x = -drag_vector.y * aspect;
- } break;
- case DRAG_BOTTOM: {
+ break;
+ case DRAG_BOTTOM:
drag_vector.x = drag_vector.y * aspect;
- } break;
+ break;
case DRAG_BOTTOM_LEFT:
- case DRAG_TOP_RIGHT: {
+ case DRAG_TOP_RIGHT:
if (aspect > 1.0) { // width > height, take x as reference
drag_vector.y = -drag_vector.x / aspect;
} else { // height > width, take y as reference
drag_vector.x = -drag_vector.y * aspect;
}
- } break;
+ break;
case DRAG_BOTTOM_RIGHT:
- case DRAG_TOP_LEFT: {
+ case DRAG_TOP_LEFT:
if (aspect > 1.0) { // width > height, take x as reference
drag_vector.y = drag_vector.x / aspect;
} else { // height > width, take y as reference
drag_vector.x = drag_vector.y * aspect;
}
- } break;
+ break;
}
} else {
switch (drag) {
case DRAG_RIGHT:
- case DRAG_LEFT: {
+ case DRAG_LEFT:
drag_vector.y = 0;
- } break;
+ break;
case DRAG_TOP:
- case DRAG_BOTTOM: {
+ case DRAG_BOTTOM:
drag_vector.x = 0;
- } break;
+ break;
}
}
switch (drag) {
- case DRAG_ALL: {
+ case DRAG_ALL:
begin += drag_vector;
end += drag_vector;
- } break;
+ break;
case DRAG_RIGHT:
case DRAG_BOTTOM:
- case DRAG_BOTTOM_RIGHT: {
+ case DRAG_BOTTOM_RIGHT:
incend(begin.x, end.x, drag_vector.x, minsize.x, symmetric);
incend(begin.y, end.y, drag_vector.y, minsize.y, symmetric);
- } break;
-
- case DRAG_TOP_LEFT: {
+ break;
+ case DRAG_TOP_LEFT:
incbeg(begin.x, end.x, drag_vector.x, minsize.x, symmetric);
incbeg(begin.y, end.y, drag_vector.y, minsize.y, symmetric);
- } break;
-
+ break;
case DRAG_TOP:
- case DRAG_TOP_RIGHT: {
+ case DRAG_TOP_RIGHT:
incbeg(begin.y, end.y, drag_vector.y, minsize.y, symmetric);
incend(begin.x, end.x, drag_vector.x, minsize.x, symmetric);
- } break;
+ break;
case DRAG_LEFT:
- case DRAG_BOTTOM_LEFT: {
+ case DRAG_BOTTOM_LEFT:
incbeg(begin.x, end.x, drag_vector.x, minsize.x, symmetric);
incend(begin.y, end.y, drag_vector.y, minsize.y, symmetric);
- } break;
- case DRAG_PIVOT: {
+ break;
+
+ case DRAG_PIVOT:
- if (canvas_item->cast_to<Node2D>()) {
- Node2D *n2d = canvas_item->cast_to<Node2D>();
+ if (Object::cast_to<Node2D>(canvas_item)) {
+ Node2D *n2d = Object::cast_to<Node2D>(canvas_item);
n2d->edit_set_pivot(se->undo_pivot + drag_vector);
}
- if (canvas_item->cast_to<Control>()) {
- canvas_item->cast_to<Control>()->set_pivot_offset(se->undo_pivot + drag_vector);
+ if (Object::cast_to<Control>(canvas_item)) {
+ Object::cast_to<Control>(canvas_item)->set_pivot_offset(se->undo_pivot + drag_vector);
}
continue;
- } break;
- case DRAG_NODE_2D: {
+ break;
+ case DRAG_NODE_2D:
- ERR_FAIL_COND(!canvas_item->cast_to<Node2D>());
- canvas_item->cast_to<Node2D>()->set_global_position(dto);
+ ERR_FAIL_COND(!Object::cast_to<Node2D>(canvas_item));
+ Object::cast_to<Node2D>(canvas_item)->set_global_position(dto);
continue;
- } break;
-
- default: {}
+ break;
}
if (!dragging_bone) {
@@ -1627,7 +1705,7 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
} else {
//ok, all that had to be done was done, now solve IK
- Node2D *n2d = canvas_item->cast_to<Node2D>();
+ Node2D *n2d = Object::cast_to<Node2D>(canvas_item);
Transform2D final_xform = bone_orig_xform;
if (n2d) {
@@ -1768,6 +1846,30 @@ void CanvasItemEditor::_viewport_gui_input(const Ref<InputEvent> &p_event) {
}
}
+void CanvasItemEditor::_draw_percentage_at_position(float p_value, Point2 p_position, Margin p_side) {
+ if (p_value != 0) {
+ Color color = Color(0.8, 0.8, 0.8, 0.5);
+ Ref<Font> font = get_font("font", "Label");
+ String str = vformat("%.1f %%", p_value * 100.0);
+ Size2 text_size = font->get_string_size(str);
+ switch (p_side) {
+ case MARGIN_LEFT:
+ p_position += Vector2(-text_size.x - 5, text_size.y / 2);
+ break;
+ case MARGIN_TOP:
+ p_position += Vector2(-text_size.x / 2, -5);
+ break;
+ case MARGIN_RIGHT:
+ p_position += Vector2(5, text_size.y / 2);
+ break;
+ case MARGIN_BOTTOM:
+ p_position += Vector2(-text_size.x / 2, text_size.y + 5);
+ break;
+ }
+ viewport->draw_string(font, p_position, str, color);
+ }
+}
+
void CanvasItemEditor::_viewport_draw() {
// TODO fetch the viewport?
@@ -1830,7 +1932,7 @@ void CanvasItemEditor::_viewport_draw() {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->key());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -1862,21 +1964,107 @@ void CanvasItemEditor::_viewport_draw() {
if (single && (tool == TOOL_SELECT || tool == TOOL_MOVE || tool == TOOL_ROTATE || tool == TOOL_EDIT_PIVOT)) { //kind of sucks
- if (canvas_item->cast_to<Node2D>()) {
+ if (Object::cast_to<Node2D>(canvas_item)) {
- if (canvas_item->cast_to<Node2D>()->edit_has_pivot()) {
+ if (Object::cast_to<Node2D>(canvas_item)->edit_has_pivot()) {
viewport->draw_texture(pivot, xform.get_origin() + (-pivot->get_size() / 2).floor());
can_move_pivot = true;
pivot_found = true;
}
}
- if (canvas_item->cast_to<Control>()) {
- Vector2 pivot_ofs = canvas_item->cast_to<Control>()->get_pivot_offset();
+
+ Control *control = Object::cast_to<Control>(canvas_item);
+ if (control) {
+ Vector2 pivot_ofs = control->get_pivot_offset();
if (pivot_ofs != Vector2()) {
viewport->draw_texture(pivot, xform.xform(pivot_ofs) + (-pivot->get_size() / 2).floor());
}
can_move_pivot = true;
pivot_found = true;
+
+ if (tool == TOOL_SELECT) {
+ float anchors_values[4];
+ anchors_values[0] = control->get_anchor(MARGIN_LEFT);
+ anchors_values[1] = control->get_anchor(MARGIN_TOP);
+ anchors_values[2] = control->get_anchor(MARGIN_RIGHT);
+ anchors_values[3] = control->get_anchor(MARGIN_BOTTOM);
+
+ // Draw the anchors
+ Vector2 anchors[4];
+ Vector2 anchors_pos[4];
+ for (int i = 0; i < 4; i++) {
+ anchors[i] = Vector2((i % 2 == 0) ? anchors_values[i] : anchors_values[(i + 1) % 4], (i % 2 == 1) ? anchors_values[i] : anchors_values[(i + 1) % 4]);
+ anchors_pos[i] = xform.xform(_anchor_to_position(control, anchors[i]));
+ }
+
+ // Get which anchor is dragged
+ int dragged_anchor = -1;
+ switch (drag) {
+ case DRAG_ANCHOR_ALL:
+ case DRAG_ANCHOR_TOP_LEFT:
+ dragged_anchor = 0;
+ break;
+ case DRAG_ANCHOR_TOP_RIGHT:
+ dragged_anchor = 1;
+ break;
+ case DRAG_ANCHOR_BOTTOM_RIGHT:
+ dragged_anchor = 2;
+ break;
+ case DRAG_ANCHOR_BOTTOM_LEFT:
+ dragged_anchor = 3;
+ break;
+ }
+
+ if (dragged_anchor >= 0) {
+ // Draw the 4 lines when dragged
+ bool snapped;
+ Color color_snapped = Color(0.64, 0.93, 0.67, 0.5);
+ Color color_base = Color(0.8, 0.8, 0.8, 0.5);
+
+ Vector2 corners_pos[4];
+ for (int i = 0; i < 4; i++) {
+ corners_pos[i] = xform.xform(_anchor_to_position(control, Vector2((i == 0 || i == 3) ? ANCHOR_BEGIN : ANCHOR_END, (i <= 1) ? ANCHOR_BEGIN : ANCHOR_END)));
+ }
+
+ Vector2 line_starts[4];
+ Vector2 line_ends[4];
+ for (int i = 0; i < 4; i++) {
+ float anchor_val = (i >= 2) ? ANCHOR_END - anchors_values[i] : anchors_values[i];
+ line_starts[i] = Vector2::linear_interpolate(corners_pos[i], corners_pos[(i + 1) % 4], anchor_val);
+ line_ends[i] = Vector2::linear_interpolate(corners_pos[(i + 3) % 4], corners_pos[(i + 2) % 4], anchor_val);
+ _anchor_snap(anchors_values[i], &snapped);
+ viewport->draw_line(line_starts[i], line_ends[i], snapped ? color_snapped : color_base, (i == dragged_anchor || (i + 3) % 4 == dragged_anchor) ? 2 : 1);
+ }
+
+ // Display the percentages next to the lines
+ float percent_val;
+ percent_val = anchors_values[(dragged_anchor + 2) % 4] - anchors_values[dragged_anchor];
+ percent_val = (dragged_anchor >= 2) ? -percent_val : percent_val;
+ _draw_percentage_at_position(percent_val, (anchors_pos[dragged_anchor] + anchors_pos[(dragged_anchor + 1) % 4]) / 2, (Margin)((dragged_anchor + 1) % 4));
+
+ percent_val = anchors_values[(dragged_anchor + 3) % 4] - anchors_values[(dragged_anchor + 1) % 4];
+ percent_val = ((dragged_anchor + 1) % 4 >= 2) ? -percent_val : percent_val;
+ _draw_percentage_at_position(percent_val, (anchors_pos[dragged_anchor] + anchors_pos[(dragged_anchor + 3) % 4]) / 2, (Margin)(dragged_anchor));
+
+ percent_val = anchors_values[(dragged_anchor + 1) % 4];
+ percent_val = ((dragged_anchor + 1) % 4 >= 2) ? ANCHOR_END - percent_val : percent_val;
+ _draw_percentage_at_position(percent_val, (line_starts[dragged_anchor] + anchors_pos[dragged_anchor]) / 2, (Margin)(dragged_anchor));
+
+ percent_val = anchors_values[dragged_anchor];
+ percent_val = (dragged_anchor >= 2) ? ANCHOR_END - percent_val : percent_val;
+ _draw_percentage_at_position(percent_val, (line_ends[(dragged_anchor + 1) % 4] + anchors_pos[dragged_anchor]) / 2, (Margin)((dragged_anchor + 1) % 4));
+ }
+
+ Rect2 anchor_rects[4];
+ anchor_rects[0] = Rect2(anchors_pos[0] - anchor_handle->get_size(), anchor_handle->get_size());
+ anchor_rects[1] = Rect2(anchors_pos[1] - Vector2(0.0, anchor_handle->get_size().y), Point2(-anchor_handle->get_size().x, anchor_handle->get_size().y));
+ anchor_rects[2] = Rect2(anchors_pos[2], -anchor_handle->get_size());
+ anchor_rects[3] = Rect2(anchors_pos[3] - Vector2(anchor_handle->get_size().x, 0.0), Point2(anchor_handle->get_size().x, -anchor_handle->get_size().y));
+
+ for (int i = 0; i < 4; i++) {
+ anchor_handle->draw_rect(ci, anchor_rects[i]);
+ }
+ }
}
if (tool == TOOL_SELECT) {
@@ -1977,11 +2165,7 @@ void CanvasItemEditor::_viewport_draw() {
E->get().from = Vector2();
E->get().to = Vector2();
- Object *obj = ObjectDB::get_instance(E->get().bone);
- if (!obj)
- continue;
-
- Node2D *n2d = obj->cast_to<Node2D>();
+ Node2D *n2d = Object::cast_to<Node2D>(ObjectDB::get_instance(E->get().bone));
if (!n2d)
continue;
@@ -1990,7 +2174,7 @@ void CanvasItemEditor::_viewport_draw() {
CanvasItem *pi = n2d->get_parent_item();
- Node2D *pn2d = n2d->get_parent()->cast_to<Node2D>();
+ Node2D *pn2d = Object::cast_to<Node2D>(n2d->get_parent());
if (!pn2d)
continue;
@@ -2046,14 +2230,14 @@ void CanvasItemEditor::_notification(int p_what) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
continue;
- if (canvas_item->cast_to<Control>())
+ if (Object::cast_to<Control>(canvas_item))
has_control = true;
else
all_control = false;
@@ -2063,29 +2247,34 @@ void CanvasItemEditor::_notification(int p_what) {
continue;
Rect2 r = canvas_item->get_item_rect();
-
Transform2D xform = canvas_item->get_transform();
+ float anchors[4];
Vector2 pivot;
- if (canvas_item->cast_to<Control>()) {
- pivot = canvas_item->cast_to<Control>()->get_pivot_offset();
+ if (Object::cast_to<Control>(canvas_item)) {
+ pivot = Object::cast_to<Control>(canvas_item)->get_pivot_offset();
+ anchors[MARGIN_LEFT] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_LEFT);
+ anchors[MARGIN_RIGHT] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_RIGHT);
+ anchors[MARGIN_TOP] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_TOP);
+ anchors[MARGIN_BOTTOM] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_BOTTOM);
}
- if (r != se->prev_rect || xform != se->prev_xform || pivot != se->prev_pivot) {
+ if (r != se->prev_rect || xform != se->prev_xform || pivot != se->prev_pivot || anchors[MARGIN_LEFT] != se->prev_anchors[MARGIN_LEFT] || anchors[MARGIN_RIGHT] != se->prev_anchors[MARGIN_RIGHT] || anchors[MARGIN_TOP] != se->prev_anchors[MARGIN_TOP] || anchors[MARGIN_BOTTOM] != se->prev_anchors[MARGIN_BOTTOM]) {
viewport->update();
se->prev_rect = r;
se->prev_xform = xform;
se->prev_pivot = pivot;
+ se->prev_anchors[MARGIN_LEFT] = anchors[MARGIN_LEFT];
+ se->prev_anchors[MARGIN_RIGHT] = anchors[MARGIN_RIGHT];
+ se->prev_anchors[MARGIN_TOP] = anchors[MARGIN_TOP];
+ se->prev_anchors[MARGIN_BOTTOM] = anchors[MARGIN_BOTTOM];
}
}
- bool show_anchor = all_control && has_control;
- if (show_anchor != anchor_menu->is_visible()) {
- if (show_anchor)
- anchor_menu->show();
- else
- anchor_menu->hide();
- }
+ if (all_control && has_control)
+ anchor_menu->show();
+ else
+ anchor_menu->hide();
for (Map<ObjectID, BoneList>::Element *E = bone_list.front(); E; E = E->next()) {
@@ -2096,7 +2285,7 @@ void CanvasItemEditor::_notification(int p_what) {
break;
}
- Node2D *b2 = b->cast_to<Node2D>();
+ Node2D *b2 = Object::cast_to<Node2D>(b);
if (!b2) {
continue;
}
@@ -2124,6 +2313,7 @@ void CanvasItemEditor::_notification(int p_what) {
pan_button->set_icon(get_icon("ToolPan", "EditorIcons"));
pivot_button->set_icon(get_icon("EditPivot", "EditorIcons"));
select_handle = get_icon("EditorHandle", "EditorIcons");
+ anchor_handle = get_icon("EditorControlAnchor", "EditorIcons");
lock_button->set_icon(get_icon("Lock", "EditorIcons"));
unlock_button->set_icon(get_icon("Unlock", "EditorIcons"));
group_button->set_icon(get_icon("Group", "EditorIcons"));
@@ -2158,14 +2348,6 @@ void CanvasItemEditor::_notification(int p_what) {
AnimationPlayerEditor::singleton->get_key_editor()->connect("visibility_changed", this, "_keying_changed");
_keying_changed();
}
-
- if (p_what == NOTIFICATION_READY) {
-
- get_tree()->connect("node_removed", this, "_node_removed");
- }
-
- if (p_what == NOTIFICATION_DRAW) {
- }
}
void CanvasItemEditor::edit(CanvasItem *p_canvas_item) {
@@ -2183,7 +2365,7 @@ void CanvasItemEditor::_find_canvas_items_span(Node *p_node, Rect2 &r_rect, cons
if (!p_node)
return;
- CanvasItem *c = p_node->cast_to<CanvasItem>();
+ CanvasItem *c = Object::cast_to<CanvasItem>(p_node);
for (int i = p_node->get_child_count() - 1; i >= 0; i--) {
@@ -2338,18 +2520,15 @@ void CanvasItemEditor::_update_scroll(float) {
viewport->update();
}
-void CanvasItemEditor::_set_anchor(Control::AnchorType p_left, Control::AnchorType p_top, Control::AnchorType p_right, Control::AnchorType p_bottom) {
+void CanvasItemEditor::_set_anchors_preset(Control::LayoutPreset p_preset) {
List<Node *> &selection = editor_selection->get_selected_node_list();
undo_redo->create_action(TTR("Change Anchors"));
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Control *c = E->get()->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(E->get());
- undo_redo->add_do_method(c, "set_anchor", MARGIN_LEFT, p_left);
- undo_redo->add_do_method(c, "set_anchor", MARGIN_TOP, p_top);
- undo_redo->add_do_method(c, "set_anchor", MARGIN_RIGHT, p_right);
- undo_redo->add_do_method(c, "set_anchor", MARGIN_BOTTOM, p_bottom);
+ undo_redo->add_do_method(c, "set_anchors_preset", p_preset);
undo_redo->add_undo_method(c, "set_anchor", MARGIN_LEFT, c->get_anchor(MARGIN_LEFT));
undo_redo->add_undo_method(c, "set_anchor", MARGIN_TOP, c->get_anchor(MARGIN_TOP));
undo_redo->add_undo_method(c, "set_anchor", MARGIN_RIGHT, c->get_anchor(MARGIN_RIGHT));
@@ -2365,12 +2544,9 @@ void CanvasItemEditor::_set_full_rect() {
undo_redo->create_action(TTR("Change Anchors"));
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Control *c = E->get()->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(E->get());
- undo_redo->add_do_method(c, "set_anchor", MARGIN_LEFT, ANCHOR_BEGIN);
- undo_redo->add_do_method(c, "set_anchor", MARGIN_TOP, ANCHOR_BEGIN);
- undo_redo->add_do_method(c, "set_anchor", MARGIN_RIGHT, ANCHOR_END);
- undo_redo->add_do_method(c, "set_anchor", MARGIN_BOTTOM, ANCHOR_END);
+ undo_redo->add_do_method(c, "set_anchors_preset", PRESET_WIDE);
undo_redo->add_do_method(c, "set_margin", MARGIN_LEFT, 0);
undo_redo->add_do_method(c, "set_margin", MARGIN_TOP, 0);
undo_redo->add_do_method(c, "set_margin", MARGIN_RIGHT, 0);
@@ -2476,7 +2652,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
@@ -2494,7 +2670,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
@@ -2514,7 +2690,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
@@ -2532,7 +2708,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
@@ -2546,98 +2722,53 @@ void CanvasItemEditor::_popup_callback(int p_op) {
viewport->update();
} break;
-
- case ALIGN_VERTICAL: {
-#if 0
- if ( ref_item && canvas_items.size() > 1 ) {
- Vector2 ref_pos = ref_item->get_global_transform().elements[2];
- Rect2 ref_r = ref_item->get_item_rect();
- for ( CanvasItemMap::Element *E = canvas_items.front(); E; E = E->next() ) {
- CanvasItem *it_curr = E->key();
- if ( it_curr == ref_item ) continue;
- Vector2 v = it_curr->get_global_transform().elements[2];
- Rect2 r = it_curr->get_item_rect();
- r.pos.x = ( ref_pos.x + ref_r.size.x / 2 ) - ( v.x + r.size.x / 2 );
- it_curr->edit_set_rect( r );
- }
- viewport->update();
- }
-#endif
- } break;
-
- case ALIGN_HORIZONTAL: {
-#if 0
- if ( ref_item && canvas_items.size() > 1 ) {
- Vector2 ref_pos = ref_item->get_global_transform().elements[2];
- Rect2 ref_r = ref_item->get_item_rect();
- for ( CanvasItemMap::Element *E = canvas_items.front(); E; E = E->next() ) {
- CanvasItem *it_curr = E->key();
- if ( it_curr == ref_item ) continue;
- Vector2 v = it_curr->get_global_transform().elements[2];
- Rect2 r = it_curr->get_item_rect();
- r.pos.y = ( ref_pos.y + ref_r.size.y / 2 ) - ( v.y + r.size.y / 2 );
- it_curr->edit_set_rect( r );
- }
- viewport->update();
- }
-#endif
- } break;
-
- case SPACE_HORIZONTAL: {
- //space_selected_items< proj_vector2_x, compare_items_x >();
- } break;
-
- case SPACE_VERTICAL: {
- //space_selected_items< proj_vector2_y, compare_items_y >();
- } break;
case ANCHOR_ALIGN_TOP_LEFT: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_BEGIN, ANCHOR_BEGIN, ANCHOR_BEGIN);
+ _set_anchors_preset(PRESET_TOP_LEFT);
} break;
case ANCHOR_ALIGN_TOP_RIGHT: {
- _set_anchor(ANCHOR_END, ANCHOR_BEGIN, ANCHOR_END, ANCHOR_BEGIN);
+ _set_anchors_preset(PRESET_TOP_RIGHT);
} break;
case ANCHOR_ALIGN_BOTTOM_LEFT: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_END, ANCHOR_BEGIN, ANCHOR_END);
+ _set_anchors_preset(PRESET_BOTTOM_LEFT);
} break;
case ANCHOR_ALIGN_BOTTOM_RIGHT: {
- _set_anchor(ANCHOR_END, ANCHOR_END, ANCHOR_END, ANCHOR_END);
+ _set_anchors_preset(PRESET_BOTTOM_RIGHT);
} break;
case ANCHOR_ALIGN_CENTER_LEFT: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_CENTER, ANCHOR_BEGIN, ANCHOR_CENTER);
+ _set_anchors_preset(PRESET_CENTER_LEFT);
} break;
case ANCHOR_ALIGN_CENTER_RIGHT: {
-
- _set_anchor(ANCHOR_END, ANCHOR_CENTER, ANCHOR_END, ANCHOR_CENTER);
+ _set_anchors_preset(PRESET_CENTER_RIGHT);
} break;
case ANCHOR_ALIGN_CENTER_TOP: {
- _set_anchor(ANCHOR_CENTER, ANCHOR_BEGIN, ANCHOR_CENTER, ANCHOR_BEGIN);
+ _set_anchors_preset(PRESET_CENTER_TOP);
} break;
case ANCHOR_ALIGN_CENTER_BOTTOM: {
- _set_anchor(ANCHOR_CENTER, ANCHOR_END, ANCHOR_CENTER, ANCHOR_END);
+ _set_anchors_preset(PRESET_CENTER_BOTTOM);
} break;
case ANCHOR_ALIGN_CENTER: {
- _set_anchor(ANCHOR_CENTER, ANCHOR_CENTER, ANCHOR_CENTER, ANCHOR_CENTER);
+ _set_anchors_preset(PRESET_CENTER);
} break;
case ANCHOR_ALIGN_TOP_WIDE: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_BEGIN, ANCHOR_END, ANCHOR_BEGIN);
+ _set_anchors_preset(PRESET_TOP_WIDE);
} break;
case ANCHOR_ALIGN_LEFT_WIDE: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_BEGIN, ANCHOR_BEGIN, ANCHOR_END);
+ _set_anchors_preset(PRESET_LEFT_WIDE);
} break;
case ANCHOR_ALIGN_RIGHT_WIDE: {
- _set_anchor(ANCHOR_END, ANCHOR_BEGIN, ANCHOR_END, ANCHOR_END);
+ _set_anchors_preset(PRESET_RIGHT_WIDE);
} break;
case ANCHOR_ALIGN_BOTTOM_WIDE: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_END, ANCHOR_END, ANCHOR_END);
+ _set_anchors_preset(PRESET_BOTTOM_WIDE);
} break;
case ANCHOR_ALIGN_VCENTER_WIDE: {
- _set_anchor(ANCHOR_CENTER, ANCHOR_BEGIN, ANCHOR_CENTER, ANCHOR_END);
+ _set_anchors_preset(PRESET_VCENTER_WIDE);
} break;
case ANCHOR_ALIGN_HCENTER_WIDE: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_CENTER, ANCHOR_END, ANCHOR_CENTER);
+ _set_anchors_preset(PRESET_HCENTER_WIDE);
} break;
case ANCHOR_ALIGN_WIDE: {
- _set_anchor(ANCHOR_BEGIN, ANCHOR_BEGIN, ANCHOR_END, ANCHOR_END);
+ _set_anchors_preset(PRESET_WIDE);
} break;
case ANCHOR_ALIGN_WIDE_FIT: {
_set_full_rect();
@@ -2652,15 +2783,15 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->key());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
continue;
- if (canvas_item->cast_to<Node2D>()) {
- Node2D *n2d = canvas_item->cast_to<Node2D>();
+ if (Object::cast_to<Node2D>(canvas_item)) {
+ Node2D *n2d = Object::cast_to<Node2D>(canvas_item);
if (key_pos)
AnimationPlayerEditor::singleton->get_key_editor()->insert_node_value_key(n2d, "position", n2d->get_position(), existing);
@@ -2673,7 +2804,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
//look for an IK chain
List<Node2D *> ik_chain;
- Node2D *n = n2d->get_parent_item()->cast_to<Node2D>();
+ Node2D *n = Object::cast_to<Node2D>(n2d->get_parent_item());
bool has_chain = false;
while (n) {
@@ -2686,7 +2817,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
if (!n->get_parent_item())
break;
- n = n->get_parent_item()->cast_to<Node2D>();
+ n = Object::cast_to<Node2D>(n->get_parent_item());
}
if (has_chain && ik_chain.size()) {
@@ -2703,9 +2834,9 @@ void CanvasItemEditor::_popup_callback(int p_op) {
}
}
- } else if (canvas_item->cast_to<Control>()) {
+ } else if (Object::cast_to<Control>(canvas_item)) {
- Control *ctrl = canvas_item->cast_to<Control>();
+ Control *ctrl = Object::cast_to<Control>(canvas_item);
if (key_pos)
AnimationPlayerEditor::singleton->get_key_editor()->insert_node_value_key(ctrl, "rect_position", ctrl->get_position(), existing);
@@ -2762,16 +2893,16 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->key());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
continue;
- if (canvas_item->cast_to<Node2D>()) {
+ if (Object::cast_to<Node2D>(canvas_item)) {
- Node2D *n2d = canvas_item->cast_to<Node2D>();
+ Node2D *n2d = Object::cast_to<Node2D>(canvas_item);
PoseClipboard pc;
pc.pos = n2d->get_position();
pc.rot = n2d->get_rotation();
@@ -2790,10 +2921,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->create_action(TTR("Paste Pose"));
for (List<PoseClipboard>::Element *E = pose_clipboard.front(); E; E = E->next()) {
- Object *o = ObjectDB::get_instance(E->get().id);
- if (!o)
- continue;
- Node2D *n2d = o->cast_to<Node2D>();
+ Node2D *n2d = Object::cast_to<Node2D>(ObjectDB::get_instance(E->get().id));
if (!n2d)
continue;
undo_redo->add_do_method(n2d, "set_position", E->get().pos);
@@ -2812,15 +2940,15 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->key());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
continue;
- if (canvas_item->cast_to<Node2D>()) {
- Node2D *n2d = canvas_item->cast_to<Node2D>();
+ if (Object::cast_to<Node2D>(canvas_item)) {
+ Node2D *n2d = Object::cast_to<Node2D>(canvas_item);
if (key_pos)
n2d->set_position(Vector2());
@@ -2828,9 +2956,9 @@ void CanvasItemEditor::_popup_callback(int p_op) {
n2d->set_rotation(0);
if (key_scale)
n2d->set_scale(Vector2(1, 1));
- } else if (canvas_item->cast_to<Control>()) {
+ } else if (Object::cast_to<Control>(canvas_item)) {
- Control *ctrl = canvas_item->cast_to<Control>();
+ Control *ctrl = Object::cast_to<Control>(canvas_item);
if (key_pos)
ctrl->set_position(Point2());
@@ -2854,7 +2982,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- Node2D *n2d = E->key()->cast_to<Node2D>();
+ Node2D *n2d = Object::cast_to<Node2D>(E->key());
if (!n2d)
continue;
if (!n2d->is_visible_in_tree())
@@ -2875,7 +3003,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- Node2D *n2d = E->key()->cast_to<Node2D>();
+ Node2D *n2d = Object::cast_to<Node2D>(E->key());
if (!n2d)
continue;
if (!n2d->is_visible_in_tree())
@@ -2894,7 +3022,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
if (!canvas_item || !canvas_item->is_visible_in_tree())
continue;
@@ -2915,7 +3043,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *n2d = E->key()->cast_to<CanvasItem>();
+ CanvasItem *n2d = Object::cast_to<CanvasItem>(E->key());
if (!n2d)
continue;
if (!n2d->is_visible_in_tree())
@@ -2930,34 +3058,6 @@ void CanvasItemEditor::_popup_callback(int p_op) {
} break;
}
}
-#if 0
-template< class P, class C > void CanvasItemEditor::space_selected_items() {
- P p;
- if ( canvas_items.size() > 2 ) {
- Vector< CanvasItem * > items;
- for ( CanvasItemMap::Element *E = canvas_items.front(); E; E = E->next() ) {
- CanvasItem *it_curr = E->key();
- items.push_back( it_curr );
- }
- items.sort_custom< C >();
-
- float width_s = p.get( items[0]->get_item_rect().size );
- float width_e = p.get( items[ items.size() - 1 ]->get_item_rect().size );
- float start_x = p.get( items[0]->get_global_transform().elements[2] ) + ( width_s / 2 );
- float end_x = p.get( items[ items.size() - 1 ]->get_global_transform().elements[2] ) + ( width_e / 2 );
- float sp = ( end_x - start_x ) / ( items.size() - 1 );
-
- for ( int i = 0; i < items.size(); i++ ) {
- CanvasItem *it_curr = items[i];
- Vector2 v = it_curr->get_global_transform().elements[2];
- Rect2 r = it_curr->get_item_rect();
- p.set( r.pos, ( start_x + sp * i ) - ( p.get( v ) + p.get( r.size ) / 2 ) );
- it_curr->edit_set_rect( r );
- }
- viewport->update();
- }
-}
-#endif
void CanvasItemEditor::_focus_selection(int p_op) {
Vector2 center(0.f, 0.f);
@@ -2966,7 +3066,7 @@ void CanvasItemEditor::_focus_selection(int p_op) {
Map<Node *, Object *> &selection = editor_selection->get_selection();
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->key()->cast_to<CanvasItem>();
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->key());
if (!canvas_item) continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
continue;
@@ -3014,10 +3114,8 @@ void CanvasItemEditor::_focus_selection(int p_op) {
void CanvasItemEditor::_bind_methods() {
- ClassDB::bind_method("_node_removed", &CanvasItemEditor::_node_removed);
ClassDB::bind_method("_update_scroll", &CanvasItemEditor::_update_scroll);
ClassDB::bind_method("_popup_callback", &CanvasItemEditor::_popup_callback);
- ClassDB::bind_method("_visibility_changed", &CanvasItemEditor::_visibility_changed);
ClassDB::bind_method("_dialog_value_changed", &CanvasItemEditor::_dialog_value_changed);
ClassDB::bind_method("_get_editor_data", &CanvasItemEditor::_get_editor_data);
ClassDB::bind_method("_tool_select", &CanvasItemEditor::_tool_select);
@@ -3033,74 +3131,6 @@ void CanvasItemEditor::_bind_methods() {
ADD_SIGNAL(MethodInfo("item_group_status_changed"));
}
-#if 0
-void CanvasItemEditor::end_drag() {
- print_line( "end drag" );
-
- if (undo_redo) {
-
- undo_redo->create_action("Edit CanvasItem");
- for(CanvasItemMap::Element *E=canvas_items.front();E;E=E->next()) {
- CanvasItem *canvas_item = E->key();
- Variant state=canvas_item->edit_get_state();
- undo_redo->add_do_method(canvas_item,"edit_set_state",state);
- undo_redo->add_undo_method(canvas_item,"edit_set_state",E->get().undo_state);
- }
- undo_redo->commit_action();
- }
-
- drag=DRAG_NONE;
- viewport->update();
-}
-
-void CanvasItemEditor::box_selection_start( Point2 &click ) {
- print_line( "box selection start" );
-
- drag_from=transform.affine_inverse().xform(click);
-
- box_selecting=true;
- box_selecting_to=drag_from;
- viewport->update();
-}
-
-bool CanvasItemEditor::box_selection_end() {
- print_line( "box selection end" );
-
- Node* scene = get_scene()->get_root_node()->cast_to<EditorNode>()->get_edited_scene();
- if (scene) {
-
- List<CanvasItem*> selitems;
-
- Point2 bsfrom = transform.xform(drag_from);
- Point2 bsto= transform.xform(box_selecting_to);
- if (bsfrom.x>bsto.x)
- SWAP(bsfrom.x,bsto.x);
- if (bsfrom.y>bsto.y)
- SWAP(bsfrom.y,bsto.y);
-
- if ( bsfrom.distance_to( bsto ) < 3 ) {
- print_line( "box selection too small" );
- box_selecting=false;
- viewport->update();
- return false;
- }
-
- _find_canvas_items_at_rect(Rect2(bsfrom,bsto-bsfrom),scene,transform,&selitems);
-
- for(List<CanvasItem*>::Element *E=selitems.front();E;E=E->next()) {
-
- _append_canvas_item(E->get());
- }
-
- }
-
- box_selecting=false;
- viewport->update();
-
- return true;
-}
-#endif
-
void CanvasItemEditor::add_control_to_menu_panel(Control *p_control) {
hb->add_child(p_control);
@@ -3271,12 +3301,6 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
skeleton_menu->set_hide_on_checkable_item_selection(false);
skeleton_menu->connect("id_pressed", this, "_popup_callback");
- /*
- p->add_item("Align Horizontal",ALIGN_HORIZONTAL);
- p->add_item("Align Vertical",ALIGN_VERTICAL);
- p->add_item("Space Horizontal",SPACE_HORIZONTAL);
- p->add_item("Space Vertical",SPACE_VERTICAL);*/
-
view_menu = memnew(MenuButton);
view_menu->set_text(TTR("View"));
hb->add_child(view_menu);
@@ -3372,7 +3396,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
dialog_val = memnew(SpinBox);
dialog_val->set_anchor(MARGIN_RIGHT, ANCHOR_END);
dialog_val->set_begin(Point2(15, 25));
- dialog_val->set_end(Point2(10, 25));
+ dialog_val->set_end(Point2(-10, 25));
value_dialog->add_child(dialog_val);
dialog_val->connect("value_changed", this, "_dialog_value_changed");
select_sb = Ref<StyleBoxTexture>(memnew(StyleBoxTexture));
@@ -3415,7 +3439,7 @@ CanvasItemEditor *CanvasItemEditor::singleton = NULL;
void CanvasItemEditorPlugin::edit(Object *p_object) {
canvas_item_editor->set_undo_redo(&get_undo_redo());
- canvas_item_editor->edit(p_object->cast_to<CanvasItem>());
+ canvas_item_editor->edit(Object::cast_to<CanvasItem>(p_object));
}
bool CanvasItemEditorPlugin::handles(Object *p_object) const {
@@ -3468,7 +3492,7 @@ void CanvasItemEditorViewport::_on_mouse_exit() {
}
void CanvasItemEditorViewport::_on_select_type(Object *selected) {
- CheckBox *check = selected->cast_to<CheckBox>();
+ CheckBox *check = Object::cast_to<CheckBox>(selected);
String type = check->get_text();
selector_label->set_text(vformat(TTR("Add %s"), type));
label->set_text(vformat(TTR("Adding %s..."), type));
@@ -3478,7 +3502,7 @@ void CanvasItemEditorViewport::_on_change_type() {
if (!button_group->get_pressed_button())
return;
- CheckBox *check = button_group->get_pressed_button()->cast_to<CheckBox>();
+ CheckBox *check = Object::cast_to<CheckBox>(button_group->get_pressed_button());
default_type = check->get_text();
_perform_drop_data();
selector->hide();
@@ -3490,8 +3514,8 @@ void CanvasItemEditorViewport::_create_preview(const Vector<String> &files) cons
for (int i = 0; i < files.size(); i++) {
String path = files[i];
RES res = ResourceLoader::load(path);
- Ref<Texture> texture = Ref<Texture>(res->cast_to<Texture>());
- Ref<PackedScene> scene = Ref<PackedScene>(res->cast_to<PackedScene>());
+ Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res));
+ Ref<PackedScene> scene = Ref<PackedScene>(Object::cast_to<PackedScene>(*res));
if (texture != NULL || scene != NULL) {
if (texture != NULL) {
Sprite *sprite = memnew(Sprite);
@@ -3542,7 +3566,7 @@ bool CanvasItemEditorViewport::_cyclical_dependency_exists(const String &p_targe
void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point) {
child->set_name(path.get_file().get_basename());
- Ref<Texture> texture = Ref<Texture>(ResourceCache::get(path)->cast_to<Texture>());
+ Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(ResourceCache::get(path)));
Size2 texture_size = texture->get_size();
editor_data->get_undo_redo().add_do_method(parent, "add_child", child);
@@ -3631,11 +3655,11 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
editor_data->get_undo_redo().add_undo_method(sed, "live_debug_remove_node", NodePath(String(editor->get_edited_scene()->get_path_to(parent)) + "/" + new_name));
Point2 pos;
- Node2D *parent_node2d = parent->cast_to<Node2D>();
+ Node2D *parent_node2d = Object::cast_to<Node2D>(parent);
if (parent_node2d) {
pos = parent_node2d->get_global_position();
} else {
- Control *parent_control = parent->cast_to<Control>();
+ Control *parent_control = Object::cast_to<Control>(parent);
if (parent_control) {
pos = parent_control->get_global_position();
}
@@ -3643,7 +3667,7 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
Transform2D trans = canvas->get_canvas_transform();
Vector2 target_pos = (p_point - trans.get_origin()) / trans.get_scale().x - pos;
// in relative snapping it may be useful for the user to take the original node position into account
- Vector2 start_pos = instanced_scene->cast_to<Node2D>() ? instanced_scene->cast_to<Node2D>()->get_position() : target_pos;
+ Vector2 start_pos = Object::cast_to<Node2D>(instanced_scene) ? Object::cast_to<Node2D>(instanced_scene)->get_position() : target_pos;
target_pos = canvas->snap_point(target_pos, start_pos);
editor_data->get_undo_redo().add_do_method(instanced_scene, "set_position", target_pos);
@@ -3663,8 +3687,8 @@ void CanvasItemEditorViewport::_perform_drop_data() {
if (res.is_null()) {
continue;
}
- Ref<Texture> texture = Ref<Texture>(res->cast_to<Texture>());
- Ref<PackedScene> scene = Ref<PackedScene>(res->cast_to<PackedScene>());
+ Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res));
+ Ref<PackedScene> scene = Ref<PackedScene>(Object::cast_to<PackedScene>(*res));
if (texture != NULL) {
Node *child;
if (default_type == "Light2D")
@@ -3780,7 +3804,7 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p
button_group->get_buttons(&btn_list);
for (int i = 0; i < btn_list.size(); i++) {
- CheckBox *check = btn_list[i]->cast_to<CheckBox>();
+ CheckBox *check = Object::cast_to<CheckBox>(btn_list[i]);
check->set_pressed(check->get_text() == default_type);
}
selector_label->set_text(vformat(TTR("Add %s"), default_type));
@@ -3878,3 +3902,7 @@ CanvasItemEditorViewport::CanvasItemEditorViewport(EditorNode *p_node, CanvasIte
label_desc->hide();
editor->get_gui_base()->add_child(label_desc);
}
+
+CanvasItemEditorViewport::~CanvasItemEditorViewport() {
+ memdelete(preview);
+}
diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h
index 4383be251c..8f67d641f5 100644
--- a/editor/plugins/canvas_item_editor_plugin.h
+++ b/editor/plugins/canvas_item_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -57,6 +57,7 @@ public:
float prev_rot;
Rect2 prev_rect;
Vector2 prev_pivot;
+ float prev_anchors[4];
CanvasItemEditorSelectedItem() { prev_rot = 0; }
};
@@ -93,8 +94,6 @@ class CanvasItemEditor : public VBoxContainer {
UNLOCK_SELECTED,
GROUP_SELECTED,
UNGROUP_SELECTED,
- ALIGN_HORIZONTAL,
- ALIGN_VERTICAL,
ANCHOR_ALIGN_TOP_LEFT,
ANCHOR_ALIGN_TOP_RIGHT,
ANCHOR_ALIGN_BOTTOM_LEFT,
@@ -112,9 +111,6 @@ class CanvasItemEditor : public VBoxContainer {
ANCHOR_ALIGN_HCENTER_WIDE,
ANCHOR_ALIGN_WIDE,
ANCHOR_ALIGN_WIDE_FIT,
-
- SPACE_HORIZONTAL,
- SPACE_VERTICAL,
ANIM_INSERT_KEY,
ANIM_INSERT_KEY_EXISTING,
ANIM_INSERT_POS,
@@ -143,11 +139,15 @@ class CanvasItemEditor : public VBoxContainer {
DRAG_BOTTOM_RIGHT,
DRAG_BOTTOM,
DRAG_BOTTOM_LEFT,
+ DRAG_ANCHOR_TOP_LEFT,
+ DRAG_ANCHOR_TOP_RIGHT,
+ DRAG_ANCHOR_BOTTOM_RIGHT,
+ DRAG_ANCHOR_BOTTOM_LEFT,
+ DRAG_ANCHOR_ALL,
DRAG_ALL,
DRAG_ROTATE,
DRAG_PIVOT,
DRAG_NODE_2D,
-
};
enum KeyMoveMODE {
@@ -284,22 +284,10 @@ class CanvasItemEditor : public VBoxContainer {
bool updating_value_dialog;
Point2 display_rotate_from;
Point2 display_rotate_to;
-#if 0
- struct EditInfo {
-
- Variant undo_state;
-
- Matrix32 prev_xform;
- float prev_rot;
- Rect2 prev_rect;
- EditInfo() { prev_rot=0; }
- };
- typedef Map<CanvasItem*,EditInfo> CanvasItemMap;
- CanvasItemMap canvas_items;
-#endif
Ref<StyleBoxTexture> select_sb;
Ref<Texture> select_handle;
+ Ref<Texture> anchor_handle;
int handle_len;
bool _is_part_of_subscene(CanvasItem *p_item);
@@ -321,12 +309,16 @@ class CanvasItemEditor : public VBoxContainer {
void _add_canvas_item(CanvasItem *p_canvas_item);
void _remove_canvas_item(CanvasItem *p_canvas_item);
void _clear_canvas_items();
- void _visibility_changed(ObjectID p_canvas_item);
void _key_move(const Vector2 &p_dir, bool p_snap, KeyMoveMODE p_move_mode);
void _list_select(const Ref<InputEventMouseButton> &b);
- DragType _find_drag_type(const Point2 &p_click, Vector2 &r_point);
+ DragType _get_resize_handle_drag_type(const Point2 &p_click, Vector2 &r_point);
void _prepare_drag(const Point2 &p_click_pos);
+ DragType _get_anchor_handle_drag_type(const Point2 &p_click, Vector2 &r_point);
+
+ float _anchor_snap(float anchor, bool *snapped = NULL, float p_opposite_anchor = -1);
+ Vector2 _anchor_to_position(Control *p_control, Vector2 anchor);
+ Vector2 _position_to_anchor(Control *p_control, Vector2 position);
void _popup_callback(int p_op);
bool updating_scroll;
@@ -355,12 +347,14 @@ class CanvasItemEditor : public VBoxContainer {
void _unhandled_key_input(const Ref<InputEvent> &p_ev);
+ void _draw_percentage_at_position(float p_value, Point2 p_position, Margin p_side);
+
void _viewport_gui_input(const Ref<InputEvent> &p_event);
void _viewport_draw();
void _focus_selection(int p_op);
- void _set_anchor(Control::AnchorType p_left, Control::AnchorType p_top, Control::AnchorType p_right, Control::AnchorType p_bottom);
+ void _set_anchors_preset(Control::LayoutPreset p_preset);
void _set_full_rect();
HSplitContainer *palette_split;
@@ -371,7 +365,6 @@ class CanvasItemEditor : public VBoxContainer {
protected:
void _notification(int p_what);
- void _node_removed(Node *p_node);
static void _bind_methods();
void end_drag();
void box_selection_start(Point2 &click);
@@ -423,7 +416,6 @@ public:
Control *get_viewport_control() { return viewport; }
- bool get_remove_list(List<Node *> *p_list);
void set_undo_redo(UndoRedo *p_undo_redo) { undo_redo = p_undo_redo; }
void edit(CanvasItem *p_canvas_item);
@@ -445,7 +437,6 @@ public:
virtual void edit(Object *p_object);
virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
- virtual bool get_remove_list(List<Node *> *p_list) { return canvas_item_editor->get_remove_list(p_list); }
virtual Dictionary get_state() const;
virtual void set_state(const Dictionary &p_state);
@@ -499,6 +490,7 @@ public:
virtual void drop_data(const Point2 &p_point, const Variant &p_data);
CanvasItemEditorViewport(EditorNode *p_node, CanvasItemEditor *p_canvas);
+ ~CanvasItemEditorViewport();
};
#endif
diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.cpp b/editor/plugins/collision_polygon_2d_editor_plugin.cpp
index 346c00df64..38f95d8278 100644
--- a/editor/plugins/collision_polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_polygon_2d_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -343,7 +343,11 @@ void CollisionPolygon2DEditor::edit(Node *p_collision_polygon) {
if (p_collision_polygon) {
- node = p_collision_polygon->cast_to<CollisionPolygon2D>();
+ node = Object::cast_to<CollisionPolygon2D>(p_collision_polygon);
+ //Enable the pencil tool if the polygon is empty
+ if (node->get_polygon().size() == 0) {
+ _menu_option(MODE_CREATE);
+ }
if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
wip.clear();
@@ -384,18 +388,7 @@ CollisionPolygon2DEditor::CollisionPolygon2DEditor(EditorNode *p_editor) {
add_child(button_edit);
button_edit->connect("pressed", this, "_menu_option", varray(MODE_EDIT));
button_edit->set_toggle_mode(true);
- button_edit->set_tooltip("Edit existing polygon:\nLMB: Move Point.\nCtrl+LMB: Split Segment.\nRMB: Erase Point.");
-
-//add_constant_override("separation",0);
-
-#if 0
- options = memnew( MenuButton );
- add_child(options);
- options->set_area_as_parent_rect();
- options->set_text("Polygon");
- //options->get_popup()->add_item("Parse BBCode",PARSE_BBCODE);
- options->get_popup()->connect("id_pressed", this,"_menu_option");
-#endif
+ button_edit->set_tooltip(TTR("Edit existing polygon:\nLMB: Move Point.\nCtrl+LMB: Split Segment.\nRMB: Erase Point."));
mode = MODE_EDIT;
wip_active = false;
@@ -403,7 +396,7 @@ CollisionPolygon2DEditor::CollisionPolygon2DEditor(EditorNode *p_editor) {
void CollisionPolygon2DEditorPlugin::edit(Object *p_object) {
- collision_polygon_editor->edit(p_object->cast_to<Node>());
+ collision_polygon_editor->edit(Object::cast_to<Node>(p_object));
}
bool CollisionPolygon2DEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.h b/editor/plugins/collision_polygon_2d_editor_plugin.h
index 382c0d6c37..bc3c5a1659 100644
--- a/editor/plugins/collision_polygon_2d_editor_plugin.h
+++ b/editor/plugins/collision_polygon_2d_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -97,8 +97,8 @@ public:
virtual String get_name() const { return "CollisionPolygon2D"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
CollisionPolygon2DEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/collision_polygon_editor_plugin.cpp b/editor/plugins/collision_polygon_editor_plugin.cpp
index 5b364ed2c1..24c4813771 100644
--- a/editor/plugins/collision_polygon_editor_plugin.cpp
+++ b/editor/plugins/collision_polygon_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -48,6 +48,9 @@ void CollisionPolygonEditor::_notification(int p_what) {
} break;
case NOTIFICATION_PROCESS: {
+ if (!node) {
+ return;
+ }
if (node->get_depth() != prev_depth) {
_polygon_draw();
@@ -464,7 +467,11 @@ void CollisionPolygonEditor::edit(Node *p_collision_polygon) {
if (p_collision_polygon) {
- node = p_collision_polygon->cast_to<CollisionPolygon>();
+ node = Object::cast_to<CollisionPolygon>(p_collision_polygon);
+ //Enable the pencil tool if the polygon is empty
+ if (node->get_polygon().size() == 0) {
+ _menu_option(MODE_CREATE);
+ }
wip.clear();
wip_active = false;
edited_point = -1;
@@ -507,17 +514,6 @@ CollisionPolygonEditor::CollisionPolygonEditor(EditorNode *p_editor) {
button_edit->connect("pressed", this, "_menu_option", varray(MODE_EDIT));
button_edit->set_toggle_mode(true);
-//add_constant_override("separation",0);
-
-#if 0
- options = memnew( MenuButton );
- add_child(options);
- options->set_area_as_parent_rect();
- options->set_text("Polygon");
- //options->get_popup()->add_item("Parse BBCode",PARSE_BBCODE);
- options->get_popup()->connect("id_pressed", this,"_menu_option");
-#endif
-
mode = MODE_EDIT;
wip_active = false;
imgeom = memnew(ImmediateGeometry);
@@ -555,7 +551,7 @@ CollisionPolygonEditor::~CollisionPolygonEditor() {
void CollisionPolygonEditorPlugin::edit(Object *p_object) {
- collision_polygon_editor->edit(p_object->cast_to<Node>());
+ collision_polygon_editor->edit(Object::cast_to<Node>(p_object));
}
bool CollisionPolygonEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/collision_polygon_editor_plugin.h b/editor/plugins/collision_polygon_editor_plugin.h
index 3a8428fc62..0150d8a9d7 100644
--- a/editor/plugins/collision_polygon_editor_plugin.h
+++ b/editor/plugins/collision_polygon_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -109,8 +109,8 @@ public:
virtual String get_name() const { return "CollisionPolygon"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
CollisionPolygonEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp
index 9a6ee8153e..3e6165e552 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -393,21 +393,21 @@ void CollisionShape2DEditor::_get_current_shape_type() {
return;
}
- if (s->cast_to<CapsuleShape2D>()) {
+ if (Object::cast_to<CapsuleShape2D>(*s)) {
shape_type = CAPSULE_SHAPE;
- } else if (s->cast_to<CircleShape2D>()) {
+ } else if (Object::cast_to<CircleShape2D>(*s)) {
shape_type = CIRCLE_SHAPE;
- } else if (s->cast_to<ConcavePolygonShape2D>()) {
+ } else if (Object::cast_to<ConcavePolygonShape2D>(*s)) {
shape_type = CONCAVE_POLYGON_SHAPE;
- } else if (s->cast_to<ConvexPolygonShape2D>()) {
+ } else if (Object::cast_to<ConvexPolygonShape2D>(*s)) {
shape_type = CONVEX_POLYGON_SHAPE;
- } else if (s->cast_to<LineShape2D>()) {
+ } else if (Object::cast_to<LineShape2D>(*s)) {
shape_type = LINE_SHAPE;
- } else if (s->cast_to<RayShape2D>()) {
+ } else if (Object::cast_to<RayShape2D>(*s)) {
shape_type = RAY_SHAPE;
- } else if (s->cast_to<RectangleShape2D>()) {
+ } else if (Object::cast_to<RectangleShape2D>(*s)) {
shape_type = RECTANGLE_SHAPE;
- } else if (s->cast_to<SegmentShape2D>()) {
+ } else if (Object::cast_to<SegmentShape2D>(*s)) {
shape_type = SEGMENT_SHAPE;
} else {
shape_type = -1;
@@ -530,7 +530,7 @@ void CollisionShape2DEditor::edit(Node *p_node) {
}
if (p_node) {
- node = p_node->cast_to<CollisionShape2D>();
+ node = Object::cast_to<CollisionShape2D>(p_node);
if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
@@ -570,7 +570,7 @@ CollisionShape2DEditor::CollisionShape2DEditor(EditorNode *p_editor) {
void CollisionShape2DEditorPlugin::edit(Object *p_obj) {
- collision_shape_2d_editor->edit(p_obj->cast_to<Node>());
+ collision_shape_2d_editor->edit(Object::cast_to<Node>(p_obj));
}
bool CollisionShape2DEditorPlugin::handles(Object *p_obj) const {
@@ -585,12 +585,12 @@ void CollisionShape2DEditorPlugin::make_visible(bool visible) {
}
}
-CollisionShape2DEditorPlugin::CollisionShape2DEditorPlugin(EditorNode *p_node) {
+CollisionShape2DEditorPlugin::CollisionShape2DEditorPlugin(EditorNode *p_editor) {
- editor = p_node;
+ editor = p_editor;
- collision_shape_2d_editor = memnew(CollisionShape2DEditor(p_node));
- p_node->get_gui_base()->add_child(collision_shape_2d_editor);
+ collision_shape_2d_editor = memnew(CollisionShape2DEditor(p_editor));
+ p_editor->get_gui_base()->add_child(collision_shape_2d_editor);
}
CollisionShape2DEditorPlugin::~CollisionShape2DEditorPlugin() {
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h
index 09aefc65c0..ffa91952e0 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.h
+++ b/editor/plugins/collision_shape_2d_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/plugins/cube_grid_theme_editor_plugin.cpp b/editor/plugins/cube_grid_theme_editor_plugin.cpp
index b26b2aec4f..08b38c2ca2 100644
--- a/editor/plugins/cube_grid_theme_editor_plugin.cpp
+++ b/editor/plugins/cube_grid_theme_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -72,10 +72,10 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
Node *child = p_scene->get_child(i);
- if (!child->cast_to<MeshInstance>()) {
+ if (!Object::cast_to<MeshInstance>(child)) {
if (child->get_child_count() > 0) {
child = child->get_child(0);
- if (!child->cast_to<MeshInstance>()) {
+ if (!Object::cast_to<MeshInstance>(child)) {
continue;
}
@@ -83,7 +83,7 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
continue;
}
- MeshInstance *mi = child->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(child);
Ref<Mesh> mesh = mi->get_mesh();
if (mesh.is_null())
continue;
@@ -98,15 +98,15 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
p_library->set_item_mesh(id, mesh);
- Ref<Shape> collision;
+ Vector<MeshLibrary::ShapeData> collisions;
for (int j = 0; j < mi->get_child_count(); j++) {
Node *child2 = mi->get_child(j);
- if (!child2->cast_to<StaticBody>())
+ if (!Object::cast_to<StaticBody>(child2))
continue;
- StaticBody *sb = child2->cast_to<StaticBody>();
+ StaticBody *sb = Object::cast_to<StaticBody>(child2);
List<uint32_t> shapes;
sb->get_shape_owners(&shapes);
@@ -119,30 +119,25 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
for (int k = 0; k < sb->shape_owner_get_shape_count(E->get()); k++) {
- collision = sb->shape_owner_get_shape(E->get(), k);
+ Ref<Shape> collision = sb->shape_owner_get_shape(E->get(), k);
if (collision.is_valid())
- break;
- /* TileSet::ShapeData shape_data;
- shape_data.shape = shape;
- shape_data.shape_transform = shape_transform;
- shape_data.one_way_collision = one_way;
- collisions.push_back(shape_data);*/
+ continue;
+ MeshLibrary::ShapeData shape_data;
+ shape_data.shape = collision;
+ shape_data.local_transform = sb->shape_owner_get_transform(E->get());
+ collisions.push_back(shape_data);
}
- if (collision.is_valid())
- break;
}
}
- if (!collision.is_null()) {
+ p_library->set_item_shapes(id, collisions);
- p_library->set_item_shape(id, collision);
- }
Ref<NavigationMesh> navmesh;
for (int j = 0; j < mi->get_child_count(); j++) {
Node *child2 = mi->get_child(j);
- if (!child2->cast_to<NavigationMeshInstance>())
+ if (!Object::cast_to<NavigationMeshInstance>(child2))
continue;
- NavigationMeshInstance *sb = child2->cast_to<NavigationMeshInstance>();
+ NavigationMeshInstance *sb = Object::cast_to<NavigationMeshInstance>(child2);
navmesh = sb->get_navigation_mesh();
if (!navmesh.is_null())
break;
@@ -155,91 +150,17 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
//generate previews!
if (1) {
- Vector<int> ids = p_library->get_item_list();
- RID vp = VS::get_singleton()->viewport_create();
- int size = EditorSettings::get_singleton()->get("editors/grid_map/preview_size");
-
- RID scenario = VS::get_singleton()->scenario_create();
-
- RID viewport = VS::get_singleton()->viewport_create();
- VS::get_singleton()->viewport_set_update_mode(viewport, VS::VIEWPORT_UPDATE_ALWAYS);
- VS::get_singleton()->viewport_set_vflip(viewport, true);
- VS::get_singleton()->viewport_set_scenario(viewport, scenario);
- VS::get_singleton()->viewport_set_size(viewport, size, size);
- VS::get_singleton()->viewport_set_transparent_background(viewport, true);
- VS::get_singleton()->viewport_set_active(viewport, true);
- RID viewport_texture = VS::get_singleton()->viewport_get_texture(viewport);
-
- RID camera = VS::get_singleton()->camera_create();
- VS::get_singleton()->viewport_attach_camera(viewport, camera);
- VS::get_singleton()->camera_set_transform(camera, Transform(Basis(), Vector3(0, 0, 3)));
- //VS::get_singleton()->camera_set_perspective(camera,45,0.1,10);
- VS::get_singleton()->camera_set_orthogonal(camera, 1.0, 0.01, 1000.0);
-
- RID light = VS::get_singleton()->light_create(VS::LIGHT_DIRECTIONAL);
- RID light_instance = VS::get_singleton()->instance_create2(light, scenario);
- VS::get_singleton()->instance_set_transform(light_instance, Transform().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
-
- RID light2 = VS::get_singleton()->light_create(VS::LIGHT_DIRECTIONAL);
- VS::get_singleton()->light_set_color(light2, Color(0.7, 0.7, 0.7));
- //VS::get_singleton()->light_set_color(light2, VS::LIGHT_COLOR_SPECULAR, Color(0.0, 0.0, 0.0));
- RID light_instance2 = VS::get_singleton()->instance_create2(light2, scenario);
-
- VS::get_singleton()->instance_set_transform(light_instance2, Transform().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
-
- //sphere = VS::get_singleton()->mesh_create();
- RID mesh_instance = VS::get_singleton()->instance_create();
- VS::get_singleton()->instance_set_scenario(mesh_instance, scenario);
-
- EditorProgress ep("mlib", TTR("Creating Mesh Library"), ids.size());
+ Vector<Ref<Mesh> > meshes;
+ Vector<int> ids = p_library->get_item_list();
for (int i = 0; i < ids.size(); i++) {
-
- int id = ids[i];
- Ref<Mesh> mesh = p_library->get_item_mesh(id);
- if (!mesh.is_valid())
- continue;
- Rect3 aabb = mesh->get_aabb();
- print_line("aabb: " + aabb);
- Vector3 ofs = aabb.position + aabb.size * 0.5;
- aabb.position -= ofs;
- Transform xform;
- xform.basis = Basis().rotated(Vector3(0, 1, 0), -Math_PI * 0.25);
- xform.basis = Basis().rotated(Vector3(1, 0, 0), Math_PI * 0.25) * xform.basis;
- Rect3 rot_aabb = xform.xform(aabb);
- print_line("rot_aabb: " + rot_aabb);
- float m = MAX(rot_aabb.size.x, rot_aabb.size.y) * 0.5;
- if (m == 0)
- continue;
- m = 1.0 / m;
- m *= 0.5;
- print_line("scale: " + rtos(m));
- xform.basis.scale(Vector3(m, m, m));
- xform.origin = -xform.basis.xform(ofs); //-ofs*m;
- xform.origin.z -= rot_aabb.size.z * 2;
- RID inst = VS::get_singleton()->instance_create2(mesh->get_rid(), scenario);
- VS::get_singleton()->instance_set_transform(inst, xform);
- ep.step(TTR("Thumbnail.."), i);
- Main::iteration();
- Main::iteration();
- Ref<Image> img = VS::get_singleton()->texture_get_data(viewport_texture);
- ERR_CONTINUE(!img.is_valid() || img->empty());
- Ref<ImageTexture> it(memnew(ImageTexture));
- it->create_from_image(img);
- p_library->set_item_preview(id, it);
-
- //print_line("loaded image, size: "+rtos(m)+" dist: "+rtos(dist)+" empty?"+itos(img.empty())+" w: "+itos(it->get_width())+" h: "+itos(it->get_height()));
- VS::get_singleton()->free(inst);
+ meshes.push_back(p_library->get_item_mesh(ids[i]));
}
- VS::get_singleton()->free(mesh_instance);
- VS::get_singleton()->free(viewport);
- VS::get_singleton()->free(light);
- VS::get_singleton()->free(light_instance);
- VS::get_singleton()->free(light2);
- VS::get_singleton()->free(light_instance2);
- VS::get_singleton()->free(camera);
- VS::get_singleton()->free(scenario);
+ Vector<Ref<Texture> > textures = EditorInterface::get_singleton()->make_mesh_previews(meshes, EditorSettings::get_singleton()->get("editors/grid_map/preview_size"));
+ for (int i = 0; i < ids.size(); i++) {
+ p_library->set_item_preview(ids[i], textures[i]);
+ }
}
}
@@ -341,8 +262,8 @@ MeshLibraryEditor::MeshLibraryEditor(EditorNode *p_editor) {
void MeshLibraryEditorPlugin::edit(Object *p_node) {
- if (p_node && p_node->cast_to<MeshLibrary>()) {
- theme_editor->edit(p_node->cast_to<MeshLibrary>());
+ if (Object::cast_to<MeshLibrary>(p_node)) {
+ theme_editor->edit(Object::cast_to<MeshLibrary>(p_node));
theme_editor->show();
} else
theme_editor->hide();
@@ -368,7 +289,6 @@ MeshLibraryEditorPlugin::MeshLibraryEditorPlugin(EditorNode *p_node) {
p_node->get_viewport()->add_child(theme_editor);
theme_editor->set_area_as_parent_rect();
- theme_editor->set_anchor(MARGIN_RIGHT, Control::ANCHOR_END);
theme_editor->set_anchor(MARGIN_BOTTOM, Control::ANCHOR_BEGIN);
theme_editor->set_end(Point2(0, 22));
theme_editor->hide();
diff --git a/editor/plugins/cube_grid_theme_editor_plugin.h b/editor/plugins/cube_grid_theme_editor_plugin.h
index 6fe5fc4235..b5fa18a4ad 100644
--- a/editor/plugins/cube_grid_theme_editor_plugin.h
+++ b/editor/plugins/cube_grid_theme_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/plugins/curve_editor_plugin.cpp b/editor/plugins/curve_editor_plugin.cpp
index 2d05c8eba1..615cf85aa4 100644
--- a/editor/plugins/curve_editor_plugin.cpp
+++ b/editor/plugins/curve_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -775,7 +775,7 @@ CurveEditorPlugin::CurveEditorPlugin(EditorNode *p_node) {
_toggle_button = _editor_node->add_bottom_panel_item(get_name(), _view);
_toggle_button->hide();
- get_resource_previewer()->add_preview_generator(memnew(CurvePreviewGenerator));
+ get_editor_interface()->get_resource_previewer()->add_preview_generator(memnew(CurvePreviewGenerator));
}
CurveEditorPlugin::~CurveEditorPlugin() {
@@ -786,24 +786,24 @@ void CurveEditorPlugin::edit(Object *p_object) {
Ref<Curve> curve_ref;
if (_current_ref.is_valid()) {
- CurveTexture *ct = _current_ref->cast_to<CurveTexture>();
+ CurveTexture *ct = Object::cast_to<CurveTexture>(*_current_ref);
if (ct)
ct->disconnect(CoreStringNames::get_singleton()->changed, this, "_curve_texture_changed");
}
if (p_object) {
- Resource *res = p_object->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(p_object);
ERR_FAIL_COND(res == NULL);
ERR_FAIL_COND(!handles(p_object));
- _current_ref = Ref<Resource>(p_object->cast_to<Resource>());
+ _current_ref = Ref<Resource>(Object::cast_to<Resource>(p_object));
if (_current_ref.is_valid()) {
- Curve *curve = _current_ref->cast_to<Curve>();
+ Curve *curve = Object::cast_to<Curve>(*_current_ref);
if (curve)
curve_ref = Ref<Curve>(curve);
else {
- CurveTexture *ct = _current_ref->cast_to<CurveTexture>();
+ CurveTexture *ct = Object::cast_to<CurveTexture>(*_current_ref);
if (ct) {
ct->connect(CoreStringNames::get_singleton()->changed, this, "_curve_texture_changed");
curve_ref = ct->get_curve();
@@ -820,7 +820,7 @@ void CurveEditorPlugin::edit(Object *p_object) {
bool CurveEditorPlugin::handles(Object *p_object) const {
// Both handled so that we can keep the curve editor open
- return p_object->cast_to<Curve>() || p_object->cast_to<CurveTexture>();
+ return Object::cast_to<Curve>(p_object) || Object::cast_to<CurveTexture>(p_object);
}
void CurveEditorPlugin::make_visible(bool p_visible) {
@@ -837,7 +837,7 @@ void CurveEditorPlugin::make_visible(bool p_visible) {
void CurveEditorPlugin::_curve_texture_changed() {
// If the curve is shown indirectly as a CurveTexture is edited,
// we need to monitor when the curve property gets assigned
- CurveTexture *ct = _current_ref->cast_to<CurveTexture>();
+ CurveTexture *ct = Object::cast_to<CurveTexture>(*_current_ref);
if (ct) {
_view->set_curve(ct->get_curve());
}
diff --git a/editor/plugins/curve_editor_plugin.h b/editor/plugins/curve_editor_plugin.h
index 040c298a92..2df9d05533 100644
--- a/editor/plugins/curve_editor_plugin.h
+++ b/editor/plugins/curve_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp
index ce6eefd694..c48a241e4d 100644
--- a/editor/plugins/editor_preview_plugins.cpp
+++ b/editor/plugins/editor_preview_plugins.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,14 +29,13 @@
/*************************************************************************/
#include "editor_preview_plugins.h"
+#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "io/file_access_memory.h"
#include "io/resource_loader.h"
#include "os/os.h"
-#include "scene/resources/material.h"
-//#include "scene/resources/sample.h"
-#include "editor/editor_scale.h"
#include "scene/resources/bit_mask.h"
+#include "scene/resources/material.h"
#include "scene/resources/mesh.h"
bool EditorTexturePreviewPlugin::handles(const String &p_type) const {
@@ -239,7 +238,6 @@ Ref<Texture> EditorMaterialPreviewPlugin::generate(const RES &p_from) {
VS::get_singleton()->mesh_surface_set_material(sphere, 0, material->get_rid());
VS::get_singleton()->viewport_set_update_mode(viewport, VS::VIEWPORT_UPDATE_ONCE); //once used for capture
- //print_line("queue capture!");
preview_done = false;
VS::get_singleton()->request_frame_drawn_callback(this, "_preview_done", Variant());
@@ -454,9 +452,7 @@ Ref<Texture> EditorScriptPreviewPlugin::generate(const RES &p_from) {
while (_is_text_char(code[pos])) {
pos++;
}
- ///print_line("from "+itos(i)+" to "+itos(pos));
String word = code.substr(i, pos - i);
- //print_line("found word: "+word);
if (keywords.has(word))
in_keyword = true;
@@ -502,6 +498,8 @@ Ref<Texture> EditorScriptPreviewPlugin::generate(const RES &p_from) {
EditorScriptPreviewPlugin::EditorScriptPreviewPlugin() {
}
///////////////////////////////////////////////////////////////////
+
+// FIXME: Needs to be rewritten for AudioStream in Godot 3.0+
#if 0
bool EditorSamplePreviewPlugin::handles(const String& p_type) const {
@@ -766,10 +764,9 @@ Ref<Texture> EditorSamplePreviewPlugin::generate(const RES& p_from) {
}
EditorSamplePreviewPlugin::EditorSamplePreviewPlugin() {
-
-
}
#endif
+
///////////////////////////////////////////////////////////////////////////
void EditorMeshPreviewPlugin::_preview_done(const Variant &p_udata) {
@@ -788,14 +785,12 @@ bool EditorMeshPreviewPlugin::handles(const String &p_type) const {
Ref<Texture> EditorMeshPreviewPlugin::generate(const RES &p_from) {
- print_line("**Generating for mesh finally??");
Ref<Mesh> mesh = p_from;
ERR_FAIL_COND_V(mesh.is_null(), Ref<Texture>());
VS::get_singleton()->instance_set_base(mesh_instance, mesh->get_rid());
Rect3 aabb = mesh->get_aabb();
- print_line("mesh aabb: " + aabb);
Vector3 ofs = aabb.position + aabb.size * 0.5;
aabb.position -= ofs;
Transform xform;
@@ -807,14 +802,12 @@ Ref<Texture> EditorMeshPreviewPlugin::generate(const RES &p_from) {
return Ref<Texture>();
m = 1.0 / m;
m *= 0.5;
- //print_line("scale: "+rtos(m));
xform.basis.scale(Vector3(m, m, m));
xform.origin = -xform.basis.xform(ofs); //-ofs*m;
xform.origin.z -= rot_aabb.size.z * 2;
VS::get_singleton()->instance_set_transform(mesh_instance, xform);
VS::get_singleton()->viewport_set_update_mode(viewport, VS::VIEWPORT_UPDATE_ONCE); //once used for capture
- //print_line("queue capture!");
preview_done = false;
VS::get_singleton()->request_frame_drawn_callback(this, "_preview_done", Variant());
@@ -826,7 +819,6 @@ Ref<Texture> EditorMeshPreviewPlugin::generate(const RES &p_from) {
Ref<Image> img = VS::get_singleton()->VS::get_singleton()->texture_get_data(viewport_texture);
ERR_FAIL_COND_V(img.is_null(), Ref<ImageTexture>());
- print_line("captured! " + itos(img->get_width()) + "x" + itos(img->get_height()));
VS::get_singleton()->instance_set_base(mesh_instance, RID());
int thumbnail_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size");
diff --git a/editor/plugins/editor_preview_plugins.h b/editor/plugins/editor_preview_plugins.h
index 7e7d36eb1e..c422d5c686 100644
--- a/editor/plugins/editor_preview_plugins.h
+++ b/editor/plugins/editor_preview_plugins.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -97,6 +97,7 @@ public:
EditorScriptPreviewPlugin();
};
+// FIXME: Needs to be rewritten for AudioStream in Godot 3.0+
#if 0
class EditorSamplePreviewPlugin : public EditorResourcePreviewGenerator {
public:
@@ -106,8 +107,8 @@ public:
EditorSamplePreviewPlugin();
};
-
#endif
+
class EditorMeshPreviewPlugin : public EditorResourcePreviewGenerator {
GDCLASS(EditorMeshPreviewPlugin, EditorResourcePreviewGenerator)
diff --git a/editor/plugins/gi_probe_editor_plugin.cpp b/editor/plugins/gi_probe_editor_plugin.cpp
index a8f840a8b1..fcbf282758 100644
--- a/editor/plugins/gi_probe_editor_plugin.cpp
+++ b/editor/plugins/gi_probe_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,7 +38,7 @@ void GIProbeEditorPlugin::_bake() {
void GIProbeEditorPlugin::edit(Object *p_object) {
- GIProbe *s = p_object->cast_to<GIProbe>();
+ GIProbe *s = Object::cast_to<GIProbe>(p_object);
if (!s)
return;
diff --git a/editor/plugins/gi_probe_editor_plugin.h b/editor/plugins/gi_probe_editor_plugin.h
index b8f63e0b2e..a1fecd2911 100644
--- a/editor/plugins/gi_probe_editor_plugin.h
+++ b/editor/plugins/gi_probe_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -52,8 +52,8 @@ protected:
public:
virtual String get_name() const { return "GIProbe"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
GIProbeEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/gradient_editor_plugin.cpp b/editor/plugins/gradient_editor_plugin.cpp
index 4aaa155cfd..abd2559d1f 100644
--- a/editor/plugins/gradient_editor_plugin.cpp
+++ b/editor/plugins/gradient_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -46,7 +46,7 @@ GradientEditorPlugin::GradientEditorPlugin(EditorNode *p_node) {
void GradientEditorPlugin::edit(Object *p_object) {
- Gradient *gradient = p_object->cast_to<Gradient>();
+ Gradient *gradient = Object::cast_to<Gradient>(p_object);
if (!gradient)
return;
gradient_ref = Ref<Gradient>(gradient);
diff --git a/editor/plugins/gradient_editor_plugin.h b/editor/plugins/gradient_editor_plugin.h
index c319a13a01..c169fa0947 100644
--- a/editor/plugins/gradient_editor_plugin.h
+++ b/editor/plugins/gradient_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -50,8 +50,8 @@ protected:
public:
virtual String get_name() const { return "ColorRamp"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
GradientEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp
index f567abc5b1..aeb6e5c302 100644
--- a/editor/plugins/item_list_editor_plugin.cpp
+++ b/editor/plugins/item_list_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -115,7 +115,7 @@ void ItemListPlugin::_get_property_list(List<PropertyInfo> *p_list) const {
void ItemListOptionButtonPlugin::set_object(Object *p_object) {
- ob = p_object->cast_to<OptionButton>();
+ ob = Object::cast_to<OptionButton>(p_object);
}
bool ItemListOptionButtonPlugin::handles(Object *p_object) const {
@@ -155,9 +155,9 @@ ItemListOptionButtonPlugin::ItemListOptionButtonPlugin() {
void ItemListPopupMenuPlugin::set_object(Object *p_object) {
if (p_object->is_class("MenuButton"))
- pp = p_object->cast_to<MenuButton>()->get_popup();
+ pp = Object::cast_to<MenuButton>(p_object)->get_popup();
else
- pp = p_object->cast_to<PopupMenu>();
+ pp = Object::cast_to<PopupMenu>(p_object);
}
bool ItemListPopupMenuPlugin::handles(Object *p_object) const {
@@ -196,7 +196,7 @@ ItemListPopupMenuPlugin::ItemListPopupMenuPlugin() {
void ItemListItemListPlugin::set_object(Object *p_object) {
- pp = p_object->cast_to<ItemList>();
+ pp = Object::cast_to<ItemList>(p_object);
}
bool ItemListItemListPlugin::handles(Object *p_object) const {
@@ -384,7 +384,7 @@ ItemListEditor::~ItemListEditor() {
void ItemListEditorPlugin::edit(Object *p_object) {
- item_list_editor->edit(p_object->cast_to<Node>());
+ item_list_editor->edit(Object::cast_to<Node>(p_object));
}
bool ItemListEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/item_list_editor_plugin.h b/editor/plugins/item_list_editor_plugin.h
index bc009b3d7a..808f308c0c 100644
--- a/editor/plugins/item_list_editor_plugin.h
+++ b/editor/plugins/item_list_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -243,8 +243,8 @@ class ItemListEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "ItemList"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
ItemListEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.cpp b/editor/plugins/light_occluder_2d_editor_plugin.cpp
index a7a20e71fe..e6b921c539 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.cpp
+++ b/editor/plugins/light_occluder_2d_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -106,7 +106,7 @@ bool LightOccluder2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
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("No OccluderPolygon2D resource on this node.\nCreate and assign one?");
+ 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);
@@ -367,7 +367,7 @@ void LightOccluder2DEditor::edit(Node *p_collision_polygon) {
if (p_collision_polygon) {
- node = p_collision_polygon->cast_to<LightOccluder2D>();
+ node = Object::cast_to<LightOccluder2D>(p_collision_polygon);
if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
wip.clear();
@@ -424,24 +424,13 @@ LightOccluder2DEditor::LightOccluder2DEditor(EditorNode *p_editor) {
add_child(create_poly);
create_poly->get_ok()->set_text(TTR("Create"));
-//add_constant_override("separation",0);
-
-#if 0
- options = memnew( MenuButton );
- add_child(options);
- options->set_area_as_parent_rect();
- options->set_text("Polygon");
- //options->get_popup()->add_item("Parse BBCode",PARSE_BBCODE);
- options->get_popup()->connect("id_pressed", this,"_menu_option");
-#endif
-
mode = MODE_EDIT;
wip_active = false;
}
void LightOccluder2DEditorPlugin::edit(Object *p_object) {
- collision_polygon_editor->edit(p_object->cast_to<Node>());
+ collision_polygon_editor->edit(Object::cast_to<Node>(p_object));
}
bool LightOccluder2DEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.h b/editor/plugins/light_occluder_2d_editor_plugin.h
index d6579fc94c..7a4f18963d 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.h
+++ b/editor/plugins/light_occluder_2d_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -101,8 +101,8 @@ public:
virtual String get_name() const { return "LightOccluder2D"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
LightOccluder2DEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/line_2d_editor_plugin.cpp b/editor/plugins/line_2d_editor_plugin.cpp
index 4a7ad74fbe..a5f854e1b1 100644
--- a/editor/plugins/line_2d_editor_plugin.cpp
+++ b/editor/plugins/line_2d_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,9 +54,9 @@ void Line2DEditor::_notification(int p_what) {
}
}
-Vector2 Line2DEditor::mouse_to_local_pos(Vector2 gpoint, bool alt) {
+Vector2 Line2DEditor::mouse_to_local_pos(Vector2 gpos, bool alt) {
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
- return !alt ? canvas_item_editor->snap_point(xform.affine_inverse().xform(gpoint)) : node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint)));
+ return !alt ? canvas_item_editor->snap_point(xform.affine_inverse().xform(gpos)) : node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpos)));
}
int Line2DEditor::get_point_index_at(Vector2 gpos) {
@@ -189,7 +189,7 @@ void Line2DEditor::edit(Node *p_line2d) {
canvas_item_editor = CanvasItemEditor::get_singleton();
if (p_line2d) {
- node = p_line2d->cast_to<Line2D>();
+ node = Object::cast_to<Line2D>(p_line2d);
if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
if (!node->is_connected("visibility_changed", this, "_node_visibility_changed"))
@@ -276,7 +276,7 @@ Line2DEditor::Line2DEditor(EditorNode *p_editor) {
//----------------------------------------------------------------------------
void Line2DEditorPlugin::edit(Object *p_object) {
- line2d_editor->edit(p_object->cast_to<Node>());
+ line2d_editor->edit(Object::cast_to<Node>(p_object));
}
bool Line2DEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/line_2d_editor_plugin.h b/editor/plugins/line_2d_editor_plugin.h
index 3a1f841556..dea77ec248 100644
--- a/editor/plugins/line_2d_editor_plugin.h
+++ b/editor/plugins/line_2d_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -101,8 +101,8 @@ public:
virtual String get_name() const { return "Line2D"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
Line2DEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/material_editor_plugin.cpp b/editor/plugins/material_editor_plugin.cpp
index 179ef27eda..d2767bf1b2 100644
--- a/editor/plugins/material_editor_plugin.cpp
+++ b/editor/plugins/material_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,12 +27,14 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
+// FIXME: Disabled as (according to reduz) users were complaining that it gets in the way
+// Waiting for PropertyEditor rewrite (planned for 3.1) to be refactored.
+#if 0
#include "material_editor_plugin.h"
#include "scene/main/viewport.h"
-#if 0
-
void MaterialEditor::_gui_input(InputEvent p_event) {
@@ -372,7 +374,7 @@ MaterialEditor::MaterialEditor() {
void MaterialEditorPlugin::edit(Object *p_object) {
- Material * s = p_object->cast_to<Material>();
+ Material * s = Object::cast_to<Material>(p_object);
if (!s)
return;
diff --git a/editor/plugins/material_editor_plugin.h b/editor/plugins/material_editor_plugin.h
index a0a91f53a6..10d7997a52 100644
--- a/editor/plugins/material_editor_plugin.h
+++ b/editor/plugins/material_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,6 +30,10 @@
#ifndef MATERIAL_EDITOR_PLUGIN_H
#define MATERIAL_EDITOR_PLUGIN_H
+// FIXME: Disabled as (according to reduz) users were complaining that it gets in the way
+// Waiting for PropertyEditor rewrite (planned for 3.1) to be refactored.
+#if 0
+
#include "editor/editor_node.h"
#include "editor/editor_plugin.h"
#include "scene/3d/camera.h"
@@ -37,7 +41,6 @@
#include "scene/3d/mesh_instance.h"
#include "scene/resources/material.h"
-#if 0
class MaterialEditor : public Control {
GDCLASS(MaterialEditor, Control);
@@ -97,5 +100,5 @@ public:
};
-#endif // MATERIAL_EDITOR_PLUGIN_H
#endif
+#endif // MATERIAL_EDITOR_PLUGIN_H
diff --git a/editor/plugins/mesh_editor_plugin.cpp b/editor/plugins/mesh_editor_plugin.cpp
index 23b19e61b9..a77f022347 100644
--- a/editor/plugins/mesh_editor_plugin.cpp
+++ b/editor/plugins/mesh_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -187,7 +187,7 @@ MeshEditor::MeshEditor() {
void MeshEditorPlugin::edit(Object *p_object) {
- Mesh *s = p_object->cast_to<Mesh>();
+ Mesh *s = Object::cast_to<Mesh>(p_object);
if (!s)
return;
diff --git a/editor/plugins/mesh_editor_plugin.h b/editor/plugins/mesh_editor_plugin.h
index 72d93c4126..8ae20a5434 100644
--- a/editor/plugins/mesh_editor_plugin.h
+++ b/editor/plugins/mesh_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -81,8 +81,8 @@ class MeshEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "Mesh"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
MeshEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/mesh_instance_editor_plugin.cpp b/editor/plugins/mesh_instance_editor_plugin.cpp
index 49498d0fa0..84fc0cecf2 100644
--- a/editor/plugins/mesh_instance_editor_plugin.cpp
+++ b/editor/plugins/mesh_instance_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -101,7 +101,7 @@ void MeshInstanceEditor::_menu_option(int p_option) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- MeshInstance *instance = E->get()->cast_to<MeshInstance>();
+ MeshInstance *instance = Object::cast_to<MeshInstance>(E->get());
if (!instance)
continue;
@@ -290,7 +290,7 @@ MeshInstanceEditor::MeshInstanceEditor() {
void MeshInstanceEditorPlugin::edit(Object *p_object) {
- mesh_editor->edit(p_object->cast_to<MeshInstance>());
+ mesh_editor->edit(Object::cast_to<MeshInstance>(p_object));
}
bool MeshInstanceEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/mesh_instance_editor_plugin.h b/editor/plugins/mesh_instance_editor_plugin.h
index d80ffa071d..fa851458ce 100644
--- a/editor/plugins/mesh_instance_editor_plugin.h
+++ b/editor/plugins/mesh_instance_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -82,8 +82,8 @@ class MeshInstanceEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "MeshInstance"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
MeshInstanceEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/multimesh_editor_plugin.cpp b/editor/plugins/multimesh_editor_plugin.cpp
index 9520cc5297..79345754b6 100644
--- a/editor/plugins/multimesh_editor_plugin.cpp
+++ b/editor/plugins/multimesh_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -77,7 +77,7 @@ void MultiMeshEditor::_populate() {
return;
}
- MeshInstance *ms_instance = ms_node->cast_to<MeshInstance>();
+ MeshInstance *ms_instance = Object::cast_to<MeshInstance>(ms_node);
if (!ms_instance) {
@@ -112,7 +112,7 @@ void MultiMeshEditor::_populate() {
return;
}
- GeometryInstance *ss_instance = ss_node->cast_to<MeshInstance>();
+ GeometryInstance *ss_instance = Object::cast_to<MeshInstance>(ss_node);
if (!ss_instance) {
@@ -144,22 +144,7 @@ void MultiMeshEditor::_populate() {
}
w = PoolVector<Face3>::Write();
-#if 0
- node->get_multimesh()->set_instance_count(populate_amount->get_val());
- node->populate_parent(populate_rotate_random->get_val(),populate_tilt_random->get_val(),populate_scale_random->get_val(),populate_scale->get_val());
-
- ERR_EXPLAIN("Parent is not of type VisualInstance.");
- ERR_FAIL_COND(!get_parent() || !get_parent()->is_type("VisualInstance"));
-
- ERR_EXPLAIN("Multimesh not present.");
- ERR_FAIL_COND(multimesh.is_null());
-
- VisualInstance *vi = get_parent()->cast_to<VisualInstance>();
- ERR_EXPLAIN("Parent is not of type VisualInstance, can't be populated.");
- ERR_FAIL_COND(!vi);
-
-#endif
PoolVector<Face3> faces = geometry;
ERR_EXPLAIN(TTR("Parent has no solid faces to populate."));
int facecount = faces.size();
@@ -381,7 +366,7 @@ MultiMeshEditor::MultiMeshEditor() {
populate_amount = memnew(SpinBox);
populate_amount->set_anchor(MARGIN_RIGHT, ANCHOR_END);
populate_amount->set_begin(Point2(20, 232));
- populate_amount->set_end(Point2(5, 237));
+ populate_amount->set_end(Point2(-5, 237));
populate_amount->set_min(1);
populate_amount->set_max(65536);
populate_amount->set_value(128);
@@ -402,7 +387,7 @@ MultiMeshEditor::MultiMeshEditor() {
void MultiMeshEditorPlugin::edit(Object *p_object) {
- multimesh_editor->edit(p_object->cast_to<MultiMeshInstance>());
+ multimesh_editor->edit(Object::cast_to<MultiMeshInstance>(p_object));
}
bool MultiMeshEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/multimesh_editor_plugin.h b/editor/plugins/multimesh_editor_plugin.h
index 0c633a4f60..6b44662091 100644
--- a/editor/plugins/multimesh_editor_plugin.h
+++ b/editor/plugins/multimesh_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -95,8 +95,8 @@ class MultiMeshEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "MultiMesh"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
MultiMeshEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/navigation_polygon_editor_plugin.cpp b/editor/plugins/navigation_polygon_editor_plugin.cpp
index 725e57fe0b..de8d4f9618 100644
--- a/editor/plugins/navigation_polygon_editor_plugin.cpp
+++ b/editor/plugins/navigation_polygon_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -69,6 +69,7 @@ void NavigationPolygonEditor::_create_nav() {
undo_redo->add_do_method(node, "set_navigation_polygon", Ref<NavigationPolygon>(memnew(NavigationPolygon)));
undo_redo->add_undo_method(node, "set_navigation_polygon", Variant(REF()));
undo_redo->commit_action();
+ _menu_option(MODE_CREATE);
}
void NavigationPolygonEditor::_menu_option(int p_option) {
@@ -422,7 +423,12 @@ void NavigationPolygonEditor::edit(Node *p_collision_polygon) {
if (p_collision_polygon) {
- node = p_collision_polygon->cast_to<NavigationPolygonInstance>();
+ node = Object::cast_to<NavigationPolygonInstance>(p_collision_polygon);
+ //Enable the pencil tool if the polygon is empty
+ if (!node->get_navigation_polygon().is_null()) {
+ if (node->get_navigation_polygon()->get_polygon_count() == 0)
+ _menu_option(MODE_CREATE);
+ }
if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
wip.clear();
@@ -468,17 +474,6 @@ NavigationPolygonEditor::NavigationPolygonEditor(EditorNode *p_editor) {
add_child(create_nav);
create_nav->get_ok()->set_text(TTR("Create"));
-//add_constant_override("separation",0);
-
-#if 0
- options = memnew( MenuButton );
- add_child(options);
- options->set_area_as_parent_rect();
- options->set_text("Polygon");
- //options->get_popup()->add_item("Parse BBCode",PARSE_BBCODE);
- options->get_popup()->connect("id_pressed", this,"_menu_option");
-#endif
-
mode = MODE_EDIT;
wip_active = false;
edited_outline = -1;
@@ -486,7 +481,7 @@ NavigationPolygonEditor::NavigationPolygonEditor(EditorNode *p_editor) {
void NavigationPolygonEditorPlugin::edit(Object *p_object) {
- collision_polygon_editor->edit(p_object->cast_to<Node>());
+ collision_polygon_editor->edit(Object::cast_to<Node>(p_object));
}
bool NavigationPolygonEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/navigation_polygon_editor_plugin.h b/editor/plugins/navigation_polygon_editor_plugin.h
index 62a83983fd..33f9d5c785 100644
--- a/editor/plugins/navigation_polygon_editor_plugin.h
+++ b/editor/plugins/navigation_polygon_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -102,8 +102,8 @@ public:
virtual String get_name() const { return "NavigationPolygonInstance"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
NavigationPolygonEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/particles_2d_editor_plugin.cpp b/editor/plugins/particles_2d_editor_plugin.cpp
index a759e5892f..5eaa248224 100644
--- a/editor/plugins/particles_2d_editor_plugin.cpp
+++ b/editor/plugins/particles_2d_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,13 +33,10 @@
#include "io/image_loader.h"
#include "scene/3d/particles.h"
#include "scene/gui/separator.h"
+
void Particles2DEditorPlugin::edit(Object *p_object) {
- if (p_object) {
- particles = p_object->cast_to<Particles2D>();
- } else {
- particles = NULL;
- }
+ particles = Object::cast_to<Particles2D>(p_object);
}
bool Particles2DEditorPlugin::handles(Object *p_object) const {
@@ -357,7 +354,7 @@ Particles2DEditorPlugin::Particles2DEditorPlugin(EditorNode *p_node) {
menu->get_popup()->add_separator();
menu->get_popup()->add_item(TTR("Load Emission Mask"), MENU_LOAD_EMISSION_MASK);
// menu->get_popup()->add_item(TTR("Clear Emission Mask"), MENU_CLEAR_EMISSION_MASK);
- menu->set_text("Particles");
+ menu->set_text(TTR("Particles"));
toolbar->add_child(menu);
file = memnew(EditorFileDialog);
diff --git a/editor/plugins/particles_2d_editor_plugin.h b/editor/plugins/particles_2d_editor_plugin.h
index cea60fbeaf..fd42abb6bd 100644
--- a/editor/plugins/particles_2d_editor_plugin.h
+++ b/editor/plugins/particles_2d_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -87,8 +87,8 @@ protected:
public:
virtual String get_name() const { return "Particles2D"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
Particles2DEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/particles_editor_plugin.cpp b/editor/plugins/particles_editor_plugin.cpp
index d918a3e24e..10834b74ff 100644
--- a/editor/plugins/particles_editor_plugin.cpp
+++ b/editor/plugins/particles_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -51,7 +51,7 @@ void ParticlesEditor::_node_selected(const NodePath &p_path) {
if (!sel)
return;
- VisualInstance *vi = sel->cast_to<VisualInstance>();
+ VisualInstance *vi = Object::cast_to<VisualInstance>(sel);
if (!vi) {
err_dialog->set_text(TTR("Node does not contain geometry."));
@@ -135,7 +135,7 @@ void ParticlesEditor::_menu_option(int p_option) {
/*
Node *root = get_scene()->get_root_node();
ERR_FAIL_COND(!root);
- EditorNode *en = root->cast_to<EditorNode>();
+ EditorNode *en = Object::cast_to<EditorNode>(root);
ERR_FAIL_COND(!en);
Node * node = en->get_edited_scene();
*/
@@ -270,9 +270,7 @@ void ParticlesEditor::_generate_emission_points() {
Vector3 dir;
dir[Math::rand() % 3] = 1.0;
- Vector3 ofs = Vector3(1, 1, 1) - dir;
- ofs = (Vector3(1, 1, 1) - dir) * Vector3(Math::randf(), Math::randf(), Math::randf()) * aabb.size;
- ofs += aabb.position;
+ Vector3 ofs = (Vector3(1, 1, 1) - dir) * Vector3(Math::randf(), Math::randf(), Math::randf()) * aabb.size + aabb.position;
Vector3 ofsv = ofs + aabb.size * dir;
@@ -391,7 +389,7 @@ ParticlesEditor::ParticlesEditor() {
particles_editor_hb->add_child(options);
particles_editor_hb->hide();
- options->set_text("Particles");
+ options->set_text(TTR("Particles"));
options->get_popup()->add_item(TTR("Generate AABB"), MENU_OPTION_GENERATE_AABB);
options->get_popup()->add_separator();
options->get_popup()->add_item(TTR("Create Emission Points From Mesh"), MENU_OPTION_CREATE_EMISSION_VOLUME_FROM_MESH);
@@ -463,7 +461,7 @@ ParticlesEditor::ParticlesEditor() {
void ParticlesEditorPlugin::edit(Object *p_object) {
- particles_editor->edit(p_object->cast_to<Particles>());
+ particles_editor->edit(Object::cast_to<Particles>(p_object));
}
bool ParticlesEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/particles_editor_plugin.h b/editor/plugins/particles_editor_plugin.h
index e9f9f43468..2c8ce88eb2 100644
--- a/editor/plugins/particles_editor_plugin.h
+++ b/editor/plugins/particles_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -102,8 +102,8 @@ class ParticlesEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "Particles"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
ParticlesEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/path_2d_editor_plugin.cpp b/editor/plugins/path_2d_editor_plugin.cpp
index 3a210f3fe0..adc8d4f091 100644
--- a/editor/plugins/path_2d_editor_plugin.cpp
+++ b/editor/plugins/path_2d_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,6 +33,7 @@
#include "editor/editor_settings.h"
#include "os/file_access.h"
#include "os/keyboard.h"
+
void Path2DEditor::_notification(int p_what) {
switch (p_what) {
@@ -228,200 +229,6 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return true;
}
-
-#if 0
- switch(mode) {
-
-
- case MODE_CREATE: {
-
- if (mb->get_button_index()==BUTTON_LEFT && mb->is_pressed()) {
-
-
- if (!wip_active) {
-
- wip.clear();
- wip.push_back( canvas_item_editor->snap_point(cpoint) );
- wip_active=true;
- edited_point_pos=canvas_item_editor->snap_point(cpoint);
- canvas_item_editor->update();
- edited_point=1;
- return true;
- } else {
- if (wip.size()>1 && xform.xform(wip[0]).distance_to(gpoint)<grab_threshold) {
- //wip closed
- _wip_close();
-
-
- return true;
- } else {
-
- wip.push_back( canvas_item_editor->snap_point(cpoint) );
- edited_point=wip.size();
- canvas_item_editor->update();
- return true;
-
- //add wip point
- }
- }
- } else if (mb->get_button_index()==BUTTON_RIGHT && mb->is_pressed() && wip_active) {
- _wip_close();
- }
-
- } 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,"set_polygon",poly);
- poly.push_back(cpoint);
- undo_redo->add_do_method(node,"set_polygon",poly);
- undo_redo->add_do_method(canvas_item_editor->get_viewport_control(),"update");
- undo_redo->add_undo_method(canvas_item_editor->get_viewport_control(),"update");
- 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++) {
-
- if (d<closest_dist && d<grab_threshold) {
- closest_dist=d;
- closest_pos=cp;
- closest_idx=i;
- }
-
- 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,canvas_item_editor->snap_point(xform.affine_inverse().xform(closest_pos)));
- edited_point=closest_idx+1;
- edited_point_pos=canvas_item_editor->snap_point(xform.affine_inverse().xform(closest_pos));
- node->set_polygon(poly);
- canvas_item_editor->update();
- return true;
- }
- } else {
-
- real_t d = cp.distance_to(gpoint);
- if (d<closest_dist && d<grab_threshold) {
- closest_dist=d;
- closest_pos=cp;
- closest_idx=i;
- }
-
- 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();
- return true;
- }
- }
- } else {
-
- if (edited_point!=-1) {
-
- //apply
-
- ERR_FAIL_INDEX_V(edited_point,poly.size(),false);
- poly[edited_point]=edited_point_pos;
- undo_redo->create_action(TTR("Edit Poly"));
- undo_redo->add_do_method(node,"set_polygon",poly);
- undo_redo->add_undo_method(node,"set_polygon",pre_move_edit);
- undo_redo->add_do_method(canvas_item_editor->get_viewport_control(),"update");
- undo_redo->add_undo_method(canvas_item_editor->get_viewport_control(),"update");
- undo_redo->commit_action();
-
- edited_point=-1;
- return true;
- }
- }
- } if (mb->get_button_index()==BUTTON_RIGHT && mb->is_pressed() && edited_point==-1) {
-
- real_t d = cp.distance_to(gpoint);
- if (d<closest_dist && d<grab_threshold) {
- closest_dist=d;
- closest_pos=cp;
- closest_idx=i;
- }
-
- 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,"set_polygon",poly);
- poly.remove(closest_idx);
- undo_redo->add_do_method(node,"set_polygon",poly);
- undo_redo->add_do_method(canvas_item_editor->get_viewport_control(),"update");
- undo_redo->add_undo_method(canvas_item_editor->get_viewport_control(),"update");
- undo_redo->commit_action();
- return true;
- }
-
- }
-
- } break;
- }
-#endif
}
Ref<InputEventMouseMotion> mm = p_event;
@@ -463,19 +270,6 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
canvas_item_editor->get_viewport_control()->update();
return true;
}
-
-#if 0
- if (edited_point!=-1 && (wip_active || mm->get_button_mask()&BUTTON_MASK_LEFT)) {
-
-
- Matrix32 xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
-
- Vector2 gpoint = Point2(mm.x,mm.y);
- edited_point_pos = canvas_item_editor->snap_point(xform.affine_inverse().xform(gpoint));
- canvas_item_editor->update();
-
- }
-#endif
}
return false;
@@ -534,7 +328,7 @@ void Path2DEditor::edit(Node *p_path2d) {
if (p_path2d) {
- node = p_path2d->cast_to<Path2D>();
+ node = Object::cast_to<Path2D>(p_path2d);
if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
if (!node->is_connected("visibility_changed", this, "_node_visibility_changed"))
@@ -619,16 +413,7 @@ Path2DEditor::Path2DEditor(EditorNode *p_editor) {
undo_redo = editor->get_undo_redo();
mode = MODE_EDIT;
-
action = ACTION_NONE;
-#if 0
- options = memnew( MenuButton );
- add_child(options);
- options->set_area_as_parent_rect();
- options->set_text("Polygon");
- //options->get_popup()->add_item("Parse BBCode",PARSE_BBCODE);
- options->get_popup()->connect("id_pressed", this,"_menu_option");
-#endif
base_hb = memnew(HBoxContainer);
CanvasItemEditor::get_singleton()->add_control_to_menu_panel(base_hb);
@@ -676,7 +461,7 @@ Path2DEditor::Path2DEditor(EditorNode *p_editor) {
void Path2DEditorPlugin::edit(Object *p_object) {
- path2d_editor->edit(p_object->cast_to<Node>());
+ path2d_editor->edit(Object::cast_to<Node>(p_object));
}
bool Path2DEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/path_2d_editor_plugin.h b/editor/plugins/path_2d_editor_plugin.h
index 70911444ad..c195845244 100644
--- a/editor/plugins/path_2d_editor_plugin.h
+++ b/editor/plugins/path_2d_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -112,8 +112,8 @@ public:
virtual String get_name() const { return "Path2D"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
Path2DEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/path_editor_plugin.cpp b/editor/plugins/path_editor_plugin.cpp
index c32ed1064f..d0f2b19ed3 100644
--- a/editor/plugins/path_editor_plugin.cpp
+++ b/editor/plugins/path_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -222,8 +222,10 @@ void PathSpatialGizmo::redraw() {
//v3p.push_back(r[i]+Vector3(0,0.2,0));
}
- add_lines(v3p, PathEditorPlugin::singleton->path_material);
- add_collision_segments(v3p);
+ if (v3p.size() > 1) {
+ add_lines(v3p, PathEditorPlugin::singleton->path_material);
+ add_collision_segments(v3p);
+ }
if (PathEditorPlugin::singleton->get_edited_path() == path) {
v3p.clear();
@@ -247,9 +249,15 @@ void PathSpatialGizmo::redraw() {
}
}
- add_lines(v3p, PathEditorPlugin::singleton->path_thin_material);
- add_handles(handles);
- add_handles(sec_handles, false, true);
+ if (v3p.size() > 1) {
+ add_lines(v3p, PathEditorPlugin::singleton->path_thin_material);
+ }
+ if (handles.size()) {
+ add_handles(handles);
+ }
+ if (sec_handles.size()) {
+ add_handles(sec_handles, false, true);
+ }
}
}
@@ -261,9 +269,9 @@ PathSpatialGizmo::PathSpatialGizmo(Path *p_path) {
Ref<SpatialEditorGizmo> PathEditorPlugin::create_spatial_gizmo(Spatial *p_spatial) {
- if (p_spatial->cast_to<Path>()) {
+ if (Object::cast_to<Path>(p_spatial)) {
- return memnew(PathSpatialGizmo(p_spatial->cast_to<Path>()));
+ return memnew(PathSpatialGizmo(Object::cast_to<Path>(p_spatial)));
}
return Ref<SpatialEditorGizmo>();
@@ -425,7 +433,7 @@ bool PathEditorPlugin::forward_spatial_gui_input(Camera *p_camera, const Ref<Inp
void PathEditorPlugin::edit(Object *p_object) {
if (p_object) {
- path = p_object->cast_to<Path>();
+ path = Object::cast_to<Path>(p_object);
if (path) {
if (path->get_curve().is_valid()) {
@@ -439,7 +447,7 @@ void PathEditorPlugin::edit(Object *p_object) {
pre->get_curve()->emit_signal("changed");
}
}
- //collision_polygon_editor->edit(p_object->cast_to<Node>());
+ //collision_polygon_editor->edit(Object::cast_to<Node>(p_object));
}
bool PathEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/path_editor_plugin.h b/editor/plugins/path_editor_plugin.h
index 651dcdaa78..b672e828a9 100644
--- a/editor/plugins/path_editor_plugin.h
+++ b/editor/plugins/path_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -83,8 +83,8 @@ public:
virtual Ref<SpatialEditorGizmo> create_spatial_gizmo(Spatial *p_spatial);
virtual String get_name() const { return "Path"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
PathEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp
index 24ccdcd445..be6f3429aa 100644
--- a/editor/plugins/polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/polygon_2d_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -402,6 +402,11 @@ bool Polygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
cpoint = canvas_item_editor->snap_point(cpoint);
edited_point_pos = node->get_global_transform().affine_inverse().xform(cpoint);
+ Vector<Vector2> poly = Variant(node->get_polygon());
+ ERR_FAIL_INDEX_V(edited_point, poly.size(), false);
+ poly[edited_point] = edited_point_pos - node->get_offset();
+ node->set_polygon(Variant(poly));
+
canvas_item_editor->get_viewport_control()->update();
}
}
@@ -425,6 +430,23 @@ void Polygon2DEditor::_canvas_draw() {
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
Ref<Texture> handle = get_icon("EditorHandle", "EditorIcons");
+ if (edited_point >= 0 && EDITOR_DEF("editors/poly_editor/show_previous_outline", true)) {
+
+ const Color col = node->get_color().contrasted();
+ const int n = pre_move_edit.size();
+ for (int i = 0; i < n; i++) {
+
+ Vector2 p, p2;
+ p = pre_move_edit[i] + node->get_offset();
+ p2 = pre_move_edit[(i + 1) % n] + node->get_offset();
+
+ Vector2 point = xform.xform(p);
+ Vector2 next_point = xform.xform(p2);
+
+ vpc->draw_line(point, next_point, col, 2);
+ }
+ }
+
for (int i = 0; i < poly.size(); i++) {
Vector2 p, p2;
@@ -697,7 +719,11 @@ void Polygon2DEditor::edit(Node *p_collision_polygon) {
if (p_collision_polygon) {
- node = p_collision_polygon->cast_to<Polygon2D>();
+ node = Object::cast_to<Polygon2D>(p_collision_polygon);
+ //Enable the pencil tool if the polygon is empty
+ if (node->get_polygon().size() == 0) {
+ _menu_option(MODE_CREATE);
+ }
if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
@@ -770,17 +796,6 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) {
add_child(button_uv);
button_uv->connect("pressed", this, "_menu_option", varray(MODE_EDIT_UV));
-//add_constant_override("separation",0);
-
-#if 0
- options = memnew( MenuButton );
- add_child(options);
- options->set_area_as_parent_rect();
- options->set_text("Polygon");
- //options->get_popup()->add_item("Parse BBCode",PARSE_BBCODE);
- options->get_popup()->connect("id_pressed", this,"_menu_option");
-#endif
-
mode = MODE_EDIT;
wip_active = false;
@@ -925,7 +940,7 @@ Polygon2DEditor::Polygon2DEditor(EditorNode *p_editor) {
void Polygon2DEditorPlugin::edit(Object *p_object) {
- collision_polygon_editor->edit(p_object->cast_to<Node>());
+ collision_polygon_editor->edit(Object::cast_to<Node>(p_object));
}
bool Polygon2DEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h
index 0901cc9082..38148ca7e3 100644
--- a/editor/plugins/polygon_2d_editor_plugin.h
+++ b/editor/plugins/polygon_2d_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -152,8 +152,8 @@ public:
virtual String get_name() const { return "Polygon2D"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
Polygon2DEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp
index 2703da12fe..e157ddbf90 100644
--- a/editor/plugins/resource_preloader_editor_plugin.cpp
+++ b/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -157,7 +157,6 @@ void ResourcePreloaderEditor::_paste_pressed() {
if (!r.is_valid()) {
dialog->set_text(TTR("Resource clipboard is empty!"));
dialog->set_title(TTR("Error!"));
- //dialog->get_cancel()->set_text("Close");
dialog->get_ok()->set_text(TTR("Close"));
dialog->popup_centered_minsize();
return; ///beh should show an error i guess
@@ -362,7 +361,7 @@ void ResourcePreloaderEditor::_bind_methods() {
ResourcePreloaderEditor::ResourcePreloaderEditor() {
- //add_style_override("panel", get_stylebox("panel","Panel"));
+ //add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("panel","Panel"));
VBoxContainer *vbc = memnew(VBoxContainer);
add_child(vbc);
@@ -410,7 +409,7 @@ ResourcePreloaderEditor::ResourcePreloaderEditor() {
void ResourcePreloaderEditorPlugin::edit(Object *p_object) {
preloader_editor->set_undo_redo(&get_undo_redo());
- ResourcePreloader *s = p_object->cast_to<ResourcePreloader>();
+ ResourcePreloader *s = Object::cast_to<ResourcePreloader>(p_object);
if (!s)
return;
diff --git a/editor/plugins/resource_preloader_editor_plugin.h b/editor/plugins/resource_preloader_editor_plugin.h
index 1f54620ba4..46539f432c 100644
--- a/editor/plugins/resource_preloader_editor_plugin.h
+++ b/editor/plugins/resource_preloader_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -91,8 +91,8 @@ class ResourcePreloaderEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "ResourcePreloader"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
ResourcePreloaderEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/rich_text_editor_plugin.cpp b/editor/plugins/rich_text_editor_plugin.cpp
deleted file mode 100644
index 07c0cced49..0000000000
--- a/editor/plugins/rich_text_editor_plugin.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-/*************************************************************************/
-/* rich_text_editor_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "rich_text_editor_plugin.h"
-
-#include "canvas_item_editor_plugin.h"
-#include "os/file_access.h"
-
-void RichTextEditor::_notification(int p_what) {
-
- switch (p_what) {
-
- case NOTIFICATION_FIXED_PROCESS: {
-
- } break;
- }
-}
-void RichTextEditor::_node_removed(Node *p_node) {
-
- if (p_node == node) {
- node = NULL;
- hide();
- }
-}
-
-void RichTextEditor::_file_selected(const String &p_path) {
-
- CharString cs;
- FileAccess *fa = FileAccess::open(p_path, FileAccess::READ);
- if (!fa) {
- ERR_FAIL();
- }
-
- while (!fa->eof_reached())
- cs.push_back(fa->get_8());
- cs.push_back(0);
- memdelete(fa);
-
- String bbcode;
- bbcode.parse_utf8(&cs[0]);
- node->parse_bbcode(bbcode);
-}
-
-void RichTextEditor::_menu_option(int p_option) {
-
- switch (p_option) {
-
- case PARSE_BBCODE: {
-
- file_dialog->popup_centered_ratio();
- } break;
- case CLEAR: {
-
- node->clear();
-
- } break;
- }
-}
-
-void RichTextEditor::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("_menu_option"), &RichTextEditor::_menu_option);
- ClassDB::bind_method(D_METHOD("_file_selected"), &RichTextEditor::_file_selected);
-}
-
-void RichTextEditor::edit(Node *p_rich_text) {
-
- node = p_rich_text->cast_to<RichTextLabel>();
-}
-RichTextEditor::RichTextEditor() {
-
- options = memnew(MenuButton);
- //add_child(options);
- CanvasItemEditor::get_singleton()->add_control_to_menu_panel(options);
- options->set_area_as_parent_rect();
-
- options->set_text("RichText");
- options->get_popup()->add_item(TTR("Parse BBCode"), PARSE_BBCODE);
- options->get_popup()->add_item(TTR("Clear"), CLEAR);
-
- options->get_popup()->connect("id_pressed", this, "_menu_option");
- file_dialog = memnew(EditorFileDialog);
- add_child(file_dialog);
- file_dialog->add_filter("*.txt");
- file_dialog->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- file_dialog->connect("file_selected", this, "_file_selected");
-}
-
-void RichTextEditorPlugin::edit(Object *p_object) {
-
- rich_text_editor->edit(p_object->cast_to<Node>());
-}
-
-bool RichTextEditorPlugin::handles(Object *p_object) const {
-
- return p_object->is_class("RichTextLabel");
-}
-
-void RichTextEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
- rich_text_editor->options->show();
- } else {
-
- rich_text_editor->options->hide();
- rich_text_editor->edit(NULL);
- }
-}
-
-RichTextEditorPlugin::RichTextEditorPlugin(EditorNode *p_node) {
-
- editor = p_node;
- rich_text_editor = memnew(RichTextEditor);
- editor->get_viewport()->add_child(rich_text_editor);
-
- rich_text_editor->set_margin(MARGIN_LEFT, 184);
- rich_text_editor->set_margin(MARGIN_RIGHT, 230);
- rich_text_editor->set_margin(MARGIN_TOP, 0);
- rich_text_editor->set_margin(MARGIN_BOTTOM, 10);
-
- rich_text_editor->options->hide();
-}
-
-RichTextEditorPlugin::~RichTextEditorPlugin() {
-}
diff --git a/editor/plugins/rich_text_editor_plugin.h b/editor/plugins/rich_text_editor_plugin.h
deleted file mode 100644
index 8d42adc236..0000000000
--- a/editor/plugins/rich_text_editor_plugin.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*************************************************************************/
-/* rich_text_editor_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 RICH_TEXT_EDITOR_PLUGIN_H
-#define RICH_TEXT_EDITOR_PLUGIN_H
-
-#include "editor/editor_node.h"
-#include "editor/editor_plugin.h"
-#include "scene/gui/file_dialog.h"
-#include "scene/gui/rich_text_label.h"
-
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-
-class RichTextEditor : public Control {
-
- GDCLASS(RichTextEditor, Control);
-
- friend class RichTextEditorPlugin;
-
- enum {
-
- PARSE_BBCODE,
- CLEAR
- };
-
- Panel *panel;
- MenuButton *options;
- RichTextLabel *node;
- EditorFileDialog *file_dialog;
-
- void _file_selected(const String &p_path);
- void _menu_option(int p_option);
-
-protected:
- void _notification(int p_what);
- void _node_removed(Node *p_node);
- static void _bind_methods();
-
-public:
- void edit(Node *p_rich_text);
- RichTextEditor();
-};
-
-class RichTextEditorPlugin : public EditorPlugin {
-
- GDCLASS(RichTextEditorPlugin, EditorPlugin);
-
- RichTextEditor *rich_text_editor;
- EditorNode *editor;
-
-public:
- virtual String get_name() const { return "RichText"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
- virtual void make_visible(bool p_visible);
-
- RichTextEditorPlugin(EditorNode *p_node);
- ~RichTextEditorPlugin();
-};
-
-#endif // RICH_TEXT_EDITOR_PLUGIN_H
diff --git a/editor/plugins/sample_editor_plugin.cpp b/editor/plugins/sample_editor_plugin.cpp
deleted file mode 100644
index 739a8abb53..0000000000
--- a/editor/plugins/sample_editor_plugin.cpp
+++ /dev/null
@@ -1,452 +0,0 @@
-/*************************************************************************/
-/* sample_editor_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "sample_editor_plugin.h"
-
-#if 0
-#include "editor/editor_settings.h"
-#include "io/resource_loader.h"
-#include "project_settings.h"
-
-
-
-
-void SampleEditor::_gui_input(InputEvent p_event) {
-
-
-}
-
-void SampleEditor::_notification(int p_what) {
-
- if (p_what==NOTIFICATION_FIXED_PROCESS) {
-
- }
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
- play->set_icon( get_icon("Play","EditorIcons") );
- stop->set_icon( get_icon("Stop","EditorIcons") );
- }
-
- if (p_what==NOTIFICATION_READY) {
-
- //get_scene()->connect("node_removed",this,"_node_removed");
-
- }
-
- if (p_what==NOTIFICATION_DRAW) {
-
- }
-}
-
-void SampleEditor::_play_pressed() {
-
- player->play("default",true);
- stop->set_pressed(false);
- play->set_pressed(true);
-}
-void SampleEditor::_stop_pressed() {
-
- player->stop_all();
- play->set_pressed(false);
-}
-
-void SampleEditor::generate_preview_texture(const Ref<Sample>& p_sample,Ref<ImageTexture> &p_texture) {
-
-
- PoolVector<uint8_t> data = p_sample->get_data();
-
- PoolVector<uint8_t> img;
- int w = p_texture->get_width();
- int h = p_texture->get_height();
- img.resize(w*h*3);
- PoolVector<uint8_t>::Write imgdata = img.write();
- uint8_t * imgw = imgdata.ptr();
- PoolVector<uint8_t>::Read sampledata = data.read();
- const uint8_t *sdata=sampledata.ptr();
-
- bool stereo = p_sample->is_stereo();
- bool _16=p_sample->get_format()==Sample::FORMAT_PCM16;
- int len = p_sample->get_length();
-
- if (len<1)
- return;
-
- if (p_sample->get_format()==Sample::FORMAT_IMA_ADPCM) {
-
-
- struct IMA_ADPCM_State {
-
- int16_t step_index;
- int32_t predictor;
- /* values at loop point */
- int16_t loop_step_index;
- int32_t loop_predictor;
- int32_t last_nibble;
- int32_t loop_pos;
- int32_t window_ofs;
- const uint8_t *ptr;
- } ima_adpcm;
-
- ima_adpcm.step_index=0;
- ima_adpcm.predictor=0;
- ima_adpcm.loop_step_index=0;
- ima_adpcm.loop_predictor=0;
- ima_adpcm.last_nibble=-1;
- ima_adpcm.loop_pos=0x7FFFFFFF;
- ima_adpcm.window_ofs=0;
- ima_adpcm.ptr=NULL;
-
-
- for(int i=0;i<w;i++) {
-
- float max[2]={-1e10,-1e10};
- float min[2]={1e10,1e10};
- int from = i*len/w;
- int to = (i+1)*len/w;
- if (to>=len)
- to=len-1;
-
- for(int j=from;j<to;j++) {
-
- while(j>ima_adpcm.last_nibble) {
-
- static const int16_t _ima_adpcm_step_table[89] = {
- 7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
- 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
- 50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
- 130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
- 337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
- 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
- 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
- 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
- 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
- };
-
- static const int8_t _ima_adpcm_index_table[16] = {
- -1, -1, -1, -1, 2, 4, 6, 8,
- -1, -1, -1, -1, 2, 4, 6, 8
- };
-
- int16_t nibble,diff,step;
-
- ima_adpcm.last_nibble++;
- const uint8_t *src_ptr=sdata;
-
- int ofs = ima_adpcm.last_nibble>>1;
-
- if (stereo)
- ofs*=2;
-
- nibble = (ima_adpcm.last_nibble&1)?
- (src_ptr[ofs]>>4):(src_ptr[ofs]&0xF);
-
- step=_ima_adpcm_step_table[ima_adpcm.step_index];
-
- ima_adpcm.step_index += _ima_adpcm_index_table[nibble];
- if (ima_adpcm.step_index<0)
- ima_adpcm.step_index=0;
- if (ima_adpcm.step_index>88)
- ima_adpcm.step_index=88;
-
- diff = step >> 3 ;
- if (nibble & 1)
- diff += step >> 2 ;
- if (nibble & 2)
- diff += step >> 1 ;
- if (nibble & 4)
- diff += step ;
- if (nibble & 8)
- diff = -diff ;
-
- ima_adpcm.predictor+=diff;
- if (ima_adpcm.predictor<-0x8000)
- ima_adpcm.predictor=-0x8000;
- else if (ima_adpcm.predictor>0x7FFF)
- ima_adpcm.predictor=0x7FFF;
-
-
- /* store loop if there */
- if (ima_adpcm.last_nibble==ima_adpcm.loop_pos) {
-
- ima_adpcm.loop_step_index = ima_adpcm.step_index;
- ima_adpcm.loop_predictor = ima_adpcm.predictor;
- }
-
- }
-
- float v=ima_adpcm.predictor/32767.0;
- if (v>max[0])
- max[0]=v;
- if (v<min[0])
- min[0]=v;
- }
-
- for(int j=0;j<h;j++) {
- float v = (j/(float)h) * 2.0 - 1.0;
- uint8_t* imgofs = &imgw[(uint64_t(j)*w+i)*3];
- if (v>min[0] && v<max[0]) {
- imgofs[0]=255;
- imgofs[1]=150;
- imgofs[2]=80;
- } else {
- imgofs[0]=0;
- imgofs[1]=0;
- imgofs[2]=0;
- }
- }
- }
- } else {
- for(int i=0;i<w;i++) {
- // i trust gcc will optimize this loop
- float max[2]={-1e10,-1e10};
- float min[2]={1e10,1e10};
- int c=stereo?2:1;
- int from = uint64_t(i)*len/w;
- int to = (uint64_t(i)+1)*len/w;
- if (to>=len)
- to=len-1;
-
- if (_16) {
- const int16_t*src =(const int16_t*)sdata;
-
- for(int j=0;j<c;j++) {
-
- for(int k=from;k<=to;k++) {
-
- float v = src[uint64_t(k)*c+j]/32768.0;
- if (v>max[j])
- max[j]=v;
- if (v<min[j])
- min[j]=v;
- }
-
- }
- } else {
-
- const int8_t*src =(const int8_t*)sdata;
-
- for(int j=0;j<c;j++) {
-
- for(int k=from;k<=to;k++) {
-
- float v = src[uint64_t(k)*c+j]/128.0;
- if (v>max[j])
- max[j]=v;
- if (v<min[j])
- min[j]=v;
- }
-
- }
- }
-
- if (!stereo) {
- for(int j=0;j<h;j++) {
- float v = (j/(float)h) * 2.0 - 1.0;
- uint8_t* imgofs = &imgw[(uint64_t(j)*w+i)*3];
- if (v>min[0] && v<max[0]) {
- imgofs[0]=255;
- imgofs[1]=150;
- imgofs[2]=80;
- } else {
- imgofs[0]=0;
- imgofs[1]=0;
- imgofs[2]=0;
- }
- }
- } else {
-
- for(int j=0;j<h;j++) {
-
- int half;
- float v;
- if (j<(h/2)) {
- half=0;
- v = (j/(float)(h/2)) * 2.0 - 1.0;
- } else {
- half=1;
- v = ((j-(h/2))/(float)(h/2)) * 2.0 - 1.0;
- }
-
- uint8_t* imgofs = &imgw[(uint64_t(j)*w+i)*3];
- if (v>min[half] && v<max[half]) {
- imgofs[0]=255;
- imgofs[1]=150;
- imgofs[2]=80;
- } else {
- imgofs[0]=0;
- imgofs[1]=0;
- imgofs[2]=0;
- }
- }
-
- }
-
- }
- }
-
- imgdata = PoolVector<uint8_t>::Write();
-
-
- p_texture->set_data(Image(w,h,0,Image::FORMAT_RGB8,img));
-
-}
-
-void SampleEditor::_update_sample() {
-
- player->stop_all();
-
- generate_preview_texture(sample,peakdisplay);
- info_label->set_text(TTR("Length:")+" "+String::num(sample->get_length()/(float)sample->get_mix_rate(),2)+"s");
-
- if (library->has_sample("default"))
- library->remove_sample("default");
-
- library->add_sample("default",sample);
-}
-
-
-
-void SampleEditor::edit(Ref<Sample> p_sample) {
-
- sample=p_sample;
-
- if (!sample.is_null())
- _update_sample();
- else {
-
- hide();
- set_fixed_process(false);
- }
-
-}
-
-
-
-void SampleEditor::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("_gui_input"),&SampleEditor::_gui_input);
- ClassDB::bind_method(D_METHOD("_play_pressed"),&SampleEditor::_play_pressed);
- ClassDB::bind_method(D_METHOD("_stop_pressed"),&SampleEditor::_stop_pressed);
-
-}
-
-SampleEditor::SampleEditor() {
-
- player = memnew(SamplePlayer);
- add_child(player);
- add_style_override("panel", get_stylebox("panel","Panel"));
- library = Ref<SampleLibrary>(memnew(SampleLibrary));
- player->set_sample_library(library);
- sample_texframe = memnew( TextureRect );
- add_child(sample_texframe);
- sample_texframe->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_BEGIN,5);
- sample_texframe->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,5);
- sample_texframe->set_anchor_and_margin(MARGIN_TOP,ANCHOR_BEGIN,30);
- sample_texframe->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END,5);
-
- info_label = memnew( Label );
- sample_texframe->add_child(info_label);
- info_label->set_area_as_parent_rect();
- info_label->set_anchor_and_margin(MARGIN_TOP,ANCHOR_END,15);
- info_label->set_margin(MARGIN_BOTTOM,4);
- info_label->set_margin(MARGIN_RIGHT,4);
- info_label->set_align(Label::ALIGN_RIGHT);
-
-
- play = memnew( Button );
-
- play->set_position(Point2( 5, 5 ));
- play->set_size( Size2(1,1 ) );
- play->set_toggle_mode(true);
- add_child(play);
-
- stop = memnew( Button );
-
- stop->set_position(Point2( 35, 5 ));
- stop->set_size( Size2(1,1 ) );
- stop->set_toggle_mode(true);
- add_child(stop);
-
- peakdisplay=Ref<ImageTexture>( memnew( ImageTexture) );
- peakdisplay->create( EDITOR_DEF("editors/sample_editor/preview_width",512),EDITOR_DEF("editors/sample_editor/preview_height",128),Image::FORMAT_RGB8);
- sample_texframe->set_expand(true);
- sample_texframe->set_texture(peakdisplay);
-
- play->connect("pressed", this,"_play_pressed");
- stop->connect("pressed", this,"_stop_pressed");
-
- set_custom_minimum_size(Size2(1,150)*EDSCALE);
-
-}
-
-
-void SampleEditorPlugin::edit(Object *p_object) {
-
- Sample * s = p_object->cast_to<Sample>();
- if (!s)
- return;
-
- sample_editor->edit(Ref<Sample>(s));
-}
-
-bool SampleEditorPlugin::handles(Object *p_object) const {
-
- return p_object->is_class("Sample");
-}
-
-void SampleEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
- sample_editor->show();
- //sample_editor->set_process(true);
- } else {
-
- sample_editor->hide();
- //sample_editor->set_process(false);
- }
-
-}
-
-SampleEditorPlugin::SampleEditorPlugin(EditorNode *p_node) {
-
- editor=p_node;
- sample_editor = memnew( SampleEditor );
- add_control_to_container(CONTAINER_PROPERTY_EDITOR_BOTTOM,sample_editor);
- sample_editor->hide();
-
-
-
-}
-
-
-SampleEditorPlugin::~SampleEditorPlugin()
-{
-}
-
-#endif
diff --git a/editor/plugins/sample_editor_plugin.h b/editor/plugins/sample_editor_plugin.h
deleted file mode 100644
index 8f93026c92..0000000000
--- a/editor/plugins/sample_editor_plugin.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*************************************************************************/
-/* sample_editor_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 SAMPLE_EDITOR_PLUGIN_H
-#define SAMPLE_EDITOR_PLUGIN_H
-
-#if 0
-#include "editor/editor_node.h"
-#include "editor/editor_plugin.h"
-#include "scene/audio/sample_player.h"
-#include "scene/resources/sample.h"
-#include "scene/resources/sample_library.h"
-
-
-class SampleEditor : public Panel {
-
- GDCLASS(SampleEditor, Panel );
-
-
- SamplePlayer *player;
- Label *info_label;
- Ref<ImageTexture> peakdisplay;
- Ref<Sample> sample;
- Ref<SampleLibrary> library;
- TextureRect *sample_texframe;
- Button *stop;
- Button *play;
-
- void _play_pressed();
- void _stop_pressed();
- void _update_sample();
-
-protected:
- void _notification(int p_what);
- void _gui_input(InputEvent p_event);
- static void _bind_methods();
-public:
-
- static void generate_preview_texture(const Ref<Sample>& p_sample,Ref<ImageTexture> &p_texture);
- void edit(Ref<Sample> p_sample);
- SampleEditor();
-};
-
-
-class SampleEditorPlugin : public EditorPlugin {
-
- GDCLASS( SampleEditorPlugin, EditorPlugin );
-
- SampleEditor *sample_editor;
- EditorNode *editor;
-
-public:
-
- virtual String get_name() const { return "Sample"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
- virtual void make_visible(bool p_visible);
-
- SampleEditorPlugin(EditorNode *p_node);
- ~SampleEditorPlugin();
-
-};
-
-#endif
-
-#endif // SAMPLE_EDITOR_PLUGIN_H
diff --git a/editor/plugins/sample_library_editor_plugin.cpp b/editor/plugins/sample_library_editor_plugin.cpp
deleted file mode 100644
index 5ccfde15ff..0000000000
--- a/editor/plugins/sample_library_editor_plugin.cpp
+++ /dev/null
@@ -1,547 +0,0 @@
-/*************************************************************************/
-/* sample_library_editor_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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. */
-/*************************************************************************/
-
-#if 0
-#include "sample_library_editor_plugin.h"
-
-#include "editor/editor_settings.h"
-#include "io/resource_loader.h"
-#include "project_settings.h"
-#include "sample_editor_plugin.h"
-#include "scene/main/viewport.h"
-
-
-void SampleLibraryEditor::_gui_input(InputEvent p_event) {
-
-
-}
-
-void SampleLibraryEditor::_notification(int p_what) {
-
- if (p_what==NOTIFICATION_PROCESS) {
- if (is_playing && !player->is_active()) {
- TreeItem *tl=last_sample_playing->cast_to<TreeItem>();
- tl->set_button(0,0,get_icon("Play","EditorIcons"));
- is_playing = false;
- set_process(false);
- }
- }
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
- load->set_icon( get_icon("Folder","EditorIcons") );
- load->set_tooltip(TTR("Open Sample File(s)"));
- }
-
- if (p_what==NOTIFICATION_READY) {
-
- //NodePath("/root")->connect("node_removed", this,"_node_removed",Vector<Variant>(),true);
- }
-
- if (p_what==NOTIFICATION_DRAW) {
-
- }
-}
-
-void SampleLibraryEditor::_file_load_request(const PoolVector<String>& p_path) {
-
-
- for(int i=0;i<p_path.size();i++) {
-
- String path = p_path[i];
- Ref<Sample> sample = ResourceLoader::load(path,"Sample");
- if (sample.is_null()) {
- dialog->set_text(TTR("ERROR: Couldn't load sample!"));
- dialog->set_title(TTR("Error!"));
- //dialog->get_cancel()->set_text("Close");
- dialog->get_ok()->set_text(TTR("Close"));
- dialog->popup_centered_minsize();
- return; ///beh should show an error i guess
- }
- String basename = path.get_file().get_basename();
- String name=basename;
- int counter=0;
- while(sample_library->has_sample(name)) {
- counter++;
- name=basename+"_"+itos(counter);
- }
-
- undo_redo->create_action(TTR("Add Sample"));
- undo_redo->add_do_method(sample_library.operator->(),"add_sample",name,sample);
- undo_redo->add_undo_method(sample_library.operator->(),"remove_sample",name);
- undo_redo->add_do_method(this,"_update_library");
- undo_redo->add_undo_method(this,"_update_library");
- undo_redo->commit_action();
- }
-}
-
-void SampleLibraryEditor::_load_pressed() {
-
- file->popup_centered_ratio();
-
-}
-
-void SampleLibraryEditor::_button_pressed(Object *p_item,int p_column, int p_id) {
-
- TreeItem *ti=p_item->cast_to<TreeItem>();
- String name = ti->get_text(0);
-
- if (p_column==0) { // Play/Stop
-
- String btn_type;
- if(!is_playing) {
- is_playing = true;
- btn_type = TTR("Stop");
- player->play(name,true);
- last_sample_playing = p_item;
- set_process(true);
- } else {
- player->stop_all();
- if(last_sample_playing != p_item){
- TreeItem *tl=last_sample_playing->cast_to<TreeItem>();
- tl->set_button(p_column,0,get_icon("Play","EditorIcons"));
- btn_type = TTR("Stop");
- player->play(name,true);
- last_sample_playing = p_item;
- } else {
- btn_type = TTR("Play");
- is_playing = false;
- }
- }
- ti->set_button(p_column,0,get_icon(btn_type,"EditorIcons"));
- } else if (p_column==1) { // Edit
-
- get_tree()->get_root()->get_child(0)->call("_resource_selected",sample_library->get_sample(name));
- } else if (p_column==5) { // Delete
-
- ti->select(0);
- _delete_pressed();
- }
-
-
-}
-
-
-
-
-
-void SampleLibraryEditor::_item_edited() {
-
- if (!tree->get_selected())
- return;
-
- TreeItem *s = tree->get_selected();
-
- if (tree->get_selected_column()==0) { // Name
- // renamed
- String old_name=s->get_metadata(0);
- String new_name=s->get_text(0);
- if (old_name==new_name)
- return;
-
- if (new_name=="" || new_name.find("\\")!=-1 || new_name.find("/")!=-1 || sample_library->has_sample(new_name)) {
-
- s->set_text(0,old_name);
- return;
- }
-
- Ref<Sample> samp = sample_library->get_sample(old_name);
- undo_redo->create_action(TTR("Rename Sample"));
- undo_redo->add_do_method(sample_library.operator->(),"remove_sample",old_name);
- undo_redo->add_do_method(sample_library.operator->(),"add_sample",new_name,samp);
- undo_redo->add_undo_method(sample_library.operator->(),"remove_sample",new_name);
- undo_redo->add_undo_method(sample_library.operator->(),"add_sample",old_name,samp);
- undo_redo->add_do_method(this,"_update_library");
- undo_redo->add_undo_method(this,"_update_library");
- undo_redo->commit_action();
-
- } else if (tree->get_selected_column()==3) { // Volume dB
-
- StringName n = s->get_text(0);
- sample_library->sample_set_volume_db(n,s->get_range(3));
-
- } else if (tree->get_selected_column()==4) { // Pitch scale
-
- StringName n = s->get_text(0);
- sample_library->sample_set_pitch_scale(n,s->get_range(4));
-
- }
-
-
-}
-
-void SampleLibraryEditor::_delete_pressed() {
-
- if (!tree->get_selected())
- return;
-
- String to_remove = tree->get_selected()->get_text(0);
- undo_redo->create_action(TTR("Delete Sample"));
- undo_redo->add_do_method(sample_library.operator->(),"remove_sample",to_remove);
- undo_redo->add_undo_method(sample_library.operator->(),"add_sample",to_remove,sample_library->get_sample(to_remove));
- undo_redo->add_do_method(this,"_update_library");
- undo_redo->add_undo_method(this,"_update_library");
- undo_redo->commit_action();
-}
-
-
-void SampleLibraryEditor::_update_library() {
-
- player->stop_all();
-
- tree->clear();
- tree->set_hide_root(true);
- TreeItem *root = tree->create_item(NULL);
-
- List<StringName> names;
- sample_library->get_sample_list(&names);
- names.sort_custom<StringName::AlphCompare>();
-
- for(List<StringName>::Element *E=names.front();E;E=E->next()) {
-
- TreeItem *ti = tree->create_item(root);
-
- // Name + Play/Stop
- ti->set_cell_mode(0,TreeItem::CELL_MODE_STRING);
- ti->set_editable(0,true);
- ti->set_selectable(0,true);
- ti->set_text(0,E->get());
- ti->set_metadata(0,E->get());
- ti->add_button(0,get_icon("Play","EditorIcons"));
-
- Ref<Sample> smp = sample_library->get_sample(E->get());
-
- // Preview/edit
- Ref<ImageTexture> preview( memnew( ImageTexture ));
- preview->create(128,16,Image::FORMAT_RGB8);
- SampleEditor::generate_preview_texture(smp,preview);
- ti->set_cell_mode(1,TreeItem::CELL_MODE_ICON);
- ti->set_selectable(1,false);
- ti->set_editable(1,false);
- ti->set_icon(1,preview);
- ti->add_button(1,get_icon("Edit","EditorIcons"));
-
- // Format
- ti->set_cell_mode(2,TreeItem::CELL_MODE_STRING);
- ti->set_editable(2,false);
- ti->set_selectable(2,false);
- ti->set_text(2,String()+(smp->get_format()==Sample::FORMAT_PCM16?TTR("16 Bits")+", ":(smp->get_format()==Sample::FORMAT_PCM8?TTR("8 Bits")+", ":"IMA-ADPCM,"))+(smp->is_stereo()?TTR("Stereo"):TTR("Mono")));
-
- // Volume dB
- ti->set_cell_mode(3,TreeItem::CELL_MODE_RANGE);
- ti->set_range_config(3,-60,24,0.01);
- ti->set_selectable(3,true);
- ti->set_editable(3,true);
- ti->set_range(3,sample_library->sample_get_volume_db(E->get()));
-
- // Pitch scale
- ti->set_cell_mode(4,TreeItem::CELL_MODE_RANGE);
- ti->set_range_config(4,0.01,100,0.01);
- ti->set_selectable(4,true);
- ti->set_editable(4,true);
- ti->set_range(4,sample_library->sample_get_pitch_scale(E->get()));
-
- // Delete
- ti->set_cell_mode(5,TreeItem::CELL_MODE_STRING);
- ti->add_button(5,get_icon("Remove","EditorIcons"));
-
- }
-
- //player->add_sample("default",sample);
-}
-
-
-
-void SampleLibraryEditor::edit(Ref<SampleLibrary> p_sample_library) {
-
- sample_library=p_sample_library;
-
-
- if (!sample_library.is_null()) {
- player->set_sample_library(sample_library);
- _update_library();
- } else {
-
- hide();
- }
-
-}
-
-Variant SampleLibraryEditor::get_drag_data_fw(const Point2& p_point,Control* p_from) {
-
- TreeItem*ti =tree->get_item_at_pos(p_point);
- if (!ti)
- return Variant();
-
- String name = ti->get_metadata(0);
-
- RES res = sample_library->get_sample(name);
- if (!res.is_valid())
- return Variant();
-
- return EditorNode::get_singleton()->drag_resource(res,p_from);
-
-
-}
-
-bool SampleLibraryEditor::can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const {
-
-
-
- Dictionary d = p_data;
-
- if (!d.has("type"))
- return false;
-
- if (d.has("from") && (Object*)(d["from"])==tree)
- return false;
-
- if (String(d["type"])=="resource" && d.has("resource")) {
- RES r=d["resource"];
-
- Ref<Sample> sample = r;
-
- if (sample.is_valid()) {
-
- return true;
- }
- }
-
-
- if (String(d["type"])=="files") {
-
- Vector<String> files = d["files"];
-
- if (files.size()==0)
- return false;
-
- for(int i=0;i<files.size();i++) {
- String file = files[0];
- String ftype = EditorFileSystem::get_singleton()->get_file_type(file);
-
- if (ftype!="Sample") {
- return false;
- }
-
- }
-
- return true;
-
- }
- return false;
-}
-
-void SampleLibraryEditor::drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) {
-
- if (!can_drop_data_fw(p_point,p_data,p_from))
- return;
-
- Dictionary d = p_data;
-
- if (!d.has("type"))
- return;
-
-
- if (String(d["type"])=="resource" && d.has("resource")) {
- RES r=d["resource"];
-
- Ref<Sample> sample = r;
-
- if (sample.is_valid()) {
-
- String basename;
- if (sample->get_name()!="") {
- basename=sample->get_name();
- } else if (sample->get_path().is_resource_file()) {
- basename = sample->get_path().get_basename();
- } else {
- basename="Sample";
- }
-
- String name=basename;
- int counter=0;
- while(sample_library->has_sample(name)) {
- counter++;
- name=basename+"_"+itos(counter);
- }
-
- undo_redo->create_action(TTR("Add Sample"));
- undo_redo->add_do_method(sample_library.operator->(),"add_sample",name,sample);
- undo_redo->add_undo_method(sample_library.operator->(),"remove_sample",name);
- undo_redo->add_do_method(this,"_update_library");
- undo_redo->add_undo_method(this,"_update_library");
- undo_redo->commit_action();
- }
- }
-
-
- if (String(d["type"])=="files") {
-
- PoolVector<String> files = d["files"];
-
- _file_load_request(files);
-
- }
-
-}
-
-
-void SampleLibraryEditor::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("_gui_input"),&SampleLibraryEditor::_gui_input);
- ClassDB::bind_method(D_METHOD("_load_pressed"),&SampleLibraryEditor::_load_pressed);
- ClassDB::bind_method(D_METHOD("_item_edited"),&SampleLibraryEditor::_item_edited);
- ClassDB::bind_method(D_METHOD("_delete_pressed"),&SampleLibraryEditor::_delete_pressed);
- ClassDB::bind_method(D_METHOD("_file_load_request"),&SampleLibraryEditor::_file_load_request);
- ClassDB::bind_method(D_METHOD("_update_library"),&SampleLibraryEditor::_update_library);
- ClassDB::bind_method(D_METHOD("_button_pressed"),&SampleLibraryEditor::_button_pressed);
-
- ClassDB::bind_method(D_METHOD("get_drag_data_fw"), &SampleLibraryEditor::get_drag_data_fw);
- ClassDB::bind_method(D_METHOD("can_drop_data_fw"), &SampleLibraryEditor::can_drop_data_fw);
- ClassDB::bind_method(D_METHOD("drop_data_fw"), &SampleLibraryEditor::drop_data_fw);
-
-}
-
-SampleLibraryEditor::SampleLibraryEditor() {
-
- player = memnew(SamplePlayer);
- add_child(player);
- add_style_override("panel", get_stylebox("panel","Panel"));
-
-
- load = memnew( Button );
- load->set_position(Point2( 5, 5 ));
- load->set_size( Size2(1,1 ) );
- add_child(load);
-
- file = memnew( EditorFileDialog );
- add_child(file);
- List<String> extensions;
- ResourceLoader::get_recognized_extensions_for_type("Sample",&extensions);
- for(int i=0;i<extensions.size();i++)
- file->add_filter("*."+extensions[i]);
- file->set_mode(EditorFileDialog::MODE_OPEN_FILES);
-
- tree = memnew( Tree );
- tree->set_columns(6);
- add_child(tree);
- tree->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_BEGIN,5);
- tree->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,5);
- tree->set_anchor_and_margin(MARGIN_TOP,ANCHOR_BEGIN,30);
- tree->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END,5);
- tree->set_column_titles_visible(true);
- tree->set_column_title(0,TTR("Name"));
- tree->set_column_title(1,TTR("Preview"));
- tree->set_column_title(2,TTR("Format"));
- tree->set_column_title(3,"dB");
- tree->set_column_title(4,TTR("Pitch"));
- tree->set_column_title(5,"");
-
- tree->set_column_min_width(1,150);
- tree->set_column_min_width(2,100);
- tree->set_column_min_width(3,50);
- tree->set_column_min_width(4,50);
- tree->set_column_min_width(5,32);
- tree->set_column_expand(1,false);
- tree->set_column_expand(2,false);
- tree->set_column_expand(3,false);
- tree->set_column_expand(4,false);
- tree->set_column_expand(5,false);
-
- tree->set_drag_forwarding(this);
-
- dialog = memnew( ConfirmationDialog );
- add_child( dialog );
-
- tree->connect("button_pressed",this,"_button_pressed");
- load->connect("pressed", this,"_load_pressed");
- file->connect("files_selected", this,"_file_load_request");
- tree->connect("item_edited", this,"_item_edited");
-
- is_playing = false;
-}
-
-
-void SampleLibraryEditorPlugin::edit(Object *p_object) {
-
- sample_library_editor->set_undo_redo(&get_undo_redo());
- SampleLibrary * s = p_object->cast_to<SampleLibrary>();
- if (!s)
- return;
-
- sample_library_editor->edit(Ref<SampleLibrary>(s));
-}
-
-bool SampleLibraryEditorPlugin::handles(Object *p_object) const {
-
- return p_object->is_class("SampleLibrary");
-}
-
-void SampleLibraryEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
- //sample_library_editor->show();
- button->show();
- editor->make_bottom_panel_item_visible(sample_library_editor);
- //sample_library_editor->set_process(true);
- } else {
-
- if (sample_library_editor->is_visible_in_tree())
- editor->hide_bottom_panel();
- button->hide();
-
- //sample_library_editor->set_process(false);
- }
-
-}
-
-SampleLibraryEditorPlugin::SampleLibraryEditorPlugin(EditorNode *p_node) {
-
- editor=p_node;
- sample_library_editor = memnew( SampleLibraryEditor );
-
- //editor->get_viewport()->add_child(sample_library_editor);
- sample_library_editor->set_custom_minimum_size(Size2(0,250));
- button=p_node->add_bottom_panel_item("SampleLibrary",sample_library_editor);
- button->hide();
-
- //sample_library_editor->set_area_as_parent_rect();
- //sample_library_editor->set_anchor( MARGIN_TOP, Control::ANCHOR_END);
- //sample_library_editor->set_margin( MARGIN_TOP, 120 );
- //sample_library_editor->hide();
-
-
-
-}
-
-
-SampleLibraryEditorPlugin::~SampleLibraryEditorPlugin()
-{
-}
-#endif
diff --git a/editor/plugins/sample_library_editor_plugin.h b/editor/plugins/sample_library_editor_plugin.h
deleted file mode 100644
index 0244fa66ed..0000000000
--- a/editor/plugins/sample_library_editor_plugin.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*************************************************************************/
-/* sample_library_editor_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 SAMPLE_LIBRARY_EDITOR_PLUGIN_H
-#define SAMPLE_LIBRARY_EDITOR_PLUGIN_H
-
-#if 0
-#include "editor/editor_node.h"
-#include "editor/editor_plugin.h"
-#include "scene/audio/sample_player.h"
-#include "scene/gui/dialogs.h"
-#include "scene/gui/file_dialog.h"
-#include "scene/gui/tree.h"
-#include "scene/resources/sample.h"
-
-
-class SampleLibraryEditor : public Panel {
-
- GDCLASS(SampleLibraryEditor, Panel );
-
-
-
- SamplePlayer *player;
- Ref<SampleLibrary> sample_library;
- Button *load;
- Tree *tree;
- bool is_playing;
- Object *last_sample_playing;
-
- EditorFileDialog *file;
-
- ConfirmationDialog *dialog;
-
-
- void _load_pressed();
- void _file_load_request(const PoolVector<String>& p_path);
- void _delete_pressed();
- void _update_library();
- void _item_edited();
-
- UndoRedo *undo_redo;
-
- void _button_pressed(Object *p_item,int p_column, int p_id);
-
- Variant get_drag_data_fw(const Point2& p_point,Control* p_from);
- bool can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const;
- void drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from);
-
-protected:
- void _notification(int p_what);
- void _gui_input(InputEvent p_event);
- static void _bind_methods();
-public:
-
- void set_undo_redo(UndoRedo *p_undo_redo) {undo_redo=p_undo_redo; }
- void edit(Ref<SampleLibrary> p_sample);
- SampleLibraryEditor();
-};
-
-class SampleLibraryEditorPlugin : public EditorPlugin {
-
- GDCLASS( SampleLibraryEditorPlugin, EditorPlugin );
-
- SampleLibraryEditor *sample_library_editor;
- EditorNode *editor;
- Button *button;
-
-public:
-
- virtual String get_name() const { return "SampleLibrary"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
- virtual void make_visible(bool p_visible);
-
- SampleLibraryEditorPlugin(EditorNode *p_node);
- ~SampleLibraryEditorPlugin();
-
-};
-
-#endif
-#endif // SAMPLE_LIBRARY_EDITOR_PLUGIN_H
diff --git a/editor/plugins/sample_player_editor_plugin.cpp b/editor/plugins/sample_player_editor_plugin.cpp
deleted file mode 100644
index 25f1fe9e17..0000000000
--- a/editor/plugins/sample_player_editor_plugin.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/*************************************************************************/
-/* sample_player_editor_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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. */
-/*************************************************************************/
-
-#if 0
-#include "sample_player_editor_plugin.h"
-
-#include "scene/resources/sample_library.h"
-
-
-void SamplePlayerEditor::_notification(int p_what) {
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
- play->set_icon( get_icon("Play","EditorIcons") );
- stop->set_icon( get_icon("Stop","EditorIcons") );
- }
-
-}
-
-void SamplePlayerEditor::_node_removed(Node *p_node) {
-
- if(p_node==node) {
- node=NULL;
- hide();
- }
-
-}
-
-void SamplePlayerEditor::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("_play"),&SamplePlayerEditor::_play);
- ClassDB::bind_method(D_METHOD("_stop"),&SamplePlayerEditor::_stop);
-
-}
-
-
-void SamplePlayerEditor::_play() {
-
- if (!node)
- return;
- if (samples->get_item_count()<=0)
- return;
-
- node->call("play",samples->get_item_text( samples->get_selected() ));
- stop->set_pressed(false);
- play->set_pressed(true);
-}
-
-void SamplePlayerEditor::_stop() {
-
- if (!node)
- return;
- if (samples->get_item_count()<=0)
- return;
-
- node->call("stop_all");
- print_line("STOP ALL!!");
- stop->set_pressed(true);
- play->set_pressed(false);
-
-}
-
-
-void SamplePlayerEditor::_update_sample_library() {
-
- samples->clear();
- Ref<SampleLibrary> sl = node->call("get_sample_library");
- if (sl.is_null()) {
- samples->add_item("<NO SAMPLE LIBRARY>");
- return; //no sample library;
- }
-
- List<StringName> samplenames;
- sl->get_sample_list(&samplenames);
- samplenames.sort_custom<StringName::AlphCompare>();
- for(List<StringName>::Element *E=samplenames.front();E;E=E->next()) {
- samples->add_item(E->get());
- }
-
-}
-
-void SamplePlayerEditor::edit(Node *p_sample_player) {
-
- node=p_sample_player;
- if (node) {
- _update_sample_library();
- }
-
-}
-SamplePlayerEditor::SamplePlayerEditor() {
-
-
- play = memnew( Button );
-
- play->set_position(Point2( 5, 5 ));
- play->set_toggle_mode(true);
- play->set_anchor_and_margin(MARGIN_LEFT,Control::ANCHOR_END,250);
- play->set_anchor_and_margin(MARGIN_RIGHT,Control::ANCHOR_END,230);
- play->set_anchor_and_margin(MARGIN_TOP,Control::ANCHOR_BEGIN,0);
- play->set_anchor_and_margin(MARGIN_BOTTOM,Control::ANCHOR_BEGIN,0);
-
- add_child(play);
-
- stop = memnew( Button );
-
- stop->set_position(Point2( 35, 5 ));
- stop->set_toggle_mode(true);
- stop->set_anchor_and_margin(MARGIN_LEFT,Control::ANCHOR_END,220);
- stop->set_anchor_and_margin(MARGIN_RIGHT,Control::ANCHOR_END,200);
- stop->set_anchor_and_margin(MARGIN_TOP,Control::ANCHOR_BEGIN,0);
- stop->set_anchor_and_margin(MARGIN_BOTTOM,Control::ANCHOR_BEGIN,0);
- add_child(stop);
-
- samples = memnew( OptionButton );
- samples->set_anchor_and_margin(MARGIN_LEFT,Control::ANCHOR_END,190);
- samples->set_anchor_and_margin(MARGIN_RIGHT,Control::ANCHOR_END,5);
- samples->set_anchor_and_margin(MARGIN_TOP,Control::ANCHOR_BEGIN,0);
- samples->set_anchor_and_margin(MARGIN_BOTTOM,Control::ANCHOR_BEGIN,0);
- add_child(samples);
-
- play->connect("pressed", this,"_play");
- stop->connect("pressed", this,"_stop");
-
-}
-
-
-void SamplePlayerEditorPlugin::edit(Object *p_object) {
-
- sample_player_editor->edit(p_object->cast_to<Node>());
-}
-
-bool SamplePlayerEditorPlugin::handles(Object *p_object) const {
-
- return p_object->is_class("SamplePlayer2D") || p_object->is_class("SamplePlayer") || p_object->is_class("SpatialSamplePlayer");
-}
-
-void SamplePlayerEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
- sample_player_editor->show();
- sample_player_editor->set_fixed_process(true);
- } else {
-
- sample_player_editor->hide();
- sample_player_editor->set_fixed_process(false);
- sample_player_editor->edit(NULL);
- }
-
-}
-
-SamplePlayerEditorPlugin::SamplePlayerEditorPlugin(EditorNode *p_node) {
-
- editor=p_node;
- sample_player_editor = memnew( SamplePlayerEditor );
- editor->get_viewport()->add_child(sample_player_editor);
-
- sample_player_editor->set_anchor(MARGIN_LEFT,Control::ANCHOR_END);
- sample_player_editor->set_anchor(MARGIN_RIGHT,Control::ANCHOR_END);
- sample_player_editor->set_margin(MARGIN_LEFT,250);
- sample_player_editor->set_margin(MARGIN_RIGHT,0);
- sample_player_editor->set_margin(MARGIN_TOP,0);
- sample_player_editor->set_margin(MARGIN_BOTTOM,10);
-
-
- sample_player_editor->hide();
-
-
-
-}
-
-
-SamplePlayerEditorPlugin::~SamplePlayerEditorPlugin()
-{
-}
-
-#endif
diff --git a/editor/plugins/sample_player_editor_plugin.h b/editor/plugins/sample_player_editor_plugin.h
deleted file mode 100644
index 5c1b25aaa2..0000000000
--- a/editor/plugins/sample_player_editor_plugin.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*************************************************************************/
-/* sample_player_editor_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 SAMPLE_PLAYER_EDITOR_PLUGIN_H
-#define SAMPLE_PLAYER_EDITOR_PLUGIN_H
-
-#if 0
-
-#include "editor/editor_node.h"
-#include "editor/editor_plugin.h"
-#include "scene/3d/spatial_sample_player.h"
-#include "scene/audio/sample_player.h"
-#include "scene/gui/option_button.h"
-
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-
-class SamplePlayerEditor : public Control {
-
- GDCLASS(SamplePlayerEditor, Control );
-
- Panel *panel;
- Button * play;
- Button * stop;
- OptionButton *samples;
- Node *node;
-
-
- void _update_sample_library();
- void _play();
- void _stop();
-
-protected:
- void _notification(int p_what);
- void _node_removed(Node *p_node);
- static void _bind_methods();
-public:
-
- void edit(Node *p_sample_player);
- SamplePlayerEditor();
-};
-
-class SamplePlayerEditorPlugin : public EditorPlugin {
-
- GDCLASS( SamplePlayerEditorPlugin, EditorPlugin );
-
- SamplePlayerEditor *sample_player_editor;
- EditorNode *editor;
-
-public:
-
- virtual String get_name() const { return "SamplePlayer"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
- virtual void make_visible(bool p_visible);
-
- SamplePlayerEditorPlugin(EditorNode *p_node);
- ~SamplePlayerEditorPlugin();
-
-};
-
-#endif
-#endif // SAMPLE_PLAYER_EDITOR_PLUGIN_H
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index 1873a3f58b..cb86540cd2 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,16 +29,17 @@
/*************************************************************************/
#include "script_editor_plugin.h"
+#include "core/io/resource_loader.h"
+#include "core/io/resource_saver.h"
+#include "core/os/file_access.h"
+#include "core/os/input.h"
+#include "core/os/keyboard.h"
+#include "core/os/os.h"
+#include "core/project_settings.h"
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
+#include "editor/node_dock.h"
#include "editor/script_editor_debugger.h"
-#include "io/resource_loader.h"
-#include "io/resource_saver.h"
-#include "os/file_access.h"
-#include "os/input.h"
-#include "os/keyboard.h"
-#include "os/os.h"
-#include "project_settings.h"
#include "scene/main/viewport.h"
/*** SCRIPT EDITOR ****/
@@ -46,6 +47,7 @@
void ScriptEditorBase::_bind_methods() {
ADD_SIGNAL(MethodInfo("name_changed"));
+ ADD_SIGNAL(MethodInfo("edited_script_changed"));
ADD_SIGNAL(MethodInfo("request_help_search", PropertyInfo(Variant::STRING, "topic")));
ADD_SIGNAL(MethodInfo("request_help_index"));
ADD_SIGNAL(MethodInfo("request_open_script_at_line", PropertyInfo(Variant::OBJECT, "script"), PropertyInfo(Variant::INT, "line")));
@@ -255,7 +257,7 @@ ScriptEditor *ScriptEditor::script_editor = NULL;
String ScriptEditor::_get_debug_tooltip(const String &p_text, Node *_se) {
- //ScriptEditorBase *se=_se->cast_to<ScriptEditorBase>();
+ //ScriptEditorBase *se=Object::cast_to<ScriptEditorBase>(_se);
String val = debugger->get_var_value(p_text);
if (val != String()) {
@@ -279,7 +281,7 @@ void ScriptEditor::_breaked(bool p_breaked, bool p_can_debug) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se) {
continue;
@@ -304,7 +306,7 @@ void ScriptEditor::_goto_script_line2(int p_line) {
if (selected < 0 || selected >= tab_container->get_child_count())
return;
- ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
if (!current)
return;
@@ -317,7 +319,7 @@ void ScriptEditor::_goto_script_line(REF p_script, int p_line) {
if (bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) {
- Ref<Script> script = p_script->cast_to<Script>();
+ Ref<Script> script = Object::cast_to<Script>(*p_script);
if (!script.is_null() && script->get_path().is_resource_file())
edit(p_script, p_line, 0);
}
@@ -326,7 +328,7 @@ void ScriptEditor::_goto_script_line(REF p_script, int p_line) {
if (selected < 0 || selected >= tab_container->get_child_count())
return;
- ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
if (!current)
return;
@@ -345,13 +347,13 @@ void ScriptEditor::_save_history() {
Node *n = tab_container->get_current_tab_control();
- if (n->cast_to<ScriptEditorBase>()) {
+ if (Object::cast_to<ScriptEditorBase>(n)) {
- history[history_pos].state = n->cast_to<ScriptEditorBase>()->get_edit_state();
+ history[history_pos].state = Object::cast_to<ScriptEditorBase>(n)->get_edit_state();
}
- if (n->cast_to<EditorHelp>()) {
+ if (Object::cast_to<EditorHelp>(n)) {
- history[history_pos].state = n->cast_to<EditorHelp>()->get_scroll();
+ history[history_pos].state = Object::cast_to<EditorHelp>(n)->get_scroll();
}
}
@@ -368,10 +370,7 @@ void ScriptEditor::_save_history() {
void ScriptEditor::_go_to_tab(int p_idx) {
- Node *cn = tab_container->get_child(p_idx);
- if (!cn)
- return;
- Control *c = cn->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(tab_container->get_child(p_idx));
if (!c)
return;
@@ -379,13 +378,13 @@ void ScriptEditor::_go_to_tab(int p_idx) {
Node *n = tab_container->get_current_tab_control();
- if (n->cast_to<ScriptEditorBase>()) {
+ if (Object::cast_to<ScriptEditorBase>(n)) {
- history[history_pos].state = n->cast_to<ScriptEditorBase>()->get_edit_state();
+ history[history_pos].state = Object::cast_to<ScriptEditorBase>(n)->get_edit_state();
}
- if (n->cast_to<EditorHelp>()) {
+ if (Object::cast_to<EditorHelp>(n)) {
- history[history_pos].state = n->cast_to<EditorHelp>()->get_scroll();
+ history[history_pos].state = Object::cast_to<EditorHelp>(n)->get_scroll();
}
}
@@ -401,21 +400,21 @@ void ScriptEditor::_go_to_tab(int p_idx) {
c = tab_container->get_current_tab_control();
- if (c->cast_to<ScriptEditorBase>()) {
+ if (Object::cast_to<ScriptEditorBase>(c)) {
- script_name_label->set_text(c->cast_to<ScriptEditorBase>()->get_name());
- script_icon->set_texture(c->cast_to<ScriptEditorBase>()->get_icon());
+ script_name_label->set_text(Object::cast_to<ScriptEditorBase>(c)->get_name());
+ script_icon->set_texture(Object::cast_to<ScriptEditorBase>(c)->get_icon());
if (is_visible_in_tree())
- c->cast_to<ScriptEditorBase>()->ensure_focus();
+ Object::cast_to<ScriptEditorBase>(c)->ensure_focus();
- notify_script_changed(c->cast_to<ScriptEditorBase>()->get_edited_script());
+ notify_script_changed(Object::cast_to<ScriptEditorBase>(c)->get_edited_script());
}
- if (c->cast_to<EditorHelp>()) {
+ if (Object::cast_to<EditorHelp>(c)) {
- script_name_label->set_text(c->cast_to<EditorHelp>()->get_class());
+ script_name_label->set_text(Object::cast_to<EditorHelp>(c)->get_class());
script_icon->set_texture(get_icon("Help", "EditorIcons"));
if (is_visible_in_tree())
- c->cast_to<EditorHelp>()->set_focused();
+ Object::cast_to<EditorHelp>(c)->set_focused();
}
c->set_meta("__editor_pass", ++edit_pass);
@@ -507,7 +506,7 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) {
return;
Node *tselected = tab_container->get_child(selected);
- ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
if (current) {
_add_recent_script(current->get_edited_script()->get_path());
if (p_save) {
@@ -516,7 +515,7 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) {
current->clear_edit_menu();
notify_script_close(current->get_edited_script());
} else {
- EditorHelp *help = tab_container->get_child(selected)->cast_to<EditorHelp>();
+ EditorHelp *help = Object::cast_to<EditorHelp>(tab_container->get_child(selected));
_add_recent_script(help->get_class());
}
@@ -574,7 +573,7 @@ void ScriptEditor::_close_docs_tab() {
int child_count = tab_container->get_child_count();
for (int i = child_count - 1; i >= 0; i--) {
- EditorHelp *se = tab_container->get_child(i)->cast_to<EditorHelp>();
+ EditorHelp *se = Object::cast_to<EditorHelp>(tab_container->get_child(i));
if (se) {
_close_tab(i);
@@ -588,7 +587,7 @@ void ScriptEditor::_close_all_tabs() {
for (int i = child_count - 1; i >= 0; i--) {
tab_container->set_current_tab(i);
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (se) {
@@ -604,7 +603,7 @@ void ScriptEditor::_close_all_tabs() {
}
void ScriptEditor::_ask_close_current_unsaved_tab(ScriptEditorBase *current) {
- erase_tab_confirm->set_text("Close and save changes?\n\"" + current->get_name() + "\"");
+ erase_tab_confirm->set_text(TTR("Close and save changes?\n\"") + current->get_name() + "\"");
erase_tab_confirm->popup_centered_minsize();
}
@@ -614,7 +613,7 @@ void ScriptEditor::_resave_scripts(const String &p_str) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
@@ -646,7 +645,7 @@ void ScriptEditor::_reload_scripts() {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se) {
continue;
@@ -683,7 +682,7 @@ void ScriptEditor::_res_saved_callback(const Ref<Resource> &p_res) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se) {
continue;
@@ -726,7 +725,7 @@ bool ScriptEditor::_test_script_times_on_disk(Ref<Script> p_for_script) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (se) {
Ref<Script> script = se->get_edited_script();
@@ -790,7 +789,7 @@ Ref<Script> ScriptEditor::_get_current_script() {
if (selected < 0 || selected >= tab_container->get_child_count())
return NULL;
- ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
if (current) {
return current->get_edited_script();
} else {
@@ -864,7 +863,7 @@ void ScriptEditor::_menu_option(int p_option) {
String current;
if (tab_container->get_tab_count() > 0) {
- EditorHelp *eh = tab_container->get_child(tab_container->get_current_tab())->cast_to<EditorHelp>();
+ EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(tab_container->get_current_tab()));
if (eh) {
current = eh->get_class();
}
@@ -918,7 +917,7 @@ void ScriptEditor::_menu_option(int p_option) {
if (selected < 0 || selected >= tab_container->get_child_count())
return;
- ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
if (current) {
switch (p_option) {
@@ -955,7 +954,7 @@ void ScriptEditor::_menu_option(int p_option) {
current->convert_indent_to_tabs();
}
}
- editor->push_item(current->get_edited_script()->cast_to<Object>());
+ editor->push_item(Object::cast_to<Object>(current->get_edited_script().ptr()));
editor->save_resource_as(current->get_edited_script());
} break;
@@ -966,7 +965,33 @@ void ScriptEditor::_menu_option(int p_option) {
current->reload(p_option == FILE_TOOL_RELOAD_SOFT);
} break;
+ case FILE_RUN: {
+
+ Ref<Script> scr = current->get_edited_script();
+ if (scr.is_null()) {
+ EditorNode::get_singleton()->show_warning("Can't obtain the script for running");
+ break;
+ }
+ if (!scr->is_tool()) {
+
+ 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");
+ return;
+ }
+
+ Ref<EditorScript> es = memnew(EditorScript);
+ es->set_script(scr.get_ref_ptr());
+ es->set_editor(EditorNode::get_singleton());
+ es->_run();
+
+ EditorNode::get_undo_redo()->clear_history();
+ } break;
case FILE_CLOSE: {
if (current->is_unsaved()) {
_ask_close_current_unsaved_tab(current);
@@ -1034,7 +1059,7 @@ void ScriptEditor::_menu_option(int p_option) {
}
} else {
- EditorHelp *help = tab_container->get_current_tab_control()->cast_to<EditorHelp>();
+ EditorHelp *help = Object::cast_to<EditorHelp>(tab_container->get_current_tab_control());
if (help) {
switch (p_option) {
@@ -1125,10 +1150,6 @@ void ScriptEditor::_notification(int p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
tab_container->add_style_override("panel", editor->get_gui_base()->get_stylebox("ScriptPanel", "EditorStyles"));
-
- Ref<StyleBox> sb = editor->get_gui_base()->get_stylebox("panel", "TabContainer")->duplicate();
- sb->set_default_margin(MARGIN_TOP, 0);
- add_style_override("panel", sb);
} break;
default:
@@ -1142,7 +1163,7 @@ bool ScriptEditor::can_take_away_focus() const {
if (selected < 0 || selected >= tab_container->get_child_count())
return true;
- ScriptEditorBase *current = tab_container->get_child(selected)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
if (!current)
return true;
@@ -1153,7 +1174,7 @@ void ScriptEditor::close_builtin_scripts_from_scene(const String &p_scene) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (se) {
@@ -1197,122 +1218,11 @@ static const Node *_find_node_with_script(const Node *p_node, const RefPtr &p_sc
return NULL;
}
-Dictionary ScriptEditor::get_state() const {
-
- //apply_scripts();
-
- Dictionary state;
-#if 0
- Array paths;
- int open=-1;
-
- for(int i=0;i<tab_container->get_child_count();i++) {
-
- ScriptTextEditor *se = tab_container->get_child(i)->cast_to<ScriptTextEditor>();
- if (!se)
- continue;
-
-
- Ref<Script> script = se->get_edited_script();
- if (script->get_path()!="" && script->get_path().find("local://")==-1 && script->get_path().find("::")==-1) {
-
- paths.push_back(script->get_path());
- } else {
-
-
- const Node *owner = _find_node_with_script(get_tree()->get_root(),script.get_ref_ptr());
- if (owner)
- paths.push_back(owner->get_path());
-
- }
-
- if (i==tab_container->get_current_tab())
- open=i;
- }
-
- if (paths.size())
- state["sources"]=paths;
- if (open!=-1)
- state["current"]=open;
-
-#endif
- return state;
-}
-void ScriptEditor::set_state(const Dictionary &p_state) {
-
-#if 0
- print_line("attempt set state: "+String(Variant(p_state)));
-
- if (!p_state.has("sources"))
- return; //bleh
-
- Array sources = p_state["sources"];
- for(int i=0;i<sources.size();i++) {
-
- Variant source=sources[i];
-
- Ref<Script> script;
-
- if (source.get_type()==Variant::NODE_PATH) {
-
-
- Node *owner=get_tree()->get_root()->get_node(source);
- if (!owner)
- continue;
-
- script = owner->get_script();
- } else if (source.get_type()==Variant::STRING) {
-
-
- script = ResourceLoader::load(source,"Script");
- }
-
-
- if (script.is_null()) //ah well..
- continue;
-
- editor->call("_resource_selected",script);
- }
-
- if (p_state.has("current")) {
- tab_container->set_current_tab(p_state["current"]);
- }
-#endif
-}
-void ScriptEditor::clear() {
-#if 0
- List<ScriptTextEditor*> stes;
- for(int i=0;i<tab_container->get_child_count();i++) {
-
- ScriptTextEditor *se = tab_container->get_child(i)->cast_to<ScriptTextEditor>();
- if (!se)
- continue;
- stes.push_back(se);
-
- }
-
- while(stes.size()) {
-
- memdelete(stes.front()->get());
- stes.pop_front();
- }
-
- int idx = tab_container->get_current_tab();
- if (idx>=tab_container->get_child_count())
- idx=tab_container->get_child_count()-1;
- if (idx>=0) {
- tab_container->set_current_tab(idx);
- script_list->select( script_list->find_metadata(idx) );
- }
-
-#endif
-}
-
void ScriptEditor::get_breakpoints(List<String> *p_breakpoints) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
@@ -1338,10 +1248,8 @@ void ScriptEditor::ensure_focus_current() {
if (cidx < 0 || cidx >= tab_container->get_tab_count())
return;
- Control *c = tab_container->get_child(cidx)->cast_to<Control>();
- if (!c)
- return;
- ScriptEditorBase *se = c->cast_to<ScriptEditorBase>();
+ Control *c = Object::cast_to<Control>(tab_container->get_child(cidx));
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(c);
if (!se)
return;
se->ensure_focus();
@@ -1349,7 +1257,7 @@ void ScriptEditor::ensure_focus_current() {
void ScriptEditor::_members_overview_selected(int p_idx) {
Node *current = tab_container->get_child(tab_container->get_current_tab());
- ScriptEditorBase *se = current->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current);
if (!se) {
return;
}
@@ -1371,7 +1279,7 @@ void ScriptEditor::ensure_select_current() {
Node *current = tab_container->get_child(tab_container->get_current_tab());
- ScriptEditorBase *se = current->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current);
if (se) {
Ref<Script> script = se->get_edited_script();
@@ -1383,7 +1291,7 @@ void ScriptEditor::ensure_select_current() {
//search_menu->show();
}
- EditorHelp *eh = current->cast_to<EditorHelp>();
+ EditorHelp *eh = Object::cast_to<EditorHelp>(current);
if (eh) {
//edit_menu->hide();
@@ -1433,7 +1341,7 @@ void ScriptEditor::_update_members_overview_visibility() {
return;
Node *current = tab_container->get_child(tab_container->get_current_tab());
- ScriptEditorBase *se = current->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current);
if (!se) {
members_overview->set_visible(false);
return;
@@ -1454,7 +1362,7 @@ void ScriptEditor::_update_members_overview() {
return;
Node *current = tab_container->get_child(tab_container->get_current_tab());
- ScriptEditorBase *se = current->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(current);
if (!se) {
return;
}
@@ -1528,7 +1436,7 @@ void ScriptEditor::_update_script_names() {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (se) {
String name = se->get_name();
@@ -1571,12 +1479,12 @@ void ScriptEditor::_update_script_names() {
sedata.push_back(sd);
}
- EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>();
+ EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i));
if (eh) {
String name = eh->get_class();
Ref<Texture> icon = get_icon("Help", "EditorIcons");
- String tooltip = name + " Class Reference";
+ String tooltip = name + TTR(" Class Reference");
_ScriptEditorItemData sd;
sd.icon = icon;
@@ -1666,7 +1574,7 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
@@ -1714,6 +1622,7 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool
_update_script_names();
_save_layout();
se->connect("name_changed", this, "_update_script_names");
+ se->connect("edited_script_changed", this, "_script_changed");
se->connect("request_help_search", this, "_help_search");
se->connect("request_open_script_at_line", this, "_goto_script_line");
se->connect("go_to_help", this, "_help_class_goto");
@@ -1735,7 +1644,7 @@ void ScriptEditor::save_all_scripts() {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
@@ -1773,7 +1682,7 @@ void ScriptEditor::apply_scripts() const {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
se->apply_code();
@@ -1804,7 +1713,7 @@ void ScriptEditor::_editor_stop() {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se) {
continue;
@@ -1825,7 +1734,7 @@ void ScriptEditor::_add_callback(Object *p_obj, const String &p_function, const
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
if (se->get_edited_script() != script)
@@ -1876,7 +1785,7 @@ void ScriptEditor::_editor_settings_changed() {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
@@ -1979,7 +1888,7 @@ void ScriptEditor::get_window_layout(Ref<ConfigFile> p_layout) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (se) {
String path = se->get_edited_script()->get_path();
@@ -1989,7 +1898,7 @@ void ScriptEditor::get_window_layout(Ref<ConfigFile> p_layout) {
scripts.push_back(path);
}
- EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>();
+ EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i));
if (eh) {
@@ -2009,7 +1918,7 @@ void ScriptEditor::_help_class_open(const String &p_class) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>();
+ EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i));
if (eh && eh->get_class() == p_class) {
@@ -2036,7 +1945,7 @@ void ScriptEditor::_help_class_goto(const String &p_desc) {
for (int i = 0; i < tab_container->get_child_count(); i++) {
- EditorHelp *eh = tab_container->get_child(i)->cast_to<EditorHelp>();
+ EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_child(i));
if (eh && eh->get_class() == cname) {
@@ -2064,7 +1973,7 @@ void ScriptEditor::_update_selected_editor_menu() {
bool current = tab_container->get_current_tab() == i;
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (se && se->get_edit_menu()) {
if (current)
@@ -2074,7 +1983,7 @@ void ScriptEditor::_update_selected_editor_menu() {
}
}
- EditorHelp *eh = tab_container->get_current_tab_control()->cast_to<EditorHelp>();
+ EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_current_tab_control());
if (eh) {
script_search_menu->show();
} else {
@@ -2086,13 +1995,13 @@ void ScriptEditor::_update_history_pos(int p_new_pos) {
Node *n = tab_container->get_current_tab_control();
- if (n->cast_to<ScriptEditorBase>()) {
+ if (Object::cast_to<ScriptEditorBase>(n)) {
- history[history_pos].state = n->cast_to<ScriptEditorBase>()->get_edit_state();
+ history[history_pos].state = Object::cast_to<ScriptEditorBase>(n)->get_edit_state();
}
- if (n->cast_to<EditorHelp>()) {
+ if (Object::cast_to<EditorHelp>(n)) {
- history[history_pos].state = n->cast_to<EditorHelp>()->get_scroll();
+ history[history_pos].state = Object::cast_to<EditorHelp>(n)->get_scroll();
}
history_pos = p_new_pos;
@@ -2100,18 +2009,18 @@ void ScriptEditor::_update_history_pos(int p_new_pos) {
n = history[history_pos].control;
- if (n->cast_to<ScriptEditorBase>()) {
+ if (Object::cast_to<ScriptEditorBase>(n)) {
- n->cast_to<ScriptEditorBase>()->set_edit_state(history[history_pos].state);
- n->cast_to<ScriptEditorBase>()->ensure_focus();
+ Object::cast_to<ScriptEditorBase>(n)->set_edit_state(history[history_pos].state);
+ Object::cast_to<ScriptEditorBase>(n)->ensure_focus();
- notify_script_changed(n->cast_to<ScriptEditorBase>()->get_edited_script());
+ notify_script_changed(Object::cast_to<ScriptEditorBase>(n)->get_edited_script());
}
- if (n->cast_to<EditorHelp>()) {
+ if (Object::cast_to<EditorHelp>(n)) {
- n->cast_to<EditorHelp>()->set_scroll(history[history_pos].state);
- n->cast_to<EditorHelp>()->set_focused();
+ Object::cast_to<EditorHelp>(n)->set_scroll(history[history_pos].state);
+ Object::cast_to<EditorHelp>(n)->set_focused();
}
n->set_meta("__editor_pass", ++edit_pass);
@@ -2139,7 +2048,7 @@ Vector<Ref<Script> > ScriptEditor::get_open_scripts() const {
Vector<Ref<Script> > out_scripts = Vector<Ref<Script> >();
for (int i = 0; i < tab_container->get_child_count(); i++) {
- ScriptEditorBase *se = tab_container->get_child(i)->cast_to<ScriptEditorBase>();
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(i));
if (!se)
continue;
out_scripts.push_back(se->get_edited_script());
@@ -2200,6 +2109,11 @@ void ScriptEditor::register_create_script_editor_function(CreateScriptEditorFunc
script_editor_funcs[script_editor_func_count++] = p_func;
}
+void ScriptEditor::_script_changed() {
+
+ NodeDock::singleton->update_lists();
+}
+
void ScriptEditor::_bind_methods() {
ClassDB::bind_method("_file_dialog_action", &ScriptEditor::_file_dialog_action);
@@ -2241,12 +2155,13 @@ void ScriptEditor::_bind_methods() {
ClassDB::bind_method("_history_back", &ScriptEditor::_history_back);
ClassDB::bind_method("_live_auto_reload_running_scripts", &ScriptEditor::_live_auto_reload_running_scripts);
ClassDB::bind_method("_unhandled_input", &ScriptEditor::_unhandled_input);
+ ClassDB::bind_method("_script_changed", &ScriptEditor::_script_changed);
ClassDB::bind_method(D_METHOD("get_current_script"), &ScriptEditor::_get_current_script);
ClassDB::bind_method(D_METHOD("get_open_scripts"), &ScriptEditor::_get_open_scripts);
- ADD_SIGNAL(MethodInfo("editor_script_changed", PropertyInfo(Variant::OBJECT, "script:Script")));
- ADD_SIGNAL(MethodInfo("script_close", PropertyInfo(Variant::OBJECT, "script:Script")));
+ ADD_SIGNAL(MethodInfo("editor_script_changed", PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, "Script")));
+ ADD_SIGNAL(MethodInfo("script_close", PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, "Script")));
}
ScriptEditor::ScriptEditor(EditorNode *p_editor) {
@@ -2261,9 +2176,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
members_overview_enabled = true;
editor = p_editor;
- Ref<StyleBox> sb = p_editor->get_gui_base()->get_stylebox("panel", "TabContainer")->duplicate();
- sb->set_default_margin(MARGIN_TOP, 0);
- add_style_override("panel", sb);
VBoxContainer *main_container = memnew(VBoxContainer);
add_child(main_container);
@@ -2334,6 +2246,8 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_file", TTR("Close"), KEY_MASK_CMD | KEY_W), FILE_CLOSE);
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_all", TTR("Close All")), CLOSE_ALL);
file_menu->get_popup()->add_separator();
+ file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/run_file", TTR("Run"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_X), FILE_RUN);
+ file_menu->get_popup()->add_separator();
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/toggle_scripts_panel", TTR("Toggle Scripts Panel"), KEY_MASK_CMD | KEY_BACKSLASH), TOGGLE_SCRIPTS_PANEL);
file_menu->get_popup()->connect("id_pressed", this, "_menu_option");
@@ -2348,7 +2262,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
debug_menu = memnew(MenuButton);
menu_hb->add_child(debug_menu);
debug_menu->set_text(TTR("Debug"));
- debug_menu->get_popup()->add_separator();
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);
debug_menu->get_popup()->add_separator();
@@ -2365,19 +2278,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
debug_menu->get_popup()->set_item_disabled(debug_menu->get_popup()->get_item_index(DEBUG_BREAK), true);
debug_menu->get_popup()->set_item_disabled(debug_menu->get_popup()->get_item_index(DEBUG_CONTINUE), true);
-#if 0
- window_menu = memnew( MenuButton );
- menu_hb->add_child(window_menu);
- window_menu->set_text(TTR("Window"));
- window_menu->get_popup()->add_item(TTR("Close"),WINDOW_CLOSE,KEY_MASK_CMD|KEY_W);
- window_menu->get_popup()->add_separator();
- window_menu->get_popup()->add_item(TTR("Move Left"),WINDOW_MOVE_LEFT,KEY_MASK_CMD|KEY_LEFT);
- window_menu->get_popup()->add_item(TTR("Move Right"),WINDOW_MOVE_RIGHT,KEY_MASK_CMD|KEY_RIGHT);
- window_menu->get_popup()->add_separator();
- window_menu->get_popup()->connect("id_pressed", this,"_menu_option");
-
-#endif
-
menu_hb->add_spacer();
script_icon = memnew(TextureRect);
@@ -2507,17 +2407,17 @@ ScriptEditor::~ScriptEditor() {
void ScriptEditorPlugin::edit(Object *p_object) {
- if (!p_object->cast_to<Script>())
+ if (!Object::cast_to<Script>(p_object))
return;
- script_editor->edit(p_object->cast_to<Script>());
+ script_editor->edit(Object::cast_to<Script>(p_object));
}
bool ScriptEditorPlugin::handles(Object *p_object) const {
- if (p_object->cast_to<Script>()) {
+ if (Object::cast_to<Script>(p_object)) {
- bool valid = _can_open_in_editor(p_object->cast_to<Script>());
+ bool valid = _can_open_in_editor(Object::cast_to<Script>(p_object));
if (!valid) { //user tried to open it by clicking
EditorNode::get_singleton()->show_warning(TTR("Built-in scripts can only be edited when the scene they belong to is loaded"));
@@ -2546,20 +2446,6 @@ void ScriptEditorPlugin::selected_notify() {
script_editor->ensure_select_current();
}
-Dictionary ScriptEditorPlugin::get_state() const {
-
- return script_editor->get_state();
-}
-
-void ScriptEditorPlugin::set_state(const Dictionary &p_state) {
-
- script_editor->set_state(p_state);
-}
-void ScriptEditorPlugin::clear() {
-
- script_editor->clear();
-}
-
void ScriptEditorPlugin::save_external_data() {
script_editor->save_all_scripts();
diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h
index d8a9415df1..d2677c6a4a 100644
--- a/editor/plugins/script_editor_plugin.h
+++ b/editor/plugins/script_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -65,7 +65,7 @@ protected:
static void _bind_methods();
public:
- void popup(const Vector<String> &p_base, bool p_dontclear = false);
+ void popup(const Vector<String> &p_functions, bool p_dontclear = false);
ScriptEditorQuickOpen();
};
@@ -131,6 +131,7 @@ class ScriptEditor : public PanelContainer {
FILE_RELOAD_THEME,
FILE_SAVE_THEME,
FILE_SAVE_THEME_AS,
+ FILE_RUN,
FILE_CLOSE,
CLOSE_DOCS,
CLOSE_ALL,
@@ -223,14 +224,14 @@ class ScriptEditor : public PanelContainer {
EditorHelpIndex *help_index;
void _tab_changed(int p_which);
- void _menu_option(int p_optin);
+ void _menu_option(int p_option);
Tree *disk_changed_list;
ConfirmationDialog *disk_changed;
bool restoring_layout;
- String _get_debug_tooltip(const String &p_text, Node *_ste);
+ String _get_debug_tooltip(const String &p_text, Node *_se);
void _resave_scripts(const String &p_str);
void _reload_scripts();
@@ -318,6 +319,7 @@ class ScriptEditor : public PanelContainer {
void _update_script_colors();
void _update_modified_scripts_for_external_editor(Ref<Script> p_for_script = Ref<Script>());
+ void _script_changed();
int file_dialog_option;
void _file_dialog_action(String p_file);
@@ -343,14 +345,8 @@ public:
_FORCE_INLINE_ bool edit(const Ref<Script> &p_script, bool p_grab_focus = true) { return edit(p_script, -1, 0, p_grab_focus); }
bool edit(const Ref<Script> &p_script, int p_line, int p_col, bool p_grab_focus = true);
- Dictionary get_state() const;
- void set_state(const Dictionary &p_state);
- void clear();
-
void get_breakpoints(List<String> *p_breakpoints);
- //void swap_lines(TextEdit *tx, int line1, int line2);
-
void save_all_scripts();
void set_window_layout(Ref<ConfigFile> p_layout);
@@ -392,15 +388,11 @@ class ScriptEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "Script"; }
bool has_main_screen() const { return true; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
virtual void selected_notify();
- Dictionary get_state() const;
- virtual void set_state(const Dictionary &p_state);
- virtual void clear();
-
virtual void save_external_data();
virtual void apply_changes();
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 422c656351..a8f1b00776 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,9 +75,14 @@ void ScriptTextEditor::_load_theme_settings() {
text_edit->clear_colors();
- /* keyword color */
+ /* color from color_theme or from editor color */
+
+ Color background_color = EDITOR_DEF("text_editor/highlighting/background_color", Color(0, 0, 0, 0));
+ if (EDITOR_DEF("text_editor/theme/adapted_code_editor_background_color", false))
+ background_color = get_color("dark_color_1", "Editor");
- text_edit->add_color_override("background_color", EDITOR_DEF("text_editor/highlighting/background_color", Color(0, 0, 0, 0)));
+ /* keyword color */
+ text_edit->add_color_override("background_color", background_color);
text_edit->add_color_override("completion_background_color", EDITOR_DEF("text_editor/highlighting/completion_background_color", Color(0, 0, 0, 0)));
text_edit->add_color_override("completion_selected_color", EDITOR_DEF("text_editor/highlighting/completion_selected_color", Color::html("434244")));
text_edit->add_color_override("completion_existing_color", EDITOR_DEF("text_editor/highlighting/completion_existing_color", Color::html("21dfdfdf")));
@@ -524,6 +529,7 @@ void ScriptTextEditor::_validate_script() {
}
emit_signal("name_changed");
+ emit_signal("edited_script_changed");
}
static Node *_find_node_for_script(Node *p_base, Node *p_current, const Ref<Script> &p_script) {
@@ -596,13 +602,13 @@ void ScriptEditor::_update_modified_scripts_for_external_editor(Ref<Script> p_fo
}
}
-void ScriptTextEditor::_code_complete_scripts(void *p_ud, const String &p_code, List<String> *r_options) {
+void ScriptTextEditor::_code_complete_scripts(void *p_ud, const String &p_code, List<String> *r_options, bool &r_force) {
ScriptTextEditor *ste = (ScriptTextEditor *)p_ud;
- ste->_code_complete_script(p_code, r_options);
+ ste->_code_complete_script(p_code, r_options, r_force);
}
-void ScriptTextEditor::_code_complete_script(const String &p_code, List<String> *r_options) {
+void ScriptTextEditor::_code_complete_script(const String &p_code, List<String> *r_options, bool &r_force) {
if (color_panel->is_visible_in_tree()) return;
Node *base = get_tree()->get_edited_scene_root();
@@ -610,7 +616,7 @@ void ScriptTextEditor::_code_complete_script(const String &p_code, List<String>
base = _find_node_for_script(base, base, script);
}
String hint;
- Error err = script->get_language()->complete_code(p_code, script->get_path().get_base_dir(), base, r_options, hint);
+ Error err = script->get_language()->complete_code(p_code, script->get_path().get_base_dir(), base, r_options, r_force, hint);
if (hint != "") {
code_editor->get_text_edit()->set_code_hint(hint);
}
@@ -866,6 +872,21 @@ void ScriptTextEditor::_edit_option(int p_op) {
//tx->deselect();
} break;
+ case EDIT_DELETE_LINE: {
+
+ TextEdit *tx = code_editor->get_text_edit();
+ Ref<Script> scr = get_edited_script();
+ if (scr.is_null())
+ return;
+
+ tx->begin_complex_operation();
+ int line = tx->cursor_get_line();
+ tx->set_line(tx->cursor_get_line(), "");
+ tx->backspace_at_cursor();
+ tx->cursor_set_line(line);
+ tx->end_complex_operation();
+
+ } break;
case EDIT_CLONE_DOWN: {
TextEdit *tx = code_editor->get_text_edit();
@@ -956,16 +977,27 @@ void ScriptTextEditor::_edit_option(int p_op) {
Ref<Script> scr = get_edited_script();
if (scr.is_null())
return;
+
+ te->begin_complex_operation();
int begin, end;
if (te->is_selection_active()) {
begin = te->get_selection_from_line();
end = te->get_selection_to_line();
+ // ignore if the cursor is not past the first column
+ if (te->get_selection_to_column() == 0) {
+ end--;
+ }
} else {
begin = 0;
end = te->get_line_count() - 1;
}
scr->get_language()->auto_indent_code(text, begin, end);
- te->set_text(text);
+ Vector<String> lines = text.split("\n");
+ for (int i = begin; i <= end; ++i) {
+ te->set_line(i, lines[i]);
+ }
+
+ te->end_complex_operation();
} break;
case EDIT_TRIM_TRAILING_WHITESAPCE: {
@@ -1198,7 +1230,7 @@ void ScriptTextEditor::drop_data_fw(const Point2 &p_point, const Variant &p_data
}
if (res->get_path().is_resource_file()) {
- EditorNode::get_singleton()->show_warning("Only resources from filesystem can be dropped.");
+ EditorNode::get_singleton()->show_warning(TTR("Only resources from filesystem can be dropped."));
return;
}
@@ -1391,6 +1423,7 @@ ScriptTextEditor::ScriptTextEditor() {
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/move_down"), EDIT_MOVE_LINE_DOWN);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_left"), EDIT_INDENT_LEFT);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_right"), EDIT_INDENT_RIGHT);
+ edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/delete_line"), EDIT_DELETE_LINE);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/toggle_comment"), EDIT_TOGGLE_COMMENT);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN);
edit_menu->get_popup()->add_separator();
@@ -1465,6 +1498,7 @@ void ScriptTextEditor::register_editor() {
ED_SHORTCUT("script_text_editor/select_all", TTR("Select All"), KEY_MASK_CMD | KEY_A);
ED_SHORTCUT("script_text_editor/move_up", TTR("Move Up"), KEY_MASK_ALT | KEY_UP);
ED_SHORTCUT("script_text_editor/move_down", TTR("Move Down"), KEY_MASK_ALT | KEY_DOWN);
+ ED_SHORTCUT("script_text_editor/delete_line", TTR("Delete Line"), KEY_MASK_CTRL | KEY_MASK_SHIFT | KEY_K);
//leave these at zero, same can be accomplished with tab/shift-tab, including selection
//the next/previous in history shortcut in this case makes a lot more sene.
diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h
index e55847832f..f8b7470ec8 100644
--- a/editor/plugins/script_text_editor.h
+++ b/editor/plugins/script_text_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -74,6 +74,7 @@ class ScriptTextEditor : public ScriptEditorBase {
EDIT_MOVE_LINE_DOWN,
EDIT_INDENT_RIGHT,
EDIT_INDENT_LEFT,
+ EDIT_DELETE_LINE,
EDIT_CLONE_DOWN,
EDIT_PICK_COLOR,
EDIT_TO_UPPERCASE,
@@ -93,12 +94,12 @@ class ScriptTextEditor : public ScriptEditorBase {
};
protected:
- static void _code_complete_scripts(void *p_ud, const String &p_code, List<String> *r_options);
+ static void _code_complete_scripts(void *p_ud, const String &p_code, List<String> *r_options, bool &r_force);
void _breakpoint_toggled(int p_row);
//no longer virtual
void _validate_script();
- void _code_complete_script(const String &p_code, List<String> *r_options);
+ void _code_complete_script(const String &p_code, List<String> *r_options, bool &r_force);
void _load_theme_settings();
void _notification(int p_what);
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index bad88979ac..8672892b5a 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,20 +29,17 @@
/*************************************************************************/
#include "shader_editor_plugin.h"
+#include "core/io/resource_loader.h"
+#include "core/io/resource_saver.h"
+#include "core/os/keyboard.h"
+#include "core/os/os.h"
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
#include "editor/property_editor.h"
-#include "io/resource_loader.h"
-#include "io/resource_saver.h"
-#include "os/keyboard.h"
-#include "os/os.h"
#include "scene/resources/shader_graph.h"
#include "servers/visual/shader_types.h"
-#include "spatial_editor_plugin.h"
-/*** SETTINGS EDITOR ****/
-
-/*** SCRIPT EDITOR ****/
+/*** SHADER SCRIPT EDITOR ****/
Ref<Shader> ShaderTextEditor::get_edited_shader() const {
@@ -96,9 +93,9 @@ void ShaderTextEditor::_load_theme_settings() {
if (shader.is_valid()) {
- for (const Map<StringName, Map<StringName, ShaderLanguage::DataType> >::Element *E = ShaderTypes::get_singleton()->get_functions(VisualServer::ShaderMode(shader->get_mode())).front(); E; E = E->next()) {
+ for (const Map<StringName, ShaderLanguage::FunctionInfo>::Element *E = ShaderTypes::get_singleton()->get_functions(VisualServer::ShaderMode(shader->get_mode())).front(); E; E = E->next()) {
- for (const Map<StringName, ShaderLanguage::DataType>::Element *F = E->get().front(); F; F = F->next()) {
+ for (const Map<StringName, ShaderLanguage::DataType>::Element *F = E->get().built_ins.front(); F; F = F->next()) {
keywords.push_back(F->key());
}
}
@@ -200,8 +197,6 @@ void ShaderTextEditor::_validate_script() {
}
void ShaderTextEditor::_bind_methods() {
-
- //ADD_SIGNAL( MethodInfo("script_changed") );
}
ShaderTextEditor::ShaderTextEditor() {
@@ -255,9 +250,6 @@ void ShaderEditor::_menu_option(int p_option) {
current->get_find_replace_bar()->popup_replace();
} break;
- //case SEARCH_LOCATE_SYMBOL: {
-
- //} break;
case SEARCH_GOTO_LINE: {
goto_line_dialog->popup_find_line(current->get_text_edit());
@@ -277,90 +269,6 @@ void ShaderEditor::_notification(int p_what) {
}
}
-Dictionary ShaderEditor::get_state() const {
-#if 0
- apply_shaders();
-
- Dictionary state;
-
- Array paths;
- int open=-1;
-
- for(int i=0;i<tab_container->get_child_count();i++) {
-
- ShaderTextEditor *ste = tab_container->get_child(i)->cast_to<ShaderTextEditor>();
- if (!ste)
- continue;
-
-
- Ref<Shader> shader = ste->get_edited_shader();
- if (shader->get_path()!="" && shader->get_path().find("local://")==-1 && shader->get_path().find("::")==-1) {
-
- paths.push_back(shader->get_path());
- } else {
-
-
- const Node *owner = _find_node_with_shader(get_root_node(),shader.get_ref_ptr());
- if (owner)
- paths.push_back(owner->get_path());
-
- }
-
- if (i==tab_container->get_current_tab())
- open=i;
- }
-
- if (paths.size())
- state["sources"]=paths;
- if (open!=-1)
- state["current"]=open;
-
-
- return state;
-#endif
- return Dictionary();
-}
-void ShaderEditor::set_state(const Dictionary &p_state) {
-#if 0
- print_line("setting state..");
- if (!p_state.has("sources"))
- return; //bleh
-
- Array sources = p_state["sources"];
- for(int i=0;i<sources.size();i++) {
-
- Variant source=sources[i];
-
- Ref<Shader> shader;
-
- if (source.get_type()==Variant::NODE_PATH) {
-
- print_line("cain find owner at path "+String(source));
- Node *owner=get_root_node()->get_node(source);
- if (!owner)
- continue;
-
- shader = owner->get_shader();
- } else if (source.get_type()==Variant::STRING) {
-
- print_line("loading at path "+String(source));
- shader = ResourceLoader::load(source,"Shader");
- }
-
- print_line("found shader at "+String(source)+"? - "+itos(shader.is_null()));
- if (shader.is_null()) //ah well..
- continue;
-
- get_scene()->get_root_node()->call("_resource_selected",shader);
- }
-
- if (p_state.has("current"))
- tab_container->set_current_tab(p_state["current"]);
-#endif
-}
-void ShaderEditor::clear() {
-}
-
void ShaderEditor::_params_changed() {
shader_editor->_validate_script();
@@ -397,7 +305,7 @@ void ShaderEditor::ensure_select_current() {
/*
if (tab_container->get_child_count() && tab_container->get_current_tab()>=0) {
- ShaderTextEditor *ste = tab_container->get_child(tab_container->get_current_tab())->cast_to<ShaderTextEditor>();
+ ShaderTextEditor *ste = Object::cast_to<ShaderTextEditor>(tab_container->get_child(tab_container->get_current_tab()));
if (!ste)
return;
Ref<Shader> shader = ste->get_edited_shader();
@@ -486,16 +394,16 @@ ShaderEditor::ShaderEditor() {
void ShaderEditorPlugin::edit(Object *p_object) {
- Shader *s = p_object->cast_to<Shader>();
+ Shader *s = Object::cast_to<Shader>(p_object);
shader_editor->edit(s);
}
bool ShaderEditorPlugin::handles(Object *p_object) const {
bool handles = true;
- Shader *shader = p_object->cast_to<Shader>();
+ Shader *shader = Object::cast_to<Shader>(p_object);
/*
- if (!shader || shader->cast_to<ShaderGraph>()) // Don't handle ShaderGraph's
+ if (Object::cast_to<ShaderGraph>(shader)) // Don't handle ShaderGraph's
handles = false;
*/
@@ -522,20 +430,6 @@ void ShaderEditorPlugin::selected_notify() {
shader_editor->ensure_select_current();
}
-Dictionary ShaderEditorPlugin::get_state() const {
-
- return shader_editor->get_state();
-}
-
-void ShaderEditorPlugin::set_state(const Dictionary &p_state) {
-
- shader_editor->set_state(p_state);
-}
-void ShaderEditorPlugin::clear() {
-
- shader_editor->clear();
-}
-
void ShaderEditorPlugin::save_external_data() {
shader_editor->save_external_data();
diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h
index 38d5c3e3a6..ab18784d9f 100644
--- a/editor/plugins/shader_editor_plugin.h
+++ b/editor/plugins/shader_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -77,7 +77,6 @@ class ShaderEditor : public VBoxContainer {
SEARCH_FIND_NEXT,
SEARCH_FIND_PREV,
SEARCH_REPLACE,
- //SEARCH_LOCATE_SYMBOL,
SEARCH_GOTO_LINE,
};
@@ -92,7 +91,7 @@ class ShaderEditor : public VBoxContainer {
ShaderTextEditor *shader_editor;
- void _menu_option(int p_optin);
+ void _menu_option(int p_option);
void _params_changed();
mutable Ref<Shader> shader;
@@ -108,10 +107,6 @@ public:
void ensure_select_current();
void edit(const Ref<Shader> &p_shader);
- Dictionary get_state() const;
- void set_state(const Dictionary &p_state);
- void clear();
-
virtual Size2 get_minimum_size() const { return Size2(0, 200); }
void save_external_data();
@@ -130,15 +125,11 @@ class ShaderEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "Shader"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
virtual void selected_notify();
- Dictionary get_state() const;
- virtual void set_state(const Dictionary &p_state);
- virtual void clear();
-
virtual void save_external_data();
virtual void apply_changes();
diff --git a/editor/plugins/shader_graph_editor_plugin.cpp b/editor/plugins/shader_graph_editor_plugin.cpp
index 5506c035ec..732344cb78 100644
--- a/editor/plugins/shader_graph_editor_plugin.cpp
+++ b/editor/plugins/shader_graph_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,9 +27,11 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "shader_graph_editor_plugin.h"
+// FIXME: Godot 3.0 broke compatibility with ShaderGraphEditorPlugin,
+// it needs to be ported to the new shader language.
#if 0
+#include "shader_graph_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
#include "os/keyboard.h"
@@ -539,22 +541,7 @@ void GraphCurveMapEdit::_plot_curve(const Vector2& p_a,const Vector2& p_b,const
newy = CLAMP ((Math::round (y)), 0, ymax);
/* if this point is different than the last one...then draw it */
- if ((lastx != newx) || (lasty != newy))
- {
-#if 0
- if(fix255)
- {
- /* use fixed array size (for the curve graph) */
- cd->curve[cd->outline][newx] = newy;
- }
- else
- {
- /* use dynamic allocated curve_ptr (for the real curve) */
- cd->curve_ptr[cd->outline][newx] = newy;
-
- if(gb_debug) printf("outline: %d cX: %d cY: %d\n", (int)cd->outline, (int)newx, (int)newy);
- }
-#endif
+ if ((lastx != newx) || (lasty != newy)) {
draw_line(Vector2(lastx,ymax-lasty),Vector2(newx,ymax-newy),Color(0.8,0.8,0.8,0.8),2.0);
}
@@ -839,7 +826,7 @@ void ShaderGraphView::_vec_input_changed(double p_value, int p_id,Array p_arr){
void ShaderGraphView::_xform_input_changed(int p_id, Node *p_button){
- ToolButton *tb = p_button->cast_to<ToolButton>();
+ ToolButton *tb = Object::cast_to<ToolButton>(p_button);
ped_popup->set_position(tb->get_global_position()+Vector2(0,tb->get_size().height));
ped_popup->set_size(tb->get_size());
edited_id=p_id;
@@ -850,7 +837,7 @@ void ShaderGraphView::_xform_input_changed(int p_id, Node *p_button){
}
void ShaderGraphView::_xform_const_changed(int p_id, Node *p_button){
- ToolButton *tb = p_button->cast_to<ToolButton>();
+ ToolButton *tb = Object::cast_to<ToolButton>(p_button);
ped_popup->set_position(tb->get_global_position()+Vector2(0,tb->get_size().height));
ped_popup->set_size(tb->get_size());
edited_id=p_id;
@@ -964,7 +951,7 @@ void ShaderGraphView::_variant_edited() {
void ShaderGraphView::_comment_edited(int p_id,Node* p_button) {
UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo();
- TextEdit *te=p_button->cast_to<TextEdit>();
+ TextEdit *te=Object::cast_to<TextEdit>(p_button);
ur->create_action(TTR("Change Comment"),UndoRedo::MERGE_ENDS);
ur->add_do_method(graph.ptr(),"comment_node_set_text",type,p_id,te->get_text());
ur->add_undo_method(graph.ptr(),"comment_node_set_text",type,p_id,graph->comment_node_get_text(type,p_id));
@@ -978,7 +965,7 @@ void ShaderGraphView::_comment_edited(int p_id,Node* p_button) {
void ShaderGraphView::_color_ramp_changed(int p_id,Node* p_ramp) {
- GraphColorRampEdit *cr=p_ramp->cast_to<GraphColorRampEdit>();
+ GraphColorRampEdit *cr=Object::cast_to<GraphColorRampEdit>(p_ramp);
UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo();
@@ -1020,7 +1007,7 @@ void ShaderGraphView::_color_ramp_changed(int p_id,Node* p_ramp) {
void ShaderGraphView::_curve_changed(int p_id,Node* p_curve) {
- GraphCurveMapEdit *cr=p_curve->cast_to<GraphCurveMapEdit>();
+ GraphCurveMapEdit *cr=Object::cast_to<GraphCurveMapEdit>(p_curve);
UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo();
@@ -1057,7 +1044,7 @@ void ShaderGraphView::_curve_changed(int p_id,Node* p_curve) {
void ShaderGraphView::_input_name_changed(const String& p_name, int p_id, Node *p_line_edit) {
- LineEdit *le=p_line_edit->cast_to<LineEdit>();
+ LineEdit *le=Object::cast_to<LineEdit>(p_line_edit);
ERR_FAIL_COND(!le);
UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo();
@@ -1074,7 +1061,7 @@ void ShaderGraphView::_input_name_changed(const String& p_name, int p_id, Node *
void ShaderGraphView::_tex_edited(int p_id,Node* p_button) {
- ToolButton *tb = p_button->cast_to<ToolButton>();
+ ToolButton *tb = Object::cast_to<ToolButton>(p_button);
ped_popup->set_position(tb->get_global_position()+Vector2(0,tb->get_size().height));
ped_popup->set_size(tb->get_size());
edited_id=p_id;
@@ -1084,7 +1071,7 @@ void ShaderGraphView::_tex_edited(int p_id,Node* p_button) {
void ShaderGraphView::_cube_edited(int p_id,Node* p_button) {
- ToolButton *tb = p_button->cast_to<ToolButton>();
+ ToolButton *tb = Object::cast_to<ToolButton>(p_button);
ped_popup->set_position(tb->get_global_position()+Vector2(0,tb->get_size().height));
ped_popup->set_size(tb->get_size());
edited_id=p_id;
@@ -1299,7 +1286,7 @@ void ShaderGraphView::_delete_nodes_request()
void ShaderGraphView::_default_changed(int p_id, Node *p_button, int p_param, int v_type, String p_hint)
{
- ToolButton *tb = p_button->cast_to<ToolButton>();
+ ToolButton *tb = Object::cast_to<ToolButton>(p_button);
ped_popup->set_position(tb->get_global_position()+Vector2(0,tb->get_size().height));
ped_popup->set_size(tb->get_size());
edited_id=p_id;
@@ -2530,7 +2517,7 @@ void ShaderGraphView::_sg_updated() {
Variant ShaderGraphView::get_drag_data_fw(const Point2 &p_point, Control *p_from)
{
- TextureRect* frame = p_from->cast_to<TextureRect>();
+ TextureRect* frame = Object::cast_to<TextureRect>(p_from);
if (!frame)
return Variant();
@@ -2556,7 +2543,7 @@ bool ShaderGraphView::can_drop_data_fw(const Point2 &p_point, const Variant &p_d
if (val.get_type()==Variant::OBJECT) {
RES res = val;
- if (res.is_valid() && res->cast_to<Texture>())
+ if (res.is_valid() && Object::cast_to<Texture>(res))
return true;
}
}
@@ -2576,7 +2563,7 @@ void ShaderGraphView::drop_data_fw(const Point2 &p_point, const Variant &p_data,
if (!can_drop_data_fw(p_point, p_data, p_from))
return;
- TextureRect *frame = p_from->cast_to<TextureRect>();
+ TextureRect *frame = Object::cast_to<TextureRect>(p_from);
if (!frame)
return;
@@ -2590,20 +2577,20 @@ void ShaderGraphView::drop_data_fw(const Point2 &p_point, const Variant &p_data,
if (val.get_type()==Variant::OBJECT) {
RES res = val;
if (res.is_valid())
- tex = Ref<Texture>(res->cast_to<Texture>());
+ tex = Ref<Texture>(Object::cast_to<Texture>(*res));
}
}
else if (d["type"] == "files" && d.has("files")) {
Vector<String> files = d["files"];
RES res = ResourceLoader::load(files[0]);
if (res.is_valid())
- tex = Ref<Texture>(res->cast_to<Texture>());
+ tex = Ref<Texture>(Object::cast_to<Texture>(*res));
}
}
if (!tex.is_valid()) return;
- GraphNode *gn = frame->get_parent()->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(frame->get_parent());
if (!gn) return;
int id = -1;
@@ -2896,12 +2883,12 @@ ShaderGraphEditor::ShaderGraphEditor(bool p_2d) {
void ShaderGraphEditorPlugin::edit(Object *p_object) {
- shader_editor->edit(p_object->cast_to<ShaderGraph>());
+ shader_editor->edit(Object::cast_to<ShaderGraph>(p_object));
}
bool ShaderGraphEditorPlugin::handles(Object *p_object) const {
- ShaderGraph *shader=p_object->cast_to<ShaderGraph>();
+ ShaderGraph *shader=Object::cast_to<ShaderGraph>(p_object);
if (!shader)
return false;
if (_2d)
diff --git a/editor/plugins/shader_graph_editor_plugin.h b/editor/plugins/shader_graph_editor_plugin.h
index e7cab50d8d..f53dd8200d 100644
--- a/editor/plugins/shader_graph_editor_plugin.h
+++ b/editor/plugins/shader_graph_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,6 +30,10 @@
#ifndef SHADER_GRAPH_EDITOR_PLUGIN_H
#define SHADER_GRAPH_EDITOR_PLUGIN_H
+// FIXME: Godot 3.0 broke compatibility with ShaderGraphEditorPlugin,
+// it needs to be ported to the new shader language.
+#if 0
+
#include "editor/editor_node.h"
#include "editor/editor_plugin.h"
#include "editor/property_editor.h"
@@ -39,11 +43,11 @@
#include "scene/gui/tree.h"
#include "scene/resources/shader.h"
#include "scene/resources/shader_graph.h"
+
/**
@author Juan Linietsky <reduzio@gmail.com>
*/
-#if 0
class GraphColorRampEdit : public Control {
GDCLASS(GraphColorRampEdit,Control);
@@ -238,5 +242,6 @@ public:
~ShaderGraphEditorPlugin();
};
+
#endif
-#endif
+#endif // SHADER_GRAPH_EDITOR_PLUGIN_H
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp
index 13fdb7ac9d..141b4bf72a 100644
--- a/editor/plugins/spatial_editor_plugin.cpp
+++ b/editor/plugins/spatial_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -50,6 +50,9 @@
#define GIZMO_RING_HALF_WIDTH 0.1
//#define GIZMO_SCALE_DEFAULT 0.28
#define GIZMO_SCALE_DEFAULT 0.15
+#define GIZMO_PLANE_SIZE 0.2
+#define GIZMO_PLANE_DST 0.3
+#define GIZMO_CIRCLE_SIZE 0.9
#define ZOOM_MIN_DISTANCE 0.001
#define ZOOM_MULTIPLIER 1.08
@@ -63,17 +66,47 @@
#define MIN_FOV 0.01
#define MAX_FOV 179
-void SpatialEditorViewport::_update_camera() {
+void SpatialEditorViewport::_update_camera(float p_interp_delta) {
if (orthogonal) {
//camera->set_orthogonal(size.width*cursor.distance,get_znear(),get_zfar());
camera->set_orthogonal(2 * cursor.distance, 0.1, 8192);
} else
camera->set_perspective(get_fov(), get_znear(), get_zfar());
- Transform camera_transform = to_camera_transform(cursor);
+ Transform new_transform = to_camera_transform(cursor);
+ Transform old_transform = camera->get_global_transform();
+ Transform transform;
- if (camera->get_global_transform() != camera_transform) {
- camera->set_global_transform(camera_transform);
+ bool disable_interp = (Input::get_singleton()->get_mouse_button_mask() & (2 | 4)) || Input::get_singleton()->is_key_pressed(KEY_SHIFT) || Input::get_singleton()->is_key_pressed(KEY_ALT) || Input::get_singleton()->is_key_pressed(KEY_CONTROL);
+
+ if (p_interp_delta && !disable_interp) {
+ //interpolate
+ float interp_speed = 14; //maybe should be made configuration
+ transform = old_transform.interpolate_with(new_transform, MIN(1.0, p_interp_delta * interp_speed));
+ } else {
+ transform = new_transform;
+ }
+
+ float tolerance = 0.0001;
+ bool equal = true;
+ for (int i = 0; i < 3; i++) {
+ if (transform.basis[i].distance_to(old_transform.basis[i]) > tolerance) {
+ equal = false;
+ break;
+ }
+ }
+
+ if (equal && transform.origin.distance_to(old_transform.origin) > tolerance) {
+ equal = false;
+ }
+
+ if (equal) {
+ transform = new_transform;
+ }
+
+ if (!equal || p_interp_delta == 0) {
+ //print_line(transform);
+ camera->set_global_transform(transform);
update_transform_gizmo_view();
}
}
@@ -143,7 +176,7 @@ int SpatialEditorViewport::get_selected_count() const {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->key()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->key());
if (!sp)
continue;
@@ -218,11 +251,7 @@ void SpatialEditorViewport::_select_clicked(bool p_append, bool p_single) {
if (!clicked)
return;
- Object *obj = ObjectDB::get_instance(clicked);
- if (!obj)
- return;
-
- Spatial *sp = obj->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(ObjectDB::get_instance(clicked));
if (!sp)
return;
@@ -261,20 +290,15 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append,
Vector<ObjectID> instances = VisualServer::get_singleton()->instances_cull_ray(pos, ray, get_tree()->get_root()->get_world()->get_scenario());
Set<Ref<SpatialEditorGizmo> > found_gizmos;
+ Node *edited_scene = get_tree()->get_edited_scene_root();
ObjectID closest = 0;
Spatial *item = NULL;
float closest_dist = 1e20;
int selected_handle = -1;
- Vector<Spatial *> subscenes = Vector<Spatial *>();
-
for (int i = 0; i < instances.size(); i++) {
- Object *obj = ObjectDB::get_instance(instances[i]);
- if (!obj)
- continue;
-
- Spatial *spat = obj->cast_to<Spatial>();
+ Spatial *spat = Object::cast_to<Spatial>(ObjectDB::get_instance(instances[i]));
if (!spat)
continue;
@@ -282,16 +306,6 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append,
Ref<SpatialEditorGizmo> seg = spat->get_gizmo();
if ((!seg.is_valid()) || found_gizmos.has(seg)) {
-
- Node *subscene_candidate = spat;
-
- while ((subscene_candidate->get_owner() != NULL) && (subscene_candidate->get_owner() != editor->get_edited_scene()))
- subscene_candidate = subscene_candidate->get_owner();
-
- spat = subscene_candidate->cast_to<Spatial>();
- if (spat && (spat->get_filename() != "") && (subscene_candidate->get_owner() != NULL))
- subscenes.push_back(spat);
-
continue;
}
@@ -311,32 +325,26 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append,
continue;
if (dist < closest_dist) {
- closest = instances[i];
- closest_dist = dist;
- selected_handle = handle;
- item = spat;
+ //make sure that whathever is selected is editable
+ while (spat && spat != edited_scene && spat->get_owner() != edited_scene && !edited_scene->is_editable_instance(spat->get_owner())) {
+
+ spat = Object::cast_to<Spatial>(spat->get_owner());
+ }
+
+ if (spat) {
+ item = spat;
+ closest = spat->get_instance_id();
+ closest_dist = dist;
+ selected_handle = handle;
+ } else {
+ ERR_PRINT("Bug?");
+ }
}
// if (editor_selection->is_selected(spat))
// r_includes_current=true;
}
- for (int idx_subscene = 0; idx_subscene < subscenes.size(); idx_subscene++) {
-
- Spatial *subscene = subscenes.get(idx_subscene);
- float dist = ray.cross(subscene->get_global_transform().origin - pos).length();
-
- if ((dist < 0) || (dist > 1.2))
- continue;
-
- if (dist < closest_dist) {
- closest = subscene->get_instance_id();
- closest_dist = dist;
- item = subscene;
- selected_handle = -1;
- }
- }
-
if (!item)
return 0;
@@ -361,12 +369,7 @@ void SpatialEditorViewport::_find_items_at_pos(const Point2 &p_pos, bool &r_incl
for (int i = 0; i < instances.size(); i++) {
- Object *obj = ObjectDB::get_instance(instances[i]);
-
- if (!obj)
- continue;
-
- Spatial *spat = obj->cast_to<Spatial>();
+ Spatial *spat = Object::cast_to<Spatial>(ObjectDB::get_instance(instances[i]));
if (!spat)
continue;
@@ -410,7 +413,7 @@ void SpatialEditorViewport::_find_items_at_pos(const Point2 &p_pos, bool &r_incl
results.sort();
}
-Vector3 SpatialEditorViewport::_get_screen_to_space(const Vector3 &p_pos) {
+Vector3 SpatialEditorViewport::_get_screen_to_space(const Vector3 &p_vector3) {
CameraMatrix cm;
cm.set_perspective(get_fov(), get_size().aspect(), get_znear(), get_zfar());
@@ -423,7 +426,7 @@ Vector3 SpatialEditorViewport::_get_screen_to_space(const Vector3 &p_pos) {
camera_transform.basis.rotate(Vector3(0, 1, 0), -cursor.y_rot);
camera_transform.translate(0, 0, cursor.distance);
- return camera_transform.xform(Vector3(((p_pos.x / get_size().width) * 2.0 - 1.0) * screen_w, ((1.0 - (p_pos.y / get_size().height)) * 2.0 - 1.0) * screen_h, -get_znear()));
+ return camera_transform.xform(Vector3(((p_vector3.x / get_size().width) * 2.0 - 1.0) * screen_w, ((1.0 - (p_vector3.y / get_size().height)) * 2.0 - 1.0) * screen_h, -get_znear()));
}
void SpatialEditorViewport::_select_region() {
@@ -476,10 +479,7 @@ void SpatialEditorViewport::_select_region() {
for (int i = 0; i < instances.size(); i++) {
- Object *obj = ObjectDB::get_instance(instances[i]);
- if (!obj)
- continue;
- Spatial *sp = obj->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(ObjectDB::get_instance(instances[i]));
if (!sp)
continue;
@@ -520,7 +520,7 @@ void SpatialEditorViewport::_compute_edit(const Point2 &p_point) {
//int nc=0;
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -591,6 +591,7 @@ bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_hig
float grabber_radius = gs * GIZMO_ARROW_SIZE;
Vector3 r;
+
if (Geometry::segment_intersects_sphere(ray_pos, ray_pos + ray * 10000.0, grabber_pos, grabber_radius, &r)) {
float d = r.distance_to(ray_pos);
if (d < col_d) {
@@ -600,17 +601,49 @@ bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_hig
}
}
+ bool is_plane_translate = false;
+ // second try
+ if (col_axis == -1) {
+ col_d = 1e20;
+
+ for (int i = 0; i < 3; i++) {
+
+ Vector3 ivec2 = gt.basis.get_axis((i + 1) % 3).normalized();
+ Vector3 ivec3 = gt.basis.get_axis((i + 2) % 3).normalized();
+
+ Vector3 grabber_pos = gt.origin + (ivec2 + ivec3) * gs * (GIZMO_PLANE_SIZE + GIZMO_PLANE_DST);
+
+ Vector3 r;
+ Plane plane(gt.origin, gt.basis.get_axis(i).normalized());
+
+ if (plane.intersects_ray(ray_pos, ray, &r)) {
+
+ float dist = r.distance_to(grabber_pos);
+ if (dist < (gs * GIZMO_PLANE_SIZE)) {
+
+ float d = ray_pos.distance_to(r);
+ if (d < col_d) {
+ col_d = d;
+ col_axis = i;
+
+ is_plane_translate = true;
+ }
+ }
+ }
+ }
+ }
+
if (col_axis != -1) {
if (p_highlight_only) {
- spatial_editor->select_gizmo_highlight_axis(col_axis);
+ spatial_editor->select_gizmo_highlight_axis(col_axis + (is_plane_translate ? 6 : 0));
} else {
- //handle rotate
+ //handle plane translate
_edit.mode = TRANSFORM_TRANSLATE;
_compute_edit(Point2(p_screenpos.x, p_screenpos.y));
- _edit.plane = TransformPlane(TRANSFORM_X_AXIS + col_axis);
+ _edit.plane = TransformPlane(TRANSFORM_X_AXIS + col_axis + (is_plane_translate ? 3 : 0));
}
return true;
}
@@ -630,7 +663,7 @@ bool SpatialEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_hig
float dist = r.distance_to(gt.origin);
- if (dist > gs * (1 - GIZMO_RING_HALF_WIDTH) && dist < gs * (1 + GIZMO_RING_HALF_WIDTH)) {
+ if (dist > gs * (GIZMO_CIRCLE_SIZE - GIZMO_RING_HALF_WIDTH) && dist < gs * (GIZMO_CIRCLE_SIZE + GIZMO_RING_HALF_WIDTH)) {
float d = ray_pos.distance_to(r);
if (d < col_d) {
@@ -792,7 +825,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -924,7 +957,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (get_selected_count() == 0)
break; //bye
- //handle rotate
+ //handle translate
_edit.mode = TRANSFORM_TRANSLATE;
_compute_edit(b->get_position());
break;
@@ -963,22 +996,18 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (clicked && gizmo_handle >= 0) {
- Object *obj = ObjectDB::get_instance(clicked);
- if (obj) {
+ Spatial *spa = Object::cast_to<Spatial>(ObjectDB::get_instance(clicked));
+ if (spa) {
- Spatial *spa = obj->cast_to<Spatial>();
- if (spa) {
+ Ref<SpatialEditorGizmo> seg = spa->get_gizmo();
+ if (seg.is_valid()) {
- Ref<SpatialEditorGizmo> seg = spa->get_gizmo();
- if (seg.is_valid()) {
-
- _edit.gizmo = seg;
- _edit.gizmo_handle = gizmo_handle;
- //_edit.gizmo_initial_pos=seg->get_handle_pos(gizmo_handle);
- _edit.gizmo_initial_value = seg->get_handle_value(gizmo_handle);
- //print_line("GIZMO: "+itos(gizmo_handle)+" FROMPOS: "+_edit.orig_gizmo_pos);
- break;
- }
+ _edit.gizmo = seg;
+ _edit.gizmo_handle = gizmo_handle;
+ //_edit.gizmo_initial_pos=seg->get_handle_pos(gizmo_handle);
+ _edit.gizmo_initial_value = seg->get_handle_value(gizmo_handle);
+ //print_line("GIZMO: "+itos(gizmo_handle)+" FROMPOS: "+_edit.orig_gizmo_pos);
+ break;
}
}
//_compute_edit(Point2(b.x,b.y)); //in case a motion happens..
@@ -1014,7 +1043,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -1158,7 +1187,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -1182,6 +1211,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
Vector3 motion_mask;
Plane plane;
+ bool plane_mv;
switch (_edit.plane) {
case TRANSFORM_VIEW:
@@ -1200,6 +1230,21 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(2);
plane = Plane(_edit.center, motion_mask.cross(motion_mask.cross(_get_camera_normal())).normalized());
break;
+ case TRANSFORM_YZ:
+ motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(2) + spatial_editor->get_gizmo_transform().basis.get_axis(1);
+ plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(0));
+ plane_mv = true;
+ break;
+ case TRANSFORM_XZ:
+ motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(2) + spatial_editor->get_gizmo_transform().basis.get_axis(0);
+ plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(1));
+ plane_mv = true;
+ break;
+ case TRANSFORM_XY:
+ motion_mask = spatial_editor->get_gizmo_transform().basis.get_axis(0) + spatial_editor->get_gizmo_transform().basis.get_axis(1);
+ plane = Plane(_edit.center, spatial_editor->get_gizmo_transform().basis.get_axis(2));
+ plane_mv = true;
+ break;
}
Vector3 intersection;
@@ -1213,7 +1258,10 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
//_validate_selection();
Vector3 motion = intersection - click;
if (motion_mask != Vector3()) {
- motion = motion_mask.dot(motion) * motion_mask;
+ if (plane_mv)
+ motion *= motion_mask;
+ else
+ motion = motion_mask.dot(motion) * motion_mask;
}
//set_message("Translating: "+motion);
@@ -1232,7 +1280,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
Spatial *node = NULL;
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp) {
continue;
}
@@ -1260,7 +1308,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp) {
continue;
}
@@ -1330,7 +1378,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -1449,8 +1497,12 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
case NAVIGATION_ORBIT: {
Point2i relative = _get_warped_mouse_motion(m);
- cursor.x_rot += relative.y / 80.0;
- cursor.y_rot += relative.x / 80.0;
+
+ real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/orbit_sensitivity");
+ real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel);
+
+ cursor.x_rot += relative.y * radians_per_pixel;
+ cursor.y_rot += relative.x * radians_per_pixel;
if (cursor.x_rot > Math_PI / 2.0)
cursor.x_rot = Math_PI / 2.0;
if (cursor.x_rot < -Math_PI / 2.0)
@@ -1464,8 +1516,12 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
// It technically works too in ortho, but it's awful for a user due to fov being near zero
if (!orthogonal) {
Point2i relative = _get_warped_mouse_motion(m);
- cursor.x_rot += relative.y / 120.0;
- cursor.y_rot += relative.x / 120.0;
+
+ real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/orbit_sensitivity");
+ real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel);
+
+ cursor.x_rot += relative.y * radians_per_pixel;
+ cursor.y_rot += relative.x * radians_per_pixel;
if (cursor.x_rot > Math_PI / 2.0)
cursor.x_rot = Math_PI / 2.0;
if (cursor.x_rot < -Math_PI / 2.0)
@@ -1557,7 +1613,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -1607,68 +1663,78 @@ Point2i SpatialEditorViewport::_get_warped_mouse_motion(const Ref<InputEventMous
void SpatialEditorViewport::_update_freelook(real_t delta) {
- if (!is_freelook_active())
+ if (!is_freelook_active()) {
+ freelook_velocity = Vector3();
return;
+ }
Vector3 forward = camera->get_transform().basis.xform(Vector3(0, 0, -1));
Vector3 right = camera->get_transform().basis.xform(Vector3(1, 0, 0));
Vector3 up = camera->get_transform().basis.xform(Vector3(0, 1, 0));
- int key_left = ED_GET_SHORTCUT("spatial_editor/freelook_left")->get_shortcut()->cast_to<InputEventKey>()->get_scancode();
- int key_right = ED_GET_SHORTCUT("spatial_editor/freelook_right")->get_shortcut()->cast_to<InputEventKey>()->get_scancode();
- int key_forward = ED_GET_SHORTCUT("spatial_editor/freelook_forward")->get_shortcut()->cast_to<InputEventKey>()->get_scancode();
- int key_backwards = ED_GET_SHORTCUT("spatial_editor/freelook_backwards")->get_shortcut()->cast_to<InputEventKey>()->get_scancode();
- int key_up = ED_GET_SHORTCUT("spatial_editor/freelook_up")->get_shortcut()->cast_to<InputEventKey>()->get_scancode();
- int key_down = ED_GET_SHORTCUT("spatial_editor/freelook_down")->get_shortcut()->cast_to<InputEventKey>()->get_scancode();
- int key_speed_modifier = ED_GET_SHORTCUT("spatial_editor/freelook_speed_modifier")->get_shortcut()->cast_to<InputEventKey>()->get_scancode();
+ int key_left = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_left")->get_shortcut().ptr())->get_scancode();
+ int key_right = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_right")->get_shortcut().ptr())->get_scancode();
+ int key_forward = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_forward")->get_shortcut().ptr())->get_scancode();
+ int key_backwards = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_backwards")->get_shortcut().ptr())->get_scancode();
+ int key_up = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_up")->get_shortcut().ptr())->get_scancode();
+ int key_down = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_down")->get_shortcut().ptr())->get_scancode();
+ int key_speed_modifier = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_speed_modifier")->get_shortcut().ptr())->get_scancode();
- Vector3 velocity;
+ Vector3 direction;
bool pressed = false;
bool speed_modifier = false;
const Input &input = *Input::get_singleton();
if (input.is_key_pressed(key_left)) {
- velocity -= right;
+ direction -= right;
pressed = true;
}
if (input.is_key_pressed(key_right)) {
- velocity += right;
+ direction += right;
pressed = true;
}
if (input.is_key_pressed(key_forward)) {
- velocity += forward;
+ direction += forward;
pressed = true;
}
if (input.is_key_pressed(key_backwards)) {
- velocity -= forward;
+ direction -= forward;
pressed = true;
}
if (input.is_key_pressed(key_up)) {
- velocity += up;
+ direction += up;
pressed = true;
}
if (input.is_key_pressed(key_down)) {
- velocity -= up;
+ direction -= up;
pressed = true;
}
if (input.is_key_pressed(key_speed_modifier)) {
speed_modifier = true;
}
- if (pressed) {
- const EditorSettings &s = *EditorSettings::get_singleton();
- const real_t base_speed = s.get("editors/3d/freelook_base_speed");
- const real_t modifier_speed_factor = s.get("editors/3d/freelook_modifier_speed_factor");
+ const EditorSettings &s = *EditorSettings::get_singleton();
+ real_t inertia = s.get("editors/3d/freelook_inertia");
+ if (inertia < 0)
+ inertia = 0;
- real_t speed = base_speed * cursor.distance;
- if (speed_modifier)
- speed *= modifier_speed_factor;
+ const real_t base_speed = s.get("editors/3d/freelook_base_speed");
+ const real_t modifier_speed_factor = s.get("editors/3d/freelook_modifier_speed_factor");
- velocity.normalize();
+ real_t speed = base_speed * cursor.distance;
+ if (speed_modifier)
+ speed *= modifier_speed_factor;
- cursor.pos += velocity * (speed * delta);
- }
+ Vector3 instant_velocity = direction * speed;
+
+ // Higher inertia should increase "lag" (lerp with factor between 0 and 1)
+ // Inertia of zero should produce instant movement (lerp with factor of 1)
+ // Takes reference of 60fps for units, so that inertia of 1 gives approximate lerp factor of 0.5
+ real_t factor = 1.0 / (1.0 + inertia * delta * 60.f);
+ freelook_velocity = freelook_velocity.linear_interpolate(instant_velocity, CLAMP(factor, 0, 1));
+
+ cursor.pos += freelook_velocity * delta;
}
void SpatialEditorViewport::set_message(String p_message, float p_time) {
@@ -1686,7 +1752,7 @@ void SpatialEditorViewport::_notification(int p_what) {
set_process(visible);
if (visible)
- _update_camera();
+ _update_camera(0);
call_deferred("update_transform_gizmo_view");
}
@@ -1718,7 +1784,7 @@ void SpatialEditorViewport::_notification(int p_what) {
_update_freelook(delta);
- _update_camera();
+ _update_camera(get_process_delta_time());
Map<Node *, Object *> &selection = editor_selection->get_selection();
@@ -1727,7 +1793,7 @@ void SpatialEditorViewport::_notification(int p_what) {
for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->key()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->key());
if (!sp)
continue;
@@ -1735,7 +1801,7 @@ void SpatialEditorViewport::_notification(int p_what) {
if (!se)
continue;
- VisualInstance *vi = sp->cast_to<VisualInstance>();
+ VisualInstance *vi = Object::cast_to<VisualInstance>(sp);
if (se->aabb.has_no_surface()) {
@@ -1744,7 +1810,11 @@ void SpatialEditorViewport::_notification(int p_what) {
Transform t = sp->get_global_transform();
t.translate(se->aabb.position);
- t.basis.scale(se->aabb.size);
+
+ // apply AABB scaling before item's global transform
+ Basis aabb_s;
+ aabb_s.scale(se->aabb.size);
+ t.basis = t.basis * aabb_s;
exist = true;
if (se->last_xform == t)
@@ -2021,7 +2091,7 @@ void SpatialEditorViewport::_menu_option(int p_option) {
undo_redo->create_action(TTR("Align with view"));
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -2170,6 +2240,14 @@ void SpatialEditorViewport::_init_gizmo_instance(int p_idx) {
VS::get_singleton()->instance_geometry_set_cast_shadows_setting(move_gizmo_instance[i], VS::SHADOW_CASTING_SETTING_OFF);
VS::get_singleton()->instance_set_layer_mask(move_gizmo_instance[i], layer);
+ move_plane_gizmo_instance[i] = VS::get_singleton()->instance_create();
+ VS::get_singleton()->instance_set_base(move_plane_gizmo_instance[i], spatial_editor->get_move_plane_gizmo(i)->get_rid());
+ VS::get_singleton()->instance_set_scenario(move_plane_gizmo_instance[i], get_tree()->get_root()->get_world()->get_scenario());
+ VS::get_singleton()->instance_set_visible(move_plane_gizmo_instance[i], false);
+ //VS::get_singleton()->instance_geometry_set_flag(move_plane_gizmo_instance[i],VS::INSTANCE_FLAG_DEPH_SCALE,true);
+ VS::get_singleton()->instance_geometry_set_cast_shadows_setting(move_plane_gizmo_instance[i], VS::SHADOW_CASTING_SETTING_OFF);
+ VS::get_singleton()->instance_set_layer_mask(move_plane_gizmo_instance[i], layer);
+
rotate_gizmo_instance[i] = VS::get_singleton()->instance_create();
VS::get_singleton()->instance_set_base(rotate_gizmo_instance[i], spatial_editor->get_rotate_gizmo(i)->get_rid());
VS::get_singleton()->instance_set_scenario(rotate_gizmo_instance[i], get_tree()->get_root()->get_world()->get_scenario());
@@ -2184,6 +2262,7 @@ void SpatialEditorViewport::_finish_gizmo_instances() {
for (int i = 0; i < 3; i++) {
VS::get_singleton()->free(move_gizmo_instance[i]);
+ VS::get_singleton()->free(move_plane_gizmo_instance[i]);
VS::get_singleton()->free(rotate_gizmo_instance[i]);
}
}
@@ -2275,6 +2354,8 @@ void SpatialEditorViewport::update_transform_gizmo_view() {
for (int i = 0; i < 3; i++) {
VisualServer::get_singleton()->instance_set_transform(move_gizmo_instance[i], xform);
VisualServer::get_singleton()->instance_set_visible(move_gizmo_instance[i], spatial_editor->is_gizmo_visible() && (spatial_editor->get_tool_mode() == SpatialEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == SpatialEditor::TOOL_MODE_MOVE));
+ VisualServer::get_singleton()->instance_set_transform(move_plane_gizmo_instance[i], xform);
+ VisualServer::get_singleton()->instance_set_visible(move_plane_gizmo_instance[i], spatial_editor->is_gizmo_visible() && (spatial_editor->get_tool_mode() == SpatialEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == SpatialEditor::TOOL_MODE_MOVE));
VisualServer::get_singleton()->instance_set_transform(rotate_gizmo_instance[i], xform);
VisualServer::get_singleton()->instance_set_visible(rotate_gizmo_instance[i], spatial_editor->is_gizmo_visible() && (spatial_editor->get_tool_mode() == SpatialEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == SpatialEditor::TOOL_MODE_ROTATE));
}
@@ -2311,8 +2392,8 @@ void SpatialEditorViewport::set_state(const Dictionary &p_state) {
if (p_state.has("previewing")) {
Node *pv = EditorNode::get_singleton()->get_edited_scene()->get_node(p_state["previewing"]);
- if (pv && pv->cast_to<Camera>()) {
- previewing = pv->cast_to<Camera>();
+ if (Object::cast_to<Camera>(pv)) {
+ previewing = Object::cast_to<Camera>(pv);
previewing->connect("tree_exited", this, "_preview_exited_scene");
VS::get_singleton()->viewport_attach_camera(viewport->get_viewport_rid(), previewing->get_camera()); //replace
view_menu->hide();
@@ -2381,7 +2462,7 @@ void SpatialEditorViewport::focus_selection() {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -2485,9 +2566,9 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
preview_camera = memnew(Button);
preview_camera->set_toggle_mode(true);
- preview_camera->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, 90 * EDSCALE);
+ preview_camera->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -90 * EDSCALE);
preview_camera->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 10 * EDSCALE);
- preview_camera->set_text("preview");
+ preview_camera->set_text(TTR("preview"));
surface->add_child(preview_camera);
preview_camera->hide();
preview_camera->connect("toggled", this, "_toggle_camera_preview");
@@ -2677,7 +2758,7 @@ void SpatialEditorViewportContainer::_notification(int p_what) {
SpatialEditorViewport *viewports[4];
int vc = 0;
for (int i = 0; i < get_child_count(); i++) {
- viewports[vc] = get_child(i)->cast_to<SpatialEditorViewport>();
+ viewports[vc] = Object::cast_to<SpatialEditorViewport>(get_child(i));
if (viewports[vc]) {
vc++;
}
@@ -2833,6 +2914,7 @@ void SpatialEditor::select_gizmo_highlight_axis(int p_axis) {
for (int i = 0; i < 3; i++) {
move_gizmo[i]->surface_set_material(0, i == p_axis ? gizmo_hl : gizmo_color[i]);
+ move_plane_gizmo[i]->surface_set_material(0, (i + 6) == p_axis ? gizmo_hl : plane_gizmo_color[i]);
rotate_gizmo[i]->surface_set_material(0, (i + 3) == p_axis ? gizmo_hl : gizmo_color[i]);
}
}
@@ -2848,7 +2930,7 @@ void SpatialEditor::update_transform_gizmo() {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -2883,7 +2965,7 @@ void SpatialEditor::update_transform_gizmo() {
Object *SpatialEditor::_get_editor_data(Object *p_what) {
- Spatial *sp = p_what->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(p_what);
if (!sp)
return NULL;
@@ -2893,7 +2975,7 @@ Object *SpatialEditor::_get_editor_data(Object *p_what) {
si->sbox_instance = VisualServer::get_singleton()->instance_create2(selection_box->get_rid(), sp->get_world()->get_scenario());
VS::get_singleton()->instance_geometry_set_cast_shadows_setting(si->sbox_instance, VS::SHADOW_CASTING_SETTING_OFF);
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
editor->call("edit_node", sp);
return si;
@@ -3123,7 +3205,7 @@ void SpatialEditor::_xform_dialog_action() {
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Spatial *sp = E->get()->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(E->get());
if (!sp)
continue;
@@ -3426,10 +3508,12 @@ void SpatialEditor::_init_indicators() {
gizmo_hl->set_flag(SpatialMaterial::FLAG_ONTOP, true);
gizmo_hl->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
gizmo_hl->set_albedo(Color(1, 1, 1, gizmo_alph + 0.2f));
+ gizmo_hl->set_cull_mode(SpatialMaterial::CULL_DISABLED);
for (int i = 0; i < 3; i++) {
move_gizmo[i] = Ref<ArrayMesh>(memnew(ArrayMesh));
+ move_plane_gizmo[i] = Ref<ArrayMesh>(memnew(ArrayMesh));
rotate_gizmo[i] = Ref<ArrayMesh>(memnew(ArrayMesh));
Ref<SpatialMaterial> mat = memnew(SpatialMaterial);
@@ -3440,6 +3524,7 @@ void SpatialEditor::_init_indicators() {
col[i] = 1.0;
col.a = gizmo_alph;
mat->set_albedo(col);
+
gizmo_color[i] = mat;
Vector3 ivec;
@@ -3497,17 +3582,60 @@ void SpatialEditor::_init_indicators() {
surftool->commit(move_gizmo[i]);
}
+ // plane translation
+ {
+ Ref<SurfaceTool> surftool = memnew(SurfaceTool);
+ surftool->begin(Mesh::PRIMITIVE_TRIANGLES);
+
+ Vector3 vec = ivec2 - ivec3;
+ Vector3 plane[4] = {
+ vec * GIZMO_PLANE_DST,
+ vec * GIZMO_PLANE_DST + ivec2 * GIZMO_PLANE_SIZE,
+ vec * (GIZMO_PLANE_DST + GIZMO_PLANE_SIZE),
+ vec * GIZMO_PLANE_DST - ivec3 * GIZMO_PLANE_SIZE
+ };
+
+ Basis ma(ivec, Math_PI / 2);
+
+ Vector3 points[4] = {
+ ma.xform(plane[0]),
+ ma.xform(plane[1]),
+ ma.xform(plane[2]),
+ ma.xform(plane[3]),
+ };
+ surftool->add_vertex(points[0]);
+ surftool->add_vertex(points[1]);
+ surftool->add_vertex(points[2]);
+
+ surftool->add_vertex(points[0]);
+ surftool->add_vertex(points[2]);
+ surftool->add_vertex(points[3]);
+
+ Ref<SpatialMaterial> plane_mat = memnew(SpatialMaterial);
+ plane_mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ plane_mat->set_flag(SpatialMaterial::FLAG_ONTOP, true);
+ plane_mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ plane_mat->set_cull_mode(SpatialMaterial::CULL_DISABLED);
+ Color col;
+ col[i] = 1.0;
+ col.a = gizmo_alph;
+ plane_mat->set_albedo(col);
+ plane_gizmo_color[i] = plane_mat; // needed, so we can draw planes from both sides
+ surftool->set_material(plane_mat);
+ surftool->commit(move_plane_gizmo[i]);
+ }
+
{
Ref<SurfaceTool> surftool = memnew(SurfaceTool);
surftool->begin(Mesh::PRIMITIVE_TRIANGLES);
Vector3 circle[5] = {
- ivec * 0.02 + ivec2 * 0.02 + ivec2 * 1.0,
- ivec * -0.02 + ivec2 * 0.02 + ivec2 * 1.0,
- ivec * -0.02 + ivec2 * -0.02 + ivec2 * 1.0,
- ivec * 0.02 + ivec2 * -0.02 + ivec2 * 1.0,
- ivec * 0.02 + ivec2 * 0.02 + ivec2 * 1.0,
+ ivec * 0.02 + ivec2 * 0.02 + ivec2 * GIZMO_CIRCLE_SIZE,
+ ivec * -0.02 + ivec2 * 0.02 + ivec2 * GIZMO_CIRCLE_SIZE,
+ ivec * -0.02 + ivec2 * -0.02 + ivec2 * GIZMO_CIRCLE_SIZE,
+ ivec * 0.02 + ivec2 * -0.02 + ivec2 * GIZMO_CIRCLE_SIZE,
+ ivec * 0.02 + ivec2 * 0.02 + ivec2 * GIZMO_CIRCLE_SIZE,
};
for (int k = 0; k < 33; k++) {
@@ -3546,7 +3674,7 @@ void SpatialEditor::_init_indicators() {
_generate_selection_box();
- //get_scene()->get_root_node()->cast_to<EditorNode>()->get_scene_root()->add_child(camera);
+ //Object::cast_to<EditorNode>(get_scene()->get_root_node())->get_scene_root()->add_child(camera);
//current_camera=camera;
}
@@ -3580,21 +3708,6 @@ void SpatialEditor::_unhandled_key_input(Ref<InputEvent> p_event) {
if (!is_visible_in_tree() || get_viewport()->gui_has_modal_stack())
return;
-#if 0
-//i don't remember this being used, why was it here?
- {
-
- EditorNode *en = editor;
- EditorPluginList *over_plugin_list = en->get_editor_plugins_over();
-
- if (!over_plugin_list->empty() && over_plugin_list->forward_gui_input(p_event)) {
-
- return; //ate the over input event
- }
-
- }
-#endif
-
Ref<InputEventKey> k = p_event;
if (k.is_valid()) {
@@ -3678,10 +3791,10 @@ HSplitContainer *SpatialEditor::get_palette_split() {
void SpatialEditor::_request_gizmo(Object *p_obj) {
- Spatial *sp = p_obj->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(p_obj);
if (!sp)
return;
- if (editor->get_edited_scene() && (sp == editor->get_edited_scene() || sp->get_owner() == editor->get_edited_scene() || editor->get_edited_scene()->is_editable_instance(sp->get_owner()))) {
+ if (editor->get_edited_scene() && (sp == editor->get_edited_scene() || (sp->get_owner() && editor->get_edited_scene()->is_a_parent_of(sp)))) {
Ref<SpatialEditorGizmo> seg;
@@ -3695,7 +3808,6 @@ void SpatialEditor::_request_gizmo(Object *p_obj) {
if (!seg.is_valid()) {
seg = gizmos->get_gizmo(sp);
}
-
if (seg.is_valid()) {
sp->set_gizmo(seg);
}
@@ -3709,7 +3821,7 @@ void SpatialEditor::_request_gizmo(Object *p_obj) {
void SpatialEditor::_toggle_maximize_view(Object *p_viewport) {
if (!p_viewport) return;
- SpatialEditorViewport *current_viewport = p_viewport->cast_to<SpatialEditorViewport>();
+ SpatialEditorViewport *current_viewport = Object::cast_to<SpatialEditorViewport>(p_viewport);
if (!current_viewport) return;
int index = -1;
@@ -3833,7 +3945,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
tool_button[TOOL_MODE_SELECT]->set_pressed(true);
button_binds[0] = MENU_TOOL_SELECT;
tool_button[TOOL_MODE_SELECT]->connect("pressed", this, "_menu_item_pressed", button_binds);
- tool_button[TOOL_MODE_SELECT]->set_tooltip("Select Mode (Q)\n" + keycode_get_string(KEY_MASK_CMD) + "Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Depth list selection");
+ tool_button[TOOL_MODE_SELECT]->set_tooltip(TTR("Select Mode (Q)\n") + keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Depth list selection"));
tool_button[TOOL_MODE_MOVE] = memnew(ToolButton);
@@ -4106,7 +4218,7 @@ void SpatialEditorPlugin::make_visible(bool p_visible) {
}
void SpatialEditorPlugin::edit(Object *p_object) {
- spatial_editor->edit(p_object->cast_to<Spatial>());
+ spatial_editor->edit(Object::cast_to<Spatial>(p_object));
}
bool SpatialEditorPlugin::handles(Object *p_object) const {
diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h
index e9857f8b0c..374861b5e7 100644
--- a/editor/plugins/spatial_editor_plugin.h
+++ b/editor/plugins/spatial_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -49,6 +49,7 @@ class SpatialEditorGizmo : public SpatialGizmo {
GDCLASS(SpatialEditorGizmo, SpatialGizmo);
bool selected;
+ bool instanced;
public:
void set_selected(bool p_selected) { selected = p_selected; }
@@ -121,6 +122,7 @@ private:
float gizmo_scale;
bool freelook_active;
+ Vector3 freelook_velocity;
PanelContainer *info;
Label *info_label;
@@ -194,6 +196,9 @@ private:
TRANSFORM_X_AXIS,
TRANSFORM_Y_AXIS,
TRANSFORM_Z_AXIS,
+ TRANSFORM_YZ,
+ TRANSFORM_XZ,
+ TRANSFORM_XY,
};
struct EditData {
@@ -231,7 +236,7 @@ private:
real_t zoom_indicator_delay;
- RID move_gizmo_instance[3], rotate_gizmo_instance[3];
+ RID move_gizmo_instance[3], move_plane_gizmo_instance[3], rotate_gizmo_instance[3];
String last_message;
String message;
@@ -240,12 +245,12 @@ private:
void set_message(String p_message, float p_time = 5);
//
- void _update_camera();
+ void _update_camera(float p_interp_delta);
Transform to_camera_transform(const Cursor &p_cursor) const;
void _draw();
void _smouseenter();
- void _sinput(const Ref<InputEvent> &p_ie);
+ void _sinput(const Ref<InputEvent> &p_event);
void _update_freelook(real_t delta);
SpatialEditor *spatial_editor;
@@ -376,8 +381,9 @@ private:
bool grid_enable[3]; //should be always visible if true
bool grid_enabled;
- Ref<ArrayMesh> move_gizmo[3], rotate_gizmo[3];
+ Ref<ArrayMesh> move_gizmo[3], move_plane_gizmo[3], rotate_gizmo[3];
Ref<SpatialMaterial> gizmo_color[3];
+ Ref<SpatialMaterial> plane_gizmo_color[3];
Ref<SpatialMaterial> gizmo_hl;
int over_gizmo_handle;
@@ -517,6 +523,7 @@ public:
bool are_local_coords_enabled() const { return transform_menu->get_popup()->is_item_checked(transform_menu->get_popup()->get_item_index(SpatialEditor::MENU_TRANSFORM_LOCAL_COORDS)); }
Ref<ArrayMesh> get_move_gizmo(int idx) const { return move_gizmo[idx]; }
+ Ref<ArrayMesh> get_move_plane_gizmo(int idx) const { return move_plane_gizmo[idx]; }
Ref<ArrayMesh> get_rotate_gizmo(int idx) const { return rotate_gizmo[idx]; }
void update_transform_gizmo();
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 6a010062f2..c2c26bfe6c 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -120,63 +120,6 @@ void SpriteFramesEditor::_load_pressed() {
file->popup_centered_ratio();
}
-void SpriteFramesEditor::_item_edited() {
-
-#if 0
- if (!tree->get_selected())
- return;
-
- TreeItem *s = tree->get_selected();
-
- if (tree->get_selected_column()==0) {
- // renamed
- String old_name=s->get_metadata(0);
- String new_name=s->get_text(0);
- if (old_name==new_name)
- return;
-
- if (new_name=="" || new_name.find("\\")!=-1 || new_name.find("/")!=-1 || frames->has_resource(new_name)) {
-
- s->set_text(0,old_name);
- return;
- }
-
- RES samp = frames->get_resource(old_name);
- undo_redo->create_action("Rename Resource");
- undo_redo->add_do_method(frames,"remove_resource",old_name);
- undo_redo->add_do_method(frames,"add_resource",new_name,samp);
- undo_redo->add_undo_method(frames,"remove_resource",new_name);
- undo_redo->add_undo_method(frames,"add_resource",old_name,samp);
- undo_redo->add_do_method(this,"_update_library");
- undo_redo->add_undo_method(this,"_update_library");
- undo_redo->commit_action();
-
- }
-#endif
-}
-
-void SpriteFramesEditor::_delete_confirm_pressed() {
-
- ERR_FAIL_COND(!frames->has_animation(edited_anim));
-
- if (tree->get_current() < 0)
- return;
-
- sel -= 1;
- if (sel < 0 && frames->get_frame_count(edited_anim))
- sel = 0;
-
- int to_remove = tree->get_current();
- sel = to_remove;
- Ref<Texture> r = frames->get_frame(edited_anim, to_remove);
- undo_redo->create_action(TTR("Delete Resource"));
- undo_redo->add_do_method(frames, "remove_frame", edited_anim, to_remove);
- undo_redo->add_undo_method(frames, "add_frame", edited_anim, r, to_remove);
- undo_redo->add_do_method(this, "_update_library");
- undo_redo->add_undo_method(this, "_update_library");
- undo_redo->commit_action();
-}
-
void SpriteFramesEditor::_paste_pressed() {
ERR_FAIL_COND(!frames->has_animation(edited_anim));
@@ -303,15 +246,6 @@ void SpriteFramesEditor::_delete_pressed() {
if (tree->get_current() < 0)
return;
-
- _delete_confirm_pressed(); //it has undo.. why bother with a dialog..
- /*
- dialog->set_title("Confirm...");
- dialog->set_text("Remove Resource '"+tree->get_selected()->get_text(0)+"' ?");
- //dialog->get_cancel()->set_text("Cancel");
- //dialog->get_ok()->show();
- dialog->get_ok()->set_text("Remove");
- dialog->popup_centered(Size2(300,60));*/
}
void SpriteFramesEditor::_animation_select() {
@@ -334,14 +268,14 @@ static void _find_anim_sprites(Node *p_node, List<Node *> *r_nodes, Ref<SpriteFr
return;
{
- AnimatedSprite *as = p_node->cast_to<AnimatedSprite>();
+ AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
if (as && as->get_sprite_frames() == p_sfames) {
r_nodes->push_back(p_node);
}
}
{
- AnimatedSprite3D *as = p_node->cast_to<AnimatedSprite3D>();
+ AnimatedSprite3D *as = Object::cast_to<AnimatedSprite3D>(p_node);
if (as && as->get_sprite_frames() == p_sfames) {
r_nodes->push_back(p_node);
}
@@ -693,10 +627,8 @@ void SpriteFramesEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_load_pressed"), &SpriteFramesEditor::_load_pressed);
ClassDB::bind_method(D_METHOD("_empty_pressed"), &SpriteFramesEditor::_empty_pressed);
ClassDB::bind_method(D_METHOD("_empty2_pressed"), &SpriteFramesEditor::_empty2_pressed);
- ClassDB::bind_method(D_METHOD("_item_edited"), &SpriteFramesEditor::_item_edited);
ClassDB::bind_method(D_METHOD("_delete_pressed"), &SpriteFramesEditor::_delete_pressed);
ClassDB::bind_method(D_METHOD("_paste_pressed"), &SpriteFramesEditor::_paste_pressed);
- ClassDB::bind_method(D_METHOD("_delete_confirm_pressed"), &SpriteFramesEditor::_delete_confirm_pressed);
ClassDB::bind_method(D_METHOD("_file_load_request", "files", "atpos"), &SpriteFramesEditor::_file_load_request, DEFVAL(-1));
ClassDB::bind_method(D_METHOD("_update_library", "skipsel"), &SpriteFramesEditor::_update_library, DEFVAL(false));
ClassDB::bind_method(D_METHOD("_up_pressed"), &SpriteFramesEditor::_up_pressed);
@@ -714,7 +646,7 @@ void SpriteFramesEditor::_bind_methods() {
SpriteFramesEditor::SpriteFramesEditor() {
- //add_style_override("panel", get_stylebox("panel","Panel"));
+ //add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("panel","Panel"));
split = memnew(HSplitContainer);
add_child(split);
@@ -747,7 +679,7 @@ SpriteFramesEditor::SpriteFramesEditor() {
animations->set_hide_root(true);
animations->connect("cell_selected", this, "_animation_select");
animations->connect("item_edited", this, "_animation_name_edited");
- animations->set_single_select_cell_editing_only_when_already_selected(true);
+ animations->set_allow_reselect(true);
anim_speed = memnew(SpinBox);
vbc_animlist->add_margin_child(TTR("Speed (FPS):"), anim_speed);
@@ -829,8 +761,6 @@ SpriteFramesEditor::SpriteFramesEditor() {
move_up->connect("pressed", this, "_up_pressed");
move_down->connect("pressed", this, "_down_pressed");
file->connect("files_selected", this, "_file_load_request");
- //dialog->connect("confirmed", this,"_delete_confirm_pressed");
- //tree->connect("item_selected", this,"_item_edited");
loading_scene = false;
sel = -1;
@@ -842,7 +772,7 @@ SpriteFramesEditor::SpriteFramesEditor() {
void SpriteFramesEditorPlugin::edit(Object *p_object) {
frames_editor->set_undo_redo(&get_undo_redo());
- SpriteFrames *s = p_object->cast_to<SpriteFrames>();
+ SpriteFrames *s = Object::cast_to<SpriteFrames>(p_object);
if (!s)
return;
diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h
index c9081c599a..0d1ab9fd8c 100644
--- a/editor/plugins/sprite_frames_editor_plugin.h
+++ b/editor/plugins/sprite_frames_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -76,11 +76,9 @@ class SpriteFramesEditor : public PanelContainer {
void _empty_pressed();
void _empty2_pressed();
void _delete_pressed();
- void _delete_confirm_pressed();
void _up_pressed();
void _down_pressed();
void _update_library(bool p_skip_selector = false);
- void _item_edited();
void _animation_select();
void _animation_name_edited();
@@ -121,8 +119,8 @@ class SpriteFramesEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "SpriteFrames"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
SpriteFramesEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/stream_editor_plugin.cpp b/editor/plugins/stream_editor_plugin.cpp
deleted file mode 100644
index dd97ce936d..0000000000
--- a/editor/plugins/stream_editor_plugin.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/*************************************************************************/
-/* stream_editor_plugin.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "stream_editor_plugin.h"
-
-#if 0
-
-void StreamEditor::_notification(int p_what) {
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
- play->set_icon( get_icon("Play","EditorIcons") );
- stop->set_icon( get_icon("Stop","EditorIcons") );
- }
-
-}
-void StreamEditor::_node_removed(Node *p_node) {
-
- if(p_node==node) {
- node=NULL;
- hide();
- }
-
-}
-
-void StreamEditor::_play() {
-
- node->call("play");
-}
-
-void StreamEditor::_stop() {
-
- node->call("stop");
-}
-
-void StreamEditor::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("_play"),&StreamEditor::_play);
- ClassDB::bind_method(D_METHOD("_stop"),&StreamEditor::_stop);
-
-}
-
-void StreamEditor::edit(Node *p_stream) {
-
- node=p_stream;
-
-}
-StreamEditor::StreamEditor() {
-
- play = memnew( Button );
-
-
- play->set_anchor_and_margin(MARGIN_LEFT,Control::ANCHOR_END,60);
- play->set_anchor_and_margin(MARGIN_RIGHT,Control::ANCHOR_END,40);
- play->set_anchor_and_margin(MARGIN_TOP,Control::ANCHOR_BEGIN,0);
- play->set_anchor_and_margin(MARGIN_BOTTOM,Control::ANCHOR_BEGIN,0);
-
- add_child(play);
-
- stop = memnew( Button );
-
- stop->set_position(Point2( 35, 5 ));
- stop->set_anchor_and_margin(MARGIN_LEFT,Control::ANCHOR_END,30);
- stop->set_anchor_and_margin(MARGIN_RIGHT,Control::ANCHOR_END,10);
- stop->set_anchor_and_margin(MARGIN_TOP,Control::ANCHOR_BEGIN,0);
- stop->set_anchor_and_margin(MARGIN_BOTTOM,Control::ANCHOR_BEGIN,0);
- add_child(stop);
-
-
- play->connect("pressed", this,"_play");
- stop->connect("pressed", this,"_stop");
-
-}
-
-
-void StreamEditorPlugin::edit(Object *p_object) {
-
- stream_editor->edit(p_object->cast_to<Node>());
-}
-
-bool StreamEditorPlugin::handles(Object *p_object) const {
-
- return p_object->is_class("StreamPlayer") || p_object->is_class("SpatialStreamPlayer");
-}
-
-void StreamEditorPlugin::make_visible(bool p_visible) {
-
- if (p_visible) {
- stream_editor->show();
- stream_editor->set_fixed_process(true);
- } else {
-
- stream_editor->hide();
- stream_editor->set_fixed_process(false);
- stream_editor->edit(NULL);
- }
-
-}
-
-StreamEditorPlugin::StreamEditorPlugin(EditorNode *p_node) {
-
- editor=p_node;
- stream_editor = memnew( StreamEditor );
- editor->get_viewport()->add_child(stream_editor);
-
- stream_editor->set_anchor(MARGIN_LEFT,Control::ANCHOR_END);
- stream_editor->set_anchor(MARGIN_RIGHT,Control::ANCHOR_END);
- stream_editor->set_margin(MARGIN_LEFT,60);
- stream_editor->set_margin(MARGIN_RIGHT,0);
- stream_editor->set_margin(MARGIN_TOP,0);
- stream_editor->set_margin(MARGIN_BOTTOM,10);
-
-
- stream_editor->hide();
-
-
-
-}
-
-
-StreamEditorPlugin::~StreamEditorPlugin()
-{
-}
-
-#endif
diff --git a/editor/plugins/stream_editor_plugin.h b/editor/plugins/stream_editor_plugin.h
deleted file mode 100644
index cdd1c126ad..0000000000
--- a/editor/plugins/stream_editor_plugin.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*************************************************************************/
-/* stream_editor_plugin.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 STREAM_EDITOR_PLUGIN_H
-#define STREAM_EDITOR_PLUGIN_H
-
-#if 0
-#include "editor/editor_node.h"
-#include "editor/editor_plugin.h"
-#include "scene/audio/stream_player.h"
-
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-
-class StreamEditor : public Control {
-
- GDCLASS(StreamEditor, Control );
-
- Button * play;
- Button * stop;
-
- Panel *panel;
- Node *node;
-
- void _play();
- void _stop();
-protected:
- void _notification(int p_what);
- void _node_removed(Node *p_node);
- static void _bind_methods();
-public:
-
- void edit(Node *p_stream);
- StreamEditor();
-};
-
-class StreamEditorPlugin : public EditorPlugin {
-
- GDCLASS( StreamEditorPlugin, EditorPlugin );
-
- StreamEditor *stream_editor;
- EditorNode *editor;
-
-public:
-
- virtual String get_name() const { return "Stream"; }
- bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
- virtual void make_visible(bool p_visible);
-
- StreamEditorPlugin(EditorNode *p_node);
- ~StreamEditorPlugin();
-
-};
-
-#endif // STREAM_EDITOR_PLUGIN_H
-#endif
diff --git a/editor/plugins/style_box_editor_plugin.cpp b/editor/plugins/style_box_editor_plugin.cpp
index d421b203e9..478ca2e972 100644
--- a/editor/plugins/style_box_editor_plugin.cpp
+++ b/editor/plugins/style_box_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -72,8 +72,8 @@ StyleBoxEditor::StyleBoxEditor() {
void StyleBoxEditorPlugin::edit(Object *p_node) {
- if (p_node && p_node->cast_to<StyleBox>()) {
- stylebox_editor->edit(p_node->cast_to<StyleBox>());
+ if (Object::cast_to<StyleBox>(p_node)) {
+ stylebox_editor->edit(Object::cast_to<StyleBox>(p_node));
stylebox_editor->show();
} else
stylebox_editor->hide();
diff --git a/editor/plugins/style_box_editor_plugin.h b/editor/plugins/style_box_editor_plugin.h
index effcdb7e5a..bf3c56197c 100644
--- a/editor/plugins/style_box_editor_plugin.h
+++ b/editor/plugins/style_box_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp
index 57c27a8a7e..90dc4cf993 100644
--- a/editor/plugins/texture_editor_plugin.cpp
+++ b/editor/plugins/texture_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -70,7 +70,7 @@ void TextureEditor::_notification(int p_what) {
int ofs_x = (size.width - tex_width) / 2;
int ofs_y = (size.height - tex_height) / 2;
- if (texture->cast_to<CurveTexture>()) {
+ if (Object::cast_to<CurveTexture>(*texture)) {
// In the case of CurveTextures we know they are 1 in height, so fill the preview to see the gradient
ofs_y = 0;
tex_height = size.height;
@@ -81,10 +81,10 @@ void TextureEditor::_notification(int p_what) {
Ref<Font> font = get_font("font", "Label");
String format;
- if (texture->cast_to<ImageTexture>()) {
- format = Image::get_format_name(texture->cast_to<ImageTexture>()->get_format());
- } else if (texture->cast_to<StreamTexture>()) {
- format = Image::get_format_name(texture->cast_to<StreamTexture>()->get_format());
+ if (Object::cast_to<ImageTexture>(*texture)) {
+ format = Image::get_format_name(Object::cast_to<ImageTexture>(*texture)->get_format());
+ } else if (Object::cast_to<StreamTexture>(*texture)) {
+ format = Image::get_format_name(Object::cast_to<StreamTexture>(*texture)->get_format());
} else {
format = texture->get_class();
}
@@ -136,7 +136,7 @@ TextureEditor::TextureEditor() {
void TextureEditorPlugin::edit(Object *p_object) {
- Texture *s = p_object->cast_to<Texture>();
+ Texture *s = Object::cast_to<Texture>(p_object);
if (!s)
return;
diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h
index 13f8dd7fbd..c7734b5b3d 100644
--- a/editor/plugins/texture_editor_plugin.h
+++ b/editor/plugins/texture_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -61,8 +61,8 @@ class TextureEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "Texture"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
TextureEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp
index 4cd18b090a..82b507bd49 100644
--- a/editor/plugins/texture_region_editor_plugin.cpp
+++ b/editor/plugins/texture_region_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -280,7 +280,7 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
rect.expand_to(r.position);
rect.expand_to(r.position + r.size);
}
- 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", rect);
undo_redo->add_undo_method(node_sprite, "set_region_rect", node_sprite->get_region_rect());
@@ -626,12 +626,12 @@ void TextureRegionEditor::edit(Object *p_obj) {
if (atlas_tex.is_valid())
atlas_tex->remove_change_receptor(this);
if (p_obj) {
- node_sprite = p_obj->cast_to<Sprite>();
- node_patch9 = p_obj->cast_to<NinePatchRect>();
- if (p_obj->cast_to<StyleBoxTexture>())
- obj_styleBox = Ref<StyleBoxTexture>(p_obj->cast_to<StyleBoxTexture>());
- if (p_obj->cast_to<AtlasTexture>())
- atlas_tex = Ref<AtlasTexture>(p_obj->cast_to<AtlasTexture>());
+ node_sprite = Object::cast_to<Sprite>(p_obj);
+ node_patch9 = Object::cast_to<NinePatchRect>(p_obj);
+ if (Object::cast_to<StyleBoxTexture>(p_obj))
+ obj_styleBox = Ref<StyleBoxTexture>(Object::cast_to<StyleBoxTexture>(p_obj));
+ if (Object::cast_to<AtlasTexture>(p_obj))
+ atlas_tex = Ref<AtlasTexture>(Object::cast_to<AtlasTexture>(p_obj));
p_obj->add_change_receptor(this);
_edit_region();
} else {
@@ -898,12 +898,12 @@ TextureRegionEditor::TextureRegionEditor(EditorNode *p_editor) {
edit_draw->set_clip_contents(true);
}
-void TextureRegionEditorPlugin::edit(Object *p_node) {
- region_editor->edit(p_node);
+void TextureRegionEditorPlugin::edit(Object *p_object) {
+ region_editor->edit(p_object);
}
-bool TextureRegionEditorPlugin::handles(Object *p_obj) const {
- return p_obj->is_class("Sprite") || p_obj->is_class("Patch9Rect") || p_obj->is_class("StyleBoxTexture") || p_obj->is_class("AtlasTexture");
+bool TextureRegionEditorPlugin::handles(Object *p_object) const {
+ return p_object->is_class("Sprite") || p_object->is_class("Patch9Rect") || p_object->is_class("StyleBoxTexture") || p_object->is_class("AtlasTexture");
}
void TextureRegionEditorPlugin::make_visible(bool p_visible) {
diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h
index cb0b9fc372..0789dde1c1 100644
--- a/editor/plugins/texture_region_editor_plugin.h
+++ b/editor/plugins/texture_region_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -139,8 +139,8 @@ class TextureRegionEditorPlugin : public EditorPlugin {
public:
virtual String get_name() const { return "TextureRegion"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
void set_state(const Dictionary &p_state);
Dictionary get_state() const;
diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp
index d45a3b1312..86ef1a489f 100644
--- a/editor/plugins/theme_editor_plugin.cpp
+++ b/editor/plugins/theme_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -44,7 +44,7 @@ void ThemeEditor::_propagate_redraw(Control *p_at) {
p_at->minimum_size_changed();
p_at->update();
for (int i = 0; i < p_at->get_child_count(); i++) {
- Control *a = p_at->get_child(i)->cast_to<Control>();
+ Control *a = Object::cast_to<Control>(p_at->get_child(i));
if (a)
_propagate_redraw(a);
}
@@ -529,8 +529,8 @@ void ThemeEditor::_theme_menu_cbk(int p_option) {
} else if (p_option == POPUP_CLASS_REMOVE) {
- add_del_dialog->set_title("Remove All Items");
- add_del_dialog->get_ok()->set_text("Remove All");
+ add_del_dialog->set_title(TTR("Remove All Items"));
+ add_del_dialog->get_ok()->set_text(TTR("Remove All"));
add_del_dialog->popup_centered(Size2(240, 85) * EDSCALE);
base_theme = Theme::get_default();
@@ -892,9 +892,9 @@ ThemeEditor::ThemeEditor() {
void ThemeEditorPlugin::edit(Object *p_node) {
- if (p_node && p_node->cast_to<Theme>()) {
+ if (Object::cast_to<Theme>(p_node)) {
theme_editor->show();
- theme_editor->edit(p_node->cast_to<Theme>());
+ theme_editor->edit(Object::cast_to<Theme>(p_node));
} else {
theme_editor->edit(Ref<Theme>());
theme_editor->hide();
diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h
index a75b83e76a..cb6f086de6 100644
--- a/editor/plugins/theme_editor_plugin.h
+++ b/editor/plugins/theme_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp
index 023424d891..f943ee5f6d 100644
--- a/editor/plugins/tile_map_editor_plugin.cpp
+++ b/editor/plugins/tile_map_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -52,8 +52,15 @@ void TileMapEditor::_notification(int p_what) {
search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
} break;
+
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
+ bool new_show_tile_info = EditorSettings::get_singleton()->get("editors/tile_map/show_tile_info_on_hover");
+ if (new_show_tile_info != show_tile_info) {
+ show_tile_info = new_show_tile_info;
+ tile_info->set_visible(show_tile_info);
+ }
+
if (is_visible_in_tree()) {
_update_palette();
}
@@ -99,7 +106,7 @@ void TileMapEditor::_menu_option(int p_option) {
if (!selection_active)
return;
- undo_redo->create_action("Erase Selection");
+ undo_redo->create_action(TTR("Erase Selection"));
for (int i = rectangle.position.y; i <= rectangle.position.y + rectangle.size.y; i++) {
for (int j = rectangle.position.x; j <= rectangle.position.x + rectangle.size.x; j++) {
@@ -723,7 +730,7 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (id != TileMap::INVALID_CELL) {
- undo_redo->create_action("Line Draw");
+ undo_redo->create_action(TTR("Line Draw"));
for (Map<Point2i, CellOp>::Element *E = paint_undo.front(); E; E = E->next()) {
_set_cell(E->key(), id, flip_h, flip_v, transpose, true);
@@ -740,7 +747,7 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (id != TileMap::INVALID_CELL) {
- undo_redo->create_action("Rectangle Paint");
+ undo_redo->create_action(TTR("Rectangle Paint"));
for (int i = rectangle.position.y; i <= rectangle.position.y + rectangle.size.y; i++) {
for (int j = rectangle.position.x; j <= rectangle.position.x + rectangle.size.x; j++) {
@@ -789,7 +796,7 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
op["flip_v"] = flip_v;
op["transpose"] = transpose;
- undo_redo->create_action("Bucket Fill");
+ undo_redo->create_action(TTR("Bucket Fill"));
undo_redo->add_do_method(this, "_fill_points", points, op);
undo_redo->add_undo_method(this, "_fill_points", points, pop);
@@ -912,12 +919,14 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
canvas_item_editor->update();
}
- int tile_under = node->get_cell(over_tile.x, over_tile.y);
- String tile_name = "none";
+ if (show_tile_info) {
+ int tile_under = node->get_cell(over_tile.x, over_tile.y);
+ String tile_name = "none";
- if (node->get_tileset()->has_tile(tile_under))
- tile_name = node->get_tileset()->tile_get_name(tile_under);
- tile_info->set_text(String::num(over_tile.x) + ", " + String::num(over_tile.y) + " [" + tile_name + "]");
+ if (node->get_tileset()->has_tile(tile_under))
+ tile_name = node->get_tileset()->tile_get_name(tile_under);
+ tile_info->set_text(String::num(over_tile.x) + ", " + String::num(over_tile.y) + " [" + tile_name + "]");
+ }
if (tool == TOOL_PAINTING) {
@@ -1320,7 +1329,7 @@ void TileMapEditor::edit(Node *p_tile_map) {
node->disconnect("settings_changed", this, "_tileset_settings_changed");
if (p_tile_map) {
- node = p_tile_map->cast_to<TileMap>();
+ node = Object::cast_to<TileMap>(p_tile_map);
if (!canvas_item_editor->is_connected("draw", this, "_canvas_draw"))
canvas_item_editor->connect("draw", this, "_canvas_draw");
if (!canvas_item_editor->is_connected("mouse_entered", this, "_canvas_mouse_enter"))
@@ -1398,7 +1407,7 @@ TileMapEditor::CellOp TileMapEditor::_get_op_from_cell(const Point2i &p_pos) {
void TileMapEditor::_update_transform_buttons(Object *p_button) {
//ERR_FAIL_NULL(p_button);
- ToolButton *b = p_button->cast_to<ToolButton>();
+ ToolButton *b = Object::cast_to<ToolButton>(p_button);
//ERR_FAIL_COND(!b);
if (b == rotate_0) {
@@ -1439,6 +1448,7 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) {
tool = TOOL_NONE;
selection_active = false;
mouse_over = false;
+ show_tile_info = true;
flip_h = false;
flip_v = false;
@@ -1572,7 +1582,7 @@ TileMapEditor::~TileMapEditor() {
void TileMapEditorPlugin::edit(Object *p_object) {
- tile_map_editor->edit(p_object->cast_to<Node>());
+ tile_map_editor->edit(Object::cast_to<Node>(p_object));
}
bool TileMapEditorPlugin::handles(Object *p_object) const {
@@ -1602,6 +1612,7 @@ TileMapEditorPlugin::TileMapEditorPlugin(EditorNode *p_node) {
EDITOR_DEF("editors/tile_map/show_tile_ids", false);
EDITOR_DEF("editors/tile_map/sort_tiles_by_name", true);
EDITOR_DEF("editors/tile_map/bucket_fill_preview", true);
+ EDITOR_DEF("editors/tile_map/show_tile_info_on_hover", true);
tile_map_editor = memnew(TileMapEditor(p_node));
add_control_to_container(CONTAINER_CANVAS_EDITOR_SIDE, tile_map_editor);
diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h
index 981d5c66a1..e863c4bf3d 100644
--- a/editor/plugins/tile_map_editor_plugin.h
+++ b/editor/plugins/tile_map_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -97,6 +97,7 @@ class TileMapEditor : public VBoxContainer {
bool selection_active;
bool mouse_over;
+ bool show_tile_info;
bool flip_h;
bool flip_v;
@@ -197,8 +198,8 @@ public:
virtual String get_name() const { return "TileMap"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
TileMapEditorPlugin(EditorNode *p_node);
diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp
index 3563f70d0b..443c280428 100644
--- a/editor/plugins/tile_set_editor_plugin.cpp
+++ b/editor/plugins/tile_set_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,7 +43,7 @@ void TileSetEditor::_import_node(Node *p_node, Ref<TileSet> p_library) {
Node *child = p_node->get_child(i);
- if (!child->cast_to<Sprite>()) {
+ if (!Object::cast_to<Sprite>(child)) {
if (child->get_child_count() > 0) {
_import_node(child, p_library);
}
@@ -51,7 +51,7 @@ void TileSetEditor::_import_node(Node *p_node, Ref<TileSet> p_library) {
continue;
}
- Sprite *mi = child->cast_to<Sprite>();
+ Sprite *mi = Object::cast_to<Sprite>(child);
Ref<Texture> texture = mi->get_texture();
Ref<Texture> normal_map = mi->get_normal_map();
Ref<ShaderMaterial> material = mi->get_material();
@@ -99,18 +99,18 @@ void TileSetEditor::_import_node(Node *p_node, Ref<TileSet> p_library) {
Node *child2 = mi->get_child(j);
- if (child2->cast_to<NavigationPolygonInstance>())
- nav_poly = child2->cast_to<NavigationPolygonInstance>()->get_navigation_polygon();
+ if (Object::cast_to<NavigationPolygonInstance>(child2))
+ nav_poly = Object::cast_to<NavigationPolygonInstance>(child2)->get_navigation_polygon();
- if (child2->cast_to<LightOccluder2D>())
- occluder = child2->cast_to<LightOccluder2D>()->get_occluder_polygon();
+ if (Object::cast_to<LightOccluder2D>(child2))
+ occluder = Object::cast_to<LightOccluder2D>(child2)->get_occluder_polygon();
- if (!child2->cast_to<StaticBody2D>())
+ if (!Object::cast_to<StaticBody2D>(child2))
continue;
found_collisions = true;
- StaticBody2D *sb = child2->cast_to<StaticBody2D>();
+ StaticBody2D *sb = Object::cast_to<StaticBody2D>(child2);
List<uint32_t> shapes;
sb->get_shape_owners(&shapes);
@@ -147,12 +147,12 @@ void TileSetEditor::_import_node(Node *p_node, Ref<TileSet> p_library) {
}
}
-void TileSetEditor::_import_scene(Node *scene, Ref<TileSet> p_library, bool p_merge) {
+void TileSetEditor::_import_scene(Node *p_scene, Ref<TileSet> p_library, bool p_merge) {
if (!p_merge)
p_library->clear();
- _import_node(scene, p_library);
+ _import_node(p_scene, p_library);
}
void TileSetEditor::_menu_confirm() {
@@ -268,8 +268,8 @@ TileSetEditor::TileSetEditor(EditorNode *p_editor) {
void TileSetEditorPlugin::edit(Object *p_node) {
- if (p_node && p_node->cast_to<TileSet>()) {
- tileset_editor->edit(p_node->cast_to<TileSet>());
+ if (Object::cast_to<TileSet>(p_node)) {
+ tileset_editor->edit(Object::cast_to<TileSet>(p_node));
tileset_editor->show();
} else
tileset_editor->hide();
@@ -294,7 +294,6 @@ TileSetEditorPlugin::TileSetEditorPlugin(EditorNode *p_node) {
p_node->get_viewport()->add_child(tileset_editor);
tileset_editor->set_area_as_parent_rect();
- tileset_editor->set_anchor(MARGIN_RIGHT, Control::ANCHOR_END);
tileset_editor->set_anchor(MARGIN_BOTTOM, Control::ANCHOR_BEGIN);
tileset_editor->set_end(Point2(0, 22));
tileset_editor->hide();
diff --git a/editor/plugins/tile_set_editor_plugin.h b/editor/plugins/tile_set_editor_plugin.h
index d04ebc7197..677ee05b55 100644
--- a/editor/plugins/tile_set_editor_plugin.h
+++ b/editor/plugins/tile_set_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/progress_dialog.cpp b/editor/progress_dialog.cpp
index 51a40faf37..376d9d3158 100644
--- a/editor/progress_dialog.cpp
+++ b/editor/progress_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -155,9 +155,10 @@ void ProgressDialog::_popup() {
Ref<StyleBox> style = get_stylebox("panel", "PopupMenu");
ms += style->get_minimum_size();
- for (int i = 0; i < 4; i++) {
- main->set_margin(Margin(i), style->get_margin(Margin(i)));
- }
+ main->set_margin(MARGIN_LEFT, style->get_margin(MARGIN_LEFT));
+ main->set_margin(MARGIN_RIGHT, -style->get_margin(MARGIN_RIGHT));
+ main->set_margin(MARGIN_TOP, style->get_margin(MARGIN_TOP));
+ main->set_margin(MARGIN_BOTTOM, -style->get_margin(MARGIN_BOTTOM));
popup_centered(ms);
}
diff --git a/editor/progress_dialog.h b/editor/progress_dialog.h
index 75ad0f26dd..8ac0907145 100644
--- a/editor/progress_dialog.h
+++ b/editor/progress_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index b9694dffcb..d649afc594 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -35,7 +35,6 @@
#include "io/image_loader.h"
#include "io/resource_loader.h"
#include "io/resource_saver.h"
-#include "io_plugins/editor_texture_import_plugin.h"
#include "os/dir_access.h"
#include "os/file_access.h"
#include "os/os.h"
@@ -913,8 +912,8 @@ ProjectExportDialog::ProjectExportDialog() {
updating = false;
- get_ok()->set_text("Export PCK/Zip");
- export_button = add_button("Export Project", !OS::get_singleton()->get_swap_ok_cancel(), "export");
+ get_ok()->set_text(TTR("Export PCK/Zip"));
+ export_button = add_button(TTR("Export Project"), !OS::get_singleton()->get_swap_ok_cancel(), "export");
export_pck_zip = memnew(FileDialog);
export_pck_zip->add_filter("*.zip ; ZIP File");
diff --git a/editor/project_export.h b/editor/project_export.h
index 29c24005e0..61de0f739a 100644
--- a/editor/project_export.h
+++ b/editor/project_export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index dc0c888eea..e042e9cc96 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -218,7 +218,7 @@ private:
unzFile pkg = unzOpen2(zip_path.utf8().get_data(), &io);
if (!pkg) {
- dialog_error->set_text("Error opening package file, not in zip format.");
+ dialog_error->set_text(TTR("Error opening package file, not in zip format."));
return;
}
@@ -465,7 +465,7 @@ void ProjectManager::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
- get_tree()->set_editor_hint(true);
+ Engine::get_singleton()->set_editor_hint(true);
} else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
@@ -475,7 +475,7 @@ void ProjectManager::_notification(int p_what) {
void ProjectManager::_panel_draw(Node *p_hb) {
- HBoxContainer *hb = p_hb->cast_to<HBoxContainer>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(p_hb);
hb->draw_line(Point2(0, hb->get_size().y + 1), Point2(hb->get_size().x - 10, hb->get_size().y + 1), get_color("guide_color", "Tree"));
@@ -487,7 +487,7 @@ void ProjectManager::_panel_draw(Node *p_hb) {
void ProjectManager::_update_project_buttons() {
for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- CanvasItem *item = scroll_childs->get_child(i)->cast_to<CanvasItem>();
+ CanvasItem *item = Object::cast_to<CanvasItem>(scroll_childs->get_child(i));
item->update();
}
@@ -509,7 +509,7 @@ void ProjectManager::_panel_input(const Ref<InputEvent> &p_ev, Node *p_hb) {
int clicked_id = -1;
int last_clicked_id = -1;
for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
if (!hb) continue;
if (hb->get_meta("name") == clicked) clicked_id = i;
if (hb->get_meta("name") == last_clicked) last_clicked_id = i;
@@ -519,7 +519,7 @@ void ProjectManager::_panel_input(const Ref<InputEvent> &p_ev, Node *p_hb) {
int min = clicked_id < last_clicked_id ? clicked_id : last_clicked_id;
int max = clicked_id > last_clicked_id ? clicked_id : last_clicked_id;
for (int i = 0; i < scroll_childs->get_child_count(); ++i) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
if (!hb) continue;
if (i != clicked_id && (i < min || i > max) && !mb->get_control()) {
selected_list.erase(hb->get_meta("name"));
@@ -572,7 +572,7 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
if (hb) {
selected_list.clear();
selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene"));
@@ -587,7 +587,7 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
for (int i = scroll_childs->get_child_count() - 1; i >= 0; i--) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
if (hb) {
selected_list.clear();
selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene"));
@@ -609,7 +609,7 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
for (int i = scroll_childs->get_child_count() - 1; i >= 0; i--) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
if (!hb) continue;
String current = hb->get_meta("name");
@@ -646,7 +646,7 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
if (!hb) continue;
String current = hb->get_meta("name");
@@ -805,7 +805,8 @@ void ProjectManager::_load_recent_projects() {
Error err = img->load(appicon.replace_first("res://", path + "/"));
if (err == OK) {
- img->resize(64, 64);
+ Ref<Texture> default_icon = get_icon("DefaultProjectIcon", "EditorIcons");
+ img->resize(default_icon->get_width(), default_icon->get_height());
Ref<ImageTexture> it = memnew(ImageTexture);
it->create_from_image(img);
icon = it;
@@ -885,8 +886,8 @@ void ProjectManager::_load_recent_projects() {
void ProjectManager::_on_project_created(const String &dir) {
bool has_already = false;
for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
- Label *fpath = hb->get_node(NodePath("project/path"))->cast_to<Label>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ Label *fpath = Object::cast_to<Label>(hb->get_node(NodePath("project/path")));
if (fpath->get_text() == dir) {
has_already = true;
break;
@@ -903,8 +904,8 @@ void ProjectManager::_on_project_created(const String &dir) {
void ProjectManager::_update_scroll_pos(const String &dir) {
for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = scroll_childs->get_child(i)->cast_to<HBoxContainer>();
- Label *fpath = hb->get_node(NodePath("project/path"))->cast_to<Label>();
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ Label *fpath = Object::cast_to<Label>(hb->get_node(NodePath("project/path")));
if (fpath->get_text() == dir) {
last_clicked = hb->get_meta("name");
selected_list.clear();
@@ -929,10 +930,10 @@ void ProjectManager::_open_project_confirm() {
List<String> args;
- args.push_back("-path");
+ args.push_back("--path");
args.push_back(path);
- args.push_back("-editor");
+ args.push_back("--editor");
String exec = OS::get_singleton()->get_executable_path();
@@ -969,7 +970,6 @@ void ProjectManager::_run_project_confirm() {
return;
}
-
const String &selected = E->key();
String path = EditorSettings::get_singleton()->get("projects/" + selected);
@@ -983,7 +983,7 @@ void ProjectManager::_run_project_confirm() {
List<String> args;
- args.push_back("-path");
+ args.push_back("--path");
args.push_back(path);
String exec = OS::get_singleton()->get_executable_path();
@@ -1220,7 +1220,7 @@ ProjectManager::ProjectManager() {
panel->add_child(vb);
vb->set_area_as_parent_rect(20 * EDSCALE);
vb->set_margin(MARGIN_TOP, 4 * EDSCALE);
- vb->set_margin(MARGIN_BOTTOM, 4 * EDSCALE);
+ vb->set_margin(MARGIN_BOTTOM, -4 * EDSCALE);
vb->add_constant_override("separation", 15 * EDSCALE);
String cp;
@@ -1390,9 +1390,6 @@ ProjectManager::ProjectManager() {
_scan_begin(EditorSettings::get_singleton()->get("filesystem/directories/autoscan_project_path"));
}
- //get_ok()->set_text("Open");
- //get_ok()->set_text("Exit");
-
last_clicked = "";
SceneTree::get_singleton()->connect("files_dropped", this, "_files_dropped");
@@ -1450,7 +1447,7 @@ void ProjectListFilter::_filter_option_selected(int p_idx) {
void ProjectListFilter::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE: {
- clear_search_button->set_icon(get_icon("CloseHover", "EditorIcons"));
+ clear_search_button->set_icon(get_icon("Close", "EditorIcons"));
} break;
}
}
diff --git a/editor/project_manager.h b/editor/project_manager.h
index 181d3cc5d9..ecc01955ba 100644
--- a/editor/project_manager.h
+++ b/editor/project_manager.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,7 +30,7 @@
#ifndef PROJECT_MANAGER_H
#define PROJECT_MANAGER_H
-#include "editor/asset_library_editor_plugin.h"
+#include "editor/plugins/asset_library_editor_plugin.h"
#include "scene/gui/dialogs.h"
#include "scene/gui/file_dialog.h"
#include "scene/gui/scroll_container.h"
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 019ed47e81..94fce45733 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,13 +29,13 @@
/*************************************************************************/
#include "project_settings_editor.h"
-#include "editor_node.h"
-#include "global_constants.h"
-#include "os/keyboard.h"
-#include "project_settings.h"
+#include "core/global_constants.h"
+#include "core/os/keyboard.h"
+#include "core/project_settings.h"
+#include "core/translation.h"
+#include "editor/editor_node.h"
#include "scene/gui/margin_container.h"
#include "scene/gui/tab_container.h"
-#include "translation.h"
ProjectSettingsEditor *ProjectSettingsEditor::singleton = NULL;
@@ -184,8 +184,6 @@ void ProjectSettingsEditor::_device_input_add() {
int idx = edit_idx;
Variant old_val = ProjectSettings::get_singleton()->get(name);
Array arr = old_val;
- // ie.device = device_id->get_value();
- // ie.type = add_type;
switch (add_type) {
@@ -505,7 +503,7 @@ void ProjectSettingsEditor::_action_activated() {
void ProjectSettingsEditor::_action_button_pressed(Object *p_obj, int p_column, int p_id) {
- TreeItem *ti = p_obj->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_obj);
ERR_FAIL_COND(!ti);
@@ -619,7 +617,6 @@ void ProjectSettingsEditor::_update_actions() {
continue;
TreeItem *item = input_editor->create_item(root);
- //item->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
item->set_text(0, name);
item->add_button(0, get_icon("Add", "EditorIcons"), 1, false, TTR("Add Event"));
if (!ProjectSettings::get_singleton()->get_input_presets().find(pi.name)) {
@@ -627,7 +624,6 @@ void ProjectSettingsEditor::_update_actions() {
item->set_editable(0, true);
}
item->set_custom_bg_color(0, get_color("prop_subsection", "Editor"));
- //item->set_checked(0,pi.usage&PROPERTY_USAGE_CHECKED);
Array actions = ProjectSettings::get_singleton()->get(pi.name);
@@ -748,22 +744,10 @@ void ProjectSettingsEditor::_item_add() {
}
String catname = category->get_text().strip_edges();
- /*if (!catname.is_valid_identifier()) {
- message->set_text("Invalid Category.\nValid characters: a-z,A-Z,0-9 or _");
- message->popup_centered(Size2(300,100));
- return;
- }*/
-
String propname = property->get_text().strip_edges();
- /*if (!propname.is_valid_identifier()) {
- message->set_text("Invalid Property.\nValid characters: a-z,A-Z,0-9 or _");
- message->popup_centered(Size2(300,100));
- return;
- }*/
-
String name = catname != "" ? catname + "/" + propname : propname;
- undo_redo->create_action("Add Global Property");
+ undo_redo->create_action(TTR("Add Global Property"));
undo_redo->add_do_property(ProjectSettings::get_singleton(), name, value);
@@ -790,7 +774,7 @@ void ProjectSettingsEditor::_item_del() {
String path = globals_editor->get_property_editor()->get_selected_path();
if (path == String()) {
- EditorNode::get_singleton()->show_warning(TTR("Select an setting item first!"));
+ EditorNode::get_singleton()->show_warning(TTR("Select a setting item first!"));
return;
}
@@ -884,8 +868,7 @@ void ProjectSettingsEditor::_save() {
void ProjectSettingsEditor::_settings_prop_edited(const String &p_name) {
- String full_item = globals_editor->get_full_item_path(p_name);
-
+ // Method needed to discard the mandatory argument of the property_edited signal
_settings_changed();
}
@@ -1010,7 +993,7 @@ void ProjectSettingsEditor::_translation_file_open() {
void ProjectSettingsEditor::_translation_delete(Object *p_item, int p_column, int p_button) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
ERR_FAIL_COND(!ti);
int idx = ti->get_metadata(0);
@@ -1151,7 +1134,7 @@ void ProjectSettingsEditor::_translation_res_delete(Object *p_item, int p_column
Dictionary remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps");
- TreeItem *k = p_item->cast_to<TreeItem>();
+ TreeItem *k = Object::cast_to<TreeItem>(p_item);
String key = k->get_metadata(0);
ERR_FAIL_COND(!remaps.has(key));
@@ -1180,7 +1163,7 @@ void ProjectSettingsEditor::_translation_res_option_delete(Object *p_item, int p
TreeItem *k = translation_remap->get_selected();
ERR_FAIL_COND(!k);
- TreeItem *ed = p_item->cast_to<TreeItem>();
+ TreeItem *ed = Object::cast_to<TreeItem>(p_item);
ERR_FAIL_COND(!ed);
String key = k->get_metadata(0);
@@ -1391,12 +1374,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
tab_container = memnew(TabContainer);
tab_container->set_tab_align(TabContainer::ALIGN_LEFT);
add_child(tab_container);
- //set_child_rect(tab_container);
-
- //tab_container->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_BEGIN, 15 );
- //tab_container->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END, 15 );
- //tab_container->set_anchor_and_margin(MARGIN_TOP,ANCHOR_BEGIN, 15 );
- //tab_container->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END, 35 );
VBoxContainer *props_base = memnew(VBoxContainer);
props_base->set_alignment(BoxContainer::ALIGN_BEGIN);
@@ -1480,20 +1457,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
globals_editor->get_property_editor()->connect("property_toggled", this, "_item_checked", varray(), CONNECT_DEFERRED);
globals_editor->get_property_editor()->connect("property_edited", this, "_settings_prop_edited");
- /*
- Button *save = memnew( Button );
- props_base->add_child(save);
-
- save->set_anchor(MARGIN_LEFT,ANCHOR_END);
- save->set_anchor(MARGIN_RIGHT,ANCHOR_END);
- save->set_anchor(MARGIN_TOP,ANCHOR_END);
- save->set_anchor(MARGIN_BOTTOM,ANCHOR_END);
- save->set_begin( Point2(80,28) );
- save->set_end( Point2(10,20) );
- save->set_text("Save");
- save->connect("pressed",this,"_save");
-*/
-
Button *del = memnew(Button);
hbc->add_child(del);
del->set_text(TTR("Delete"));
@@ -1506,16 +1469,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
popup_copy_to_feature->set_disabled(true);
add_prop_bar->add_child(popup_copy_to_feature);
- /*List<StringName> ep;
- EditorImportExport::get_singleton()->get_export_platforms(&ep);
- ep.sort_custom<StringName::AlphCompare>();
-
- for(List<StringName>::Element *E=ep.front();E;E=E->next()) {
-
- popup_copy_to_feature->get_popup()->add_item( E->get() );
-
- }*/
-
popup_copy_to_feature->get_popup()->connect("id_pressed", this, "_copy_to_platform");
popup_copy_to_feature->get_popup()->connect("about_to_show", this, "_copy_to_platform_about_to_show");
@@ -1524,7 +1477,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
message = memnew(ConfirmationDialog);
add_child(message);
- //message->get_cancel()->hide();
message->set_hide_on_ok(true);
Control *input_base = memnew(Control);
@@ -1591,7 +1543,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
hbc = memnew(HBoxContainer);
device_input->add_child(hbc);
- //device_input->set_child_rect(hbc);
VBoxContainer *vbc_left = memnew(VBoxContainer);
hbc->add_child(vbc_left);
@@ -1616,18 +1567,6 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
device_index = memnew(OptionButton);
vbc_right->add_child(device_index);
- /*
- save = memnew( Button );
- input_base->add_child(save);
- save->set_anchor(MARGIN_LEFT,ANCHOR_END);
- save->set_anchor(MARGIN_RIGHT,ANCHOR_END);
- save->set_anchor(MARGIN_TOP,ANCHOR_END);
- save->set_anchor(MARGIN_BOTTOM,ANCHOR_END);
- save->set_begin( Point2(80,28) );
- save->set_end( Point2(10,20) );
- save->set_text("Save");
- save->connect("pressed",this,"_save");
-*/
setting = false;
//translations
@@ -1739,14 +1678,4 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
add_child(timer);
updating_translations = false;
-
- /*
- Control * es = memnew( Control );
- es->set_name("Export");
- tab_container->add_child(es);
- export_settings = memnew( ProjectExportSettings );
- es->add_child(export_settings);
- export_settings->set_area_as_parent_rect();
- export_settings->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END, 35 );
-*/
}
diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h
index 4390a23d60..e4e2345692 100644
--- a/editor/project_settings_editor.h
+++ b/editor/project_settings_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,17 +30,16 @@
#ifndef PROJECT_SETTINGS_H
#define PROJECT_SETTINGS_H
-#include "editor_autoload_settings.h"
-#include "editor_data.h"
-#include "editor_plugin_settings.h"
-#include "property_editor.h"
+#include "core/undo_redo.h"
+#include "editor/editor_autoload_settings.h"
+#include "editor/editor_data.h"
+#include "editor/editor_plugin_settings.h"
+#include "editor/property_editor.h"
#include "scene/gui/dialogs.h"
#include "scene/gui/tab_container.h"
-#include "undo_redo.h"
-
-//#include "project_export_settings.h"
class ProjectSettingsEditor : public AcceptDialog {
+
GDCLASS(ProjectSettingsEditor, AcceptDialog);
enum InputType {
@@ -125,7 +124,6 @@ class ProjectSettingsEditor : public AcceptDialog {
void _settings_prop_edited(const String &p_name);
void _settings_changed();
- //ProjectExportSettings *export_settings;
void _copy_to_platform(int p_which);
void _translation_file_open();
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index dc2c9a2085..a42fb41ee2 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,23 +29,24 @@
/*************************************************************************/
#include "property_editor.h"
-#include "array_property_edit.h"
-#include "class_db.h"
-#include "create_dialog.h"
-#include "editor_export.h"
-#include "editor_file_system.h"
-#include "editor_help.h"
-#include "editor_node.h"
-#include "editor_settings.h"
-#include "io/image_loader.h"
-#include "io/resource_loader.h"
-#include "multi_node_edit.h"
-#include "os/input.h"
-#include "os/keyboard.h"
-#include "pair.h"
-#include "print_string.h"
-#include "project_settings.h"
-#include "property_selector.h"
+#include "core/class_db.h"
+#include "core/io/image_loader.h"
+#include "core/io/marshalls.h"
+#include "core/io/resource_loader.h"
+#include "core/os/input.h"
+#include "core/os/keyboard.h"
+#include "core/pair.h"
+#include "core/print_string.h"
+#include "core/project_settings.h"
+#include "editor/array_property_edit.h"
+#include "editor/create_dialog.h"
+#include "editor/editor_export.h"
+#include "editor/editor_file_system.h"
+#include "editor/editor_help.h"
+#include "editor/editor_node.h"
+#include "editor/editor_settings.h"
+#include "editor/multi_node_edit.h"
+#include "editor/property_selector.h"
#include "scene/gui/label.h"
#include "scene/main/viewport.h"
#include "scene/resources/font.h"
@@ -58,11 +59,6 @@ void CustomPropertyEditor::_notification(int p_what) {
RID ci = get_canvas_item();
get_stylebox("panel", "PopupMenu")->draw(ci, Rect2(Point2(), get_size()));
- /*
- if (v.get_type()==Variant::COLOR) {
-
- VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2( 10,10,60, get_size().height-20 ), v );
- }*/
}
if (p_what == MainLoop::NOTIFICATION_WM_QUIT_REQUEST) {
hide();
@@ -175,7 +171,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
Object *inst = ClassDB::instance(orig_type);
- Ref<Resource> res = Ref<Resource>(inst->cast_to<Resource>());
+ Ref<Resource> res = Ref<Resource>(Object::cast_to<Resource>(inst));
ERR_FAIL_COND(res.is_null());
@@ -201,21 +197,10 @@ void CustomPropertyEditor::_menu_option(int p_which) {
emit_signal("variant_changed");
} break;
- case OBJ_MENU_REIMPORT: {
-
- RES r = v;
- /* if (r.is_valid() && r->get_import_metadata().is_valid()) {
- Ref<ResourceImportMetadata> rimd = r->get_import_metadata();
- Ref<EditorImportPlugin> eip = EditorImportExport::get_singleton()->get_import_plugin_by_name(rimd->get_editor());
- if (eip.is_valid()) {
- eip->import_dialog(r->get_path());
- }
- }*/
- } break;
case OBJ_MENU_NEW_SCRIPT: {
- if (owner->cast_to<Node>())
- EditorNode::get_singleton()->get_scene_tree_dock()->open_script_dialog(owner->cast_to<Node>());
+ if (Object::cast_to<Node>(owner))
+ EditorNode::get_singleton()->get_scene_tree_dock()->open_script_dialog(Object::cast_to<Node>(owner));
} break;
case OBJ_MENU_SHOW_IN_FILE_SYSTEM: {
@@ -242,7 +227,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
Object *obj = ClassDB::instance(intype);
ERR_BREAK(!obj);
- Resource *res = obj->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(obj);
ERR_BREAK(!res);
if (owner && hint == PROPERTY_HINT_RESOURCE_TYPE && hint_text == "Script") {
//make visual script the right type
@@ -434,13 +419,13 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
} else if (hint == PROPERTY_HINT_EXP_EASING) {
easing_draw->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 5 * EDSCALE);
- easing_draw->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 5 * EDSCALE);
+ easing_draw->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -5 * EDSCALE);
easing_draw->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 5 * EDSCALE);
- easing_draw->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, 30 * EDSCALE);
+ easing_draw->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, -30 * EDSCALE);
type_button->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 3 * EDSCALE);
- type_button->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 3 * EDSCALE);
- type_button->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, 25 * EDSCALE);
- type_button->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, 7 * EDSCALE);
+ type_button->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -3 * EDSCALE);
+ type_button->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, -25 * EDSCALE);
+ type_button->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, -7 * EDSCALE);
type_button->set_text(TTR("Preset.."));
type_button->get_popup()->clear();
type_button->get_popup()->add_item(TTR("Linear"), EASING_LINEAR);
@@ -514,8 +499,6 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
text_edit->show();
text_edit->set_text(v);
- //action_buttons[0];
-
int button_margin = get_constant("button_margin", "Dialogs");
int margin = get_constant("margin", "Dialogs");
@@ -523,14 +506,13 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
action_buttons[0]->set_anchor(MARGIN_TOP, ANCHOR_END);
action_buttons[0]->set_anchor(MARGIN_RIGHT, ANCHOR_END);
action_buttons[0]->set_anchor(MARGIN_BOTTOM, ANCHOR_END);
- action_buttons[0]->set_begin(Point2(70 * EDSCALE, button_margin - 5 * EDSCALE));
- action_buttons[0]->set_end(Point2(margin, margin));
+ action_buttons[0]->set_begin(Point2(-70 * EDSCALE, -button_margin + 5 * EDSCALE));
+ action_buttons[0]->set_end(Point2(-margin, -margin));
action_buttons[0]->set_text(TTR("Close"));
action_buttons[0]->show();
} else if (hint == PROPERTY_HINT_TYPE_STRING) {
- /* FIXME: This is repeated twice, with slightly different behavior! Which one? Check line 644 */
if (!create_dialog) {
create_dialog = memnew(CreateDialog);
create_dialog->connect("create", this, "_create_dialog_callback");
@@ -592,8 +574,8 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
MAKE_PROPSELECT
Object *obj = ObjectDB::get_instance(hint_text.to_int64());
- if (obj && obj->cast_to<Script>()) {
- property_select->select_method_from_script(obj->cast_to<Script>(), v);
+ if (Object::cast_to<Script>(obj)) {
+ property_select->select_method_from_script(Object::cast_to<Script>(obj), v);
}
updating = false;
@@ -640,21 +622,13 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
MAKE_PROPSELECT
Object *obj = ObjectDB::get_instance(hint_text.to_int64());
- if (obj && obj->cast_to<Script>()) {
- property_select->select_property_from_script(obj->cast_to<Script>(), v);
+ if (Object::cast_to<Script>(obj)) {
+ property_select->select_property_from_script(Object::cast_to<Script>(obj), v);
}
updating = false;
return false;
- } else if (hint == PROPERTY_HINT_TYPE_STRING) {
- if (!create_dialog) {
- /* FIXME: ... and here. See line 529 */
- create_dialog = memnew(CreateDialog);
- create_dialog->connect("create", this, "_create_dialog_callback");
- add_child(create_dialog);
- }
-
} else {
List<String> names;
names.push_back("string:");
@@ -821,39 +795,6 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
color_picker->set_edit_alpha(hint != PROPERTY_HINT_COLOR_NO_ALPHA);
color_picker->set_pick_color(v);
color_picker->set_focus_on_line_edit();
- /*
- int ofs=80;
- int m=10;
- int h=20;
- Color c=v;
- float values[4]={c.r,c.g,c.b,c.a};
- for (int i=0;i<4;i++) {
- int y=m+i*h;
-
- value_editor[i]->show();
- value_label[i]->show();
- value_label[i]->set_position(Point2(ofs,y));
- scroll[i]->set_min(0);
- scroll[i]->set_max(1.0);
- scroll[i]->set_page(0);
- scroll[i]->set_position(Point2(ofs+15,y+Math::floor((h-scroll[i]->get_minimum_size().height)/2.0)));
- scroll[i]->set_val(values[i]);
- scroll[i]->set_size(Size2(120,1));
- scroll[i]->show();
- value_editor[i]->set_position(Point2(ofs+140,y));
- value_editor[i]->set_size(Size2(40,h));
- value_editor[i]->set_text( String::num(values[i],2 ));
-
- }
-
- value_label[0]->set_text("R");
- value_label[1]->set_text("G");
- value_label[2]->set_text("B");
- value_label[3]->set_text("A");
-
- Size2 new_size = value_editor[3]->get_position() + value_editor[3]->get_size() + Point2(10,10);
- set_size( new_size );
- */
} break;
@@ -863,7 +804,7 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
names.push_back(TTR("Assign"));
names.push_back(TTR("Clear"));
- if (owner->is_class("Node") && (v.get_type() == Variant::NODE_PATH) && owner->cast_to<Node>()->has_node(v))
+ if (owner->is_class("Node") && (v.get_type() == Variant::NODE_PATH) && Object::cast_to<Node>(owner)->has_node(v))
names.push_back(TTR("Select Node"));
config_action_buttons(names);
@@ -877,7 +818,7 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
menu->clear();
menu->set_size(Size2(1, 1) * EDSCALE);
- if (p_name == "script" && hint_text == "Script" && owner->cast_to<Node>()) {
+ if (p_name == "script" && hint_text == "Script" && Object::cast_to<Node>(owner)) {
menu->add_icon_item(get_icon("Script", "EditorIcons"), TTR("New Script"), OBJ_MENU_NEW_SCRIPT);
menu->add_separator();
} else if (hint_text != "") {
@@ -925,22 +866,13 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
if (!RES(v).is_null()) {
menu->add_icon_item(get_icon("Edit", "EditorIcons"), "Edit", OBJ_MENU_EDIT);
- menu->add_icon_item(get_icon("Del", "EditorIcons"), "Clear", OBJ_MENU_CLEAR);
+ menu->add_icon_item(get_icon("Clear", "EditorIcons"), "Clear", OBJ_MENU_CLEAR);
menu->add_icon_item(get_icon("Duplicate", "EditorIcons"), "Make Unique", OBJ_MENU_MAKE_UNIQUE);
RES r = v;
if (r.is_valid() && r->get_path().is_resource_file()) {
- /*if (r->get_import_metadata().is_valid()) {
- menu->add_separator();
- menu->add_icon_item(get_icon("ReloadSmall","EditorIcons"),"Re-Import",OBJ_MENU_REIMPORT);
- }*/
menu->add_separator();
menu->add_item(TTR("Show in File System"), OBJ_MENU_SHOW_IN_FILE_SYSTEM);
}
- /*if (r.is_valid() && r->get_path().is_resource_file()) {
- menu->set_item_tooltip(1,r->get_path());
- } else if (r.is_valid()) {
- menu->set_item_tooltip(1,r->get_name()+" ("+r->get_type()+")");
- }*/
} else {
}
@@ -1006,14 +938,6 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
return true;
}
-////void CustomPropertyEditor::_save_properties_values(List<String> p_names) {
-////
-//// field_names=p_names;
-//// for (int i=0;i<p_names.size();i++) {
-//// field_values.push_back(v.get(p_names[i]));
-//// }
-////}
-
void CustomPropertyEditor::_file_selected(String p_file) {
switch (type) {
@@ -1092,18 +1016,13 @@ void CustomPropertyEditor::_type_create_selected(int p_idx) {
ERR_FAIL_INDEX(p_idx, inheritors_array.size());
- //List<String> inheritors;
- //ClassDB::get_inheriters_from(hint_text,&inheritors);
- //inheritors.push_front(hint_text);
-
- //ERR_FAIL_INDEX( p_idx, inheritors.size() );
String intype = inheritors_array[p_idx];
Object *obj = ClassDB::instance(intype);
ERR_FAIL_COND(!obj);
- Resource *res = obj->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(obj);
ERR_FAIL_COND(!res);
v = Ref<Resource>(res).get_ref_ptr();
@@ -1123,8 +1042,8 @@ void CustomPropertyEditor::_node_path_selected(NodePath p_path) {
if (picking_viewport) {
Node *to_node = get_node(p_path);
- if (!to_node->cast_to<Viewport>()) {
- EditorNode::get_singleton()->show_warning("Selected node is not a Viewport!");
+ if (!Object::cast_to<Viewport>(to_node)) {
+ EditorNode::get_singleton()->show_warning(TTR("Selected node is not a Viewport!"));
return;
}
@@ -1153,9 +1072,9 @@ void CustomPropertyEditor::_node_path_selected(NodePath p_path) {
Node *node = NULL;
if (owner->is_class("Node"))
- node = owner->cast_to<Node>();
+ node = Object::cast_to<Node>(owner);
else if (owner->is_class("ArrayPropertyEdit"))
- node = owner->cast_to<ArrayPropertyEdit>()->get_node();
+ node = Object::cast_to<ArrayPropertyEdit>(owner)->get_node();
if (!node) {
v = p_path;
@@ -1275,9 +1194,9 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
hide();
} else if (p_which == 2) {
- if (owner->is_class("Node") && (v.get_type() == Variant::NODE_PATH) && owner->cast_to<Node>()->has_node(v)) {
+ if (owner->is_class("Node") && (v.get_type() == Variant::NODE_PATH) && Object::cast_to<Node>(owner)->has_node(v)) {
- Node *target_node = owner->cast_to<Node>()->get_node(v);
+ Node *target_node = Object::cast_to<Node>(owner)->get_node(v);
EditorNode::get_singleton()->get_editor_selection()->clear();
EditorNode::get_singleton()->get_scene_tree_dock()->set_selected(target_node);
}
@@ -1298,7 +1217,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
Object *obj = ClassDB::instance(intype);
ERR_BREAK(!obj);
- Resource *res = obj->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(obj);
ERR_BREAK(!res);
v = Ref<Resource>(res).get_ref_ptr();
@@ -1381,33 +1300,6 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
}
}
-void CustomPropertyEditor::_scroll_modified(double p_value) {
-
- if (updating)
- return;
- /*
- switch(type) {
-
- case Variant::COLOR: {
-
- for (int i=0;i<4;i++) {
-
- value_editor[i]->set_text( String::num(scroll[i]->get_val(),2) );
- }
- Color c;
- c.r=scroll[0]->get_val();
- c.g=scroll[1]->get_val();
- c.b=scroll[2]->get_val();
- c.a=scroll[3]->get_val();
- v=c;
- update();
- emit_signal("variant_changed");
- } break;
- default: {}
- }
- */
-}
-
void CustomPropertyEditor::_drag_easing(const Ref<InputEvent> &p_ev) {
Ref<InputEventMouseMotion> mm = p_ev;
@@ -1432,7 +1324,6 @@ void CustomPropertyEditor::_drag_easing(const Ref<InputEvent> &p_ev) {
val = Math::log(val) / Math::log((float)2.0);
//logspace
val += rel * 0.05;
- //
val = Math::pow(2.0f, val);
if (sg)
@@ -1440,11 +1331,8 @@ void CustomPropertyEditor::_drag_easing(const Ref<InputEvent> &p_ev) {
v = val;
easing_draw->update();
- //emit_signal("variant_changed");
emit_signal("variant_changed");
}
- // if (p_ev.type == Ref<InputEvent>::MOUSE_BUTTON && p_ev->get_button_index() == BUTTON_LEFT) {
- // }
}
void CustomPropertyEditor::_draw_easing() {
@@ -1455,7 +1343,6 @@ void CustomPropertyEditor::_draw_easing() {
Rect2 r(Point2(), s);
r = r.grow(3);
get_stylebox("normal", "LineEdit")->draw(ci, r);
- //VisualServer::get_singleton()->canvas_item_add
int points = 48;
@@ -1507,6 +1394,7 @@ void CustomPropertyEditor::_modified(String p_string) {
if (updating)
return;
+
updating = true;
switch (type) {
case Variant::INT: {
@@ -1703,20 +1591,7 @@ void CustomPropertyEditor::_modified(String p_string) {
} break;
case Variant::COLOR: {
- /*
- for (int i=0;i<4;i++) {
- scroll[i]->set_val( value_editor[i]->get_text().to_double() );
- }
- Color c;
- c.r=value_editor[0]->get_text().to_double();
- c.g=value_editor[1]->get_text().to_double();
- c.b=value_editor[2]->get_text().to_double();
- c.a=value_editor[3]->get_text().to_double();
- v=c;
- update();
- emit_signal("variant_changed");
- */
} break;
case Variant::NODE_PATH: {
@@ -1869,7 +1744,6 @@ void CustomPropertyEditor::_bind_methods() {
ClassDB::bind_method("_focus_exit", &CustomPropertyEditor::_focus_exit);
ClassDB::bind_method("_modified", &CustomPropertyEditor::_modified);
ClassDB::bind_method("_range_modified", &CustomPropertyEditor::_range_modified);
- ClassDB::bind_method("_scroll_modified", &CustomPropertyEditor::_scroll_modified);
ClassDB::bind_method("_action_pressed", &CustomPropertyEditor::_action_pressed);
ClassDB::bind_method("_file_selected", &CustomPropertyEditor::_file_selected);
ClassDB::bind_method("_type_create_selected", &CustomPropertyEditor::_type_create_selected);
@@ -1913,7 +1787,6 @@ CustomPropertyEditor::CustomPropertyEditor() {
scroll[i]->set_max(1.0);
scroll[i]->set_step(0.01);
add_child(scroll[i]);
- scroll[i]->connect("value_changed", this, "_scroll_modified");
}
checks20gc = memnew(GridContainer);
@@ -1938,10 +1811,8 @@ CustomPropertyEditor::CustomPropertyEditor() {
text_edit = memnew(TextEdit);
add_child(text_edit);
- text_edit->set_area_as_parent_rect();
- for (int i = 0; i < 4; i++)
- text_edit->set_margin((Margin)i, 5);
- text_edit->set_margin(MARGIN_BOTTOM, 30);
+ text_edit->set_area_as_parent_rect(5);
+ text_edit->set_margin(MARGIN_BOTTOM, -30);
text_edit->hide();
text_edit->connect("text_changed", this, "_text_edit_changed");
@@ -1969,7 +1840,6 @@ CustomPropertyEditor::CustomPropertyEditor() {
error = memnew(ConfirmationDialog);
error->set_title(TTR("Error!"));
add_child(error);
- //error->get_cancel()->hide();
scene_tree = memnew(SceneTreeDialog);
add_child(scene_tree);
@@ -1985,7 +1855,6 @@ CustomPropertyEditor::CustomPropertyEditor() {
easing_draw->hide();
easing_draw->connect("draw", this, "_draw_easing");
easing_draw->connect("gui_input", this, "_drag_easing");
- //easing_draw->emit_signal(SceneStringNames::get_singleton()->input_event,InputEvent());
easing_draw->set_default_cursor_shape(Control::CURSOR_MOVE);
type_button = memnew(MenuButton);
@@ -2018,7 +1887,7 @@ bool PropertyEditor::_might_be_in_instance() {
if (!obj)
return false;
- Node *node = obj->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(obj);
Node *edited_scene = EditorNode::get_singleton()->get_edited_scene();
@@ -2046,7 +1915,7 @@ bool PropertyEditor::_might_be_in_instance() {
bool PropertyEditor::_get_instanced_node_original_property(const StringName &p_prop, Variant &value) {
- Node *node = obj->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(obj);
if (!node)
return false;
@@ -2057,8 +1926,6 @@ bool PropertyEditor::_get_instanced_node_original_property(const StringName &p_p
bool found = false;
- //print_line("for prop - "+String(p_prop));
-
while (node) {
Ref<SceneState> ss;
@@ -2069,13 +1936,11 @@ bool PropertyEditor::_get_instanced_node_original_property(const StringName &p_p
} else {
ss = node->get_scene_instance_state();
}
- //print_line("at - "+String(edited_scene->get_path_to(node)));
if (ss.is_valid()) {
NodePath np = node->get_path_to(orig);
int node_idx = ss->find_node_by_path(np);
- //print_line("\t valid, nodeidx "+itos(node_idx));
if (node_idx >= 0) {
bool lfound = false;
Variant lvar;
@@ -2084,7 +1949,6 @@ bool PropertyEditor::_get_instanced_node_original_property(const StringName &p_p
found = true;
value = lvar;
- //print_line("\t found value "+String(value));
}
}
}
@@ -2101,15 +1965,13 @@ bool PropertyEditor::_get_instanced_node_original_property(const StringName &p_p
bool PropertyEditor::_is_property_different(const Variant &p_current, const Variant &p_orig, int p_usage) {
{
- Node *node = obj->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(obj);
if (!node)
return false;
Node *edited_scene = EditorNode::get_singleton()->get_edited_scene();
bool found_state = false;
- //print_line("for prop - "+String(p_prop));
-
while (node) {
Ref<SceneState> ss;
@@ -2248,8 +2110,6 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String &p
break;
}
- //p_item->set_cell_mode( 1, TreeItem::CELL_MODE_RANGE );
-
if (p_type == Variant::REAL) {
p_item->set_range(1, obj->get(p_name));
@@ -2311,7 +2171,6 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String &p
case Variant::COLOR: {
tree->update();
- //p_item->set_text(1,obj->get(p_name));
} break;
case Variant::NODE_PATH: {
@@ -2320,7 +2179,15 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String &p
} break;
case Variant::OBJECT: {
- if (obj->get(p_name).get_type() == Variant::NIL || obj->get(p_name).operator RefPtr().is_null()) {
+ Ref<EncodedObjectAsID> encoded = obj->get(p_name); //for debugger and remote tools
+
+ if (encoded.is_valid()) {
+
+ p_item->set_text(1, "Object: " + itos(encoded->get_object_id()));
+ p_item->set_icon(1, Ref<Texture>());
+ p_item->set_custom_as_button(1, true);
+
+ } else if (obj->get(p_name).get_type() == Variant::NIL || obj->get(p_name).operator RefPtr().is_null()) {
p_item->set_text(1, "<null>");
p_item->set_icon(1, Ref<Texture>());
p_item->set_custom_as_button(1, false);
@@ -2417,17 +2284,7 @@ void PropertyEditor::_check_reload_status(const String &p_name, TreeItem *item)
if (_get_instanced_node_original_property(p_name, vorig) || usage) {
Variant v = obj->get(p_name);
- bool changed = _is_property_different(v, vorig, usage);
-
- //if ((found!=-1 && !is_disabled)!=changed) {
-
- if (changed) {
-
- has_reload = true;
- } else {
- }
-
- //}
+ bool has_reload = _is_property_different(v, vorig, usage);
}
}
@@ -2446,7 +2303,6 @@ void PropertyEditor::_check_reload_status(const String &p_name, TreeItem *item)
}
}
- //print_line("found: "+itos(found)+" has reload: "+itos(has_reload)+" is_disabled "+itos(is_disabled));
if (found != -1 && !has_reload) {
if (!is_disabled) {
@@ -2474,14 +2330,11 @@ bool PropertyEditor::_is_drop_valid(const Dictionary &p_drag_data, const Diction
String allowed_type = d["hint_text"];
- print_line("allowed type " + allowed_type);
-
Dictionary drag_data = p_drag_data;
if (drag_data.has("type") && String(drag_data["type"]) == "resource") {
Ref<Resource> res = drag_data["resource"];
for (int i = 0; i < allowed_type.get_slice_count(","); i++) {
String at = allowed_type.get_slice(",", i).strip_edges();
- print_line("RES vs " + at);
if (res.is_valid() && ClassDB::is_parent_class(res->get_class(), at)) {
return true;
}
@@ -2492,18 +2345,14 @@ bool PropertyEditor::_is_drop_valid(const Dictionary &p_drag_data, const Diction
Vector<String> files = drag_data["files"];
- print_line("fileS: " + String(Variant(files)));
if (files.size() == 1) {
String file = files[0];
String ftype = EditorFileSystem::get_singleton()->get_file_type(file);
- print_line("file: " + file);
- print_line("type: " + ftype);
if (ftype != "") {
for (int i = 0; i < allowed_type.get_slice_count(","); i++) {
String at = allowed_type.get_slice(",", i).strip_edges();
- print_line("FILE vs " + at);
if (ClassDB::is_parent_class(ftype, at)) {
return true;
}
@@ -2726,7 +2575,6 @@ TreeItem *PropertyEditor::get_parent_node(String p_path, HashMap<String, TreeIte
item = item_paths.get(p_path);
} else {
- //printf("path %s parent path %s - item name %s\n",p_path.ascii().get_data(),p_path.left( p_path.find_last("/") ).ascii().get_data(),p_path.right( p_path.find_last("/") ).ascii().get_data() );
TreeItem *parent = get_parent_node(p_path.left(p_path.find_last("/")), item_paths, root, NULL);
item = tree->create_item(parent);
@@ -2776,64 +2624,6 @@ void PropertyEditor::_refresh_item(TreeItem *p_item) {
if (name != String()) {
_check_reload_status(name, p_item);
-#if 0
- bool has_reload=false;
-
- int found=-1;
- for(int i=0;i<p_item->get_button_count(1);i++) {
-
- if (p_item->get_button_id(1,i)==3) {
- found=i;
- break;
- }
- }
-
- if (_might_be_in_instance()) {
-
- Variant vorig;
- Dictionary d=p_item->get_metadata(0);
- int usage = d.has("usage")?int(int(d["usage"])&(PROPERTY_USAGE_STORE_IF_NONONE|PROPERTY_USAGE_STORE_IF_NONZERO)):0;
-
-
- if (_get_instanced_node_original_property(name,vorig) || usage) {
- Variant v = obj->get(name);
-
-
- bool changed = _is_property_different(v,vorig,usage);
-
- if ((found!=-1)!=changed) {
-
- if (changed) {
-
- has_reload=true;
-
- } else {
-
- //p_item->erase_button(1,found);
- }
-
- }
-
- }
-
- }
-
- if (!has_reload && !obj->get_script().is_null()) {
- Ref<Script> scr = obj->get_script();
- Variant orig_value;
- if (scr->get_property_default_value(name,orig_value)) {
- if (orig_value!=obj->get(name)) {
- has_reload=true;
- }
- }
- }
-
- if (!has_reload && found!=-1) {
- p_item->erase_button(1,found);
- } else if (has_reload && found==-1) {
- p_item->add_button(1,get_icon("ReloadSmall","EditorIcons"),3);
- }
-#endif
Dictionary d = p_item->get_metadata(0);
set_item_text(p_item, d["type"], d["name"], d["hint"], d["hint_text"]);
}
@@ -2867,52 +2657,13 @@ void PropertyEditor::update_tree() {
TreeItem *root = tree->create_item(NULL);
tree->set_hide_root(true);
- /*
- TreeItem *title = tree->create_item(root);
-
- title->set_custom_bg_color(0,get_color("prop_section","Editor"));
- title->set_text(0,"Property"); // todo, fetch name if ID exists in database
- title->set_editable(0,false);
- title->set_selectable(0,false);
- title->set_custom_bg_color(1,get_color("prop_section","Editor"));
- title->set_text(1,"Value"); // todo, fetch name if ID exists in database
- title->set_editable(1,false);
- title->set_selectable(1,false);
-*/
-
- /*
- if (obj->cast_to<Node>() || obj->cast_to<Resource>()) {
- TreeItem *type = tree->create_item(root);
-
- type->set_text(0,"Type"); // todo, fetch name if ID exists in database
- type->set_text(1,obj->get_type()); // todo, fetch name if ID exists in database
- if (has_icon(obj->get_type(),"EditorIcons"))
- type->set_icon(1,get_icon(obj->get_type(),"EditorIcons") );
- else
- type->set_icon(1,get_icon("Object","EditorIcons") );
-
- type->set_selectable(0,false);
- type->set_selectable(1,false);
-
-
- TreeItem *name = tree->create_item(root);
-
- name->set_text(0,"Name"); // todo, fetch name if ID exists in database
- if (obj->is_type("Resource"))
- name->set_text(1,obj->cast_to<Resource>()->get_name());
- else if (obj->is_type("Node"))
- name->set_text(1,obj->cast_to<Node>()->get_name());
- name->set_selectable(0,false);
- name->set_selectable(1,false);
- }
-*/
List<PropertyInfo> plist;
obj->get_property_list(&plist, true);
bool draw_red = false;
{
- Node *nod = obj->cast_to<Node>();
+ Node *nod = Object::cast_to<Node>(obj);
Node *es = EditorNode::get_singleton()->get_edited_scene();
if (nod && es != nod && nod->get_owner() != es) {
draw_red = true;
@@ -2996,9 +2747,8 @@ void PropertyEditor::update_tree() {
sep->set_tooltip(0, TTR("Class:") + " " + p.name + ":\n\n" + class_descr_cache[type]);
}
- //sep->set_custom_color(0,Color(1,1,1));
-
continue;
+
} else if (!(p.usage & PROPERTY_USAGE_EDITOR))
continue;
@@ -3050,12 +2800,7 @@ void PropertyEditor::update_tree() {
continue;
}
- //printf("property %s\n",basename.ascii().get_data());
TreeItem *parent = get_parent_node(path, item_path, root, current_category);
- /*
- if (parent->get_parent()==root)
- parent=root;
- */
int level = 0;
if (parent != root) {
level++;
@@ -3075,7 +2820,6 @@ void PropertyEditor::update_tree() {
if (level > 0) {
item->set_custom_bg_color(0, col);
- //item->set_custom_bg_color(1,col);
}
item->set_editable(0, false);
item->set_selectable(0, property_selectable);
@@ -3137,7 +2881,6 @@ void PropertyEditor::update_tree() {
item->set_tooltip(0, TTR("Property:") + " " + p.name + "\n\n" + descr);
}
}
- //EditorHelp::get_doc_data();
Dictionary d;
d["name"] = p.name;
@@ -3157,7 +2900,6 @@ void PropertyEditor::update_tree() {
item->select(1);
}
- //printf("property %s type %i\n",p.name.ascii().get_data(),p.type);
switch (p.type) {
case Variant::BOOL: {
@@ -3197,7 +2939,6 @@ void PropertyEditor::update_tree() {
item->set_cell_mode(1, TreeItem::CELL_MODE_CUSTOM);
item->set_editable(1, !read_only);
- //item->set_icon( 0, get_icon("Curve","EditorIcons"));
Vector<String> values = p.hint_string.split(",");
String flags;
@@ -3244,7 +2985,6 @@ void PropertyEditor::update_tree() {
item->set_range_config(1, min, max, step, p.hint == PROPERTY_HINT_EXP_RANGE);
} else if (p.hint == PROPERTY_HINT_ENUM) {
- //int c = p.hint_string.get_slice_count(",");
item->set_text(1, p.hint_string);
if (show_type_icons)
item->set_icon(0, get_icon("Enum", "EditorIcons"));
@@ -3253,7 +2993,6 @@ void PropertyEditor::update_tree() {
break;
} else if (p.hint == PROPERTY_HINT_OBJECT_ID) {
- //int c = p.hint_string.get_slice_count(",");
item->set_cell_mode(1, TreeItem::CELL_MODE_CUSTOM);
String type = p.hint_string;
@@ -3584,7 +3323,6 @@ void PropertyEditor::update_tree() {
item->set_cell_mode(1, TreeItem::CELL_MODE_CUSTOM);
item->set_editable(1, !read_only);
- //item->set_text(1,obj->get(p.name));
item->set_custom_draw(1, this, "_draw_transparency");
if (show_type_icons)
item->set_icon(0, get_icon("Color", "EditorIcons"));
@@ -3603,14 +3341,22 @@ void PropertyEditor::update_tree() {
item->set_cell_mode(1, TreeItem::CELL_MODE_CUSTOM);
item->set_editable(1, !read_only);
- //item->add_button(1, get_icon("EditResource", "EditorIcons"));
String type;
if (p.hint == PROPERTY_HINT_RESOURCE_TYPE)
type = p.hint_string;
RES res = obj->get(p.name).operator RefPtr();
- if (obj->get(p.name).get_type() == Variant::NIL || res.is_null()) {
+ Ref<EncodedObjectAsID> encoded = obj->get(p.name); //for debugger and remote tools
+
+ if (encoded.is_valid()) {
+
+ item->set_text(1, "Object: " + itos(encoded->get_object_id()));
+ item->set_icon(1, Ref<Texture>());
+ item->set_custom_as_button(1, true);
+ item->set_editable(1, true);
+
+ } else if (obj->get(p.name).get_type() == Variant::NIL || res.is_null()) {
item->set_text(1, "<null>");
item->set_icon(1, Ref<Texture>());
item->set_custom_as_button(1, false);
@@ -3659,15 +3405,12 @@ void PropertyEditor::update_tree() {
if (type != String()) {
if (type.find(",") != -1)
type = type.get_slice(",", 0);
- //printf("prop %s , type %s\n",p.name.ascii().get_data(),p.hint_string.ascii().get_data());
if (has_icon(type, "EditorIcons"))
item->set_icon(0, get_icon(type, "EditorIcons"));
else
item->set_icon(0, get_icon("Object", "EditorIcons"));
}
- //item->double_click_signal.connect( Method1<int>( Method2<int,String>( this, &Editoritem_obj_edited ), p.name ) );
-
} break;
default: {};
}
@@ -3694,7 +3437,6 @@ void PropertyEditor::update_tree() {
Variant v = obj->get(p.name);
if (_is_property_different(v, vorig, usage)) {
- //print_line("FOR "+String(p.name)+" RELOAD WITH: "+String(v)+"("+Variant::get_type_name(v.get_type())+")=="+String(vorig)+"("+Variant::get_type_name(vorig.get_type())+")");
item->add_button(1, get_icon("ReloadSmall", "EditorIcons"), 3);
has_reload = true;
}
@@ -3726,7 +3468,7 @@ void PropertyEditor::update_tree() {
void PropertyEditor::_draw_transparency(Object *t, const Rect2 &p_rect) {
- TreeItem *ti = t->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(t);
if (!ti)
return;
@@ -3747,7 +3489,7 @@ void PropertyEditor::_item_folded(Object *item_obj) {
if (updating_folding)
return;
- TreeItem *item = item_obj->cast_to<TreeItem>();
+ TreeItem *item = Object::cast_to<TreeItem>(item_obj);
obj->editor_set_section_unfold(item->get_metadata(0), !item->is_collapsed());
}
@@ -3773,7 +3515,7 @@ void PropertyEditor::_edit_set(const String &p_name, const Variant &p_value, boo
}
}
- if (!undo_redo || obj->cast_to<ArrayPropertyEdit>()) { //kind of hacky
+ if (!undo_redo || Object::cast_to<ArrayPropertyEdit>(obj)) { //kind of hacky
obj->set(p_name, p_value);
if (p_refresh_all)
@@ -3783,9 +3525,9 @@ void PropertyEditor::_edit_set(const String &p_name, const Variant &p_value, boo
emit_signal(_prop_edited, p_name);
- } else if (obj->cast_to<MultiNodeEdit>()) {
+ } else if (Object::cast_to<MultiNodeEdit>(obj)) {
- obj->cast_to<MultiNodeEdit>()->set_property_field(p_name, p_value, p_changed_field);
+ Object::cast_to<MultiNodeEdit>(obj)->set_property_field(p_name, p_value, p_changed_field);
_changed_callbacks(obj, p_name);
emit_signal(_prop_edited, p_name);
} else {
@@ -3803,7 +3545,7 @@ void PropertyEditor::_edit_set(const String &p_name, const Variant &p_value, boo
undo_redo->add_undo_method(this, "_changed_callback", obj, p_name);
}
- Resource *r = obj->cast_to<Resource>();
+ Resource *r = Object::cast_to<Resource>(obj);
if (r) {
if (!r->is_edited() && String(p_name) != "resource/edited") {
undo_redo->add_do_method(r, "set_edited", true);
@@ -3926,9 +3668,8 @@ void PropertyEditor::_item_edited() {
case Variant::TRANSFORM: {
} break;
-
case Variant::COLOR: {
- //_edit_set(name,item->get_custom_bg_color(0));
+
} break;
case Variant::NODE_PATH: {
@@ -3939,6 +3680,13 @@ void PropertyEditor::_item_edited() {
if (!item->is_custom_set_as_button(1))
break;
+ Ref<EncodedObjectAsID> encoded = obj->get(name); //for debugger and remote tools
+
+ if (encoded.is_valid()) {
+
+ emit_signal("object_id_selected", encoded->get_object_id());
+ }
+
RES res = obj->get(name);
if (res.is_valid()) {
emit_signal("resource_selected", res.get_ref_ptr(), name);
@@ -4007,7 +3755,6 @@ void PropertyEditor::_custom_editor_request(bool p_arrow) {
ERR_FAIL_COND(!item);
Dictionary d = item->get_metadata(0);
- //int type=d["type"];
String name = d["name"];
Variant::Type type = Variant::NIL;
if (d.has("type"))
@@ -4047,7 +3794,7 @@ void PropertyEditor::edit(Object *p_object) {
void PropertyEditor::_set_range_def(Object *p_item, String prop, float p_frame) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
ERR_FAIL_COND(!ti);
ti->call_deferred("set_range", 1, p_frame);
@@ -4055,7 +3802,8 @@ void PropertyEditor::_set_range_def(Object *p_item, String prop, float p_frame)
}
void PropertyEditor::_edit_button(Object *p_item, int p_column, int p_button) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
ERR_FAIL_COND(!ti);
Dictionary d = ti->get_metadata(0);
@@ -4072,7 +3820,6 @@ void PropertyEditor::_edit_button(Object *p_item, int p_column, int p_button) {
return;
String prop = d["name"];
emit_signal("property_keyed", prop, obj->get(prop), true);
- //set_range(p_column, ti->get_range(p_column)+1.0 );
call_deferred("_set_range_def", ti, prop, ti->get_range(p_column) + 1.0);
} else if (p_button == 3) {
@@ -4133,7 +3880,6 @@ void PropertyEditor::_edit_button(Object *p_item, int p_column, int p_button) {
Variant v = obj->get(n);
custom_editor->edit(obj, n, (Variant::Type)t, v, h, ht);
- //Rect2 where=tree->get_custom_popup_rect();
if (h == PROPERTY_HINT_FILE || h == PROPERTY_HINT_DIR || h == PROPERTY_HINT_GLOBAL_DIR || h == PROPERTY_HINT_GLOBAL_FILE) {
Rect2 where = tree->get_item_rect(ti, 1);
@@ -4155,7 +3901,6 @@ void PropertyEditor::_edit_button(Object *p_item, int p_column, int p_button) {
} else if (t == Variant::INT && h == PROPERTY_HINT_OBJECT_ID) {
emit_signal("object_id_selected", obj->get(n));
- print_line("OBJ ID SELECTED");
} else if (t == Variant::ARRAY || t == Variant::POOL_INT_ARRAY || t == Variant::POOL_REAL_ARRAY || t == Variant::POOL_STRING_ARRAY || t == Variant::POOL_VECTOR2_ARRAY || t == Variant::POOL_VECTOR3_ARRAY || t == Variant::POOL_COLOR_ARRAY || t == Variant::POOL_BYTE_ARRAY) {
@@ -4177,7 +3922,6 @@ void PropertyEditor::_edit_button(Object *p_item, int p_column, int p_button) {
void PropertyEditor::_node_removed(Node *p_node) {
if (p_node == obj) {
-
edit(NULL);
}
}
@@ -4191,9 +3935,9 @@ void PropertyEditor::set_keying(bool p_active) {
update_tree();
}
-void PropertyEditor::_draw_flags(Object *t, const Rect2 &p_rect) {
+void PropertyEditor::_draw_flags(Object *p_object, const Rect2 &p_rect) {
- TreeItem *ti = t->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_object);
if (!ti)
return;
@@ -4245,7 +3989,7 @@ void PropertyEditor::_resource_preview_done(const String &p_path, const Ref<Text
if (!obj)
return;
- TreeItem *ti = obj->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(obj);
ERR_FAIL_COND(!ti);
@@ -4351,7 +4095,7 @@ void PropertyEditor::set_use_filter(bool p_use) {
void PropertyEditor::register_text_enter(Node *p_line_edit) {
ERR_FAIL_NULL(p_line_edit);
- search_box = p_line_edit->cast_to<LineEdit>();
+ search_box = Object::cast_to<LineEdit>(p_line_edit);
if (search_box)
search_box->connect("text_changed", this, "_filter_changed");
@@ -4409,8 +4153,6 @@ PropertyEditor::PropertyEditor() {
tree->set_column_min_width(0, 30);
tree->set_column_expand(1, true);
tree->set_column_min_width(1, 18);
-
- //tree->set_hide_root(true);
add_child(tree);
tree->connect("item_edited", this, "_item_edited", varray(), CONNECT_DEFERRED);
@@ -4479,7 +4221,6 @@ class SectionedPropertyEditorFilter : public Object {
bool valid;
edited->set(name, p_value, &valid);
- //_change_notify(p_name.operator String().utf8().get_data());
return valid;
}
@@ -4774,20 +4515,20 @@ double PropertyValueEvaluator::eval(const String &p_text) {
return _default_eval(p_text);
}
- ScriptInstance *script_instance = script->instance_create(this);
+ Object dummy;
+ ScriptInstance *script_instance = script->instance_create(&dummy);
if (!script_instance)
return _default_eval(p_text);
Variant::CallError call_err;
- script_instance->call("set_this", obj);
- double result = script_instance->call("e", NULL, 0, call_err);
+ Variant arg = obj;
+ const Variant *args[] = { &arg };
+ double result = script_instance->call("eval", args, 1, call_err);
if (call_err.error == Variant::CallError::CALL_OK) {
return result;
}
print_line("[PropertyValueEvaluator]: Error eval! Error code: " + itos(call_err.error));
- memdelete(script_instance);
-
return _default_eval(p_text);
}
@@ -4796,9 +4537,7 @@ void PropertyValueEvaluator::edit(Object *p_obj) {
}
String PropertyValueEvaluator::_build_script(const String &p_text) {
- String script_text = "tool\nvar this\nfunc set_this(p_this):\n\tthis=p_this\nfunc e():\n\treturn ";
- script_text += p_text.strip_edges();
- script_text += "\n";
+ String script_text = "tool\nextends Object\nfunc eval(s):\n\tself = s\n\treturn " + p_text.strip_edges() + "\n";
return script_text;
}
diff --git a/editor/property_editor.h b/editor/property_editor.h
index cc507d248f..bfd5ee401e 100644
--- a/editor/property_editor.h
+++ b/editor/property_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -31,6 +31,7 @@
#define PROPERTY_EDITOR_H
#include "editor/editor_file_dialog.h"
+#include "editor/scene_tree_editor.h"
#include "scene/gui/button.h"
#include "scene/gui/check_box.h"
#include "scene/gui/check_button.h"
@@ -43,7 +44,6 @@
#include "scene/gui/text_edit.h"
#include "scene/gui/texture_rect.h"
#include "scene/gui/tree.h"
-#include "scene_tree_editor.h"
/**
@author Juan Linietsky <reduzio@gmail.com>
@@ -66,9 +66,8 @@ class CustomPropertyEditor : public Popup {
OBJ_MENU_MAKE_UNIQUE = 3,
OBJ_MENU_COPY = 4,
OBJ_MENU_PASTE = 5,
- OBJ_MENU_REIMPORT = 6,
- OBJ_MENU_NEW_SCRIPT = 7,
- OBJ_MENU_SHOW_IN_FILE_SYSTEM = 8,
+ OBJ_MENU_NEW_SCRIPT = 6,
+ OBJ_MENU_SHOW_IN_FILE_SYSTEM = 7,
TYPE_BASE_ID = 100
};
@@ -120,7 +119,6 @@ class CustomPropertyEditor : public Popup {
void _text_edit_changed();
void _file_selected(String p_file);
- void _scroll_modified(double p_value);
void _modified(String p_string);
void _range_modified(double p_value);
void _focus_enter();
@@ -168,7 +166,6 @@ class PropertyEditor : public Control {
Tree *tree;
Label *top_label;
- //Object *object;
LineEdit *search_box;
PropertyValueEvaluator *evaluator;
@@ -217,8 +214,8 @@ class PropertyEditor : public Control {
TreeItem *find_item(TreeItem *p_item, const String &p_name);
- virtual void _changed_callback(Object *p_changed, const char *p_what);
- virtual void _changed_callbacks(Object *p_changed, const String &p_callback);
+ virtual void _changed_callback(Object *p_changed, const char *p_prop);
+ virtual void _changed_callbacks(Object *p_changed, const String &p_prop);
void _check_reload_status(const String &p_name, TreeItem *item);
@@ -228,7 +225,7 @@ class PropertyEditor : public Control {
friend class ProjectExportDialog;
void _edit_set(const String &p_name, const Variant &p_value, bool p_refresh_all = false, const String &p_changed_field = "");
- void _draw_flags(Object *ti, const Rect2 &p_rect);
+ void _draw_flags(Object *p_object, const Rect2 &p_rect);
bool _might_be_in_instance();
bool _get_instanced_node_original_property(const StringName &p_prop, Variant &value);
diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp
index bd68eac9f2..6bbb35ceab 100644
--- a/editor/property_selector.cpp
+++ b/editor/property_selector.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -98,10 +98,10 @@ void PropertySelector::_update_search() {
} else {
Object *obj = ObjectDB::get_instance(script);
- if (obj && obj->cast_to<Script>()) {
+ if (Object::cast_to<Script>(obj)) {
props.push_back(PropertyInfo(Variant::NIL, "Script Variables", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_CATEGORY));
- obj->cast_to<Script>()->get_script_property_list(&props);
+ Object::cast_to<Script>(obj)->get_script_property_list(&props);
}
StringName base = base_type;
@@ -200,10 +200,10 @@ void PropertySelector::_update_search() {
} else {
Object *obj = ObjectDB::get_instance(script);
- if (obj && obj->cast_to<Script>()) {
+ if (Object::cast_to<Script>(obj)) {
methods.push_back(MethodInfo("*Script Methods"));
- obj->cast_to<Script>()->get_script_method_list(&methods);
+ Object::cast_to<Script>(obj)->get_script_method_list(&methods);
}
StringName base = base_type;
diff --git a/editor/property_selector.h b/editor/property_selector.h
index def791a3fd..3fa60771d7 100644
--- a/editor/property_selector.h
+++ b/editor/property_selector.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/pvrtc_compress.cpp b/editor/pvrtc_compress.cpp
index ef875bbead..13d74a6593 100644
--- a/editor/pvrtc_compress.cpp
+++ b/editor/pvrtc_compress.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/pvrtc_compress.h b/editor/pvrtc_compress.h
index 2bb6d57050..cd11f260fe 100644
--- a/editor/pvrtc_compress.h
+++ b/editor/pvrtc_compress.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp
index 7fb9666afb..c71cc5af3f 100644
--- a/editor/quick_open.cpp
+++ b/editor/quick_open.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/quick_open.h b/editor/quick_open.h
index 44f8c025e6..3f64dd8cf0 100644
--- a/editor/quick_open.h
+++ b/editor/quick_open.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/register_exporters.h b/editor/register_exporters.h
index 72f8acb89c..fefa1477b8 100644
--- a/editor/register_exporters.h
+++ b/editor/register_exporters.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/reparent_dialog.cpp b/editor/reparent_dialog.cpp
index acc511e004..5e765fe70f 100644
--- a/editor/reparent_dialog.cpp
+++ b/editor/reparent_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/reparent_dialog.h b/editor/reparent_dialog.h
index b7a3164f4b..667c7fe705 100644
--- a/editor/reparent_dialog.h
+++ b/editor/reparent_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/resources_dock.cpp b/editor/resources_dock.cpp
deleted file mode 100644
index db3bf6a352..0000000000
--- a/editor/resources_dock.cpp
+++ /dev/null
@@ -1,378 +0,0 @@
-/*************************************************************************/
-/* resources_dock.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "resources_dock.h"
-
-#include "editor_file_system.h"
-#include "editor_node.h"
-#include "editor_settings.h"
-#include "io/resource_loader.h"
-#include "io/resource_saver.h"
-#include "project_settings.h"
-#include "project_settings_editor.h"
-
-void ResourcesDock::_tool_selected(int p_tool) {
-
- current_action = p_tool;
-
- switch (p_tool) {
-
- case TOOL_NEW: {
-
- create_dialog->popup_centered_ratio();
- } break;
- case TOOL_OPEN: {
- editor->open_resource();
-
- } break;
- case TOOL_SAVE: {
-
- TreeItem *ti = resources->get_selected();
- if (!ti)
- break;
- Ref<Resource> current_res = ti->get_metadata(0);
-
- if (current_res->get_path() != "" && current_res->get_path().find("::") == -1) {
- _file_action(current_res->get_path());
- break;
- };
-
- }; /* fallthrough */
- case TOOL_SAVE_AS: {
-
- TreeItem *ti = resources->get_selected();
- if (!ti)
- break;
-
- save_resource_as(ti->get_metadata(0));
-
- } break;
- case TOOL_MAKE_LOCAL: {
-
- TreeItem *ti = resources->get_selected();
- if (!ti)
- break;
- Ref<Resource> current_res = ti->get_metadata(0);
- current_res->set_path("");
- _update_name(ti);
- } break;
- case TOOL_COPY: {
-
- TreeItem *ti = resources->get_selected();
- if (!ti)
- break;
- Ref<Resource> current_res = ti->get_metadata(0);
- EditorSettings::get_singleton()->set_resource_clipboard(current_res);
-
- } break;
- case TOOL_PASTE: {
-
- add_resource(EditorSettings::get_singleton()->get_resource_clipboard());
- } break;
- }
-}
-
-void ResourcesDock::_notification(int p_what) {
-
- switch (p_what) {
-
- case NOTIFICATION_ENTER_TREE: {
-
- button_new->set_icon(get_icon("New", "EditorIcons"));
- button_open->set_icon(get_icon("Folder", "EditorIcons"));
- button_save->set_icon(get_icon("Save", "EditorIcons"));
- button_tools->set_icon(get_icon("Tools", "EditorIcons"));
-
- } break;
- }
-}
-
-void ResourcesDock::save_resource(const String &p_path, const Ref<Resource> &p_resource) {
-
- editor->get_editor_data().apply_changes_in_editors();
- int flg = 0;
- if (EditorSettings::get_singleton()->get("on_save/compress_binary_resources"))
- flg |= ResourceSaver::FLAG_COMPRESS;
- /*
- if (EditorSettings::get_singleton()->get("on_save/save_paths_as_relative"))
- flg|=ResourceSaver::FLAG_RELATIVE_PATHS;
- */
-
- String path = ProjectSettings::get_singleton()->localize_path(p_path);
- Error err = ResourceSaver::save(path, p_resource, flg | ResourceSaver::FLAG_REPLACE_SUBRESOURCE_PATHS);
-
- if (err != OK) {
- accept->set_text(TTR("Error saving resource!"));
- accept->popup_centered_minsize();
- return;
- }
- //EditorFileSystem::get_singleton()->update_file(path,p_resource->get_type());
-
- ((Resource *)p_resource.ptr())->set_path(path);
- editor->emit_signal("resource_saved", p_resource);
-}
-
-void ResourcesDock::save_resource_as(const Ref<Resource> &p_resource) {
-
- current_action = TOOL_SAVE_AS;
-
- RES res(p_resource);
-
- List<String> extensions;
- ResourceSaver::get_recognized_extensions(res, &extensions);
- file->set_mode(EditorFileDialog::MODE_SAVE_FILE);
-
- if (p_resource->get_path() != "" && p_resource->get_path().find("::") == -1) {
-
- file->set_current_path(p_resource->get_path());
- } else {
-
- String existing;
- if (extensions.size()) {
- existing = "new_" + res->get_class().to_lower() + "." + extensions.front()->get().to_lower();
- }
-
- file->set_current_file(existing);
- }
-
- file->clear_filters();
- for (int i = 0; i < extensions.size(); i++) {
-
- file->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
- }
-
- file->popup_centered_ratio();
-}
-
-void ResourcesDock::_file_action(const String &p_path) {
-
- switch (current_action) {
-
- case TOOL_OPEN: {
-
- } break;
- case TOOL_SAVE:
- case TOOL_SAVE_AS: {
-
- TreeItem *ti = resources->get_selected();
- if (!ti)
- break;
- Ref<Resource> current_res = ti->get_metadata(0);
-
- RES res(current_res);
-
- save_resource(p_path, res);
-
- _update_name(ti);
-
- } break;
- }
-}
-
-void ResourcesDock::_update_name(TreeItem *item) {
-
- Ref<Resource> res = item->get_metadata(0);
-
- if (res->get_name() != "")
- item->set_text(0, res->get_name());
- else if (res->get_path() != "" && res->get_path().find("::") == -1)
- item->set_text(0, res->get_path().get_file());
- else
- item->set_text(0, res->get_class() + " (" + itos(res->get_instance_id()) + ")");
-}
-
-void ResourcesDock::remove_resource(const Ref<Resource> &p_resource) {
-
- TreeItem *root = resources->get_root();
- ERR_FAIL_COND(!root);
-
- TreeItem *existing = root->get_children();
-
- while (existing) {
-
- Ref<Resource> r = existing->get_metadata(0);
- if (r == p_resource) {
- //existing->move_to_top();
- memdelete(existing);
- return;
- }
- existing = existing->get_next();
- }
-}
-
-void ResourcesDock::add_resource(const Ref<Resource> &p_resource) {
-
- if (block_add)
- return;
- if (!p_resource.is_valid())
- return;
-
- TreeItem *root = resources->get_root();
- ERR_FAIL_COND(!root);
-
- TreeItem *existing = root->get_children();
-
- while (existing) {
-
- Ref<Resource> r = existing->get_metadata(0);
- if (r == p_resource) {
- //existing->move_to_top();
- existing->select(0);
- resources->ensure_cursor_is_visible();
- return; // existing
- }
- existing = existing->get_next();
- }
-
- TreeItem *res = resources->create_item(root);
- res->set_metadata(0, p_resource);
-
- if (has_icon(p_resource->get_class(), "EditorIcons")) {
- res->set_icon(0, get_icon(p_resource->get_class(), "EditorIcons"));
- }
-
- _update_name(res);
- res->add_button(0, get_icon("Del", "EditorIcons"));
- res->move_to_top();
- res->select(0);
- resources->ensure_cursor_is_visible();
-}
-
-void ResourcesDock::_resource_selected() {
-
- TreeItem *sel = resources->get_selected();
- ERR_FAIL_COND(!sel);
-
- Ref<Resource> r = sel->get_metadata(0);
- if (r.is_null())
- return;
- block_add = true;
- editor->push_item(r.ptr());
- block_add = false;
-}
-
-void ResourcesDock::_delete(Object *p_item, int p_column, int p_id) {
-
- TreeItem *ti = p_item->cast_to<TreeItem>();
- ERR_FAIL_COND(!ti);
-
- call_deferred("remove_resource", ti->get_metadata(0));
-}
-
-void ResourcesDock::_create() {
-
- Object *c = create_dialog->instance_selected();
-
- ERR_FAIL_COND(!c);
- Resource *r = c->cast_to<Resource>();
- ERR_FAIL_COND(!r);
-
- REF res(r);
-
- editor->push_item(c);
-}
-
-void ResourcesDock::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("_tool_selected"), &ResourcesDock::_tool_selected);
- ClassDB::bind_method(D_METHOD("_create"), &ResourcesDock::_create);
- ClassDB::bind_method(D_METHOD("_resource_selected"), &ResourcesDock::_resource_selected);
- ClassDB::bind_method(D_METHOD("_delete"), &ResourcesDock::_delete);
- ClassDB::bind_method(D_METHOD("remove_resource"), &ResourcesDock::remove_resource);
- ClassDB::bind_method(D_METHOD("_file_action"), &ResourcesDock::_file_action);
-}
-
-void ResourcesDock::cleanup() {
-
- resources->clear();
- resources->create_item(); //root
-}
-
-ResourcesDock::ResourcesDock(EditorNode *p_editor) {
-
- editor = p_editor;
-
- VBoxContainer *vbc = this;
-
- HBoxContainer *hbc = memnew(HBoxContainer);
- vbc->add_child(hbc);
-
- Button *b;
- b = memnew(ToolButton);
- b->set_tooltip(TTR("Create New Resource"));
- b->connect("pressed", this, "_tool_selected", make_binds(TOOL_NEW));
- hbc->add_child(b);
- button_new = b;
-
- b = memnew(ToolButton);
- b->set_tooltip(TTR("Open Resource"));
- b->connect("pressed", this, "_tool_selected", make_binds(TOOL_OPEN));
- hbc->add_child(b);
- button_open = b;
-
- MenuButton *mb = memnew(MenuButton);
- mb->set_tooltip(TTR("Save Resource"));
- mb->get_popup()->add_item(TTR("Save Resource"), TOOL_SAVE);
- mb->get_popup()->add_item(TTR("Save Resource As.."), TOOL_SAVE_AS);
- mb->get_popup()->connect("id_pressed", this, "_tool_selected");
- hbc->add_child(mb);
- button_save = mb;
-
- hbc->add_spacer();
-
- mb = memnew(MenuButton);
- mb->set_tooltip(TTR("Resource Tools"));
- mb->get_popup()->add_item(TTR("Make Local"), TOOL_MAKE_LOCAL);
- mb->get_popup()->add_item(TTR("Copy"), TOOL_COPY);
- mb->get_popup()->add_item(TTR("Paste"), TOOL_PASTE);
- mb->get_popup()->connect("id_pressed", this, "_tool_selected");
- hbc->add_child(mb);
- button_tools = mb;
-
- resources = memnew(Tree);
- vbc->add_child(resources);
- resources->set_v_size_flags(SIZE_EXPAND_FILL);
- resources->create_item(); //root
- resources->set_hide_root(true);
- resources->connect("cell_selected", this, "_resource_selected");
- resources->connect("button_pressed", this, "_delete");
-
- create_dialog = memnew(CreateDialog);
- add_child(create_dialog);
- create_dialog->set_base_type("Resource");
- create_dialog->connect("create", this, "_create");
- accept = memnew(AcceptDialog);
- add_child(accept);
-
- file = memnew(EditorFileDialog);
- add_child(file);
- file->connect("file_selected", this, "_file_action");
-
- block_add = false;
-}
diff --git a/editor/resources_dock.h b/editor/resources_dock.h
deleted file mode 100644
index f58f8e4c54..0000000000
--- a/editor/resources_dock.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************/
-/* resources_dock.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 RESOURCES_DOCK_H
-#define RESOURCES_DOCK_H
-
-#include "create_dialog.h"
-#include "editor_file_dialog.h"
-#include "scene/gui/box_container.h"
-#include "scene/gui/button.h"
-#include "scene/gui/control.h"
-#include "scene/gui/file_dialog.h"
-#include "scene/gui/label.h"
-#include "scene/gui/menu_button.h"
-#include "scene/gui/tool_button.h"
-#include "scene/gui/tree.h"
-
-class EditorNode;
-
-class ResourcesDock : public VBoxContainer {
-
- GDCLASS(ResourcesDock, VBoxContainer);
-
- enum {
- TOOL_NEW,
- TOOL_OPEN,
- TOOL_SAVE,
- TOOL_SAVE_AS,
- TOOL_MAKE_LOCAL,
- TOOL_COPY,
- TOOL_PASTE,
- TOOL_MAX
- };
-
- EditorNode *editor;
-
- Button *button_new;
- Button *button_open;
- Button *button_save;
- Button *button_tools;
-
- CreateDialog *create_dialog;
-
- AcceptDialog *accept;
- EditorFileDialog *file;
- Tree *resources;
- bool block_add;
- int current_action;
-
- void _file_action(const String &p_action);
-
- void _delete(Object *p_item, int p_column, int p_id);
- void _resource_selected();
- void _update_name(TreeItem *item);
- void _tool_selected(int p_tool);
- void _create();
-
-protected:
- void _notification(int p_what);
- static void _bind_methods();
-
-public:
- void add_resource(const Ref<Resource> &p_resource);
- void remove_resource(const Ref<Resource> &p_resource);
- void save_resource(const String &p_path, const Ref<Resource> &p_resource);
- void save_resource_as(const Ref<Resource> &p_resource);
-
- void cleanup();
-
- ResourcesDock(EditorNode *p_editor);
-};
-
-#endif // RESOURCES_DOCK_H
diff --git a/editor/run_settings_dialog.cpp b/editor/run_settings_dialog.cpp
index 4548ae0939..a76e94a173 100644
--- a/editor/run_settings_dialog.cpp
+++ b/editor/run_settings_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -86,9 +86,6 @@ RunSettingsDialog::RunSettingsDialog() {
arguments->set_editable(false);
get_ok()->set_text(TTR("Close"));
- //get_cancel()->set_text("Close");
-
- arguments->set_text("-l $scene");
set_title(TTR("Scene Run Settings"));
}
diff --git a/editor/run_settings_dialog.h b/editor/run_settings_dialog.h
index b1b4240bf2..225d5ee085 100644
--- a/editor/run_settings_dialog.h
+++ b/editor/run_settings_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index ce3b85332f..34fdd2ee05 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,20 +29,20 @@
/*************************************************************************/
#include "scene_tree_dock.h"
-#include "animation_editor.h"
#include "core/io/resource_saver.h"
+#include "core/os/keyboard.h"
+#include "core/project_settings.h"
+#include "editor/animation_editor.h"
+#include "editor/editor_node.h"
+#include "editor/editor_settings.h"
+#include "editor/multi_node_edit.h"
#include "editor/plugins/animation_player_editor_plugin.h"
#include "editor/plugins/canvas_item_editor_plugin.h"
#include "editor/plugins/script_editor_plugin.h"
#include "editor/plugins/spatial_editor_plugin.h"
-#include "editor_node.h"
-#include "editor_settings.h"
-#include "multi_node_edit.h"
-#include "os/keyboard.h"
-#include "project_settings.h"
+#include "editor/script_editor_debugger.h"
#include "scene/main/viewport.h"
#include "scene/resources/packed_scene.h"
-#include "script_editor_debugger.h"
void SceneTreeDock::_nodes_drag_begin() {
@@ -106,7 +106,6 @@ void SceneTreeDock::instance(const String &p_file) {
if (!parent || !edited_scene) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("OK :("));
accept->set_text(TTR("No parent to instance a child at."));
accept->popup_centered_minsize();
@@ -152,7 +151,6 @@ void SceneTreeDock::_perform_instance_scenes(const Vector<String> &p_files, Node
Ref<PackedScene> sdata = ResourceLoader::load(p_files[i]);
if (!sdata.is_valid()) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("Ugh"));
accept->set_text(vformat(TTR("Error loading scene from %s"), p_files[i]));
accept->popup_centered_minsize();
@@ -163,7 +161,6 @@ void SceneTreeDock::_perform_instance_scenes(const Vector<String> &p_files, Node
Node *instanced_scene = sdata->instance(PackedScene::GEN_EDIT_STATE_INSTANCE);
if (!instanced_scene) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("Ugh"));
accept->set_text(vformat(TTR("Error instancing scene from %s"), p_files[i]));
accept->popup_centered_minsize();
@@ -195,8 +192,6 @@ void SceneTreeDock::_perform_instance_scenes(const Vector<String> &p_files, Node
return;
}
- //instanced_scene->generate_instance_state();
-
editor_data->get_undo_redo().create_action(TTR("Instance Scene(s)"));
for (int i = 0; i < instances.size(); i++) {
@@ -275,10 +270,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
switch (p_tool) {
case TOOL_NEW: {
- /*
- if (!_validate_no_foreign())
- break;
- */
create_dialog->popup_create(true);
} break;
case TOOL_INSTANCE: {
@@ -286,24 +277,9 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
Node *scene = edited_scene;
if (!scene) {
-
EditorNode::get_singleton()->new_inherited_scene();
-
- /* should be legal now
- current_option=-1;
- //confirmation->get_cancel()->hide();
- accept->get_ok()->set_text("I see..");
- accept->set_text("This operation can't be done without a tree root.");
- accept->popup_centered_minsize();
- */
- break;
}
- /*
- if (!_validate_no_foreign())
- break;
- */
-
file->set_mode(EditorFileDialog::MODE_OPEN_FILE);
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions);
@@ -313,7 +289,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
file->add_filter("*." + extensions[i] + " ; " + extensions[i].to_upper());
}
- //file->set_current_path(current_path);
file->popup_centered_ratio();
} break;
@@ -321,43 +296,12 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
create_dialog->popup_create(false);
} break;
- case TOOL_CONNECT: {
-
- Node *current = scene_tree->get_selected();
- if (!current)
- break;
-
- /*
- if (!_validate_no_foreign())
- break;
- connect_dialog->popup_centered_ratio();
- connect_dialog->set_node(current);
- */
-
- } break;
- case TOOL_GROUP: {
-
- Node *current = scene_tree->get_selected();
- if (!current)
- break;
- /*
- if (!_validate_no_foreign())
- break;
- groups_editor->set_current(current);
- groups_editor->popup_centered_ratio();
- */
- } break;
case TOOL_ATTACH_SCRIPT: {
Node *selected = scene_tree->get_selected();
if (!selected)
break;
- /*
- if (!_validate_no_foreign())
- break;
- */
-
Ref<Script> existing = selected->get_script();
if (existing.is_valid())
editor->push_item(existing.ptr());
@@ -391,7 +335,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (scene_tree->get_selected() == edited_scene) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("This operation can't be done on the tree root."));
accept->popup_centered_minsize();
@@ -467,8 +410,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (selection.size() == 0)
break;
- List<Node *> reselect;
-
editor_data->get_undo_redo().create_action(TTR("Duplicate Node(s)"));
editor_data->get_undo_redo().add_do_method(editor_selection, "clear");
@@ -510,9 +451,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
editor_data->get_undo_redo().add_do_method(sed, "live_debug_duplicate_node", edited_scene->get_path_to(node), dup->get_name());
editor_data->get_undo_redo().add_undo_method(sed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)) + "/" + dup->get_name()));
-
- //parent->add_child(dup);
- //reselect.push_back(dup);
}
editor_data->get_undo_redo().commit_action();
@@ -529,7 +467,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (editor_selection->is_selected(edited_scene)) {
current_option = -1;
- //confirmation->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("This operation can't be done on the tree root."));
accept->popup_centered_minsize();
@@ -707,7 +644,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
ERR_FAIL_COND(node->get_filename() == String());
- undo_redo->create_action("Discard Instancing");
+ undo_redo->create_action(TTR("Discard Instancing"));
undo_redo->add_do_method(node, "set_filename", "");
undo_redo->add_undo_method(node, "set_filename", node->get_filename());
_node_replace_owner(node, node, root);
@@ -775,7 +712,7 @@ void SceneTreeDock::_notification(int p_what) {
break;
first_enter = false;
- CanvasItemEditorPlugin *canvas_item_plugin = editor_data->get_editor("2D")->cast_to<CanvasItemEditorPlugin>();
+ CanvasItemEditorPlugin *canvas_item_plugin = Object::cast_to<CanvasItemEditorPlugin>(editor_data->get_editor("2D"));
if (canvas_item_plugin) {
canvas_item_plugin->get_canvas_item_editor()->connect("item_lock_status_changed", scene_tree, "_update_tree");
canvas_item_plugin->get_canvas_item_editor()->connect("item_group_status_changed", scene_tree, "_update_tree");
@@ -860,11 +797,10 @@ Node *SceneTreeDock::_duplicate(Node *p_node, Map<Node *, Node *> &duplimap) {
node = sd->instance(PackedScene::GEN_EDIT_STATE_INSTANCE);
ERR_FAIL_COND_V(!node, NULL);
node->set_scene_instance_load_placeholder(p_node->get_scene_instance_load_placeholder());
- //node->generate_instance_state();
} else {
Object *obj = ClassDB::instance(p_node->get_class());
ERR_FAIL_COND_V(!obj, NULL);
- node = obj->cast_to<Node>();
+ node = Object::cast_to<Node>(obj);
if (!node)
memdelete(obj);
ERR_FAIL_COND_V(!node, NULL);
@@ -915,11 +851,7 @@ void SceneTreeDock::_set_owners(Node *p_owner, const Array &p_nodes) {
for (int i = 0; i < p_nodes.size(); i++) {
- Object *obj = p_nodes[i];
- if (!obj)
- continue;
-
- Node *n = obj->cast_to<Node>();
+ Node *n = Object::cast_to<Node>(p_nodes[i]);
if (!n)
continue;
n->set_owner(p_owner);
@@ -994,9 +926,9 @@ void SceneTreeDock::perform_node_renames(Node *p_base, List<Pair<NodePath, NodeP
if (!p_base)
return;
- if (p_base->cast_to<AnimationPlayer>()) {
+ if (Object::cast_to<AnimationPlayer>(p_base)) {
- AnimationPlayer *ap = p_base->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_base);
List<StringName> anims;
ap->get_animation_list(&anims);
Node *root = ap->get_node(ap->get_root());
@@ -1153,8 +1085,6 @@ void SceneTreeDock::_node_reparent(NodePath p_path, bool p_keep_global_xform) {
Node *new_parent = scene_root->get_node(p_path);
ERR_FAIL_COND(!new_parent);
- //ok all valid
-
List<Node *> selection = editor_selection->get_selected_node_list();
if (selection.empty())
@@ -1184,11 +1114,8 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
}
validate = validate->get_parent();
}
-
//ok all valid
- List<Node *> selection = editor_selection->get_selected_node_list();
-
if (p_nodes.size() == 0)
return; //nothing to reparent
@@ -1235,12 +1162,12 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
editor_data->get_undo_redo().add_undo_method(sed, "live_debug_reparent_node", NodePath(String(edited_scene->get_path_to(new_parent)) + "/" + new_name), edited_scene->get_path_to(node->get_parent()), node->get_name(), node->get_index());
if (p_keep_global_xform) {
- if (node->cast_to<Node2D>())
- editor_data->get_undo_redo().add_do_method(node, "set_global_transform", node->cast_to<Node2D>()->get_global_transform());
- if (node->cast_to<Spatial>())
- editor_data->get_undo_redo().add_do_method(node, "set_global_transform", node->cast_to<Spatial>()->get_global_transform());
- if (node->cast_to<Control>())
- editor_data->get_undo_redo().add_do_method(node, "set_global_position", node->cast_to<Control>()->get_global_position());
+ if (Object::cast_to<Node2D>(node))
+ editor_data->get_undo_redo().add_do_method(node, "set_global_transform", Object::cast_to<Node2D>(node)->get_global_transform());
+ if (Object::cast_to<Spatial>(node))
+ editor_data->get_undo_redo().add_do_method(node, "set_global_transform", Object::cast_to<Spatial>(node)->get_global_transform());
+ if (Object::cast_to<Control>(node))
+ editor_data->get_undo_redo().add_do_method(node, "set_global_position", Object::cast_to<Control>(node)->get_global_position());
}
editor_data->get_undo_redo().add_do_method(this, "_set_owners", edited_scene, owners);
@@ -1277,19 +1204,18 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
editor_data->get_undo_redo().add_undo_method(AnimationPlayerEditor::singleton->get_key_editor(), "set_root", node);
if (p_keep_global_xform) {
- if (node->cast_to<Node2D>())
- editor_data->get_undo_redo().add_undo_method(node, "set_transform", node->cast_to<Node2D>()->get_transform());
- if (node->cast_to<Spatial>())
- editor_data->get_undo_redo().add_undo_method(node, "set_transform", node->cast_to<Spatial>()->get_transform());
- if (node->cast_to<Control>())
- editor_data->get_undo_redo().add_undo_method(node, "set_position", node->cast_to<Control>()->get_position());
+ if (Object::cast_to<Node2D>(node))
+ editor_data->get_undo_redo().add_undo_method(node, "set_transform", Object::cast_to<Node2D>(node)->get_transform());
+ if (Object::cast_to<Spatial>(node))
+ editor_data->get_undo_redo().add_undo_method(node, "set_transform", Object::cast_to<Spatial>(node)->get_transform());
+ if (Object::cast_to<Control>(node))
+ editor_data->get_undo_redo().add_undo_method(node, "set_position", Object::cast_to<Control>(node)->get_position());
}
}
perform_node_renames(NULL, &path_renames);
editor_data->get_undo_redo().commit_action();
- //node->set_owner(owner);
}
void SceneTreeDock::_script_created(Ref<Script> p_script) {
@@ -1365,7 +1291,6 @@ void SceneTreeDock::_delete_confirm() {
if (AnimationPlayerEditor::singleton->get_key_editor()->get_root() == n)
editor_data->get_undo_redo().add_undo_method(AnimationPlayerEditor::singleton->get_key_editor(), "set_root", n);
editor_data->get_undo_redo().add_undo_method(this, "_set_owners", edited_scene, owners);
- //editor_data->get_undo_redo().add_undo_method(n,"set_owner",n->get_owner());
editor_data->get_undo_redo().add_undo_reference(n);
ScriptEditorDebugger *sed = ScriptEditor::get_singleton()->get_debugger();
@@ -1396,8 +1321,6 @@ void SceneTreeDock::_selection_changed() {
button_create_script->hide();
button_clear_script->hide();
}
-
- //tool_buttons[TOOL_MULTI_EDIT]->set_disabled(EditorNode::get_singleton()->get_editor_selection()->get_selection().size()<2);
}
void SceneTreeDock::_create() {
@@ -1421,7 +1344,7 @@ void SceneTreeDock::_create() {
Object *c = create_dialog->instance_selected();
ERR_FAIL_COND(!c);
- Node *child = c->cast_to<Node>();
+ Node *child = Object::cast_to<Node>(c);
ERR_FAIL_COND(!child);
editor_data->get_undo_redo().create_action(TTR("Create Node"));
@@ -1450,9 +1373,9 @@ void SceneTreeDock::_create() {
editor_data->get_undo_redo().commit_action();
editor->push_item(c);
- if (c->cast_to<Control>()) {
+ if (Object::cast_to<Control>(c)) {
//make editor more comfortable, so some controls don't appear super shrunk
- Control *ct = c->cast_to<Control>();
+ Control *ct = Object::cast_to<Control>(c);
Size2 ms = ct->get_minimum_size();
if (ms.width < 4)
@@ -1469,7 +1392,7 @@ void SceneTreeDock::_create() {
Object *c = create_dialog->instance_selected();
ERR_FAIL_COND(!c);
- Node *newnode = c->cast_to<Node>();
+ Node *newnode = Object::cast_to<Node>(c);
ERR_FAIL_COND(!newnode);
List<PropertyInfo> pinfo;
@@ -1561,16 +1484,6 @@ void SceneTreeDock::_import_subscene() {
import_subscene_dialog->move(parent, edited_scene);
editor_data->get_undo_redo().clear_history(); //no undo for now..
-
- /*
- editor_data->get_undo_redo().create_action("Import Subscene");
- editor_data->get_undo_redo().add_do_method(parent,"add_child",ss);
- //editor_data->get_undo_redo().add_do_method(editor_selection,"clear");
- //editor_data->get_undo_redo().add_do_method(editor_selection,"add_node",child);
- editor_data->get_undo_redo().add_do_reference(ss);
- editor_data->get_undo_redo().add_undo_method(parent,"remove_child",ss);
- editor_data->get_undo_redo().commit_action();
-*/
}
void SceneTreeDock::_new_scene_from(String p_file) {
@@ -1605,10 +1518,6 @@ void SceneTreeDock::_new_scene_from(String p_file) {
int flg = 0;
if (EditorSettings::get_singleton()->get("filesystem/on_save/compress_binary_resources"))
flg |= ResourceSaver::FLAG_COMPRESS;
- /*
- if (EditorSettings::get_singleton()->get("filesystem/on_save/save_paths_as_relative"))
- flg|=ResourceSaver::FLAG_RELATIVE_PATHS;
- */
err = ResourceSaver::save(p_file, sdata, flg);
if (err != OK) {
@@ -1708,7 +1617,6 @@ void SceneTreeDock::_normalize_drop(Node *&to_node, int &to_pos, int p_type) {
if (_has_visible_children(to_node)) {
to_pos = 0;
} else {
-
for (int i = to_node->get_index() + 1; i < to_node->get_parent()->get_child_count(); i++) {
Node *c = to_node->get_parent()->get_child(i);
if (_is_node_visible(c)) {
@@ -1722,26 +1630,6 @@ void SceneTreeDock::_normalize_drop(Node *&to_node, int &to_pos, int p_type) {
to_node = to_node->get_parent();
}
-#if 0
- //quite complicated, look for next visible in tree
- upper_sibling=_find_last_visible(upper_sibling);
-
- if (upper_sibling->get_parent()==to_node->get_parent()) {
- //just insert over this node because nothing is above at an upper level
- to_pos=to_node->get_index();
- to_node=to_node->get_parent();
- } else {
- to_pos=-1; //insert last in whathever is up
- to_node=upper_sibling->get_parent(); //insert at a parent of whathever is up
- }
-
-
- } else {
- //just insert over this node because nothing is above at the same level
- to_pos=to_node->get_index();
- to_node=to_node->get_parent();
- }
-#endif
}
}
@@ -1861,17 +1749,14 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
menu->add_icon_shortcut(get_icon("Instance", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/instance_scene"), TOOL_INSTANCE);
menu->add_separator();
menu->add_icon_shortcut(get_icon("Reload", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/change_node_type"), TOOL_REPLACE);
- //menu->add_separator(); moved to their own dock
- //menu->add_icon_item(get_icon("Groups","EditorIcons"),TTR("Edit Groups"),TOOL_GROUP);
- //menu->add_icon_item(get_icon("Connect","EditorIcons"),TTR("Edit Connections"),TOOL_CONNECT);
menu->add_separator();
menu->add_icon_shortcut(get_icon("ScriptCreate", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/attach_script"), TOOL_ATTACH_SCRIPT);
menu->add_icon_shortcut(get_icon("ScriptRemove", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/clear_script"), TOOL_CLEAR_SCRIPT);
menu->add_separator();
}
- menu->add_icon_shortcut(get_icon("Up", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/move_up"), TOOL_MOVE_UP);
- menu->add_icon_shortcut(get_icon("Down", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/move_down"), TOOL_MOVE_DOWN);
+ menu->add_icon_shortcut(get_icon("MoveUp", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/move_up"), TOOL_MOVE_UP);
+ menu->add_icon_shortcut(get_icon("MoveDown", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/move_down"), TOOL_MOVE_DOWN);
menu->add_icon_shortcut(get_icon("Duplicate", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/duplicate"), TOOL_DUPLICATE);
menu->add_icon_shortcut(get_icon("Reparent", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/reparent"), TOOL_REPARENT);
@@ -1931,10 +1816,10 @@ void SceneTreeDock::_focus_node() {
ERR_FAIL_COND(!node);
if (node->is_class("CanvasItem")) {
- CanvasItemEditorPlugin *editor = editor_data->get_editor("2D")->cast_to<CanvasItemEditorPlugin>();
+ CanvasItemEditorPlugin *editor = Object::cast_to<CanvasItemEditorPlugin>(editor_data->get_editor("2D"));
editor->get_canvas_item_editor()->focus_selection();
} else {
- SpatialEditorPlugin *editor = editor_data->get_editor("3D")->cast_to<SpatialEditorPlugin>();
+ SpatialEditorPlugin *editor = Object::cast_to<SpatialEditorPlugin>(editor_data->get_editor("3D"));
editor->get_spatial_editor()->get_editor_viewport(0)->focus_selection();
}
}
@@ -1949,7 +1834,6 @@ void SceneTreeDock::_bind_methods() {
ClassDB::bind_method(D_METHOD("_tool_selected"), &SceneTreeDock::_tool_selected, DEFVAL(false));
ClassDB::bind_method(D_METHOD("_create"), &SceneTreeDock::_create);
- //ClassDB::bind_method(D_METHOD("_script_created"),&SceneTreeDock::_script_created);
ClassDB::bind_method(D_METHOD("_node_reparent"), &SceneTreeDock::_node_reparent);
ClassDB::bind_method(D_METHOD("_set_owners"), &SceneTreeDock::_set_owners);
ClassDB::bind_method(D_METHOD("_node_selected"), &SceneTreeDock::_node_selected);
@@ -2030,6 +1914,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel
tb->set_tooltip(TTR("Attach a new or existing script for the selected node."));
tb->set_shortcut(ED_GET_SHORTCUT("scene_tree/attach_script"));
filter_hbc->add_child(tb);
+ tb->hide();
button_create_script = tb;
tb = memnew(ToolButton);
@@ -2038,6 +1923,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel
tb->set_shortcut(ED_GET_SHORTCUT("scene_tree/clear_script"));
filter_hbc->add_child(tb);
button_clear_script = tb;
+ tb->hide();
scene_tree = memnew(SceneTreeEditor(false, true, true));
vbc->add_child(scene_tree);
@@ -2064,14 +1950,6 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel
add_child(create_dialog);
create_dialog->connect("create", this, "_create");
- //groups_editor = memnew( GroupsEditor );
- //add_child(groups_editor);
- //groups_editor->set_undo_redo(&editor_data->get_undo_redo());
-
- //connect_dialog = memnew( ConnectionsDialog(p_editor) );
- //add_child(connect_dialog);
- //connect_dialog->set_undoredo(&editor_data->get_undo_redo());
-
script_create_dialog = memnew(ScriptCreateDialog);
add_child(script_create_dialog);
script_create_dialog->connect("script_created", this, "_script_created");
diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h
index 5872c5a25d..f61c67bb13 100644
--- a/editor/scene_tree_dock.h
+++ b/editor/scene_tree_dock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,12 +30,13 @@
#ifndef SCENE_TREE_DOCK_H
#define SCENE_TREE_DOCK_H
-#include "connections_dialog.h"
-#include "create_dialog.h"
-#include "editor_data.h"
-#include "editor_sub_scene.h"
-#include "groups_editor.h"
-#include "reparent_dialog.h"
+#include "editor/connections_dialog.h"
+#include "editor/create_dialog.h"
+#include "editor/editor_data.h"
+#include "editor/editor_sub_scene.h"
+#include "editor/groups_editor.h"
+#include "editor/reparent_dialog.h"
+#include "editor/script_create_dialog.h"
#include "scene/animation/animation_player.h"
#include "scene/gui/box_container.h"
#include "scene/gui/button.h"
@@ -45,7 +46,7 @@
#include "scene/gui/tool_button.h"
#include "scene/gui/tree.h"
#include "scene_tree_editor.h"
-#include "script_create_dialog.h"
+
class EditorNode;
class SceneTreeDock : public VBoxContainer {
@@ -57,8 +58,6 @@ class SceneTreeDock : public VBoxContainer {
TOOL_NEW,
TOOL_INSTANCE,
TOOL_REPLACE,
- TOOL_CONNECT,
- TOOL_GROUP,
TOOL_ATTACH_SCRIPT,
TOOL_CLEAR_SCRIPT,
TOOL_MOVE_UP,
@@ -104,8 +103,6 @@ class SceneTreeDock : public VBoxContainer {
EditorData *editor_data;
EditorSelection *editor_selection;
- //GroupsEditor *groups_editor;
- //ConnectionsDialog *connect_dialog;
ScriptCreateDialog *script_create_dialog;
AcceptDialog *accept;
ConfirmationDialog *delete_dialog;
@@ -189,7 +186,7 @@ public:
void import_subscene();
void set_edited_scene(Node *p_scene);
- void instance(const String &p_path);
+ void instance(const String &p_file);
void instance_scenes(const Vector<String> &p_files, Node *p_parent = NULL);
void set_selected(Node *p_node, bool p_emit_selected = false);
void fill_path_renames(Node *p_node, Node *p_new_parent, List<Pair<NodePath, NodePath> > *p_renames);
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index 94ef712c25..87b4d2a867 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -46,7 +46,7 @@ Node *SceneTreeEditor::get_scene_node() {
void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_id) {
- TreeItem *item = p_item->cast_to<TreeItem>();
+ TreeItem *item = Object::cast_to<TreeItem>(p_item);
ERR_FAIL_COND(!item);
NodePath np = item->get_metadata(0);
@@ -475,7 +475,7 @@ void SceneTreeEditor::_selected_changed() {
void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_selected) {
- TreeItem *item = p_object->cast_to<TreeItem>();
+ TreeItem *item = Object::cast_to<TreeItem>(p_object);
ERR_FAIL_COND(!item);
NodePath np = item->get_metadata(0);
@@ -573,8 +573,10 @@ void SceneTreeEditor::set_selected(Node *p_node, bool p_emit_selected) {
selected = NULL;
_update_tree();
selected = p_node;
- if (p_emit_selected)
- emit_signal("node_selected");
+ }
+
+ if (p_emit_selected) {
+ emit_signal("node_selected");
}
}
@@ -582,7 +584,7 @@ void SceneTreeEditor::_rename_node(ObjectID p_node, const String &p_name) {
Object *o = ObjectDB::get_instance(p_node);
ERR_FAIL_COND(!o);
- Node *n = o->cast_to<Node>();
+ Node *n = Object::cast_to<Node>(o);
ERR_FAIL_COND(!n);
TreeItem *item = _find(tree->get_root(), n->get_path());
ERR_FAIL_COND(!item);
@@ -730,7 +732,7 @@ void SceneTreeEditor::_cell_collapsed(Object *p_obj) {
if (!can_rename)
return;
- TreeItem *ti = p_obj->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_obj);
if (!ti)
return;
@@ -1002,7 +1004,7 @@ SceneTreeEditor::SceneTreeEditor(bool p_label, bool p_can_rename, bool p_can_ope
warning = memnew(AcceptDialog);
add_child(warning);
- warning->set_title("Node Configuration Warning!");
+ warning->set_title(TTR("Node Configuration Warning!"));
show_enabled_subscene = false;
diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h
index c6283af7b5..1114b92796 100644
--- a/editor/scene_tree_editor.h
+++ b/editor/scene_tree_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -101,7 +101,7 @@ class SceneTreeEditor : public Control {
static void _bind_methods();
void _cell_button_pressed(Object *p_item, int p_column, int p_id);
- void _cell_multi_selected(Object *p_object, int p_cel, bool p_selected);
+ void _cell_multi_selected(Object *p_object, int p_cell, bool p_selected);
void _update_selection(TreeItem *item);
void _node_script_changed(Node *p_node);
void _node_visibility_changed(Node *p_node);
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index 0748c43b5f..d0e2e0c240 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -531,28 +531,19 @@ void ScriptCreateDialog::_bind_methods() {
ScriptCreateDialog::ScriptCreateDialog() {
- GridContainer *gc = memnew(GridContainer);
- VBoxContainer *vb = memnew(VBoxContainer);
- HBoxContainer *hb = memnew(HBoxContainer);
- Label *l = memnew(Label);
- Control *empty = memnew(Control);
- Control *empty_h = memnew(Control);
- Control *empty_v = memnew(Control);
- PanelContainer *pc = memnew(PanelContainer);
-
/* DIALOG */
/* Main Controls */
- gc = memnew(GridContainer);
+ GridContainer *gc = memnew(GridContainer);
gc->set_columns(2);
/* Error Messages Field */
- vb = memnew(VBoxContainer);
+ VBoxContainer *vb = memnew(VBoxContainer);
- hb = memnew(HBoxContainer);
- l = memnew(Label);
+ HBoxContainer *hb = memnew(HBoxContainer);
+ Label *l = memnew(Label);
l->set_text(" - ");
hb->add_child(l);
error_label = memnew(Label);
@@ -571,19 +562,19 @@ ScriptCreateDialog::ScriptCreateDialog() {
hb->add_child(path_error_label);
vb->add_child(hb);
- pc = memnew(PanelContainer);
+ PanelContainer *pc = memnew(PanelContainer);
pc->set_h_size_flags(Control::SIZE_FILL);
pc->add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("bg", "Tree"));
pc->add_child(vb);
/* Margins */
- empty_h = memnew(Control);
+ Control *empty_h = memnew(Control);
empty_h->set_name("empty_h"); //duplicate() doesn't like nodes without a name
empty_h->set_h_size_flags(Control::SIZE_EXPAND_FILL);
empty_h->set_v_size_flags(Control::SIZE_EXPAND_FILL);
empty_h->set_custom_minimum_size(Size2(0, 10 * EDSCALE));
- empty_v = memnew(Control);
+ Control *empty_v = memnew(Control);
empty_v->set_name("empty_v");
empty_v->set_h_size_flags(Control::SIZE_EXPAND_FILL);
empty_v->set_v_size_flags(Control::SIZE_EXPAND_FILL);
@@ -600,6 +591,9 @@ ScriptCreateDialog::ScriptCreateDialog() {
hb->add_child(vb);
hb->add_child(empty_v->duplicate());
+ memdelete(empty_h);
+ memdelete(empty_v);
+
add_child(hb);
/* Language */
@@ -684,7 +678,7 @@ ScriptCreateDialog::ScriptCreateDialog() {
internal = memnew(CheckButton);
internal->connect("pressed", this, "_built_in_pressed");
hb = memnew(HBoxContainer);
- empty = memnew(Control);
+ Control *empty = memnew(Control);
hb->add_child(internal);
hb->add_child(empty);
l = memnew(Label);
diff --git a/editor/script_create_dialog.h b/editor/script_create_dialog.h
index f503b878f5..d16c523f0a 100644
--- a/editor/script_create_dialog.h
+++ b/editor/script_create_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -74,7 +74,7 @@ class ScriptCreateDialog : public ConfirmationDialog {
void _path_changed(const String &p_path = String());
void _lang_changed(int l = 0);
void _built_in_pressed();
- bool _validate(const String &p_strin);
+ bool _validate(const String &p_string);
void _class_name_changed(const String &p_name);
void _parent_name_changed(const String &p_parent);
void _template_changed(int p_template = 0);
diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp
index 01cfdc1b57..284b25801c 100644
--- a/editor/script_editor_debugger.cpp
+++ b/editor/script_editor_debugger.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -215,7 +215,7 @@ void ScriptEditorDebugger::_scene_tree_folded(Object *obj) {
return;
}
- TreeItem *item = obj->cast_to<TreeItem>();
+ TreeItem *item = Object::cast_to<TreeItem>(obj);
if (!item)
return;
@@ -306,8 +306,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
String error = p_data[1];
step->set_disabled(!can_continue);
next->set_disabled(!can_continue);
- reason->set_text(error);
- reason->set_tooltip(error);
+ _set_reason_text(error, MESSAGE_ERROR);
breaked = true;
dobreak->set_disabled(true);
docontinue->set_disabled(false);
@@ -372,7 +371,13 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
if (has_icon(p_data[i + 2], "EditorIcons"))
it->set_icon(0, get_icon(p_data[i + 2], "EditorIcons"));
it->set_metadata(0, id);
+
if (id == inspected_object_id) {
+ TreeItem *cti = it->get_parent(); //ensure selected is always uncollapsed
+ while (cti) {
+ cti->set_collapsed(false);
+ cti = cti->get_parent();
+ }
it->select(0);
}
@@ -385,6 +390,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
it->set_collapsed(true);
}
}
+
lv[level] = it;
}
updating_scene_tree = false;
@@ -439,11 +445,8 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
inspected_object->last_edited_id = id;
- if (tabs->get_current_tab() == 2) {
- inspect_properties->edit(inspected_object);
- } else {
- editor->push_item(inspected_object);
- }
+ tabs->set_current_tab(inspect_info->get_index());
+ inspect_properties->edit(inspected_object);
} else if (p_msg == "message:video_mem") {
@@ -757,6 +760,21 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
}
}
+void ScriptEditorDebugger::_set_reason_text(const String &p_reason, MessageType p_type) {
+ switch (p_type) {
+ case MESSAGE_ERROR:
+ reason->add_color_override("font_color", get_color("error_color", "Editor"));
+ break;
+ case MESSAGE_WARNING:
+ reason->add_color_override("font_color", get_color("warning_color", "Editor"));
+ break;
+ default:
+ reason->add_color_override("font_color", get_color("success_color", "Editor"));
+ }
+ reason->set_text(p_reason);
+ reason->set_tooltip(p_reason);
+}
+
void ScriptEditorDebugger::_performance_select(Object *, int, bool) {
perf_draw->update();
@@ -771,14 +789,17 @@ void ScriptEditorDebugger::_performance_draw() {
which.push_back(i);
}
- if (which.empty())
+ Ref<Font> graph_font = get_font("font", "TextEdit");
+
+ if (which.empty()) {
+ perf_draw->draw_string(graph_font, Point2(0, graph_font->get_ascent()), TTR("Pick one or more items from the list to display the graph."), get_color("font_color", "Label"), perf_draw->get_size().x);
return;
+ }
Ref<StyleBox> graph_sb = get_stylebox("normal", "TextEdit");
- Ref<Font> graph_font = get_font("font", "TextEdit");
int cols = Math::ceil(Math::sqrt((float)which.size()));
- int rows = (which.size() + 1) / cols;
+ int rows = Math::ceil((float)which.size() / cols);
if (which.size() == 1)
rows = 1;
@@ -917,8 +938,7 @@ void ScriptEditorDebugger::_notification(int p_what) {
dobreak->set_disabled(false);
tabs->set_current_tab(0);
- reason->set_text(TTR("Child Process Connected"));
- reason->set_tooltip(TTR("Child Process Connected"));
+ _set_reason_text(TTR("Child Process Connected"), MESSAGE_SUCCESS);
profiler->clear();
inspect_scene_tree->clear();
@@ -1086,9 +1106,6 @@ void ScriptEditorDebugger::stop() {
EditorNode::get_singleton()->get_pause_button()->set_pressed(false);
EditorNode::get_singleton()->get_pause_button()->set_disabled(true);
- //avoid confusion when stopped debugging but an object is still edited
- EditorNode::get_singleton()->push_item(NULL);
-
if (hide_on_stop) {
if (is_visible_in_tree())
EditorNode::get_singleton()->hide_bottom_panel();
@@ -1207,7 +1224,7 @@ void ScriptEditorDebugger::_method_changed(Object *p_base, const StringName &p_n
if (!p_base || !live_debug || !connection.is_valid() || !editor->get_edited_scene())
return;
- Node *node = p_base->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(p_base);
VARIANT_ARGPTRS
@@ -1235,7 +1252,7 @@ void ScriptEditorDebugger::_method_changed(Object *p_base, const StringName &p_n
return;
}
- Resource *res = p_base->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(p_base);
if (res && res->get_path() != String()) {
@@ -1263,7 +1280,7 @@ void ScriptEditorDebugger::_property_changed(Object *p_base, const StringName &p
if (!p_base || !live_debug || !connection.is_valid() || !editor->get_edited_scene())
return;
- Node *node = p_base->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(p_base);
if (node) {
@@ -1294,7 +1311,7 @@ void ScriptEditorDebugger::_property_changed(Object *p_base, const StringName &p
return;
}
- Resource *res = p_base->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(p_base);
if (res && res->get_path() != String()) {
diff --git a/editor/script_editor_debugger.h b/editor/script_editor_debugger.h
index d255d73167..6cb5f0a70c 100644
--- a/editor/script_editor_debugger.h
+++ b/editor/script_editor_debugger.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -56,6 +56,12 @@ class ScriptEditorDebugger : public Control {
GDCLASS(ScriptEditorDebugger, Control);
+ enum MessageType {
+ MESSAGE_ERROR,
+ MESSAGE_WARNING,
+ MESSAGE_SUCCESS,
+ };
+
AcceptDialog *msgdialog;
Button *debugger_button;
@@ -144,6 +150,7 @@ class ScriptEditorDebugger : public Control {
void _scene_tree_selected();
void _scene_tree_request();
void _parse_message(const String &p_msg, const Array &p_data);
+ void _set_reason_text(const String &p_msg, MessageType p_type);
void _scene_tree_property_select_object(ObjectID p_object);
void _scene_tree_property_value_edited(const String &p_prop, const Variant &p_value);
diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp
index d455e0cea9..623e458aca 100644
--- a/editor/settings_config_dialog.cpp
+++ b/editor/settings_config_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -191,7 +191,7 @@ void EditorSettingsDialog::_update_shortcuts() {
void EditorSettingsDialog::_shortcut_button_pressed(Object *p_item, int p_column, int p_idx) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
ERR_FAIL_COND(!ti);
String item = ti->get_metadata(0);
diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h
index cda191ac36..8a66d5098c 100644
--- a/editor/settings_config_dialog.h
+++ b/editor/settings_config_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp
index 24be2095ce..c127b9a2f1 100644
--- a/editor/spatial_editor_gizmos.cpp
+++ b/editor/spatial_editor_gizmos.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -36,6 +36,7 @@
#include "scene/resources/capsule_shape.h"
#include "scene/resources/convex_polygon_shape.h"
#include "scene/resources/plane_shape.h"
+#include "scene/resources/primitive_meshes.h"
#include "scene/resources/ray_shape.h"
#include "scene/resources/sphere_shape.h"
#include "scene/resources/surface_tool.h"
@@ -45,6 +46,24 @@
#define HANDLE_HALF_SIZE 0.05
+bool EditorSpatialGizmo::can_draw() const {
+ return is_editable();
+}
+bool EditorSpatialGizmo::is_editable() const {
+
+ ERR_FAIL_COND_V(!spatial_node, false);
+ Node *edited_root = spatial_node->get_tree()->get_edited_scene_root();
+ if (spatial_node == edited_root)
+ return true;
+ if (spatial_node->get_owner() == edited_root)
+ return true;
+
+ if (edited_root->is_editable_instance(spatial_node->get_owner()))
+ return true;
+
+ return false;
+}
+
void EditorSpatialGizmo::clear() {
for (int i = 0; i < instances.size(); i++) {
@@ -112,9 +131,9 @@ void EditorSpatialGizmo::add_lines(const Vector<Vector3> &p_lines, const Ref<Mat
PoolVector<Color>::Write w = color.write();
for (int i = 0; i < p_lines.size(); i++) {
if (is_selected())
- w[i] = Color(1, 1, 1, 0.6);
+ w[i] = Color(1, 1, 1, 0.8);
else
- w[i] = Color(1, 1, 1, 0.25);
+ w[i] = Color(1, 1, 1, 0.2);
}
}
@@ -157,10 +176,10 @@ void EditorSpatialGizmo::add_unscaled_billboard(const Ref<Material> &p_material,
vs.push_back(Vector3(p_scale, -p_scale, 0));
vs.push_back(Vector3(-p_scale, -p_scale, 0));
- uv.push_back(Vector2(1, 0));
uv.push_back(Vector2(0, 0));
- uv.push_back(Vector2(0, 1));
+ uv.push_back(Vector2(1, 0));
uv.push_back(Vector2(1, 1));
+ uv.push_back(Vector2(0, 1));
Ref<ArrayMesh> mesh = memnew(ArrayMesh);
Array a;
@@ -211,7 +230,7 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, bool p_bi
billboard_handle = p_billboard;
- if (!is_selected())
+ if (!is_selected() || !is_editable())
return;
ERR_FAIL_COND(!spatial_node);
@@ -220,7 +239,6 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, bool p_bi
Instance ins;
Ref<ArrayMesh> mesh = memnew(ArrayMesh);
-#if 1
Array a;
a.resize(VS::ARRAY_MAX);
@@ -255,61 +273,6 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, bool p_bi
}
}
-#else
- for (int ih = 0; ih < p_handles.size(); ih++) {
-
- Vector<Vector3> vertices;
- Vector<Vector3> normals;
-
- int vtx_idx = 0;
-
-#define ADD_VTX(m_idx) \
- vertices.push_back((face_points[m_idx] * HANDLE_HALF_SIZE + p_handles[ih])); \
- normals.push_back(normal_points[m_idx]); \
- vtx_idx++;
-
- for (int i = 0; i < 6; i++) {
-
- Vector3 face_points[4];
- Vector3 normal_points[4];
- float uv_points[8] = { 0, 0, 0, 1, 1, 1, 1, 0 };
-
- for (int j = 0; j < 4; j++) {
-
- float v[3];
- v[0] = 1.0;
- v[1] = 1 - 2 * ((j >> 1) & 1);
- v[2] = v[1] * (1 - 2 * (j & 1));
-
- for (int k = 0; k < 3; k++) {
-
- if (i < 3)
- face_points[j][(i + k) % 3] = v[k] * (i >= 3 ? -1 : 1);
- else
- face_points[3 - j][(i + k) % 3] = v[k] * (i >= 3 ? -1 : 1);
- }
- normal_points[j] = Vector3();
- normal_points[j][i % 3] = (i >= 3 ? -1 : 1);
- }
- //tri 1
- ADD_VTX(0);
- ADD_VTX(1);
- ADD_VTX(2);
- //tri 2
- ADD_VTX(2);
- ADD_VTX(3);
- ADD_VTX(0);
- }
-
- Array d;
- d.resize(VS::ARRAY_MAX);
- d[VisualServer::ARRAY_NORMAL] = normals;
- d[VisualServer::ARRAY_VERTEX] = vertices;
-
- mesh->add_surface(Mesh::PRIMITIVE_TRIANGLES, d);
- mesh->surface_set_material(ih, SpatialEditorGizmos::singleton->handle_material);
- }
-#endif
ins.mesh = mesh;
ins.billboard = p_billboard;
ins.extra_margin = true;
@@ -334,6 +297,26 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, bool p_bi
}
}
+void EditorSpatialGizmo::add_solid_box(Ref<Material> &p_material, Vector3 size) {
+ ERR_FAIL_COND(!spatial_node);
+
+ CubeMesh cubem;
+ cubem.set_size(size);
+ Ref<ArrayMesh> m = memnew(ArrayMesh);
+ m->add_surface_from_arrays(cubem.surface_get_primitive_type(0), cubem.surface_get_arrays(0));
+ m->surface_set_material(0, p_material);
+ add_mesh(m);
+
+ Instance ins;
+ ins.mesh = m;
+ if (valid) {
+ ins.create_instance(spatial_node);
+ VS::get_singleton()->instance_set_transform(ins.instance, spatial_node->get_global_transform());
+ }
+
+ instances.push_back(ins);
+}
+
void EditorSpatialGizmo::set_spatial_node(Spatial *p_node) {
ERR_FAIL_NULL(p_node);
@@ -560,6 +543,95 @@ void EditorSpatialGizmo::free() {
valid = false;
}
+Ref<SpatialMaterial> EditorSpatialGizmo::create_material(const String &p_name, const Color &p_color, bool p_billboard, bool p_on_top, bool p_use_vertex_color) {
+
+ String name = p_name;
+
+ if (!is_editable()) {
+ name += "@readonly";
+ } else if (is_selected()) {
+ name += "@selected";
+ }
+
+ if (SpatialEditorGizmos::singleton->material_cache.has(name)) {
+ return SpatialEditorGizmos::singleton->material_cache[name];
+ }
+
+ Color color = p_color;
+
+ if (!is_editable()) {
+ color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/instanced");
+ }
+ if (!is_selected()) {
+ color.a *= 0.3;
+ }
+
+ Ref<SpatialMaterial> line_material;
+ line_material.instance();
+ line_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ line_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ if (p_use_vertex_color) {
+ line_material->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ line_material->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ }
+
+ if (p_billboard) {
+ line_material->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
+ }
+
+ if (p_on_top && is_selected()) {
+ line_material->set_flag(SpatialMaterial::FLAG_ONTOP, true);
+ }
+
+ line_material->set_albedo(color);
+
+ SpatialEditorGizmos::singleton->material_cache[name] = line_material;
+
+ return line_material;
+}
+
+Ref<SpatialMaterial> EditorSpatialGizmo::create_icon_material(const String &p_name, const Ref<Texture> &p_texture, bool p_on_top, const Color &p_albedo) {
+
+ String name = p_name;
+
+ if (!is_editable()) {
+ name += "@readonly";
+ } else if (is_selected()) {
+ name += "@selected";
+ }
+
+ if (SpatialEditorGizmos::singleton->material_cache.has(name)) {
+ return SpatialEditorGizmos::singleton->material_cache[name];
+ }
+
+ Color color = p_albedo;
+
+ if (!is_editable()) {
+ color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/instanced");
+ } else if (!is_selected()) {
+ color.a *= 0.3;
+ }
+
+ Ref<SpatialMaterial> icon;
+ icon.instance();
+ icon->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ icon->set_cull_mode(SpatialMaterial::CULL_DISABLED);
+ icon->set_depth_draw_mode(SpatialMaterial::DEPTH_DRAW_DISABLED);
+ icon->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ icon->set_albedo(color);
+ icon->set_texture(SpatialMaterial::TEXTURE_ALBEDO, p_texture);
+ icon->set_flag(SpatialMaterial::FLAG_FIXED_SIZE, true);
+ icon->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
+
+ if (p_on_top && is_selected()) {
+ icon->set_flag(SpatialMaterial::FLAG_ONTOP, true);
+ }
+
+ SpatialEditorGizmos::singleton->material_cache[name] = icon;
+
+ return icon;
+}
+
void EditorSpatialGizmo::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_lines", "lines", "material", "billboard"), &EditorSpatialGizmo::add_lines, DEFVAL(false));
@@ -573,9 +645,13 @@ void EditorSpatialGizmo::_bind_methods() {
BIND_VMETHOD(MethodInfo("redraw"));
BIND_VMETHOD(MethodInfo(Variant::STRING, "get_handle_name", PropertyInfo(Variant::INT, "index")));
- BIND_VMETHOD(MethodInfo("get_handle_value:Variant", PropertyInfo(Variant::INT, "index")));
- BIND_VMETHOD(MethodInfo("set_handle", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::OBJECT, "camera:Camera"), PropertyInfo(Variant::VECTOR2, "point")));
- MethodInfo cm = MethodInfo("commit_handle", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::NIL, "restore:Variant"), PropertyInfo(Variant::BOOL, "cancel"));
+
+ MethodInfo hvget(Variant::NIL, "get_handle_value", PropertyInfo(Variant::INT, "index"));
+ hvget.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
+ BIND_VMETHOD(hvget);
+
+ BIND_VMETHOD(MethodInfo("set_handle", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera"), PropertyInfo(Variant::VECTOR2, "point")));
+ MethodInfo cm = MethodInfo("commit_handle", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::NIL, "restore"), PropertyInfo(Variant::BOOL, "cancel"));
cm.default_arguments.push_back(false);
BIND_VMETHOD(cm);
}
@@ -660,7 +736,7 @@ void LightSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const Point2 &p_
Vector3 s[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 4096) };
if (p_idx == 0) {
- if (light->cast_to<SpotLight>()) {
+ if (Object::cast_to<SpotLight>(light)) {
Vector3 ra, rb;
Geometry::get_closest_points_between_segments(Vector3(), Vector3(0, 0, -4096), s[0], s[1], ra, rb);
@@ -669,7 +745,7 @@ void LightSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const Point2 &p_
d = 0;
light->set_param(Light::PARAM_RANGE, d);
- } else if (light->cast_to<OmniLight>()) {
+ } else if (Object::cast_to<OmniLight>(light)) {
Plane cp = Plane(gt.origin, p_camera->get_transform().basis.get_axis(2));
@@ -713,49 +789,54 @@ void LightSpatialGizmo::commit_handle(int p_idx, const Variant &p_restore, bool
void LightSpatialGizmo::redraw() {
- if (light->cast_to<DirectionalLight>()) {
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/light");
+
+ if (Object::cast_to<DirectionalLight>(light)) {
+
+ Ref<Material> material = create_material("light_directional_material", gizmo_color);
+ Ref<Material> icon = create_icon_material("light_directional_icon", SpatialEditor::get_singleton()->get_icon("GizmoDirectionalLight", "EditorIcons"));
+
+ const int arrow_points = 7;
+ const float arrow_length = 1.5;
- const int arrow_points = 5;
Vector3 arrow[arrow_points] = {
- Vector3(0, 0, 2),
- Vector3(1, 1, 2),
- Vector3(1, 1, -1),
- Vector3(2, 2, -1),
- Vector3(0, 0, -3)
+ Vector3(0, 0, -1),
+ Vector3(0, 0.8, 0),
+ Vector3(0, 0.3, 0),
+ Vector3(0, 0.3, arrow_length),
+ Vector3(0, -0.3, arrow_length),
+ Vector3(0, -0.3, 0),
+ Vector3(0, -0.8, 0)
};
- int arrow_sides = 4;
+ int arrow_sides = 2;
Vector<Vector3> lines;
for (int i = 0; i < arrow_sides; i++) {
+ for (int j = 0; j < arrow_points; j++) {
+ Basis ma(Vector3(0, 0, 1), Math_PI * i / arrow_sides);
- Basis ma(Vector3(0, 0, 1), Math_PI * 2 * float(i) / arrow_sides);
- Basis mb(Vector3(0, 0, 1), Math_PI * 2 * float(i + 1) / arrow_sides);
-
- for (int j = 1; j < arrow_points - 1; j++) {
+ Vector3 v1 = arrow[j] - Vector3(0, 0, arrow_length);
+ Vector3 v2 = arrow[(j + 1) % arrow_points] - Vector3(0, 0, arrow_length);
- if (j != 2) {
- lines.push_back(ma.xform(arrow[j]));
- lines.push_back(ma.xform(arrow[j + 1]));
- }
- if (j < arrow_points - 1) {
- lines.push_back(ma.xform(arrow[j]));
- lines.push_back(mb.xform(arrow[j]));
- }
+ lines.push_back(ma.xform(v1));
+ lines.push_back(ma.xform(v2));
}
}
- add_lines(lines, SpatialEditorGizmos::singleton->light_material);
+ add_lines(lines, material);
add_collision_segments(lines);
- add_unscaled_billboard(SpatialEditorGizmos::singleton->light_material_directional_icon, 0.05);
+ add_unscaled_billboard(icon, 0.05);
}
- if (light->cast_to<OmniLight>()) {
+ if (Object::cast_to<OmniLight>(light)) {
+ Ref<Material> material = create_material("light_omni_material", gizmo_color, true);
+ Ref<Material> icon = create_icon_material("light_omni_icon", SpatialEditor::get_singleton()->get_icon("GizmoLight", "EditorIcons"));
clear();
- OmniLight *on = light->cast_to<OmniLight>();
+ OmniLight *on = Object::cast_to<OmniLight>(light);
float r = on->get_param(Light::PARAM_RANGE);
@@ -776,22 +857,25 @@ void LightSpatialGizmo::redraw() {
points.push_back(Vector3(b.x, b.y, 0));
}
- add_lines(points, SpatialEditorGizmos::singleton->light_material_omni, true);
+ add_lines(points, material, true);
add_collision_segments(points);
- add_unscaled_billboard(SpatialEditorGizmos::singleton->light_material_omni_icon, 0.05);
+ add_unscaled_billboard(icon, 0.05);
Vector<Vector3> handles;
handles.push_back(Vector3(r, 0, 0));
add_handles(handles, true);
}
- if (light->cast_to<SpotLight>()) {
+ if (Object::cast_to<SpotLight>(light)) {
+
+ Ref<Material> material = create_material("light_spot_material", gizmo_color, true);
+ Ref<Material> icon = create_icon_material("light_spot_icon", SpatialEditor::get_singleton()->get_icon("GizmoSpotLight", "EditorIcons"));
clear();
Vector<Vector3> points;
- SpotLight *on = light->cast_to<SpotLight>();
+ SpotLight *on = Object::cast_to<SpotLight>(light);
float r = on->get_param(Light::PARAM_RANGE);
float w = r * Math::sin(Math::deg2rad(on->get_param(Light::PARAM_SPOT_ANGLE)));
@@ -804,10 +888,6 @@ void LightSpatialGizmo::redraw() {
Point2 a = Vector2(Math::sin(ra), Math::cos(ra)) * w;
Point2 b = Vector2(Math::sin(rb), Math::cos(rb)) * w;
- /*points.push_back(Vector3(a.x,0,a.y));
- points.push_back(Vector3(b.x,0,b.y));
- points.push_back(Vector3(0,a.x,a.y));
- points.push_back(Vector3(0,b.x,b.y));*/
points.push_back(Vector3(a.x, a.y, -d));
points.push_back(Vector3(b.x, b.y, -d));
@@ -821,7 +901,7 @@ void LightSpatialGizmo::redraw() {
points.push_back(Vector3(0, 0, -r));
points.push_back(Vector3());
- add_lines(points, SpatialEditorGizmos::singleton->light_material);
+ add_lines(points, material);
Vector<Vector3> handles;
handles.push_back(Vector3(0, 0, -r));
@@ -855,7 +935,7 @@ void LightSpatialGizmo::redraw() {
add_handles(handles);
add_collision_segments(collision_segments);
- add_unscaled_billboard(SpatialEditorGizmos::singleton->light_material_omni_icon, 0.05);
+ add_unscaled_billboard(icon, 0.05);
}
}
@@ -937,7 +1017,13 @@ void AudioStreamPlayer3DSpatialGizmo::redraw() {
clear();
+ Ref<Material> icon = create_icon_material("stream_player_3d_material", SpatialEditor::get_singleton()->get_icon("GizmoSpatialSamplePlayer", "EditorIcons"));
+
if (player->is_emission_angle_enabled()) {
+
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/stream_player_3d");
+ Ref<Material> material = create_material("stream_player_3d_material", gizmo_color);
+
float pc = player->get_emission_angle();
Vector<Vector3> points;
@@ -968,7 +1054,7 @@ void AudioStreamPlayer3DSpatialGizmo::redraw() {
points[200 + i * 2 + 1] = Vector3();
}
- add_lines(points, SpatialEditorGizmos::singleton->car_wheel_material);
+ add_lines(points, material);
add_collision_segments(points);
Vector<Vector3> handles;
@@ -977,7 +1063,7 @@ void AudioStreamPlayer3DSpatialGizmo::redraw() {
add_handles(handles);
}
- add_unscaled_billboard(SpatialEditorGizmos::singleton->sample_player_icon, 0.05);
+ add_unscaled_billboard(icon, 0.05);
}
AudioStreamPlayer3DSpatialGizmo::AudioStreamPlayer3DSpatialGizmo(AudioStreamPlayer3D *p_player) {
@@ -1068,6 +1154,10 @@ void CameraSpatialGizmo::redraw() {
Vector<Vector3> lines;
Vector<Vector3> handles;
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/camera");
+ Ref<Material> material = create_material("camera_material", gizmo_color);
+ Ref<Material> icon = create_icon_material("camera_icon", SpatialEditor::get_singleton()->get_icon("GizmoCamera", "EditorIcons"));
+
switch (camera->get_projection()) {
case Camera::PROJECTION_PERSPECTIVE: {
@@ -1135,8 +1225,9 @@ void CameraSpatialGizmo::redraw() {
} break;
}
- add_lines(lines, SpatialEditorGizmos::singleton->camera_material);
+ add_lines(lines, material);
add_collision_segments(lines);
+ add_unscaled_billboard(icon, 0.05);
add_handles(handles);
}
@@ -1148,9 +1239,12 @@ CameraSpatialGizmo::CameraSpatialGizmo(Camera *p_camera) {
//////
+bool MeshInstanceSpatialGizmo::can_draw() const {
+ return true; //mesh can always draw (even though nothing is displayed)
+}
void MeshInstanceSpatialGizmo::redraw() {
- Ref<ArrayMesh> m = mesh->get_mesh();
+ Ref<Mesh> m = mesh->get_mesh();
if (!m.is_valid())
return; //none
@@ -1194,10 +1288,13 @@ void SkeletonSpatialGizmo::redraw() {
clear();
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/skeleton");
+ Ref<Material> material = create_material("skeleton_material", gizmo_color);
+
Ref<SurfaceTool> surface_tool(memnew(SurfaceTool));
surface_tool->begin(Mesh::PRIMITIVE_LINES);
- surface_tool->set_material(SpatialEditorGizmos::singleton->skeleton_material);
+ surface_tool->set_material(material);
Vector<Transform> grests;
grests.resize(skel->get_bone_count());
@@ -1378,7 +1475,7 @@ SkeletonSpatialGizmo::SkeletonSpatialGizmo(Skeleton *p_skel) {
skel = p_skel;
set_spatial_node(p_skel);
}
-
+#if 0
void RoomSpatialGizmo::redraw() {
clear();
@@ -1481,6 +1578,7 @@ PortalSpatialGizmo::PortalSpatialGizmo(Portal *p_portal) {
portal = p_portal;
}
+#endif
/////
void RayCastSpatialGizmo::redraw() {
@@ -1492,7 +1590,10 @@ void RayCastSpatialGizmo::redraw() {
lines.push_back(Vector3());
lines.push_back(raycast->get_cast_to());
- add_lines(lines, SpatialEditorGizmos::singleton->raycast_material);
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape");
+ Ref<Material> material = create_material("shape_material", gizmo_color);
+
+ add_lines(lines, material);
add_collision_segments(lines);
}
@@ -1550,7 +1651,10 @@ void VehicleWheelSpatialGizmo::redraw() {
points.push_back(Vector3(0, -r, r * 2));
points.push_back(Vector3(-r * 2 * 0.2, -r, r * 2 * 0.8));
- add_lines(points, SpatialEditorGizmos::singleton->car_wheel_material);
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape");
+ Ref<Material> material = create_material("shape_material", gizmo_color);
+
+ add_lines(points, material);
add_collision_segments(points);
}
@@ -1568,22 +1672,22 @@ String CollisionShapeSpatialGizmo::get_handle_name(int p_idx) const {
if (s.is_null())
return "";
- if (s->cast_to<SphereShape>()) {
+ if (Object::cast_to<SphereShape>(*s)) {
return "Radius";
}
- if (s->cast_to<BoxShape>()) {
+ if (Object::cast_to<BoxShape>(*s)) {
return "Extents";
}
- if (s->cast_to<CapsuleShape>()) {
+ if (Object::cast_to<CapsuleShape>(*s)) {
return p_idx == 0 ? "Radius" : "Height";
}
- if (s->cast_to<RayShape>()) {
+ if (Object::cast_to<RayShape>(*s)) {
return "Length";
}
@@ -1596,25 +1700,25 @@ Variant CollisionShapeSpatialGizmo::get_handle_value(int p_idx) const {
if (s.is_null())
return Variant();
- if (s->cast_to<SphereShape>()) {
+ if (Object::cast_to<SphereShape>(*s)) {
Ref<SphereShape> ss = s;
return ss->get_radius();
}
- if (s->cast_to<BoxShape>()) {
+ if (Object::cast_to<BoxShape>(*s)) {
Ref<BoxShape> bs = s;
return bs->get_extents();
}
- if (s->cast_to<CapsuleShape>()) {
+ if (Object::cast_to<CapsuleShape>(*s)) {
Ref<CapsuleShape> cs = s;
return p_idx == 0 ? cs->get_radius() : cs->get_height();
}
- if (s->cast_to<RayShape>()) {
+ if (Object::cast_to<RayShape>(*s)) {
Ref<RayShape> cs = s;
return cs->get_length();
@@ -1636,7 +1740,7 @@ void CollisionShapeSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const P
Vector3 sg[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 4096) };
- if (s->cast_to<SphereShape>()) {
+ if (Object::cast_to<SphereShape>(*s)) {
Ref<SphereShape> ss = s;
Vector3 ra, rb;
@@ -1648,7 +1752,7 @@ void CollisionShapeSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const P
ss->set_radius(d);
}
- if (s->cast_to<RayShape>()) {
+ if (Object::cast_to<RayShape>(*s)) {
Ref<RayShape> rs = s;
Vector3 ra, rb;
@@ -1660,7 +1764,7 @@ void CollisionShapeSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const P
rs->set_length(d);
}
- if (s->cast_to<BoxShape>()) {
+ if (Object::cast_to<BoxShape>(*s)) {
Vector3 axis;
axis[p_idx] = 1.0;
@@ -1676,7 +1780,7 @@ void CollisionShapeSpatialGizmo::set_handle(int p_idx, Camera *p_camera, const P
bs->set_extents(he);
}
- if (s->cast_to<CapsuleShape>()) {
+ if (Object::cast_to<CapsuleShape>(*s)) {
Vector3 axis;
axis[p_idx == 0 ? 0 : 2] = 1.0;
@@ -1700,7 +1804,7 @@ void CollisionShapeSpatialGizmo::commit_handle(int p_idx, const Variant &p_resto
if (s.is_null())
return;
- if (s->cast_to<SphereShape>()) {
+ if (Object::cast_to<SphereShape>(*s)) {
Ref<SphereShape> ss = s;
if (p_cancel) {
@@ -1715,7 +1819,7 @@ void CollisionShapeSpatialGizmo::commit_handle(int p_idx, const Variant &p_resto
ur->commit_action();
}
- if (s->cast_to<BoxShape>()) {
+ if (Object::cast_to<BoxShape>(*s)) {
Ref<BoxShape> ss = s;
if (p_cancel) {
@@ -1730,7 +1834,7 @@ void CollisionShapeSpatialGizmo::commit_handle(int p_idx, const Variant &p_resto
ur->commit_action();
}
- if (s->cast_to<CapsuleShape>()) {
+ if (Object::cast_to<CapsuleShape>(*s)) {
Ref<CapsuleShape> ss = s;
if (p_cancel) {
@@ -1755,7 +1859,7 @@ void CollisionShapeSpatialGizmo::commit_handle(int p_idx, const Variant &p_resto
ur->commit_action();
}
- if (s->cast_to<RayShape>()) {
+ if (Object::cast_to<RayShape>(*s)) {
Ref<RayShape> ss = s;
if (p_cancel) {
@@ -1778,7 +1882,10 @@ void CollisionShapeSpatialGizmo::redraw() {
if (s.is_null())
return;
- if (s->cast_to<SphereShape>()) {
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape");
+ Ref<Material> material = create_material("shape_material", gizmo_color);
+
+ if (Object::cast_to<SphereShape>(*s)) {
Ref<SphereShape> sp = s;
float r = sp->get_radius();
@@ -1817,14 +1924,14 @@ void CollisionShapeSpatialGizmo::redraw() {
collision_segments.push_back(Vector3(b.x, b.y, 0));
}
- add_lines(points, SpatialEditorGizmos::singleton->shape_material);
+ add_lines(points, material);
add_collision_segments(collision_segments);
Vector<Vector3> handles;
handles.push_back(Vector3(r, 0, 0));
add_handles(handles);
}
- if (s->cast_to<BoxShape>()) {
+ if (Object::cast_to<BoxShape>(*s)) {
Ref<BoxShape> bs = s;
Vector<Vector3> lines;
@@ -1848,12 +1955,12 @@ void CollisionShapeSpatialGizmo::redraw() {
handles.push_back(ax);
}
- add_lines(lines, SpatialEditorGizmos::singleton->shape_material);
+ add_lines(lines, material);
add_collision_segments(lines);
add_handles(handles);
}
- if (s->cast_to<CapsuleShape>()) {
+ if (Object::cast_to<CapsuleShape>(*s)) {
Ref<CapsuleShape> cs = s;
float radius = cs->get_radius();
@@ -1889,7 +1996,7 @@ void CollisionShapeSpatialGizmo::redraw() {
points.push_back(Vector3(b.y, 0, b.x) + dud);
}
- add_lines(points, SpatialEditorGizmos::singleton->shape_material);
+ add_lines(points, material);
Vector<Vector3> collision_segments;
@@ -1928,7 +2035,7 @@ void CollisionShapeSpatialGizmo::redraw() {
add_handles(handles);
}
- if (s->cast_to<PlaneShape>()) {
+ if (Object::cast_to<PlaneShape>(*s)) {
Ref<PlaneShape> ps = s;
Plane p = ps->get_plane();
@@ -1955,13 +2062,13 @@ void CollisionShapeSpatialGizmo::redraw() {
points.push_back(p.normal * p.d);
points.push_back(p.normal * p.d + p.normal * 3);
- add_lines(points, SpatialEditorGizmos::singleton->shape_material);
+ add_lines(points, material);
add_collision_segments(points);
}
- if (s->cast_to<ConvexPolygonShape>()) {
+ if (Object::cast_to<ConvexPolygonShape>(*s)) {
- PoolVector<Vector3> points = s->cast_to<ConvexPolygonShape>()->get_points();
+ PoolVector<Vector3> points = Object::cast_to<ConvexPolygonShape>(*s)->get_points();
if (points.size() > 3) {
@@ -1977,20 +2084,20 @@ void CollisionShapeSpatialGizmo::redraw() {
points[i * 2 + 1] = md.vertices[md.edges[i].b];
}
- add_lines(points, SpatialEditorGizmos::singleton->shape_material);
+ add_lines(points, material);
add_collision_segments(points);
}
}
}
- if (s->cast_to<RayShape>()) {
+ if (Object::cast_to<RayShape>(*s)) {
Ref<RayShape> rs = s;
Vector<Vector3> points;
points.push_back(Vector3());
points.push_back(Vector3(0, 0, rs->get_length()));
- add_lines(points, SpatialEditorGizmos::singleton->shape_material);
+ add_lines(points, material);
add_collision_segments(points);
Vector<Vector3> handles;
handles.push_back(Vector3(0, 0, rs->get_length()));
@@ -2024,7 +2131,10 @@ void CollisionPolygonSpatialGizmo::redraw() {
lines.push_back(Vector3(points[i].x, points[i].y, -depth));
}
- add_lines(lines, SpatialEditorGizmos::singleton->shape_material);
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/shape");
+ Ref<Material> material = create_material("shape_material", gizmo_color);
+
+ add_lines(lines, material);
add_collision_segments(lines);
}
@@ -2092,6 +2202,9 @@ void VisibilityNotifierGizmo::commit_handle(int p_idx, const Variant &p_restore,
void VisibilityNotifierGizmo::redraw() {
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/visibility_notifier");
+ Ref<Material> material = create_material("visibility_notifier_material", gizmo_color);
+
clear();
Vector<Vector3> lines;
@@ -2113,7 +2226,7 @@ void VisibilityNotifierGizmo::redraw() {
handles.push_back(ax);
}
- add_lines(lines, SpatialEditorGizmos::singleton->visibility_notifier_material);
+ add_lines(lines, material);
//add_unscaled_billboard(SpatialEditorGizmos::singleton->visi,0.05);
add_collision_segments(lines);
add_handles(handles);
@@ -2238,9 +2351,22 @@ void ParticlesGizmo::redraw() {
lines.push_back(center + ax);
}
- add_lines(lines, SpatialEditorGizmos::singleton->particles_material);
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/particles");
+ Ref<Material> material = create_material("particles_material", gizmo_color);
+ Ref<Material> icon = create_icon_material("particles_icon", SpatialEditor::get_singleton()->get_icon("GizmoParticles", "EditorIcons"));
+
+ add_lines(lines, material);
add_collision_segments(lines);
+
+ if (is_selected()) {
+
+ gizmo_color.a = 0.1;
+ Ref<Material> solid_material = create_material("particles_solid_material", gizmo_color);
+ add_solid_box(solid_material, aabb.get_size());
+ }
+
//add_unscaled_billboard(SpatialEditorGizmos::singleton->visi,0.05);
+ add_unscaled_billboard(icon, 0.05);
add_handles(handles);
}
ParticlesGizmo::ParticlesGizmo(Particles *p_particles) {
@@ -2384,9 +2510,26 @@ void ReflectionProbeGizmo::redraw() {
lines.push_back(orig_handle);
}
- add_lines(lines, SpatialEditorGizmos::singleton->reflection_probe_material);
- add_lines(internal_lines, SpatialEditorGizmos::singleton->reflection_probe_material_internal);
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/reflection_probe");
+ Ref<Material> material = create_material("reflection_probe_material", gizmo_color);
+ Ref<Material> icon = create_icon_material("reflection_probe_icon", SpatialEditor::get_singleton()->get_icon("GizmoReflectionProbe", "EditorIcons"));
+
+ Color gizmo_color_internal = gizmo_color;
+ gizmo_color_internal.a = 0.5;
+ Ref<Material> material_internal = create_material("reflection_internal_material", gizmo_color_internal);
+
+ add_lines(lines, material);
+ add_lines(internal_lines, material_internal);
+
+ if (is_selected()) {
+
+ gizmo_color.a = 0.1;
+ Ref<Material> solid_material = create_material("reflection_probe_solid_material", gizmo_color);
+ add_solid_box(solid_material, probe->get_extents() * 2.0);
+ }
+
//add_unscaled_billboard(SpatialEditorGizmos::singleton->visi,0.05);
+ add_unscaled_billboard(icon, 0.05);
add_collision_segments(lines);
add_handles(handles);
}
@@ -2458,6 +2601,13 @@ void GIProbeGizmo::commit_handle(int p_idx, const Variant &p_restore, bool p_can
void GIProbeGizmo::redraw() {
+ Color gizmo_color = EDITOR_GET("editors/3d_gizmos/gizmo_colors/gi_probe");
+ Ref<Material> material = create_material("gi_probe_material", gizmo_color);
+ Ref<Material> icon = create_icon_material("gi_probe_icon", SpatialEditor::get_singleton()->get_icon("GizmoGIProbe", "EditorIcons"));
+ Color gizmo_color_internal = gizmo_color;
+ gizmo_color_internal.a = 0.1;
+ Ref<Material> material_internal = create_material("gi_probe_internal_material", gizmo_color_internal);
+
clear();
Vector<Vector3> lines;
@@ -2476,7 +2626,7 @@ void GIProbeGizmo::redraw() {
lines.push_back(b);
}
- add_lines(lines, SpatialEditorGizmos::singleton->gi_probe_material);
+ add_lines(lines, material);
add_collision_segments(lines);
lines.clear();
@@ -2521,7 +2671,7 @@ void GIProbeGizmo::redraw() {
}
}
- add_lines(lines, SpatialEditorGizmos::singleton->gi_probe_material_internal);
+ add_lines(lines, material_internal);
Vector<Vector3> handles;
@@ -2532,6 +2682,14 @@ void GIProbeGizmo::redraw() {
handles.push_back(ax);
}
+ if (is_selected()) {
+
+ gizmo_color.a = 0.1;
+ Ref<Material> solid_material = create_material("gi_probe_solid_material", gizmo_color);
+ add_solid_box(solid_material, aabb.get_size());
+ }
+
+ add_unscaled_billboard(icon, 0.05);
add_handles(handles);
}
GIProbeGizmo::GIProbeGizmo(GIProbe *p_probe) {
@@ -2544,6 +2702,11 @@ GIProbeGizmo::GIProbeGizmo(GIProbe *p_probe) {
void NavigationMeshSpatialGizmo::redraw() {
+ Ref<Material> edge_material = create_material("navigation_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/navigation_edge"));
+ Ref<Material> edge_material_disabled = create_material("navigation_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/navigation_edge_disabled"));
+ Ref<Material> solid_material = create_material("navigation_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/navigation_solid"));
+ Ref<Material> solid_material_disabled = create_material("navigation_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/navigation_solid_disabled"));
+
clear();
Ref<NavigationMesh> navmeshie = navmesh->get_navigation_mesh();
if (navmeshie.is_null())
@@ -2616,14 +2779,14 @@ void NavigationMeshSpatialGizmo::redraw() {
tmesh->create(tmeshfaces);
if (lines.size())
- add_lines(lines, navmesh->is_enabled() ? SpatialEditorGizmos::singleton->navmesh_edge_material : SpatialEditorGizmos::singleton->navmesh_edge_material_disabled);
+ add_lines(lines, navmesh->is_enabled() ? edge_material : edge_material_disabled);
add_collision_triangles(tmesh);
Ref<ArrayMesh> m = memnew(ArrayMesh);
Array a;
a.resize(Mesh::ARRAY_MAX);
a[0] = tmeshfaces;
m->add_surface_from_arrays(Mesh::PRIMITIVE_TRIANGLES, a);
- m->surface_set_material(0, navmesh->is_enabled() ? SpatialEditorGizmos::singleton->navmesh_solid_material : SpatialEditorGizmos::singleton->navmesh_solid_material_disabled);
+ m->surface_set_material(0, navmesh->is_enabled() ? solid_material : solid_material_disabled);
add_mesh(m);
add_collision_segments(lines);
}
@@ -2650,7 +2813,10 @@ void PinJointSpatialGizmo::redraw() {
cursor_points.push_back(Vector3(0, 0, +cs));
cursor_points.push_back(Vector3(0, 0, -cs));
add_collision_segments(cursor_points);
- add_lines(cursor_points, SpatialEditorGizmos::singleton->joint_material);
+
+ Ref<Material> material = create_material("joint_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/joint"));
+
+ add_lines(cursor_points, material);
}
PinJointSpatialGizmo::PinJointSpatialGizmo(PinJoint *p_p3d) {
@@ -2720,8 +2886,11 @@ void HingeJointSpatialGizmo::redraw() {
cursor_points.push_back(to);
}
}
+
+ Ref<Material> material = create_material("joint_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/joint"));
+
add_collision_segments(cursor_points);
- add_lines(cursor_points, SpatialEditorGizmos::singleton->joint_material);
+ add_lines(cursor_points, material);
}
HingeJointSpatialGizmo::HingeJointSpatialGizmo(HingeJoint *p_p3d) {
@@ -2824,8 +2993,11 @@ void SliderJointSpatialGizmo::redraw() {
cursor_points.push_back(to);
}
}
+
+ Ref<Material> material = create_material("joint_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/joint"));
+
add_collision_segments(cursor_points);
- add_lines(cursor_points, SpatialEditorGizmos::singleton->joint_material);
+ add_lines(cursor_points, material);
}
SliderJointSpatialGizmo::SliderJointSpatialGizmo(SliderJoint *p_p3d) {
@@ -2896,8 +3068,9 @@ void ConeTwistJointSpatialGizmo::redraw() {
points.push_back(Vector3(cn, b.x, b.y));
}
+ Ref<Material> material = create_material("joint_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/joint"));
add_collision_segments(points);
- add_lines(points, SpatialEditorGizmos::singleton->joint_material);
+ add_lines(points, material);
}
ConeTwistJointSpatialGizmo::ConeTwistJointSpatialGizmo(ConeTwistJoint *p_p3d) {
@@ -3080,8 +3253,9 @@ void Generic6DOFJointSpatialGizmo::redraw() {
#undef ADD_VTX
#undef SET_VTX
+ Ref<Material> material = create_material("joint_material", EDITOR_GET("editors/3d_gizmos/gizmo_colors/joint"));
add_collision_segments(cursor_points);
- add_lines(cursor_points, SpatialEditorGizmos::singleton->joint_material);
+ add_lines(cursor_points, material);
}
Generic6DOFJointSpatialGizmo::Generic6DOFJointSpatialGizmo(Generic6DOFJoint *p_p3d) {
@@ -3098,168 +3272,146 @@ SpatialEditorGizmos *SpatialEditorGizmos::singleton = NULL;
Ref<SpatialEditorGizmo> SpatialEditorGizmos::get_gizmo(Spatial *p_spatial) {
- if (p_spatial->cast_to<Light>()) {
+ if (Object::cast_to<Light>(p_spatial)) {
- Ref<LightSpatialGizmo> lsg = memnew(LightSpatialGizmo(p_spatial->cast_to<Light>()));
+ Ref<LightSpatialGizmo> lsg = memnew(LightSpatialGizmo(Object::cast_to<Light>(p_spatial)));
return lsg;
}
- if (p_spatial->cast_to<Camera>()) {
+ if (Object::cast_to<Camera>(p_spatial)) {
- Ref<CameraSpatialGizmo> lsg = memnew(CameraSpatialGizmo(p_spatial->cast_to<Camera>()));
+ Ref<CameraSpatialGizmo> lsg = memnew(CameraSpatialGizmo(Object::cast_to<Camera>(p_spatial)));
return lsg;
}
- if (p_spatial->cast_to<Skeleton>()) {
+ if (Object::cast_to<Skeleton>(p_spatial)) {
- Ref<SkeletonSpatialGizmo> lsg = memnew(SkeletonSpatialGizmo(p_spatial->cast_to<Skeleton>()));
+ Ref<SkeletonSpatialGizmo> lsg = memnew(SkeletonSpatialGizmo(Object::cast_to<Skeleton>(p_spatial)));
return lsg;
}
- if (p_spatial->cast_to<Position3D>()) {
+ if (Object::cast_to<Position3D>(p_spatial)) {
- Ref<Position3DSpatialGizmo> lsg = memnew(Position3DSpatialGizmo(p_spatial->cast_to<Position3D>()));
+ Ref<Position3DSpatialGizmo> lsg = memnew(Position3DSpatialGizmo(Object::cast_to<Position3D>(p_spatial)));
return lsg;
}
- if (p_spatial->cast_to<MeshInstance>()) {
+ if (Object::cast_to<MeshInstance>(p_spatial)) {
- Ref<MeshInstanceSpatialGizmo> misg = memnew(MeshInstanceSpatialGizmo(p_spatial->cast_to<MeshInstance>()));
+ Ref<MeshInstanceSpatialGizmo> misg = memnew(MeshInstanceSpatialGizmo(Object::cast_to<MeshInstance>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<Room>()) {
+ /*if (Object::cast_to<Room>(p_spatial)) {
- Ref<RoomSpatialGizmo> misg = memnew(RoomSpatialGizmo(p_spatial->cast_to<Room>()));
+ Ref<RoomSpatialGizmo> misg = memnew(RoomSpatialGizmo(Object::cast_to<Room>(p_spatial)));
return misg;
- }
+ }*/
- if (p_spatial->cast_to<NavigationMeshInstance>()) {
+ if (Object::cast_to<NavigationMeshInstance>(p_spatial)) {
- Ref<NavigationMeshSpatialGizmo> misg = memnew(NavigationMeshSpatialGizmo(p_spatial->cast_to<NavigationMeshInstance>()));
+ Ref<NavigationMeshSpatialGizmo> misg = memnew(NavigationMeshSpatialGizmo(Object::cast_to<NavigationMeshInstance>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<RayCast>()) {
+ if (Object::cast_to<RayCast>(p_spatial)) {
- Ref<RayCastSpatialGizmo> misg = memnew(RayCastSpatialGizmo(p_spatial->cast_to<RayCast>()));
+ Ref<RayCastSpatialGizmo> misg = memnew(RayCastSpatialGizmo(Object::cast_to<RayCast>(p_spatial)));
return misg;
}
+ /*
+ if (Object::cast_to<Portal>(p_spatial)) {
- if (p_spatial->cast_to<Portal>()) {
-
- Ref<PortalSpatialGizmo> misg = memnew(PortalSpatialGizmo(p_spatial->cast_to<Portal>()));
+ Ref<PortalSpatialGizmo> misg = memnew(PortalSpatialGizmo(Object::cast_to<Portal>(p_spatial)));
return misg;
}
+*/
+ if (Object::cast_to<CollisionShape>(p_spatial)) {
- if (p_spatial->cast_to<CollisionShape>()) {
-
- Ref<CollisionShapeSpatialGizmo> misg = memnew(CollisionShapeSpatialGizmo(p_spatial->cast_to<CollisionShape>()));
+ Ref<CollisionShapeSpatialGizmo> misg = memnew(CollisionShapeSpatialGizmo(Object::cast_to<CollisionShape>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<VisibilityNotifier>()) {
+ if (Object::cast_to<VisibilityNotifier>(p_spatial)) {
- Ref<VisibilityNotifierGizmo> misg = memnew(VisibilityNotifierGizmo(p_spatial->cast_to<VisibilityNotifier>()));
+ Ref<VisibilityNotifierGizmo> misg = memnew(VisibilityNotifierGizmo(Object::cast_to<VisibilityNotifier>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<Particles>()) {
+ if (Object::cast_to<Particles>(p_spatial)) {
- Ref<ParticlesGizmo> misg = memnew(ParticlesGizmo(p_spatial->cast_to<Particles>()));
+ Ref<ParticlesGizmo> misg = memnew(ParticlesGizmo(Object::cast_to<Particles>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<ReflectionProbe>()) {
+ if (Object::cast_to<ReflectionProbe>(p_spatial)) {
- Ref<ReflectionProbeGizmo> misg = memnew(ReflectionProbeGizmo(p_spatial->cast_to<ReflectionProbe>()));
+ Ref<ReflectionProbeGizmo> misg = memnew(ReflectionProbeGizmo(Object::cast_to<ReflectionProbe>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<GIProbe>()) {
+ if (Object::cast_to<GIProbe>(p_spatial)) {
- Ref<GIProbeGizmo> misg = memnew(GIProbeGizmo(p_spatial->cast_to<GIProbe>()));
+ Ref<GIProbeGizmo> misg = memnew(GIProbeGizmo(Object::cast_to<GIProbe>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<VehicleWheel>()) {
+ if (Object::cast_to<VehicleWheel>(p_spatial)) {
- Ref<VehicleWheelSpatialGizmo> misg = memnew(VehicleWheelSpatialGizmo(p_spatial->cast_to<VehicleWheel>()));
+ Ref<VehicleWheelSpatialGizmo> misg = memnew(VehicleWheelSpatialGizmo(Object::cast_to<VehicleWheel>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<PinJoint>()) {
+ if (Object::cast_to<PinJoint>(p_spatial)) {
- Ref<PinJointSpatialGizmo> misg = memnew(PinJointSpatialGizmo(p_spatial->cast_to<PinJoint>()));
+ Ref<PinJointSpatialGizmo> misg = memnew(PinJointSpatialGizmo(Object::cast_to<PinJoint>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<HingeJoint>()) {
+ if (Object::cast_to<HingeJoint>(p_spatial)) {
- Ref<HingeJointSpatialGizmo> misg = memnew(HingeJointSpatialGizmo(p_spatial->cast_to<HingeJoint>()));
+ Ref<HingeJointSpatialGizmo> misg = memnew(HingeJointSpatialGizmo(Object::cast_to<HingeJoint>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<SliderJoint>()) {
+ if (Object::cast_to<SliderJoint>(p_spatial)) {
- Ref<SliderJointSpatialGizmo> misg = memnew(SliderJointSpatialGizmo(p_spatial->cast_to<SliderJoint>()));
+ Ref<SliderJointSpatialGizmo> misg = memnew(SliderJointSpatialGizmo(Object::cast_to<SliderJoint>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<ConeTwistJoint>()) {
+ if (Object::cast_to<ConeTwistJoint>(p_spatial)) {
- Ref<ConeTwistJointSpatialGizmo> misg = memnew(ConeTwistJointSpatialGizmo(p_spatial->cast_to<ConeTwistJoint>()));
+ Ref<ConeTwistJointSpatialGizmo> misg = memnew(ConeTwistJointSpatialGizmo(Object::cast_to<ConeTwistJoint>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<Generic6DOFJoint>()) {
+ if (Object::cast_to<Generic6DOFJoint>(p_spatial)) {
- Ref<Generic6DOFJointSpatialGizmo> misg = memnew(Generic6DOFJointSpatialGizmo(p_spatial->cast_to<Generic6DOFJoint>()));
+ Ref<Generic6DOFJointSpatialGizmo> misg = memnew(Generic6DOFJointSpatialGizmo(Object::cast_to<Generic6DOFJoint>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<CollisionPolygon>()) {
+ if (Object::cast_to<CollisionPolygon>(p_spatial)) {
- Ref<CollisionPolygonSpatialGizmo> misg = memnew(CollisionPolygonSpatialGizmo(p_spatial->cast_to<CollisionPolygon>()));
+ Ref<CollisionPolygonSpatialGizmo> misg = memnew(CollisionPolygonSpatialGizmo(Object::cast_to<CollisionPolygon>(p_spatial)));
return misg;
}
- if (p_spatial->cast_to<AudioStreamPlayer3D>()) {
+ if (Object::cast_to<AudioStreamPlayer3D>(p_spatial)) {
- Ref<AudioStreamPlayer3DSpatialGizmo> misg = memnew(AudioStreamPlayer3DSpatialGizmo(p_spatial->cast_to<AudioStreamPlayer3D>()));
+ Ref<AudioStreamPlayer3DSpatialGizmo> misg = memnew(AudioStreamPlayer3DSpatialGizmo(Object::cast_to<AudioStreamPlayer3D>(p_spatial)));
return misg;
}
return Ref<SpatialEditorGizmo>();
}
-Ref<SpatialMaterial> SpatialEditorGizmos::create_line_material(const Color &p_base_color) {
-
- Ref<SpatialMaterial> line_material = Ref<SpatialMaterial>(memnew(SpatialMaterial));
- line_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
- line_material->set_line_width(3.0);
- line_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
- //line_material->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
- //->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
- line_material->set_albedo(p_base_color);
-
- return line_material;
-}
-
-Ref<SpatialMaterial> SpatialEditorGizmos::create_solid_material(const Color &p_base_color) {
-
- Ref<SpatialMaterial> line_material = Ref<SpatialMaterial>(memnew(SpatialMaterial));
- line_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
- line_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
- line_material->set_albedo(p_base_color);
-
- return line_material;
-}
-
SpatialEditorGizmos::SpatialEditorGizmos() {
singleton = this;
handle_material = Ref<SpatialMaterial>(memnew(SpatialMaterial));
handle_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ handle_material->set_flag(SpatialMaterial::FLAG_ONTOP, true);
handle_material->set_albedo(Color(0.8, 0.8, 0.8));
handle_material_billboard = handle_material->duplicate();
handle_material_billboard->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
@@ -3274,9 +3426,29 @@ SpatialEditorGizmos::SpatialEditorGizmos() {
handle2_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
handle2_material->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
handle2_material->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ handle2_material->set_flag(SpatialMaterial::FLAG_ONTOP, true);
handle2_material_billboard = handle2_material->duplicate();
handle2_material_billboard->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
-
+ handle2_material_billboard->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
+ handle2_material_billboard->set_flag(SpatialMaterial::FLAG_ONTOP, true);
+
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/light", Color(1, 1, 0.2));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/stream_player_3d", Color(0.4, 0.8, 1));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/camera", Color(0.8, 0.4, 0.8));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/skeleton", Color(1, 0.8, 0.4));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/visibility_notifier", Color(0.8, 0.5, 0.7));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/particles", Color(0.8, 0.7, 0.4));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/reflection_probe", Color(0.6, 1, 0.5));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/gi_probe", Color(0.5, 1, 0.6));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/shape", Color(0.5, 0.7, 1));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/joint", Color(0.5, 0.8, 1));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/navigation_edge", Color(0.5, 1, 1));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/navigation_edge_disabled", Color(0.7, 0.7, 0.7));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/navigation_solid", Color(0.5, 1, 1, 0.4));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/navigation_solid_disabled", Color(0.7, 0.7, 0.7, 0.4));
+ EDITOR_DEF("editors/3d_gizmos/gizmo_colors/instanced", Color(0.7, 0.7, 0.7, 0.5));
+
+#if 0
light_material = create_line_material(Color(1, 1, 0.2));
light_material_omni = create_line_material(Color(1, 1, 0.2));
light_material_omni->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
@@ -3289,6 +3461,7 @@ SpatialEditorGizmos::SpatialEditorGizmos() {
light_material_omni_icon->set_albedo(Color(1, 1, 1, 0.9));
light_material_omni_icon->set_texture(SpatialMaterial::TEXTURE_ALBEDO, SpatialEditor::get_singleton()->get_icon("GizmoLight", "EditorIcons"));
light_material_omni_icon->set_flag(SpatialMaterial::FLAG_FIXED_SIZE, true);
+ light_material_omni_icon->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
light_material_directional_icon = Ref<SpatialMaterial>(memnew(SpatialMaterial));
light_material_directional_icon->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
@@ -3297,6 +3470,8 @@ SpatialEditorGizmos::SpatialEditorGizmos() {
light_material_directional_icon->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
light_material_directional_icon->set_albedo(Color(1, 1, 1, 0.9));
light_material_directional_icon->set_texture(SpatialMaterial::TEXTURE_ALBEDO, SpatialEditor::get_singleton()->get_icon("GizmoDirectionalLight", "EditorIcons"));
+ light_material_directional_icon->set_billboard_mode(SpatialMaterial::BILLBOARD_ENABLED);
+ light_material_directional_icon->set_depth_scale(1);
camera_material = create_line_material(Color(1.0, 0.5, 1.0));
@@ -3377,14 +3552,6 @@ SpatialEditorGizmos::SpatialEditorGizmos() {
listener_line_mesh->surface_set_material(0, mat);
}
- sample_player_icon = Ref<SpatialMaterial>(memnew(SpatialMaterial));
- sample_player_icon->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
- sample_player_icon->set_cull_mode(SpatialMaterial::CULL_DISABLED);
- sample_player_icon->set_depth_draw_mode(SpatialMaterial::DEPTH_DRAW_DISABLED);
- sample_player_icon->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
- sample_player_icon->set_albedo(Color(1, 1, 1, 0.9));
- sample_player_icon->set_texture(SpatialMaterial::TEXTURE_ALBEDO, SpatialEditor::get_singleton()->get_icon("GizmoSpatialSamplePlayer", "EditorIcons"));
-
room_material = create_line_material(Color(1.0, 0.6, 0.9));
portal_material = create_line_material(Color(1.0, 0.8, 0.6));
raycast_material = create_line_material(Color(1.0, 0.8, 0.6));
@@ -3463,4 +3630,62 @@ SpatialEditorGizmos::SpatialEditorGizmos() {
}
shape_material = create_line_material(Color(0.2, 1, 1.0));
+#endif
+
+ pos3d_mesh = Ref<ArrayMesh>(memnew(ArrayMesh));
+ {
+
+ PoolVector<Vector3> cursor_points;
+ PoolVector<Color> cursor_colors;
+ float cs = 0.25;
+ cursor_points.push_back(Vector3(+cs, 0, 0));
+ cursor_points.push_back(Vector3(-cs, 0, 0));
+ cursor_points.push_back(Vector3(0, +cs, 0));
+ cursor_points.push_back(Vector3(0, -cs, 0));
+ cursor_points.push_back(Vector3(0, 0, +cs));
+ cursor_points.push_back(Vector3(0, 0, -cs));
+ cursor_colors.push_back(Color(1, 0.5, 0.5, 0.7));
+ cursor_colors.push_back(Color(1, 0.5, 0.5, 0.7));
+ cursor_colors.push_back(Color(0.5, 1, 0.5, 0.7));
+ cursor_colors.push_back(Color(0.5, 1, 0.5, 0.7));
+ cursor_colors.push_back(Color(0.5, 0.5, 1, 0.7));
+ cursor_colors.push_back(Color(0.5, 0.5, 1, 0.7));
+
+ Ref<SpatialMaterial> mat = memnew(SpatialMaterial);
+ mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ mat->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ mat->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ mat->set_line_width(3);
+ Array d;
+ d.resize(VS::ARRAY_MAX);
+ d[Mesh::ARRAY_VERTEX] = cursor_points;
+ d[Mesh::ARRAY_COLOR] = cursor_colors;
+ pos3d_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, d);
+ pos3d_mesh->surface_set_material(0, mat);
+ }
+
+ listener_line_mesh = Ref<ArrayMesh>(memnew(ArrayMesh));
+ {
+
+ PoolVector<Vector3> cursor_points;
+ PoolVector<Color> cursor_colors;
+ cursor_points.push_back(Vector3(0, 0, 0));
+ cursor_points.push_back(Vector3(0, 0, -1.0));
+ cursor_colors.push_back(Color(0.5, 0.5, 0.5, 0.7));
+ cursor_colors.push_back(Color(0.5, 0.5, 0.5, 0.7));
+
+ Ref<SpatialMaterial> mat = memnew(SpatialMaterial);
+ mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ mat->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ mat->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ mat->set_line_width(3);
+ Array d;
+ d.resize(VS::ARRAY_MAX);
+ d[Mesh::ARRAY_VERTEX] = cursor_points;
+ d[Mesh::ARRAY_COLOR] = cursor_colors;
+ listener_line_mesh->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, d);
+ listener_line_mesh->surface_set_material(0, mat);
+ }
}
diff --git a/editor/spatial_editor_gizmos.h b/editor/spatial_editor_gizmos.h
index 469a2d594a..d63a804055 100644
--- a/editor/spatial_editor_gizmos.h
+++ b/editor/spatial_editor_gizmos.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -93,7 +93,7 @@ class EditorSpatialGizmo : public SpatialEditorGizmo {
Vector<Instance> instances;
Spatial *spatial_node;
- void _set_spatial_node(Node *p_node) { set_spatial_node(p_node->cast_to<Spatial>()); }
+ void _set_spatial_node(Node *p_node) { set_spatial_node(Object::cast_to<Spatial>(p_node)); }
protected:
void add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard = false);
@@ -102,11 +102,15 @@ protected:
void add_collision_triangles(const Ref<TriangleMesh> &p_tmesh);
void add_unscaled_billboard(const Ref<Material> &p_material, float p_scale = 1);
void add_handles(const Vector<Vector3> &p_handles, bool p_billboard = false, bool p_secondary = false);
+ void add_solid_box(Ref<Material> &p_material, Vector3 size);
void set_spatial_node(Spatial *p_node);
static void _bind_methods();
+ Ref<SpatialMaterial> create_material(const String &p_name, const Color &p_color, bool p_billboard = false, bool p_on_top = false, bool p_use_vertex_color = false);
+ Ref<SpatialMaterial> create_icon_material(const String &p_name, const Ref<Texture> &p_texture, bool p_on_top = false, const Color &p_albedo = Color(1, 1, 1, 1));
+
public:
virtual Vector3 get_handle_pos(int p_idx) const;
virtual bool intersect_frustum(const Camera *p_camera, const Vector<Plane> &p_frustum);
@@ -117,6 +121,8 @@ public:
void transform();
virtual void redraw();
void free();
+ virtual bool is_editable() const;
+ virtual bool can_draw() const;
EditorSpatialGizmo();
~EditorSpatialGizmo();
@@ -177,6 +183,7 @@ class MeshInstanceSpatialGizmo : public EditorSpatialGizmo {
MeshInstance *mesh;
public:
+ virtual bool can_draw() const;
void redraw();
MeshInstanceSpatialGizmo(MeshInstance *p_mesh = NULL);
};
@@ -203,25 +210,7 @@ public:
SkeletonSpatialGizmo(Skeleton *p_skel = NULL);
};
-class RoomSpatialGizmo : public EditorSpatialGizmo {
-
- GDCLASS(RoomSpatialGizmo, EditorSpatialGizmo);
-
- struct _EdgeKey {
-
- Vector3 from;
- Vector3 to;
-
- bool operator<(const _EdgeKey &p_with) const { return from == p_with.from ? to < p_with.to : from < p_with.from; }
- };
-
- Room *room;
-
-public:
- void redraw();
- RoomSpatialGizmo(Room *p_room = NULL);
-};
-
+#if 0
class PortalSpatialGizmo : public EditorSpatialGizmo {
GDCLASS(PortalSpatialGizmo, EditorSpatialGizmo);
@@ -232,6 +221,7 @@ public:
void redraw();
PortalSpatialGizmo(Portal *p_portal = NULL);
};
+#endif
class VisibilityNotifierGizmo : public EditorSpatialGizmo {
@@ -278,7 +268,7 @@ public:
virtual void commit_handle(int p_idx, const Variant &p_restore, bool p_cancel = false);
void redraw();
- ReflectionProbeGizmo(ReflectionProbe *p_notifier = NULL);
+ ReflectionProbeGizmo(ReflectionProbe *p_probe = NULL);
};
class GIProbeGizmo : public EditorSpatialGizmo {
@@ -294,7 +284,7 @@ public:
virtual void commit_handle(int p_idx, const Variant &p_restore, bool p_cancel = false);
void redraw();
- GIProbeGizmo(GIProbe *p_notifier = NULL);
+ GIProbeGizmo(GIProbe *p_probe = NULL);
};
class CollisionShapeSpatialGizmo : public EditorSpatialGizmo {
@@ -420,51 +410,19 @@ public:
};
class SpatialEditorGizmos {
+
public:
- Ref<SpatialMaterial> create_line_material(const Color &p_base_color);
- Ref<SpatialMaterial> create_solid_material(const Color &p_base_color);
+ HashMap<String, Ref<SpatialMaterial> > material_cache;
+
Ref<SpatialMaterial> handle2_material;
Ref<SpatialMaterial> handle2_material_billboard;
Ref<SpatialMaterial> handle_material;
Ref<SpatialMaterial> handle_material_billboard;
- Ref<SpatialMaterial> light_material;
- Ref<SpatialMaterial> light_material_omni;
- Ref<SpatialMaterial> light_material_omni_icon;
- Ref<SpatialMaterial> light_material_directional_icon;
- Ref<SpatialMaterial> camera_material;
- Ref<SpatialMaterial> skeleton_material;
- Ref<SpatialMaterial> reflection_probe_material;
- Ref<SpatialMaterial> reflection_probe_material_internal;
- Ref<SpatialMaterial> gi_probe_material;
- Ref<SpatialMaterial> gi_probe_material_internal;
- Ref<SpatialMaterial> room_material;
- Ref<SpatialMaterial> portal_material;
- Ref<SpatialMaterial> raycast_material;
- Ref<SpatialMaterial> visibility_notifier_material;
- Ref<SpatialMaterial> particles_material;
- Ref<SpatialMaterial> car_wheel_material;
- Ref<SpatialMaterial> joint_material;
-
- Ref<SpatialMaterial> navmesh_edge_material;
- Ref<SpatialMaterial> navmesh_solid_material;
- Ref<SpatialMaterial> navmesh_edge_material_disabled;
- Ref<SpatialMaterial> navmesh_solid_material_disabled;
-
- Ref<SpatialMaterial> listener_icon;
-
- Ref<SpatialMaterial> sample_player_icon;
- Ref<SpatialMaterial> stream_player_icon;
- Ref<SpatialMaterial> visibility_notifier_icon;
-
- Ref<SpatialMaterial> shape_material;
Ref<Texture> handle_t;
-
Ref<ArrayMesh> pos3d_mesh;
Ref<ArrayMesh> listener_line_mesh;
static SpatialEditorGizmos *singleton;
- Ref<TriangleMesh> test_cube_tm;
-
Ref<SpatialEditorGizmo> get_gizmo(Spatial *p_spatial);
SpatialEditorGizmos();
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index d617f55dfd..ac273ea41e 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -148,7 +148,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -380,7 +381,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -391,9 +393,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr ""
@@ -466,7 +468,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -527,17 +529,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -553,7 +554,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -565,7 +566,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -717,14 +718,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -829,7 +830,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -909,12 +910,179 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "عملية تحريك"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -928,21 +1096,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1045,6 +1236,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1122,6 +1317,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1247,6 +1458,14 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1264,7 +1483,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1314,6 +1533,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1432,11 +1655,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1448,23 +1671,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1488,9 +1715,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1498,6 +1743,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1530,6 +1791,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1546,6 +1812,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1594,10 +1864,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1877,6 +2143,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1886,26 +2156,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1926,9 +2180,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2029,6 +2291,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2164,10 +2436,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2176,6 +2464,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2252,6 +2552,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2263,9 +2569,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2305,6 +2630,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2491,6 +2824,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3072,6 +3409,10 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3384,6 +3725,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3416,10 +3758,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3528,11 +3866,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3570,6 +3903,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3609,6 +3950,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
msgstr ""
@@ -3618,11 +3971,28 @@ msgid "Remove point"
msgstr "عملية تحريك"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "عملية تحريك"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3647,6 +4017,12 @@ 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 ""
@@ -3936,6 +4312,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4253,6 +4634,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4277,6 +4664,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4329,6 +4720,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4361,6 +4756,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4424,6 +4823,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4470,6 +4873,10 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Delete Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4774,91 +5181,99 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4866,6 +5281,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4982,6 +5408,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5110,6 +5537,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5167,6 +5598,15 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "عملية تحريك"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5234,7 +5674,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5256,11 +5696,23 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5296,10 +5748,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5359,7 +5807,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5406,6 +5854,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5442,10 +5906,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5490,6 +5950,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5504,10 +5977,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5535,254 +6004,283 @@ msgstr ""
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5823,6 +6321,10 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5835,6 +6337,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr ""
@@ -5930,6 +6436,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5973,10 +6484,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5989,6 +6496,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6031,6 +6550,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6082,6 +6609,10 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6089,6 +6620,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6120,10 +6659,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6161,35 +6696,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6201,6 +6716,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6241,10 +6760,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6410,6 +6925,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6505,6 +7024,122 @@ msgstr ""
"instance dictionary نموذج القاموس غير صالح - subclasses Ø§Ù„ÙØ¦Ø© Ø§Ù„ÙØ±Ø¹ÙŠØ© غير "
"صالحة"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Delete Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6536,64 +7171,63 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
+msgid "Change Signal Arguments"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
+msgid "Change Argument Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
+msgid "Change Argument name"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
+msgid "Set Variable Default Value"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
+msgid "Set Variable Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
+msgid "Functions:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
+msgid "Variables:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
+msgid "Name is not a valid identifier:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
+msgid "Name already in use by another func/var/signal:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
+msgid "Rename Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Function"
-msgstr "عملية تحريك"
+msgid "Rename Variable"
+msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
+msgid "Rename Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Add Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
+msgid "Add Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
+msgid "Add Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6605,6 +7239,14 @@ msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6645,6 +7287,23 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "عملية تحريك"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6673,6 +7332,51 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Function"
+msgstr "عملية تحريك"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6693,10 +7397,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6770,14 +7470,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6798,77 +7490,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6951,6 +7572,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6973,17 +7601,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -6997,6 +7640,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7012,6 +7668,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7028,7 +7691,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7043,22 +7706,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7077,7 +7724,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 7ca3987827..2ac4e53dd8 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -3,24 +3,24 @@
# This file is distributed under the same license as the Godot source code.
#
# Bojidar Marinov <bojidar.marinov.bg@gmail.com>, 2016.
-# Иван Пенев (Ðдмирал ÐнимЕ) <aeternus.arcis@gmail.com>, 2016.
+# Иван Пенев (Ðдмирал ÐнимЕ) <aeternus.arcis@gmail.com>, 2016-2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2016-08-20 16:42+0000\n"
-"Last-Translator: Иван Пенев (Ðдмирал ÐнимЕ) <aeternus.arcis@gmail.com>\n"
+"PO-Revision-Date: 2017-07-27 06:33+0000\n"
+"Last-Translator: Иван Пенев <aeternus.arcis@gmail.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/bg/>\n"
"Language: bg\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.8-dev\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
-msgstr ""
+msgstr "Изключено"
#: editor/animation_editor.cpp
msgid "All Selection"
@@ -120,7 +120,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "СпуÑък"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -146,13 +146,14 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
-msgstr ""
+msgstr "Линейно"
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
-msgstr ""
+msgstr "ПоÑтоÑнно"
#: editor/animation_editor.cpp
msgid "In"
@@ -176,15 +177,15 @@ msgstr "Преходи"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
-msgstr ""
+msgstr "Оптимизиране на анимациÑта"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation"
-msgstr ""
+msgstr "ПочиÑтване на анимациÑта"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
-msgstr "Преход"
+msgstr ""
#: editor/animation_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
@@ -198,7 +199,7 @@ msgstr ""
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
-msgstr ""
+msgstr "Създаване"
#: editor/animation_editor.cpp
msgid "Anim Create & Insert"
@@ -242,7 +243,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Length (s):"
-msgstr ""
+msgstr "Дължина (Ñек.):"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
@@ -250,7 +251,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Step (s):"
-msgstr ""
+msgstr "Стъпка (Ñек.):"
#: editor/animation_editor.cpp
msgid "Cursor step snap (in seconds)."
@@ -262,19 +263,19 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr ""
+msgstr "ДобавÑне на нови пътечки."
#: editor/animation_editor.cpp
msgid "Move current track up."
-msgstr ""
+msgstr "ПремеÑтване на пътечката нагоре."
#: editor/animation_editor.cpp
msgid "Move current track down."
-msgstr ""
+msgstr "ПремеÑтване на пътечката надолу."
#: editor/animation_editor.cpp
msgid "Remove selected track."
-msgstr ""
+msgstr "Премахване на пътечката."
#: editor/animation_editor.cpp
msgid "Track tools"
@@ -314,7 +315,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Transition"
-msgstr ""
+msgstr "Преход"
#: editor/animation_editor.cpp
msgid "Scale Ratio:"
@@ -342,11 +343,11 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Clean-Up"
-msgstr ""
+msgstr "ПочиÑтване"
#: editor/array_property_edit.cpp
msgid "Resize Array"
-msgstr ""
+msgstr "ПреоразмерÑване на маÑива"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
@@ -362,26 +363,26 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
-msgstr ""
+msgstr "ВерÑиÑ:"
#: editor/asset_library_editor_plugin.cpp
msgid "Contents:"
-msgstr ""
+msgstr "Съдържание:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "Файл:"
+msgstr "Преглед на файловете"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
#: editor/script_editor_debugger.cpp
msgid "Description:"
-msgstr ""
+msgstr "ОпиÑание:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
-msgstr ""
+msgstr "ИнÑталиране"
#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
#: editor/connections_dialog.cpp editor/export_template_manager.cpp
@@ -390,12 +391,12 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
-msgstr ""
+msgstr "ЗатварÑне"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
@@ -465,13 +466,13 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Готово!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "ИзтеглÑне:"
#: editor/asset_library_editor_plugin.cpp
msgid "Resolving.."
@@ -479,11 +480,11 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Connecting.."
-msgstr ""
+msgstr "Свързване.."
#: editor/asset_library_editor_plugin.cpp
msgid "Requesting.."
-msgstr ""
+msgstr "Запитване.."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -524,22 +525,21 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "All"
-msgstr ""
+msgstr "Ð’Ñички"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
-msgstr ""
+msgstr "ТърÑене:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
-msgstr ""
+msgstr "ТърÑене"
#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
@@ -553,29 +553,29 @@ msgstr ""
msgid "Import"
msgstr "ВнаÑÑне"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "ПриÑтавки"
#: editor/asset_library_editor_plugin.cpp
msgid "Sort:"
-msgstr ""
+msgstr "Подреждане:"
#: editor/asset_library_editor_plugin.cpp
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
-msgstr ""
+msgstr "КатегориÑ:"
#: editor/asset_library_editor_plugin.cpp
msgid "Site:"
-msgstr ""
+msgstr "МÑÑто:"
#: editor/asset_library_editor_plugin.cpp
msgid "Support.."
-msgstr ""
+msgstr "Поддръжка"
#: editor/asset_library_editor_plugin.cpp
msgid "Official"
@@ -717,14 +717,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -829,7 +829,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -909,12 +909,184 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "ДиÑпечер на проектите"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "ДиÑпечер на проектите"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Съдържание:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Съдържание:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Извършва Ñе повторно внаÑÑне"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "ÐаÑтройки за отÑтранÑване на грешки"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Изтриване на анимациÑта?"
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -928,21 +1100,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1046,6 +1241,11 @@ msgid "Updating scene.."
msgstr "ОбновÑване на Ñцената.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "МолÑ, първо запазете Ñцената."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1123,6 +1323,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1199,7 +1415,6 @@ msgid "ScanSources"
msgstr ""
#: editor/editor_file_system.cpp
-#, fuzzy
msgid "(Re)Importing Assets"
msgstr "Извършва Ñе повторно внаÑÑне"
@@ -1249,6 +1464,14 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1265,7 +1488,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1315,6 +1538,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1433,12 +1660,13 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
+#, fuzzy
+msgid "Save & Close"
+msgstr "Запазване на файл"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Да Ñе затвори ли Ñцената? (незаразените промени ще Ñе загубÑÑ‚)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1450,9 +1678,17 @@ msgid "No"
msgstr "Възел"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr ""
@@ -1462,11 +1698,7 @@ msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Изход"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1490,9 +1722,29 @@ msgid "Quick Run Scene.."
msgstr "Бързо пуÑкане на Ñцена.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Изход"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "ДиÑпечер на проектите"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Запазване на файл"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1500,6 +1752,22 @@ msgid "Pick a Main Scene"
msgstr "Изберете главна Ñцена"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1532,6 +1800,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1548,6 +1821,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Сцена"
@@ -1558,11 +1835,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Next tab"
-msgstr ""
+msgstr "Следващ подпрозорец"
#: editor/editor_node.cpp
msgid "Previous tab"
-msgstr ""
+msgstr "Предишен подпрозорец"
#: editor/editor_node.cpp
msgid "Filter Files.."
@@ -1596,10 +1873,6 @@ msgstr "Запазване на вÑички Ñцени"
msgid "Close Scene"
msgstr "ЗатварÑне на Ñцената"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1636,9 +1909,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "ИзнаÑÑне на проекта"
+msgstr "Проект"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1654,7 +1926,7 @@ msgstr "ИзнаÑÑне"
#: editor/editor_node.cpp
msgid "Tools"
-msgstr ""
+msgstr "Сечива"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -1880,6 +2152,10 @@ msgstr "Възел"
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Повторно внаÑÑне"
@@ -1889,26 +2165,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "ВнаÑÑне на шаблони от архив във формат ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "ИзнаÑÑне на проекта"
@@ -1929,9 +2189,18 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Ðов Ñкрипт"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -1945,9 +2214,8 @@ msgid "Open Script Editor"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "ИзнаÑÑне на библиотеката"
+msgstr "ОтварÑне на библиотеката"
#: editor/editor_node.cpp
msgid "Open the next Editor"
@@ -2034,6 +2302,16 @@ msgstr "Извършва Ñе повторно внаÑÑне"
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2173,10 +2451,27 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Запазване и повторно внаÑÑне"
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2185,6 +2480,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Имаше грешка при внаÑÑнето:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Имаше грешка при внаÑÑнето:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2261,6 +2570,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2272,9 +2587,30 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "ВнаÑÑне на Ñцената.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "ВнаÑÑне на триизмерна Ñцена"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2314,21 +2650,27 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Файл:"
#: editor/import_dock.cpp
-#, fuzzy
msgid "Import As:"
-msgstr "ВнаÑÑне"
+msgstr "ВнаÑÑне като:"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
msgstr ""
#: editor/import_dock.cpp
-#, fuzzy
msgid "Reimport"
msgstr "Повторно внаÑÑне"
@@ -2503,6 +2845,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -2920,9 +3266,8 @@ msgid "Change Animation Name:"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Delete Animation?"
-msgstr "ВнаÑÑне на анимации.."
+msgstr "Изтриване на анимациÑта?"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3085,6 +3430,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Файл:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3397,6 +3747,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3429,10 +3780,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3541,11 +3888,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Добре"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3583,6 +3925,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3622,6 +3972,18 @@ msgid "Update from Scene"
msgstr "ОбновÑване от Ñцена"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
msgstr ""
@@ -3630,11 +3992,28 @@ msgid "Remove point"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "Линейно"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+msgid "Remove Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3659,6 +4038,12 @@ 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 ""
@@ -3948,6 +4333,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4264,6 +4654,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4288,6 +4684,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4336,9 +4736,12 @@ msgid "Close Docs"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Close All"
-msgstr "Избиране на вÑичко"
+msgstr "ЗатварÑне на вÑичко"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4373,6 +4776,10 @@ msgid "Keep Debugger Open"
msgstr "ОтÑÑ‚Ñ€Ð°Ð½Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° грешки да Ñеди отворен"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4436,6 +4843,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4482,6 +4893,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Изтриване на анимациÑта?"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4786,92 +5202,100 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Колелцето надолу."
+msgid "Vertices"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Колелцето надолу."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4879,6 +5303,18 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Избиране на вÑичко"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4995,6 +5431,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "ÐаÑтройки"
@@ -5123,6 +5560,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5180,6 +5621,15 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "ЗатварÑне на вÑичко"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5247,7 +5697,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5269,11 +5719,24 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Линейно"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5309,10 +5772,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5372,7 +5831,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5381,26 +5840,22 @@ msgid "Resources"
msgstr ""
#: editor/project_export.cpp
-#, fuzzy
msgid "Export all resources in the project"
-msgstr "ИзнаÑÑне на вÑички реÑурÑи в проекта."
+msgstr "ИзнаÑÑне на вÑички реÑурÑи в проекта"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected scenes (and dependencies)"
-msgstr "ИзнаÑÑне на избраните реÑурÑи (включително завиÑимоÑтите)."
+msgstr "ИзнаÑÑне на избраните Ñцени (включително завиÑимоÑтите)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected resources (and dependencies)"
-msgstr "ИзнаÑÑне на избраните реÑурÑи (включително завиÑимоÑтите)."
+msgstr "ИзнаÑÑне на избраните реÑурÑи (включително завиÑимоÑтите)"
#: editor/project_export.cpp
msgid "Export Mode:"
msgstr "Режим на изнаÑÑне:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Resources to export:"
msgstr "РеÑурÑи за изнаÑÑне:"
@@ -5423,6 +5878,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "ИзнаÑÑне"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5432,7 +5904,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Invalid project path, the path must exist!"
-msgstr ""
+msgstr "ÐедейÑтвителен път. ПътÑÑ‚ трÑбва да ÑъщеÑтвува!"
#: editor/project_manager.cpp
msgid "Invalid project path, project.godot must not exist."
@@ -5459,10 +5931,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "ВнаÑÑне на ÑъщеÑтвуващ проект"
@@ -5472,15 +5940,15 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Project Name:"
-msgstr ""
+msgstr "Име:"
#: editor/project_manager.cpp
msgid "Create New Project"
-msgstr ""
+msgstr "Създаване на нов проект"
#: editor/project_manager.cpp
msgid "Project Path:"
-msgstr ""
+msgstr "Път:"
#: editor/project_manager.cpp
msgid "Install Project:"
@@ -5488,7 +5956,7 @@ msgstr ""
#: editor/project_manager.cpp
msgid "Browse"
-msgstr ""
+msgstr "Разглеждане"
#: editor/project_manager.cpp
msgid "New Game Project"
@@ -5507,6 +5975,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5521,286 +6002,312 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
-msgstr ""
+msgstr "СпиÑък Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸"
#: editor/project_manager.cpp
msgid "Run"
-msgstr ""
+msgstr "ПуÑкане"
#: editor/project_manager.cpp
msgid "Scan"
-msgstr ""
+msgstr "Сканиране"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
-msgstr ""
+msgstr "Изберете папка за Ñканиране"
#: editor/project_manager.cpp
msgid "New Project"
-msgstr ""
+msgstr "Ðов проект"
#: editor/project_manager.cpp
msgid "Templates"
-msgstr ""
+msgstr "Шаблони"
#: editor/project_manager.cpp
msgid "Exit"
-msgstr ""
+msgstr "Изход"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Създаване на нов проект"
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
-msgstr ""
+msgstr "ЛÑво копче"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
-msgstr ""
+msgstr "ДÑÑно копче"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
-msgstr ""
+msgstr "Средно копче"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
-msgstr ""
+msgstr "Колелце нагоре"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
-msgstr ""
+msgstr "Колелце надолу"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
-msgstr ""
+msgstr "Копче 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
-msgstr ""
+msgstr "Копче 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
-msgstr ""
+msgstr "Копче 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
+msgstr "Копче 9"
+
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "ОÑ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "УÑтройÑтво"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Копче"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "ЛÑво копче."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "ДÑÑно копче."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Средно копче."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Колелцето нагоре."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Колелцето надолу."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "ÐаÑтройки"
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "ÐаÑтройките Ñа запазени."
-#: editor/project_settings.cpp
-msgid "Add Translation"
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Translation"
+msgstr "ДобавÑне на превод"
+
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
-msgstr ""
+msgstr "Премахване на превода"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "ÐаÑтройки на проекта"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
-msgstr ""
+msgstr "Общи"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5842,8 +6349,12 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "Избиране на вÑичко"
+
+#: editor/property_editor.cpp
msgid "New Script"
-msgstr "Ðова Ñцена"
+msgstr "Ðов Ñкрипт"
#: editor/property_editor.cpp
msgid "Show in File System"
@@ -5854,6 +6365,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "ПоÑтавÑне"
@@ -5879,14 +6394,12 @@ msgid "Sections:"
msgstr ""
#: editor/property_selector.cpp
-#, fuzzy
msgid "Select Property"
-msgstr "Избиране на вÑичко"
+msgstr "Изберете ÑвойÑтво"
#: editor/property_selector.cpp
-#, fuzzy
msgid "Select Method"
-msgstr "Избиране на вÑичко"
+msgstr "Изберете метод"
#: editor/pvrtc_compress.cpp
msgid "Could not execute PVRTC tool:"
@@ -5952,6 +6465,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr "ÐаÑтройки за пуÑкане на Ñцена"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Добре"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5995,10 +6513,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6011,6 +6525,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6053,6 +6579,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6106,6 +6640,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "ПоÑтавÑне на възелите"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6113,6 +6652,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6144,11 +6691,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "ÐаÑтройки за отÑтранÑване на грешки"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6186,31 +6728,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6219,6 +6737,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Грешка при зареждането на шрифта."
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "ÐеуÑпешно Ñъздаване на папка."
@@ -6228,6 +6751,10 @@ msgid "Error loading script from %s"
msgstr "Грешка при зареждането на шрифта."
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6268,17 +6795,12 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
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"
@@ -6438,6 +6960,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6529,6 +7055,127 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Ðевалиден формат на инÑтанциÑта в речника (невалиден подклаÑ)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Delete Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Изключено"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Създаване"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Създаване на нов проект"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "ÐаÑтройки"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Файл:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6560,63 +7207,63 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
+msgid "Change Signal Arguments"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
+msgid "Change Argument Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
+msgid "Change Argument name"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
+msgid "Set Variable Default Value"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
+msgid "Set Variable Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
+msgid "Functions:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
+msgid "Variables:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
+msgid "Name is not a valid identifier:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
+msgid "Name already in use by another func/var/signal:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
+msgid "Rename Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
+msgid "Rename Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
+msgid "Rename Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Add Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
+msgid "Add Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
+msgid "Add Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6628,6 +7275,14 @@ msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6668,9 +7323,26 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Move Node(s)"
+msgstr "ПоÑтавÑне на възелите"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "ИзрÑзване на възелите"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
-msgstr "Преходи"
+msgstr "УÑловие"
#: modules/visual_script/visual_script_editor.cpp
msgid "Sequence"
@@ -6697,6 +7369,52 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "ПоÑтавÑне на възелите"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "ÐаÑтройки на редактора"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6717,10 +7435,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6733,14 +7447,12 @@ msgid "Copy Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Cut Nodes"
-msgstr "Възел"
+msgstr "ИзрÑзване на възелите"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste Nodes"
-msgstr "ПоÑтавÑне"
+msgstr "ПоÑтавÑне на възелите"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Input type not iterable: "
@@ -6796,14 +7508,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6827,78 +7531,6 @@ msgstr "ÐеуÑпешно Ñъздаване на папка."
msgid "Could not open template for export:\n"
msgstr "ÐеуÑпешно Ñъздаване на папка."
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Error creating the signature object."
-msgstr "Имаше грешка при изнаÑÑне на проекта!"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6999,6 +7631,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D работи Ñамо когато е наÑледник на Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7025,17 +7664,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7049,6 +7703,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7064,6 +7731,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7083,7 +7757,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7098,22 +7772,6 @@ msgstr "Тревога!"
msgid "Please Confirm..."
msgstr "МолÑ, потвърдете..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7132,7 +7790,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7146,6 +7804,13 @@ msgid ""
"texture to some node for display."
msgstr ""
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Да Ñе затвори ли Ñцената? (незаразените промени ще Ñе загубÑÑ‚)"
+
+#, fuzzy
+#~ msgid "Error creating the signature object."
+#~ msgstr "Имаше грешка при изнаÑÑне на проекта!"
+
#~ msgid "Import assets to the project."
#~ msgstr "ВнаÑÑне на обекти в проекта."
@@ -7164,9 +7829,6 @@ msgstr ""
#~ "За да изпълнÑва звук, SamplePlayer трÑбва да има един SampleLibrary "
#~ "реÑÑƒÑ€Ñ Ð² параметъра 'samples'."
-#~ msgid "Please save the scene first."
-#~ msgstr "МолÑ, първо запазете Ñцената."
-
#~ msgid "Please export outside the project folder!"
#~ msgstr "МолÑ, изнеÑете извън папката на проекта!"
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index abf7b8c8b9..64b0c0c528 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -147,7 +147,8 @@ msgstr "পরবরà§à¦¤à§€ ধাপে যান"
msgid "Goto Prev Step"
msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ধাপে যান"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "রৈখিক/লিনিয়ার"
@@ -382,7 +383,8 @@ msgstr "ফাইল"
msgid "Description:"
msgstr "বরà§à¦£à¦¨à¦¾:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "ইনà§à¦¸à¦Ÿà¦²"
@@ -393,9 +395,9 @@ msgstr "ইনà§à¦¸à¦Ÿà¦²"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "বনà§à¦§ করà§à¦¨"
@@ -471,7 +473,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -537,17 +539,16 @@ msgid "All"
msgstr "সকল"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
@@ -563,7 +564,7 @@ msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
msgid "Import"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "পà§à¦²à¦¾à¦—ইন-সমূহ"
@@ -575,7 +576,7 @@ msgstr "সাজান:"
msgid "Reverse"
msgstr "উলà§à¦Ÿà¦¾à¦¨/বিপরীত দিকে ফিরান"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "বিভাগ:"
@@ -730,14 +731,14 @@ msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "সংযোজন করà§à¦¨"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "অপসারণ করà§à¦¨"
@@ -846,7 +847,7 @@ msgid "Resource"
msgstr "রিসোরà§à¦¸"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "পথ"
@@ -929,12 +930,194 @@ msgstr "মালিকবিহীন রিসোরà§à¦¸à§‡à¦° অনà§à¦¸à
msgid "Delete selected files?"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ অপসারণ করবেন?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "অপসারণ করà§à¦¨"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Godot কমিউনিটি হতে আপনাকে ধনà§à¦¯à¦¬à¦¾à¦¦!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "ধনà§à¦¯à¦¬à¦¾à¦¦!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "লেখক:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "অসংকà§à¦šà¦¿à¦¤"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সফল হয়েছে!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সফল হয়েছে!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "খালি বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Autoload পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿà¦­à¦¾à¦¬à§‡ চালানো টগল করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "ডিবাগের সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "%s সংযà§à¦•à§à¦¤ করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "লেআউট/নকশা অপসারণ করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾ সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করà§à¦¨"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -948,24 +1131,53 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"ফাইলের অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨à¥¤\n"
+"অনà§à¦—à§à¦°à¦¹ করে .fnt বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤"
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Add Bus"
msgstr "%s সংযà§à¦•à§à¦¤ করà§à¦¨"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "নতà§à¦¨ রিসোরà§à¦¸ তৈরি করà§à¦¨"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "লোড"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "ডিসà§à¦• হতে à¦à¦•টি বিদà§à¦¯à¦®à¦¾à¦¨ রিসোরà§à¦¸ লোড করà§à¦¨ à¦à¦¬à¦‚ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨à¥¤"
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "সাধারণ/ডিফলà§à¦Ÿ"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ নাম।"
@@ -1072,6 +1284,11 @@ msgid "Updating scene.."
msgstr "দৃশà§à¦¯ হাল নাগাদ হচà§à¦›à§‡.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "পà§à¦°à¦¥à¦®à§‡ অনà§à¦—à§à¦°à¦¹ করে দৃশà§à¦¯à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "à¦à¦•টি সà§à¦¥à¦¾à¦¨ পছনà§à¦¦ করà§à¦¨"
@@ -1149,6 +1366,22 @@ msgstr "সব ফাইল (*)"
msgid "Open"
msgstr "খà§à¦²à§à¦¨"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "à¦à¦•টি ফাইল খà§à¦²à§à¦¨"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "à¦à¦• বা à¦à¦•াধিক ফাইল খà§à¦²à§à¦¨"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "পথ/ডিরেকà§à¦Ÿà¦°à¦¿ খà§à¦²à§à¦¨"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "ফাইল বা পথ/ডিরেকà§à¦Ÿà¦°à¦¿ খà§à¦²à§à¦¨"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1275,6 +1508,15 @@ msgid "Signals:"
msgstr "সিগনà§à¦¯à¦¾à¦²à¦¸/সংকেতসমূহ:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦¸à¦®à§‚হ"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
@@ -1291,7 +1533,8 @@ msgid "Search Text"
msgstr "টেকà§à¦¸à¦Ÿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " আউটপà§à¦Ÿ/ফলাফল:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1341,6 +1584,11 @@ msgid "Creating Thumbnail"
msgstr "থামà§à¦¬à¦¨à§‡à¦‡à¦² তৈরি হচà§à¦›à§‡"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1473,12 +1721,13 @@ msgid "Quick Open Script.."
msgstr "দà§à¦°à§à¦¤ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ খà§à¦²à§à¦¨.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "হà§à¦¯à¦¾à¦"
+#, fuzzy
+msgid "Save & Close"
+msgstr "ফাইল সংরকà§à¦·à¦¨ করà§à¦¨"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "দৃশà§à¦¯ বনà§à¦§ করবেন? (অসংরকà§à¦·à¦¿à¦¤ পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হারিয়ে যাবে)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1490,9 +1739,17 @@ msgid "No"
msgstr "নোড"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "হà§à¦¯à¦¾à¦"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "à¦à¦‡ দৃশà§à¦¯à¦Ÿà¦¿ কখনোই সংরকà§à¦·à¦£ করা হয় নি। চালানোর পূরà§à¦¬à§‡ সংরকà§à¦·à¦£ করবেন?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Mesh Library à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
@@ -1502,12 +1759,9 @@ msgid "Export Tile Set"
msgstr "Tile Set à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করà§à¦¨"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "à¦à¦¡à¦¿à¦Ÿà¦° হতে পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করবেন?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1530,18 +1784,52 @@ msgid "Quick Run Scene.."
msgstr "দà§à¦°à§à¦¤ দৃশà§à¦¯ চালান.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করà§à¦¨"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "à¦à¦¡à¦¿à¦Ÿà¦° হতে পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করবেন?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "ফাইল সংরকà§à¦·à¦¨ করà§à¦¨"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦° (Project Manager) খà§à¦²à¦¬à§‡à¦¨? \n"
-"(অ-সংরকà§à¦·à¦¿à¦¤ পরিবরà§à¦¤à¦¨-সমূহ হারিয়ে যাবে)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "à¦à¦•টি মà§à¦–à§à¦¯ দৃশà§à¦¯ মনোনীত করà§à¦¨"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1576,6 +1864,11 @@ msgstr "লেআউট/নকশা সংরকà§à¦·à¦£ করà§à¦¨"
msgid "Delete Layout"
msgstr "লেআউট/নকশা অপসারণ করà§à¦¨"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "সাধারণ/ডিফলà§à¦Ÿ"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "দৃশà§à¦¯à§‡à¦° টà§à¦¯à¦¾à¦¬ পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -1592,6 +1885,11 @@ msgstr "%d টি অধিক ফাইল(সমূহ) বা ফোলà§à¦¡
msgid "Distraction Free Mode"
msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "দৃশà§à¦¯"
@@ -1641,10 +1939,6 @@ msgstr "সকল দৃশà§à¦¯ সংরকà§à¦·à¦£ করà§à¦¨"
msgid "Close Scene"
msgstr "দৃশà§à¦¯ বনà§à¦§ করà§à¦¨"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "বনà§à¦§ করে পূরà§à¦¬à§‡à¦° দৃশà§à¦¯à§‡ যান"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "সামà§à¦ªà§à¦°à¦¤à¦¿à¦•সমূহ খà§à¦²à§à¦¨"
@@ -1948,6 +2242,10 @@ msgstr "নোড"
msgid "Output"
msgstr "আউটপà§à¦Ÿ/ফলাফল"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
@@ -1957,26 +2255,10 @@ msgid "Update"
msgstr "হালনাগাদ"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Godot কমিউনিটি হতে আপনাকে ধনà§à¦¯à¦¬à¦¾à¦¦!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "ধনà§à¦¯à¦¬à¦¾à¦¦!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "ZIP ফাইল হতে টেমপà§à¦²à§‡à¦Ÿ-সমূহ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "পà§à¦°à¦•লà§à¦ª à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
@@ -1997,9 +2279,18 @@ msgid "Open & Run a Script"
msgstr "à¦à¦•টি সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ খà§à¦²à§à¦¨ à¦à¦¬à¦‚ চালান"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "নতà§à¦¨ উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারী দৃশà§à¦¯.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "ভà§à¦²/সমসà§à¦¯à¦¾-সমূহ লোড করà§à¦¨"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2106,6 +2397,16 @@ msgstr "পà§à¦¨à¦°à¦¾à§Ÿ ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡"
msgid "Re-Import Changed Resources"
msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ রিসোরà§à¦¸-সমূহ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "আপনার লজিক/যà§à¦•à§à¦¤à¦¿-সমূহ _run() মেথডে লিখà§à¦¨à¥¤"
@@ -2256,10 +2557,28 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "সংরকà§à¦·à¦£ à¦à¦¬à¦‚ পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "উৎস:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "ফাইলà§à¦—à§à¦²à§‹à¦° à¦à¦•ই উৎস à¦à¦¬à¦‚ গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨, কিছà§à¦‡ করা হচà§à¦›à§‡ না।"
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "পথগà§à¦²à§‹à¦° à¦à¦•ই উৎস à¦à¦¬à¦‚ গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨, কিছà§à¦‡ করা হচà§à¦›à§‡ না।"
@@ -2268,6 +2587,20 @@ msgid "Can't move directories to within themselves."
msgstr "সà§à¦¥à¦¾à¦¨à¦¸à¦®à§‚হকে তাদের মাà¦à§‡à¦‡ সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা সমà§à¦­à¦¬ নয়।"
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "ছবি লোডে সমসà§à¦¯à¦¾ হয়েছে:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "'..' তে পরিচালনা করা সমà§à¦­à¦¬ নয়"
@@ -2345,6 +2678,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ দৃশà§à¦¯(সমূহ)-কে নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ নোডের অংশ হিসেবে ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করà§à¦¨à¥¤"
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "সরান"
@@ -2356,10 +2695,31 @@ msgstr "গà§à¦°à§à¦ª/দলে যোগ করà§à¦¨"
msgid "Remove from Group"
msgstr "গà§à¦°à§à¦ª/দল হতে অপসারণ করà§à¦¨"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "পৃষà§à¦ à¦¤à¦² %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হচà§à¦›à§‡.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "3D দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2398,6 +2758,14 @@ msgid "Saving.."
msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡.."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "ফাইল"
@@ -2594,6 +2962,10 @@ msgstr "মেস(সমূহ)-à¦à¦° উৎস:"
msgid "Mesh"
msgstr "মেস"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "পৃষà§à¦ à¦¤à¦² %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার মতো কোনো নমà§à¦¨à¦¾ নেই!"
@@ -3179,6 +3551,11 @@ msgid "New name:"
msgstr "নতà§à¦¨ নাম:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "নোড ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "সà§à¦•েল/মাপ:"
@@ -3493,6 +3870,7 @@ msgstr "বসà§à¦¤à§à¦° অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤-সমূহের
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
@@ -3525,10 +3903,6 @@ msgid "Use Pixel Snap"
msgstr "পিকà§à¦¸à§‡à¦² সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "সà§à¦•েলেটন/কাঠাম.."
@@ -3637,11 +4011,6 @@ msgstr "à¦à¦‡ কাজটি করার জনà§à¦¯ à¦à¦•টি à¦à¦•ক
msgid "Change default type"
msgstr "ডিফলà§à¦Ÿ ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "সঠিক"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3681,6 +4050,14 @@ msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (বিনà§à¦¦à§ অপসা
msgid "Create a new polygon from scratch."
msgstr "আরমà§à¦­ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤"
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Poly3D তৈরি করà§à¦¨"
@@ -3721,6 +4098,21 @@ msgstr "দৃশà§à¦¯ হতে হালনাগাদ করà§à¦¨"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "Curve Map পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Curve Map পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "রিসোরà§à¦¸ লোড করà§à¦¨"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨"
@@ -3731,13 +4123,31 @@ msgstr "পথের বিনà§à¦¦à§ অপসারণ করà§à¦¨"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "ডান দরà§à¦¶à¦¨"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "রিসোরà§à¦¸ লোড করà§à¦¨"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "Curve Map পরিবরà§à¦¤à¦¨ করà§à¦¨"
+msgid "Remove Curve Point"
+msgstr "পথের বিনà§à¦¦à§ অপসারণ করà§à¦¨"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3761,6 +4171,12 @@ 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 "অকলà§à¦¡à¦¾à¦° (occluder) পলিগন তৈরি করà§à¦¨"
@@ -4055,6 +4471,12 @@ msgid "Load Emission Mask"
msgstr "Emission Mask লোড করà§à¦¨"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "ভারটেকà§à¦¸"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "উৎপাদিত বিনà§à¦¦à§à¦° সংখà§à¦¯à¦¾:"
@@ -4386,6 +4808,12 @@ msgid "Clear Recent Files"
msgstr "বোনà§â€Œ/হাড় পরিষà§à¦•ার করà§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "থিম সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে"
@@ -4410,6 +4838,10 @@ msgid "Save Theme As.."
msgstr "থিম à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
@@ -4462,6 +4894,11 @@ msgid "Close All"
msgstr "সবগà§à¦²à¦¿ বনà§à¦§ করà§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "ফেবরিট/পà§à¦°à¦¿à¦¯à¦¼-সমূহ অদলবদল/টগল করà§à¦¨"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4494,6 +4931,11 @@ msgid "Keep Debugger Open"
msgstr "ডিবাগার খোলা রাখà§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "উইনà§à¦¡à§‹"
@@ -4561,6 +5003,10 @@ msgid ""
msgstr "পূরà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° তাদের অধিকারী দৃশà§à¦¯ লোড করা হলেই সমà§à¦ªà¦¾à¦¦à¦¨ করা যাবে"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "রঙ পছনà§à¦¦ করà§à¦¨"
@@ -4608,6 +5054,11 @@ msgid "Move Down"
msgstr "নীচে যান"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "বিনà§à¦¦à§ অপসারণ করà§à¦¨"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "বামে মাতà§à¦°à¦¾ দিন"
@@ -4914,37 +5365,6 @@ msgid "Animation Key Inserted."
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° চাবি সনà§à¦¨à¦¿à¦¬à§‡à¦¶à¦¿à¦¤ হয়েছে।"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "সামনের দিকে যান"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "পিছনের/অতীতের দিকে"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "মাউসের চাকা নিচের দিকে চকà§à¦•র।"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -5012,10 +5432,64 @@ msgid "Audio Listener"
msgstr "অডিও শà§à¦°à§‹à¦¤à¦¾"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "সামনের দিকে যান"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "পিছনের/অতীতের দিকে"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "মাউসের চাকা নিচের দিকে চকà§à¦•র।"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm à¦à¦° সংলাপ"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "মোড (Mode) বাছাই করà§à¦¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "অলà§à¦Ÿà¦¾à¦° কী + মাউসের ডান বোতাম: গভীর তালিকায় নিরà§à¦¬à¦¾à¦šà¦¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "সরানোর মোড (W)"
@@ -5136,6 +5610,7 @@ msgid "View Grid"
msgstr "গà§à¦°à¦¿à¦¡ দেখà§à¦¨"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "সেটিংস"
@@ -5264,6 +5739,11 @@ msgid "StyleBox Preview:"
msgstr "StyleBox পà§à¦°à¦¿à¦­à¦¿à¦‰:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•া"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª মোড:"
@@ -5321,6 +5801,16 @@ msgid "Remove Item"
msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "থিম"
@@ -5388,7 +5878,7 @@ msgstr "টà§à¦¯à¦¾à¦¬ ২"
msgid "Tab 3"
msgstr "টà§à¦¯à¦¾à¦¬ à§©"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "ধরণ:"
@@ -5410,12 +5900,27 @@ msgid "Color"
msgstr "রঙ"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ মà§à¦›à§‡ ফেলà§à¦¨"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "TileMap আà¦à¦•à§à¦¨"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "বাকেটà§â€Œ"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5450,10 +5955,6 @@ msgid "Pick Tile"
msgstr "টাইল পছনà§à¦¦ করà§à¦¨"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "০ ডিগà§à¦°à¦¿ ঘোরানà§"
@@ -5517,7 +6018,7 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ অপসারণ
msgid "Presets"
msgstr "পà§à¦°à¦¿à¦¸à§‡à¦Ÿ.."
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "সংযোগ.."
@@ -5575,6 +6076,24 @@ msgid "Make Patch"
msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথ:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "মেথডের তালিকা:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ PCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5615,10 +6134,6 @@ msgid "The following files failed extraction from package:"
msgstr "পà§à¦¯à¦¾à¦•েজ হতে নীমà§à¦¨à§‹à¦•à§à¦¤ ফাইলসমূহ à¦à¦•à§à¦¸à¦Ÿà§à¦°à¦¾à¦•à§à¦Ÿ করা অসফল হয়েছে:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সফল হয়েছে!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
@@ -5663,6 +6178,23 @@ msgid "Are you sure to open more than one project?"
msgstr "à¦à¦•ধিক পà§à¦°à¦•লà§à¦ª খোলায় আপনি সà§à¦¨à¦¿à¦¶à§à¦šà¦¿à¦¤?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"কোনো মà§à¦–à§à¦¯ দৃশà§à¦¯ নিরà§à¦§à¦¾à¦°à¦£ করা হয়নি, নিরà§à¦§à¦¾à¦°à¦£ করবেন?\n"
+"আপনি পরবরà§à¦¤à¦¿à¦¤à§‡ তা 'অà§à¦¯à¦¾à¦ªà§à¦²à¦¿à¦•েশন (application)' বিভাগের \\\"পà§à¦°à¦•লà§à¦ªà§‡à¦° সেটিংস "
+"(Project Settings)\\\"-ঠপরিবরà§à¦¤à¦¨ করতে পারবেন।"
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "à¦à¦•ধিক পà§à¦°à¦•লà§à¦ª চালানোয় আপনি সà§à¦¨à¦¿à¦¶à§à¦šà¦¿à¦¤?"
@@ -5679,10 +6211,6 @@ msgstr ""
"সà§à¦¨à¦¿à¦¶à§à¦šà¦¿à¦¤?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° তালিকা"
@@ -5711,258 +6239,292 @@ msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
msgid "Exit"
msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "সংযোগ.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "কী/চাবি "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "জয়সà§à¦Ÿà¦¿à¦• বোতাম"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "জয়সà§à¦Ÿà¦¿à¦• অকà§à¦·"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "মাউসের বোতাম"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "অকারà§à¦¯à¦•র অà§à¦¯à¦¾à¦•শন ('/' বা ':' ছাড়া কিছà§à¦‡ যাবে না)।"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "'%s' অà§à¦¯à¦¾à¦•শন ইতিমধà§à¦¯à§‡à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "ইনপà§à¦Ÿ অà§à¦¯à¦¾à¦•শন ইভেনà§à¦Ÿ পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "ইনপà§à¦Ÿ অà§à¦¯à¦¾à¦•শন ইভেনà§à¦Ÿ যোগ করà§à¦¨"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "কনà§à¦Ÿà§à¦°à§‹à¦²+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "যেকোনো কী/চাবি চাপà§à¦¨.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "মাউসের বোতাম ইনà§à¦¡à§‡à¦•à§à¦¸:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "বাম বোতাম"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "ডান বোতাম"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "মধà§à¦¯ বোতাম"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "চাকা উপরে তোলার বোতাম"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "চাকা নিচে নামানোর বোতাম"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "বোতাম ৬"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "বোতাম ৭"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "বোতাম ৮"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "বোতাম ৯"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "জয়সà§à¦Ÿà¦¿à¦• অকà§à¦· ইনà§à¦¡à§‡à¦•à§à¦¸:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "অকà§à¦·"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "জয়সà§à¦Ÿà¦¿à¦• বোতাম ইনà§à¦¡à§‡à¦•à§à¦¸:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "ইনপà§à¦Ÿ অà§à¦¯à¦¾à¦•শন যোগ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "ইনপà§à¦Ÿ অà§à¦¯à¦¾à¦•শন ইভেনà§à¦Ÿ মà§à¦›à§‡ ফেলà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "খালি বসà§à¦¤à§ যোগ করà§à¦¨"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "ডিভাইস/যনà§à¦¤à§à¦°"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "বাটন/বোতাম"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "বাম বোতাম/বাটন।"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "ডান বোতাম/বাটন।"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "মাঠবোতাম/বাটন।"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "মাউসের চাকা উপরের দিকে চকà§à¦•র।"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "মাউসের চাকা নিচের দিকে চকà§à¦•র।"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "গেটার (Getter) à¦à¦° বৈশিষà§à¦Ÿà§à¦¯à§‡ যà§à¦•à§à¦¤ করà§à¦¨"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "পà§à¦°à¦ªà¦¾à¦°à§à¦Ÿà¦¿:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "সেটিংস"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "ইনপà§à¦Ÿ অপসারণ করà§à¦¨"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে।"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "সেটিংস সংরকà§à¦·à¦£ সফল হয়েছে।"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "অনà§à¦¬à¦¾à¦¦ সংযোগ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "অনà§à¦¬à¦¾à¦¦ অপসারণ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "পà§à¦¨à¦ƒ-চিতà§à¦°à¦¾à¦™à§à¦•িত পথ যোগ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "রিসোরà§à¦¸ পà§à¦¨à¦ƒ-চিতà§à¦°à¦¾à¦™à§à¦•িত করে যà§à¦•à§à¦¤ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "রিসোরà§à¦¸ পà§à¦¨à¦ƒ-নকশার ভাষা পরিবরà§à¦¤à¦¨ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "রিসোরà§à¦¸à§‡à¦° পà§à¦¨à¦ƒ-নকশা অপসারণ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "রিসোরà§à¦¸à§‡à¦° পà§à¦¨à¦ƒ-নকশার সিদà§à¦§à¦¾à¦¨à§à¦¤ অপসারণ করà§à¦¨"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° সেটিংস (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "জেনেরাল"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "পà§à¦°à¦ªà¦¾à¦°à§à¦Ÿà¦¿:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "ডিলিট/অপসারণ"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "পà§à¦²à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "ইনপà§à¦Ÿ মà§à¦¯à¦¾à¦ª/নকশা"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "অà§à¦¯à¦¾à¦•শন:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "ডিভাইস:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "ইনà§à¦¡à§‡à¦•à§à¦¸:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•রণ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "অনà§à¦¬à¦¾à¦¦à¦¸à¦®à§‚হ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "অনà§à¦¬à¦¾à¦¦à¦¸à¦®à§‚হ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "পà§à¦¨à¦ƒà¦¨à¦•শাসমূহ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "রিসোরà§à¦¸à¦¸à¦®à§‚হ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "ঘটনাসà§à¦¥à¦² দà§à¦¬à¦¾à¦°à¦¾ পà§à¦¨à¦ƒà¦¨à¦•শা:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "ঘটনাসà§à¦¥à¦²"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ-লোড"
@@ -6004,6 +6566,11 @@ msgid "Assign"
msgstr "নিযà§à¦•à§à¦¤"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "à¦à¦•টি নোড নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
@@ -6018,6 +6585,11 @@ msgstr "ফাইল লোডে সমসà§à¦¯à¦¾: রিসোরà§à¦¸ নà
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° জনà§à¦¯ নোড(সমূহ) নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "à¦à¦•টি নোড নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
@@ -6113,6 +6685,11 @@ msgstr "পà§à¦°à¦§à¦¾à¦¨ দৃশà§à¦¯à§‡à¦° মান/আরà§à¦—à§à¦®à§‡
msgid "Scene Run Settings"
msgstr "দৃশà§à¦¯ চালানোর সেটিংস"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "সঠিক"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "দৃশà§à¦¯à¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করার মতো কোনো অভিভাবক নেই।"
@@ -6158,10 +6735,6 @@ msgid "Delete Node(s)?"
msgstr "নোড(সমূহ) অপসারণ করবেন?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6174,6 +6747,18 @@ msgid "Save New Scene As.."
msgstr "নতà§à¦¨ দৃশà§à¦¯ à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "সমà§à¦ªà¦¾à¦¦à¦¨à¦¯à§‹à¦—à§à¦¯ অংশীদারীসমূহ"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "পà§à¦²à§‡à¦¸à¦¹à§‹à¦²à§à¦¡à¦¾à¦° হিসেবে লোড করà§à¦¨"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করা বাতিল করà§à¦¨"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "অরà§à¦¥à¦ªà§‚রà§à¦¨!"
@@ -6219,6 +6804,14 @@ msgid "Edit Connections"
msgstr "সংযোগসমূহ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করà§à¦¨"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
@@ -6272,6 +6865,11 @@ msgstr ""
"উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারী দৃশà§à¦¯ তৈরি করে।"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "à¦à¦•টি নতà§à¦¨ বা বিদà§à¦¯à¦®à¦¾à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ নোডে সংযà§à¦•à§à¦¤ করà§à¦¨à¥¤"
@@ -6279,6 +6877,14 @@ msgstr "à¦à¦•টি নতà§à¦¨ বা বিদà§à¦¯à¦®à¦¾à¦¨ সà§à¦•à§à¦
msgid "Clear a script for the selected node."
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ নোড হতে à¦à¦•টি সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ পরিসà§à¦•ার করà§à¦¨à¥¤"
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করবেন? (ফেরৎ পাবেন না!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "পরিসà§à¦•ার করà§à¦¨!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Spatial দৃশà§à¦¯à¦®à¦¾à¦¨à¦¤à¦¾ টগল করà§à¦¨"
@@ -6310,11 +6916,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "ডিবাগের সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
@@ -6353,32 +6954,8 @@ msgid "Scene Tree (Nodes):"
msgstr "দৃশà§à¦¯à§‡à¦° শাখা (নোডসমূহ):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "সমà§à¦ªà¦¾à¦¦à¦¨à¦¯à§‹à¦—à§à¦¯ অংশীদারীসমূহ"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "পà§à¦²à§‡à¦¸à¦¹à§‹à¦²à§à¦¡à¦¾à¦° হিসেবে লোড করà§à¦¨"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করা বাতিল করà§à¦¨"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করà§à¦¨"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করবেন? (ফেরৎ পাবেন না!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "পরিসà§à¦•ার করà§à¦¨!"
+msgid "Node Configuration Warning!"
+msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6386,6 +6963,11 @@ msgstr "à¦à¦•টি নোড নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "ছবি লোডে সমসà§à¦¯à¦¾ হয়েছে:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "ফাইলসিসà§à¦Ÿà§‡à¦®à§‡ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ তৈরি করা সমà§à¦­à¦¬ হয়নি।"
@@ -6394,6 +6976,10 @@ msgid "Error loading script from %s"
msgstr "%s হতে সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ তà§à¦²à¦¤à§‡/লোডে সমসà§à¦¯à¦¾ হয়েছে"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "না/আ"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "পথটি খালি"
@@ -6437,10 +7023,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "না/আ"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6611,6 +7193,10 @@ msgid "Change Light Radius"
msgstr "Light à¦à¦° বà§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦§ পরিবরà§à¦¤à¦¨ করà§à¦¨"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Camera à¦à¦° ভিউ (FOV) পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -6692,6 +7278,137 @@ msgstr "ভà§à¦² dictionary ফরমà§à¦¯à¦¾à¦Ÿ (@path-ঠভà§à¦² সà§à¦
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "ভà§à¦² dictionary ফরমà§à¦¯à¦¾à¦Ÿ (ভà§à¦² subclasses)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অনà§à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "শীরà§à¦· দরà§à¦¶à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "অসমরà§à¦¥/অকà§à¦·à¦®"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "কনà§à¦Ÿà§à¦°à§‹à¦² বোতাম: ঘূরà§à¦£à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "কনà§à¦Ÿà§à¦°à§‹à¦² বোতাম: ঘূরà§à¦£à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "কনà§à¦Ÿà§à¦°à§‹à¦² বোতাম: ঘূরà§à¦£à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "নতà§à¦¨ তৈরি করà§à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª তৈরি করà§à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "TileMap মà§à¦›à§‡ ফেলà§à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª সেটিংস"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "ফাইল"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6729,6 +7446,31 @@ msgid "Stack overflow with stack depth: "
msgstr "সà§à¦Ÿà§à¦¯à¦¾à¦•/তাক-à¦à¦° গভীরতায় সà§à¦Ÿà§à¦¯à¦¾à¦•/তাক অধিপà§à¦°à¦¬à¦¾à¦¹à¦¿à¦¤/পà§à¦²à¦¾à¦¬à¦¿à¦¤ হয়েছে: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "সংকেত/সিগনà§à¦¯à¦¾à¦²-à¦à¦° মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "শà§à¦°à§‡à¦£à§€à¦¬à¦¿à¦¨à§à¦¯à¦¾à¦¸/সারির মানের ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "ইনপà§à¦Ÿ নাম পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "পà§à¦°à¦¾à¦¥à¦®à¦¿à¦• মান পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "চলক/ভেরিয়েবল সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "ফাংশনগà§à¦²à¦¿:"
@@ -6769,26 +7511,6 @@ msgid "Add Signal"
msgstr "সংকেত/সিগনà§à¦¯à¦¾à¦² সংযোজন করà§à¦¨"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "ফাংশন (Function) অপসারণ করà§à¦¨"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "চলক/ভেরিয়েবল অপসারণ করà§à¦¨"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "চলক/ভেরিয়েবল সমà§à¦ªà¦¾à¦¦à¦¨:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "সংকেত (Signal) অপসারণ করà§à¦¨"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "সংকেত/সিগনà§à¦¯à¦¾à¦² সমà§à¦ªà¦¾à¦¦à¦¨:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "অভিবà§à¦¯à¦•à§à¦¤à¦¿ (Expression) পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -6797,6 +7519,16 @@ msgid "Add Node"
msgstr "নোড সংযোজন করà§à¦¨"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ চাবিসমূহ অপসারণ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "গà§à¦°à¦¾à¦« নোড(সমূহ) পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"গেটার (Getter) তৈরি করতে/নামাতে মেটা কী (Meta) চেপে রাখà§à¦¨à¥¤ জেনেরিক সিগনেচার "
@@ -6844,6 +7576,26 @@ msgid "Add Setter Property"
msgstr "সেটার (Setter) à¦à¦° বৈশিষà§à¦Ÿà§à¦¯à§‡ যà§à¦•à§à¦¤ করà§à¦¨"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Shader Graph Node অপসারণ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "শরà§à¦¤ (Condition)"
@@ -6872,6 +7624,56 @@ msgid "Get"
msgstr "মান পান (Get)"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "ইনপà§à¦Ÿ নাম পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "'..' তে পরিচালনা করা সমà§à¦­à¦¬ নয়"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "রিসোরà§à¦¸à§‡à¦° কà§à¦²à§€à¦ªà¦¬à§‹à¦°à§à¦¡ খালি!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "নোড-সমূহ পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "ফাংশন (Function) অপসারণ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "চলক/ভেরিয়েবল সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "চলক/ভেরিয়েবল অপসারণ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "সংকেত/সিগনà§à¦¯à¦¾à¦² সমà§à¦ªà¦¾à¦¦à¦¨:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "সংকেত (Signal) অপসারণ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "চলক/ভেরিয়েবল সমà§à¦ªà¦¾à¦¦à¦¨:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "সংকেত/সিগনà§à¦¯à¦¾à¦² সমà§à¦ªà¦¾à¦¦à¦¨:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "তলের ধরণ (Base Type):"
@@ -6892,10 +7694,6 @@ msgid "Edit Variable:"
msgstr "চলক/ভেরিয়েবল সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨"
@@ -6971,14 +7769,6 @@ msgstr ""
"_step() হতে অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মান ফেরৎ à¦à¦¸à§‡à¦›à§‡, মান অবশà§à¦¯à¦‡ পূরà§à¦£à¦¸à¦‚খà§à¦¯à¦¾ (integer) (কà§à¦°à¦®à¦¿à¦•), "
"অথবা শবà§à¦¦à¦®à¦¾à¦²à¦¾/বাকà§à¦¯ (string) (ভà§à¦²/সমসà§à¦¯à¦¾) হতে হবে।"
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° চাপিত"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° অবà§à¦¯à¦¾à¦¹à¦¿à¦¤/মà§à¦•à§à¦¤"
-
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Run in Browser"
@@ -7003,82 +7793,6 @@ msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
msgid "Could not open template for export:\n"
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"সারà§à¦Ÿà¦¿à¦«à¦¿à¦•েট ফাইলটি পড়া সমà§à¦­à¦¬ হচà§à¦›à§‡ না। ফাইলের পথ à¦à¦¬à¦‚ পাসওয়ারà§à¦¡ দà§à¦Ÿà§‹à¦‡ কি সঠিক দেয়া "
-"হয়েছে?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¿à¦¤ বসà§à¦¤à§ (signature object) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "পà§à¦¯à¦¾à¦•েজের সà§à¦¬à¦¾à¦•à§à¦·à¦° (package signature) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ à¦à¦° জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦£à§€à§Ÿ টেমপà§à¦²à§‡à¦Ÿ পাওয়া যায়নি।\n"
-"à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿ-সমূহ ডাউনলোড করে ইনà§à¦¸à¦Ÿà¦² করà§à¦¨à¥¤"
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ডিবাগ (debug) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।"
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ রিলিস (release) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "à¦à¦•ক (অননà§à¦¯) নামটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "পণà§à¦¯à§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "পà§à¦°à¦•াশকের অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "পটভূমির (background) অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ রঙ।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "সà§à¦Ÿà§‹à¦° লোগোর (Store Logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৫০x৫০ হতে হবে)।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "৪৪x৪৪ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৪৪x৪৪ হতে হবে)।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "à§­à§§xà§­à§§ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (à§­à§§xà§­à§§ হতে হবে)।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "১৫০x১৫০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (১৫০x১৫০ হতে হবে)।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "৩১০x৩১০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x৩১০ হতে হবে)।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "৩১০x১৫০ পà§à¦°à¦¶à¦¸à§à¦¤ লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x১৫০ হতে হবে)।"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "সà§à¦ªà§à¦²à§à¦¯à¦¾à¦¶ পরà§à¦¦à¦¾à¦° (splash screen) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৬২০x৩০০ হতে হবে)।"
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7176,6 +7890,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D à¦à¦•মাতà§à¦° Path2D à¦à¦° অংশ হিসেবে নিরà§à¦§à¦¾à¦°à¦¨ করালেই কাজ করে।"
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "Path à¦à¦° দিক অবশà§à¦¯à¦‡ à¦à¦•টি কারà§à¦¯à¦•র Node2D à¦à¦° দিকে নিরà§à¦¦à§‡à¦¶ করাতে হবে।"
@@ -7204,23 +7925,33 @@ msgstr ""
"VisibilityEnable2D সরà§à¦¬à§‹à¦¤à§à¦¤à¦® কারà§à¦¯à¦•র হয় যখন সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ দৃশà§à¦¯ মূল দৃশà§à¦¯ হিসেবে সরাসরি "
"বà§à¦¯à¦¬à¦¹à§ƒà¦¤ হয়।"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape শà§à¦§à§à¦®à¦¾à¦¤à§à¦° CollisionObject হতে সৃষà§à¦Ÿ নোডের সংঘরà§à¦·à§‡à¦° আকৃতি পà§à¦°à¦¦à¦¾à¦¨ করে। "
-"Area, StaticBody, RigidBody, KinematicBody, ইতà§à¦¯à¦¾à¦¦à¦¿à¦•ে আকার দিতে অনà§à¦—à§à¦°à¦¹ করে তা "
-"শà§à¦§à§à¦®à¦¾à¦¤à§à¦° তাদের অংশ হিসেবে বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"সফলà§à¦­à¦¾à¦¬à§‡ কাজ করতে CollisionShape à¦à¦° à¦à¦•টি আকৃতি পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤ অনà§à¦—à§à¦°à¦¹ করে তার জনà§à¦¯ à¦à¦•টি "
-"আকৃতি তৈরি করà§à¦¨!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7236,6 +7967,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "সংঘরà§à¦·à§‡ ফাà¦à¦•া/শà§à¦¨à§à¦¯ CollisionPolygon-à¦à¦° কোনো পà§à¦°à¦­à¦¾à¦¬ নেই।"
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape শà§à¦§à§à¦®à¦¾à¦¤à§à¦° CollisionObject হতে সৃষà§à¦Ÿ নোডের সংঘরà§à¦·à§‡à¦° আকৃতি পà§à¦°à¦¦à¦¾à¦¨ করে। "
+"Area, StaticBody, RigidBody, KinematicBody, ইতà§à¦¯à¦¾à¦¦à¦¿à¦•ে আকার দিতে অনà§à¦—à§à¦°à¦¹ করে তা "
+"শà§à¦§à§à¦®à¦¾à¦¤à§à¦° তাদের অংশ হিসেবে বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤"
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"সফলà§à¦­à¦¾à¦¬à§‡ কাজ করতে CollisionShape à¦à¦° à¦à¦•টি আকৃতি পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤ অনà§à¦—à§à¦°à¦¹ করে তার জনà§à¦¯ à¦à¦•টি "
+"আকৃতি তৈরি করà§à¦¨!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7255,6 +8004,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr "Path à¦à¦° দিক অবশà§à¦¯à¦‡ à¦à¦•টি কারà§à¦¯à¦•র Spatial নোডের à¦à¦° দিকে নিরà§à¦¦à§‡à¦¶ করাতে হবে।"
@@ -7276,8 +8032,8 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "চালানোর মোড:"
+msgid "Raw Mode"
+msgstr "পà§à¦¯à¦¾à¦¨ মোড"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
@@ -7291,22 +8047,6 @@ msgstr "সতরà§à¦•তা!"
msgid "Please Confirm..."
msgstr "অনà§à¦—à§à¦°à¦¹ করে নিশà§à¦šà¦¿à¦¤ করà§à¦¨..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "à¦à¦•টি ফাইল খà§à¦²à§à¦¨"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "à¦à¦• বা à¦à¦•াধিক ফাইল খà§à¦²à§à¦¨"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "পথ/ডিরেকà§à¦Ÿà¦°à¦¿ খà§à¦²à§à¦¨"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "ফাইল বা পথ/ডিরেকà§à¦Ÿà¦°à¦¿ খà§à¦²à§à¦¨"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7328,7 +8068,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7346,6 +8086,99 @@ msgstr ""
"আকার ধারণ করতে পারে। অনà§à¦¯à¦¥à¦¾à§Ÿ, à¦à¦Ÿà¦¿à¦•ে à¦à¦•টি RenderTarget করà§à¦¨ à¦à¦¬à¦‚ à¦à¦° অভà§à¦¯à¦¨à§à¦¤à¦°à§€à¦£ "
"দৃশà§à¦¯à¦¾à¦¬à¦²à¦¿à¦•ে (texture) দৃশà§à¦¯à¦®à¦¾à¦¨ করতে কোনো নোডে হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨à¥¤"
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "দৃশà§à¦¯ বনà§à¦§ করবেন? (অসংরকà§à¦·à¦¿à¦¤ পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হারিয়ে যাবে)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦° (Project Manager) খà§à¦²à¦¬à§‡à¦¨? \n"
+#~ "(অ-সংরকà§à¦·à¦¿à¦¤ পরিবরà§à¦¤à¦¨-সমূহ হারিয়ে যাবে)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "বনà§à¦§ করে পূরà§à¦¬à§‡à¦° দৃশà§à¦¯à§‡ যান"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
+
+#~ msgid "Del"
+#~ msgstr "ডিলিট/অপসারণ"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "পà§à¦²à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨.."
+
+#~ msgid "just pressed"
+#~ msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° চাপিত"
+
+#~ msgid "just released"
+#~ msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° অবà§à¦¯à¦¾à¦¹à¦¿à¦¤/মà§à¦•à§à¦¤"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "সারà§à¦Ÿà¦¿à¦«à¦¿à¦•েট ফাইলটি পড়া সমà§à¦­à¦¬ হচà§à¦›à§‡ না। ফাইলের পথ à¦à¦¬à¦‚ পাসওয়ারà§à¦¡ দà§à¦Ÿà§‹à¦‡ কি সঠিক "
+#~ "দেয়া হয়েছে?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¿à¦¤ বসà§à¦¤à§ (signature object) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।"
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "পà§à¦¯à¦¾à¦•েজের সà§à¦¬à¦¾à¦•à§à¦·à¦° (package signature) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।"
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ à¦à¦° জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦£à§€à§Ÿ টেমপà§à¦²à§‡à¦Ÿ পাওয়া যায়নি।\n"
+#~ "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿ-সমূহ ডাউনলোড করে ইনà§à¦¸à¦Ÿà¦² করà§à¦¨à¥¤"
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ডিবাগ (debug) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।"
+
+#~ msgid "Custom release package not found."
+#~ msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ রিলিস (release) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।"
+
+#~ msgid "Invalid unique name."
+#~ msgstr "à¦à¦•ক (অননà§à¦¯) নামটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "পণà§à¦¯à§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।"
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "পà§à¦°à¦•াশকের অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।"
+
+#~ msgid "Invalid background color."
+#~ msgstr "পটভূমির (background) অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ রঙ।"
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "সà§à¦Ÿà§‹à¦° লোগোর (Store Logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৫০x৫০ হতে হবে)।"
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "৪৪x৪৪ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৪৪x৪৪ হতে হবে)।"
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "à§­à§§xà§­à§§ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (à§­à§§xà§­à§§ হতে হবে)।"
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "১৫০x১৫০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (১৫০x১৫০ হতে হবে)।"
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "৩১০x৩১০ বরà§à¦— লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x৩১০ হতে হবে)।"
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "৩১০x১৫০ পà§à¦°à¦¶à¦¸à§à¦¤ লোগোর (logo) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৩১০x১৫০ হতে হবে)।"
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "সà§à¦ªà§à¦²à§à¦¯à¦¾à¦¶ পরà§à¦¦à¦¾à¦° (splash screen) ছবির অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ মাতà§à¦°à¦¾ (৬২০x৩০০ হতে হবে)।"
+
+#, fuzzy
+#~ msgid "RAW Mode"
+#~ msgstr "চালানোর মোড:"
+
#~ msgid "Node From Scene"
#~ msgstr "দৃশà§à¦¯ হতে নোড"
@@ -7429,9 +8262,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "%d টি সংঘটন পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¿à¦¤ হয়েছে।"
-#~ msgid "Please save the scene first."
-#~ msgstr "পà§à¦°à¦¥à¦®à§‡ অনà§à¦—à§à¦°à¦¹ করে দৃশà§à¦¯à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
-
#~ msgid "Save Translatable Strings"
#~ msgstr "অনà§à¦¬à¦¾à¦¦-সমà§à¦­à¦¬ শবà§à¦¦à¦®à¦¾à¦²à¦¾/বাকà§à¦¯-সমূহ সংরকà§à¦·à¦£ করà§à¦¨"
@@ -7644,9 +8474,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ à¦à¦¨à¦•à§à¦°à¦¿à¦ªà¦¶à¦¨ কী/চাবি (২৫৬-বিটস হেকà§à¦¸):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° PCK à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 7273e877a9..4b126e3b16 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -147,7 +147,8 @@ msgstr "Vés al Pas Següent"
msgid "Goto Prev Step"
msgstr "Vés al Pas Previ"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineal"
@@ -382,7 +383,8 @@ msgstr "Fitxer:"
msgid "Description:"
msgstr "Descripció:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -393,9 +395,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Tanca"
@@ -471,7 +473,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -537,17 +539,16 @@ msgid "All"
msgstr "Tot"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Cerca:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Cerca"
@@ -563,7 +564,7 @@ msgstr "Cerca"
msgid "Import"
msgstr "Importa"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -575,7 +576,7 @@ msgstr "Ordena:"
msgid "Reverse"
msgstr "Inverteix"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Categoria:"
@@ -728,14 +729,14 @@ msgstr "Connecta al Node:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Afegeix"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Treu"
@@ -845,7 +846,7 @@ msgid "Resource"
msgstr "Recurs"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Camí"
@@ -927,12 +928,190 @@ msgstr "Navegador de Recursos Orfes"
msgid "Delete selected files?"
msgstr "Esborra fitxers seleccionats?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Esborra"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Gràcies de la part de la Comunitat del Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Gràcies!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Configuració del Projecte"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Constants:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Constants:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Sense Compressió"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Reanomena AutoCàrrega"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Elimina Seleccionats"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opcions de Depuració (Debug)"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Elimina Seleccionats"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Elimina Disposició (Layout)"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplica la Selecció"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Mou Afegir Clau"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -946,23 +1125,51 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Extensió de fitxer no vàlida.\n"
+"Utilitzeu .fnt."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Carrega un recurs des del disc i edita'l."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Predeterminat"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Nom no vàlid."
@@ -1066,6 +1273,11 @@ msgid "Updating scene.."
msgstr "Actualitzant escena.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Desa l'escena abans."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Tria un Directori"
@@ -1143,6 +1355,22 @@ msgstr "Tots els Fitxers (*)"
msgid "Open"
msgstr "Obre"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Obre un Fitxer"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Obre Fitxer(s)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Obre un Directori"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Obre un Fitxer o Directori"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1269,6 +1497,15 @@ msgid "Signals:"
msgstr "Senyals:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Funcions:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constants:"
@@ -1286,7 +1523,8 @@ msgid "Search Text"
msgstr "Cerca Text"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Sortida:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1336,6 +1574,11 @@ msgid "Creating Thumbnail"
msgstr "Creant Miniatura"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "No es pot desfer aquesta acció. Vol revertir igualament?"
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1468,12 +1711,13 @@ msgid "Quick Open Script.."
msgstr "Obertura Ràpida d'Scripts..."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Sí"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Desa un Fitxer"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Tanca l'Escena? (Es perdran els canvis sense desar)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1484,10 +1728,18 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Sí"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
"Aquesta Escena no s'ha desat mai encara. Voleu desar-la abans d'executar-la?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Exporta Biblioteca de Models"
@@ -1497,12 +1749,8 @@ msgid "Export Tile Set"
msgstr "Exporta el joc de Mosaics (Tiles)"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Surt"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Voleu Sortir de l'editor?"
+msgid "This operation can't be done without a selected node."
+msgstr ""
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1525,18 +1773,51 @@ msgid "Quick Run Scene.."
msgstr "Execució Ràpida de l'Escena..."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Surt"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Voleu Sortir de l'editor?"
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Desa un Fitxer"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Vol Obrir el Gestor de Projectes?\n"
-"(Es perdran els canvis sense desar)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Tria una Escena Principal"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1571,6 +1852,11 @@ msgstr "Desar Disposició (Layout)"
msgid "Delete Layout"
msgstr "Elimina Disposició (Layout)"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Predeterminat"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Canvia la pestanya d'escena"
@@ -1587,6 +1873,11 @@ msgstr "%d fitxer(s) o directori(s) més"
msgid "Distraction Free Mode"
msgstr "Mode Lliure de Distraccions"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Mode Lliure de Distraccions"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Escena"
@@ -1636,10 +1927,6 @@ msgstr "Desa Totes les Escenes"
msgid "Close Scene"
msgstr "Tanca l'Escena"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Tanca i Vés a l'Escena anterior"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Obre Recent"
@@ -1943,6 +2230,10 @@ msgstr ""
msgid "Output"
msgstr "Sortida"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "ReImporta"
@@ -1952,26 +2243,10 @@ msgid "Update"
msgstr "Actualitza"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Gràcies de la part de la Comunitat del Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Gràcies!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importa Plantilles des d'un Fitxer ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Exporta Projecte"
@@ -1992,9 +2267,18 @@ msgid "Open & Run a Script"
msgstr "Obre i Executa un Script"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Nova Escena heretada..."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Errors de Càrrega"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2100,6 +2384,16 @@ msgstr "Re-Importació"
msgid "Re-Import Changed Resources"
msgstr "ReImporta Recursos Modificats"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escriu la lògica en el mètode _run()."
@@ -2245,12 +2539,30 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Desa i ReImporta"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Lletra:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
"Els fitxers d'origen i destinació són els mateixos. No s'ha produït cap "
"acció."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "El camí d'origen i destinació es idèntic. No s'ha produït cap acció."
@@ -2259,6 +2571,20 @@ msgid "Can't move directories to within themselves."
msgstr "No es poden moure directoris en si mateixos."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Error en desar TileSet!"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Error en carregar:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "No es pot operar en '..'"
@@ -2335,6 +2661,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "Instancia les escenes seleccionades com a filles del node seleccionat."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Mou"
@@ -2346,10 +2678,31 @@ msgstr "Afegeix al Grup"
msgid "Remove from Group"
msgstr "Treu del Grup"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superfície %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Important Escena..."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Importa Escena 3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2388,6 +2741,14 @@ msgid "Saving.."
msgstr "Desant..."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Fitxer:"
@@ -2584,6 +2945,10 @@ msgstr "Malla/es :"
msgid "Mesh"
msgstr "Malla"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Superfície %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "No s'ha trobat cap mostra d'Àudio per importar!"
@@ -3169,6 +3534,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Filtres"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3480,6 +3850,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Edita"
@@ -3512,10 +3883,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3625,11 +3992,6 @@ msgstr ""
msgid "Change default type"
msgstr "Canvia Tipus de la Matriu"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "D'acord"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3667,6 +4029,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3706,6 +4076,19 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Errors de Càrrega"
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Afegeix Senyal"
@@ -3717,11 +4100,29 @@ msgstr "Treu Senyal"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Lineal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "Errors de Càrrega"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Treu Senyal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3746,6 +4147,12 @@ 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 ""
@@ -4036,6 +4443,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4355,6 +4767,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4379,6 +4797,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4432,6 +4854,11 @@ msgid "Close All"
msgstr "Tanca"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Commuta Favorit"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4464,6 +4891,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Editor de Dependències"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4528,6 +4960,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4575,6 +5011,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Esborra"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4881,37 +5322,6 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Endavant"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Enrere"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Roda Avall."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -4975,10 +5385,63 @@ msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Activa"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Endavant"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Enrere"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Roda Avall."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Previsualització:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Mètodes públics:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5097,6 +5560,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Configuració"
@@ -5225,6 +5689,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5282,6 +5750,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Treu la Selecció"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Treu"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5349,7 +5827,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5371,11 +5849,25 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Escala la Selecció"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineal"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5411,10 +5903,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5477,7 +5965,7 @@ msgstr "Esborra fitxers seleccionats?"
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5528,6 +6016,24 @@ msgid "Make Patch"
msgstr "Camí de Destinació:"
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Llista de mètodes:"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "Exporta"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5567,10 +6073,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5615,6 +6117,23 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"No s'ha definit cap escena principal. Seleccioneu-ne una.\n"
+"És possible triar-ne una altra més endavant a \"Configuració del Projecte\" "
+"en la categoria \"aplicació\"."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5629,10 +6148,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5661,255 +6176,288 @@ msgstr "Treu la Selecció"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Connecta.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta +"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Maj +"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt +"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Canvia"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Eix"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Dispositiu"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Botó"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Botó Esquerre."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Botó Dret."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Botó del Mig."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Roda Amunt."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Roda Avall."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Afegeix Propietat d'Accés (Getter)"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Configuració"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Esborra"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "No s'ha pogut desar la configuració."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Configuració desada correctament."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Configuració del Projecte (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5952,6 +6500,11 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "Mètodes públics:"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "New Script"
msgstr "Executa Script"
@@ -5966,6 +6519,11 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Selecciona Node(s) per Importar"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "Camí al Node:"
@@ -6063,6 +6621,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr "Configuració d'Execució d'Escenes"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "D'acord"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6106,10 +6669,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6122,6 +6681,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6165,6 +6736,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6218,6 +6797,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtres"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6225,6 +6809,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6256,11 +6848,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Opcions de Depuració (Debug)"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6298,31 +6885,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6331,6 +6894,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Error carregant lletra."
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "No s'ha pogut crear la carpeta."
@@ -6340,6 +6908,10 @@ msgid "Error loading script from %s"
msgstr "Error carregant lletra."
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6382,10 +6954,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6557,6 +7125,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6642,6 +7214,130 @@ msgstr "Format del diccionari d'instàncies invàlid (script invàlid a @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Diccionari d'instàncies invàlid (subclasses invàlides)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Elimina Seleccionats"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplica la Selecció"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Desactivat"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Crea Nou"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Selecció Només"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Selecció Només"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Configuració de Desplaçament"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fitxer:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6681,6 +7377,30 @@ msgid "Stack overflow with stack depth: "
msgstr "Pila desbordada (stack overflow) amb profunditat de Pila: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Edita els Arguments del Senyal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Canvia Tipus de la Matriu"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Canvia Valor de la Matriu"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Edita Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funcions:"
@@ -6721,26 +7441,6 @@ msgid "Add Signal"
msgstr "Afegeix Senyal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Treu Funció"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Treu Variable"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Editant Variable:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Treu Senyal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Editant Senyal:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "Canvia Transició"
@@ -6750,6 +7450,15 @@ msgid "Add Node"
msgstr "Afegeix Node"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Treu claus invàlides"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Retén Meta per dipositar un mètode Accessor (Getter). Retén Maj per "
@@ -6795,6 +7504,26 @@ msgstr "Afegeix Propietat d'Actualització (Setter)"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Base Type"
+msgstr "Canvia Tipus de la Matriu"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Copia Nodes"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Treu Variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Connecta al Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Condition"
msgstr "Transició"
@@ -6824,6 +7553,56 @@ msgid "Get"
msgstr "Obtenir"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Canvia Valor de la Matriu"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "No es pot operar en '..'"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "El camí per desar és buit!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Camí al Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Treu Funció"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Edita Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Treu Variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Editant Senyal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Treu Senyal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Editant Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Editant Senyal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Tipus Base:"
@@ -6844,10 +7623,6 @@ msgid "Edit Variable:"
msgstr "Edita Variable:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Canvia"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Elimina Seleccionats"
@@ -6926,14 +7701,6 @@ msgstr ""
"Valor de retorn de _step() invàlid. Ha de ser un nombre enter (seq out), o "
"una cadena de text (error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "premut"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "alliberat"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6957,87 +7724,6 @@ msgstr "No s'ha pogut crear la carpeta."
msgid "Could not open template for export:\n"
msgstr "No s'ha pogut crear la carpeta."
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"No s'ha pogut llegir el certificat. Comproveu que tant el camí com la "
-"contrasenya són correctes"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "No s'ha pogut l'objecte signatura."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "No s'ha pogut crear el paquet signatura."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"No s'ha trobat cap plantilla.\n"
-"Descarregueu i instal·leu alguna plantilla d'exportació."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "No s'ha trobat cap paquet de depuració personalitzat."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "No s'ha trobat cap paquet de llançament personalitzat."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "Nom no vàlid."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "La mida de la lletra no és vàlida."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "GUID d'editor no vàlid."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid background color."
-msgstr "Lletra personalitzada no vàlida."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Imatge Store Logo no vàlida. La mida hauria de ser 50x50 ."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "Imatge Logo quadrat 44x44 no vàlida. La mida hauria de ser 44x44."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "Imatge Logo quadrat 71x71 no vàlida. La mida hauria de ser 71x71 ."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "Imatge logo quadrat 150x150 no vàlida. La mida hauria de ser 150x150 ."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "Imatge logo quadrat 310x310 no vàlida. La mida hauria de ser 310x310."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "Imatge logo quadrat 310x150 no vàlida. La mida hauria de ser 310x150."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-"Imatge de la pantalla de presentació no vàlida. La mida hauria de ser "
-"620x300."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7141,6 +7827,13 @@ msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
"PathFollow2D només funciona si s'estableix com a fill d'un node Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "Cal que la propietat Camí (Path) assenyali un Node2D vàlid."
@@ -7171,23 +7864,33 @@ msgstr ""
"VisibilityEnable2D funciona millor quan l'arrel de l'escena editada "
"s'utilitza com a pare."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape només proporciona formes de col·lisió a nodes derivats de "
-"CollisionObject. Utilitzeu-lo només per donar una forma a nodes com Area, "
-"StaticBody, RigidBody, KinematicBody, etc."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Cal proveir una forma perquè CollisionShape funcioni. Creeu-li un recurs de "
-"forma!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7203,6 +7906,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Un CollisionPolygon buit no afecta les col·lisions."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape només proporciona formes de col·lisió a nodes derivats de "
+"CollisionObject. Utilitzeu-lo només per donar una forma a nodes com Area, "
+"StaticBody, RigidBody, KinematicBody, etc."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Cal proveir una forma perquè CollisionShape funcioni. Creeu-li un recurs de "
+"forma!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7222,6 +7943,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7244,7 +7972,7 @@ msgstr ""
"AnimatedSprite3D dibuixi els quadres."
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7259,22 +7987,6 @@ msgstr "Ep!"
msgid "Please Confirm..."
msgstr "Confirmeu..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Obre un Fitxer"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Obre Fitxer(s)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Obre un Directori"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Obre un Fitxer o Directori"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl +"
@@ -7296,7 +8008,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7314,6 +8026,93 @@ msgstr ""
"forma per tal d'obtenir-ne la mida. Altrament, establiu-la com a Destinació "
"de Renderització i assigneu-ne la textura interna a algun node."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Tanca l'Escena? (Es perdran els canvis sense desar)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Vol Obrir el Gestor de Projectes?\n"
+#~ "(Es perdran els canvis sense desar)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Tanca i Vés a l'Escena anterior"
+
+#~ msgid "just pressed"
+#~ msgstr "premut"
+
+#~ msgid "just released"
+#~ msgstr "alliberat"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "No s'ha pogut llegir el certificat. Comproveu que tant el camí com la "
+#~ "contrasenya són correctes"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "No s'ha pogut l'objecte signatura."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "No s'ha pogut crear el paquet signatura."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "No s'ha trobat cap plantilla.\n"
+#~ "Descarregueu i instal·leu alguna plantilla d'exportació."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "No s'ha trobat cap paquet de depuració personalitzat."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "No s'ha trobat cap paquet de llançament personalitzat."
+
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "Nom no vàlid."
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "La mida de la lletra no és vàlida."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "GUID d'editor no vàlid."
+
+#, fuzzy
+#~ msgid "Invalid background color."
+#~ msgstr "Lletra personalitzada no vàlida."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "Imatge Store Logo no vàlida. La mida hauria de ser 50x50 ."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "Imatge Logo quadrat 44x44 no vàlida. La mida hauria de ser 44x44."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "Imatge Logo quadrat 71x71 no vàlida. La mida hauria de ser 71x71 ."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "Imatge logo quadrat 150x150 no vàlida. La mida hauria de ser 150x150 ."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "Imatge logo quadrat 310x310 no vàlida. La mida hauria de ser 310x310."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr ""
+#~ "Imatge logo quadrat 310x150 no vàlida. La mida hauria de ser 310x150."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "Imatge de la pantalla de presentació no vàlida. La mida hauria de ser "
+#~ "620x300."
+
#~ msgid "Node From Scene"
#~ msgstr "Node de l'Escena"
@@ -7348,9 +8147,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Substituïdes %d ocurrència/es."
-#~ msgid "Please save the scene first."
-#~ msgstr "Desa l'escena abans."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Desa els texts Traduïbles"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index d2420e32ed..c7871ef60d 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -148,7 +148,8 @@ msgstr "Jít k dalšímu kroku"
msgid "Goto Prev Step"
msgstr "Jít k předchozímu kroku"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineární"
@@ -382,7 +383,8 @@ msgstr "Soubor:"
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -393,9 +395,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Zavřít"
@@ -470,7 +472,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -534,17 +536,16 @@ msgid "All"
msgstr "Všechny"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Hledat:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Hledat"
@@ -560,7 +561,7 @@ msgstr "Hledat"
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -572,7 +573,7 @@ msgstr "Řadit:"
msgid "Reverse"
msgstr "Naopak"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Kategorie:"
@@ -725,14 +726,14 @@ msgstr "Připojit k uzlu:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Přidat"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Odebrat"
@@ -841,7 +842,7 @@ msgid "Resource"
msgstr "Zdroj"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Cesta"
@@ -923,12 +924,186 @@ msgstr "Průzkumník sirotků zdrojů"
msgid "Delete selected files?"
msgstr "Odstranit vybrané soubory?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Odstranit"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Nastavení projektu"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Spojité"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Spojité"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Přejmenovat AutoLoad"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Smazat vybraný"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Smazat vybraný"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Optimalizovat animaci"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplikovat výběr"
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -942,21 +1117,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1061,6 +1259,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1138,6 +1340,22 @@ msgstr "Všechny soubory (*)"
msgid "Open"
msgstr "Otevřít"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Otevřít soubor"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Otevřít soubor(y)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Otevřít složku"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Otevřít soubor nebo složku"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1263,6 +1481,15 @@ msgid "Signals:"
msgstr "Signály:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Funkce:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1280,7 +1507,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1330,6 +1557,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1448,11 +1679,12 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
+#, fuzzy
+msgid "Save & Close"
+msgstr "Uložit soubor"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1464,23 +1696,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1504,9 +1740,28 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Uložit soubor"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1514,6 +1769,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1546,6 +1817,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1562,6 +1838,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1610,10 +1890,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1896,6 +2172,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1905,26 +2185,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1945,9 +2209,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2052,6 +2324,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2190,10 +2472,27 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Zdroj"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2202,6 +2501,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Chyba pÅ™i naÄítání:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Chyba pÅ™i naÄítání:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2278,6 +2591,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2289,9 +2608,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2331,6 +2669,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Soubor:"
@@ -2518,6 +2864,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3100,6 +3450,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Soubor:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3412,6 +3767,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Upravit"
@@ -3444,10 +3800,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3557,11 +3909,6 @@ msgstr ""
msgid "Change default type"
msgstr "Změnit typ hodnot pole"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3599,6 +3946,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3638,6 +3993,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Přidat signál"
@@ -3648,11 +4015,29 @@ msgid "Remove point"
msgstr "Odstranit signál"
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "Lineární"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Odstranit signál"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3677,6 +4062,12 @@ 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 ""
@@ -3967,6 +4358,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4284,6 +4680,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4308,6 +4710,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4361,6 +4767,10 @@ msgid "Close All"
msgstr "Zavřít"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4393,6 +4803,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Editor závislostí"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4457,6 +4872,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4503,6 +4922,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Odstranit"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4808,93 +5232,102 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Změnit"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "KoleÄko dolů."
+msgid "Vertices"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Změnit"
+msgid "Display Overdraw"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Povolit"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+#, fuzzy
+msgid "Freelook Down"
+msgstr "KoleÄko dolů."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4902,6 +5335,18 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Vybrat vše"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5019,6 +5464,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5147,6 +5593,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5204,6 +5654,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Odstranit výběr"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Odebrat"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5271,7 +5731,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5293,11 +5753,25 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Změnit měřítko výběru"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineární"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5333,10 +5807,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5399,7 +5869,7 @@ msgstr "Odstranit vybrané soubory?"
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5447,6 +5917,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Seznam metod:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5483,10 +5970,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5531,6 +6014,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5545,10 +6041,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5577,255 +6069,288 @@ msgstr "Odstranit výběr"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Připojit.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Změnit"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Osa"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Zařízení"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "TlaÄítko"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Levé tlaÄítko."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Pravé tlaÄítko."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "ProstÅ™ední tlaÄítko."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "KoleÄko nahoru."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "KoleÄko dolů."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Přidat vlastnost getter"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Testované"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Odstranit"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Nastavení projektu"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5866,6 +6391,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Vybrat vše"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5878,6 +6408,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "Vložit uzly"
@@ -5976,6 +6510,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6019,10 +6558,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6035,6 +6570,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6078,6 +6625,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6131,6 +6686,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtr:"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6138,6 +6698,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6169,10 +6737,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6210,31 +6774,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6243,6 +6783,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Chyba nahrávání fontu."
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Nelze vytvořit složku."
@@ -6252,6 +6797,10 @@ msgid "Error loading script from %s"
msgstr "Chyba nahrávání fontu."
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6294,10 +6843,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6465,6 +7010,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6547,6 +7096,130 @@ msgstr "Neplatná instance slovníkového formátu (nemohu nahrát skript na @pa
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Neplatná instance slovníku (neplatné podtřídy)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Smazat vybraný"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplikovat výběr"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Vypnuto"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Vytvořit nový"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Pouze výběr"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Pouze výběr"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Nastavení projektu"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Soubor:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
#, fuzzy
msgid ""
@@ -6585,6 +7258,30 @@ msgid "Stack overflow with stack depth: "
msgstr "PÅ™eteÄení zásobníku s hloubkou: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Upravit argumenty signálu:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Změnit typ hodnot pole"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Změnit hodnotu pole"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Upravit proměnnou:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funkce:"
@@ -6625,26 +7322,6 @@ msgid "Add Signal"
msgstr "Přidat signál"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Odstranit funkci"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Odstranit proměnnou"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Úprava proměnné:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Odstranit signál"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Úprava signálu:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "Animace: změna přechodu"
@@ -6655,6 +7332,15 @@ msgstr "Přidat uzel"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Odstranit neplatné klíÄe"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Podržte Meta k uvolnění getteru. Podržte Shift k uvolnění generického "
@@ -6702,6 +7388,26 @@ msgstr "Přidat vlastnost setter"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Base Type"
+msgstr "Změnit typ hodnot pole"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Zkopírovat uzly"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Odstranit proměnnou"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Připojit k uzlu:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Condition"
msgstr "Přechod"
@@ -6730,6 +7436,54 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Změnit hodnotu pole"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Vložit uzly"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Odstranit funkci"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Upravit proměnnou:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Odstranit proměnnou"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Úprava signálu:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Odstranit signál"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Úprava proměnné:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Úprava signálu:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Základní typ:"
@@ -6750,10 +7504,6 @@ msgid "Edit Variable:"
msgstr "Upravit proměnnou:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Změnit"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Smazat vybraný"
@@ -6830,14 +7580,6 @@ msgstr ""
"Neplatná návratová hodnota z funkce _step(). Musí být celé Äíslo (výstupní "
"posloupnost), nebo řetězec (chyba)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "právě stisknuto"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "právě uvolněno"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6861,83 +7603,6 @@ msgstr "Nelze vytvořit složku."
msgid "Could not open template for export:\n"
msgstr "Nelze vytvořit složku."
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"NepodaÅ™ilo se pÅ™eÄíst soubor certifikátu. Jsou cesta a heslo obÄ› korektní?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Chyba při vytváření podpisového objektu."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Chyba pÅ™i vytváření podpisu balíÄku."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Nebyly nalezeny žádné exportní šablony.\n"
-"Stáhněte a nainstalujte exportní šablony."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Vlastní ladící balíÄek nebyl nalezen."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Custom release package not found."
-msgstr "Vlastní balíÄek k uveÅ™ejnÄ›ní nebyl nalezen."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Neplatný unikátní název."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "Neplatné GUID produktu."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "Neplatné GUID vydavatele."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Neplatná barva pozadí."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Neplatné rozměry Store Logo obrázku (měly by být 50x50)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "Neplatné rozměry Square 44x44 Logo obrázku (měly by být 44x44)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "Neplatné rozměry Square 71x71 Logo obrázku (měly by být 71x71)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "Neplatné rozměry Square 150x150 Logo obrázku (měly by být 150x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "Neplatné rozměry Square 310x310 Logo obrázku (měly by být 310x310)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "Neplatné rozměry Square 310x150 Logo obrázku (měly by být 310x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "Neplatné rozměry obrázku uvítací obrazovky (měly by být 620x300)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7036,6 +7701,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D funguje pouze když je dítětem uzlu Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7063,23 +7735,33 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape pouze poskytuje tvar kolize uzlům odvozeným z "
-"CollisionObject. Použijte ho jen jako dítě uzlů Area, StaticBody, RigidBody "
-"a KinematicBody, abyste jim dali tvar."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Aby CollisionShape mohl fungovat, musí mu být poskytnut tvar. Vytvořte mu "
-"prosím zdroj tvar!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7095,6 +7777,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Prázdný CollisionPolygon nemá na kolize žádný efekt."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape pouze poskytuje tvar kolize uzlům odvozeným z "
+"CollisionObject. Použijte ho jen jako dítě uzlů Area, StaticBody, RigidBody "
+"a KinematicBody, abyste jim dali tvar."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Aby CollisionShape mohl fungovat, musí mu být poskytnut tvar. Vytvořte mu "
+"prosím zdroj tvar!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7114,6 +7814,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7137,7 +7844,7 @@ msgstr ""
"aby mohl AnimatedSprite3D zobrazit rámeÄky."
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7152,22 +7859,6 @@ msgstr "Pozor!"
msgid "Please Confirm..."
msgstr "PotvrÄte prosím..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Otevřít soubor"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Otevřít soubor(y)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Otevřít složku"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Otevřít soubor nebo složku"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7189,7 +7880,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7207,6 +7898,73 @@ msgstr ""
"mohl získat velikost. Jinak ho nastavte jako render target a pÅ™iÅ™aÄte jeho "
"vnitřní texturu nějakému uzlu k zobrazení."
+#~ msgid "just pressed"
+#~ msgstr "právě stisknuto"
+
+#~ msgid "just released"
+#~ msgstr "právě uvolněno"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "NepodaÅ™ilo se pÅ™eÄíst soubor certifikátu. Jsou cesta a heslo obÄ› korektní?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Chyba při vytváření podpisového objektu."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Chyba pÅ™i vytváření podpisu balíÄku."
+
+#, fuzzy
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Nebyly nalezeny žádné exportní šablony.\n"
+#~ "Stáhněte a nainstalujte exportní šablony."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Vlastní ladící balíÄek nebyl nalezen."
+
+#, fuzzy
+#~ msgid "Custom release package not found."
+#~ msgstr "Vlastní balíÄek k uveÅ™ejnÄ›ní nebyl nalezen."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Neplatný unikátní název."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "Neplatné GUID produktu."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Neplatné GUID vydavatele."
+
+#~ msgid "Invalid background color."
+#~ msgstr "Neplatná barva pozadí."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "Neplatné rozměry Store Logo obrázku (měly by být 50x50)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "Neplatné rozměry Square 44x44 Logo obrázku (měly by být 44x44)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "Neplatné rozměry Square 71x71 Logo obrázku (měly by být 71x71)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "Neplatné rozměry Square 150x150 Logo obrázku (měly by být 150x150)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "Neplatné rozměry Square 310x310 Logo obrázku (měly by být 310x310)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "Neplatné rozměry Square 310x150 Logo obrázku (měly by být 310x150)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr "Neplatné rozměry obrázku uvítací obrazovky (měly by být 620x300)."
+
#~ msgid "Path property must point to a valid Particles2D node to work."
#~ msgstr ""
#~ "Aby ParticleAttractor2D fungoval, musí vlastnost path ukazovat na platný "
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 51a0b05e3b..d33fef1743 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -146,7 +146,8 @@ msgstr "Goto næste skridt"
msgid "Goto Prev Step"
msgstr "Goto forrige trin"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineær"
@@ -380,7 +381,8 @@ msgstr "Fil:"
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -391,9 +393,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Luk"
@@ -468,7 +470,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -532,17 +534,16 @@ msgid "All"
msgstr "Alle"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Søgning:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Søg"
@@ -558,7 +559,7 @@ msgstr "Søg"
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -570,7 +571,7 @@ msgstr "Sorter:"
msgid "Reverse"
msgstr "Omvendt"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Kategori:"
@@ -723,14 +724,14 @@ msgstr "Opret forbindelse til Node:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Tilføj"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Fjern"
@@ -839,7 +840,7 @@ msgid "Resource"
msgstr "Ressource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Sti"
@@ -919,12 +920,186 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Kontinuerlig"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Kontinuerlig"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Omdøb Funktion"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Slet Valgte"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Slet Valgte"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Optimer Animation"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Dubler valg"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Flyt Add Key"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -938,21 +1113,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1055,6 +1253,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1132,6 +1334,22 @@ msgstr "Alle filer (*)"
msgid "Open"
msgstr "Ã…ben"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Ã…ben en Fil"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Ã…ben fil(er)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Ã…bn en mappe"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Ã…bne en fil eller mappe"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1257,6 +1475,15 @@ msgid "Signals:"
msgstr "Signaler:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Funktioner:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1274,7 +1501,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1324,6 +1551,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1442,11 +1673,12 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
+#, fuzzy
+msgid "Save & Close"
+msgstr "Gem en fil"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1458,23 +1690,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1498,9 +1734,28 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Gem en fil"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1508,6 +1763,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1540,6 +1811,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1556,6 +1832,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1604,10 +1884,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1888,6 +2164,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1897,26 +2177,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1937,9 +2201,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2044,6 +2316,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2181,10 +2463,27 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Ressource"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2193,6 +2492,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Error loading skrifttype."
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Error loading skrifttype."
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2269,6 +2582,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2280,9 +2599,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2322,6 +2660,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Fil:"
@@ -2509,6 +2855,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3091,6 +3441,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Fil:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3402,6 +3757,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Rediger"
@@ -3434,10 +3790,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3547,11 +3899,6 @@ msgstr ""
msgid "Change default type"
msgstr "Skift Array værditype"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Ok"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3589,6 +3936,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3628,6 +3983,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Tilføj Signal"
@@ -3638,11 +4005,29 @@ msgid "Remove point"
msgstr "Fjern Signal"
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "Lineær"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Fjern Signal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3667,6 +4052,12 @@ 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 ""
@@ -3957,6 +4348,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4274,6 +4670,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4298,6 +4700,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4351,6 +4757,10 @@ msgid "Close All"
msgstr "Luk"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4383,6 +4793,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Afhængigheds Editor"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4447,6 +4862,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4493,6 +4912,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Optimer Animation"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4798,94 +5222,102 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Skift"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Baglæns"
+msgid "Surface Changes"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Hjulet ned."
+msgid "Vertices"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Skift"
+msgid "Display Overdraw"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Baglæns"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Hjulet ned."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4893,6 +5325,18 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Vælg alle"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5010,6 +5454,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5138,6 +5583,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5195,6 +5644,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Fjern markering"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Fjern"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5262,7 +5721,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5284,11 +5743,25 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Skalering Valg"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineær"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5324,10 +5797,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5387,7 +5856,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5435,6 +5904,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Metode liste:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5471,10 +5957,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5519,6 +6001,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5533,10 +6028,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5565,254 +6056,287 @@ msgstr "Fjern markering"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Forbind..."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta +"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt +"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Skift"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Akse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Enhed"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Knap"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Venstre knap."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Højre knap."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Midterste knap."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Hjulet op."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Hjulet ned."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Tilføj Getter Egenskab"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Tester"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Slet Valgte"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5853,6 +6377,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Vælg alle"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5865,6 +6394,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "Sti til Node:"
@@ -5963,6 +6496,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Ok"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6006,10 +6544,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6022,6 +6556,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6065,6 +6611,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6116,6 +6670,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filter:"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6123,6 +6682,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6154,10 +6721,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6195,31 +6758,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6228,6 +6767,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Error loading skrifttype."
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Kunne ikke oprette mappe."
@@ -6237,6 +6781,10 @@ msgid "Error loading script from %s"
msgstr "Error loading skrifttype."
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6279,10 +6827,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6449,6 +6993,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6530,6 +7078,129 @@ msgstr "Ugyldig forekomst ordbog format (ugyldigt script på @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Ugyldig forekomst ordbog (ugyldige underklasser)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Slet Valgte"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Dubler valg"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Deaktiveret"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Opret en ny"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Kun Valgte"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Kun Valgte"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fil:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6567,6 +7238,30 @@ msgid "Stack overflow with stack depth: "
msgstr "Stakoverløb med stak dybde: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Rediger Signal argumenter:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Skift Array værditype"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Ændre Array-værdi"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Rediger Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funktioner:"
@@ -6607,26 +7302,6 @@ msgid "Add Signal"
msgstr "Tilføj Signal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Fjern Funktion"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Fjern Variabel"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Redigerer Variabel:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Fjern Signal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Redigerer Signal:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "Anim Skift Overgang"
@@ -6636,6 +7311,15 @@ msgid "Add Node"
msgstr "Tilføj Node"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Fjerne ugyldige keys"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6678,6 +7362,26 @@ msgstr "Tilføj Setter Egenskab"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Base Type"
+msgstr "Skift Array værditype"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Sti til Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Fjern Variabel"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Opret forbindelse til Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Condition"
msgstr "Overgang"
@@ -6707,6 +7411,54 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Ændre Array-værdi"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Sti til Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Fjern Funktion"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Rediger Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Fjern Variabel"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Redigerer Signal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Fjern Signal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Redigerer Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Redigerer Signal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Basis Type:"
@@ -6727,10 +7479,6 @@ msgid "Edit Variable:"
msgstr "Rediger Variabel:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Skift"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Slet Valgte"
@@ -6809,14 +7557,6 @@ msgstr ""
"Ugyldig retur værdi fra _step(), skal være heltal (seq ud), eller en streng "
"(fejl)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6840,79 +7580,6 @@ msgstr "Kunne ikke oprette mappe."
msgid "Could not open template for export:\n"
msgstr "Kunne ikke oprette mappe."
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "Ugyldigt index egenskabsnavn."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "Ugyldig skriftstørrelse."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7013,6 +7680,13 @@ msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
"PathFollow2D virker kun, når den angives som et barn af en Path2D node."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "Egenskaben Path skal pege på en gyldig Node2D node for at virke."
@@ -7041,23 +7715,33 @@ msgstr ""
"VisibilityEnable2D fungerer bedst, når det bruges med den redigerede "
"scenerod direkte som parent."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape tjener kun til at give en kollision figur til en "
-"CollisionObject afledte node. Du skal kun bruge det som et barn af Area, "
-"StaticBody, RigidBody, KinematicBody, etc. til at give dem en form."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"En figur skal gives for at CollisionShape fungerer. Opret en figur ressource "
-"til det!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7073,6 +7757,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "En tom CollisionPolygon har ingen effekt på kollision."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape tjener kun til at give en kollision figur til en "
+"CollisionObject afledte node. Du skal kun bruge det som et barn af Area, "
+"StaticBody, RigidBody, KinematicBody, etc. til at give dem en form."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"En figur skal gives for at CollisionShape fungerer. Opret en figur ressource "
+"til det!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7092,6 +7794,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7113,7 +7822,7 @@ msgstr ""
"for at AnimatedSprite3D kan vise frames."
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7128,22 +7837,6 @@ msgstr "Advarsel!"
msgid "Please Confirm..."
msgstr "Bekræft venligst..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Ã…ben en Fil"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Ã…ben fil(er)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Ã…bn en mappe"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Ã…bne en fil eller mappe"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "CTRL +"
@@ -7165,7 +7858,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7183,6 +7876,14 @@ msgstr ""
"den kan opnå en størrelse. Ellers gør den til en RenderTarget og tildel dens "
"indre textur til en node så den kan vises."
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "Ugyldigt index egenskabsnavn."
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "Ugyldig skriftstørrelse."
+
#~ msgid "Path property must point to a valid Particles2D node to work."
#~ msgstr ""
#~ "Egenskaben Path skal pege på en gyldig Particles2D node for at virke."
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 894f7b6028..837df7d62b 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-04-12 03:22+0000\n"
+"PO-Revision-Date: 2017-06-28 09:12+0000\n"
"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
@@ -33,7 +33,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.13-dev\n"
+"X-Generator: Weblate 2.15-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -100,9 +100,8 @@ msgid "Anim Track Change Value Mode"
msgstr "Anim Spur ändere Wert Modus"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Track Change Wrap Mode"
-msgstr "Anim Spur ändere Wert Modus"
+msgstr "Anim Spur ändere Wiederhol-Modus"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -164,7 +163,8 @@ msgstr "Gehe zum nächsten Schritt"
msgid "Goto Prev Step"
msgstr "Gehe zum vorherigen Schritt"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Linear"
@@ -377,21 +377,19 @@ msgstr "Array-Wert ändern"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Frei"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "Version:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "Konstanten:"
+msgstr "Inhalt:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "Datei"
+msgstr "Dateien anzeigen"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -399,7 +397,8 @@ msgstr "Datei"
msgid "Description:"
msgstr "Beschreibung:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Installieren"
@@ -410,161 +409,153 @@ msgstr "Installieren"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Schließen"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "Kann Hostnamen nicht auflösen:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "Kann nicht auflösen."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Verbindungsfehler, bitte erneut versuchen."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "Verbinde.."
+msgstr "Kann nicht verbinden."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "Verbinde mit Node:"
+msgstr "Kann nicht zu Host verbinden:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "Keine Antwort von Host:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Keine Antwort."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "Angefordertes Dateiformat unbekannt:"
+msgstr "Anfrage fehlgeschlagen: Rückgabewert:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Anfrage fehlgeschlagen."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "Anfrage fehlgeschlagen, zu viele Weiterleitungen"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "Weiterleitungsschleife."
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Fehlgeschlagen:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "Falsche Download-Prüfsumme, Datei könnte manipuliert worden sein."
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "Erwartet:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "Erhalten:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "Sha256-Prüfung fehlgeschlagen"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Asset-Download-Fehler:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Erfolgreich!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Hole:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "Speichere.."
+msgstr "Löse auf.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
msgstr "Verbinde.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "Testphase"
+msgstr "Frage an.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "Fehler beim speichern der Ressource!"
+msgstr "Fehler bei Anfrage"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "Leerlauf"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Erneut versuchen"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Download Error"
-msgstr "Herunter"
+msgstr "Übertragungsfehler"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Dieser Posten wird bereits herunter geladen!"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "Anfang"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "zurück"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "vor"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "Ende"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "Alle"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Suche:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Suche"
@@ -580,7 +571,7 @@ msgstr "Suche"
msgid "Import"
msgstr "Import"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Erweiterungen"
@@ -592,7 +583,7 @@ msgstr "Sortiere:"
msgid "Reverse"
msgstr "Umkehren"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Kategorie:"
@@ -747,14 +738,14 @@ msgstr "Verbinde mit Node:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Hinzufügen"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Entfernen"
@@ -863,7 +854,7 @@ msgid "Resource"
msgstr "Ressource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Pfad"
@@ -946,12 +937,196 @@ msgstr "Ressourcenauflistung verwaister Dateien"
msgid "Delete selected files?"
msgstr "Ausgewählte Dateien löschen?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Löschen"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Danke von der Godot-Gemeinschaft!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Danke!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Godot-Engine-Mitwirkende"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Projektverwaltung"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "Entwickler"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Projektverwaltung"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "Entwickler"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Inhalt:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Inhalt:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Unkomprimiert"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Paket erfolgreich installiert!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Paket erfolgreich installiert!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Ereignis hinzufügen"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Öffne Audiobus-Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Öffne Audiobus-Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Öffne Audiobus-Layout"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Ausgewähltes löschen"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Unterszenen-Optionen"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Duplizieren"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Ausgewähltes löschen"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Audiobus hinzufügen"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Layout löschen"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Animation duplizieren"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Aktion verschieben"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "Audiobus-Layout speichern als…"
@@ -966,24 +1141,53 @@ msgid "Open Audio Bus Layout"
msgstr "Öffne Audiobus-Layout"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Ungültige Dateiendung.\n"
+"Nutze .font als Dateiendung."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
-msgstr "%s hinzufügen"
+msgstr "Audiobus hinzufügen"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Erstelle neue Ressource"
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Lade"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Lade eine bestehende Ressource von der Festplatte und bearbeite sie."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Speichern als"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Audiobus-Layout speichern als…"
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Standard"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Ungültiger Name."
@@ -1090,6 +1294,11 @@ msgid "Updating scene.."
msgstr "Aktualisiere Szene..."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Bitte speichere die Szene zuerst."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Wähle ein Verzeichnis"
@@ -1167,6 +1376,22 @@ msgstr "Alle Dateien (*)"
msgid "Open"
msgstr "Öffnen"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Datei öffnen"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Datei(en) öffnen"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Verzeichnis wählen"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Datei oder Verzeichnis öffnen"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1293,6 +1518,15 @@ msgid "Signals:"
msgstr "Signale:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animationen"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Konstanten:"
@@ -1309,7 +1543,8 @@ msgid "Search Text"
msgstr "Suchtext"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Ausgabe:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1359,6 +1594,11 @@ msgid "Creating Thumbnail"
msgstr "Erzeuge Miniaturansicht"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1490,26 +1730,34 @@ msgid "Quick Open Script.."
msgstr "Schnell Skripte öffnen.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Ja"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Datei speichern"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Szene schließen? (Nicht gespeicherte Änderungen gehen verloren)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Szene speichern als.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Node"
+msgstr "Nein"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Ja"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Diese Szene wurde nie gespeichert. Speichern vorm Starten?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "MeshLibrary exportieren"
@@ -1519,12 +1767,9 @@ msgid "Export Tile Set"
msgstr "Tileset exportieren"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Verlassen"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Editor verlassen?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1549,18 +1794,52 @@ msgid "Quick Run Scene.."
msgstr "Schnell Szene starten.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Verlassen"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Editor verlassen?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Projektverwaltung"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Datei speichern"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Projektverwaltung öffnen?\n"
-"(Nicht gespeicherte Änderungen gehen verloren)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Wähle eine Hauptszene"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1600,6 +1879,11 @@ msgstr "Layout speichern"
msgid "Delete Layout"
msgstr "Layout löschen"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Standard"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Szenentab wechseln"
@@ -1616,6 +1900,11 @@ msgstr "%d weitere Datei(en) oder Ordner"
msgid "Distraction Free Mode"
msgstr "Ablenkungsfreier Modus"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Ablenkungsfreier Modus"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Szene"
@@ -1633,9 +1922,8 @@ msgid "Previous tab"
msgstr "Vorheriger Tab"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Filter Files.."
-msgstr "Schnell Dateien filtern.."
+msgstr "Dateien filtern.."
#: editor/editor_node.cpp
msgid "Operations with scene files."
@@ -1665,10 +1953,6 @@ msgstr "Alle Szenen speichern"
msgid "Close Scene"
msgstr "Szene schließen"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Schließen und zur letzten Szene wechseln"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Zuletzt benutzte Szenen"
@@ -1705,9 +1989,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "Sonstiges Projekt oder szenenübergreifende Werkzeuge."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Neues Projekt"
+msgstr "Projekt"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1822,9 +2105,8 @@ msgstr ""
"effizientesten das Netzwerk-Dateisystem zu nutzen."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "Bearbeiten"
+msgstr "Editor"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1839,9 +2121,8 @@ msgid "Toggle Fullscreen"
msgstr "Vollbildmodus umschalten"
#: editor/editor_node.cpp editor/project_export.cpp
-#, fuzzy
msgid "Manage Export Templates"
-msgstr "Lade Exportvorlagen"
+msgstr "Verwalte Exportvorlagen"
#: editor/editor_node.cpp
msgid "Help"
@@ -1852,17 +2133,17 @@ msgid "Classes"
msgstr "Klassen"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Dokumentation schließen"
+msgstr "Internetdokumentation"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Fragen&Antworten"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Issue Tracker"
-msgstr ""
+msgstr "Problem-Melder"
#: editor/editor_node.cpp
msgid "About"
@@ -1972,6 +2253,10 @@ msgstr "Node"
msgid "Output"
msgstr "Ausgabe"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Neuimport"
@@ -1981,26 +2266,10 @@ msgid "Update"
msgstr "Update"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Danke von der Godot-Gemeinschaft!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Danke!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Vorlagen aus ZIP-Datei importieren"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Projekt exportieren"
@@ -2021,38 +2290,41 @@ msgid "Open & Run a Script"
msgstr "Skript öffnen und ausführen"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Neue gererbte Szene.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Ladefehler"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Auswählen"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Im Editor öffnen"
+msgstr "2D Editor öffnen"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Im Editor öffnen"
+msgstr "3D Editor öffnen"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Im Editor öffnen"
+msgstr "Skripteditor öffnen"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "Bibliothek exportieren"
+msgstr "Öffne Bibliothek"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Im Editor öffnen"
+msgstr "Nächsten Editor öffnen"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Im Editor öffnen"
+msgstr "Vorigen Editor öffnen"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2130,6 +2402,16 @@ msgstr "Importiere erneut"
msgid "Re-Import Changed Resources"
msgstr "Veränderte Ressourcen neu importieren"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Spiellogik sollte mit der _run()-Methode beginnen."
@@ -2171,33 +2453,28 @@ msgid "Import From Node:"
msgstr "Aus Node importieren:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Re-Download"
-msgstr "Neu laden"
+msgstr "Erneut herunterladen"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall"
-msgstr "Installieren"
+msgstr "Deinstallieren"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "(Installed)"
-msgstr "Installieren"
+msgstr "(Installiert)"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download"
-msgstr "Herunter"
+msgstr "Herunterladen"
#: editor/export_template_manager.cpp
msgid "(Missing)"
msgstr "(Fehlend)"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "(Current)"
-msgstr "Laufend:"
+msgstr "(Aktuell)"
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
@@ -2224,14 +2501,12 @@ msgid "No version.txt found inside templates."
msgstr "Keine version.txt in Templates gefunden."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error creating path for templates:\n"
-msgstr "Fehler beim speichern des Atlas:"
+msgstr "Fehler bei Erzeugen des Pfads für die Vorlagen:\n"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Extracting Export Templates"
-msgstr "Lade Exportvorlagen"
+msgstr "Extrahiere Exportvorlagen"
#: editor/export_template_manager.cpp
msgid "Importing:"
@@ -2242,34 +2517,28 @@ msgid "Loading Export Templates"
msgstr "Lade Exportvorlagen"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Current Version:"
-msgstr "Aktuelle Szene"
+msgstr "Aktuelle Version:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Installed Versions:"
-msgstr "Installierte Erweiterungen:"
+msgstr "Installierte Versionen:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install From File"
-msgstr "Installiere Projekt:"
+msgstr "Installiere aus Datei"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Remove Template"
-msgstr "Entferne Element"
+msgstr "Entferne Vorlage"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select template file"
-msgstr "Ausgewählte Dateien löschen?"
+msgstr "Vorlagendatei wählen"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Export Template Manager"
-msgstr "Lade Exportvorlagen"
+msgstr "Exportvorlagenverwaltung"
#: editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
@@ -2282,10 +2551,28 @@ msgid "Cannot navigate to '"
msgstr "Kann Ordner ‚"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Speichern & neu importieren"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Quelle:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Quell- und Zieldatei sind gleich, ignoriere Anweisung."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Quell- und Zielpfad sind gleich, ignoriere Anweisung."
@@ -2294,6 +2581,20 @@ msgid "Can't move directories to within themselves."
msgstr "Verzeichnisse lassen sich nicht in sich selbst verschieben."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Fehler beim Laden des Bilds:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Fehler beim importieren:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "Kann mit ‚..‘ nicht arbeiten"
@@ -2306,9 +2607,8 @@ msgid "No files selected!"
msgstr "Keine Dateien ausgewählt!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Expand all"
-msgstr "Auf übergeordnetes Node ausdehnen"
+msgstr "Alle expandieren"
#: editor/filesystem_dock.cpp
msgid "Collapse all"
@@ -2371,6 +2671,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "Instantiiere gewählte Szene(n) als Unterobjekt des ausgewählten Nodes."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Verschieben"
@@ -2382,10 +2688,31 @@ msgstr "Zu Gruppe hinzufügen"
msgid "Remove from Group"
msgstr "Aus Gruppe entfernen"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Oberfläche %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Szene wird importiert.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "3D-Szene importieren"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2424,21 +2751,26 @@ msgid "Saving.."
msgstr "Speichere.."
#: editor/import_dock.cpp
-#, fuzzy
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
-msgstr "Datei"
+msgstr " Dateien"
#: editor/import_dock.cpp
-#, fuzzy
msgid "Import As:"
-msgstr "Import"
+msgstr "Importiere als:"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
msgstr "Voreinstellungen.."
#: editor/import_dock.cpp
-#, fuzzy
msgid "Reimport"
msgstr "Neuimport"
@@ -2513,13 +2845,12 @@ msgid "No target font resource!"
msgstr "Keine Zielschriftart-Ressource!"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
"Ungültige Dateiendung.\n"
-"Nutze .fnt als Dateiendung."
+"Nutze .font als Dateiendung."
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2618,6 +2949,10 @@ msgstr "Quell Mesh(es):"
msgid "Mesh"
msgstr "Mesh"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Oberfläche %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Keine Samples zu importieren!"
@@ -2998,9 +3333,8 @@ msgid "Compress"
msgstr "Komprimieren"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "Zu Projekt hinzufügen (engine.cfg)"
+msgstr "Zu Projekt hinzufügen (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3039,9 +3373,8 @@ msgid "Change Animation Name:"
msgstr "Animationsname ändern:"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Delete Animation?"
-msgstr "Animation duplizieren"
+msgstr "Animation löschen?"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3204,6 +3537,11 @@ msgid "New name:"
msgstr "Neuer Name:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Nodefilter bearbeiten"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Skalierung:"
@@ -3521,6 +3859,7 @@ msgstr "Macht Unterobjekte dieses Objekts wieder auswählbar."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Bearbeiten"
@@ -3553,10 +3892,6 @@ msgid "Use Pixel Snap"
msgstr "Pixelraster benutzen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Auf übergeordnetes Node ausdehnen"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Skelett.."
@@ -3665,11 +4000,6 @@ msgstr "Diese Aktion benötigt ein einzelnes ausgewähltes Node."
msgid "Change default type"
msgstr "Standardtyp ändern"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3709,6 +4039,14 @@ msgstr "Polygon bearbeiten (Punkt entfernen)"
msgid "Create a new polygon from scratch."
msgstr "Polygon von Grund auf neu erstellen."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Polygon3D erstellen"
@@ -3749,23 +4087,53 @@ msgstr "Aus Szene aktualisieren"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Add point"
-msgstr "Eingang hinzufügen"
+msgid "Modify Curve Point"
+msgstr "Kurve ändern"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Verändere Curve-Map"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Vorlage laden"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "Punkt hinzufügen"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "Pfadpunkt entfernen"
+msgstr "Punkt entfernen"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "Linear"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Right linear"
+msgstr "Sicht von rechts"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "Ressource laden"
+msgstr "Vorlage laden"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "Verändere Curve-Map"
+msgid "Remove Curve Point"
+msgstr "Pfadpunkt entfernen"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3789,6 +4157,12 @@ 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 ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Occluder-Polygon erzeugen"
@@ -3813,19 +4187,16 @@ msgid "RMB: Erase Point."
msgstr "RMT: Punkt entfernen."
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Point from Line2D"
-msgstr "Punkt von Kurve entfernen"
+msgstr "Punkt von Line2D entfernen"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Point to Line2D"
-msgstr "Punkt zu Kurve hinzufügen"
+msgstr "Punkt zu Line2D hinzufügen"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Move Point in Line2D"
-msgstr "Punkt auf Kurve verschieben"
+msgstr "Punkt in Line2D verschieben"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -3858,9 +4229,8 @@ msgid "Add Point (in empty space)"
msgstr "Punkt hinzufügen (in leerem Raum)"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Split Segment (in line)"
-msgstr "Segment aufteilen (in Kurve)"
+msgstr "Segment aufteilen (in Linie)"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -4055,13 +4425,14 @@ msgstr "Emissionsmaske leeren"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
msgstr "Erzeuge AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"Punkt kann nur in ein Prozessmaterial des Typs ParticlesMaterial gesetzt "
+"werden"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4077,36 +4448,38 @@ msgstr "Emissionsmaske setzen"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Generiere Sichtbarkeits-Rechteck"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
msgstr "Emissionsmaske laden"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Vertices"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "Anzahl generierter Punkte:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "Durchschnittszeit (Sek)"
+msgstr "Erzeugungszeit (s):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "Emissionsmaske setzen"
+msgstr "Emissionsmaske"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "Von Szene erstellen"
+msgstr "Von Pixel aufnehmen"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "Emissionsorte:"
+msgstr "Emissionsfarben"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4133,14 +4506,12 @@ msgid "Generate AABB"
msgstr "Erzeuge AABB"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Mesh"
-msgstr "Erzeuge Emittent aus Mesh"
+msgstr "Erzeuge Emissionspunkte aus Mesh"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Node"
-msgstr "Erzeuge Emittent aus Node"
+msgstr "Erzeuge Emissionspunkte aus Node"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Clear Emitter"
@@ -4151,14 +4522,12 @@ msgid "Create Emitter"
msgstr "Erzeuge Emittent"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Points:"
-msgstr "Emissionsorte:"
+msgstr "Emissionspunkte:"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Surface Points"
-msgstr "Oberfläche %d"
+msgstr "Oberflächenpunkte"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points+Normal (Directed)"
@@ -4169,28 +4538,24 @@ msgid "Volume"
msgstr "Volumen"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Source: "
-msgstr "Emissionsfüllung:"
+msgstr "Emissionsquelle: "
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "Erzeuge AABB"
+msgstr "Erzeuge Sichtbarkeits-AABB"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
msgstr "Punkt von Kurve entfernen"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "Ausgangsgriff auf Kurve verschieben"
+msgstr "Ausgangsgriff von Kurve löschen"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "Punkt von Kurve entfernen"
+msgstr "Eingangsgriff von Kurve entfernen"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4248,14 +4613,12 @@ msgid "Remove Path Point"
msgstr "Pfadpunkt entfernen"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "Ausgangsgriff auf Kurve verschieben"
+msgstr "Ausgangskontrollpunkt löschen"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "Eingangsgriff auf Kurve verschieben"
+msgstr "Eingangskontrollpunkt löschen"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4410,9 +4773,14 @@ msgid "Pitch"
msgstr "Tonhöhe"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "Knochen entfernen"
+msgstr "Letzte Dateien leeren"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4439,6 +4807,10 @@ msgid "Save Theme As.."
msgstr "Motiv speichern als.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Nächstes Skript"
@@ -4491,6 +4863,11 @@ msgid "Close All"
msgstr "Alle schließen"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Favoriten ein- und ausblenden"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4523,6 +4900,11 @@ msgid "Keep Debugger Open"
msgstr "Debugger offen halten"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Nächsten Editor öffnen"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Fenster"
@@ -4535,9 +4917,8 @@ msgid "Move Right"
msgstr "nach rechts"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "Durchsuche die Referenzdokumentation."
+msgstr "Öffne Godot-Referenzdokumentation"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4556,9 +4937,8 @@ msgid "Go to next edited document."
msgstr "Springe zum nächsten bearbeiteten Dokument."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Discard"
-msgstr "Einzeln"
+msgstr "Verwerfen"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
@@ -4592,25 +4972,28 @@ msgstr ""
"Szene geladen ist"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Farbe auswählen"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "Bilder werden konvertiert"
+msgstr "Groß-/Kleinschreibung ändern"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Großbuchstaben"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Kleinbuchstaben"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Kapitalisiere"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4639,6 +5022,11 @@ msgid "Move Down"
msgstr "Schiebe herunter"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Punk löschen"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Nach links einrücken"
@@ -4664,11 +5052,11 @@ msgstr "kürze Leerraum am Zeilenende"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Konvertiere Einrückung zu Leerzeichen"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Konvertiere Einrückung zu Tabulatoren"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4692,14 +5080,12 @@ msgid "Goto Previous Breakpoint"
msgstr "Springe zum vorigen Haltepunkt"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "Umwandeln zu.."
+msgstr "In Großbuchstaben konvertieren"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "Umwandeln zu.."
+msgstr "In Kleinbuchstaben konvertieren"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -4726,7 +5112,7 @@ msgstr "Kontexthilfe"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -4945,63 +5331,28 @@ msgid "Animation Key Inserted."
msgstr "Animationsschlüsselbild eingefügt."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Vor"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Rückwärts"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Mausrad runter."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "Gezeichnete Objekte"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "Änderungen aktualisieren"
+msgstr "Materialänderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "Änderungen aktualisieren"
+msgstr "Shader-Änderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "Änderungen aktualisieren"
+msgstr "Oberflächen-Änderungen"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Zeichenaufrufe"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "Vertex"
+msgstr "Vertices"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5020,33 +5371,81 @@ msgid "Display Overdraw"
msgstr "Overdraw-Ansicht"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
-msgstr "Shadeless-Ansicht"
+msgstr "Nicht Schattiertes anzeigen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "Umgebung"
+msgstr "Environment anzeigen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "Gizmos"
+msgstr "Griffe anzeigen"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Sicht-Informationen"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "Audiosenke"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Aktivieren"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr "Freisicht Links"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr "Freisicht Rechts"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr "Freisicht Vorwärts"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr "Freisicht Rückwärts"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr "Freisicht Hoch"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr "Freisicht Runter"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr "Freisicht Geschwindigkeitsregler"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Vorschau"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Transformationsdialog"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Auswahlmodus"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+Rechtsklick: Listenauswahl nach Tiefe"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Bewegungsmodus (W)"
@@ -5103,24 +5502,20 @@ msgid "Align Selection With View"
msgstr "Auswahl auf Ansicht ausrichten"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Auswählen"
+msgstr "Werkzeugauswahl"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "Verschieben"
+msgstr "Werkzeug Verschieben"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Strg: Rotieren"
+msgstr "Werkzeug Drehen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "Skalierung:"
+msgstr "Werkzeug Skalieren"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5167,6 +5562,7 @@ msgid "View Grid"
msgstr "Zeige Gitter"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Einstellungen"
@@ -5295,6 +5691,11 @@ msgid "StyleBox Preview:"
msgstr "StyleBox-Vorschau:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Skalierungsbegrenzungseditor"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Einrastmodus:"
@@ -5352,6 +5753,16 @@ msgid "Remove Item"
msgstr "Entferne Element"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Entferne Klassen-Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Entfernen"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Motiv"
@@ -5419,7 +5830,7 @@ msgstr "Tab 2"
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Typ:"
@@ -5441,12 +5852,27 @@ msgid "Color"
msgstr "Farbe"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Lösche Auswahl"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Zeichne TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Duplizieren"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Linear"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Eimer"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5481,10 +5907,6 @@ msgid "Pick Tile"
msgstr "Wähle Kachel"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Auswählen"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Drehe auf 0 Grad"
@@ -5529,26 +5951,22 @@ msgid "Error"
msgstr "Fehler"
#: editor/project_export.cpp
-#, fuzzy
msgid "Runnable"
-msgstr "Aktivieren"
+msgstr "ausführbar"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete patch '"
-msgstr "Eingang löschen"
+msgstr "Patch von Liste löschen"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete preset '%s'?"
-msgstr "Ausgewählte Dateien löschen?"
+msgstr "Vorlage ‚%s‘ löschen?"
#: editor/project_export.cpp
-#, fuzzy
msgid "Presets"
-msgstr "Voreinstellungen.."
+msgstr "Vorlagen"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Hinzufügen.."
@@ -5557,77 +5975,84 @@ msgid "Resources"
msgstr "Ressourcen"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export all resources in the project"
-msgstr "Exportiere alle Ressourcen des Projekts."
+msgstr "Exportiere alle Ressourcen des Projekts"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected scenes (and dependencies)"
-msgstr "Exportiere ausgewählte Ressourcen (inklusive Abhängigkeiten)."
+msgstr "Exportiere ausgewählte Ressourcen (inklusive Abhängigkeiten)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected resources (and dependencies)"
-msgstr "Exportiere ausgewählte Ressourcen (inklusive Abhängigkeiten)."
+msgstr "Exportiere ausgewählte Ressourcen (inklusive Abhängigkeiten)"
#: editor/project_export.cpp
msgid "Export Mode:"
msgstr "Export-Modus:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Resources to export:"
msgstr "Zu exportierende Ressourcen:"
#: editor/project_export.cpp
-#, fuzzy
msgid ""
"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
msgstr ""
"Filter um Nicht-Ressourcendateien zu exportieren (durch Kommata getrennt, z."
-"B.: *.json, *.txt):"
+"B.: *.json, *.txt)"
#: editor/project_export.cpp
-#, fuzzy
msgid ""
"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
msgstr ""
"Filter um vom Export auszuschließen (durch Kommata getrennt, z.B.: *.json, *."
-"txt):"
+"txt)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Patches"
-msgstr "Treffer:"
+msgstr "Patche"
#: editor/project_export.cpp
-#, fuzzy
msgid "Make Patch"
-msgstr "Zielpfad:"
+msgstr "Erstelle Patch"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Textur"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Methodenliste:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "Exportiere PCK/Zip"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Export-Templates für diese Systeme fehlen:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export With Debug"
-msgstr "Tileset exportieren"
+msgstr "Exportiere mit Debuginformationen"
#: editor/project_manager.cpp
msgid "Invalid project path, the path must exist!"
msgstr "Ungültiger Projektpfad, der Pfad muss existieren!"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr "Ungültiger Projektpfad, engine.cfg darf nicht existieren."
+msgstr "Ungültiger Projektpfad, project.godot darf nicht existieren."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr "Ungültiger Projektpfad, engine.cfg muss existieren."
+msgstr "Ungültiger Projektpfad, project.godot muss existieren."
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -5638,19 +6063,14 @@ msgid "Invalid project path (changed anything?)."
msgstr "Ungültiger Projektpfad (etwas geändert?)."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr "Konnte engine.cfg in Projektpfad nicht erzeugen."
+msgstr "Konnte project.godot im Projektpfad nicht erzeugen."
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
msgstr "Die folgenden Dateien ließen sich nicht aus dem Paket extrahieren:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Paket erfolgreich installiert!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Existierendes Projekt importieren"
@@ -5695,6 +6115,22 @@ msgid "Are you sure to open more than one project?"
msgstr "Sollen wirklich mehrere Projekte geöffnet werden?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Es ist keine Hauptszene definiert worden.\n"
+"Wähle eine in den Projekteinstellungen unter der Kategorie „Anwendung“."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "Sollen wirklich mehrere Projekte ausgeführt werden?"
@@ -5711,10 +6147,6 @@ msgid ""
msgstr "Sollen wirklich %s Ordner nach Godot-Projekten durchsucht werden?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Projektverwaltung"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Projektliste"
@@ -5735,273 +6167,303 @@ msgid "New Project"
msgstr "Neues Projekt"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "Entferne Element"
+msgstr "Vorlagen"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "Verlassen"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Kann nicht verbinden."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Taste "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Joysticktaste"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "Joystickachse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Maustaste"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Ungültiger Name für Aktion (alle Zeichen außer ‚/‘ und ‚:‘ möglich)."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "Aktion ‚%s‘ existiert bereits!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Eingabeaktionsereignis umbenennen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Eingabeaktionsereignis hinzufügen"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Umschalt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Steuerung+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Drücke eine Taste.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Maustasten-Index:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Linke Taste"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Rechte Taste"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Mittlere Taste"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Mausrad hoch"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Mausrad herunter"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Taste 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Taste 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Taste 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Taste 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Ändern"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "Joystickachsen-Index:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Achse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "Joysticktasten-Index:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Füge Eingabeaktion hinzu"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Lösche Eingabeaktionsereignis"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr "Empty einfügen"
+msgstr "Ereignis hinzufügen"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Gerät"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Schaltfläche"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Linke Taste."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Rechte Taste."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Mittlere Taste."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Mausrad hoch."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Mausrad runter."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Getter-Eigenschaft hinzufügen"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Eigenschaft:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Einstellungen"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Eingang löschen"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Fehler beim Speichern der Einstellungen."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Einstellungen gespeichert OK."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Übersetzung hinzufügen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Übersetzung entfernen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Remap-Pfad hinzufügen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "Ressourcen-Remap hinzufügen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Ändere Zielsprache des Ressourcen-Remaps"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Ressourcen-Remap entfernen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Ressourcen-Remap-Option entfernen"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "Projekteinstellungen (engine.cfg)"
+msgstr "Projekteinstellungen (project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "Allgemein"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Eigenschaft:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Entfernen"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Kopiere zu Plattform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "Eingabe Zuordnung"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Aktion:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Gerät:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Index:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Lokalisierung"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Übersetzungen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Übersetzungen:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Neu zuweisen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Ressourcen:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Remaps nach Lokalisierung:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Lokalisierung"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "Autoload"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Pick a Viewport"
-msgstr "Eine Ansicht"
+msgstr "Viewport auswählen"
#: editor/property_editor.cpp
msgid "Ease In"
@@ -6036,13 +6498,17 @@ msgid "Assign"
msgstr "Zuweisen"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Wähle ein Node"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Neues Skript"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Show in File System"
-msgstr "Dateisystem"
+msgstr "Im Dateisystem anzeigen"
#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
@@ -6050,8 +6516,12 @@ msgstr "Fehler beim Laden der Datei: Keine Ressource!"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Selektiere Node(s) für den Import"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
-msgstr "Wähle ein Node"
+msgstr "Node auswählen"
#: editor/property_editor.cpp
msgid "Bit %d, val %d."
@@ -6146,6 +6616,11 @@ msgstr "Hauptszenen Parameter:"
msgid "Scene Run Settings"
msgstr "Szenenausführungseinstellungen"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6193,10 +6668,6 @@ msgid "Delete Node(s)?"
msgstr "Lösche Node(s)?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr "Lässt sich nicht an Root-Node ausführen."
@@ -6209,6 +6680,18 @@ msgid "Save New Scene As.."
msgstr "Speichere neue Szene als.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "bearbeitbare Unterobjekte"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Als Platzhalter laden"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "Instantiierung verwerfen"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Verstehe!"
@@ -6241,9 +6724,8 @@ msgid "Error duplicating scene to save it."
msgstr "Fehler beim Duplizieren der Szene zum Speichern."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources:"
-msgstr "Ressourcen:"
+msgstr "Unter-Ressourcen:"
#: editor/scene_tree_dock.cpp
msgid "Edit Groups"
@@ -6254,6 +6736,14 @@ msgid "Edit Connections"
msgstr "Verbindungen bearbeiten"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Leere Vererbung"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Im Editor öffnen"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Node(s) löschen"
@@ -6286,9 +6776,8 @@ msgid "Save Branch as Scene"
msgstr "Speichere Verzweigung als Szene"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Copy Node Path"
-msgstr "Pfad kopieren"
+msgstr "Node-Pfad kopieren"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
@@ -6307,6 +6796,11 @@ msgstr ""
"kein Root-Node existiert."
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filter"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "Ein neues oder existierendes Skript zum ausgewählten Node hinzufügen."
@@ -6314,6 +6808,14 @@ msgstr "Ein neues oder existierendes Skript zum ausgewählten Node hinzufügen."
msgid "Clear a script for the selected node."
msgstr "Leere ein Skript für das ausgewählte Node."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "Vererbung wirklich leeren? (Lässt sich nicht rückgängig machen!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Leeren!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Spatial-Sichtbarkeit umschalten"
@@ -6324,56 +6826,59 @@ msgstr "CanvasItem-Sichtbarkeit umschalten"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Node-Konfigurationswarnung:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"Node hat Verbindungen und Gruppen\n"
+"Hier klicken zur Signalverwaltung."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"Node hat Verbindungen.\n"
+"Hier klicken zur Signalverwaltung."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Fehlerbehebungsoptionen"
+"Node ist in Gruppe(n).\n"
+"Hier klicken zur Gruppenverwaltung."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instanz:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Nächstes Skript"
+msgstr "Skript öffnen"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"Node ist gesperrt.\n"
+"Hier klicken zum entsperren"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Unterobjekte sind nicht auswählbar.\n"
+"Hier klicken um auswählbar zu machen"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "Spatial-Sichtbarkeit umschalten"
+msgstr "Sichtbarkeit umschalten"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6389,32 +6894,9 @@ msgid "Scene Tree (Nodes):"
msgstr "Szenenbaum (Nodes):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "bearbeitbare Unterobjekte"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Als Platzhalter laden"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "Instantiierung verwerfen"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Im Editor öffnen"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Leere Vererbung"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "Vererbung wirklich leeren? (Lässt sich nicht rückgängig machen!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Leeren!"
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "Node-Konfigurationswarnung:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6422,14 +6904,22 @@ msgstr "Wähle ein Node"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Fehler beim Laden des Bilds:"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr "Skript konnte nicht im Dateisystem erstellt werden."
+msgstr "Fehler - Skript konnte nicht im Dateisystem erstellt werden."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
msgstr "Fehler beim Laden des Skripts von %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "Nicht verfügbar"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Pfad ist leer"
@@ -6447,68 +6937,55 @@ msgstr "Ungültige Erweiterung"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Falsche Erweiterung gewählt"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "Ungültiger Pfad."
+msgstr "Ungültiger Pfad"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "Ungültiger Klassenname"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "Ungültiger Name der Index-Eigenschaft."
+msgstr "Ungültiger geerbter Name oder Pfad"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "Skript"
+msgstr "Skript gültig"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "Nicht verfügbar"
+msgstr "Erlaubt: a-z, A-Z, 0-9 und _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Eingebettetes Skript (in Szenedatei)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "Neues Skript erstellen"
+msgstr "Neue Skriptdatei erstellen"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
-msgstr "Lade bestehendes Skript"
+msgstr "Lade bestehende Skriptdatei"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "Erbt:"
+msgstr "Erbt"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Klassenname:"
+msgstr "Klassenname"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Entferne Element"
+msgstr "Vorlage"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
-msgstr "Built-In-Skript"
+msgstr "Eingebettetes Skript"
#: editor/script_create_dialog.cpp
msgid "Attach Node Script"
@@ -6647,6 +7124,10 @@ msgid "Change Light Radius"
msgstr "Ändere Lichtradius"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Ändere FOV der Kamera"
@@ -6680,12 +7161,12 @@ msgstr "Ändere Ausmaße des Benachrichtigers"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Ändere Partikel AABB"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Change Probe Extents"
-msgstr "Ändere Ausmaße des Benachrichtigers"
+msgstr "Sondenausmaße ändern"
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -6733,6 +7214,137 @@ msgstr "Ungültiges Instanz-Verzeichnisformat (ungültiges Skript in @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Ungültiges Instanz-Verzeichnisformat (ungültige Unterklasse)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Ausgewähltes löschen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Auswahl duplizieren"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Sicht von oben"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Deaktiviert"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Strg: Rotieren"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Strg: Rotieren"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Strg: Rotieren"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Neu erstellen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Erstelle neues Projekt"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Lösche TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Nur Auswahl"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Nur Auswahl"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Einrasteinstellungen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Instanz:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " Dateien"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6772,6 +7384,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Stack-Overflow mit Stack-Tiefe: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Signalparameter bearbeiten:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Wertetyp des Arrays ändern"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Ändere Eingabename"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Ändere Standardwert"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Variable bearbeiten:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funktionen:"
@@ -6812,26 +7449,6 @@ msgid "Add Signal"
msgstr "Signal hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Funktion entfernen"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Variable entfernen"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "bearbeite Variable:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Signal entfernen"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "bearbeite Signal:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Ausdruck ändern"
@@ -6840,6 +7457,16 @@ msgid "Add Node"
msgstr "Node hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Ungültige Schlüsselbilder entfernen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Dupliziere Graph-Node(s)"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Alt-Taste gedrückt halten, um einen Getter zu setzen. Umschalt-Taste halten, "
@@ -6884,6 +7511,26 @@ msgid "Add Setter Property"
msgstr "Setter-Eigenschaft hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Typ ändern"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Entferne Node(s)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Entferne Shader-Graph-Node"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Verbinde mit Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Bedingung"
@@ -6912,6 +7559,56 @@ msgid "Get"
msgstr "Abfragen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Ändere Eingabename"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "Kann mit ‚..‘ nicht arbeiten"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Zwischenablage für Ressourcen ist leer!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Nodes einfügen"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Funktion entfernen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Variable bearbeiten:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Variable entfernen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "bearbeite Signal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Signal entfernen"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "bearbeite Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "bearbeite Signal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Basistyp:"
@@ -6933,10 +7630,6 @@ msgid "Edit Variable:"
msgstr "Variable bearbeiten:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Ändern"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Ausgewähltes löschen"
@@ -7014,114 +7707,25 @@ msgstr ""
"Ungültiger Rückgabewert von _step(), muss Integer (für Sequenzausgabe) oder "
"String (für Fehler) sein."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "gerade gedrückt"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "gerade losgelassen"
-
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Run in Browser"
-msgstr "Durchstöbern"
+msgstr "Im Browser ausführen"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
msgstr "Führe exportiertes HTML im Standard-Browser des Betriebssystems aus."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file:\n"
-msgstr "Konnte Kachel nicht finden:"
+msgstr "Konnte Datei nicht schreiben:\n"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file:\n"
-msgstr "Konnte Kachel nicht finden:"
+msgstr "Konnte Datei nicht lesen:\n"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:\n"
-msgstr "Ordner konnte nicht erstellt werden."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"Zertifikat-Datei konnte nicht gelesen werden. Sind Pfad und Passwort beide "
-"korrekt?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Fehler beim erstellen des Signaturobjekts."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Fehler beim erstellen der Paketsignatur."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Keine Exportvorlagen gefunden.\n"
-"Laden Sie Exportvorlagen ggf. von der offiziellen Webseite herunter und "
-"installieren Sie diese."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Selbst konfiguriertes Debug-Paket nicht gefunden."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Selbst konfiguriertes Release-Paket nicht gefunden."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Ungültiger einzigartiger Name."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "Ungültige Produkt-GUID."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "Ungültige Verleger-GUID."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Ungültige Hintergrundfarbe."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Ungültige Abmessungen des Store-Logos (sollte 50x50 sein)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "Ungültige Abmessungen für 44x44-Quadratlogo (sollte 44x44 sein)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "Ungültige Abmessungen für 71x71-Quadratlogo (sollte 71x71 sein)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "Ungültige Abmessungen für 150x150-Quadratlogo (sollte 150x150 sein)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "Ungültige Abmessungen für 310x310-Quadratlogo (sollte 310x310 sein)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "Ungültige Abmessungen für 310x150-Breitlogo (sollte 310x150 sein)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "Ungültige Abmessungen für Startbildschirm (sollte 620x300 sein)."
+msgstr "Konnte Exportvorlage nicht öffnen:\n"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7224,6 +7828,8 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"Es ist kein Material zum Verarbeiten der Partikel zugewiesen, deshalb ist "
+"kein Verhalten definiert."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7231,6 +7837,13 @@ msgstr ""
"PathFollow2D funktioniert nur, wenn es als Unterobjekt eines Path2D-Nodes "
"gesetzt wird."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7261,23 +7874,33 @@ msgstr ""
"VisibilityEnable2D funktioniert am besten, wenn es ein Unterobjekt erster "
"Ordnung der bearbeiteten Szene ist."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape liefert nur eine Kollisionsform für ein von CollisionObject "
-"abgeleitetes Node. Es kann nur als Unterobjekt von Area, StaticBody, "
-"RigidBody, KinematicBody usw. eingehängt werden um diesen eine Form zu geben."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Damit CollisionShape funktionieren kann, muss eine Form vorhanden sein. "
-"Bitte erzeuge eine shape Ressource dafür!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7293,6 +7916,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Ein leeres CollisionPolygon hat keinen Effekt auf die Kollision."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape liefert nur eine Kollisionsform für ein von CollisionObject "
+"abgeleitetes Node. Es kann nur als Unterobjekt von Area, StaticBody, "
+"RigidBody, KinematicBody usw. eingehängt werden um diesen eine Form zu geben."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Damit CollisionShape funktionieren kann, muss eine Form vorhanden sein. "
+"Bitte erzeuge eine shape Ressource dafür!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7311,6 +7952,14 @@ msgstr ""
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+"Nichts ist sichtbar da keine Meshe den Zeichendurchläufen zugewiesen wurden."
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7333,12 +7982,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Ausführungsmodus:"
+msgid "Raw Mode"
+msgstr "Schwenkmodus"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Füge aktuelle Farbe als Vorlage hinzu"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7348,22 +7997,6 @@ msgstr "Warnung!"
msgid "Please Confirm..."
msgstr "Bitte bestätigen..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Datei öffnen"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Datei(en) öffnen"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Verzeichnis wählen"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Datei oder Verzeichnis öffnen"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Strg+"
@@ -7391,11 +8024,13 @@ msgstr ""
"ein Control als Unterobjekt verwendet und dessen Minimalgröße eingestellt "
"werden."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"Das Standard-Environment wie festgelegt in den Projekteinstellungen "
+"(Rendering→Viewport→Standard-Environment) konnte nicht geladen werden."
#: scene/main/viewport.cpp
msgid ""
@@ -7410,6 +8045,100 @@ msgstr ""
"Eigenschaft ‚Render Target‘ des Viewports aktiviert und seine Textur "
"irgendeinem Node zum Anzeigen zugewiesen werden."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Szene schließen? (Nicht gespeicherte Änderungen gehen verloren)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Projektverwaltung öffnen?\n"
+#~ "(Nicht gespeicherte Änderungen gehen verloren)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Schließen und zur letzten Szene wechseln"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Auf übergeordnetes Node ausdehnen"
+
+#~ msgid "Del"
+#~ msgstr "Entfernen"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Kopiere zu Plattform.."
+
+#~ msgid "just pressed"
+#~ msgstr "gerade gedrückt"
+
+#~ msgid "just released"
+#~ msgstr "gerade losgelassen"
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Die Zertifikat-Datei konnte nicht gelesen werden. Sind Pfad und Passwort "
+#~ "beide korrekt?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Fehler beim erstellen des Signaturobjekts."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Fehler beim erstellen der Paketsignatur."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Keine Exportvorlagen gefunden.\n"
+#~ "Laden Sie Exportvorlagen ggf. von der offiziellen Webseite herunter und "
+#~ "installieren Sie diese."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Selbst konfiguriertes Debug-Paket nicht gefunden."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "Selbst konfiguriertes Release-Paket nicht gefunden."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Ungültiger einzigartiger Name."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "Ungültige Produkt-GUID."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Ungültige Verleger-GUID."
+
+#~ msgid "Invalid background color."
+#~ msgstr "Ungültige Hintergrundfarbe."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "Ungültige Abmessungen des Store-Logos (sollte 50x50 sein)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "Ungültige Abmessungen für 44x44-Quadratlogo (sollte 44x44 sein)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "Ungültige Abmessungen für 71x71-Quadratlogo (sollte 71x71 sein)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "Ungültige Abmessungen für 150x150-Quadratlogo (sollte 150x150 sein)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "Ungültige Abmessungen für 310x310-Quadratlogo (sollte 310x310 sein)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "Ungültige Abmessungen für 310x150-Breitlogo (sollte 310x150 sein)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr "Ungültige Abmessungen für Startbildschirm (sollte 620x300 sein)."
+
+#, fuzzy
+#~ msgid "RAW Mode"
+#~ msgstr "Roh-Modus"
+
#~ msgid "Node From Scene"
#~ msgstr "Node aus Szene"
@@ -7494,9 +8223,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Suchbegriff wurde %d mal ersetzt."
-#~ msgid "Please save the scene first."
-#~ msgstr "Bitte speichere die Szene zuerst."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Speichere übersetzbare Zeichenketten"
@@ -7709,9 +8435,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Skript-Schlüssel (256 Bit hexadezimal):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "Exportiere PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "Exportiere Projekt-PCK"
@@ -7778,9 +8501,6 @@ msgstr ""
#~ msgid "Load Layout"
#~ msgstr "Layout Laden"
-#~ msgid "Scale Region Editor"
-#~ msgstr "Skalierungsbegrenzungseditor"
-
#~ msgid "Binds (Extra Params):"
#~ msgstr "Bindungen (Extra Parameter):"
diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po
index 15b70b2172..4e40c4c9bb 100644
--- a/editor/translations/de_CH.po
+++ b/editor/translations/de_CH.po
@@ -145,7 +145,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -378,7 +379,8 @@ msgstr "Datei(en) öffnen"
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -389,9 +391,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr ""
@@ -465,7 +467,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -528,17 +530,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -554,7 +555,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -566,7 +567,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -719,14 +720,14 @@ msgstr "Verbindung zu Node:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -831,7 +832,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -911,12 +912,183 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Projekt exportieren"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Autoplay Umschalten"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Bild einfügen"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Node(s) duplizieren"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Bild bewegen/einfügen"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -930,21 +1102,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1047,6 +1242,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1124,6 +1323,22 @@ msgstr "Alle Dateien (*)"
msgid "Open"
msgstr "Öffnen"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Datei öffnen"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Datei(en) öffnen"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Verzeichnis öffnen"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Datei oder Verzeichnis öffnen"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1249,6 +1464,14 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1265,7 +1488,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1315,6 +1538,11 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Ohne eine Szene kann das nicht funktionieren."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1433,11 +1661,12 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Ja"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Datei speichern"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1450,9 +1679,17 @@ msgid "No"
msgstr "Node"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Ja"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Ohne eine Szene kann das nicht funktionieren."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr ""
@@ -1462,12 +1699,9 @@ msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr ""
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Ohne eine Szene kann das nicht funktionieren."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1490,9 +1724,28 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Datei speichern"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1500,6 +1753,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1532,6 +1801,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1548,6 +1822,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1597,10 +1875,6 @@ msgstr "Neue Szene speichern als..."
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1885,6 +2159,10 @@ msgstr "Node"
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1894,26 +2172,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Projekt exportieren"
@@ -1934,9 +2196,18 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Script hinzufügen"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2039,6 +2310,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2176,10 +2457,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2188,6 +2485,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Szene kann nicht gespeichert werden."
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Szene kann nicht gespeichert werden."
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2264,6 +2575,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2275,10 +2592,29 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Oberfläche %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2317,6 +2653,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Datei(en) öffnen"
@@ -2505,6 +2849,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Oberfläche %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3097,6 +3445,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Node Filter editieren"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3410,6 +3763,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3442,10 +3796,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3556,11 +3906,6 @@ msgstr "Bitte nur ein Node selektieren."
msgid "Change default type"
msgstr "Typ ändern"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Okay"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3598,6 +3943,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3637,6 +3990,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Script hinzufügen"
@@ -3647,11 +4012,28 @@ msgid "Remove point"
msgstr "Ungültige Bilder löschen"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Ungültige Bilder löschen"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3676,6 +4058,12 @@ 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 ""
@@ -3967,6 +4355,11 @@ msgid "Load Emission Mask"
msgstr "Emissions-Maske laden"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4287,6 +4680,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4311,6 +4710,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4363,6 +4766,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4395,6 +4802,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4458,6 +4869,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4504,6 +4919,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Bild einfügen"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4809,93 +5229,101 @@ msgid "Animation Key Inserted."
msgstr "Animationsbild eingefügt."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Typ ändern"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Surface Changes"
+msgstr "Oberfläche %d"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Typ ändern"
+msgid "View Environment"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Surface Changes"
-msgstr "Oberfläche %d"
+msgid "View Gizmos"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Down"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4903,6 +5331,18 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Selektiere Node(s) zum Importieren aus"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5020,6 +5460,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5148,6 +5589,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5205,6 +5650,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Ungültige Bilder löschen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Ungültige Bilder löschen"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5272,7 +5727,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5294,11 +5749,23 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5334,10 +5801,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5397,7 +5860,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5446,6 +5909,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "Exportiere das Projekt PCK"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5485,10 +5965,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Existierendes Projekt importieren"
@@ -5533,6 +6009,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5547,10 +6036,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5579,255 +6064,287 @@ msgstr "Ungültige Bilder löschen"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Neues Projekt erstellen"
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Taste "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Taste drücken.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change"
+msgstr "Typ ändern"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Node(s) löschen"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Projekteinstellungen"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5869,6 +6386,11 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "Node(s) löschen"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "New Script"
msgstr "Script hinzufügen"
@@ -5882,6 +6404,11 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Selektiere Node(s) zum Importieren aus"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "TimeScale-Node"
@@ -5977,6 +6504,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Okay"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6021,10 +6553,6 @@ msgid "Delete Node(s)?"
msgstr "Node(s) löschen?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Ohne eine Szene kann das nicht funktionieren."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6037,6 +6565,18 @@ msgid "Save New Scene As.."
msgstr "Neue Szene speichern als..."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6079,6 +6619,14 @@ msgid "Edit Connections"
msgstr "Connections editieren"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Node(s) löschen"
@@ -6132,6 +6680,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Node erstellen"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6139,6 +6692,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6170,10 +6731,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6211,31 +6768,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6243,6 +6776,11 @@ msgid "Select a Node"
msgstr ""
#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Fehler beim Instanzieren der %s Szene"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
msgstr ""
@@ -6252,6 +6790,10 @@ msgid "Error loading script from %s"
msgstr "Fehler beim Instanzieren der %s Szene"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6292,10 +6834,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6463,6 +7001,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6544,6 +7086,126 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Delete Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Node erstellen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Neues Projekt erstellen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Projekteinstellungen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Datei(en) öffnen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6575,6 +7237,28 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Signal Arguments"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Typ ändern"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Ungültige Bilder löschen"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr ""
@@ -6616,36 +7300,24 @@ msgid "Add Signal"
msgstr "Script hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Remove Variable"
-msgstr "Ungültige Bilder löschen"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
+msgid "Change Expression"
+msgstr "Typ ändern"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Remove Signal"
-msgstr "Ungültige Bilder löschen"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr ""
+msgid "Add Node"
+msgstr "Node"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Change Expression"
-msgstr "Typ ändern"
+msgid "Remove VisualScript Nodes"
+msgstr "Ungültige Bilder löschen"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Add Node"
-msgstr "Node"
+msgid "Duplicate VisualScript Nodes"
+msgstr "Node(s) duplizieren"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -6690,6 +7362,26 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Typ ändern"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Node(s) entfernen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Ungültige Bilder löschen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Verbindung zu Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6719,6 +7411,56 @@ msgstr ""
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Input Value"
+msgstr "Typ ändern"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Node erstellen"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Ungültige Bilder löschen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Variable"
+msgstr "Ungültige Bilder löschen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Script hinzufügen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Signal"
+msgstr "Ungültige Bilder löschen"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Base Type:"
msgstr "Typ ändern"
@@ -6740,11 +7482,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change"
-msgstr "Typ ändern"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6820,14 +7557,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6848,78 +7577,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Error creating the signature object."
-msgstr "Fehler beim Schreiben des Projekts PCK!"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7014,6 +7671,13 @@ msgstr ""
"PathFollow2D funktioniert nur, wenn sie als Unterobjekt eines Path2D Nodes "
"gesetzt wird."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7041,17 +7705,32 @@ msgstr ""
"VisibilityEnable2D funktioniert am besten, wenn es ein Unterobjekt erster "
"Ordnung der bearbeiteten Hauptszene ist."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7065,6 +7744,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7080,6 +7772,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7098,7 +7797,7 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr "Node erstellen"
#: scene/gui/color_picker.cpp
@@ -7113,22 +7812,6 @@ msgstr "Alert!"
msgid "Please Confirm..."
msgstr "Bitte bestätigen..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Datei öffnen"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Datei(en) öffnen"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Verzeichnis öffnen"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Datei oder Verzeichnis öffnen"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7147,7 +7830,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7161,6 +7844,10 @@ msgid ""
"texture to some node for display."
msgstr ""
+#, fuzzy
+#~ msgid "Error creating the signature object."
+#~ msgstr "Fehler beim Schreiben des Projekts PCK!"
+
#~ msgid "Node From Scene"
#~ msgstr "Node von Szene"
@@ -7207,11 +7894,5 @@ msgstr ""
#~ msgid "Export all files in the project directory."
#~ msgstr "Exportiere alle Dateien in das Projektverzeichnis."
-#~ msgid "Export Project PCK"
-#~ msgstr "Exportiere das Projekt PCK"
-
-#~ msgid "Project Export"
-#~ msgstr "Projekt exportieren"
-
#~ msgid "Insert Keys (Ins)"
#~ msgstr "Bilder (innerhalb) einfügen"
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 9821ef4e01..7227b0ec2d 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -140,7 +140,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -372,7 +373,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -383,9 +385,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr ""
@@ -458,7 +460,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -519,17 +521,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -545,7 +546,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -557,7 +558,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -709,14 +710,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -821,7 +822,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -901,12 +902,178 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -920,21 +1087,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1037,6 +1227,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1114,6 +1308,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1239,6 +1449,14 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1255,7 +1473,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1305,6 +1523,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1423,11 +1645,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1439,23 +1661,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1479,9 +1705,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1489,6 +1733,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1521,6 +1781,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1537,6 +1802,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1585,10 +1854,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1868,6 +2133,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1877,26 +2146,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1917,9 +2170,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2020,6 +2281,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2155,10 +2426,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2167,6 +2454,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2243,6 +2542,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2254,9 +2559,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2296,6 +2620,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2482,6 +2814,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3063,6 +3399,10 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3374,6 +3714,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3406,10 +3747,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3518,11 +3855,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3560,6 +3892,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3599,6 +3939,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
msgstr ""
@@ -3607,11 +3959,27 @@ msgid "Remove point"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+msgid "Remove Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3636,6 +4004,12 @@ 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 ""
@@ -3925,6 +4299,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4241,6 +4620,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4265,6 +4650,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4317,6 +4706,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4349,6 +4742,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4412,6 +4809,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4458,6 +4859,10 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Delete Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4762,91 +5167,99 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4854,6 +5267,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4970,6 +5394,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5098,6 +5523,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5155,6 +5584,14 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5222,7 +5659,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5244,11 +5681,23 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5284,10 +5733,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5347,7 +5792,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5394,6 +5839,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5430,10 +5891,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5478,6 +5935,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5492,10 +5962,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5523,254 +5989,283 @@ msgstr ""
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5811,6 +6306,10 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5823,6 +6322,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr ""
@@ -5918,6 +6421,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5961,10 +6469,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5977,6 +6481,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6019,6 +6535,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6069,6 +6593,10 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6076,6 +6604,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6107,10 +6643,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6147,35 +6679,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6187,6 +6699,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6227,10 +6743,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6395,6 +6907,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6476,6 +6992,122 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Delete Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6507,63 +7139,63 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
+msgid "Change Signal Arguments"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
+msgid "Change Argument Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
+msgid "Change Argument name"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
+msgid "Set Variable Default Value"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
+msgid "Set Variable Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
+msgid "Functions:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
+msgid "Variables:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
+msgid "Name is not a valid identifier:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
+msgid "Name already in use by another func/var/signal:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
+msgid "Rename Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
+msgid "Rename Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
+msgid "Rename Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Add Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
+msgid "Add Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
+msgid "Add Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6575,6 +7207,14 @@ msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6615,6 +7255,22 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Move Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6643,6 +7299,50 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6663,10 +7363,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6740,14 +7436,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6768,77 +7456,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6917,6 +7534,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6939,17 +7563,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -6963,6 +7602,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -6978,6 +7630,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -6994,7 +7653,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7009,22 +7668,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7043,7 +7686,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
diff --git a/editor/translations/el.po b/editor/translations/el.po
index bd95d6e6f6..21adc08c3f 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-06-24 22:14+0000\n"
+"PO-Revision-Date: 2017-06-29 17:12+0000\n"
"Last-Translator: gtsiam <gtsiam@windowslive.com>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/"
"el/>\n"
@@ -145,7 +145,8 @@ msgstr "Πήγαινε στο επόμενο βήμα"
msgid "Goto Prev Step"
msgstr "Πήγαινε στο Ï€ÏοηγοÏμενο βήμα"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "ΓÏαμμική"
@@ -359,21 +360,19 @@ msgstr "Αλλαγή τιμής πίνακα"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "ΔωÏεάν"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "Έκδοση:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "ΣταθεÏές:"
+msgstr "ΠεÏιεχόμενα:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr " ΑÏχεία"
+msgstr "ΠÏοβολή αÏχείων"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -381,7 +380,8 @@ msgstr " ΑÏχεία"
msgid "Description:"
msgstr "ΠεÏιγÏαφή:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Εγκατάσταση"
@@ -392,161 +392,153 @@ msgstr "Εγκατάσταση"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Κλείσιμο"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "Δεν είναι δυνατή η επίλυση του ονόματος του κεντÏÎ¹ÎºÎ¿Ï Ï…Ï€Î¿Î»Î¿Î³Î¹ÏƒÏ„Î®:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "Δεν είναι δυνατή η επίλυση."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Σφάλμα σÏνδεσης, παÏακαλώ ξαναπÏοσπαθήστε."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "ΣÏνδεση.."
+msgstr "Δεν ήταν δυνατή η σÏνδεση."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "ΣÏνδεση στον κόμβο:"
+msgstr "Δεν ήταν δυνατή η σÏνδεση στον κεντÏικό υπολογιστή:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "Δεν λήφθηκε απόκÏιση από τον κεντÏικό υπολογιστή:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Δεν λήφθηκε απόκÏιση."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "Ζητήθηκε άγνωστη μοÏφή αÏχείου:"
+msgstr "Το αίτημα απέτυχε, κώδικας επιστÏοφής:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Το αίτημα απέτυχε."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "Το αίτημα απέτυχε, πάÏα πολλές ανακατευθήνσεις"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "Î’Ïόχος ανακατευθήνσεων."
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Απέτυχε:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
+"Εσφαλμένος κωδικός κατακεÏματισμοÏ, θα θεωÏηθεί ότι το αÏχείο έχει αλοιωθεί."
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "Αναμενόμενο:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "Δοσμένο:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "Η δοκιμή κατακεÏÎ¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï sha256 απέτυχε"
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Σφάλμα λήψης:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Επιτυχία!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Λήψη:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "Αποθήκευση..."
+msgstr "Επίλυση..."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
msgstr "ΣÏνδεση.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "Δοκιμιμαστικά"
+msgstr "Γίνεται αίτημα.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "Σφάλμα κατά την αποθήκευση πόÏου!"
+msgstr "Σφάλμα κατά την Ï€Ïαγματοποίηση αιτήματος"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "ΑνενεÏγό"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Ξαναδοκίμασε"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Download Error"
-msgstr "Λήψη"
+msgstr "Σφάλμα λήψης"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Η λήψη είναι ήδη σε εξέλιξη!"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "ΠÏώτο"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "ΠÏοηγοÏμενο"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "Επόμενο"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "ΠÏοηγοÏμενο"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "Όλα"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Αναζήτηση:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Αναζήτηση"
@@ -562,7 +554,7 @@ msgstr "Αναζήτηση"
msgid "Import"
msgstr "Εισαγωγή"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "ΠÏόσθετα"
@@ -574,7 +566,7 @@ msgstr "Ταξινόμηση:"
msgid "Reverse"
msgstr "ΑντιστÏοφή"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "ΚατηγοÏία:"
@@ -600,7 +592,7 @@ msgstr "Δοκιμιμαστικά"
#: editor/asset_library_editor_plugin.cpp
msgid "Assets ZIP File"
-msgstr "ΑÏχείο ZIP του Asset"
+msgstr "ΑÏχείο ZIP των Asset"
#: editor/call_dialog.cpp
msgid "Method List For '%s':"
@@ -728,14 +720,14 @@ msgstr "ΣÏνδεση στον κόμβο:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "ΠÏοσθήκη"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "ΑφαίÏεση"
@@ -844,7 +836,7 @@ msgid "Resource"
msgstr "ΠόÏος"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "ΔιαδÏομή"
@@ -926,12 +918,196 @@ msgstr "ΕξεÏευνητής αχÏησιμοποίητων πόÏων"
msgid "Delete selected files?"
msgstr "ΔιαγÏαφή επιλεγμένων αÏχείων;"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "ΔιαγÏαφή"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "ΕυχαÏιστίες από την κοινότητα της Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "ΕυχαÏιστώ!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "ΣυνεισφέÏοντες στην Godot Engine"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "ΣυγγÏαφέας:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "ΔιαχειÏιστής"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "ΠÏογÏαμματιστές"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "ΔιαχειÏιστής"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "ΠÏογÏαμματιστές"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "ΠεÏιεχόμενα:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "ΠεÏιεχόμενα:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Ασυμπίεστο"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "ΠÏοσθήκη συμβάντος"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "ΔιαγÏαφή επιλεγμένου"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Επιλογές υπο-σκηνής"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Διπλασιασμός"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "ΔιαγÏαφή επιλεγμένου"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "ΠÏοσθήκη διαÏλου"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "ΔιαγÏαφή διάταξης"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "ΑναπαÏαγωγή κίνησης"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "ΕνέÏγεια μετακίνησης"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "Αποθήκευση διάταξης διαÏλων ήχου ÏŽÏ‚.."
@@ -945,23 +1121,53 @@ msgid "Open Audio Bus Layout"
msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"ΆκυÏη επέκταση αÏχείου.\n"
+"ΠαÏακαλώ χÏησιμοποιήστε .font."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "ΠÏοσθήκη διαÏλου"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "ΔημιουÏγία νέου πόÏου"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "ΦόÏτωσε"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "ΦόÏτωσε υπάÏχων πόÏο στη μνήμη και επεξεÏγάσου τον."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Αποθήκευση ώς"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Αποθήκευση διάταξης διαÏλων ήχου ÏŽÏ‚.."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "ΠÏοεπιλογή"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Μη έγκυÏο όνομα."
@@ -1064,6 +1270,11 @@ msgid "Updating scene.."
msgstr "ΕνημέÏωση σκηνής.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "ΠαÏακαλοÏμε αποθηκεÏστε την σκηνή Ï€Ïώτα."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Επιλέξτε ένα λεξικό"
@@ -1129,7 +1340,7 @@ msgstr "Το αÏχείο υπάÏχει. Θέλετε να το αντικατÎ
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
-msgstr "Όλες αναγνωÏίστηκαν"
+msgstr "Όλα τα αναγνωÏισμένα"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Files (*)"
@@ -1141,6 +1352,22 @@ msgstr "Όλα τα αÏχεία (*)"
msgid "Open"
msgstr "Άνοιγμα"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Άνοιγμα αÏχείου"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Άνοιγμα αÏχείου/-ων"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Άνοιγμα λεξικοÏ"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Άνοιγμα αÏχείου ή λεξικοÏ"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1218,7 +1445,7 @@ msgstr "ΣάÏωση πηγών"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr "(Επαν)εισαγωγή πόÏων"
+msgstr "(Επαν)εισαγωγή"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1266,6 +1493,15 @@ msgid "Signals:"
msgstr "Σήματα:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Κινήσεις"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ΣταθεÏές:"
@@ -1282,7 +1518,8 @@ msgid "Search Text"
msgstr "Αναζήτηση κειμένου"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Έξοδος:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1332,6 +1569,11 @@ msgid "Creating Thumbnail"
msgstr "ΔημιουÏγία μικÏογÏαφίας"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1407,15 +1649,14 @@ msgid "There is no defined scene to run."
msgstr "Δεν υπάÏχει καθοÏισμένη σκηνή για εκτελέση."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"Η κÏÏια σκηνή δεν έχει καθοÏιστεί, θέλετε να επιλέξετε μία;\n"
+"Δεν έχει καθοÏιστεί κÏÏια σκηνή, θέλετε να επιλέξετε μία;\n"
"ΜποÏείτε να την αλλάξετε αÏγότεÏα στις «Ρυθμίσεις έÏγου» κάτω από την "
-"κατηγοÏία «εφαÏμογή»."
+"κατηγοÏία «ΕφαÏμογή»."
#: editor/editor_node.cpp
msgid ""
@@ -1465,26 +1706,34 @@ msgid "Quick Open Script.."
msgstr "ΓÏήγοÏη άνοιγμα δεσμής ενεÏγειών..."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Îαι"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Αποθήκευση αÏχείου"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Κλείσιμο σκηνής; (Οι μη αποθηκευμένες αλλαγές θα χαθοÏν)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Αποθήκευση σκηνή ως..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Κόμβος"
+msgstr "Όχι"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Îαι"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Αυτή η σκηνή δεν έχει αποθηκευτεί. Αποθήκευση Ï€Ïιν από την εκτέλεση;"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Εξαγωγή βιβλιοθήκης πλεγμάτων"
@@ -1494,12 +1743,9 @@ msgid "Export Tile Set"
msgstr "Εξαγωγή σετ πλακιδίων"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Έξοδος"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "ΤεÏματισμός του Ï€ÏογÏάμματος επεξεÏγασίας;"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1525,18 +1771,52 @@ msgid "Quick Run Scene.."
msgstr "ΓÏήγοÏη εκτέλεση σκηνής..."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Έξοδος"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "ΤεÏματισμός του Ï€ÏογÏάμματος επεξεÏγασίας;"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "ΔιαχειÏιστής"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Αποθήκευση αÏχείου"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Θέλετε να ανοίξετε τον διαχειÏιστή έÏγου; \n"
-"(Οι μη αποθηκευμένες αλλαγές θα χαθοÏν)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Επιλογή κÏÏιας σκηνής"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1575,6 +1855,11 @@ msgstr "Αποθήκευση διάταξης"
msgid "Delete Layout"
msgstr "ΔιαγÏαφή διάταξης"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "ΠÏοεπιλογή"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Εναλλαγή καÏτέλας σκηνής"
@@ -1591,6 +1876,11 @@ msgstr "%d πεÏισσότεÏα αÏχεία ή φάκελοι"
msgid "Distraction Free Mode"
msgstr "ΛειτουÏγία χωÏίς διάσπαση Ï€Ïοσοχής"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "ΛειτουÏγία χωÏίς διάσπαση Ï€Ïοσοχής"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Σκηνή"
@@ -1639,10 +1929,6 @@ msgstr "Αποθήκευση όλων των σκηνών"
msgid "Close Scene"
msgstr "Κλείσιμο σκηνής"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Κλείσιμο και μετάβαση στην Ï€ÏοηγοÏμενη σκηνή"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Άνοιγμα Ï€Ïόσφατων"
@@ -1679,9 +1965,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "Λοιπά έÏγα ή εÏγαλεία για όλη τη σκηνή."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Îέο έÏγο"
+msgstr "ΈÏγο"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1796,9 +2081,8 @@ msgstr ""
"αποτελεσματικό με δικτυωμένο σÏστημα αÏχείων."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "ΕπεξεÏγασία"
+msgstr "ΕπεξεÏγαστής"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1818,24 +2102,23 @@ msgstr "ΔιαχείÏιση Ï€ÏοτÏπων εξαγωγής"
#: editor/editor_node.cpp
msgid "Help"
-msgstr ""
+msgstr "Βοήθεια"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Classes"
msgstr "Κλάσεις"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Κλείσιμο τεκμηÏίωσης"
+msgstr "ΗλεκτÏονική τεκμηÏίωση"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "ΕÏώτηση&Απάντηση"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "ΔιαχείÏιση Ï€Ïοβλημάτων"
#: editor/editor_node.cpp
msgid "About"
@@ -1945,6 +2228,10 @@ msgstr "Κόμβος"
msgid "Output"
msgstr "Έξοδος"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Επανεισαγωγή"
@@ -1954,26 +2241,10 @@ msgid "Update"
msgstr "ΕνημέÏωση"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "ΕυχαÏιστίες από την κοινότητα της Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "ΕυχαÏιστώ!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Εισαγωγή Ï€ÏοτÏπων από αÏχείο ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Εξαγωγή έÏγου"
@@ -1994,38 +2265,41 @@ msgid "Open & Run a Script"
msgstr "Άνοιξε & ΤÏέξε μία δεσμή ενεÏγειών"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Îέα κληÏονομημένη σκηνή.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Σφάλματα φόÏτωσης"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Επιλογή"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Άνοιγμα στον επεξεÏγαστή"
+msgstr "Άνοιγμα 2D επεξεÏγαστή"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Άνοιγμα στον επεξεÏγαστή"
+msgstr "Άνοιγμα 3D επεξεÏγαστή"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Άνοιγμα στον επεξεÏγαστή"
+msgstr "Άνοιγμα επεξεÏγαστή δεσμής ενεÏγειών"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "Εξαγωγή βιβλιοθήκης"
+msgstr "Άνοιγμα βιβλιοθήκης"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Άνοιγμα στον επεξεÏγαστή"
+msgstr "Άνοιγμα του επόμενου επεξεÏγαστή"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Άνοιγμα στον επεξεÏγαστή"
+msgstr "Άνοιγμα του Ï€ÏοηγοÏμενου επεξεÏγαστή"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2103,6 +2377,16 @@ msgstr "Επανεισαγωγή"
msgid "Re-Import Changed Resources"
msgstr "Επανεισαγωγή Ï„Ïοποπιημένων πόÏων"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "ΓÏάψτε τη λογική σας στη μέθοδο _run()."
@@ -2242,10 +2526,28 @@ msgid "Cannot navigate to '"
msgstr "ΑδÏνατη η πλοήγηση στο '"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Αποθήκευση & Επανεισαγωγή"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Πηγή:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Ίδια αÏχεία πηγής και Ï€ÏοοÏισμοÏ, παÏάλειψη ενέÏγειας."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Ίδιες διαδÏομές πηγής και Ï€ÏοοÏισμοÏ, παÏάλειψη ενέÏγειας."
@@ -2254,6 +2556,20 @@ msgid "Can't move directories to within themselves."
msgstr "ΑδÏνατη η μετακίνηση καταλόγων μέσα στους εαυτοÏÏ‚ τους."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Σφάλμα κατά την φόÏτωση εικόνας:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Σφάλμα κατά την εισαγωγή:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "ΑδÏνατη η λειτουÏγία στο '..'"
@@ -2332,6 +2648,12 @@ msgstr ""
"κόμβου."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Μετακίνηση"
@@ -2343,10 +2665,31 @@ msgstr "ΠÏοσθήκη σε Ομάδα"
msgid "Remove from Group"
msgstr "ΚατάÏγηση από την ομάδα"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Επιφάνεια %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Εισαγωγή σκηνής..."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Εισαγωγή 3D σκηνής"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2387,6 +2730,14 @@ msgid "Saving.."
msgstr "Αποθήκευση..."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr " ΑÏχεία"
@@ -2473,13 +2824,12 @@ msgid "No target font resource!"
msgstr "Δε δόθηκε πόÏος γÏαμματοσειÏάς Ï€ÏοοÏισμοÏ!"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
"ΆκυÏη επέκταση αÏχείου.\n"
-"ΠαÏακαλώ χÏησιμοποιήστε .fnt."
+"ΠαÏακαλώ χÏησιμοποιήστε .font."
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2578,6 +2928,10 @@ msgstr "Πηγαία πλέγματα:"
msgid "Mesh"
msgstr "Πλέγμα"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Επιφάνεια %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Δεν υπάÏχουν δείγματα για εισαγωγή!"
@@ -2961,9 +3315,8 @@ msgid "Compress"
msgstr "Συμπίεση"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "ΠÏόσθεσε στο έÏγο (godot.cfg)"
+msgstr "ΠÏόσθεσε στο έÏγο (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3166,6 +3519,11 @@ msgid "New name:"
msgstr "Îέο όνομα:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "ΕπεξεÏγασία φίλτÏων κόμβων"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Κλιμάκωση:"
@@ -3483,6 +3841,7 @@ msgstr "ΕπαναφέÏει την δυνατότητα των παιδιών Ï
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "ΕπεξεÏγασία"
@@ -3515,10 +3874,6 @@ msgid "Use Pixel Snap"
msgstr "ΧÏήση κουμπώματος εικονοστοιχείου"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Επικάλυψη γονέα"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Σκελετός.."
@@ -3628,11 +3983,6 @@ msgstr "Αυτή η λειτουÏγία απαιτεί έναν μόνο επι
msgid "Change default type"
msgstr "Αλλαγή Ï€Ïοεπιλεγμένου Ï„Ïπου"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Εντάξει"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3672,6 +4022,14 @@ msgstr "ΕπεγεÏγασία πολυγώνου (ΑφαίÏεση σημείο
msgid "Create a new polygon from scratch."
msgstr "ΔημιουÏγία νέου πολυγώνου από την αÏχή."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "ΔημιουÏγία πολυγώνου 3D"
@@ -3712,22 +4070,53 @@ msgstr "ΑναπÏοσαÏμογή από την σκηνή"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Add point"
-msgstr "ΠÏοσθήκη εισόδου"
+msgid "Modify Curve Point"
+msgstr "ΤÏοποπίηση καμπÏλης"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "ΤÏοποποίηση χάÏτη καμπÏλης"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Load Curve Preset"
+msgstr "ΦόÏτωση Ï€ÏοκαθοÏισμένης"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "ΠÏοσθήκη σημείου"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "ΑφαίÏεση σημείου διαδÏομής"
+msgstr "ΑφαίÏεση σημείου"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "ΓÏαμμική"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Right linear"
+msgstr "Δεξιά όψη"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "ΦόÏτωση πόÏου"
+msgstr "ΦόÏτωση Ï€ÏοκαθοÏισμένης"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
-msgstr "ΤÏοποπίηση καμπÏλης"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "ΑφαίÏεση σημείου διαδÏομής"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3751,6 +4140,12 @@ 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 "ΔημιουÏγία πολυγώνου εμποδίου"
@@ -4014,13 +4409,14 @@ msgstr "ΕκκαθάÏιση μάσκας εκπομπής"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
msgstr "ΔημιουÏία AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"Ο οÏισμός σημείου είναι δυνατός μόνο σε ένα υλικό επεξεÏγασίας "
+"ParticlesMaterial"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4036,36 +4432,38 @@ msgstr "ΟÏισμός μάσκας εκπομπής"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "ΔημιουÏγία οÏθογωνίου οÏατότητας"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
msgstr "ΦόÏτωση μάσκας εκπομπής"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "ΚοÏυφές"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "ΑÏιθμός δημιουÏγημένων σημείων:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "Μέσος ΧÏόνος (sec)"
+msgstr "ΧÏόνος παÏαγωγής (sec):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "ΟÏισμός μάσκας εκπομπής"
+msgstr "Μάσκα εκπομπής"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "ΔημιουÏγία από σκηνή"
+msgstr "ΚαταγÏαφή από εικονοστοιχείο"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "Σημεία εκπομπής:"
+msgstr "ΧÏώματα εκπομπής"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4128,23 +4526,20 @@ msgid "Emission Source: "
msgstr "Πηγή εκπομπής: "
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "ΔημιουÏία AABB"
+msgstr "ΔημιουÏία AABB οÏατότητας"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
msgstr "ΑφαίÏεση σημείου από την καμπÏλη"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "Μετακίνηση ελεγκτή εξόδου στην καμπÏλη"
+msgstr "ΑφαίÏεση στοιχείου ελέγχου εξόδου από την καμπÏλη"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "ΑφαίÏεση σημείου από την καμπÏλη"
+msgstr "ΑφαίÏεση στοιχείου ελέγχου εισόδου από την καμπÏλη"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4202,14 +4597,12 @@ msgid "Remove Path Point"
msgstr "ΑφαίÏεση σημείου διαδÏομής"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "Μετακίνηση ελεγκτή εξόδου στην καμπÏλη"
+msgstr "ΑφαίÏεση σημείου ελέγχου εξόδου"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "Μετακίνηση ελεγκτή εισόδου στην καμπÏλη"
+msgstr "ΑφαίÏεση σημείου ελέγχου εισόδου"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4364,9 +4757,14 @@ msgid "Pitch"
msgstr "Τόνος"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "ΕκκαθάÏιση οστών"
+msgstr "ΕκκαθάÏιση Ï€Ïόσφατων αÏχείων"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4393,6 +4791,10 @@ msgid "Save Theme As.."
msgstr "Αποθήκευση θέματος ως.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Επόμενη δεσμή ενεÏγειών"
@@ -4445,6 +4847,11 @@ msgid "Close All"
msgstr "Κλείσιμο όλων"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Εναλλαγή αγαπημένου"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4477,6 +4884,11 @@ msgid "Keep Debugger Open"
msgstr "ΔιατήÏησε τον αποσφαλματωτή ανοιχτό"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Άνοιγμα του επόμενου επεξεÏγαστή"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "ΠαÏάθυÏο"
@@ -4489,9 +4901,8 @@ msgid "Move Right"
msgstr "Μετακίνηση δεξιά"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "Αναζήτηση στην τεκμηÏίωση αναφοÏάς."
+msgstr "Άνοιγμα ηλεκτÏονικής τεκμηÏίωσης της Godot"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4545,25 +4956,28 @@ msgstr ""
"στην οποία ανοίκουν είναι φοÏτωμένη"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Επιλογή χÏώματος"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "ΜετατÏοπή Εικόνων"
+msgstr "ΜετατÏοπή κεφαλαίων/πεζών"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Κεφαλαία"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Πεζά"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Κεφαλαιοποίηση"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4592,6 +5006,11 @@ msgid "Move Down"
msgstr "Μετακίνηση κάτω"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "ΔιαγÏαφή σημείου"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "στοιχειοθέτηση αÏιστεÏά"
@@ -4617,11 +5036,11 @@ msgstr "ΠεÏικοπή ÎºÎ±Ï„Î±Î»Î·ÎºÏ„Î¹ÎºÎ¿Ï ÎºÎµÎ½Î¿Ï Î´Î¹Î±ÏƒÏ„Î®Î¼Î±Ï„Î
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "ΜετατÏοπή εσοχής σε κενά"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "ΜετατÏοπή εσοχής σε στηλοθέτες"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4645,14 +5064,12 @@ msgid "Goto Previous Breakpoint"
msgstr "Πήγαινε στο Ï€ÏοηγοÏμενο σημείο διακοπής"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "ΜετατÏοπή σε..."
+msgstr "ΜετατÏοπή σε κεφαλαία"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "ΜετατÏοπή σε..."
+msgstr "ΜετατÏοπή σε πεζά"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -4679,7 +5096,7 @@ msgstr "Βοήθεια ανάλογα με τα συμφÏαζόμενα"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "ΠÏόγÏαμμα σκίασης"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -4807,7 +5224,7 @@ msgstr "ΠÏοσθήκη κόμβου γÏαφήματος"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
-msgstr "ΟÏθογώνια"
+msgstr "ΑξονομετÏική"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective"
@@ -4899,63 +5316,28 @@ msgid "Animation Key Inserted."
msgstr "Το κλειδί κίνησης έχει εισαχθεί."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Πήγαινε μπÏοστά"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "ΑντίστÏοφα"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Ροδέλα κάτω."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "ΖωγÏαφισμένα αντικείμενα"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "ΕνημέÏωση αλλαγών"
+msgstr "Αλλαγές υλικοÏ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "ΕνημέÏωση αλλαγών"
+msgstr "Αλλαγές Ï€ÏογÏάμματος σκίασης"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "ΕνημέÏωση αλλαγών"
+msgstr "Αλλαγές επιφάνειας"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Κλήσεις σχεδίασης"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "Ιδιότητες:"
+msgstr "ΚοÏυφές"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -4974,33 +5356,81 @@ msgid "Display Overdraw"
msgstr "Εμφάνιση Ï€ÏÎ¿ÏƒÎ¸ÎµÏ„Î¹ÎºÎ¿Ï ÏƒÏ‡ÎµÎ´Î¹Î±ÏƒÎ¼Î¿Ï"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
-msgstr "Άσκια εμφάνιση"
+msgstr "Εμφάνιση χωÏίς σκιές"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "ΠεÏιβάλλον"
+msgstr "Εμφάνιση πεÏιβάλλοντος"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "ΜαÏαφέτια"
+msgstr "Εμφάνιση μαÏαφετιών"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Εμφάνιση πληÏοφοÏιών"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "ΑκÏοατής ήχου"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "ΕνεÏγοποίηση"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr "ΕλεÏθεÏο κοίταγμα αÏιστεÏά"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr "ΕλεÏθεÏο κοίταγμα δεξιά"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr "ΕλεÏθεÏο κοίταγμα μπÏοστά"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr "ΕλεÏθεÏο κοίταγμα πίσω"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr "ΕλεÏθεÏο κοίταγμα πάνω"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr "ΕλεÏθεÏο κοίταγμα κάτω"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr "ΤαχÏτητα ελεÏθεÏου κοιτάγματος"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "ΠÏοεπισκόπηση"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Διάλογος XForm"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Επιλογή λειτουÏγίας"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+Δεξί κλικ: Επιλογή λίστας βάθους"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "ΛειτουÏγία μετακίνησης (W)"
@@ -5038,7 +5468,7 @@ msgstr "Δεξιά όψη"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal view"
-msgstr "Εναλλαγή ΠÏοοπτικής / ΟÏθογώνιας Ï€Ïοβολής"
+msgstr "Εναλλαγή ΠÏοοπτικής / ΑξονομετÏικής Ï€Ïοβολής"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
@@ -5057,24 +5487,20 @@ msgid "Align Selection With View"
msgstr "Στοίχηση επιλογής με την Ï€Ïοβολή"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Επιλογή"
+msgstr "ΕÏγαλείο επιλογής"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "Μετακίνηση"
+msgstr "ΕÏγαλείο μετακίνησης"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl: ΠεÏιστÏοφή"
+msgstr "ΕÏγαλείο πεÏιστÏοφής"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "Κλιμάκωση:"
+msgstr "ΕÏγαλείο κλιμάκωσης"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5121,6 +5547,7 @@ msgid "View Grid"
msgstr "ΠÏοβολή πλέγματος"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Ρυθμίσεις"
@@ -5249,6 +5676,11 @@ msgid "StyleBox Preview:"
msgstr "ΠÏοεπισκόπηση StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "ΠεÏιοχή υφής"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "ΛειτουÏγία κουμπώματος:"
@@ -5306,6 +5738,16 @@ msgid "Remove Item"
msgstr "ΑφαίÏεση στοιχείου"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "ΑφαίÏεση στοιχείων κλάσης"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "ΑφαίÏεση"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Θέμα"
@@ -5373,7 +5815,7 @@ msgstr "ΚαÏτέλα 2"
msgid "Tab 3"
msgstr "ΚαÏτέλα 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "ΤÏπος:"
@@ -5395,12 +5837,27 @@ msgid "Color"
msgstr "ΧÏώμα"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "ΔιαγÏαφή επιλογής"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Βάψιμο TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Διπλασιασμός"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "ΓÏαμμική"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Κουβάς"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5435,10 +5892,6 @@ msgid "Pick Tile"
msgstr "Επιλογή πλακιδίου"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Επιλογή"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "ΠεÏιστÏοφή 0 μοίÏες"
@@ -5498,7 +5951,7 @@ msgstr "ΔιαγÏαφή διαμόÏφωσης '%s';"
msgid "Presets"
msgstr "ΔιαμοÏφώσεις"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "ΠÏοσθήκη.."
@@ -5549,6 +6002,25 @@ msgid "Make Patch"
msgstr "ΔημιουÏγία ενημέÏωσης"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Υφή"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Λίστα συναÏτήσεων:"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "Εξαγωγή"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν:"
@@ -5561,14 +6033,12 @@ msgid "Invalid project path, the path must exist!"
msgstr "Μη έγκυÏη διαδÏομή έÏγου, η διαδÏομή Ï€Ïέπει να υπάÏχει!"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr "Μη έγκυÏη διαδÏομή έÏγου, το godot.cfg δεν Ï€Ïέπει να υπάÏχει."
+msgstr "Μη έγκυÏη διαδÏομή έÏγου, το project.godot δεν Ï€Ïέπει να υπάÏχει."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr "Μη έγκυÏη διαδÏομή έÏγου, το godot.cfg Ï€Ïέπει να υπάÏχει."
+msgstr "Μη έγκυÏη διαδÏομή έÏγου, το project.godot Ï€Ïέπει να υπάÏχει."
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -5579,19 +6049,14 @@ msgid "Invalid project path (changed anything?)."
msgstr "Μη έγκυÏη διαδÏομή έÏγου (Αλλάξατε τίποτα;)."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr "Δεν ήταν δυνατή η δημιουÏγία του godot.cfg στη διαδÏομή έÏγου."
+msgstr "Δεν ήταν δυνατή η δημιουÏγία του project.godot στη διαδÏομή έÏγου."
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
msgstr "Η εξαγωγή των ακόλουθων αÏχείων από το πακέτο απέτυχε:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Εισαγωγή υπαÏÎºÏ„Î¿Ï Î­Ïγου"
@@ -5636,6 +6101,23 @@ msgid "Are you sure to open more than one project?"
msgstr "Είστε σίγουÏοι πως θέλετε να ανοίξετε πεÏισσότεÏα από ένα έÏγα;"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Δεν έχει καθοÏιστεί κÏÏια σκηνή, θέλετε να επιλέξετε μία;\n"
+"ΜποÏείτε να την αλλάξετε αÏγότεÏα στις «Ρυθμίσεις έÏγου» κάτω από την "
+"κατηγοÏία «ΕφαÏμογή»."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "Είστε σίγουÏοι πως θέλετε να Ï„Ïέξετε πεÏισσότεÏα από ένα έÏγα;"
@@ -5653,10 +6135,6 @@ msgstr ""
"Είστε έτοιμοι να σαÏώσετε %s φακέλους για υπαÏκτά έÏγα Godot. Είστε σίγουÏοι;"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "ΔιαχειÏιστής"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Λίστα έÏγων"
@@ -5677,264 +6155,295 @@ msgid "New Project"
msgstr "Îέο έÏγο"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "ΑφαίÏεση Ï€ÏοτÏπου"
+msgstr "ΠÏότυπα"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "Έξοδος"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Δεν ήταν δυνατή η σÏνδεση."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Κλειδί "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Κουμπί Joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "Άξονας Joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Κουμπί ποντικιοÏ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Μη έγκυÏη ενέÏγεια (Όλα επιτÏέποντα εκτός από το '/' και το ':')."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "Η ενέÏγεια '%s' υπάÏχει ήδη!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Μετονομασία συμβάντος εισόδου"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "ΠÏοσθήκη συμβάντος εισόδου"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Πατήστε ένα κουμπί.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Kουμπί ποντικιοÏ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "ΑÏιστεÏÏŒ κουμπί"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Δεξί κουμπί"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Μεσαίο κουμπί"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Ροδέλα πάνω"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Ροδέλα κάτω"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Κουμπί 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Κουμπί 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Κουμπί 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Κουμπί 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Αλλαγή"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "ΑÏιθμός άξονα Joypad:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Άξονας"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr "ΑÏιθμός ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï Joypad:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "ΠÏοσθήκη συμβάντος ενέÏγειας εισόδου"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "ΔιαγÏαφή συμβάντος ενέÏγειας εισόδου"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr "ΠÏοσθήκη άδειου"
+msgstr "ΠÏοσθήκη συμβάντος"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Συσκευή"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Κουμπί"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "ΑÏιστεÏÏŒ κουμπί."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Δεξί κουμπί."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Μεσαίο κουμπί."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Ροδέλα πάνω."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Ροδέλα κάτω."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "ΠÏοσθέστε ιδιότητα Getter"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Ιδιότητα:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Ρυθμίσεις"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "ΔιαγÏαφή εισόδου"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Σφάλμα κατά την αποθήκευση Ïυθμίσεων."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Οι Ïυθμίσεις αποθηκεÏτικαν εντάξει."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "ΠÏοσθήκη μετάφÏασης"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "ΑφαίÏεση μετάφÏασης"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "ΠÏοσθήκη ανακατεÏθυνσης διαδÏομής"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "ΠÏοσθήκη ανακατεÏθυνσης διαδÏομής πόÏου"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Αλλαγή γλώσσας ανακατεÏθυνσης πόÏων"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "ΑφαίÏεση ανακατεÏθυνσης πόÏου"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "ΑφαίÏεση επιλογής ανακατεÏθυνσης πόÏου"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "Ρυθμίσεις έÏγου (godot.cfg)"
+msgstr "Ρυθμίσεις έÏγου (project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "Γενικά"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Ιδιότητα:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "ΔιαγÏαφή"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "ΑντιγÏαφή σε πλατφόÏμα.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "ΧάÏτης εισόδου"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "ΕνέÏγεια:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Συσκευή:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Δείκτης:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Τοπική Ï€ÏοσαÏμογή"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "ΜεταφÏάσεις"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "ΜεταφÏάσεις:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "ΑνακατευθÏνσεις"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "ΠόÏοι:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "ΑνακατευθÏνσεις ανά πεÏιοχή:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "ΠεÏιοχή"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "Αυτόματη φόÏτωση"
@@ -5975,6 +6484,11 @@ msgid "Assign"
msgstr "Ανάθεση"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Επιλέξτε έναν κόμβο"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Îεα δεσμή ενεÏγειών"
@@ -5987,6 +6501,11 @@ msgid "Error loading file: Not a resource!"
msgstr "Σφάλμα κατά την φόÏτωση αÏχείου: Δεν είναι πόÏος!"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Επιλέξτε κόμβους για εισαγωγή"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr "Επιλέξτε έναν κόμβο"
@@ -6084,6 +6603,11 @@ msgstr "ΟÏίσματα κÏÏιας σκηνής:"
msgid "Scene Run Settings"
msgstr "Ρυθμίσης εκτέλεσης σκηνής"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Εντάξει"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "Δεν υπάÏχει γονέας για να δημιουÏγηθοÏν τα στιγμιότυπα των σκηνών."
@@ -6129,10 +6653,6 @@ msgid "Delete Node(s)?"
msgstr "ΔιαγÏαφή κόμβων;"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr "Δεν είναι δυνατή η εκτέλεση με τον πηγαίο κόμβο."
@@ -6147,6 +6667,18 @@ msgid "Save New Scene As.."
msgstr "Αποθήκευση νέας σκηνής ως.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "ΕπεξεÏγάσιμα παιδιά"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "ΦόÏτωση ως μέσο κÏάτησης θέσης"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "ΑπόÏÏιψη στιγμιοτÏπισης"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Βγάζει νόημα!"
@@ -6181,9 +6713,8 @@ msgid "Error duplicating scene to save it."
msgstr "Σφάλμα κατά τον διπλασιασμό σκηνής για αποθήκευση."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources:"
-msgstr "ΠόÏοι:"
+msgstr "Yπο-ΠόÏοι:"
#: editor/scene_tree_dock.cpp
msgid "Edit Groups"
@@ -6194,6 +6725,14 @@ msgid "Edit Connections"
msgstr "ΕπεξεÏγασία συνδέσεων"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "ΕκκαθάÏιση κληÏονομικότητας"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Άνοιγμα στον επεξεÏγαστή"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "ΔιαγÏαφή Κόμβων"
@@ -6246,6 +6785,11 @@ msgstr ""
"υπάÏχει πηγαίος κόμβος."
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "ΦίλτÏα"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "ΣÏνδεση νέας ή υπαÏκτής δεσμής ενεÏγειών για τον επιλεγμένο κόμβο."
@@ -6253,6 +6797,14 @@ msgstr "ΣÏνδεση νέας ή υπαÏκτής δεσμής ενεÏγειÏ
msgid "Clear a script for the selected node."
msgstr "ΕκκαθάÏιση δεσμής ενεÏγειών για τον επιλεγμένο κόμβο."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "ΕκκαθάÏιση κληÏονομικότητας; (Δεν γίνεται ανέÏαιση!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "ΕκκαθάÏιση!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Εναλλαγή οÏατότητας Spatial"
@@ -6263,56 +6815,59 @@ msgstr "Εναλλαγή οÏατότητας CanvasItem"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "ΠÏοειδοποίηση διαμόÏφωσης κόμβου:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"Ο κόμβος έχει συνδέσεις και ομάδες\n"
+"Πατήστε για να δείξετε την πλατφόÏμα σημάτων."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"Ο κόμβος έχει συνδέσεις\n"
+"Πατήστε για να δείξετε την πλατφόÏμα σημάτων."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Επιλογές ÎµÎ½Ï„Î¿Ï€Î¹ÏƒÎ¼Î¿Ï ÏƒÏ†Î±Î»Î¼Î¬Ï„Ï‰Î½"
+"Ο κόμβος έχει και ομάδες\n"
+"Πατήστε για να δείξετε την πλατφόÏμα σημάτων."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Στιγμιότυπο:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Επόμενη δεσμή ενεÏγειών"
+msgstr "Άνοιγμα δεσμής ενεÏγειών"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"Ο κόμβος είναι κλειδομένος.\n"
+"Πατήστε για ξεκλείδωμα"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Τα παιδιά δεν είναι επιλέξιμα.\n"
+"Πατήστε για να τα κάνετε επιλέξιμα"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "Εναλλαγή οÏατότητας Spatial"
+msgstr "Εναλλαγή οÏατότητας"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6327,32 +6882,9 @@ msgid "Scene Tree (Nodes):"
msgstr "ΔέντÏο σκηνής (Κόμβοι):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "ΕπεξεÏγάσιμα παιδιά"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "ΦόÏτωση ως μέσο κÏάτησης θέσης"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "ΑπόÏÏιψη στιγμιοτÏπισης"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Άνοιγμα στον επεξεÏγαστή"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "ΕκκαθάÏιση κληÏονομικότητας"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "ΕκκαθάÏιση κληÏονομικότητας; (Δεν γίνεται ανέÏαιση!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "ΕκκαθάÏιση!"
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "ΠÏοειδοποίηση διαμόÏφωσης κόμβου:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6360,14 +6892,23 @@ msgstr "Επιλέξτε έναν κόμβο"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Σφάλμα κατά την φόÏτωση εικόνας:"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr "Δεν ήταν δυνατή η δημιουÏγία δεσμής ενεÏγειών στο σÏστημα αÏχείων."
+msgstr ""
+"Σφάλμα - Δεν ήταν δυνατή η δημιουÏγία δεσμής ενεÏγειών στο σÏστημα αÏχείων."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
msgstr "Σφάλμα κατά την φόÏτωση δεσμής ενεÏγειών από %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "Δ/Υ"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Η διαδÏομή είναι άδεια"
@@ -6385,65 +6926,53 @@ msgstr "Μη έγκυÏη επέκταση"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Επιλέχθηκε εσφαλμένη επέκταση"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "ΆκυÏη διαδÏομή."
+msgstr "Μη έγκυÏη διαδÏομή"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "Μη έγκυÏο όνομα κλάσης"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "ΆκυÏο όνομα ιδιότητας δείκτη."
+msgstr "Μη έγκυÏο κληÏονομημένο όνομα ή διαδÏομή γονέα"
#: editor/script_create_dialog.cpp
msgid "Script valid"
-msgstr ""
+msgstr "ΈγκυÏη δεσμή ενεÏγειών"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "Δ/Υ"
+msgstr "ΕπιτÏεπόμενα: a-z, A-Z, 0-9 και _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Ενσωμάτωση δεσμής ενεÏγειών (στο αÏχείο σκηνής)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "ΔημιουÏγία νέας δεσμής ενεÏγειών"
+msgstr "ΔημιουÏγία νέου αÏχείου δεσμής ενεÏγειών"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
-msgstr "ΦόÏτωση υπαÏκτής δεσμής ενεÏγειών"
+msgstr "ΦόÏτωση υπαÏÎºÏ„Î¿Ï Î±Ïχείου δεσμής ενεÏγειών"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "ΚληÏονομεί:"
+msgstr "ΚληÏονομεί"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Όνομα κλάσης:"
+msgstr "Όνομα κλάσης"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "ΑφαίÏεση Ï€ÏοτÏπου"
+msgstr "ΠÏότυπο"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
msgstr "Ενσωματωμένη δεσμή ενεÏγειών"
@@ -6584,6 +7113,10 @@ msgid "Change Light Radius"
msgstr "Αλλαγή διαμέτÏου φωτός"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Αλλαγή εÏÏους πεδίου κάμεÏας"
@@ -6617,7 +7150,7 @@ msgstr "Αλλαγή διαστάσεων ειδοποιητή"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Αλλαγή AABB σωματιδίων"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -6668,6 +7201,137 @@ msgstr "ΆκυÏη μοÏφή Î»ÎµÎ¾Î¹ÎºÎ¿Ï ÏƒÏ„Î¹Î³Î¼Î¹Î¿Ï„Ïπων (Μη έγ
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "ΆκυÏη μοÏφή Î»ÎµÎ¾Î¹ÎºÎ¿Ï ÏƒÏ„Î¹Î³Î¼Î¹Î¿Ï„Ïπων (άκυÏες υπό-κλάσεις)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "ΔιαγÏαφή επιλεγμένου"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Διπλασιασμός επιλογής"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Πάνω όψη"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "ΑπενεÏγοποιημένο"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: ΠεÏιστÏοφή"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: ΠεÏιστÏοφή"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: ΠεÏιστÏοφή"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "ΔημιουÏγία νέου"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "ΔημιουÏγία νέου έÏγου"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "ΔιαγÏαφή TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Μόνο στην επιλογή"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Μόνο στην επιλογή"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Ρυθμίσεις κουμπώματος"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Στιγμιότυπο:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " ΑÏχεία"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6707,6 +7371,31 @@ msgid "Stack overflow with stack depth: "
msgstr "ΥπεÏχείλιση στοίβας με βάθος στοίβας: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "ΕπεξεÏγασία παÏαμέτÏων σήματος:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Αλλαγή Ï„Ïπου τιμής πίνακα"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Αλλαγή ονόματος εισόδου"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Αλλαγή Ï€Ïοεπιλλεγμένης τιμής"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "ΕπεξεÏγασία μεταβλητής:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "ΣυναÏτήσεις:"
@@ -6747,26 +7436,6 @@ msgid "Add Signal"
msgstr "ΠÏοσθήκη σήματος"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "ΑφαίÏεση συνάÏτησης"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "ΑφαίÏεση μεταβλητής"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "ΕπεξεÏγασία μεταβλητής:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "ΑφαίÏεση σήματος"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "ΕπεξεÏγασία σήματος:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Αλλαγή έκφÏασης"
@@ -6775,6 +7444,16 @@ msgid "Add Node"
msgstr "ΠÏοσθήκη κόμβου"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "ΑφαίÏεση άκυÏων κλειδιών"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Διπλασιασμός κόμβων γÏαφήματος"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Πατήστε παÏατεταμένα το κουμπί Meta για να Ï€Ïοσθέσετε έναν Getter. Πατήστε "
@@ -6823,6 +7502,26 @@ msgid "Add Setter Property"
msgstr "ΠÏοσθέστε ιδιότητα Setter"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Αλλαγή Ï„Ïπου"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "ΑφαίÏεση κόμβων"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "ΑφαίÏεση κόμβου γÏαφήματος"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "ΣÏνδεση στον κόμβο:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Συνθήκη"
@@ -6851,6 +7550,56 @@ msgid "Get"
msgstr "ΠάÏε"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Αλλαγή ονόματος εισόδου"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "ΑδÏνατη η λειτουÏγία στο '..'"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Το Ï€ÏόχειÏο πόÏων είναι άδειο!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Επικόλληση κόμβων"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "ΑφαίÏεση συνάÏτησης"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "ΕπεξεÏγασία μεταβλητής:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "ΑφαίÏεση μεταβλητής"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "ΕπεξεÏγασία σήματος:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "ΑφαίÏεση σήματος"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "ΕπεξεÏγασία μεταβλητής:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "ΕπεξεÏγασία σήματος:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "ΤÏπος βάσης:"
@@ -6871,10 +7620,6 @@ msgid "Edit Variable:"
msgstr "ΕπεξεÏγασία μεταβλητής:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Αλλαγή"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "ΔιαγÏαφή επιλεγμένου"
@@ -6951,14 +7696,6 @@ msgstr ""
"ΆκυÏος Ï„Ïπος επιστÏοφής από την _step(), Ï€Ïέπει να είναι ακέÏαιος (seq out) "
"ή ακολουθία χαÏακτήÏων (error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "μόλις πατήθηκε"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "μόλις απελευθεÏώθηκε"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr "Εκτέλεση στον πεÏιηγητή"
@@ -6979,81 +7716,6 @@ msgstr "Δεν ήταν δυνατή η ανάγνωση του αÏχείου:\
msgid "Could not open template for export:\n"
msgstr "Δεν ήταν δυνατό το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:\n"
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"Δεν ήταν δυνατή η ανάγνωση του αÏχείου πιστοποιητικών. Είναι η διαδÏομή και "
-"ο κωδικός σωστοί;"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του αντικειμένου."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του πακέτου."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Δεν βÏέθηκαν Ï€Ïότυπα εξαγωγής.\n"
-"Κατεβάστε και εγκαταστήστε τα Ï€Ïότυπα εξαγωγής."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Το Ï€ÏοσαÏμοσμένο πακέτο αποσφαλμάτωσης δεν βÏέθηκε."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Το Ï€ÏοσαÏμοσμένο πακέτο παÏαγωγής δεν βÏέθηκε."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "ΆκυÏο μοναδικό όνομα."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "ΆκυÏο GUID Ï€Ïοϊόντος."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "ΆκυÏο GUID εκδότη."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "ΆκυÏο χÏώμα παÏασκηνίου."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "ΆκυÏη εικόνα λογότυπου καταστήματος (Ï€Ïέπει να είναι 50x50)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 44x44 (Ï€Ïέπει να είναι 44x44)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 71x71 (Ï€Ïέπει να είναι 71x71)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 150x150 (Ï€Ïέπει να είναι 150x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 310x310 (Ï€Ïέπει να είναι 310x310)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "ΆκυÏη εικόνα ευÏÏ Î»Î¿Î³ÏŒÏ„Ï…Ï€Î¿Ï… 310x150 (Ï€Ïέπει να είναι 310x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "ΆκυÏες διαστάσεις εικόνας οθόνης εκκίνησης (Ï€Ïέπει να είναι 620x300)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7152,11 +7814,20 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"Δεν έχει οÏιστεί υλικό για να επεξεÏγαστεί τα σωματίδια, οπότε η συμπεÏιφοÏά "
+"θα εκτυπώνεται."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "Το PathFollow2D δουλεÏει μόνο όταν κληÏονομεί έναν κόμβο Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7187,24 +7858,33 @@ msgstr ""
"Το VisibilityEnable2D δουλεÏει καλÏτεÏα όταν χÏησιμοποιείται μα την Ïίζα της "
"επεξεÏγασμένης σκηνές κατευθείαν ως γονέας."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-"To CollisionShape υπάÏχει μόνο για να δώσει ένα σχήμα σÏγκÏουσης σε έναν "
-"κόμβο που Ï€ÏοέÏχεται από το CollisionObject. ΧÏησιμοποιήστε το μόνο εάν "
-"κληÏονομεί τα Area, StaticBody, RigidBody, KinematicBody, κλπ, για να τους "
-"δώσετε ένα σχήμα."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Ένα σχήμα Ï€Ïέπει να δοθεί στο CollisionShape για να λειτουÏγήσει. "
-"ΔημιουÏγήστε ένα πόÏο σχήματος για αυτό!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7221,6 +7901,25 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Ένα άδειο CollisionPolygon δεν επηÏεάζει την σÏγκÏουση."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"To CollisionShape υπάÏχει μόνο για να δώσει ένα σχήμα σÏγκÏουσης σε έναν "
+"κόμβο που Ï€ÏοέÏχεται από το CollisionObject. ΧÏησιμοποιήστε το μόνο εάν "
+"κληÏονομεί τα Area, StaticBody, RigidBody, KinematicBody, κλπ, για να τους "
+"δώσετε ένα σχήμα."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Ένα σχήμα Ï€Ïέπει να δοθεί στο CollisionShape για να λειτουÏγήσει. "
+"ΔημιουÏγήστε ένα πόÏο σχήματος για αυτό!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7239,6 +7938,14 @@ msgstr ""
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+"Τίποτα δεν είναι οÏατό, επειδή δεν έχουν οÏιστεί πεÏάσματα για τα πλέγματα."
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7263,12 +7970,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "ΛειτουÏγία εκτέλεσης:"
+msgid "Raw Mode"
+msgstr "ΛειτουÏγία Μετακίνησης κάμεÏας"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "ΠÏοσθήκη του Ï„Ïέχοντος χÏώματος ως Ï€ÏοκαθοÏισμένο"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7278,22 +7985,6 @@ msgstr "Ειδοποίηση!"
msgid "Please Confirm..."
msgstr "ΠαÏακαλώ επιβεβαιώστε..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Άνοιγμα αÏχείου"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Άνοιγμα αÏχείου/-ων"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Άνοιγμα λεξικοÏ"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Άνοιγμα αÏχείου ή λεξικοÏ"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7319,11 +8010,13 @@ msgstr ""
"ΧÏησιμοποιήστε ένα container ως παιδί (VBox, HBox, κτλ), ή ένα Control και "
"οÏίστε το Ï€ÏοσαÏμοσμένο ελάχιστο μέγεθος χειÏοκίνητα."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"Το Ï€Ïοεπιλεγμένο πεÏιβάλλον, όπως έχει οÏισθεί στις Ïυθμίσεις έÏγου "
+"(Rendering -> Viewport -> Default Environment) δεν μποÏοÏσε να φοÏτωθεί."
#: scene/main/viewport.cpp
msgid ""
@@ -7337,6 +8030,99 @@ msgstr ""
"μέγεθος. Αλλιώς, κάντε το ένα RenderTarget και οÏίστε το internal texture σε "
"έναν κόμβο για απεικόνιση."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Κλείσιμο σκηνής; (Οι μη αποθηκευμένες αλλαγές θα χαθοÏν)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Θέλετε να ανοίξετε τον διαχειÏιστή έÏγου; \n"
+#~ "(Οι μη αποθηκευμένες αλλαγές θα χαθοÏν)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Κλείσιμο και μετάβαση στην Ï€ÏοηγοÏμενη σκηνή"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Επικάλυψη γονέα"
+
+#~ msgid "Del"
+#~ msgstr "ΔιαγÏαφή"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "ΑντιγÏαφή σε πλατφόÏμα.."
+
+#~ msgid "just pressed"
+#~ msgstr "μόλις πατήθηκε"
+
+#~ msgid "just released"
+#~ msgstr "μόλις απελευθεÏώθηκε"
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Δεν ήταν δυνατή η ανάγνωση του αÏχείου πιστοποιητικών. Είναι η διαδÏομή "
+#~ "και ο κωδικός σωστοί;"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του αντικειμένου."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Σφάλμα κατά τη δημιουÏγία της υπογÏαφής του πακέτου."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Δεν βÏέθηκαν Ï€Ïότυπα εξαγωγής.\n"
+#~ "Κατεβάστε και εγκαταστήστε τα Ï€Ïότυπα εξαγωγής."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Το Ï€ÏοσαÏμοσμένο πακέτο αποσφαλμάτωσης δεν βÏέθηκε."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "Το Ï€ÏοσαÏμοσμένο πακέτο παÏαγωγής δεν βÏέθηκε."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "ΆκυÏο μοναδικό όνομα."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "ΆκυÏο GUID Ï€Ïοϊόντος."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "ΆκυÏο GUID εκδότη."
+
+#~ msgid "Invalid background color."
+#~ msgstr "ΆκυÏο χÏώμα παÏασκηνίου."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "ΆκυÏη εικόνα λογότυπου καταστήματος (Ï€Ïέπει να είναι 50x50)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 44x44 (Ï€Ïέπει να είναι 44x44)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 71x71 (Ï€Ïέπει να είναι 71x71)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 150x150 (Ï€Ïέπει να είναι 150x150)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "ΆκυÏη εικόνα τετÏάγωνου λογότυπου 310x310 (Ï€Ïέπει να είναι 310x310)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "ΆκυÏη εικόνα ευÏÏ Î»Î¿Î³ÏŒÏ„Ï…Ï€Î¿Ï… 310x150 (Ï€Ïέπει να είναι 310x150)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "ΆκυÏες διαστάσεις εικόνας οθόνης εκκίνησης (Ï€Ïέπει να είναι 620x300)."
+
+#~ msgid "RAW Mode"
+#~ msgstr "ΑκατέÏγαστη λειτουÏγία"
+
#~ msgid "Node From Scene"
#~ msgstr "Κόμβος από σκηνή"
@@ -7420,9 +8206,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Αντικαταστάθηκαν %d εμφανίσεις."
-#~ msgid "Please save the scene first."
-#~ msgstr "ΠαÏακαλοÏμε αποθηκεÏστε την σκηνή Ï€Ïώτα."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Αποθήκευση μεταφÏάσιμων συμβολοσειÏών"
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 053bbc1085..da7bd97b83 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -2,7 +2,9 @@
# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
# This file is distributed under the same license as the Godot source code.
#
+# Addiel Lucena Perez <addiell2017@gmail.com>, 2017.
# Alejandro Alvarez <eliluminado00@gmail.com>, 2017.
+# BLaDoM GUY <simplybladom@gmail.com>, 2017.
# Carlos López <genetita@gmail.com>, 2016.
# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017.
# Roger BR <drai_kin@hotmail.com>, 2016.
@@ -13,8 +15,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-01-16 16:20+0000\n"
-"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
+"PO-Revision-Date: 2017-07-08 01:05+0000\n"
+"Last-Translator: BLaDoM GUY <simplybladom@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -22,7 +24,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 2.11-dev\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -153,7 +155,8 @@ msgstr "Ir al siguiente paso"
msgid "Goto Prev Step"
msgstr "Ir al paso anterior"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineal"
@@ -368,7 +371,7 @@ msgstr "Cambiar valor del «array»"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Libre"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
@@ -390,7 +393,8 @@ msgstr "Archivo"
msgid "Description:"
msgstr "Descripción:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Instalar"
@@ -401,24 +405,24 @@ msgstr "Instalar"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Cerrar"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "No se ha podido resolver el nombre de Dominio:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "No se ha podido resolver."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Error de conexion, por favor intente otra vez."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -432,11 +436,11 @@ msgstr "Conectar a nodo:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "No hay respuesta desde el host:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "No responde."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -445,31 +449,32 @@ msgstr "Formato de archivo desconocido:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Solicitud fallida."
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "Solicitud fallida, ha redireccionado demasiado"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "Bucle de redireccionamiento."
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Fallido:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "Error de descarga, al pareser el archivo ha sido manipulado."
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "Esperado:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "Tiene:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
@@ -477,15 +482,15 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Error en la descarga del asset:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Finalizado!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Buscando:"
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -509,11 +514,11 @@ msgstr "¡Hubo un error al guardar el recurso!"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "Inactivo"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Reintente"
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -522,40 +527,39 @@ msgstr "Abajo"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Este asset ya esta descargandose!"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "primero"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "anterior"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "siguiente"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "ultimo"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "Todos"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Buscar:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Buscar"
@@ -571,7 +575,7 @@ msgstr "Buscar"
msgid "Import"
msgstr "Importar"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Plugins"
@@ -583,7 +587,7 @@ msgstr "Ordenar:"
msgid "Reverse"
msgstr "Invertir"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Categoría:"
@@ -739,14 +743,14 @@ msgstr "Conectar a nodo:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Añadir"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Quitar"
@@ -856,7 +860,7 @@ msgid "Resource"
msgstr "Recursos"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Ruta"
@@ -941,43 +945,257 @@ msgstr "Explorador de recursos huérfanos"
msgid "Delete selected files?"
msgstr "¿Quieres eliminar los archivos seleccionados?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Eliminar"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "¡Muchas gracias de parte de la comunidad de Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "¡Gracias!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Contribuidores de Godot"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Administrador de proyectos"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "Desarrolladores"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Administrador de proyectos"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "Desarrolladores"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Constantes:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Constantes:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Sin comprimir"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "¡El paquete se ha instalado correctamente!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "¡El paquete se ha instalado correctamente!"
+
#: editor/editor_audio_buses.cpp
-msgid "Save Audio Bus Layout As.."
+msgid "Speakers"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Location for New Layout.."
+#, fuzzy
+msgid "Add Effect"
+msgstr "Añadir elemento vacío"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Abrir diseño del Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Abrir diseño del Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Abrir diseño del Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Quitar seleccionados"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opciones de depuración"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Duplicar"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Quitar seleccionados"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Añadir todos"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
msgstr ""
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Borrar ajustes"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplicar animación"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Mover acción"
+
+#: editor/editor_audio_buses.cpp
+msgid "Save Audio Bus Layout As.."
+msgstr "Guardar formato de los Audio Bus como..."
+
+#: editor/editor_audio_buses.cpp
+msgid "Location for New Layout.."
+msgstr "Ruta al nuevo diseño.."
+
+#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
+msgstr "Abrir diseño del Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
msgstr ""
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"La extensión del archivo no es correcta.\n"
+"Prueba con la extensión .fnt."
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Add Bus"
msgstr "Añadir todos"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Crear recurso nuevo"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Cargar"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Cargar un recurso existente desde disco y editarlo."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Guardar como"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Guardar formato de los Audio Bus como..."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Predeterminado"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "El nombre no es correcto."
@@ -1022,7 +1240,7 @@ msgstr "Añadir «AutoLoad»"
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr "¡El Autoload «%s» ya existe!"
+msgstr "¡El fichero «%s» ya existe!"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
@@ -1084,6 +1302,11 @@ msgid "Updating scene.."
msgstr "Actualizando escena.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Prueba guardando la escena primero."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Elige una carpeta"
@@ -1116,8 +1339,9 @@ msgid "Packing"
msgstr "Empaquetando"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
+#, fuzzy
msgid "Template file not found:\n"
-msgstr ""
+msgstr "No se encontró archivo de base:\n"
#: editor/editor_export.cpp
msgid "Added:"
@@ -1161,6 +1385,22 @@ msgstr "Todos los archivos (*)"
msgid "Open"
msgstr "Abrir"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Abrir un archivo"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Abrir archivo/s"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Abrir una carpeta"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Abrir un archivo o carpeta"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1287,6 +1527,15 @@ msgid "Signals:"
msgstr "Señales:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animaciones"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constantes:"
@@ -1304,7 +1553,8 @@ msgid "Search Text"
msgstr "Texto de búsqueda"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Salida:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1354,6 +1604,11 @@ msgid "Creating Thumbnail"
msgstr "Creando miniatura"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Esta operación no puede realizarse sin una escena."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1486,12 +1741,13 @@ msgid "Quick Open Script.."
msgstr "Apertura rápida de script…"
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Sí"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Guardar un archivo"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "¿Quieres cerrar la escena? (Los cambios sin guardar se perderán)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1503,10 +1759,18 @@ msgid "No"
msgstr "Nodo"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Sí"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
"Esta escena nunca se ha guardado. ¿Quieres guardarla antes de ejecutarla?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Esta operación no puede realizarse sin una escena."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Exportar biblioteca de modelos"
@@ -1516,12 +1780,9 @@ msgid "Export Tile Set"
msgstr "Exportar Tile Set"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Salir"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "¿Quieres salir del editor?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Esta operación no puede realizarse sin una escena."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1544,22 +1805,59 @@ msgid "Quick Run Scene.."
msgstr "Ejecución rápida de escena…"
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Salir"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "¿Quieres salir del editor?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Administrador de proyectos"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Guardar un archivo"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"¿Quieres abrir el el administrador de proyectos?\n"
-"(Los cambios sin guardar se perderán)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Elige una escena principal"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
msgstr ""
+"La escena '%s' fue importado automáticamente, por lo tanto no puede ser "
+"modificada.\n"
+"Para poder modificarla, se tiene que crear una nueva escena heredada."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1591,6 +1889,11 @@ msgstr "Guardar ajustes"
msgid "Delete Layout"
msgstr "Borrar ajustes"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Predeterminado"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Cambiar pestaña de escena"
@@ -1607,6 +1910,11 @@ msgstr "%d archivos o carpetas más"
msgid "Distraction Free Mode"
msgstr "Modo sin distracciones"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Modo sin distracciones"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Escena"
@@ -1656,10 +1964,6 @@ msgstr "Guardar todas las escenas"
msgid "Close Scene"
msgstr "Cerrar escena"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Cerrar e ir a escena anterior"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Abrir reciente"
@@ -1849,11 +2153,11 @@ msgstr "Cerrar documentación"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "P&R"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "Registros de problemas"
#: editor/editor_node.cpp
msgid "About"
@@ -1964,6 +2268,10 @@ msgstr "Nodo"
msgid "Output"
msgstr "Salida"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Reimportar"
@@ -1973,26 +2281,10 @@ msgid "Update"
msgstr "Actualizar"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "¡Muchas gracias de parte de la comunidad de Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "¡Gracias!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importar plantillas desde un archivo ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Exportar proyecto"
@@ -2013,9 +2305,18 @@ msgid "Open & Run a Script"
msgstr "Abrir y ejecutar un script"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Nueva escena heredada…"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Errores de carga"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Seleccionar"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2122,6 +2423,16 @@ msgstr "Reimportando"
msgid "Re-Import Changed Resources"
msgstr "Reimportar recursos cambiados"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escribe tu lógica en el método _run()."
@@ -2184,7 +2495,7 @@ msgstr "Abajo"
#: editor/export_template_manager.cpp
msgid "(Missing)"
-msgstr ""
+msgstr "(No encontrado)"
#: editor/export_template_manager.cpp
#, fuzzy
@@ -2193,7 +2504,7 @@ msgstr "Actual:"
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
-msgstr ""
+msgstr "Eliminar diseño de versión '%s'?"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
@@ -2201,13 +2512,15 @@ msgstr "No se puede abir el zip de plantillas de exportación."
#: editor/export_template_manager.cpp
msgid "Invalid version.txt format inside templates."
-msgstr ""
+msgstr "version.txt invalido en el diseño."
#: editor/export_template_manager.cpp
+#, fuzzy
msgid ""
"Invalid version.txt format inside templates. Revision is not a valid "
"identifier."
msgstr ""
+"formato de version.txt invalido. La revisión no es un identificador valido."
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
@@ -2272,11 +2585,29 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Guardar y reimportar"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Fuente:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
"Los archivos de origen y destino son iguales, no se realizará ninguna acción."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
"Las rutas de origen y destino son iguales, no se realizará ninguna acción."
@@ -2286,6 +2617,20 @@ msgid "Can't move directories to within themselves."
msgstr "No se pueden mover carpetas dentro de si mismas."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Error al cargar la imagen:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Hubo un error al importar:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "No se puede operar en «…»"
@@ -2364,6 +2709,12 @@ msgstr ""
"Instanciar la(s) escena(s) seleccionadas como hijas del nodo seleccionado."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Mover"
@@ -2375,10 +2726,31 @@ msgstr "Añadir al grupo"
msgid "Remove from Group"
msgstr "Quitar del grupo"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superficie %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Importando escena…"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Importar escena 3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2418,6 +2790,14 @@ msgid "Saving.."
msgstr "Guardando…"
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Archivo"
@@ -2612,6 +2992,10 @@ msgstr "Modelo/s elegidos:"
msgid "Mesh"
msgstr "Modelos 3D"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Superficie %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "¡No hay ningún sonido a importar!"
@@ -3202,6 +3586,11 @@ msgid "New name:"
msgstr "Nuevo nombre:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Editar filtros de nodo"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Escala:"
@@ -3519,6 +3908,7 @@ msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Editar"
@@ -3551,10 +3941,6 @@ msgid "Use Pixel Snap"
msgstr "Adherir a píxeles"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Expandir al padre"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Esqueleto…"
@@ -3667,11 +4053,6 @@ msgstr "Esta operación requiere un solo nodo seleccionado."
msgid "Change default type"
msgstr "Cambiar Valor por Defecto"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Aceptar"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -3712,6 +4093,14 @@ msgstr "Editar polígono (quitar punto)"
msgid "Create a new polygon from scratch."
msgstr "Crea un nuevo polígono desde cero."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Crear Poly3D"
@@ -3752,6 +4141,21 @@ msgstr "Actualizar desde escena"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "Modificar Mapa de Curvas"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Modificar Mapa de Curvas"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Cargar recurso"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "Añadir entrada"
@@ -3762,13 +4166,31 @@ msgstr "Quitar Punto de ruta"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Lineal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Vista derecha"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "Cargar recurso"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "Modificar Mapa de Curvas"
+msgid "Remove Curve Point"
+msgstr "Quitar Punto de ruta"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
#, fuzzy
@@ -3793,6 +4215,12 @@ 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 ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crear polígono oclusor"
@@ -3809,7 +4237,7 @@ msgstr "Clic izquierdo: Mover punto."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
-msgstr "Ctrl + clic izquierdo: Partir segmento en dos."
+msgstr "Ctrl + LMB: Partir segmento."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
@@ -4093,6 +4521,12 @@ msgid "Load Emission Mask"
msgstr "Cargar máscara de emisión"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Vértice"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "Conteo de puntos generados:"
@@ -4425,6 +4859,12 @@ msgid "Clear Recent Files"
msgstr "Reestablecer huesos"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "Error al guardar el tema"
@@ -4449,6 +4889,10 @@ msgid "Save Theme As.."
msgstr "Guardar tema como…"
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Script siguiente"
@@ -4502,6 +4946,11 @@ msgid "Close All"
msgstr "Cerrar"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Añadir/quitar favorito"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4534,6 +4983,11 @@ msgid "Keep Debugger Open"
msgstr "Mantener el depurador abierto"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Abrir en el editor"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Ventana"
@@ -4603,6 +5057,10 @@ msgstr ""
"pertenecen está cargada"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
#, fuzzy
msgid "Pick Color"
msgstr "Color"
@@ -4651,6 +5109,11 @@ msgid "Move Down"
msgstr "Bajar"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Eliminar punto"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Indentar a la izquierda"
@@ -4959,37 +5422,6 @@ msgid "Animation Key Inserted."
msgstr "Clave de animación insertada."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Avanzar"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Hacia atrás"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Rueda hacia abajo."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -5057,10 +5489,64 @@ msgid "Audio Listener"
msgstr "Oyente de Audio"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Activar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Avanzar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Hacia atrás"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Rueda hacia abajo."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Vista previa"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Ventana de transformación"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Modo de selección"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+Click Der.: Selección en depth list"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Modo movimiento (W)"
@@ -5182,6 +5668,7 @@ msgid "View Grid"
msgstr "Ver rejilla"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Ajustes"
@@ -5310,6 +5797,11 @@ msgid "StyleBox Preview:"
msgstr "Vista previa de StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Setear region_rect"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modo de fijado:"
@@ -5368,6 +5860,16 @@ msgstr "Remover Item"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Remove All Items"
+msgstr "Quitar elementos de clases"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Quitar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "Theme"
msgstr "Guardar tema"
@@ -5435,7 +5937,7 @@ msgstr "Tab 2"
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Tipo:"
@@ -5457,12 +5959,27 @@ msgid "Color"
msgstr "Color"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Eliminar selección"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Pintar TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Duplicar"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineal"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Cubo"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5497,10 +6014,6 @@ msgid "Pick Tile"
msgstr "Elegir Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Seleccionar"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Rotar 0 grados"
@@ -5564,7 +6077,7 @@ msgstr "¿Quieres eliminar los archivos seleccionados?"
msgid "Presets"
msgstr "Ajuste…"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Añadir…"
@@ -5623,6 +6136,24 @@ msgid "Make Patch"
msgstr "Ruta de destino:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Textura"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Lista de métodos:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "Exportar PCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5663,10 +6194,6 @@ msgid "The following files failed extraction from package:"
msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "¡El paquete se ha instalado correctamente!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importar proyecto existente"
@@ -5711,6 +6238,23 @@ msgid "Are you sure to open more than one project?"
msgstr "¿Seguro que quieres abrir más de un proyecto?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"No se ha definido ninguna escena principal, ¿quieres elegir alguna?\n"
+"Es posible cambiarla más tarde en «Ajustes del proyecto» bajo la categoría "
+"«aplicación»."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "¿Seguro que quieres ejecutar más de un proyecto?"
@@ -5729,10 +6273,6 @@ msgstr ""
"¿Quieres continuar?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Administrador de proyectos"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista de proyectos"
@@ -5761,258 +6301,292 @@ msgstr "Remover Item"
msgid "Exit"
msgstr "Salir"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Conectar.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Tecla "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Botón del mando"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "Eje del mando"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Botón del ratón"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "La acción no es correcta (no puedes utilizar «/» o «:»)."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "¡La acción «%s» ya existe!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Renombrar evento de acción de entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Añadir evento de acción de entrada"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Mayús+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Presiona una tecla…"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Ãndice de botón del ratón:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Botón izquierdo"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Botón derecho"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Botón del medio"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Botón rueda arriba"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Botón rueda abajo"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Botón 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Botón 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Botón 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Botón 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Cambiar"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "Ãndice de ejes del mando:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Eje"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "Ãndice de botones del mando:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Añadir acción de entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Borrar evento de acción de entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "Añadir elemento vacío"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Botón"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Botón izquierdo."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Botón derecho."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Botón central."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Rueda hacia arriba."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Rueda hacia abajo."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Añadir propiedad «Getter»"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Propiedad:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Ajustes"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Eliminar entrada"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Error al guardar los ajustes."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Los ajustes se han guardado correctamente."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Añadir traducción"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Quitar traducción"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Añadir ruta remapeada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "Añadir remapeo de recursos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Cambiar idioma de remapeo de recursos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Quitar remapeo de recursos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Quitar opción de remapeo de recursos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Ajustes de proyecto (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "General"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Propiedad:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Eliminar"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Copiar a plataforma…"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "Mapa de entradas"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Acción:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Dispositivo:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Ãndice:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Traducciones"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Traducciones"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Traducciones:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Remapeos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Recursos:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Remapeos por idioma:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Idioma"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -6055,6 +6629,11 @@ msgstr "Asignar"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "Selecciona un nodo"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "New Script"
msgstr "Script siguiente"
@@ -6069,6 +6648,11 @@ msgstr "Error al cargar el archivo: ¡No es un recurso!"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Selecciona nodos a importar"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "Selecciona un nodo"
@@ -6167,6 +6751,11 @@ msgstr "Argumentos de escena principal:"
msgid "Scene Run Settings"
msgstr "Ajustes de ejecución de escena"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Aceptar"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "No hay padre donde instanciar la escena."
@@ -6212,10 +6801,6 @@ msgid "Delete Node(s)?"
msgstr "¿Quieres borrar los nodos?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Esta operación no puede realizarse sin una escena."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6228,6 +6813,18 @@ msgid "Save New Scene As.."
msgstr "Guardar nueva escena como…"
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Hijos editables"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Cargar como temporal"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "Descartar instancia"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "¡Entendido!"
@@ -6273,6 +6870,14 @@ msgid "Edit Connections"
msgstr "Editar conexiones"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Limpiar heredado"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Abrir en el editor"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Borrar nodos"
@@ -6329,6 +6934,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtros"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Attach a new or existing script for the selected node."
msgstr "Crear un nuevo script para el nodo seleccionado."
@@ -6337,6 +6947,14 @@ msgstr "Crear un nuevo script para el nodo seleccionado."
msgid "Clear a script for the selected node."
msgstr "Crear un nuevo script para el nodo seleccionado."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "¿Quieres limpiar la herencia? (No se puede deshacer)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "¡Borrar!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Act/Desact. Espacial Visible"
@@ -6368,11 +6986,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Opciones de depuración"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instancia:"
@@ -6412,32 +7025,8 @@ msgid "Scene Tree (Nodes):"
msgstr "Ãrbol de escenas (nodos):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Hijos editables"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Cargar como temporal"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "Descartar instancia"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Abrir en el editor"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Limpiar heredado"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "¿Quieres limpiar la herencia? (No se puede deshacer)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "¡Borrar!"
+msgid "Node Configuration Warning!"
+msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6445,6 +7034,11 @@ msgstr "Selecciona un nodo"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Error al cargar la imagen:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "No se puede crear el script en el sistema de archivos."
@@ -6454,6 +7048,10 @@ msgid "Error loading script from %s"
msgstr "Error al cargar escena desde %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/D"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "La ruta está vacia"
@@ -6497,10 +7095,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/D"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6672,6 +7266,10 @@ msgid "Change Light Radius"
msgstr "Cambiar Radio de Luces"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Cambiar FOV de Cámara"
@@ -6762,6 +7360,137 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "El diccionario de instancias no es correcto (subclases erróneas)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Quitar seleccionados"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplicar selección"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Vista superior"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Desactivado"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Rotar"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Rotar"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Rotar"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Crear nuevo"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Crear proyecto nuevo"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Borrar TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Sólo selección"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Sólo selección"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Ajustes de fijado"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Instancia:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Archivo"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6801,6 +7530,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Desbordamiento de pila en el nivel: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Editar argumentos de señal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Cambiar tipo de valor del «array»"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Cambiar Nombre de Entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Cambiar Valor por Defecto"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Editar variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funciones:"
@@ -6841,26 +7595,6 @@ msgid "Add Signal"
msgstr "Añadir señal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Quitar función"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Quitar variable"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Editando variable:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Quitar señal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Editando señal:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "Cambiar tipo"
@@ -6870,6 +7604,16 @@ msgid "Add Node"
msgstr "Añadir nodo"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Quitar claves incorrectas"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Duplicar Nodo(s) de Gráfico"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Mantén pulsado Meta para quitar un «Setter». Mantén pulsado Mayús para "
@@ -6915,6 +7659,26 @@ msgstr "Añadir propiedad «Setter»"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Base Type"
+msgstr "Cambiar tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Borrar nodos"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Quitar Nodo de Gráfico de Shaders"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Conectar a nodo:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Condition"
msgstr "Copiar animación"
@@ -6945,6 +7709,56 @@ msgid "Get"
msgstr "Obtener"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Cambiar Nombre de Entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "No se puede operar en «…»"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "¡El portapapeles de recursos está vacío!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Pegar pose"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Quitar función"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Editar variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Quitar variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Editando señal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Quitar señal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Editando variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Editando señal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Tipo base:"
@@ -6965,10 +7779,6 @@ msgid "Edit Variable:"
msgstr "Editar variable:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Cambiar"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Quitar seleccionados"
@@ -7050,14 +7860,6 @@ msgstr ""
"El valor devuelto por _step() no es correcto, debe ser un entero (seq out), "
"o string/cadena (error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "se presione"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "se levante"
-
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Run in Browser"
@@ -7082,103 +7884,6 @@ msgstr "No se pudo cargar el tile:"
msgid "Could not open template for export:\n"
msgstr "No se pudo crear la carpeta."
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"No se ha podido leer el archivo de certificación. ¿Seguro que la ruta y "
-"contraseña son correctas?"
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Error creating the signature object."
-msgstr "¡Error al escribir el PCK de proyecto!"
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Error creating the package signature."
-msgstr "Se produjo un error al firmar el paquete."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"No se han encontrado plantillas de exportación.\n"
-"Tienes que descargar e instalarlas para continuar."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Custom debug package not found."
-msgstr "No se ha encontrado ningún paquete de depuración personalizado."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "No se ha encontrado ningún paquete final personalizado."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "El nombre no es correcto."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "Tamaño de tipografía incorrecto."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid publisher GUID."
-msgstr "Ruta base incorrecta"
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid background color."
-msgstr "El origen personalizado de tipografía no es correcto."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "El logo de la tienda no es del tamaño adecuado (debe ser de 50x50)."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-"El logo cuadrado de 44x44 no es del tamaño adecuado (debe ser de 44x44)."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-"El logo cuadrado de 71x71 no es del tamaño adecuado (debe ser de 71x71)."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-"El logo cuadrado de 150x150 no es del tamaño adecuado (debe ser de 150x150)."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-"El logo cuadrado de 310x310 no es del tamaño adecuado (debe ser de 310x310)."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-"El logo ancho de 310x150 no es del tamaño adecuado (debe ser de 310x150)."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-"El tamaño de la imagen de arranque no es correcto (debe ser de 620x300)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7280,6 +7985,13 @@ msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
"PathFollow2D solo funciona cuando está seteado como hijo de un nodo Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "La propiedad Path debe apuntar a un nodo Node2D válido para funcionar."
@@ -7308,23 +8020,33 @@ msgstr ""
"VisibilityEnable2D funciona mejor cuando se usa con la raíz de escena "
"editada directamente como padre."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape solo sirve para proveer un collision shape a un nodo derivado "
-"de un CollisionObject. Favor de usarlo solo como hijo de Area, StaticBody, "
-"RigidBody, KinematicBody, etc. para darles un shape."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Se debe proveer un shape para que CollisionShape funcione. Creale un recurso "
-"shape!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7340,6 +8062,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Un CollisionPolygon vacio no tiene ningún efecto en la colisión."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape solo sirve para proveer un collision shape a un nodo derivado "
+"de un CollisionObject. Favor de usarlo solo como hijo de Area, StaticBody, "
+"RigidBody, KinematicBody, etc. para darles un shape."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Se debe proveer un shape para que CollisionShape funcione. Creale un recurso "
+"shape!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7359,6 +8099,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7382,8 +8129,8 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Modo de ejecución:"
+msgid "Raw Mode"
+msgstr "Modo desplazamiento lateral"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
@@ -7397,22 +8144,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirmar decisión…"
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Abrir un archivo"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Abrir archivo/s"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Abrir una carpeta"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Abrir un archivo o carpeta"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7434,7 +8165,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7452,6 +8183,121 @@ msgstr ""
"que pueda obtener un tamaño. Alternativamente, hacelo un RenderTarget y "
"asigná su textura interna a algún otro nodo para mostrar."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "¿Quieres cerrar la escena? (Los cambios sin guardar se perderán)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "¿Quieres abrir el el administrador de proyectos?\n"
+#~ "(Los cambios sin guardar se perderán)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Cerrar e ir a escena anterior"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Expandir al padre"
+
+#~ msgid "Del"
+#~ msgstr "Eliminar"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Copiar a plataforma…"
+
+#~ msgid "just pressed"
+#~ msgstr "se presione"
+
+#~ msgid "just released"
+#~ msgstr "se levante"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "No se ha podido leer el archivo de certificación. ¿Seguro que la ruta y "
+#~ "contraseña son correctas?"
+
+#, fuzzy
+#~ msgid "Error creating the signature object."
+#~ msgstr "¡Error al escribir el PCK de proyecto!"
+
+#, fuzzy
+#~ msgid "Error creating the package signature."
+#~ msgstr "Se produjo un error al firmar el paquete."
+
+#, fuzzy
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "No se han encontrado plantillas de exportación.\n"
+#~ "Tienes que descargar e instalarlas para continuar."
+
+#, fuzzy
+#~ msgid "Custom debug package not found."
+#~ msgstr "No se ha encontrado ningún paquete de depuración personalizado."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "No se ha encontrado ningún paquete final personalizado."
+
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "El nombre no es correcto."
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "Tamaño de tipografía incorrecto."
+
+#, fuzzy
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Ruta base incorrecta"
+
+#, fuzzy
+#~ msgid "Invalid background color."
+#~ msgstr "El origen personalizado de tipografía no es correcto."
+
+#, fuzzy
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "El logo de la tienda no es del tamaño adecuado (debe ser de 50x50)."
+
+#, fuzzy
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr ""
+#~ "El logo cuadrado de 44x44 no es del tamaño adecuado (debe ser de 44x44)."
+
+#, fuzzy
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr ""
+#~ "El logo cuadrado de 71x71 no es del tamaño adecuado (debe ser de 71x71)."
+
+#, fuzzy
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "El logo cuadrado de 150x150 no es del tamaño adecuado (debe ser de "
+#~ "150x150)."
+
+#, fuzzy
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "El logo cuadrado de 310x310 no es del tamaño adecuado (debe ser de "
+#~ "310x310)."
+
+#, fuzzy
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr ""
+#~ "El logo ancho de 310x150 no es del tamaño adecuado (debe ser de 310x150)."
+
+#, fuzzy
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "El tamaño de la imagen de arranque no es correcto (debe ser de 620x300)."
+
+#, fuzzy
+#~ msgid "RAW Mode"
+#~ msgstr "Modo de ejecución:"
+
#~ msgid "Node From Scene"
#~ msgstr "Nodo desde escena"
@@ -7538,9 +8384,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "%d ocurrencias reemplazadas."
-#~ msgid "Please save the scene first."
-#~ msgstr "Prueba guardando la escena primero."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Guardar cadenas traducibles"
@@ -7759,9 +8602,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Clave de cifrado de scripts (256-bits en hexadecimal):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "Exportar PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "Exportar PCK del proyecto"
@@ -7903,8 +8743,5 @@ msgstr ""
#~ msgid "Node Group(s)"
#~ msgstr "Grupo(s) de Nodos"
-#~ msgid "Set region_rect"
-#~ msgstr "Setear region_rect"
-
#~ msgid "Plugin List:"
#~ msgstr "Lista de Plugins:"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index 3457d72d9a..64d65f70bb 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-04-17 00:30+0000\n"
+"PO-Revision-Date: 2017-06-29 19:59+0000\n"
"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
"godot-engine/godot/es_AR/>\n"
@@ -19,7 +19,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 2.14-dev\n"
+"X-Generator: Weblate 2.15-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -149,7 +149,8 @@ msgstr "Ir a Paso Próximo"
msgid "Goto Prev Step"
msgstr "Ir a Paso Previo"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineal"
@@ -362,21 +363,19 @@ msgstr "Cambiar Valor del Array"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Libre"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "Version:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "Constantes:"
+msgstr "Contenido:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr " Archivos"
+msgstr "Ver Archivos"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -384,7 +383,8 @@ msgstr " Archivos"
msgid "Description:"
msgstr "Descripción:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Instalar"
@@ -395,161 +395,152 @@ msgstr "Instalar"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Cerrar"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "No se ha podido resolver el nombre del host:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "No se ha podido resolver."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Error de conexión, por favor intentá de nuevo."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "Conectar.."
+msgstr "No se puede conectar."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "Conectar a Nodo:"
+msgstr "No se puede conectar al host:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "No hay respuesta desde el host:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Sin respuesta."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "Formato requerido de archivo desconocido:"
+msgstr "Solicitud fallida. Código de retorno:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Solicitud fallida."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "Solicitud fallida, demasiadas redireccinoes"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "Bucle de redireccionamiento."
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Fallido:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "Hash de descarga incorrecto, asumiendo que el archivo fue manipulado."
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "Esperado:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "Recibido:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "Fallo el chequeo del hash sha256"
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Error de Descarga del Asset:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Conseguido!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Obteniendo:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "Guardando.."
+msgstr "Resolviendo.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "Conectar.."
+msgstr "Conectando.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "Testeo"
+msgstr "Solicitando.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "Error al guardar el recurso!"
+msgstr "Error al realizar la solicitud"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "Desocupado"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Reintentar"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Download Error"
-msgstr "Descargar"
+msgstr "Error de Descarga"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "La descarga de este asset ya esta en progreso!"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "primero"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "anterior"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "siguiente"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "último"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "Todos"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Buscar:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Buscar"
@@ -565,7 +556,7 @@ msgstr "Buscar"
msgid "Import"
msgstr "Importar"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Plugins"
@@ -577,7 +568,7 @@ msgstr "Ordenar:"
msgid "Reverse"
msgstr "Invertir"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Categoría:"
@@ -731,14 +722,14 @@ msgstr "Conectar a Nodo:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Agregar"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Quitar"
@@ -845,7 +836,7 @@ msgid "Resource"
msgstr "Recursos"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Ruta"
@@ -929,12 +920,196 @@ msgstr "Explorador de Recursos Huérfanos"
msgid "Delete selected files?"
msgstr "Eliminar archivos seleccionados?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Eliminar"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Gracias de parte de la comunidad Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Gracias!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Colaboradores de Godot Engine"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Gestor de Proyectos"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "Desarrolladores"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestor de Proyectos"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "Desarrolladores"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Contenido:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Contenido:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Sin Comprimir"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "El Paquete se Instaló Exitosamente!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "El Paquete se Instaló Exitosamente!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Agregar Evento"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Abrir Layout de Bus de Audio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Abrir Layout de Bus de Audio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Abrir Layout de Bus de Audio"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Eliminar Seleccionados"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opciones de Subescena"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Duplicar"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Eliminar Seleccionados"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Agregar Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Eliminar Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplicar Animación"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Mover Acción"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "Guardar Layout de Bus de Audio Como.."
@@ -948,23 +1123,53 @@ msgid "Open Audio Bus Layout"
msgstr "Abrir Layout de Bus de Audio"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Extension de archivo inválida.\n"
+"Usá .fnt, por favor."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Agregar Bus"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Crear Nuevo Recurso"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Cargar"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Cargar un recurso existente desde disco y editarlo."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Guardar Como"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Guardar Layout de Bus de Audio Como.."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Por Defecto"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Nombre inválido."
@@ -1071,6 +1276,11 @@ msgid "Updating scene.."
msgstr "Actualizando escena.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Por favor guardá la escena primero."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Elegí un Directorio"
@@ -1148,6 +1358,22 @@ msgstr "Todos los Archivos (*)"
msgid "Open"
msgstr "Abrir"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Abrir un Archivo"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Abrir Archivo(s)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Abrir un Directorio"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Abrir un Archivo o Directorio"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1273,6 +1499,15 @@ msgid "Signals:"
msgstr "Señales:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animaciones"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constantes:"
@@ -1289,7 +1524,8 @@ msgid "Search Text"
msgstr "Texto de Búsqueda"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Salida:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1339,6 +1575,11 @@ msgid "Creating Thumbnail"
msgstr "Creando Miniatura"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Esta operación no puede hacerse sin una escena."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1414,15 +1655,14 @@ msgid "There is no defined scene to run."
msgstr "No hay escena definida para ejecutar."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
"No se ha definido ninguna escena principal, ¿elegir una?\n"
-"Es posible cambiarla más tarde en \"Ajustes del Proyecto\" bajo la categoria "
-"'aplicacion'."
+"Es posible cambiarla más tarde en \"Ajustes del Proyecto\" bajo la categoría "
+"'aplicación'."
#: editor/editor_node.cpp
msgid ""
@@ -1471,26 +1711,34 @@ msgid "Quick Open Script.."
msgstr "Abrir Script Rapido.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Si"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Guardar un Archivo"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Cerrar escena? (Los cambios sin guardar se perderán)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Guardar Escena Como.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Nodo"
+msgstr "No"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Si"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Esta escena nunca ha sido guardada. Guardar antes de ejecutar?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Esta operación no puede hacerse sin una escena."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Exportar Librería de Meshes"
@@ -1500,12 +1748,9 @@ msgid "Export Tile Set"
msgstr "Exportar Tile Set"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Salir"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Salir del editor?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Esta operación no puede hacerse sin una escena."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1528,16 +1773,52 @@ msgid "Quick Run Scene.."
msgstr "Ejecutar Escena Rapido.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
-msgstr "Abrir el Gestor de Proyectos? (Los cambios sin guardar se perderán)"
+msgid "Quit"
+msgstr "Salir"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Salir del editor?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Gestor de Proyectos"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Guardar un Archivo"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Elegí una Escena Principal"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1576,6 +1857,11 @@ msgstr "Guardar Layout"
msgid "Delete Layout"
msgstr "Eliminar Layout"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Por Defecto"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Cambiar Pestaña de Escena"
@@ -1592,6 +1878,11 @@ msgstr "%d archivo(s) o carpeta(s) más"
msgid "Distraction Free Mode"
msgstr "Modo Sin Distracciones"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Modo Sin Distracciones"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Escena"
@@ -1640,10 +1931,6 @@ msgstr "Guardar todas las Escenas"
msgid "Close Scene"
msgstr "Cerrar Escena"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Cerrar e Ir a Escena Prev."
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Abrir Reciente"
@@ -1680,9 +1967,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "Herramientas misceláneas a nivel proyecto o escena."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Proyecto Nuevo"
+msgstr "Proyecto"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1797,9 +2083,8 @@ msgstr ""
"sistema de archivos de red."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "Editar"
+msgstr "Editor"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1826,17 +2111,16 @@ msgid "Classes"
msgstr "Clases"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Cerrar Docs"
+msgstr "Documentación Online"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Q&A"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "Issue Tracker"
#: editor/editor_node.cpp
msgid "About"
@@ -1946,6 +2230,10 @@ msgstr "Nodo"
msgid "Output"
msgstr "Salida"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Reimportar"
@@ -1955,26 +2243,10 @@ msgid "Update"
msgstr "Actualizar"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Gracias de parte de la comunidad Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Gracias!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importar Plantillas Desde Archivo ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Exportar Proyecto"
@@ -1995,38 +2267,41 @@ msgid "Open & Run a Script"
msgstr "Abrir y Correr un Script"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Nueva Escena Heredada.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Erroes de carga"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Seleccionar"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Abrir en Editor"
+msgstr "Abrir en Editor 2D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Abrir en Editor"
+msgstr "Abrir en Editor 3D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Abrir en Editor"
+msgstr "Abrir en Editor de Script"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "Exportar Libreria"
+msgstr "Exportar Libreria de Assets"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Abrir en Editor"
+msgstr "Abrir el Editor siguiente"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Abrir en Editor"
+msgstr "Abrir el Editor anterior"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2104,6 +2379,16 @@ msgstr "Reimportando"
msgid "Re-Import Changed Resources"
msgstr "Reimportar Recursos Cambiados"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escribir tu lógica en el método _run()."
@@ -2243,10 +2528,28 @@ msgid "Cannot navigate to '"
msgstr "No se puede navegar a '"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Guardar y Reimportar"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Fuente:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Archivos de origen y destino iguales, no se realizará ninguna acción."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Ruta de origen y destino iguales, no se realizará ninguna acción."
@@ -2255,6 +2558,20 @@ msgid "Can't move directories to within themselves."
msgstr "No se pueden mover directorios dentro de si mismos."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Error al cargar la imagen:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Error al importar:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "No se puede operar en '..'"
@@ -2332,6 +2649,12 @@ msgstr ""
"Instanciar la(s) escena(s) seleccionadas como hijas del nodo seleccionado."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Mover"
@@ -2343,10 +2666,31 @@ msgstr "Agregar al Grupo"
msgid "Remove from Group"
msgstr "Quitar del Grupo"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superficie %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Importando Escena.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Importar Escena 3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2385,6 +2729,14 @@ msgid "Saving.."
msgstr "Guardando.."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr " Archivos"
@@ -2471,7 +2823,6 @@ msgid "No target font resource!"
msgstr "Sin recurso de tipografías de destino!"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
@@ -2576,6 +2927,10 @@ msgstr "Importar Mesh(es) de Origen:"
msgid "Mesh"
msgstr "Mesh"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Superficie %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Sin muestras que importar!"
@@ -2957,9 +3312,8 @@ msgid "Compress"
msgstr "Comprimir"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "Agregar al Proyecto (godot.cfg)"
+msgstr "Agregar al Proyecto (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3164,6 +3518,11 @@ msgid "New name:"
msgstr "Nuevo nombre:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Editar Filtros de Nodo"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Escala:"
@@ -3415,7 +3774,7 @@ msgstr "Pegar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
-msgstr "Seleccionar Modo"
+msgstr "Modo Seleccionar"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag: Rotate"
@@ -3480,6 +3839,7 @@ msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Editar"
@@ -3512,10 +3872,6 @@ msgid "Use Pixel Snap"
msgstr "Usar Pixel Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Expandir al Padre"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Esqueleto.."
@@ -3624,11 +3980,6 @@ msgstr "Esta operación requiere un solo nodo seleccionado."
msgid "Change default type"
msgstr "Cambiar typo por defecto"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3668,6 +4019,14 @@ msgstr "Editar Polígono (Remover Punto)"
msgid "Create a new polygon from scratch."
msgstr "Crear un nuevo polígono de cero."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Crear Poly3D"
@@ -3708,22 +4067,53 @@ msgstr "Acutalizar desde Escena"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Add point"
-msgstr "Agregar Entrada"
+msgid "Modify Curve Point"
+msgstr "Modificar Curva"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Modificar Mapa de Curvas"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Cargar preset"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "Agregar punto"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "Quitar Punto del Path"
+msgstr "Quitar punto"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "Lineal"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Right linear"
+msgstr "Vista Derecha"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "Cargar Recurso"
+msgstr "Cargar preset"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
-msgstr "Modificar Curva"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Quitar Punto del Path"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3747,6 +4137,12 @@ 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 ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crear Polígono Oclusor"
@@ -4009,13 +4405,13 @@ msgstr "Limpiar Máscara de Emisión"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
-msgstr "Generar AABB"
+msgstr "Generando AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"Solo se puede setear un punto en un material de proceso ParticlesMaterial"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4031,36 +4427,38 @@ msgstr "Setear Máscara de Emisión"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Generar Rect. de Visibilidad"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
msgstr "Cargar Máscara de Emisión"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Vértices"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "Conteo de Puntos Generados:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "Tiempo Promedio (seg)"
+msgstr "Tiempo de Generación (seg):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "Setear Máscara de Emisión"
+msgstr "Máscara de Emisión"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "Crear desde Escena"
+msgstr "Capturar desde Pixel"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "Puntos de Emisión:"
+msgstr "Colores de Emisión"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4123,23 +4521,20 @@ msgid "Emission Source: "
msgstr "Fuente de Emisión: "
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "Generar AABB"
+msgstr "Generar AABB de Visibilidad"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
msgstr "Remover Punto de Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "Mover Out-Control en Curva"
+msgstr "Quitar Out-Control de la Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "Remover Punto de Curva"
+msgstr "Quitar In-Control de la Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4197,14 +4592,12 @@ msgid "Remove Path Point"
msgstr "Quitar Punto del Path"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "Mover Out-Control en Curva"
+msgstr "Quitar Punto Out-Control"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "Mover In-Control en Curva"
+msgstr "Quitar Punto In-Control"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4359,9 +4752,14 @@ msgid "Pitch"
msgstr "Altura"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "Reestablecer Huesos"
+msgstr "Reestablecer Archivos Recientes"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4388,6 +4786,10 @@ msgid "Save Theme As.."
msgstr "Guardar Tema Como.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Script siguiente"
@@ -4440,6 +4842,11 @@ msgid "Close All"
msgstr "Cerrar Todos"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Act/Desact. Favorito"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4472,6 +4879,11 @@ msgid "Keep Debugger Open"
msgstr "Mantener el Debugger Abierto"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Abrir el Editor siguiente"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Ventana"
@@ -4484,9 +4896,8 @@ msgid "Move Right"
msgstr "Mover a la Derecha"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "Buscar en la documentación de referencia."
+msgstr "Abrir la documentación online de Godot"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4540,25 +4951,28 @@ msgstr ""
"pertenecen esta cargada"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Elegir Color"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "Convirtiendo Imágenes"
+msgstr "Convertir Mayusculas"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Mayúsculas"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Minúsculas"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Capitalizar"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4587,6 +5001,11 @@ msgid "Move Down"
msgstr "Bajar"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Eliminar Punto"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Indentar a la Izq"
@@ -4612,11 +5031,11 @@ msgstr "Eliminar Espacios Sobrantes al Final"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Convertir Indentación En Espacios"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Convertir Indentación En Tabs"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4640,14 +5059,12 @@ msgid "Goto Previous Breakpoint"
msgstr "Ir a Anterior Breakpoint"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "Convertir A.."
+msgstr "Convertir A Mayúscula"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "Convertir A.."
+msgstr "Convertir A Minúscula"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -4674,7 +5091,7 @@ msgstr "Ayuda Contextual"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -4893,63 +5310,28 @@ msgid "Animation Key Inserted."
msgstr "Clave de Animación Insertada."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Avanzar"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Hacia Atrás"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Rueda Abajo."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "Objetos Dibujados"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "Actualizar Cambios"
+msgstr "Cambios de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "Actualizar Cambios"
+msgstr "Cambios de Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "Actualizar Cambios"
+msgstr "Cambios de Superficie"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Llamadas de Dibujado"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "Vértice"
+msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -4968,33 +5350,81 @@ msgid "Display Overdraw"
msgstr "Mostrar Overdraw"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
msgstr "Mostrar sin Sombreado"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "Entorno"
+msgstr "Ver Entorno"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "Gizmos"
+msgstr "Ver Gizmos"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Ver Información"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "Oyente de Audio"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Activar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr "Vista Libre A La Izquierda"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr "Vista Libre A La Derecha"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr "Vista Libre Hacia Adelante"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr "Vista Libre Hacia Atrás"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr "Vista Libre Hacia Arriba"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr "Vista Libre Hacia Abajo"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr "Modificador de Velocidad de Vista Libre"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Vista Previa"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialogo XForm"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Modo Seleccionar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+Click Der.: Selección en depth list"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Modo Mover (W)"
@@ -5051,24 +5481,20 @@ msgid "Align Selection With View"
msgstr "Alinear Selección Con Vista"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Seleccionar"
+msgstr "Seleccionar Herramienta"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "Mover"
+msgstr "Herramienta Mover"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl: Rotar"
+msgstr "Herramienta Rotar"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "Escala:"
+msgstr "Herramienta Escalar"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5115,6 +5541,7 @@ msgid "View Grid"
msgstr "Ver Grilla"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Configuración"
@@ -5243,6 +5670,11 @@ msgid "StyleBox Preview:"
msgstr "Vista Previa de StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Setear region_rect"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modo Snap:"
@@ -5300,6 +5732,16 @@ msgid "Remove Item"
msgstr "Remover Item"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Quitar Items de Clases"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Quitar"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Tema"
@@ -5367,7 +5809,7 @@ msgstr "Tab 2"
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Tipo:"
@@ -5389,12 +5831,27 @@ msgid "Color"
msgstr "Color"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Eliminar Selección"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Pintar TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Duplicar"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineal"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Balde"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5429,10 +5886,6 @@ msgid "Pick Tile"
msgstr "Elegir Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Seleccionar"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Rotar 0 grados"
@@ -5492,7 +5945,7 @@ msgstr "Eliminar preset '%s'?"
msgid "Presets"
msgstr "Presets"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Agregar.."
@@ -5543,6 +5996,24 @@ msgid "Make Patch"
msgstr "Crear Parche"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Textura"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Lista de Métodos:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "Exportar PCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Faltan las plantillas de exportación para esta plataforma:"
@@ -5555,14 +6026,12 @@ msgid "Invalid project path, the path must exist!"
msgstr "Ruta de proyecto inválida, la ruta debe existir!"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr "Ruta de proyecto inválida, godot.cfg no debe existir."
+msgstr "Ruta de proyecto inválida, project.godot no debe existir."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr "Ruta de proyecto inválida, godot.cfg debe existir."
+msgstr "Ruta de proyecto inválida, project.godot debe existir."
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -5573,19 +6042,14 @@ msgid "Invalid project path (changed anything?)."
msgstr "Ruta de proyecto inválida (cambiaste algo?)."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr "No se pudo crear godot.cfg en la ruta de proyecto."
+msgstr "No se pudo crear project.godot en la ruta de proyecto."
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "El Paquete se Instaló Exitosamente!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importar Proyecto Existente"
@@ -5630,6 +6094,23 @@ msgid "Are you sure to open more than one project?"
msgstr "¿Estás seguro/a que querés abrir mas de un proyecto?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"No se ha definido ninguna escena principal, ¿elegir una?\n"
+"Es posible cambiarla más tarde en \"Ajustes del Proyecto\" bajo la categoría "
+"'aplicación'."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "¿Estás seguro/a que querés ejecutar mas de un proyecto?"
@@ -5648,10 +6129,6 @@ msgstr ""
"Confirmar?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gestor de Proyectos"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Listado de Proyectos"
@@ -5672,264 +6149,295 @@ msgid "New Project"
msgstr "Proyecto Nuevo"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "Remover Plantilla"
+msgstr "Plantillas"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "Salir"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "No se puede conectar."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Tecla "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Bottón de Joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "Eje de Joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Botón de Mouse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Acción Invalida (cualquier cosa va menos '/' o ':')."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "La acción '%s' ya existe!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Renombrar Evento de Acción de Entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Agregar Evento de Acción de Entrada"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Presionar una Tecla.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Indice de Botones de Mouse:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Botón Izquierdo"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Botón Derecho"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Botón del Medio"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Botón Rueda Arriba"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Botón Rueda Abajo"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Botón 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Botón 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Botón 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Botón 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Cambiar"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Indice del Eje del Gamepad:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Eje"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr "Indice del Boton del Gamepad:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Agregar Acción de Entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Borrar Evento de Acción de Entrada"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr "Agregar Vacío"
+msgstr "Agregar Evento"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Botón"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Botón Izquierdo."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Botón Derecho."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Botón del Medio."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Rueda Arriba."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Rueda Abajo."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Agregar Propiedad Getter"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Propiedad:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Configuración"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Eliminar Entrada"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Error al guardar los ajustes."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Ajustes guardados satisfactoriamente."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Agregar Traducción"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Quitar Traducción"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Agregar Path Remapeado"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "Remapear Recurso Agregar Remap"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Cambiar Lenguaje de Remapeo de Recursos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Remover Remapeo de Recursos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Remover Opción de Remapeo de Recursos"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "Configuración de Proyecto (godot.cfg)"
+msgstr "Configuración de Proyecto (project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "General"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Propiedad:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Eliminar"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Copiar A Plataforma.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "Mapa de Entradas"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Acción:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Dispositivo:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Indice:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Localización"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Traducciones"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Traducciones:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Remapeos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Recursos:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Remapeos por Locale:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Locale"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -5970,6 +6478,11 @@ msgid "Assign"
msgstr "Asignar"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Seleccionar un Nodo"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Nuevo Script"
@@ -5982,6 +6495,11 @@ msgid "Error loading file: Not a resource!"
msgstr "Error al cargar el archivo: No es un recurso!"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Seleccionar Nodo(s) para Importar"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr "Seleccionar un Nodo"
@@ -6078,6 +6596,11 @@ msgstr "Argumentos de Escena Principal:"
msgid "Scene Run Settings"
msgstr "Ajustes de Ejecución de Escena"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "No hay padre donde instanciar la escena."
@@ -6123,10 +6646,6 @@ msgid "Delete Node(s)?"
msgstr "Eliminar Nodo(s)?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Esta operación no puede hacerse sin una escena."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr "No se puede realizar sobre el nodo raíz."
@@ -6139,6 +6658,18 @@ msgid "Save New Scene As.."
msgstr "Guardar Nueva Escena Como.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Hijos Editables"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Cargar Como Placeholder"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "Descartar Instanciado"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Tiene Sentido!"
@@ -6172,9 +6703,8 @@ msgid "Error duplicating scene to save it."
msgstr "Error al duplicar escena para guardarla."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources:"
-msgstr "Recursos:"
+msgstr "Sub-Recursos:"
#: editor/scene_tree_dock.cpp
msgid "Edit Groups"
@@ -6185,6 +6715,14 @@ msgid "Edit Connections"
msgstr "Editar Conexiones"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Limpiar Herencia"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Abrir en Editor"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Eliminar Nodo(s)"
@@ -6237,6 +6775,11 @@ msgstr ""
"existe ningún nodo raíz."
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtros"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "Adjuntar un script nuevo o existente para el nodo seleccionado."
@@ -6244,6 +6787,14 @@ msgstr "Adjuntar un script nuevo o existente para el nodo seleccionado."
msgid "Clear a script for the selected node."
msgstr "Reestablecer un script para el nodo seleccionado."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "Limpiar Herencia? (Imposible Deshacer!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Limpiar!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Act/Desact. Espacial Visible"
@@ -6254,56 +6805,59 @@ msgstr "Act/Desact. CanvasItem Visible"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Advertencia de configuración de nodo:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"El nodo tiene conexión/es y grupo/s\n"
+"Clic para mostrar el panel de señales."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"El nodo tiene conexiones.\n"
+"Click para mostrar el panel de señales."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Opciones de debugueo"
+"El nodo esta en un grupo/s.\n"
+"Click para mostrar el panel de grupos."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instancia:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Script siguiente"
+msgstr "Abrir script"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"El nodo esta bloqueado.\n"
+"Clic para desbloquear"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Los hijos no son seleccionables.\n"
+"Clic para convertir en seleccionables"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "Act/Desact. Espacial Visible"
+msgstr "Act/Desact. Visibilidad"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6318,32 +6872,9 @@ msgid "Scene Tree (Nodes):"
msgstr "Arbol de Escenas (Nodos):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Hijos Editables"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Cargar Como Placeholder"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "Descartar Instanciado"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Abrir en Editor"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Limpiar Herencia"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "Limpiar Herencia? (Imposible Deshacer!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Limpiar!"
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "Advertencia de configuración de nodo:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6351,14 +6882,22 @@ msgstr "Seleccionar un Nodo"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Error al cargar la imagen:"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr "No se puede crear el script en el sistema de archivos."
+msgstr "Error - No se puede crear el script en el sistema de archivos."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
msgstr "Error al cargar el script desde %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/A"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "La ruta está vacia"
@@ -6376,66 +6915,53 @@ msgstr "Extensión invalida"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Extensión incorrecta elegida"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "Ruta inválida."
+msgstr "Ruta inválida"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "Nombre de clase inválido"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "Nombre de propiedad indíce inválido."
+msgstr "Ruta o nombre del padre heredado inválido"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "Script"
+msgstr "Script válido"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/A"
+msgstr "Permitidos: a-z, A-Z, 0-9 y _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Script Integrado (dentro del archivo de escena)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
msgstr "Crear script nuevo"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
msgstr "Cargar script existente"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "Hereda:"
+msgstr "Hereda"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Nombre de Clase:"
+msgstr "Nombre de Clase"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Remover Plantilla"
+msgstr "Plantilla"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
msgstr "Script Integrado (Built-In)"
@@ -6576,6 +7102,10 @@ msgid "Change Light Radius"
msgstr "Cambiar Radio de Luces"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Cambiar FOV de Cámara"
@@ -6609,7 +7139,7 @@ msgstr "Cambiar Alcances de Notificadores"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Cambiar Particulas AABB"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -6661,6 +7191,137 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Diccionario de instancias inválido (subclases inválidas)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Eliminar Seleccionados"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplicar Selección"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Vista Superior"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Desactivado"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Rotar"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Rotar"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Rotar"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Crear Nuevo"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Crear Proyecto Nuevo"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Borrar TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Solo Selección"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Solo Selección"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Ajustes de Snap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Instancia:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " Archivos"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6699,6 +7360,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Stack overflow con la profundidad del stack: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Editar Argumentos de Señal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Cambiar Tipo de Valor del Array"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Cambiar Nombre de Entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Cambiar Valor por Defecto"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Editar Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funciones:"
@@ -6739,26 +7425,6 @@ msgid "Add Signal"
msgstr "Agregar Señal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Quitar Función"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Quitar Variable"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Editando Variable:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Quitar Señal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Editando Señal:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Cambiar Expresión"
@@ -6767,6 +7433,16 @@ msgid "Add Node"
msgstr "Agregar Nodo"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Quitar claves inválidas"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Duplicar Nodo(s) de Gráfico"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Mantené pulsado Meta para depositar un Getter. Mantené pulsado Shift para "
@@ -6811,6 +7487,26 @@ msgid "Add Setter Property"
msgstr "Agregar Propiedad Setter"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Cambiar Tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Quitar Nodo(s)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Quitar Nodo de Gráfico de Shaders"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Conectar a Nodo:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Condición"
@@ -6839,6 +7535,56 @@ msgid "Get"
msgstr "Obtener"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Cambiar Nombre de Entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "No se puede operar en '..'"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Clipboard de Recursos vacío!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Pegar Nodos"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Quitar Función"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Editar Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Quitar Variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Editando Señal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Quitar Señal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Editando Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Editando Señal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Tipo Base:"
@@ -6859,10 +7605,6 @@ msgid "Edit Variable:"
msgstr "Editar Variable:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Cambiar"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Eliminar Seleccionados"
@@ -6940,14 +7682,6 @@ msgstr ""
"Valor de retorno inválido de _step(), debe ser un entero (seq out), o string "
"(error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "recién presionado"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "recién soltado"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr "Ejecutar en el Navegador"
@@ -6968,92 +7702,6 @@ msgstr "No se pudo leer el archivo:\n"
msgid "Could not open template for export:\n"
msgstr "No se pudo abrir la plantilla para exportar:\n"
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"No se pudo leer el archivo de certificado. Son tanto la ruta como el "
-"password correctos?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Error al crear el objeto firma."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Error al crear la firma del paquete."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"No se encontraron plantillas de exportación.\n"
-"Descargá o instalá plantillas de exportación."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Paquete debug personalizado no encontrado."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Paquete release personalizado no encontrado."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Nombre único inválido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "GUID de producto inválido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "GUID de publisher inválido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Color de fondo inválido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-"Dimensiones de la imagen para el Store Logo inválidas (debería ser 50x50)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-"Dimensiones de la imagen para el logo cuadrado de 44x44 inválidas (debería "
-"ser 44x44)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-"Dimensiones de la imagen para el logo cuadrado de 71x71 inválidas (debería "
-"ser 71x71)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-"Dimensiones de la imagen para el logo cuadrado de 150x150 inválidas (debería "
-"ser 150x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-"Dimensiones de la imagen para el logo cuadrado de 310x310 inválidas (debería "
-"ser 310x310)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-"Dimensiones de la imagen para el logo ancho de 310x150 inválidas (debería "
-"ser 310x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "Dimensiones de la imagen del splash inválidas (debería ser 620x400)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7149,12 +7797,21 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"No se imprimió ningun comportamiento ya que ningún material fue asignado "
+"para procesar las particulas."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
"PathFollow2D solo funciona cuando está seteado como hijo de un nodo Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "La propiedad Path debe apuntar a un nodo Node2D válido para funcionar."
@@ -7183,23 +7840,33 @@ msgstr ""
"VisibilityEnable2D funciona mejor cuando se usa con la raíz de escena "
"editada directamente como padre."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape solo sirve para proveer un collision shape a un nodo derivado "
-"de un CollisionObject. Favor de usarlo solo como hijo de Area, StaticBody, "
-"RigidBody, KinematicBody, etc. para darles un shape."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Se debe proveer un shape para que CollisionShape funcione. Creale un recurso "
-"shape!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7215,6 +7882,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Un CollisionPolygon vacio no tiene ningún efecto en la colisión."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape solo sirve para proveer un collision shape a un nodo derivado "
+"de un CollisionObject. Favor de usarlo solo como hijo de Area, StaticBody, "
+"RigidBody, KinematicBody, etc. para darles un shape."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Se debe proveer un shape para que CollisionShape funcione. Creale un recurso "
+"shape!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7231,6 +7916,13 @@ msgstr ""
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
+msgstr "Nada visible ya que no se asigno pasadas de dibujado a los meshes."
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
msgstr ""
#: scene/3d/remote_transform.cpp
@@ -7255,12 +7947,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Modo de Ejecución:"
+msgid "Raw Mode"
+msgstr "Modo Paneo"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Agregar color actual como preset"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7270,22 +7962,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirmá, por favor..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Abrir un Archivo"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Abrir Archivo(s)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Abrir un Directorio"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Abrir un Archivo o Directorio"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7310,11 +7986,13 @@ msgstr ""
"Usá un container como hijo (VBox, HBox, etc), o un Control y seteá el tamaño "
"mínimo personalizado de forma manual."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"El Entorno por Defecto especificado en Configuracion del Editor (Rendering -"
+"> Viewport -> Entorno por Defecto) no pudo ser cargado."
#: scene/main/viewport.cpp
msgid ""
@@ -7328,6 +8006,106 @@ msgstr ""
"que pueda obtener un tamaño. Alternativamente, hacelo un RenderTarget y "
"asigná su textura interna a algún otro nodo para mostrar."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Cerrar escena? (Los cambios sin guardar se perderán)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr "Abrir el Gestor de Proyectos? (Los cambios sin guardar se perderán)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Cerrar e Ir a Escena Prev."
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Expandir al Padre"
+
+#~ msgid "Del"
+#~ msgstr "Eliminar"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Copiar A Plataforma.."
+
+#~ msgid "just pressed"
+#~ msgstr "recién presionado"
+
+#~ msgid "just released"
+#~ msgstr "recién soltado"
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "No se pudo leer el archivo de certificado. Son tanto la ruta como el "
+#~ "password correctos?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Error al crear el objeto firma."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Error al crear la firma del paquete."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "No se encontraron plantillas de exportación.\n"
+#~ "Descargá o instalá plantillas de exportación."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Paquete debug personalizado no encontrado."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "Paquete release personalizado no encontrado."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Nombre único inválido."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "GUID de producto inválido."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "GUID de publisher inválido."
+
+#~ msgid "Invalid background color."
+#~ msgstr "Color de fondo inválido."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr ""
+#~ "Dimensiones de la imagen para el Store Logo inválidas (debería ser 50x50)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr ""
+#~ "Dimensiones de la imagen para el logo cuadrado de 44x44 inválidas "
+#~ "(debería ser 44x44)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr ""
+#~ "Dimensiones de la imagen para el logo cuadrado de 71x71 inválidas "
+#~ "(debería ser 71x71)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "Dimensiones de la imagen para el logo cuadrado de 150x150 inválidas "
+#~ "(debería ser 150x150)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "Dimensiones de la imagen para el logo cuadrado de 310x310 inválidas "
+#~ "(debería ser 310x310)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr ""
+#~ "Dimensiones de la imagen para el logo ancho de 310x150 inválidas (debería "
+#~ "ser 310x150)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "Dimensiones de la imagen del splash inválidas (debería ser 620x400)."
+
+#~ msgid "RAW Mode"
+#~ msgstr "Modo RAW"
+
#~ msgid "Node From Scene"
#~ msgstr "Nodo desde Escena"
@@ -7413,9 +8191,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "%d Ocurrencia(s) Reemplazada(s)."
-#~ msgid "Please save the scene first."
-#~ msgstr "Por favor guardá la escena primero."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Guardar Strings Traducibles"
@@ -7627,9 +8402,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Clave de Encriptación de Script (256-bits como hex):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "Exportar PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "Exportar PCK de Proyecto"
@@ -7778,8 +8550,5 @@ msgstr ""
#~ msgid "Node Group(s)"
#~ msgstr "Grupo(s) de Nodos"
-#~ msgid "Set region_rect"
-#~ msgstr "Setear region_rect"
-
#~ msgid "Plugin List:"
#~ msgstr "Lista de Plugins:"
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index e8132b9936..8afc7bc844 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -148,7 +148,8 @@ msgstr "به گام بعدی برو"
msgid "Goto Prev Step"
msgstr "به گام قبلی برو"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "خطی"
@@ -384,7 +385,8 @@ msgstr "پرونده:"
msgid "Description:"
msgstr "توضیح:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -395,9 +397,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "بستن"
@@ -472,7 +474,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -537,17 +539,16 @@ msgid "All"
msgstr "همه"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "جستجو:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "جستجو"
@@ -563,7 +564,7 @@ msgstr "جستجو"
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -575,7 +576,7 @@ msgstr "مرتب‌سازی:"
msgid "Reverse"
msgstr "معکوس"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "طبقه‌بندی:"
@@ -728,14 +729,14 @@ msgstr "اتصال به گره:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Ø§ÙØ²ÙˆØ¯Ù†"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "برداشتن"
@@ -846,7 +847,7 @@ msgid "Resource"
msgstr "منبع"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "مسیر"
@@ -930,12 +931,189 @@ msgstr "پوینده‌ی منبع جدا Ø§ÙØªØ§Ø¯Ù‡"
msgid "Delete selected files?"
msgstr "آیا پرونده‌های انتخاب شده حذ٠شود؟"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "حذ٠کن"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "تشکرات!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "خالق:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "صادر کردن پروژه"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "مستمر"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "مستمر"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "در حال وارد کردن دوباره..."
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "بارگذاری خودکار را تغییر نام بده"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "انتخاب شده را حذ٠کن"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "انتخاب شده را حذ٠کن"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "انیمیشن را بهینه‌سازی کن"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "انتخاب شده را به دو تا تکثیر کن"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "کلید Add را جابجا کن"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -949,23 +1127,47 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "نام نامعتبر."
@@ -1066,6 +1268,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1143,6 +1349,22 @@ msgstr "تمام پرونده‌ها (*)"
msgid "Open"
msgstr "باز کن"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "یک پرونده را باز کن"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "پرونده(ها) را باز کن"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "یک دیکشنری را باز کن"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "یک پرونده یا پوشه را باز کن"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1269,6 +1491,15 @@ msgid "Signals:"
msgstr "سیگنال ها:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "وظایÙ:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1286,7 +1517,8 @@ msgid "Search Text"
msgstr "جستجوی متن"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " خروجی:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1336,6 +1568,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1454,11 +1690,12 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "تایید"
+#, fuzzy
+msgid "Save & Close"
+msgstr "یک پرونده را ذخیره کن"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1470,9 +1707,17 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "تایید"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr ""
@@ -1482,12 +1727,8 @@ msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "خروج"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "از ویرایشگر خارج می شوید؟"
+msgid "This operation can't be done without a selected node."
+msgstr ""
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1510,9 +1751,28 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "خروج"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "از ویرایشگر خارج می شوید؟"
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "یک پرونده را ذخیره کن"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1520,6 +1780,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1552,6 +1828,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1568,6 +1849,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "صحنه"
@@ -1616,10 +1901,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1902,6 +2183,10 @@ msgstr ""
msgid "Output"
msgstr "خروجی"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1911,26 +2196,10 @@ msgid "Update"
msgstr "بروز رسانی"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "تشکرات!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "واردکردن قالب ها از درون یک ÙØ§ÛŒÙ„ ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "صادر کردن پروژه"
@@ -1951,9 +2220,18 @@ msgid "Open & Run a Script"
msgstr "باز کردن و اجرای یک اسکریپت"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "به ارث رسیده به وسیله:"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "خطاهای بارگذاری"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2059,6 +2337,16 @@ msgstr "در حال وارد کردن دوباره..."
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2199,10 +2487,27 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "منبع"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2211,6 +2516,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "خطا در بارگذاری:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "خطا در بارگذاری:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2287,6 +2606,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2298,9 +2623,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2340,6 +2684,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "پرونده:"
@@ -2530,6 +2882,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3112,6 +3468,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "پرونده:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3423,6 +3784,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "ویرایش کردن"
@@ -3455,10 +3817,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3568,11 +3926,6 @@ msgstr ""
msgid "Change default type"
msgstr "نوع مقدار آرایه را تغییر بده"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "مواÙقت"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3610,6 +3963,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3649,6 +4010,19 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "خطاهای بارگذاری"
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Signal را اضاÙÙ‡ Ú©Ù†"
@@ -3660,11 +4034,29 @@ msgstr "برداشتن موج"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "خطی"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "خطاهای بارگذاری"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "برداشتن موج"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3689,6 +4081,12 @@ 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 ""
@@ -3979,6 +4377,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4296,6 +4699,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4320,6 +4729,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4373,6 +4786,10 @@ msgid "Close All"
msgstr "بستن"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4405,6 +4822,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "ویرایشگر بستگی"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4469,6 +4891,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4515,6 +4941,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "حذ٠کن"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4820,94 +5251,102 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "تغییر بده"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "به سمت عقب"
+msgid "Surface Changes"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "غلطاندن به پایین."
+msgid "Vertices"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "تغییر بده"
+msgid "Display Overdraw"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "به سمت عقب"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+#, fuzzy
+msgid "Freelook Down"
+msgstr "غلطاندن به پایین."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4915,6 +5354,18 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "انتخاب حالت"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5032,6 +5483,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "ترجیحات"
@@ -5160,6 +5612,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5217,6 +5673,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "برداشتن"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5284,7 +5750,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5306,11 +5772,25 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "خطی"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5346,10 +5826,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5411,7 +5887,7 @@ msgstr "آیا پرونده‌های انتخاب شده حذ٠شود؟"
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5459,6 +5935,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Ùهرست متدها:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5495,10 +5988,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5543,6 +6032,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5559,10 +6061,6 @@ msgstr ""
"آیا انجام این عمل را تایید می کنید!؟‌"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5591,254 +6089,287 @@ msgstr "برداشتن انتخاب شده"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "در حال اتصال..."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "+Meta"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "+Shift"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "+Alt"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "تغییر بده"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "محور"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "دستگاه"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "دکمه"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "دکمه‌ی چپ."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "دکمه‌ی راست."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "دکمه‌ی وسط."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "غلطاندن به بالا."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "غلطاندن به پایین."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "دارایی Getter را اضاÙÙ‡ Ú©Ù†"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "ترجیحات"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "حذ٠کن"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5880,6 +6411,11 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "انتخاب حالت"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "New Script"
msgstr "صحنه جدید"
@@ -5892,6 +6428,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "مسیر به سمت گره:"
@@ -5990,6 +6530,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "مواÙقت"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6033,10 +6578,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6049,6 +6590,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6092,6 +6645,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6144,6 +6705,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "صاÙÛŒ:"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6151,6 +6717,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6182,10 +6756,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6223,31 +6793,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6256,6 +6802,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "خطای بارگذاری قلم."
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
@@ -6265,6 +6816,10 @@ msgid "Error loading script from %s"
msgstr "خطای بارگذاری قلم."
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6307,10 +6862,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6480,6 +7031,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6568,6 +7123,130 @@ msgstr "ÙØ±Ù…ت دیکشنری نمونه نامعتبر (اسکریپت نام
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "نمونه ی دیکشنری نامعتبر است . (زیرکلاس‌های نامعتبر)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "انتخاب شده را حذ٠کن"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "انتخاب شده را به دو تا تکثیر کن"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "جدید ایجاد کن"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "تنها در قسمت انتخاب شده"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "تنها در قسمت انتخاب شده"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "ترجیحات"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "پرونده:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6607,6 +7286,30 @@ msgid "Stack overflow with stack depth: "
msgstr "سرریزی پشته با عمق پشته: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "آرگومان‌های سیگنال را ویرایش کن"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "نوع مقدار آرایه را تغییر بده"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "مقدار آرایه را تغییر بده"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "متغیر را ویرایش کن:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "وظایÙ:"
@@ -6647,26 +7350,6 @@ msgid "Add Signal"
msgstr "Signal را اضاÙÙ‡ Ú©Ù†"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "برداشتن نقش"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "برداشتن متغیر"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "ویرایش متغیر:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "برداشتن موج"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "ویرایش سیگنال:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "انتقال را در انیمیشن تغییر بده"
@@ -6676,6 +7359,15 @@ msgid "Add Node"
msgstr "Ø§ÙØ²ÙˆØ¯Ù† گره"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "کلیدهای نامعتبر را حذ٠کن"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6718,6 +7410,26 @@ msgstr "دارایی Setter را اضاÙÙ‡ Ú©Ù†"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Base Type"
+msgstr "نوع مقدار آرایه را تغییر بده"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "مسیر به سمت گره:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "برداشتن متغیر"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "اتصال به گره:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Condition"
msgstr "انتقال"
@@ -6747,6 +7459,54 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "مقدار آرایه را تغییر بده"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "مسیر به سمت گره:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "برداشتن نقش"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "متغیر را ویرایش کن:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "برداشتن متغیر"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "ویرایش سیگنال:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "برداشتن موج"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "ویرایش متغیر:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "ویرایش سیگنال:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "نوع پایه:"
@@ -6767,10 +7527,6 @@ msgid "Edit Variable:"
msgstr "متغیر را ویرایش کن:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "تغییر بده"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "انتخاب شده را حذ٠کن"
@@ -6851,14 +7607,6 @@ msgstr ""
"مقدار بازگشتی نامعتبر از ()step_ ، باید integer (seq out) ، یا string "
"(error) باشد."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6882,79 +7630,6 @@ msgstr "نمی‌تواند یک پوشه ایجاد شود."
msgid "Could not open template for export:\n"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "نام نامعتبر."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "اندازه‌ی قلم نامعتبر."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7058,6 +7733,13 @@ msgstr ""
"PathFollow2D تنها در زمانی Ú©Ù‡ به عنوان یک ÙØ±Ø²Ù†Ø¯ یک گره Path2D تنظیم شود کار "
"می‌کند."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "دارایی Path باید به یک گره Node2D معتبر اشاره کند تا کار کند."
@@ -7086,24 +7768,33 @@ msgstr ""
"VisibilityEnable2D زمانی بهتر کار می‌کند که در یک ریشه‌ی صحنه‌ی ویرایش شده به "
"صورت پدر (parent) Ø§Ø³ØªÙØ§Ø¯Ù‡ شود."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape تنها برای ÙØ±Ø§Ù‡Ù… کردن یک Ø´Ú©Ù„ برخورد برای یک گره مشتق‌شده‌ی "
-"CollisionObject به کار می‌رود. Ù„Ø·ÙØ§ از آن تنها به عنوان یک ÙØ±Ø²Ù†Ø¯ Area Ùˆ "
-"StaticBody Ùˆ RigidBody Ùˆ KinematicBody Ùˆ غیره Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید تا به آن‌ها یک Ø´Ú©Ù„ "
-"بدهید."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"باید یک Ø´Ú©Ù„ برای CollisionShape ÙØ±Ø§Ù‡Ù… شده باشد تا عمل کند. Ù„Ø·ÙØ§ یک منبع Ø´Ú©Ù„ "
-"برای آن ایجاد کنید!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7120,6 +7811,25 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "یک CollisionPolygon خالی تأثیری بر برخورد ندارد."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape تنها برای ÙØ±Ø§Ù‡Ù… کردن یک Ø´Ú©Ù„ برخورد برای یک گره مشتق‌شده‌ی "
+"CollisionObject به کار می‌رود. Ù„Ø·ÙØ§ از آن تنها به عنوان یک ÙØ±Ø²Ù†Ø¯ Area Ùˆ "
+"StaticBody Ùˆ RigidBody Ùˆ KinematicBody Ùˆ غیره Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید تا به آن‌ها یک Ø´Ú©Ù„ "
+"بدهید."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"باید یک Ø´Ú©Ù„ برای CollisionShape ÙØ±Ø§Ù‡Ù… شده باشد تا عمل کند. Ù„Ø·ÙØ§ یک منبع Ø´Ú©Ù„ "
+"برای آن ایجاد کنید!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr "یک منبع NavigationMesh باید برای یک گره تنظیم یا ایجاد شود تا کار کند."
@@ -7137,6 +7847,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7158,7 +7875,7 @@ msgstr ""
"AnimatedSprite3D ÙØ±ÛŒÙ…‌ها را نمایش دهد."
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7173,22 +7890,6 @@ msgstr "هشدار!"
msgid "Please Confirm..."
msgstr "Ù„Ø·ÙØ§ تأیید کنید..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "یک پرونده را باز کن"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "پرونده(ها) را باز کن"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "یک دیکشنری را باز کن"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "یک پرونده یا پوشه را باز کن"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "+Ctrl"
@@ -7210,7 +7911,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7228,6 +7929,14 @@ msgstr ""
"تا بتواند یک اندازه بگیرد. در غیر اینصورت، آن را یک RenderTarget قرار دهید و "
"Ø¨Ø§ÙØª داخلی آن را برای نمایش به تعدادی گره تخصیص دهید."
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "نام نامعتبر."
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "اندازه‌ی قلم نامعتبر."
+
#~ msgid "Path property must point to a valid Particles2D node to work."
#~ msgstr "دارایی Path باید به یک گره Particles2D معتبر اشاره کند تا کار کند."
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index d2b6a98223..6cd55dbc6a 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-04-16 13:21+0000\n"
+"PO-Revision-Date: 2017-08-25 14:41+0000\n"
"Last-Translator: ekeimaja <ekeimaja@gmail.com>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 2.14-dev\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -148,7 +148,8 @@ msgstr "Mene seuraavaan vaiheeseen"
msgid "Goto Prev Step"
msgstr "Mene edelliseen vaiheeseen"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineaarinen"
@@ -384,7 +385,8 @@ msgstr " Tiedostot"
msgid "Description:"
msgstr "Kuvaus:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Asenna"
@@ -395,9 +397,9 @@ msgstr "Asenna"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Sulje"
@@ -473,7 +475,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -539,17 +541,16 @@ msgid "All"
msgstr "Kaikki"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Hae:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Hae"
@@ -565,7 +566,7 @@ msgstr "Hae"
msgid "Import"
msgstr "Tuo"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -577,7 +578,7 @@ msgstr "Lajittele:"
msgid "Reverse"
msgstr "Käänteinen"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Kategoria:"
@@ -730,14 +731,14 @@ msgstr "Yhdistä Nodeen:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Lisää"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Poista"
@@ -848,7 +849,7 @@ msgid "Resource"
msgstr "Resurssi"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Polku"
@@ -930,12 +931,193 @@ msgstr ""
msgid "Delete selected files?"
msgstr "Poista valitut tiedostot?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Poista"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Kiitos Godot-yhteisöltä!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Kiitos!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Tekijä:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Projektinhallinta"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Projektinhallinta"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Vakiot:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Vakiot:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Purettu"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Paketti asennettu onnistuneesti!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Paketti asennettu onnistuneesti!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Lisää tyhjä"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Nimeä funktio uudelleen"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Poista valitut"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Debug-asetukset"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Monista"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Poista valitut"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Lisää väylä"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Poista Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Monista animaatio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Siirrä lisäyspainiketta"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -949,23 +1131,51 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Virheellinen tiedostolaajennus.\n"
+"Käytä .fnt -tiedostoa."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Lisää väylä"
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Lataa"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Lataa olemassaoleva resurssi levyltä ja muokkaa sitä."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Tallenna nimellä"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Oletus"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Virheellinen nimi."
@@ -1066,6 +1276,10 @@ msgid "Updating scene.."
msgstr "Päivitetään sceneä..."
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Valitse hakemisto"
@@ -1143,6 +1357,22 @@ msgstr "Kaikki tiedostot (*)"
msgid "Open"
msgstr "Avaa"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Avaa tiedosto"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Avaa tiedosto(t)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Avaa hakemisto"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Avaa tiedosto tai hakemisto"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1273,6 +1503,15 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animaatiot"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Vakiot:"
@@ -1290,7 +1529,8 @@ msgid "Search Text"
msgstr "Hae tekstiä"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Tuloste:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1340,6 +1580,11 @@ msgid "Creating Thumbnail"
msgstr "Luodaan pienoiskuvaa"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Tätä toimintoa ei voi tehdä ilman Sceneä."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr "Sceneä ei voitu tallentaa. Riippuvuuksia ei voitu tyydyttää."
@@ -1467,12 +1712,13 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Kyllä"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Tallenna tiedosto"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Sulje scene? (tallentamattomat muutokset menetetään)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1484,9 +1730,17 @@ msgid "No"
msgstr "Node"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Kyllä"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Tätä sceneä ei ole koskaan tallennettu. Tallenna ennen suorittamista?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Tätä toimintoa ei voi tehdä ilman Sceneä."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Tuo Mesh-kirjasto"
@@ -1496,12 +1750,9 @@ msgid "Export Tile Set"
msgstr "Tuo tileset"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Lopeta"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Poistu editorista?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Tätä toimintoa ei voi tehdä ilman Sceneä."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1524,18 +1775,52 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Lopeta"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Poistu editorista?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Projektinhallinta"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Tallenna tiedosto"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Avaa projektinhallinta?\n"
-"(tallentamattomat muutokset menetetään)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Valitse pääscene"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1572,6 +1857,11 @@ msgstr "Tallenna Layout"
msgid "Delete Layout"
msgstr "Poista Layout"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Oletus"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Vaihda Scenen välilehteä"
@@ -1589,6 +1879,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Scene"
@@ -1637,10 +1931,6 @@ msgstr "Tallenna kaikki scenet"
msgid "Close Scene"
msgstr "Sulje scene"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Avaa viimeaikainen"
@@ -1925,6 +2215,10 @@ msgstr "Node"
msgid "Output"
msgstr "Tuloste"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Tuo uudelleen"
@@ -1934,26 +2228,10 @@ msgid "Update"
msgstr "Päivitä"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Kiitos Godot-yhteisöltä!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Kiitos!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Tuo mallit ZIP-tiedostosta"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Vie projekti"
@@ -1974,9 +2252,18 @@ msgid "Open & Run a Script"
msgstr "Avaa & suorita skripti"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Uusi peritty Scene..."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Lataa virheet"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Valitse"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2085,6 +2372,16 @@ msgstr "Tuodaan uudelleen"
msgid "Re-Import Changed Resources"
msgstr "Tuo uudelleen vaihtuneet resurssit"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Kirjoita logiikka _run() -metodiin."
@@ -2220,10 +2517,28 @@ msgid "Cannot navigate to '"
msgstr "Ei voida navigoida '"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Tallenna & tuo uudelleen"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Lähde:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Sama lähde ja kohdetiedosto, ei toimenpiteitä."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Sama lähde ja kohdepolku, ei toimenpiteitä."
@@ -2232,6 +2547,20 @@ msgid "Can't move directories to within themselves."
msgstr "Hakemisto(j)a ei voida siirtää itseensä."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Virhe ladattaessa kuvaa:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Virhe tuotaessa:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2308,6 +2637,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Siirrä"
@@ -2319,9 +2654,30 @@ msgstr "Lisää ryhmään"
msgid "Remove from Group"
msgstr "Poista ryhmästä"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Tuodaan Scene..."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Tuo 3D Scene"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2361,6 +2717,14 @@ msgid "Saving.."
msgstr "Tallennetaan..."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr " Tiedostot"
@@ -2553,6 +2917,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3145,6 +3513,11 @@ msgid "New name:"
msgstr "Uusi nimi:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Suodattimet"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Skaalaus:"
@@ -3458,6 +3831,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Muokkaa"
@@ -3490,10 +3864,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Laajenna Parentiin"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Luuranko..."
@@ -3603,11 +3973,6 @@ msgstr ""
msgid "Change default type"
msgstr "Muuta oletustyyppiä"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3647,6 +4012,14 @@ msgstr "Muokkaa polygonia (poista piste)"
msgid "Create a new polygon from scratch."
msgstr "Luo uusi piste tyhjästä."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Luo Poly3D"
@@ -3689,6 +4062,21 @@ msgstr "Päivitä Scenestä"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "Muokkaa käyrää"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Muokkaa käyrää"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Lataa resurssi"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "Lisää syöte"
@@ -3699,12 +4087,31 @@ msgstr "Siirrä pistettä"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Lineaarinen"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Oikea näkymä"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "Lataa resurssi"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
-msgstr "Muokkaa käyrää"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Siirrä pistettä"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3728,6 +4135,12 @@ 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 ""
@@ -4020,6 +4433,12 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Ominaisuudet:"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4346,6 +4765,12 @@ msgid "Clear Recent Files"
msgstr "Tyhjennä luut"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "Virhe tallennettaessa teemaa"
@@ -4370,6 +4795,10 @@ msgid "Save Theme As.."
msgstr "Tallenna teema nimellä..."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Seuraava skripti"
@@ -4422,6 +4851,11 @@ msgid "Close All"
msgstr "Sulje kaikki"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Näytä suosikit"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4455,6 +4889,11 @@ msgid "Keep Debugger Open"
msgstr "Pidä debuggeri auki"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Avaa editorissa"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Ikkuna"
@@ -4522,6 +4961,10 @@ msgstr ""
"kuuluvat, on ladattu"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Poimi väri"
@@ -4569,6 +5012,11 @@ msgid "Move Down"
msgstr "Siirrä alas"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Poista piste"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Sisennä vasemmalle"
@@ -4876,37 +5324,6 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Mene eteenpäin"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Taaksepäin"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Rulla alas."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -4974,10 +5391,63 @@ msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Ota käyttöön"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Mene eteenpäin"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Taaksepäin"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Rulla alas."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Esikatselu"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Valitse tila"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Siirtotila (W)"
@@ -5098,6 +5568,7 @@ msgid "View Grid"
msgstr "Näytä ruudukko"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Asetukset"
@@ -5226,6 +5697,11 @@ msgid "StyleBox Preview:"
msgstr "StyleBox:in esikatselu:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Tekstuurialue"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5284,6 +5760,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Poista valitut"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Poista"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Teema"
@@ -5354,7 +5840,7 @@ msgstr "Välilehti 2"
msgid "Tab 3"
msgstr "Välilehti 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Tyyppi:"
@@ -5376,12 +5862,27 @@ msgid "Color"
msgstr "Väri"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Framen valinta"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Monista"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineaarinen"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Sanko"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5416,10 +5917,6 @@ msgid "Pick Tile"
msgstr "Poimi tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Valitse"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Käännä 0 astetta"
@@ -5479,7 +5976,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Lisää..."
@@ -5526,6 +6023,25 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Tekstuuri"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Metodilista:"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "Vie"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5566,10 +6082,6 @@ msgid "The following files failed extraction from package:"
msgstr "Seuraavien tiedostojen purku paketista epäonnistui:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Paketti asennettu onnistuneesti!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Tuo olemassaoleva projekti"
@@ -5614,6 +6126,22 @@ msgid "Are you sure to open more than one project?"
msgstr "Haluatko varmasti avata useamman kuin yhden projektin?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Pääsceneä ei ole määritetty, haluatko valita sen?\n"
+"Voit muuttaa sitä myöhemmin projektin asetuksista."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5628,10 +6156,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Projektinhallinta"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Projektiluettelo"
@@ -5660,256 +6184,288 @@ msgstr "Poista malli"
msgid "Exit"
msgstr "Poistu"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Yhdistä..."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Näppäin... "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Joystick-painike"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Paina näppäintä..."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Vasen painike"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Oikea painike"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Keskipainike"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Rulla ylös painike"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Rulla alas painike"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Painike 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Painike 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Painike 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Painike 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Muuta"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Akseli"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Lisää syöttötapahtuma"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "Lisää tyhjä"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Laite"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Painike"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Vasen painike."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Oikea painike."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Keskimmäinen painike."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Rulla ylös."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Rulla alas."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Asetukset"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Poista syöte"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Virhe tallennettaessa asetuksia."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Asetukset tallennettu onnistuneesti."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Lisää käännös"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Poista käännös"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Projektin asetukset"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5950,6 +6506,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Valitse Node"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5962,6 +6523,11 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Valitse tuotava(t) node(t)"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr "Poimi Node"
@@ -6057,6 +6623,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6100,10 +6671,6 @@ msgid "Delete Node(s)?"
msgstr "Poista Node(t)?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Tätä toimintoa ei voi tehdä ilman Sceneä."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6116,6 +6683,18 @@ msgid "Save New Scene As.."
msgstr "Tallenna uusi scene nimellä..."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Käy järkeen!"
@@ -6159,6 +6738,14 @@ msgid "Edit Connections"
msgstr "Muokkaa yhteyksiä"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Avaa editorissa"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Poista Node(t)"
@@ -6209,6 +6796,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Suodattimet"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6216,6 +6808,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Tyhjennä!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6247,11 +6847,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Debug-asetukset"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6289,39 +6884,20 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Avaa editorissa"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Tyhjennä!"
-
-#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "Valitse Node"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Virhe ladattaessa kuvaa:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Ei voitu luoda skriptiä tiedostojärjestelmään."
@@ -6330,6 +6906,10 @@ msgid "Error loading script from %s"
msgstr "Virhe ladattaessa skripti %s:stä"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Polku on tyhjä"
@@ -6371,10 +6951,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6545,6 +7121,10 @@ msgid "Change Light Radius"
msgstr "Muuta valon sädettä"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Muuta kameran näkökenttää"
@@ -6626,6 +7206,136 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Poista valitut"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Monista valinta"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Huippunäkymä"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Poistettu käytöstä"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Pyöritä/kierrä"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Pyöritä/kierrä"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Pyöritä/kierrä"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Luo uusi"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Luo uusi projekti"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Pelkkä valinta"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Pelkkä valinta"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Näyttöruudun asetukset"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Poimi tile"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " Tiedostot"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6657,6 +7367,29 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Signal Arguments"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Vaihda taulukon arvon tyyppiä"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Vaihda syötteen nimi"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Muokkaa muuttujaa:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funktiot:"
@@ -6697,26 +7430,6 @@ msgid "Add Signal"
msgstr "Lisää signaali"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Poista funktio"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Poista muuttuja"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Muokataan muuttujaa:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Poista signaali"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Muokataan signaalia:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Vaihda lauseketta"
@@ -6725,6 +7438,15 @@ msgid "Add Node"
msgstr "Lisää Node"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Poista virheelliset avaimet"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6765,6 +7487,26 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Muuta tyyppiä"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Poista Node(t)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Poista muuttuja"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Yhdistä Nodeen:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Ehtolause"
@@ -6793,6 +7535,55 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Vaihda syötteen nimi"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Resurssien leikepöytä on tyhjä!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Liitä Nodet"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Poista funktio"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Muokkaa muuttujaa:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Poista muuttuja"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Muokataan signaalia:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Poista signaali"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Muokataan muuttujaa:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Muokataan signaalia:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6813,10 +7604,6 @@ msgid "Edit Variable:"
msgstr "Muokkaa muuttujaa:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Muuta"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Poista valitut"
@@ -6890,14 +7677,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "juuri painettu"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "juuri julkaistu"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr "Suorita selaimessa"
@@ -6918,77 +7697,6 @@ msgstr "Ei voitu lukea tiedostoa:\n"
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Virhe luotaessa allekirjoitusoliota."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Virheellinen taustaväri."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7069,6 +7777,13 @@ msgstr ""
"PathFollow2D toimii ainoastaan ollessaan asetettuna Path2D Node:n "
"lapsiolioksi."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "Polku täytyy olla määritetty toimivaan Node2D solmuun toimiakseen."
@@ -7091,17 +7806,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7115,6 +7845,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Tyhjällä CollisionPolygon:illa ei ole vaikutusta törmäyksessä."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7130,6 +7873,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7147,12 +7897,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr "Kääntötila"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Lisää nykyinen väri esiasetukseksi"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7162,22 +7912,6 @@ msgstr "Huomio!"
msgid "Please Confirm..."
msgstr "Ole hyvä ja vahvista..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Avaa tiedosto"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Avaa tiedosto(t)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Avaa hakemisto"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Avaa tiedosto tai hakemisto"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7202,7 +7936,7 @@ msgstr ""
"Käytä containeria lapsena (VBox, HBox, jne), tai Control:ia ja aseta haluttu "
"minimikoko manuaalisesti."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7220,6 +7954,31 @@ msgstr ""
"koon. Muutoin tee siitä RenderTarget ja aseta sen sisäinen tekstuuri "
"johonkin Nodeen näkyväksi."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Sulje scene? (tallentamattomat muutokset menetetään)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Avaa projektinhallinta?\n"
+#~ "(tallentamattomat muutokset menetetään)"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Laajenna Parentiin"
+
+#~ msgid "just pressed"
+#~ msgstr "juuri painettu"
+
+#~ msgid "just released"
+#~ msgstr "juuri julkaistu"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Virhe luotaessa allekirjoitusoliota."
+
+#~ msgid "Invalid background color."
+#~ msgstr "Virheellinen taustaväri."
+
#~ msgid "Node From Scene"
#~ msgstr "Node Scenestä"
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index bb60c74475..c499138c77 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -2,6 +2,7 @@
# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
# This file is distributed under the same license as the Godot source code.
#
+# Antoine Carrier <ac.g392@gmail.com>, 2017.
# Brice <bbric@free.fr>, 2016.
# Chenebel Dorian <LoubiTek54@gmail.com>, 2016-2017.
# derderder77 <derderder77380@gmail.com>, 2016.
@@ -22,8 +23,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-05-25 09:31+0000\n"
-"Last-Translator: Nathan Lovato <nathan.lovato.art@gmail.com>\n"
+"PO-Revision-Date: 2017-07-03 19:36+0000\n"
+"Last-Translator: Gilles Roudiere <gilles.roudiere@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -31,7 +32,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 2.14.1\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -98,9 +99,8 @@ msgid "Anim Track Change Value Mode"
msgstr "Modifier le mode de valeur de la piste d'animation"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Track Change Wrap Mode"
-msgstr "Modifier le mode de valeur de la piste d'animation"
+msgstr "Piste d'Animation Changer Mode de Conclusion"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -162,7 +162,8 @@ msgstr "Aller à l'étape suivante"
msgid "Goto Prev Step"
msgstr "Aller à l'étape précédente"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Linéaire"
@@ -376,21 +377,19 @@ msgstr "Modifier valeur du tableau"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Libérer"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "Version :"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "Constantes :"
+msgstr "Contenu:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "Fichier"
+msgstr "Voir Fichiers"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -398,7 +397,8 @@ msgstr "Fichier"
msgid "Description:"
msgstr "Description :"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Installer"
@@ -409,106 +409,100 @@ msgstr "Installer"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Fermer"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "Impossible de résoudre le nom de l'hôte:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "Impossible à résoudre."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Erreur de connection, veuillez essayer à nouveau."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "Connecter…"
+msgstr "Connection impossible."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "Connecter au nœud :"
+msgstr "Connection à l'hôte impossible:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "Pas de réponse de l'hôte:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Pas de réponse."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "Format de fichier demandé inconnu :"
+msgstr "La requête a échoué, code retourné:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Req. a Échoué."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "La requête a échoué, trop de redirections"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "Boucle de Redirection."
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Échec:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "Vérification du téléchargement échouée, le fichier a été altéré."
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "Attendu:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "A:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "Vérification de brouillage sha256 échouée"
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Erreur dans le téléchargement d'une ressource:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Succès!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Récupération:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "Enregistrement…"
+msgstr "Résolution.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "Connecter…"
+msgstr "Connexion en cours.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "En test"
+msgstr "Envoi d'une requête.."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -517,11 +511,11 @@ msgstr "Erreur d'enregistrement de la ressource !"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "Inactif"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Réessayer"
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -530,40 +524,40 @@ msgstr "Télécharger"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Le téléchargement de cette ressource est déjà en cours!"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "first"
-msgstr ""
+msgstr "prem"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "préc"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "suiv"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "dern"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "Tout"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Rechercher :"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Rechercher"
@@ -579,7 +573,7 @@ msgstr "Rechercher"
msgid "Import"
msgstr "Importer"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Extensions"
@@ -591,7 +585,7 @@ msgstr "Trier :"
msgid "Reverse"
msgstr "Inverser"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Catégorie :"
@@ -745,14 +739,14 @@ msgstr "Connecter au nœud :"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Ajouter"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Supprimer"
@@ -861,7 +855,7 @@ msgid "Resource"
msgstr "Ressource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Chemin"
@@ -948,12 +942,196 @@ msgstr "Explorateur de ressources orphelines"
msgid "Delete selected files?"
msgstr "Supprimer les fichiers sélectionnés ?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Supprimer"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "La communauté Godot vous dit merci !"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Merci !"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Contributeurs Godot Engine"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Auteur :"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Gestionnaire de projets"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "Développeurs"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestionnaire de projets"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "Développeurs"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Contenu:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Contenu:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Non compressé"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Paquetage installé avec succès !"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Paquetage installé avec succès !"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Ajouter vide"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Ouvrir la Mise en Page des Bus Audio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Ouvrir la Mise en Page des Bus Audio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Ouvrir la Mise en Page des Bus Audio"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Supprimer la selection"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Options de débogage"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Dupliquer"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Supprimer la selection"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Ajouter un bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Supprimer la disposition"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Dupliquer l'animation"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Déplacer l'action"
+
#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Save Audio Bus Layout As.."
@@ -969,23 +1147,53 @@ msgid "Open Audio Bus Layout"
msgstr "Ouvrir la Mise en Page des Bus Audio"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Extension de fichier non valide.\n"
+"Veuillez utiliser .fnt."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Ajouter un bus"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Créer une nouvelle ressource"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Charger"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Charger une ressource existante depuis la disque et la modifier."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Enregistrer sous"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Enregistrer la Disposition des Bus Audio Sous.."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Par défaut"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Nom invalide."
@@ -1092,6 +1300,11 @@ msgid "Updating scene.."
msgstr "Mise à jour de la scène…"
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Veuillez enregistrer la scène d'abord."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Choisir un répertoire"
@@ -1169,6 +1382,22 @@ msgstr "Tous les fichiers (*)"
msgid "Open"
msgstr "Ouvrir"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Ouvrir un fichier"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Ouvrir un ou plusieurs fichiers"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Ouvrir un répertoire"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Ouvrir un fichier ou un répertoire"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1294,6 +1523,15 @@ msgid "Signals:"
msgstr "Signaux :"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animations"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constantes :"
@@ -1310,7 +1548,8 @@ msgid "Search Text"
msgstr "Chercher du texte"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Sortie :"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1360,6 +1599,11 @@ msgid "Creating Thumbnail"
msgstr "Création de l'aperçu"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Cette opération ne peut être réalisée sans une scène."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1493,12 +1737,13 @@ msgid "Quick Open Script.."
msgstr "Ouvrir un script rapidement…"
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Oui"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Enregistrer un fichier"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Fermer la scène ? (les modifications non sauvegardées seront perdues)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1510,10 +1755,18 @@ msgid "No"
msgstr "Nœud"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Oui"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
"Cette scène n'a jamais été enregistrée. L'enregistrer avant de la lancer ?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Cette opération ne peut être réalisée sans une scène."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Exporter une bibliothèque de maillages"
@@ -1523,12 +1776,9 @@ msgid "Export Tile Set"
msgstr "Exporter un ensemble de tuiles"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Quitter"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Quitter l'éditeur ?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Cette opération ne peut être réalisée sans une scène."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1551,18 +1801,52 @@ msgid "Quick Run Scene.."
msgstr "Lancer une scène rapidement…"
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Quitter"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Quitter l'éditeur ?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Gestionnaire de projets"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Enregistrer un fichier"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Ouvrir le gestionnaire de projets ?\n"
-"(les modifications non sauvegardées seront perdues)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Choisir une scène principale"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1601,6 +1885,11 @@ msgstr "Enregistrer la disposition"
msgid "Delete Layout"
msgstr "Supprimer la disposition"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Par défaut"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Basculer entre les onglets de scène"
@@ -1617,6 +1906,11 @@ msgstr "%s fichier(s) ou dossier(s) supplémentaire(s)"
msgid "Distraction Free Mode"
msgstr "Mode sans distraction"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Mode sans distraction"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Scène"
@@ -1635,7 +1929,7 @@ msgstr "Onglet precedent"
#: editor/editor_node.cpp
msgid "Filter Files.."
-msgstr "Filtrer des fichiers…"
+msgstr "Filtrer Fichiers.."
#: editor/editor_node.cpp
msgid "Operations with scene files."
@@ -1665,10 +1959,6 @@ msgstr "Enregistrer toutes les scènes"
msgid "Close Scene"
msgstr "Fermer la scène"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Fermer, aller à la scène précédente"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Fichiers récents"
@@ -1705,9 +1995,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "Outils divers liés au projet ou à la scène."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Nouveau projet"
+msgstr "Projet"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1857,12 +2146,14 @@ msgid "Online Docs"
msgstr "Fermer les documentations"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Q&A"
-msgstr ""
+msgstr "Questions et Réponses"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Issue Tracker"
-msgstr ""
+msgstr "Traqueur de problèmes"
#: editor/editor_node.cpp
msgid "About"
@@ -1972,6 +2263,10 @@ msgstr "Nœud"
msgid "Output"
msgstr "Sortie"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Ré-importer"
@@ -1981,26 +2276,10 @@ msgid "Update"
msgstr "Mettre à jour"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "La communauté Godot vous dit merci !"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Merci !"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importer des modèles depuis un fichier ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Exporter le projet"
@@ -2021,9 +2300,18 @@ msgid "Open & Run a Script"
msgstr "Ouvrir et exécuter un script"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Nouvelle scène héritée…"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Erreurs de chargement"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Sélectionner"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2104,9 +2392,8 @@ msgid "Inclusive"
msgstr "Inclusif"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Self"
-msgstr "Soi-même"
+msgstr "Soi"
#: editor/editor_profiler.cpp
#, fuzzy
@@ -2133,6 +2420,16 @@ msgstr "Ré-importation"
msgid "Re-Import Changed Resources"
msgstr "Ré-importer les ressources modifiées"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Écrivez votre code dans la méthode _run()."
@@ -2194,9 +2491,8 @@ msgid "(Missing)"
msgstr "(Manquant)"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "(Current)"
-msgstr "Actuel :"
+msgstr "(Actuel)"
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
@@ -2284,10 +2580,28 @@ msgid "Cannot navigate to '"
msgstr "Ne peux pas acceder à '"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Enregistrer et ré-importer"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Source :"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Fichiers source et destination identiques, rien à faire."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Chemins source et destination identiques, rien à faire."
@@ -2296,6 +2610,20 @@ msgid "Can't move directories to within themselves."
msgstr "Impossible de déplacer des répertoires vers eux-mêmes."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Erreur de chargement d'image :"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Erreur d'importation :"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "Impossible d'opérer sur « .. »"
@@ -2375,6 +2703,12 @@ msgstr ""
"sélectionné."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Déplacer"
@@ -2386,10 +2720,31 @@ msgstr "Ajouter au groupe"
msgid "Remove from Group"
msgstr "Supprimer du groupe"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Importation de la scène…"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Importer une scène 3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2429,6 +2784,14 @@ msgid "Saving.."
msgstr "Enregistrement…"
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Fichier"
@@ -2625,6 +2988,10 @@ msgstr "Maillage(s) source :"
msgid "Mesh"
msgstr "Maillage"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Surface %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Pas d'échantillons à importer !"
@@ -3220,6 +3587,11 @@ msgid "New name:"
msgstr "Nouveau nom :"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Modifier les filtres de nœud"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Échelle :"
@@ -3536,6 +3908,7 @@ msgstr "Rendre la sélection des enfants de l'objet de nouveau possible."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Modifier"
@@ -3568,10 +3941,6 @@ msgid "Use Pixel Snap"
msgstr "Aligner au pixel près"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Étendre au parent"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Squelette…"
@@ -3684,11 +4053,6 @@ msgstr ""
msgid "Change default type"
msgstr "Changer la valeur par défaut"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3728,6 +4092,14 @@ msgstr "Modifier le polygone (supprimer un point)"
msgid "Create a new polygon from scratch."
msgstr "Créer un nouveau polygone à partir de rien."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Créer un Poly3D"
@@ -3768,6 +4140,21 @@ msgstr "Mettre à jour depuis la scène"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "Modifier la carte de courbes"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Modifier la carte de courbes"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Charger une ressource"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "Ajouter une entrée"
@@ -3778,13 +4165,31 @@ msgstr "Supprimer le chemin du point"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Linéaire"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Vue de droite"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "Charger une ressource"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "Modifier la carte de courbes"
+msgid "Remove Curve Point"
+msgstr "Supprimer le chemin du point"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3808,6 +4213,12 @@ 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 ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Créer un polygone occulteur"
@@ -4067,21 +4478,20 @@ msgstr "Peupler"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
-msgstr "Créer un polygone de navigation"
+msgstr "Créer Polygone de Navigation"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Remove Poly And Point"
-msgstr "Supprimer le polygone et le point"
+msgstr "Retirer Polygone et Point"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
-msgstr "Effacer le masque d'émission"
+msgstr "Effacer Masque d'Émission"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
-msgstr "Générer un AABB"
+msgstr "Générer AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -4089,11 +4499,11 @@ msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
-msgstr "Erreur de chargement de l'image :"
+msgstr "Erreur de chargement d'image :"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "No pixels with transparency > 128 in image.."
-msgstr "Pas de pixels avec une transparence > 128 dans l'image…"
+msgstr "Pas de pixels avec transparence > 128 dans l'image.."
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Set Emission Mask"
@@ -4101,21 +4511,26 @@ msgstr "Définir le masque d'émission"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Générer Rect de Visibilité"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
-msgstr "Charger le masque d'émission"
+msgstr "Charger Masque d'Émission"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Vertex"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
-msgstr "Compte de points générés :"
+msgstr "Compte de Points Générés :"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "Temps moyen (seconde)"
+msgstr "Temps de Génération (sec):"
#: editor/plugins/particles_2d_editor_plugin.cpp
#, fuzzy
@@ -4123,88 +4538,83 @@ msgid "Emission Mask"
msgstr "Définir le masque d'émission"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "Créer depuis la scène"
+msgstr "Capturer depuis Pixel"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "Positions d'émission :"
+msgstr "Couleurs d'Émission"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
-msgstr "Le nœud ne contient pas de géométrie."
+msgstr "Nœud ne contient pas de géométrie."
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry (faces)."
-msgstr "Le nœud ne contient pas de géométrie (faces)."
+msgstr "Nœud ne contient pas de géométrie (faces)."
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
+msgstr "Un matériel processeur de type 'ParticlesMaterial' est requis."
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Faces contain no area!"
-msgstr "Les faces n'ont pas de surface !"
+msgstr "Faces ne contiennent pas de zone!"
#: editor/plugins/particles_editor_plugin.cpp
msgid "No faces!"
-msgstr "Pas de faces !"
+msgstr "Pas de faces!"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generate AABB"
-msgstr "Générer un AABB"
+msgstr "Générer AABB"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Mesh"
-msgstr "Créer un émetteur à partir d'un maillage"
+msgstr "Créer Points d'Émission depuis Maillage"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Node"
-msgstr "Créer un émetteur à partir d'un nœud"
+msgstr "Créer Points d'Émission Depuis Noeud"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Clear Emitter"
-msgstr "Effacer l'émetteur"
+msgstr "Effacer l'Émetteur"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emitter"
-msgstr "Créer un émetteur"
+msgstr "Créer Émetteur"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Points:"
-msgstr "Positions d'émission :"
+msgstr "Points d'Émission:"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Surface Points"
-msgstr "Surface %d"
+msgstr "Points de Surface"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "Points de Surface+Normale (Dirigée)"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Source: "
-msgstr "Remplissage d'émission :"
+msgstr "Source d'Émission: "
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "Générer un AABB"
+msgstr "Générer AABB de Visibilité"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
-msgstr "Supprimer le point d'une courbe"
+msgstr "Supprimer Point de la Courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
#, fuzzy
@@ -4439,6 +4849,12 @@ msgid "Clear Recent Files"
msgstr "Effacer les os"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "Erreur d'enregistrement du thème"
@@ -4463,6 +4879,10 @@ msgid "Save Theme As.."
msgstr "Enregistrer le thème sous…"
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Script suivant"
@@ -4516,6 +4936,11 @@ msgid "Close All"
msgstr "Fermer tout"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Basculer le favori"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4548,6 +4973,11 @@ msgid "Keep Debugger Open"
msgstr "Garder le débogueur ouvert"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Ouvrir dans l'éditeur"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Fenêtre"
@@ -4617,6 +5047,10 @@ msgstr ""
"qui ils appartiennent est ouverte"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Prélever une couleur"
@@ -4664,6 +5098,11 @@ msgid "Move Down"
msgstr "Déplacer vers le bas"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Supprimer le point"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Indenter vers la gauche"
@@ -4970,37 +5409,6 @@ msgid "Animation Key Inserted."
msgstr "Clé d'animation insérée."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Avancer"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "À l'envers"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Molette vers le bas."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -5068,10 +5476,64 @@ msgid "Audio Listener"
msgstr "Écouteur audio"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Activer"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Avancer"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "À l'envers"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Molette vers le bas."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Aperçu"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialogue XForm"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Sélectionner le mode"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt + Bouton droit : sélection détaillée par liste"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Move déplacement (W)"
@@ -5192,6 +5654,7 @@ msgid "View Grid"
msgstr "Afficher la grille"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Paramètres"
@@ -5268,8 +5731,9 @@ msgid "Resource clipboard is empty or not a texture!"
msgstr "Le presse-papiers des ressources est vide ou n'est pas une texture !"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
msgid "Paste Frame"
-msgstr "Coller une image"
+msgstr "Coller Frame"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Empty"
@@ -5320,6 +5784,11 @@ msgid "StyleBox Preview:"
msgstr "Aperçu de la StyleBox :"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Région de texture"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Mode d'aimantation :"
@@ -5378,6 +5847,16 @@ msgid "Remove Item"
msgstr "Supprimer l'item"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Supprimer des items de classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Supprimer"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Thème"
@@ -5445,7 +5924,7 @@ msgstr "Onglet 2"
msgid "Tab 3"
msgstr "Onglet 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Type :"
@@ -5467,12 +5946,27 @@ msgid "Color"
msgstr "Couleur"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Supprimer la sélection"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Peindre sur la TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Dupliquer"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Linéaire"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Seau"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5507,10 +6001,6 @@ msgid "Pick Tile"
msgstr "Sélectionner une case"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Sélectionner"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Tourner de 0 degrés"
@@ -5574,7 +6064,7 @@ msgstr "Supprimer les fichiers sélectionnés ?"
msgid "Presets"
msgstr "Pré-réglage…"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Ajouter…"
@@ -5633,6 +6123,24 @@ msgid "Make Patch"
msgstr "Chemin de destination :"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Texture"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Liste des méthodes :"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "Exporter le PCK/ZIP"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5677,10 +6185,6 @@ msgstr ""
"Quelle action doit être prise ? :"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Paquetage installé avec succès !"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importer un projet existant"
@@ -5728,6 +6232,23 @@ msgstr "Voulez-vous vraiment ouvrir plus d'un projet à la fois ?"
#: editor/project_manager.cpp
#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Aucune scène principale n'a jamais été définie, en sélectionner une ?\n"
+"Vous pouvez la modifier ultérieurement dans les « Paramètres du projet » "
+"dans la catégorie « application »."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Are you sure to run more than one project?"
msgstr "Voulez-vous vraiment lancer plus d'un projet à la fois ?"
@@ -5745,10 +6266,6 @@ msgstr ""
"existants. Est-ce que vous confirmez ?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gestionnaire de projets"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Liste des projets"
@@ -5777,258 +6294,292 @@ msgstr "Supprimer l'item"
msgid "Exit"
msgstr "Quitter"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Connection impossible."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Touche "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Bouton de joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "Axe de joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Bouton de souris"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Action invalide (tout passe, sauf « / » ou « : »)."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "L'action « %s » existe déjà !"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Renommer l'événement d'action d'entrée"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Ajouter un événement d'action d'entrée"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Méta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Maj+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Contrôle+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Appuyez sur une touche…"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Index du bouton de la souris :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Bouton gauche"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Bouton droite"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Bouton du milieu"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Molette vers le haut"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Molette vers le bas"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Bouton 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Bouton 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Bouton 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Bouton 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Changer"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "Index de l'axe du joystick :"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Axe"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "Index du bouton du joystick :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Ajouter une action d'entrée"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Effacer l'événement d'action d'entrée"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "Ajouter vide"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Périphérique"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Bouton"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Bouton gauche."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Bouton droite."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Bouton du milieu."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Molette vers le haut."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Molette vers le bas."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Ajouter une propriété accesseur"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Propriété :"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Paramètres"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Supprimer l'entrée"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Erreur d'enregistrement des paramètres."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Paramètres enregistrés avec succès."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Ajouter une traduction"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Supprimer la traduction"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Ajouter un chemin remappé"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Paramètres du projet (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "Général"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Propriété :"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Supprimer"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Copier vers la plate-forme…"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "Contrôles"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Action :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Périphérique :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Index :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Localisation"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Traductions"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Traductions :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Remaps"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Ressources :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Remaps par langue :"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Langue"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -6070,6 +6621,11 @@ msgid "Assign"
msgstr "Assigner"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Sélectionner un nœud"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Nouveau script"
@@ -6084,6 +6640,11 @@ msgstr "Erreur de chargement du fichier : ce n'est pas une ressource !"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Sélectionner les nœuds à importer"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "Sélectionner un nœud"
@@ -6180,6 +6741,11 @@ msgstr "Arguments de la scène principale :"
msgid "Scene Run Settings"
msgstr "Paramètres d'exécution de la scène"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "Aucun parent dans lequel instancier les scènes."
@@ -6225,10 +6791,6 @@ msgid "Delete Node(s)?"
msgstr "Supprimer le(s) nœud(s) ?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Cette opération ne peut être réalisée sans une scène."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6241,6 +6803,18 @@ msgid "Save New Scene As.."
msgstr "Enregistrer la nouvelle scène sous…"
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Enfants modifiables"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Charger en tant que fictif"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "Abandonner l'instanciation"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "C'est sensé !"
@@ -6286,6 +6860,14 @@ msgid "Edit Connections"
msgstr "Modifier les connexions"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Effacer l'héritage"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Ouvrir dans l'éditeur"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Supprimer nœud(s)"
@@ -6341,6 +6923,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtres"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Attach a new or existing script for the selected node."
msgstr "Créer un nouveau script pour le nœud sélectionné."
@@ -6349,6 +6936,14 @@ msgstr "Créer un nouveau script pour le nœud sélectionné."
msgid "Clear a script for the selected node."
msgstr "Créer un nouveau script pour le nœud sélectionné."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "Effacer l'héritage ? (Pas de retour en arrière !)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Effacer !"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Afficher/cacher le Spatial"
@@ -6380,11 +6975,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Options de débogage"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instance :"
@@ -6423,32 +7013,8 @@ msgid "Scene Tree (Nodes):"
msgstr "Arbre de scène (nœuds) :"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Enfants modifiables"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Charger en tant que fictif"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "Abandonner l'instanciation"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Ouvrir dans l'éditeur"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Effacer l'héritage"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "Effacer l'héritage ? (Pas de retour en arrière !)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Effacer !"
+msgid "Node Configuration Warning!"
+msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6456,6 +7022,11 @@ msgstr "Sélectionner un nœud"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Erreur de chargement d'image :"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Impossible de créer le script dans le système de fichiers."
@@ -6465,6 +7036,10 @@ msgid "Error loading script from %s"
msgstr "Erreur de chargement de la scène depuis %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/A"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Le chemin est vide"
@@ -6508,10 +7083,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/A"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6683,6 +7254,10 @@ msgid "Change Light Radius"
msgstr "Changer le rayon d'une lumière"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Changer le champ de vision d'une caméra"
@@ -6770,6 +7345,137 @@ msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
"Instance invalide pour le format de dictionnaire (sous-classes invalides)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Supprimer la selection"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Dupliquer la sélection"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Vue de dessus"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Désactivé"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Contrôle: Tourner"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Contrôle: Tourner"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Contrôle: Tourner"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Créer un nouveau"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Créer un nouveau projet"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Supprimer la TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Sélection uniquement"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Sélection uniquement"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Paramètres d'alignement"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Instance :"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fichier"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6809,6 +7515,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Débordement de pile avec profondeur de pile: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Modifier les arguments du signal :"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Modifier type de valeur du tableau"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Changer le nom de l'entrée"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Changer la valeur par défaut"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Modifier la variable :"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Fonctions :"
@@ -6849,26 +7580,6 @@ msgid "Add Signal"
msgstr "Ajouter un signal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Supprimer la fonction"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Supprimer la variable"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Modification de la variable :"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Supprimer le signal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Modification du signal :"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Changer l'expression"
@@ -6877,6 +7588,16 @@ msgid "Add Node"
msgstr "Ajouter un nœud"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Supprimer les clés invalides"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Dupliquer le(s) nœud(s) de graphe"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Maintenir Meta pour déposer un accesseur. Maintenir Maj pour déposer une "
@@ -6921,6 +7642,26 @@ msgid "Add Setter Property"
msgstr "Ajouter une propriété mutateur"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Changer le type"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Supprimer le(s) nœud(s)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Supprimer le nœud de graphe Shader"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Connecter au nœud :"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Condition"
@@ -6949,6 +7690,56 @@ msgid "Get"
msgstr "Récupérer"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Changer le nom de l'entrée"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "Impossible d'opérer sur « .. »"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Le presse-papiers des ressources est vide !"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Coller les nœuds"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Supprimer la fonction"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Modifier la variable :"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Supprimer la variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Modification du signal :"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Supprimer le signal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Modification de la variable :"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Modification du signal :"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Type de base :"
@@ -6969,10 +7760,6 @@ msgid "Edit Variable:"
msgstr "Modifier la variable :"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Changer"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Supprimer la selection"
@@ -7050,14 +7837,6 @@ msgstr ""
"La valeur retournée par _step() est invalide, elle doit être un entier (seq "
"out), ou une chaîne (erreur)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "vient d'être appuyé"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "vient d'être relâché"
-
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Run in Browser"
@@ -7082,88 +7861,6 @@ msgstr "Impossible de trouver la tuile :"
msgid "Could not open template for export:\n"
msgstr "Impossible de créer le dossier."
-#: platform/uwp/export/export.cpp
-#, 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 ?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Erreur en créant la signature de l'objet."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Erreur en créant la signature du paquet."
-
-#: platform/uwp/export/export.cpp
-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."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Le paquet personnalisé de débogage n'a pas été trouvé."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Le paquet personnalisé de parution n'a pas été trouvé."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Nom unique invalide."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "GUID de produit invalide."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "GUID d'éditeur invalide."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Couleur d'arrière-plan invalide."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Dimensions de l'image incorrectes (devraient être 50x50)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-"Dimensions d'image de logo carré 44x44 invalides (devraient être 44x44)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-"Dimensions d'image de logo carré 71x71 invalides (devraient être 71x71)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-"Dimensions d'image de logo carré 150x150 invalides (devraient être 150x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-"Dimensions d'image de logo carré 310x310 invalides (devraient être 310x310)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-"Dimensions d'image de logo large 310x150 invalides (devraient être 310x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-"Dimensions d'image d'écran de démarrage invalides (devraient être 620x300)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7269,6 +7966,13 @@ msgstr ""
"Un PathFollow2D fonctionne seulement quand défini comme un enfant d'un nœud "
"Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7299,22 +8003,33 @@ msgstr ""
"Un VisibilityEnable2D fonctionne mieux lorsqu'il est directement enfant du "
"nœud racine de la scène."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-"Un CollisionShape n'est utile que lorsqu'il est enfant d'un nœud dérivé de "
-"CollisionObject, comme Area, StaticBody, RigidBody, KinematicBody, etc."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Afin qu'une CollisionShape fonctionne, il lui faut une forme. Créez une "
-"ressource de forme pour cette CollisionShape !"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7329,6 +8044,23 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Un CollisionPolygon vide n'a pas d'effet sur les collisions."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"Un CollisionShape n'est utile que lorsqu'il est enfant d'un nœud dérivé de "
+"CollisionObject, comme Area, StaticBody, RigidBody, KinematicBody, etc."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Une CollisionShape nécessite une forme pour fonctionner. Créez une ressource "
+"de forme pour cette CollisionShape !"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7348,6 +8080,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7370,8 +8109,8 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Mode d'exécution :"
+msgid "Raw Mode"
+msgstr "Mode navigation"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
@@ -7385,22 +8124,6 @@ msgstr "Alerte !"
msgid "Please Confirm..."
msgstr "Veuillez confirmer…"
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Ouvrir un fichier"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Ouvrir un ou plusieurs fichiers"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Ouvrir un répertoire"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Ouvrir un fichier ou un répertoire"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7423,7 +8146,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7441,6 +8164,109 @@ msgstr ""
"nœud de type Control afin qu'il en obtienne une taille. Sinon, faites-en une "
"RenderTarget et assignez sa texture à un nœud pouvant l'afficher."
+#~ 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 "Expand to Parent"
+#~ msgstr "Étendre au parent"
+
+#~ msgid "Del"
+#~ msgstr "Supprimer"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Copier vers la plate-forme…"
+
+#~ msgid "just pressed"
+#~ msgstr "vient d'être appuyé"
+
+#~ msgid "just released"
+#~ msgstr "vient d'être relâché"
+
+#, 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"
@@ -7526,9 +8352,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "%d occurrence(s) remplacée(s)."
-#~ msgid "Please save the scene first."
-#~ msgstr "Veuillez enregistrer la scène d'abord."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Enregistrer les chaînes traduisibles"
@@ -7732,9 +8555,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Clé de chiffrement des scripts (256 bits en hexadécimal) :"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "Exporter le PCK/ZIP"
-
#~ msgid "Export Project PCK"
#~ msgstr "Exporter le PCK du projet"
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index d6f3caa1e9..d21541c339 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -145,7 +145,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -377,7 +378,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -388,9 +390,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr ""
@@ -463,7 +465,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -524,17 +526,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -550,7 +551,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -562,7 +563,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -714,14 +715,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -826,7 +827,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -906,12 +907,178 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -925,21 +1092,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1042,6 +1232,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1119,6 +1313,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1244,6 +1454,14 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1260,7 +1478,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1310,6 +1528,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1428,11 +1650,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1444,23 +1666,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1484,9 +1710,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1494,6 +1738,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1526,6 +1786,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1542,6 +1807,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1590,10 +1859,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1873,6 +2138,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1882,26 +2151,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1922,9 +2175,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2025,6 +2286,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2160,10 +2431,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2172,6 +2459,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2248,6 +2547,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2259,9 +2564,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2301,6 +2625,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2487,6 +2819,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3068,6 +3404,10 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3379,6 +3719,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3411,10 +3752,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3523,11 +3860,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3565,6 +3897,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3604,6 +3944,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
msgstr ""
@@ -3612,11 +3964,27 @@ msgid "Remove point"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+msgid "Remove Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3641,6 +4009,12 @@ 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 ""
@@ -3930,6 +4304,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4246,6 +4625,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4270,6 +4655,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4322,6 +4711,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4354,6 +4747,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4417,6 +4814,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4463,6 +4864,10 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Delete Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4767,91 +5172,99 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4859,6 +5272,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4975,6 +5399,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5103,6 +5528,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5160,6 +5589,14 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5227,7 +5664,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5249,11 +5686,23 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5289,10 +5738,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5352,7 +5797,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5399,6 +5844,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5435,10 +5896,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5483,6 +5940,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5497,10 +5967,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5528,254 +5994,283 @@ msgstr ""
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5816,6 +6311,10 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5828,6 +6327,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr ""
@@ -5923,6 +6426,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5966,10 +6474,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5982,6 +6486,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6024,6 +6540,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6074,6 +6598,10 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6081,6 +6609,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6112,10 +6648,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6152,35 +6684,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6192,6 +6704,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6232,10 +6748,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6400,6 +6912,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6481,6 +6997,122 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Delete Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6512,63 +7144,63 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
+msgid "Change Signal Arguments"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
+msgid "Change Argument Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
+msgid "Change Argument name"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
+msgid "Set Variable Default Value"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
+msgid "Set Variable Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
+msgid "Functions:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
+msgid "Variables:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
+msgid "Name is not a valid identifier:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
+msgid "Name already in use by another func/var/signal:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
+msgid "Rename Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
+msgid "Rename Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
+msgid "Rename Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Add Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
+msgid "Add Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
+msgid "Add Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6580,6 +7212,14 @@ msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6620,6 +7260,22 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Move Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6648,6 +7304,50 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6668,10 +7368,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6745,14 +7441,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6773,77 +7461,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6922,6 +7539,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6944,17 +7568,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -6968,6 +7607,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -6983,6 +7635,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -6999,7 +7658,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7014,22 +7673,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7048,7 +7691,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 15221690f2..6fbf6fabde 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -163,7 +163,8 @@ msgstr "Lanjut ke Langkah Berikutnya"
msgid "Goto Prev Step"
msgstr "Lanjut ke Langkah Sebelumnya"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Linier"
@@ -404,7 +405,8 @@ msgstr "File:"
msgid "Description:"
msgstr "Deskripsi:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -415,9 +417,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Tutup"
@@ -493,7 +495,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -557,17 +559,16 @@ msgid "All"
msgstr "Semua"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Cari:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Cari"
@@ -583,7 +584,7 @@ msgstr "Cari"
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -595,7 +596,7 @@ msgstr "Sortir:"
msgid "Reverse"
msgstr "Terbalik"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Kategori:"
@@ -751,14 +752,14 @@ msgstr "Sambungkan Ke Node:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Tambah"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Hapus"
@@ -868,7 +869,7 @@ msgid "Resource"
msgstr "Resource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Path"
@@ -957,12 +958,187 @@ msgstr "Penjelajah Resource Orphan"
msgid "Delete selected files?"
msgstr "Hapus file yang dipilih?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Hapus"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Konstanta:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Konstanta:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Mengimpor ulang"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Namai kembali Autoload"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Hapus yang Dipilih"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Hapus yang Dipilih"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Hapus Penampilan"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplikat Pilihan"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Pindahkan Kunci Tambah"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -976,23 +1152,47 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Bawaan"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Nama tidak sah."
@@ -1096,6 +1296,11 @@ msgid "Updating scene.."
msgstr "Memperbaharui scene.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Mohon simpan scene terlebih dahulu."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Pilih sebuah Direktori"
@@ -1173,6 +1378,22 @@ msgstr "Semua File-file (*)"
msgid "Open"
msgstr "Buka"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Buka sebuah File"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Buka File (File-file)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Buka sebuah Direktori"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Buka sebuah File atau Direktori"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1302,6 +1523,15 @@ msgid "Signals:"
msgstr "Sinyal-sinyal:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Fungsi-fungsi:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Konstanta:"
@@ -1319,7 +1549,8 @@ msgid "Search Text"
msgstr "Mencari Teks"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Keluaran:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1370,6 +1601,11 @@ msgid "Creating Thumbnail"
msgstr "Membuat Thumbnail"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Tindakan ini tidak dapat dibatalkan. Pulihkan saja?"
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1502,12 +1738,13 @@ msgid "Quick Open Script.."
msgstr "Buka Cepat Script.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Ya"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Simpan sebuah File"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1518,9 +1755,17 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Ya"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Scene ini belum pernah disimpan. Simpan sebelum menjalankan?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Ekspor Mesh Library"
@@ -1530,12 +1775,8 @@ msgid "Export Tile Set"
msgstr "Ekspor Tile Set"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Keluar"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Keluar editor?"
+msgid "This operation can't be done without a selected node."
+msgstr ""
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1558,18 +1799,51 @@ msgid "Quick Run Scene.."
msgstr "Jalankan Cepat Scene.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Keluar"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Keluar editor?"
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Simpan sebuah File"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Buka Manajer Proyek?\n"
-"(Perubahan yang tidak disimpan akan hilang)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Pilih sebuah Scene Utama"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1605,6 +1879,11 @@ msgstr "Simpan Penampilan"
msgid "Delete Layout"
msgstr "Hapus Penampilan"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Bawaan"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Pilih Tab Scene"
@@ -1621,6 +1900,11 @@ msgstr "%d file atau folder lagi"
msgid "Distraction Free Mode"
msgstr "Mode Tanpa Gangguan"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Mode Tanpa Gangguan"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Suasana"
@@ -1669,10 +1953,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1955,6 +2235,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1964,26 +2248,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -2004,9 +2272,18 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Scene Turunan Baru.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2111,6 +2388,16 @@ msgstr "Mengimpor ulang"
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2251,10 +2538,27 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Resource"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2263,6 +2567,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Error menyimpan TileSet!"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Error memuat:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2339,6 +2657,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2350,9 +2674,29 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Memperbaharui Scene"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2392,6 +2736,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "File:"
@@ -2581,6 +2933,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3164,6 +3520,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "File:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3475,6 +3836,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Edit"
@@ -3507,10 +3869,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3620,11 +3978,6 @@ msgstr ""
msgid "Change default type"
msgstr "Ubah Tipe Nilai Array"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Oke"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3662,6 +4015,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3701,6 +4062,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Tambahkan Sinyal"
@@ -3711,11 +4084,29 @@ msgid "Remove point"
msgstr "Hapus Sinyal"
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "Linier"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Hapus Sinyal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3740,6 +4131,12 @@ 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 ""
@@ -4030,6 +4427,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4347,6 +4749,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4371,6 +4779,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4424,6 +4836,11 @@ msgid "Close All"
msgstr "Tutup"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Beralih Favorit"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4456,6 +4873,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Editor Ketergantungan"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4520,6 +4942,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4566,6 +4992,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Hapus"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4871,37 +5302,6 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Maju"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Ke belakang"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Scroll kebawah."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -4964,10 +5364,63 @@ msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Aktifkan"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Maju"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Ke belakang"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Scroll kebawah."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Pratinjau:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Metode Publik:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5085,6 +5538,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5213,6 +5667,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5270,6 +5728,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Hapus Pilihan"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Hapus"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5337,7 +5805,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5359,11 +5827,25 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Beri Skala Seleksi"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Linier"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5399,10 +5881,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5465,7 +5943,7 @@ msgstr "Hapus file yang dipilih?"
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5513,6 +5991,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Daftar Fungsi:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5550,10 +6045,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5598,6 +6089,23 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Tidak ada scene utama yang pernah didefinisikan, pilih satu?\n"
+"Anda dapat mengubahnya nanti di akhir dalam \"Project Settings\" dibawah "
+"kategori 'application'."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5612,10 +6120,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5644,256 +6148,289 @@ msgstr "Hapus Pilihan"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Menyambungkan.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Ubah"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Axis"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Perangkat"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Tombol"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Tombol Kiri."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Tombol Kanan."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Tombol Tengah."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
#, fuzzy
msgid "Wheel Up."
msgstr "Scroll keatas."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
#, fuzzy
msgid "Wheel Down."
msgstr "Scroll kebawah."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Tambahkan Properti Getter"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Mengatur.."
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Hapus"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5935,6 +6472,11 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "Metode Publik:"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "New Script"
msgstr "Scene Baru"
@@ -5947,6 +6489,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "Path ke Node:"
@@ -6045,6 +6591,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Oke"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6088,10 +6639,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6104,6 +6651,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6147,6 +6706,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6200,6 +6767,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filter:"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6207,6 +6779,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6238,10 +6818,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6279,31 +6855,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6312,6 +6864,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Error memuat font."
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Tidak dapat membuat folder."
@@ -6321,6 +6878,10 @@ msgid "Error loading script from %s"
msgstr "Error memuat font."
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6363,10 +6924,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6537,6 +7094,10 @@ msgid "Change Light Radius"
msgstr "Ganti Radius Lampu"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Change Camera FOV"
msgstr "Ganti FOV Kamera"
@@ -6621,6 +7182,129 @@ msgstr "Format kamus acuan tidak sah (skrip tidak sah pada @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Kamus acuan tidak sah (sub kelas tidak sah)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Hapus yang Dipilih"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplikat Pilihan"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Dinonaktifkan"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Buat Baru"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Hanya yang Dipilih"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Hanya yang Dipilih"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "File:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6660,6 +7344,30 @@ msgid "Stack overflow with stack depth: "
msgstr "Tumpukan melimpah dengan kedalaman tumpukan: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Edit Argumen-argumen Sinyal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Ubah Tipe Nilai Array"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Ubah Nilai Array"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Edit Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Fungsi-fungsi:"
@@ -6700,26 +7408,6 @@ msgid "Add Signal"
msgstr "Tambahkan Sinyal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Hapus Fungsi"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Hapus Variabel"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Mengedit Variabel:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Hapus Sinyal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Mengedit Sinyal:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Ubah Pernyataan"
@@ -6728,6 +7416,15 @@ msgid "Add Node"
msgstr "Tambahkan Node"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Hapus Tombol-tombol yang tidak sah"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Tahan Meta untuk meletakkan sebuah Getter. Tahan Shift untuk meletakkan "
@@ -6772,6 +7469,26 @@ msgstr "Tambahkan Properti Setter"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Base Type"
+msgstr "Ubah Tipe Nilai Array"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Salin Resource"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Hapus Variabel"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Sambungkan Ke Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Condition"
msgstr "Transisi"
@@ -6801,6 +7518,54 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Ubah Nilai Array"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Path ke Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Hapus Fungsi"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Edit Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Hapus Variabel"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Mengedit Sinyal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Hapus Sinyal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Mengedit Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Mengedit Sinyal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Tipe Dasar:"
@@ -6821,10 +7586,6 @@ msgid "Edit Variable:"
msgstr "Edit Variabel:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Ubah"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Hapus yang Dipilih"
@@ -6904,14 +7665,6 @@ msgstr ""
"Nilai kembali dari _step() tidak sah, seharusnya integer (seq out), atau "
"string (error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6935,79 +7688,6 @@ msgstr "Tidak dapat membuat folder."
msgid "Could not open template for export:\n"
msgstr "Tidak dapat membuat folder."
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "Nama tidak sah."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "Ukuran font tidak sah."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7114,6 +7794,13 @@ msgstr ""
"PathFollow2D hanya bekerja ketika diatur sebagai sebuah child dari sebuah "
"node Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7143,24 +7830,33 @@ msgstr ""
"VisibilityEnable2D bekerja dengan sangat baik ketika digunakan dengan "
"mengedit root scene secara langsung sebagai parent."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape hanya berfungsi untuk memberikan sebuah bentuk collision ke "
-"node CollisionObject asal. Mohon hanya gunakan ini sebagai child dari Area, "
-"StaticBody, RigidBody, KinematicBody, dll. untuk memberi mereka sebuah "
-"bentuk."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Sebuah bentuk harus disediakan untuk CollisionShape untuk fungsi. Mohon "
-"ciptakan sebuah resource bentuk untuk itu!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7177,6 +7873,25 @@ msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
"Sebuah CollisionPolygon yang kosong tidak memiliki efek pada collision."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape hanya berfungsi untuk memberikan sebuah bentuk collision ke "
+"node CollisionObject asal. Mohon hanya gunakan ini sebagai child dari Area, "
+"StaticBody, RigidBody, KinematicBody, dll. untuk memberi mereka sebuah "
+"bentuk."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Sebuah bentuk harus disediakan untuk CollisionShape untuk fungsi. Mohon "
+"ciptakan sebuah resource bentuk untuk itu!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7196,6 +7911,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7219,7 +7941,7 @@ msgstr ""
"'Frames' agar AnimatedSprite3D menampilkan frame-frame."
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7234,22 +7956,6 @@ msgstr "Peringatan!"
msgid "Please Confirm..."
msgstr "Mohon konfirmasi..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Buka sebuah File"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Buka File (File-file)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Buka sebuah Direktori"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Buka sebuah File atau Direktori"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7271,7 +7977,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7291,6 +7997,24 @@ msgstr ""
"sebuah RenderTarget dan tetapkannya tekstur internal untuk beberapa node "
"untuk ditampilkan."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Buka Manajer Proyek?\n"
+#~ "(Perubahan yang tidak disimpan akan hilang)"
+
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "Nama tidak sah."
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "Ukuran font tidak sah."
+
#~ msgid "Node From Scene"
#~ msgstr "Node Dari Scene"
@@ -7317,9 +8041,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Diganti Kejadian (Kejadian-kejadian) %d."
-#~ msgid "Please save the scene first."
-#~ msgstr "Mohon simpan scene terlebih dahulu."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Simpan Kalimat yang Dapat Diterjemahkan"
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 28ed2d5b0a..9ca5debd55 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-05-23 14:21+0000\n"
+"PO-Revision-Date: 2017-08-21 16:46+0000\n"
"Last-Translator: Dario Bonfanti <bonfi.96@hotmail.it>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
@@ -19,7 +19,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 2.14.1-dev\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -149,7 +149,8 @@ msgstr "Vai a Step Successivo"
msgid "Goto Prev Step"
msgstr "Vai a Step Precedente"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineare"
@@ -362,21 +363,19 @@ msgstr "Cambia Valore Array"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Gratuito"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "Versione:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "Costanti:"
+msgstr "Contenuti:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr " Files"
+msgstr "Vedi Files"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -384,7 +383,8 @@ msgstr " Files"
msgid "Description:"
msgstr "Descrizione:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Installa"
@@ -395,161 +395,152 @@ msgstr "Installa"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Chiudi"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "Impossibile risolvere l'hostname:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "Impossibile risolvete."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Errore di connessione, si prega di riprovare."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "Connetti.."
+msgstr "Impossibile connettersi."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "Connetti A Nodo:"
+msgstr "Impossibile connetersi all'host:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "Nessuna risposta dall'host:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Nessuna risposta."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "Formato file richiesto sconosciuto:"
+msgstr "Richiesta fallita, codice di return:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Rich. Fall."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "Richiesta fallita, troppi ridirezionamenti"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "Ridirigi Loop."
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Fallito:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "Hash di download non buono, si presume il file sia stato manipolato."
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "Previsto:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "Ottenuto:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "Check hash sha256 fallito"
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Errore di Download Asset:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Successo!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Recupero:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "Salvataggio.."
+msgstr "Risolvendo.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "Connetti.."
+msgstr "Connettendo.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "Testing"
+msgstr "Richiedendo.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "Errore salvando la Risorsa!"
+msgstr "Errore nel fare richiesta"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "Inattivo"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Riprova"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Download Error"
-msgstr "Scarica"
+msgstr "Errore durante il download"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Il download per questo asset è già in corso!"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "primo"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "prec"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "seguente"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "ultimo"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "Tutti"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Cerca:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Cerca"
@@ -565,7 +556,7 @@ msgstr "Cerca"
msgid "Import"
msgstr "Importa"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Plugins"
@@ -577,7 +568,7 @@ msgstr "Ordina:"
msgid "Reverse"
msgstr "Inverti"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Categoria:"
@@ -731,14 +722,14 @@ msgstr "Connetti A Nodo:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Aggiungi"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Rimuovi"
@@ -847,7 +838,7 @@ msgid "Resource"
msgstr "Risorsa"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Percorso"
@@ -930,42 +921,256 @@ msgstr "Esplora Risorse Orfane"
msgid "Delete selected files?"
msgstr "Eliminare i file selezionati?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Elimina"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Grazie dalla comunità di Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Grazie!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Contributori a Godot Engine"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autore:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Gestione Progetti"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "Sviluppatori"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestione Progetti"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "Sviluppatori"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Contenuti:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Contenuti:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Decompressi"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Pacchetto Installato Con Successo!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Pacchetto Installato Con Successo!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Aggiungi Evento"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Apri Layout Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Apri Layout Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Apri Layout Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Elimina selezionati"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opzioni subscena"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "duplica"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Elimina selezionati"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Aggiungi Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Elimina Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplica Animazione"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Azione di spostamento"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "Salva Layout Bus Audio Come..."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr "Posizione di Nuovo Layout..."
+msgstr "Posizione per Nuovo Layout..."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
msgstr "Apri Layout Audio Bus"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Estensione file invalida.\n"
+"Si prega di usare .font."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Aggiungi Bus"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Crea Nuova Risorsa"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Carica"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Carica una risorsa esistente dal disco e modificala."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Salva Come"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Salva Layout Bus Audio Come..."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Nome Invalido."
@@ -1072,6 +1277,11 @@ msgid "Updating scene.."
msgstr "Aggiornando la scena.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Si prega di salvare prima la scena."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Scegli una Directory"
@@ -1149,6 +1359,22 @@ msgstr "Tutti i File (*)"
msgid "Open"
msgstr "Apri"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Apri un File"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Apri File(s)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Apri una Directory"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Apri un File o una Directory"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1274,6 +1500,15 @@ msgid "Signals:"
msgstr "Segnali:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animazioni"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Costanti:"
@@ -1290,7 +1525,8 @@ msgid "Search Text"
msgstr "Cerca Testo"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Output:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1340,6 +1576,11 @@ msgid "Creating Thumbnail"
msgstr "Creazione Miniature"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Questa operazione non può essere eseguita senza una scena."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1415,13 +1656,12 @@ msgid "There is no defined scene to run."
msgstr "Non c'è nessuna scena definita da eseguire."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"Nessuna scena principale è mai stata definita, selezionarne una?\n"
+"Nessuna scena principale è stata definita, selezionarne una?\n"
"Puoi cambiarla successivamente da \"Impostazioni Progetto\" sotto la "
"categoria 'applicazioni'."
@@ -1472,26 +1712,34 @@ msgid "Quick Open Script.."
msgstr "Apri Script Rapido.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Si"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Salva un File"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Chiudi scena? (I cambiamenti non salvati saranno persi)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Salva Scena Come.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Nodo"
+msgstr "No"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Si"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Questa scena non è mai stata salvata. Salvare prima di eseguire?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Questa operazione non può essere eseguita senza una scena."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Esporta Libreria Mesh"
@@ -1501,12 +1749,9 @@ msgid "Export Tile Set"
msgstr "Esporta Tile Set"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Esci"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Uscire dall'editor?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Questa operazione non può essere eseguita senza una scena."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1529,18 +1774,52 @@ msgid "Quick Run Scene.."
msgstr "Esegui Scena Rapido.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Esci"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Uscire dall'editor?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Gestione Progetti"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Salva un File"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Aprire la Gestione Progetti?\n"
-"(I cambiamenti non salvati saranno persi)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Scegli una Scena Principale"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1579,6 +1858,11 @@ msgstr "Salva layout"
msgid "Delete Layout"
msgstr "Elimina Layout"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Default"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Cambia Tab di Scena"
@@ -1595,6 +1879,11 @@ msgstr "% altri file o cartelle"
msgid "Distraction Free Mode"
msgstr "Modalità Senza Distrazioni"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Modalità Senza Distrazioni"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Scena"
@@ -1643,10 +1932,6 @@ msgstr "Salva tutte le Scene"
msgid "Close Scene"
msgstr "Chiudi Scena"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Vai a Scena Preced."
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Apri Recente"
@@ -1683,9 +1968,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "Strumenti di progetto o scena vari."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Nuovo Progetto"
+msgstr "Progetto"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1799,9 +2083,8 @@ msgstr ""
"filesystem in rete."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "Modifica"
+msgstr "Editor"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1828,17 +2111,16 @@ msgid "Classes"
msgstr "Classi"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Chiudi Documentazione"
+msgstr "Documentazione Online"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Domande e Risposte"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "Tracciatore Segnalazioni"
#: editor/editor_node.cpp
msgid "About"
@@ -1948,6 +2230,10 @@ msgstr "Nodo"
msgid "Output"
msgstr "Output"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Re-Importa"
@@ -1957,26 +2243,10 @@ msgid "Update"
msgstr "Aggiorna"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Grazie dalla comunità di Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Grazie!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importa templates Da File ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Esporta Progetto"
@@ -1997,38 +2267,41 @@ msgid "Open & Run a Script"
msgstr "Apri e Esegui uno Script"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Nuova Scena Ereditata.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Carica Errori"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Seleziona"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Apri nell Editor"
+msgstr "Apri Editor 2D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Apri nell Editor"
+msgstr "Apri Editor 3D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Apri nell Editor"
+msgstr "Apri Editor Script"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "Esporta Libreria"
+msgstr "Apri Libreria degli Asset"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Apri nell Editor"
+msgstr "Apri l'Editor successivo"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Apri nell Editor"
+msgstr "Apri l'Editor precedente"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2106,6 +2379,16 @@ msgstr "Re-Importando"
msgid "Re-Import Changed Resources"
msgstr "Re-Importando Risorse Cambiate"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Scrivi la logica nel metodo _run()."
@@ -2245,10 +2528,28 @@ msgid "Cannot navigate to '"
msgstr "Impossibile navigare a '"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Salva e Re-Importa"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Sorgente:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Stessi file di origine e e destinazione, non faccio nulla."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
"Stessi percorsi \n"
@@ -2259,6 +2560,20 @@ msgid "Can't move directories to within themselves."
msgstr "Impossibile muovere le directory dentro se stesse."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Errore di caricamento immagine:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Errore di importazione:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "Non posso operare su '..'"
@@ -2335,6 +2650,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "Istanzia le scene selezionate come figlie del nodo selezionato."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Sposta"
@@ -2346,10 +2667,31 @@ msgstr "Aggiungi a Gruppo"
msgid "Remove from Group"
msgstr "Rimuovi da Gruppo"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superficie %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Importando Scena.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Importa Scena 3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2388,6 +2730,14 @@ msgid "Saving.."
msgstr "Salvataggio.."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr " Files"
@@ -2475,13 +2825,12 @@ msgid "No target font resource!"
msgstr "Nessuna risorsa font di destinazione!"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
"Estensione file invalida.\n"
-"Si prega di usare .fnt."
+"Si prega di usare .font."
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2580,6 +2929,10 @@ msgstr "Mesh Sorgente(i):"
msgid "Mesh"
msgstr "Mesh"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Superficie %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Nessun sample da importare!"
@@ -2960,9 +3313,8 @@ msgid "Compress"
msgstr "Comprimi"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "Aggiungi a Progetto (godot.cfg)"
+msgstr "Aggiungi a Progetto (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3166,6 +3518,11 @@ msgid "New name:"
msgstr "Nuovo nome:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Modifica Filtri Nodi"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Scala:"
@@ -3481,6 +3838,7 @@ msgstr "Ripristina l'abilità dei figli dell'oggetto di essere selezionati."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Modifica"
@@ -3513,10 +3871,6 @@ msgid "Use Pixel Snap"
msgstr "Usa Snap a Pixel"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Espandi a Genitore"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Scheletro.."
@@ -3625,11 +3979,6 @@ msgstr "Questa operazione richiede un solo nodo selezionato."
msgid "Change default type"
msgstr "Cambia tipo di default"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3669,6 +4018,14 @@ msgstr "Modifica Poly (Rimuovi Punto)"
msgid "Create a new polygon from scratch."
msgstr "Crea un nuovo poligono dal nulla."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Crea Poly3D"
@@ -3709,22 +4066,53 @@ msgstr "Aggiorna da Scena"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Add point"
-msgstr "Aggiungi Input"
+msgid "Modify Curve Point"
+msgstr "Modifica Curva"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Modifica la Mappa Curve"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Carica preset"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "Aggiungi punto"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "Rimuovi Punto Percorso"
+msgstr "Rimuovi punto"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Lineare"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Vista Destra"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "Carica Risorsa"
+msgstr "Carica preset"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
-msgstr "Modifica Curva"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Rimuovi Punto Percorso"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3748,6 +4136,12 @@ msgid "Item List Editor"
msgstr "Editor Lista Elementi"
#: 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 "Crea Poligono di occlusione"
@@ -4011,13 +4405,14 @@ msgstr "Cancella Maschera Emissione"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
-msgstr "Genera AABB"
+msgstr "Generando AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"É solamente possibile impostare il punto in un materiale di processo "
+"ParticlesMaterial"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4033,36 +4428,38 @@ msgstr "Imposta Maschera Emissione"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Genera Rect Visibilità"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
msgstr "Carica Maschera Emissione"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Vertici"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "Conteggio Punti Generati:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "Tempo Medio (sec)"
+msgstr "Tempo di Generazione (sec):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "Imposta Maschera Emissione"
+msgstr "Maschera Emissione"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "Crea da Scena"
+msgstr "Cattura da Pixel"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "Punti Emissione:"
+msgstr "Colori Emissione"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4125,23 +4522,20 @@ msgid "Emission Source: "
msgstr "Sorgente Emissione: "
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "Genera AABB"
+msgstr "Genera Visibilità AABB"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
msgstr "Rimuovi Punto da Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "Sposta Out-Control sulla Curva"
+msgstr "Rimuovi Out-Control dalla Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "Rimuovi Punto da Curva"
+msgstr "Rimuovi In-Control da Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4199,14 +4593,12 @@ msgid "Remove Path Point"
msgstr "Rimuovi Punto Percorso"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "Sposta Out-Control sulla Curva"
+msgstr "Rimuovi Punto Out-Control"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "Sposta In-Control sulla Curva"
+msgstr "Rimuovi Punto In-Control"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4361,9 +4753,14 @@ msgid "Pitch"
msgstr "Pitch"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "Elimina Ossa"
+msgstr "Elimina File recenti"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4390,6 +4787,10 @@ msgid "Save Theme As.."
msgstr "Salva Tema Come.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Script successivo"
@@ -4442,6 +4843,11 @@ msgid "Close All"
msgstr "Chiudi Tutto"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Attiva Preferito"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4474,6 +4880,11 @@ msgid "Keep Debugger Open"
msgstr "Mantieni Debugger Aperto"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Apri l'Editor successivo"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Finestra"
@@ -4486,9 +4897,8 @@ msgid "Move Right"
msgstr "Sposta a Destra"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "Cerca Riferimenti nella documentazione."
+msgstr "Apri la documentazione online di Godot"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4542,25 +4952,28 @@ msgstr ""
"cui appartengono è caricata"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Scegli Colore"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "Convertendo Immagini"
+msgstr "Converti Maiuscole/Minuscole"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Maiuscolo"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Minuscolo"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Aggiungi maiuscola iniziale"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4589,6 +5002,11 @@ msgid "Move Down"
msgstr "Sposta giù"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Elimina Punto"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Indenta Sinistra"
@@ -4614,11 +5032,11 @@ msgstr "Taglia Spazi in Coda"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Converti Indentazione In Spazi"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Converti Indentazione In Tabulazioni"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4642,14 +5060,12 @@ msgid "Goto Previous Breakpoint"
msgstr "Vai a Breakpoint Precedente"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "Converti In.."
+msgstr "Converti In Maiuscolo"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "Converti In.."
+msgstr "Converti In Minuscolo"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -4676,7 +5092,7 @@ msgstr "Aiuto Contestuale"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -4895,63 +5311,28 @@ msgid "Animation Key Inserted."
msgstr "Key d'Animazione Inserito."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Vai Avanti"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "All'indietro"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Rotellina Giù."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "Oggetti Disegnati"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "Aggiorna Cambiamenti"
+msgstr "Cambiamenti dei Materiali"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "Aggiorna Cambiamenti"
+msgstr "Cambiamenti delle Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "Aggiorna Cambiamenti"
+msgstr "Cambiamenti delle Superfici"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Draw Calls"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "Vertice"
+msgstr "Vertici"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -4970,33 +5351,81 @@ msgid "Display Overdraw"
msgstr "Mostra Overdraw"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
-msgstr "Mostra senza Shader"
+msgstr "Mostra Unshaded"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "Ambientazione"
+msgstr "Mostra Ambiente"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "Gizmos"
+msgstr "Visualizza Gizmos"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Visualizza Informazioni"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "Audio Listener"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Abilita"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr "Vista Libera Sinistra"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr "Vista Libera Destra"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr "Vista Libera Avanti"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr "Vista Libera Indietro"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr "Vista Libera Su"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr "Vista Libera Giù"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr "Modificatore Velocità Vista Libera"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Anteprima"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Finestra di XForm"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Modalità di Selezione"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+RMB: Selezione Lista Profondità"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Modalità Movimento (W)"
@@ -5034,7 +5463,7 @@ msgstr "Vista Destra"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal view"
-msgstr "Cambia Vista Prospettiva/Ortogonale"
+msgstr "Cambia tra Vista Prospettiva/Ortogonale"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
@@ -5053,24 +5482,20 @@ msgid "Align Selection With View"
msgstr "Allinea Selezione Con Vista"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Seleziona"
+msgstr "Strumento Selezione"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "Sposta"
+msgstr "Strumento Sposta"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl: Ruota"
+msgstr "Strumento Ruota"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "Scala:"
+msgstr "Strumento Scala"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5117,6 +5542,7 @@ msgid "View Grid"
msgstr "Visualizza Griglia"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Impostazioni"
@@ -5130,7 +5556,7 @@ msgstr "Trasla Snap:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Snap (deg.):"
-msgstr "Ruota Snap (deg.):"
+msgstr "Snap Rotazione (gradi):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Snap (%):"
@@ -5142,7 +5568,7 @@ msgstr "Impostazioni Viewport"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective FOV (deg.):"
-msgstr "FOV Prospettiva (deg.):"
+msgstr "FOV Prospettiva (gradi):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Z-Near:"
@@ -5158,11 +5584,11 @@ msgstr "Cambiamento Transform"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
-msgstr "Transla:"
+msgstr "Trasla:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate (deg.):"
-msgstr "Ruota (deg.):"
+msgstr "Ruota (gradi):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale (ratio):"
@@ -5182,7 +5608,7 @@ msgstr "Post"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "ERROR: Couldn't load frame resource!"
-msgstr "ERRORE; Impossibile caricare la risorsa frame!"
+msgstr "ERRORE: Impossibile caricare la risorsa frame!"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Frame"
@@ -5245,6 +5671,11 @@ msgid "StyleBox Preview:"
msgstr "Anteprima StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Imposta region_rect"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modalità Snap:"
@@ -5302,6 +5733,16 @@ msgid "Remove Item"
msgstr "Rimuovi Elemento"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Rimuovi Elementi di Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Rimuovi"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Tema"
@@ -5369,7 +5810,7 @@ msgstr "Tab 2"
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Tipo:"
@@ -5391,12 +5832,27 @@ msgid "Color"
msgstr "Colore"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Cancella selezione"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Disegna TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "duplica"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineare"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Secchiello"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5431,10 +5887,6 @@ msgid "Pick Tile"
msgstr "Preleva Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Seleziona"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Ruota a 0 gradi"
@@ -5494,7 +5946,7 @@ msgstr "Eliminare preset '%s'?"
msgid "Presets"
msgstr "Presets"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Aggiungi..."
@@ -5545,6 +5997,24 @@ msgid "Make Patch"
msgstr "Crea Patch"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Texture"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Lista Metodi:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "Esporta PCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Le export templates per questa piattaforma sono mancanti:"
@@ -5557,14 +6027,12 @@ msgid "Invalid project path, the path must exist!"
msgstr "Percorso di progetto invalido, il percorso deve esistere!"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr "Percorso di progetto invalido, godot.cfg non esiste."
+msgstr "Percorso di progetto invalido, project.godot non esiste."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr "Percorso di progetto invalido, godot.cfg deve esistere."
+msgstr "Percorso di progetto invalido, project.godot deve esistere."
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -5575,19 +6043,14 @@ msgid "Invalid project path (changed anything?)."
msgstr "Percorso di progetto invalido (cambiato qualcosa?)."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr "Impossibile creare godot.cfg nel percorso di progetto."
+msgstr "Impossibile creare project.godot nel percorso di progetto."
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
msgstr "Impossibile estrarre i file seguenti dal pacchetto:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Pacchetto Installato Con Successo!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importa Progetto Esistente"
@@ -5632,6 +6095,23 @@ msgid "Are you sure to open more than one project?"
msgstr "Sei sicuro di voler aprire più di un progetto?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Nessuna scena principale è stata definita, selezionarne una?\n"
+"Puoi cambiarla successivamente da \"Impostazioni Progetto\" sotto la "
+"categoria 'applicazioni'."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "Sei sicuro di voler eseguire più di un progetto?"
@@ -5648,10 +6128,6 @@ msgid ""
msgstr "Stai per esaminare %s cartelle per progetti Godot esistenti. Confermi?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gestione Progetti"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista Progetti"
@@ -5672,264 +6148,295 @@ msgid "New Project"
msgstr "Nuovo Progetto"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "Rimuovi Template"
+msgstr "Templates"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "Esci"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Impossibile connettersi."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Tasto "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Pulsante Joy"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "Asse Joy"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Pulsante Mouse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Azione invalida (va bene tutto a parte '/' o ':')."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "L'Azione '%s' esiste già!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Rinomina Evento di Azione Input"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Aggiungi Evento di Azione Input"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Premi un tasto.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Indice Pulsante Mouse:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Pulsante Sinistro"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Pulsante Destro"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Pulsante Centrale"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Pulsante Rotellina Su"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Pulsante Rotellina Giù"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Pulsante 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Pulsante 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Pulsante 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Pulsante 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Cambia"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Indice Asse Joypad:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Asse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr "Indice Pulsante Joypad:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Aggiungi azione di input"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Elimina Evento di Azione Input"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr "Aggiungi vuoto"
+msgstr "Aggiungi Evento"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Pulsante"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Pulsante Sinistro."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Pulsante DEstro."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Pulsante centrale."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Rotellina su."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Rotellina Giù."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Aggiungi Proprietà Getter"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Proprietà:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Impostazioni"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Elimina Input"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Errore nel salvare le impostazioni."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Impostazioni salvate OK."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Aggiungi Traduzione"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Rimuovi Traduzione"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Aggiungi percorso rimappato"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "Remap Risorse Aggiungi Remap"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Cambia Lingua Remap Risorse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Rimuovi Remap Risorse"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Rimuovi Opzione di Remap Rimorse"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "Impostazioni Progetto (godot.cfg)"
+msgstr "Impostazioni Progetto (project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "Generali"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Proprietà:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Elim."
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Copia A Piattaforma.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "Mappa Input"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Azione:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Dispositivo:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Indice:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Localizzazione"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Traduzioni"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Traduzioni:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Remaps"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Risorse:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Remaps per Locale:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Locale"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -5970,6 +6477,11 @@ msgid "Assign"
msgstr "Assegna"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Scegli un Nodo"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Nuovo Script"
@@ -5982,6 +6494,11 @@ msgid "Error loading file: Not a resource!"
msgstr "Errore caricamento file: Non è una risorsa!"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Scegli Nodo(i) da Importare"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr "Scegli un Nodo"
@@ -6077,6 +6594,11 @@ msgstr "Argomenti Scena Principale:"
msgid "Scene Run Settings"
msgstr "Impostazioni Esecuzione Scena"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "Nessun genitore nel quale istanziare una scena."
@@ -6122,10 +6644,6 @@ msgid "Delete Node(s)?"
msgstr "Elimina Nodo(i)?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Questa operazione non può essere eseguita senza una scena."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr "Impossibile effettuare con il nodo di root."
@@ -6138,6 +6656,18 @@ msgid "Save New Scene As.."
msgstr "Salva Nuova Scena Come.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Figlio Modificabile"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Carica come placeholder"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "Scarta Istanziamento"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Ha Senso!"
@@ -6170,9 +6700,8 @@ msgid "Error duplicating scene to save it."
msgstr "Errore duplicando la scena per salvarla."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources:"
-msgstr "Risorse:"
+msgstr "Sub-Risorse:"
#: editor/scene_tree_dock.cpp
msgid "Edit Groups"
@@ -6183,6 +6712,14 @@ msgid "Edit Connections"
msgstr "Modifica Connessioni"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Liberare ereditarietà"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Apri nell Editor"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Elimina Nodo(i)"
@@ -6235,6 +6772,11 @@ msgstr ""
"root esiste."
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtri"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "Allega un nuovo script o uno esistente al nodo selezionato."
@@ -6242,6 +6784,14 @@ msgstr "Allega un nuovo script o uno esistente al nodo selezionato."
msgid "Clear a script for the selected node."
msgstr "Svuota uno script per il nodo selezionato."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "Liberare ereditarietà? (No Undo!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Libera!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Abilita Spatial Visibile"
@@ -6252,56 +6802,60 @@ msgstr "Abilita CanvasItem Visibile"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Avviso confugurazione nodo:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"Il nodo ha connessioni e gruppi\n"
+"\n"
+"Fai click per mostrare il dock segnali."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"Il nodo ha connessioni.\n"
+"Fai click per mostrare il dock segnali."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Opzioni di Debug"
+"Il nodo e in un gruppo.\n"
+"Fai click per mostrare il dock gruppi."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Istanza:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Script successivo"
+msgstr "Apri script"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"Il nodo é bloccato.\n"
+"Fai click per sbloccarlo"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"I figli non sono selezionabili.\n"
+"Fai click per renderli selezionabili"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "Abilita Spatial Visibile"
+msgstr "Abilita Visibilità"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6316,32 +6870,9 @@ msgid "Scene Tree (Nodes):"
msgstr "Scene Tree (Nodi):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Figlio Modificabile"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Carica come placeholder"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "Scarta Istanziamento"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Apri nell Editor"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Liberare ereditarietà"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "Liberare ereditarietà? (No Undo!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Libera!"
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "Avviso confugurazione nodo:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6349,14 +6880,22 @@ msgstr "Scegli un Nodo"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Errore di caricamento immagine:"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr "Impossibile creare script in filesystem."
+msgstr "Errore - Impossibile creare script in filesystem."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
msgstr "Errore caricamento script da %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/A"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Percorso vuoto"
@@ -6374,68 +6913,55 @@ msgstr "Estensione Invalida"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Estensione scelta errata"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "Percorso Invalido."
+msgstr "Percorso Invalido"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "Nome classe invalido"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "Nome proprietà indice invalido."
+msgstr "Nome genitore ereditato o percorso invalido"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "Script"
+msgstr "Script valido"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/A"
+msgstr "Consentiti: a-z, A-Z, 0-9 e _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Script built-in (nel file scena)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "Crea nuovo script"
+msgstr "Crea nuovo file script"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
-msgstr "Carica script esistente"
+msgstr "Carica file script esistente"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "Eredita:"
+msgstr "Eredita"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Nome Classe:"
+msgstr "Nome Classe"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Rimuovi Template"
+msgstr "Template"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
-msgstr "Built-In Script"
+msgstr "Script Built-In"
#: editor/script_create_dialog.cpp
msgid "Attach Node Script"
@@ -6574,6 +7100,10 @@ msgid "Change Light Radius"
msgstr "Cambia Raggio Luce"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Cambia FOV Telecamera"
@@ -6607,7 +7137,7 @@ msgstr "Cambia Estensione di Notifier"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Cambia AABB Particelle"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -6658,6 +7188,137 @@ msgstr "Istanza invalida formato dizionario (script invalido in @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Istanza invalida formato dizionario (sottoclassi invalide)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Elimina selezionati"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplica Selezione"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Vista dall'Alto"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Disabilitato"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Ruota"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Ruota"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Ruota"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Crea Nuovo"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Crea Nuovo Progetto"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Cancella TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Solo Selezione"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Solo Selezione"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Impostazioni Snap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Istanza:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " Files"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6695,6 +7356,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Overflow dello stack con profondità dello stack: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Modifica Argomenti Segnali:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Cambia Tipo del Valore Array"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Cambia Nome Input"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Cambia Valore di Default"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Modifica Variabile:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funzioni:"
@@ -6735,26 +7421,6 @@ msgid "Add Signal"
msgstr "Aggiungi Segnale"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Rimuovi Funzione"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Rimuovi Variabile"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Modifica Variabile:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Rimuovi Segnale"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Modifica Segnale:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Cambia Espressione"
@@ -6763,6 +7429,16 @@ msgid "Add Node"
msgstr "Aggiungi Nodo"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Rimuovi key invalidi"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Duplica Nodo(i) Grafico"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Mantieni premuto Meta per rilasciare un Getter. Mantieni premuto Shift per "
@@ -6807,6 +7483,26 @@ msgid "Add Setter Property"
msgstr "Aggiungi Proprietà Setter"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Cambia Tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Rimuovi nodo(i)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Rimuovi Nodo Grafico di Shader"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Connetti A Nodo:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Condizione"
@@ -6835,6 +7531,56 @@ msgid "Get"
msgstr "Get"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Cambia Nome Input"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "Non posso operare su '..'"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Clipboard risorse vuota!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Incolla Nodi"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Rimuovi Funzione"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Modifica Variabile:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Rimuovi Variabile"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Modifica Segnale:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Rimuovi Segnale"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Modifica Variabile:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Modifica Segnale:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Tipo Base:"
@@ -6855,10 +7601,6 @@ msgid "Edit Variable:"
msgstr "Modifica Variabile:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Cambia"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Elimina selezionati"
@@ -6936,14 +7678,6 @@ msgstr ""
"Valore di return invalido da _step(), deve esere intero (seq out), oppure "
"stringa (errore)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "appena premuto"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "appena rilasciato"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr "Esegui nel Browser"
@@ -6964,94 +7698,6 @@ msgstr "Impossibile leggere file:\n"
msgid "Could not open template for export:\n"
msgstr "Impossibile aprire template per l'esportazione:\n"
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"Impossibile leggere il file del certificatio. Il percorso e la password sono "
-"entrambi corretti?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Errore in creazione del signature object."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Errore di creazione della firma del pacchetto."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Nessun template di esportazione trovato.\n"
-"Scarica ed installa i template di esportazione."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Pacchetto di debug personalizzato non trovato."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Pacchetto di release personalizzato non trovato."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Nome unico invalido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "GUID prodotto invalido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "GUID publisher invalido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Colore di background invalido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-"Dimensioni dell'immagine dello Store Logo invalide (dovrebbero essere 50x50)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-"Dimensioni non valide dell'immagine del logo quadrato 44x44 (dovrebbero "
-"essere 44x44)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-"Dimensioni non valide dell'immagine del logo quadrato 71x71 (dovrebbero "
-"essere 71x71)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-"Dimensioni non valide dell'immagine del logo quadrato 150x150 (dovrebbero "
-"essere 150x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-"Dimensioni non valide dell'immagine del logo quadrato 310x310 (dovrebbero "
-"essere 310x310)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-"Dimensioni non valide dell'immagine del logo quadrato 310x150 (dovrebbero "
-"essere 310x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-"Dimensioni non valide dell'immagine dello splash screen (dovrebbero essere "
-"620x300)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7153,6 +7799,8 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"Un materiale per processare le particelle non é assegnato, pertanto nessun "
+"comportamento é impresso."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7160,6 +7808,13 @@ msgstr ""
"PathFollow2D funziona solamente quando impostato come figlio di un nodo "
"Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7189,23 +7844,33 @@ msgstr ""
"VisibilityEnable2D funziona al meglio quando usato direttamente come "
"genitore con il root della scena modificata."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-"CollisionShape serve a fornire una forma di collisione ad un nodo derivato "
-"di CollisionObject. Si prega di utilizzarlo solamente come figlio di Area, "
-"StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Perché CollisionShape funzioni deve essere fornita una forma. Si prega di "
-"creare una risorsa forma (shape)!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7222,6 +7887,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Un CollisionPolygon vuoto non ha effetti in collisione."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape serve a fornire una forma di collisione ad un nodo derivato "
+"di CollisionObject. Si prega di utilizzarlo solamente come figlio di Area, "
+"StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Perché CollisionShape funzioni deve essere fornita una forma. Si prega di "
+"creare una risorsa forma (shape)!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7239,6 +7922,13 @@ msgstr ""
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
+msgstr "Nulla é visibile perché le mesh non sono state assegnate ai draw pass."
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
msgstr ""
#: scene/3d/remote_transform.cpp
@@ -7264,12 +7954,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Modalità esecuzione:"
+msgid "Raw Mode"
+msgstr "Modalità di Pan"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Aggiungi colore attuale come preset"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7279,22 +7969,6 @@ msgstr "Attenzione!"
msgid "Please Confirm..."
msgstr "Per Favore Conferma..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Apri un File"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Apri File(s)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Apri una Directory"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Apri un File o una Directory"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7319,11 +7993,13 @@ msgstr ""
"Usa un container come figlio (VBox,HBox,etc), o un Control impostando la "
"dimensione minima manualmente."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"Impossobile caricare Ambiente di Default come specificato nelle Impostazioni "
+"Progetto (Rendering -> Vista -> Ambiente di Default)."
#: scene/main/viewport.cpp
msgid ""
@@ -7337,6 +8013,110 @@ msgstr ""
"Control, in modo che possa ottenere una dimensione. Altrimenti, renderlo un "
"RenderTarget e assegnare alla sua texture interna qualche nodo da mostrare."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Chiudi scena? (I cambiamenti non salvati saranno persi)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Aprire la Gestione Progetti?\n"
+#~ "(I cambiamenti non salvati saranno persi)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Vai a Scena Preced."
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Espandi a Genitore"
+
+#~ msgid "Del"
+#~ msgstr "Elim."
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Copia A Piattaforma.."
+
+#~ msgid "just pressed"
+#~ msgstr "appena premuto"
+
+#~ msgid "just released"
+#~ msgstr "appena rilasciato"
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Impossibile leggere il file del certificatio. Il percorso e la password "
+#~ "sono entrambi corretti?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Errore in creazione del signature object."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Errore di creazione della firma del pacchetto."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Nessun template di esportazione trovato.\n"
+#~ "Scarica ed installa i template di esportazione."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Pacchetto di debug personalizzato non trovato."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "Pacchetto di release personalizzato non trovato."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Nome unico invalido."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "GUID prodotto invalido."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "GUID publisher invalido."
+
+#~ msgid "Invalid background color."
+#~ msgstr "Colore di background invalido."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr ""
+#~ "Dimensioni dell'immagine dello Store Logo invalide (dovrebbero essere "
+#~ "50x50)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr ""
+#~ "Dimensioni non valide dell'immagine del logo quadrato 44x44 (dovrebbero "
+#~ "essere 44x44)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr ""
+#~ "Dimensioni non valide dell'immagine del logo quadrato 71x71 (dovrebbero "
+#~ "essere 71x71)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "Dimensioni non valide dell'immagine del logo quadrato 150x150 (dovrebbero "
+#~ "essere 150x150)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "Dimensioni non valide dell'immagine del logo quadrato 310x310 (dovrebbero "
+#~ "essere 310x310)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr ""
+#~ "Dimensioni non valide dell'immagine del logo quadrato 310x150 (dovrebbero "
+#~ "essere 310x150)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "Dimensioni non valide dell'immagine dello splash screen (dovrebbero "
+#~ "essere 620x300)."
+
+#~ msgid "RAW Mode"
+#~ msgstr "Modalità RAW"
+
#~ msgid "Node From Scene"
#~ msgstr "Nodo Da Scena"
@@ -7422,9 +8202,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Rimpiazzate %d Occorrenze."
-#~ msgid "Please save the scene first."
-#~ msgstr "Si prega di salvare prima la scena."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Salva Stringhe Traducibili"
@@ -7636,9 +8413,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Chiave di Crittografia Script (256-bits come esadecimali):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "Esporta PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "Esporta Progetto PCK"
@@ -7787,9 +8561,6 @@ msgstr ""
#~ msgid "Node Group(s)"
#~ msgstr "Gruppo(i) Nodi"
-#~ msgid "Set region_rect"
-#~ msgstr "Imposta region_rect"
-
#~ msgid "Plugin List:"
#~ msgstr "Lista Plugin:"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 8fa50e4512..0cbbe217bb 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -2,23 +2,24 @@
# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
# This file is distributed under the same license as the Godot source code.
#
-# akirakido <achts.y@gmail.com>, 2016.
+# akirakido <achts.y@gmail.com>, 2016-2017.
# hopping tappy (ãŸã£ã´ã•ã‚“) <hopping.tappy@gmail.com>, 2016.
# Lexi Grafen <shfeedly@gmail.com>, 2017.
+# Tetsuji Ochiai <ochiaixp@gmail.com>, 2017.
# Tohru Ike (rokujyouhitoma) <rokujyouhitomajp@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-06-10 13:13+0000\n"
-"Last-Translator: Tohru Ike (rokujyouhitoma) <rokujyouhitomajp@gmail.com>\n"
+"PO-Revision-Date: 2017-07-27 05:10+0000\n"
+"Last-Translator: Tetsuji Ochiai <ochiaixp@gmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
"Language: ja\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.15-dev\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -33,28 +34,33 @@ msgid "Move Add Key"
msgstr "追加ã—ãŸã‚­ãƒ¼ã‚’移動"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Anim Change Transition"
-msgstr ""
+msgstr "Anim é·ç§»ï¼ˆãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ï¼‰"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Anim Change Transform"
-msgstr ""
+msgstr "Anim 変形(トランスフォーム)"
#: editor/animation_editor.cpp
msgid "Anim Change Value"
msgstr "値を変更"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Anim Change Call"
-msgstr ""
+msgstr "Anim コールã®å¤‰æ›´(Call)"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Anim Add Track"
-msgstr ""
+msgstr "Anim トラックを追加"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Anim Duplicate Keys"
-msgstr ""
+msgstr "Anim キーを複製"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
@@ -134,12 +140,14 @@ msgid "Anim Move Keys"
msgstr "Anim キーã®ç§»å‹•"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Scale Selection"
-msgstr "スケールã®é¸æŠž"
+msgstr "縮尺(Scale)ã®é¸æŠž"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Scale From Cursor"
-msgstr ""
+msgstr "カーソル起点ã§ç¸®å°º(Scale)変更"
#: editor/animation_editor.cpp
msgid "Goto Next Step"
@@ -149,33 +157,42 @@ msgstr "次ã®ã‚¹ãƒ†ãƒƒãƒ—ã¸"
msgid "Goto Prev Step"
msgstr "å‰ã®ã‚¹ãƒ†ãƒƒãƒ—ã¸"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
-msgstr "Linear"
+msgstr "等速"
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "Constant"
-msgstr "Constant"
+msgstr "一定"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "In"
-msgstr "In"
+msgstr "トランジションイン"
#: editor/animation_editor.cpp
msgid "Out"
-msgstr "Out"
+msgstr "トランジションアウト"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "In-Out"
-msgstr "In-Out"
+msgstr ""
+"最åˆã«æ–°ã—ã„è¦ç´ ãŒãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ã—ã¦ã‹ã‚‰ç¾åœ¨ã®è¦ç´ ãŒãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ã‚¢ã‚¦ãƒˆ"
+"ã™ã‚‹"
#: editor/animation_editor.cpp
msgid "Out-In"
-msgstr "Out-In"
+msgstr ""
+"最åˆã«ç¾åœ¨ã®è¦ç´ ãŒãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ã‚¢ã‚¦ãƒˆã—ã¦ã‹ã‚‰æ–°ã—ã„è¦ç´ ãŒãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ã‚¤ãƒ³"
+"ã™ã‚‹"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Transitions"
-msgstr ""
+msgstr "é·ç§»ï¼ˆãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ï¼‰"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
@@ -232,8 +249,9 @@ msgid "Anim Insert"
msgstr "Anim 挿入"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Anim Scale Keys"
-msgstr "Anim スケールキー"
+msgstr "Anim 拡大縮å°ã‚­ãƒ¼"
#: editor/animation_editor.cpp
msgid "Anim Add Call Track"
@@ -308,8 +326,9 @@ msgid "Optimize"
msgstr "最é©åŒ–"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
-msgstr ""
+msgstr "シーンツリーã‹ã‚‰ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’é¸æŠžã—アニメーション編集"
#: editor/animation_editor.cpp
msgid "Key"
@@ -321,7 +340,7 @@ msgstr "é·ç§»"
#: editor/animation_editor.cpp
msgid "Scale Ratio:"
-msgstr "ã‚¹ã‚±ãƒ¼ãƒ«ã®æ¯”率:"
+msgstr "æ‹¡å¤§ç¸®å°æ¯”:"
#: editor/animation_editor.cpp
msgid "Call Functions in Which Node?"
@@ -360,32 +379,36 @@ msgid "Change Array Value"
msgstr "é…列ã®å€¤ã‚’変更"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Free"
-msgstr ""
+msgstr "解放"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
+#, fuzzy
msgid "Version:"
-msgstr ""
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Contents:"
-msgstr "継続的"
+msgstr "コンテンツ:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "ファイル:"
+msgstr "ビューファイル:"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
#: editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Description:"
-msgstr ""
+msgstr "記述:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Install"
-msgstr ""
+msgstr "インストール"
#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
#: editor/connections_dialog.cpp editor/export_template_manager.cpp
@@ -394,158 +417,184 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "é–‰ã˜ã‚‹"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "ホストåを解決ã§ãã¾ã›ã‚“:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Can't resolve."
-msgstr ""
+msgstr "解決ã§ãã¾ã›ã‚“."
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Connection error, please try again."
-msgstr ""
+msgstr "接続失敗 å†è©¦è¡Œã‚’"
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Can't connect."
-msgstr "接続"
+msgstr "接続失敗."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Can't connect to host:"
-msgstr "ãƒŽãƒ¼ãƒ‰ã«æŽ¥ç¶šã—ã¾ã™ã€‚"
+msgstr "ãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã§ãã¾ã›ã‚“:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "No response from host:"
-msgstr ""
+msgstr "ホストã‹ã‚‰å¿œç­”ãŒã‚りã¾ã›ã‚“:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "No response."
-msgstr ""
+msgstr "応答ãŒã‚りã¾ã›ã‚“."
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Request failed, return code:"
-msgstr ""
+msgstr "リクエスト失敗 リターン コード:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Req. Failed."
-msgstr ""
+msgstr "リクエスト失敗."
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "リクエスト失敗 リダイレクトã®å›žæ•°ãŒå¤šã™ãŽã¾ã™"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Redirect Loop."
-msgstr ""
+msgstr "リダイレクトã®ãƒ«ãƒ¼ãƒ—."
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Failed:"
-msgstr ""
+msgstr "失敗:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "ダウンロード内容ã®ãƒãƒƒã‚·ãƒ¥ãŒä¸æ•´åˆã€€æ”¹ã–ã‚“ã®å¯èƒ½æ€§ãŒã‚りã¾ã™."
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Expected:"
-msgstr ""
+msgstr "予測:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Got:"
-msgstr ""
+msgstr "å–å¾—:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "sha256ã®ãƒãƒƒã‚·ãƒ¥ãƒã‚§ãƒƒã‚¯å¤±æ•—"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Asset Download Error:"
-msgstr ""
+msgstr "アセットã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å¤±æ•—:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#, fuzzy
msgid "Success!"
-msgstr ""
+msgstr "æˆåŠŸï¼"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Fetching:"
-msgstr ""
+msgstr "å–得中:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Resolving.."
-msgstr ""
+msgstr "解決中.."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Connecting.."
-msgstr "接続"
+msgstr "接続中.."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Requesting.."
-msgstr "テスト中"
+msgstr "リクエスト中.."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Error making request"
-msgstr "フォント読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚"
+msgstr "リクエスト発行エラー"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Idle"
-msgstr ""
+msgstr "待機中"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Retry"
-msgstr ""
+msgstr "å†è©¦è¡Œ"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Download Error"
-msgstr ""
+msgstr "ダウンロード失敗"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "ã“ã®ã‚¢ã‚»ãƒƒãƒˆã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯æ—¢ã«é€²è¡Œä¸­ï¼"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "first"
-msgstr ""
+msgstr "最åˆã®"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "prev"
-msgstr ""
+msgstr "å‰ã®"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "next"
-msgstr ""
+msgstr "次ã®"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "last"
-msgstr ""
+msgstr "最後ã®"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
-msgstr "ã™ã¹ã¦"
+msgstr "ã™ã¹ã¦ã®"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
+#, fuzzy
msgid "Search:"
msgstr "検索:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+#, fuzzy
msgid "Search"
msgstr "検索"
@@ -559,77 +608,95 @@ msgstr "検索"
#: editor/io_plugins/editor_translation_import_plugin.cpp
#: editor/project_manager.cpp
msgid "Import"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆï¼ˆå–り込ã¿ï¼‰"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
+#, fuzzy
msgid "Plugins"
-msgstr ""
+msgstr "プラグイン"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Sort:"
msgstr "ä¸¦ã¹æ›¿ãˆ:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Reverse"
msgstr "逆"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
+#, fuzzy
msgid "Category:"
msgstr "カテゴリー:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Site:"
msgstr "サイト:"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Support.."
-msgstr "サãƒãƒ¼ãƒˆ."
+msgstr "サãƒãƒ¼ãƒˆ.."
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Official"
msgstr "å…¬å¼"
#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
+#, fuzzy
msgid "Community"
msgstr "コミュニティ"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Testing"
msgstr "テスト中"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Assets ZIP File"
-msgstr ""
+msgstr "アセットã®zipファイル"
#: editor/call_dialog.cpp
+#, fuzzy
msgid "Method List For '%s':"
msgstr "'%s' ã®ãƒ¡ã‚½ãƒƒãƒ‰ä¸€è¦§ï¼š"
#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Call"
msgstr "呼ã³å‡ºã—"
#: editor/call_dialog.cpp
+#, fuzzy
msgid "Method List:"
msgstr "メソッド一覧:"
#: editor/call_dialog.cpp
+#, fuzzy
msgid "Arguments:"
msgstr "引数:"
#: editor/call_dialog.cpp
+#, fuzzy
msgid "Return:"
msgstr "戻り値:"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Go to Line"
msgstr "行ã«ç§»å‹•"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Line Number:"
msgstr "行番å·:"
#: editor/code_editor.cpp
+#, fuzzy
msgid "No Matches"
msgstr "一致ãªã—"
@@ -639,186 +706,224 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d 箇所を置æ›ã—ã¾ã—ãŸã€‚"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Replace"
msgstr "ç½®æ›"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Replace All"
msgstr "ã™ã¹ã¦ç½®æ›"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Match Case"
-msgstr "大文字ã¨å°æ–‡å­—"
+msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別ã™ã‚‹"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Whole Words"
msgstr "å˜èªžå…¨ä½“"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Selection Only"
msgstr "é¸æŠžç¯„å›²ã®ã¿"
#: editor/code_editor.cpp editor/editor_help.cpp
+#, fuzzy
msgid "Find"
msgstr "検索"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Next"
msgstr "次"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Not found!"
msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!"
#: editor/code_editor.cpp
msgid "Replace By"
-msgstr "ç½®æ›"
+msgstr "ã§ç½®æ›ã™ã‚‹"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Case Sensitive"
msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Backwards"
msgstr "後方"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Prompt On Replace"
-msgstr ""
+msgstr "ç½®æ›æ™‚ã«ç¢ºèª"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Skip"
msgstr "スキップ"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Zoom In"
msgstr "ズームイン"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Zoom Out"
msgstr "ズームアウト"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Reset Zoom"
-msgstr ""
+msgstr "ズームをリセット"
#: editor/code_editor.cpp editor/script_editor_debugger.cpp
msgid "Line:"
msgstr "ライン:"
#: editor/code_editor.cpp
+#, fuzzy
msgid "Col:"
-msgstr ""
+msgstr "縦:"
#: editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
msgstr "対象ã¨ãªã‚‹ãƒŽãƒ¼ãƒ‰ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™!"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid ""
"Target method not found! Specify a valid method or attach a script to target "
"Node."
msgstr ""
+"対象メソッドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ メソッドを指定ã™ã‚‹ã‹å¯¾è±¡ãƒŽãƒ¼ãƒ‰ã«ã‚¹ã‚¯ãƒªãƒ—トを付"
+"加ã—ã¦ãã ã•ã„"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Connect To Node:"
-msgstr "ãƒŽãƒ¼ãƒ‰ã«æŽ¥ç¶šã—ã¾ã™ã€‚"
+msgstr "ãƒŽãƒ¼ãƒ‰ã«æŽ¥ç¶šã—ã¾ã™:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#, fuzzy
msgid "Add"
msgstr "追加"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Remove"
msgstr "削除"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Add Extra Call Argument:"
-msgstr "余分ã«å‘¼ã³å‡ºã—引数を追加ã—ã¾ã™ã€‚"
+msgstr "呼ã³å‡ºã—引数を追加ã—ã¾ã™ã€‚"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Extra Call Arguments:"
-msgstr ""
+msgstr "追加呼ã³å‡ºã—引数:"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Path to Node:"
msgstr "ノードã¸ã®ãƒ‘ス:"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Make Function"
msgstr "関数を作æˆ"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Deferred"
-msgstr ""
+msgstr "é…å»¶"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Oneshot"
-msgstr ""
+msgstr "一括"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Connect"
msgstr "接続"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Connect '%s' to '%s'"
msgstr "'%s' ã‚’ '%s' ã«æŽ¥ç¶š"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Connecting Signal:"
-msgstr "ä¿¡å·ã‚’接続:"
+msgstr "シグナルを接続:"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Create Subscription"
-msgstr ""
+msgstr "サブスクリプションã®ç”Ÿæˆ"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid "Connect.."
-msgstr ""
+msgstr "接続.."
#: editor/connections_dialog.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Disconnect"
-msgstr ""
+msgstr "切断"
#: editor/connections_dialog.cpp editor/node_dock.cpp
+#, fuzzy
msgid "Signals"
-msgstr ""
+msgstr "シグナル"
#: editor/create_dialog.cpp
msgid "Create New"
-msgstr ""
+msgstr "æ–°è¦ã«ç”Ÿæˆ"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Favorites:"
-msgstr ""
+msgstr "ãŠæ°—ã«å…¥ã‚Š:"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
msgid "Recent:"
-msgstr ""
+msgstr "最近ã®:"
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
+#, fuzzy
msgid "Matches:"
-msgstr ""
+msgstr "一致:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Search Replacement For:"
-msgstr ""
+msgstr "検索ã—ã¦ç½®æ›"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Dependencies For:"
-msgstr ""
+msgstr "~ã¨ä¾å­˜é–¢ä¿‚ã«ã‚ã‚‹:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will not take effect unless reloaded."
@@ -827,199 +932,457 @@ msgstr ""
"å†èª­ã¿è¾¼ã¿ã—ãªã„é™ã‚Šã€å¤‰æ›´ã¯å映ã•れã¾ã›ã‚“。"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"Resource '%s' is in use.\n"
"Changes will take effect when reloaded."
msgstr ""
+"リソース '%s' ã¯ä½¿ç”¨ä¸­ã§ã™\n"
+"変更ã¯å†èª­è¾¼æ™‚ã«é©ç”¨ã•れã¾ã™"
#: editor/dependency_editor.cpp
msgid "Dependencies"
-msgstr ""
+msgstr "ä¾å­˜é–¢ä¿‚"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Resource"
-msgstr ""
+msgstr "リソース"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Path"
-msgstr ""
+msgstr "パス"
#: editor/dependency_editor.cpp
msgid "Dependencies:"
-msgstr ""
+msgstr "ä¾å­˜é–¢ä¿‚:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Fix Broken"
-msgstr ""
+msgstr "修復"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
-msgstr ""
+msgstr "ä¾å­˜é–¢ä¿‚エディタ"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Search Replacement Resource:"
-msgstr ""
+msgstr "ç½®æ›ã™ã‚‹ãƒªã‚½ãƒ¼ã‚¹ã‚’探ã™:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Owners Of:"
-msgstr ""
+msgstr "~ã®ã‚ªãƒ¼ãƒŠãƒ¼:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
"Remove them anyway? (no undo)"
msgstr ""
+"å–り除ã“ã†ã¨ã—ã¦ã„るファイルã¯ä»–ã®ãƒªã‚½ãƒ¼ã‚¹ã®å‹•作ã«å¿…è¦ã§ã™. 本当ã«å–り除ãã¾"
+"ã™ã‹ï¼Ÿï¼ˆundoã§ãã¾ã›ã‚“)"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Remove selected files from the project? (no undo)"
-msgstr ""
+msgstr "é¸æŠžã—ãŸãƒ•ァイルをプロジェクトã‹ã‚‰å–り除ã(å–り消ã—ã§ãã¾ã›ã‚“)"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Error loading:"
-msgstr ""
+msgstr "読ã¿è¾¼ã¿å¤±æ•—:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Scene failed to load due to missing dependencies:"
-msgstr "ä¾å­˜é–¢ä¿‚ãŒä¸è¶³ã—ã¦ã„ã‚‹ã®ãŸã‚シーンを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚"
+msgstr "ä¾å­˜é–¢ä¿‚ãŒç¢ºèªã§ããšã€ã‚·ãƒ¼ãƒ³ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
+#, fuzzy
msgid "Open Anyway"
-msgstr ""
+msgstr "ã¨ã‚‚ã‹ãé–‹ã"
#: editor/dependency_editor.cpp
msgid "Which action should be taken?"
-msgstr ""
+msgstr "ã©ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã‚’実行ã—ã¾ã™ã‹?"
#: editor/dependency_editor.cpp
msgid "Fix Dependencies"
-msgstr ""
+msgstr "ä¾å­˜é–¢ä¿‚ã®ä¿®å¾©"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Errors loading!"
-msgstr ""
+msgstr "読ã¿è¾¼ã¿å¤±æ•—!"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr ""
+msgstr "永久ã«%d を削除(undoä¸å¯ï¼‰"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Owns"
-msgstr ""
+msgstr "ä¿æŒã™ã‚‹"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Resources Without Explicit Ownership:"
-msgstr ""
+msgstr "ã‚ªãƒ¼ãƒŠãƒ¼ãŒæ˜Žç¤ºã•れã¦ã„ãªã„リソース"
#: editor/dependency_editor.cpp editor/editor_node.cpp
+#, fuzzy
msgid "Orphan Resource Explorer"
-msgstr ""
+msgstr "無オーナーリソース用エクスプローラー"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid "Delete selected files?"
-msgstr ""
+msgstr "é¸æŠžã—ãŸãƒ•ァイルを消去ã—ã¾ã™ã‹?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete"
+msgstr "消去"
+
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Godotコミュニティより感è¬ã‚’!"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Thanks!"
+msgstr "ã‚りãŒã¨ã†!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Godotエンジンã«è²¢çŒ®ã—ãŸäººã€…"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "作者:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "開発者"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Developers"
+msgstr "開発者"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
msgstr ""
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "コンテンツ:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "コンテンツ:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "éžåœ§ç¸®"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "パッケージインストールæˆåŠŸ!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "パッケージインストールæˆåŠŸ!"
+
#: editor/editor_audio_buses.cpp
-msgid "Save Audio Bus Layout As.."
+msgid "Speakers"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Location for New Layout.."
+#, fuzzy
+msgid "Add Effect"
+msgstr "イベントを追加"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "é¸æŠžç¯„å›²ã‚’æ¶ˆåŽ»"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "サブシーンã®ã‚ªãƒ—ション"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "複製"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "é¸æŠžç¯„å›²ã‚’æ¶ˆåŽ»"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "ãƒã‚¹ã‚’追加ã™ã‚‹"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
msgstr ""
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®æ¶ˆåŽ»"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "アニメーションを複製"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "移動動作"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save Audio Bus Layout As.."
+msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’別åã§ä¿å­˜"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Location for New Layout.."
+msgstr "æ–°ã—ã„レイアウトã®ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³.."
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Open Audio Bus Layout"
+msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã"
+
+#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Add Bus"
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
msgstr ""
+"ファイル拡張å­ãŒä¸æ­£ã§ã™.\n"
+" .fontを使ã£ã¦ãã ã•ã„."
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Bus"
+msgstr "ãƒã‚¹ã‚’追加ã™ã‚‹"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "æ–°ã—ã„リソースを生æˆ"
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#, fuzzy
msgid "Load"
-msgstr ""
+msgstr "読ã¿è¾¼ã‚€"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "既存ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ディスクã‹ã‚‰èª­ã¿è¾¼ã¿ç·¨é›†ã™ã‚‹"
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
-msgstr ""
+msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜ã™ã‚‹"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’別åã§ä¿å­˜"
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
+msgstr "標準(既定)"
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid name."
-msgstr ""
+msgstr "無効ãªåå‰ã§ã™."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Valid characters:"
-msgstr ""
+msgstr "使用å¯èƒ½ãªæ–‡å­—:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid name. Must not collide with an existing engine class name."
-msgstr ""
+msgstr "無効ãªåå‰ã§ã™. 既存ã®ã‚¨ãƒ³ã‚¸ãƒ³ã‚¯ãƒ©ã‚¹ã®åå‰ã¨è¡çªã—ã¦ã¯ã„ã‘ã¾ã›ã‚“."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid name. Must not collide with an existing buit-in type name."
-msgstr ""
+msgstr "無効ãªåå‰ã§ã™. 既存ã®çµ„ã¿è¾¼ã¿åž‹ã®åå‰ã¨è¡çªã—ã¦ã¯ã„ã‘ã¾ã›ã‚“."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid name. Must not collide with an existing global constant name."
-msgstr ""
+msgstr "無効ãªåå‰ã§ã™. 既存ã®ã‚°ãƒ­ãƒ¼ãƒãƒ«å®šæ•°ã®åå‰ã¨è¡çªã—ã¦ã¯ã„ã‘ã¾ã›ã‚“."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid Path."
-msgstr ""
+msgstr "無効ãªãƒ‘スã§ã™."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "File does not exist."
-msgstr ""
+msgstr "ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Not in resource path."
-msgstr ""
+msgstr "リソースã®ãƒ‘スã§ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿ã‚’付加"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Autoload '%s' already exists!"
-msgstr ""
+msgstr "既存ã®'%s' を自動読ã¿è¾¼ã¿ã—ã¾ã™!"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Rename Autoload"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿ã‚’åå‰å¤‰æ›´"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Toggle AutoLoad Globals"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿ã™ã‚‹ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚’切替"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Move Autoload"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿ã‚’移動ã™ã‚‹"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Remove Autoload"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿ã‚’å–り除ã"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Enable"
-msgstr ""
+msgstr "有効ã«ã™ã‚‹"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Rearrange Autoloads"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿ã‚’çµ„ã¿æ›¿ãˆã‚‹"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
@@ -1027,43 +1390,53 @@ msgid "Path:"
msgstr "Path:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Node Name:"
-msgstr ""
+msgstr "ノードã®åå‰:"
#: editor/editor_autoload_settings.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#, fuzzy
msgid "Name"
-msgstr ""
+msgstr "åå‰"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Singleton"
-msgstr ""
+msgstr "シングルトン"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "List:"
-msgstr ""
+msgstr "リスト:"
#: editor/editor_data.cpp
msgid "Updating Scene"
msgstr "シーンを更新"
#: editor/editor_data.cpp
+#, fuzzy
msgid "Storing local changes.."
-msgstr ""
+msgstr "ローカル環境ã®å¤‰æ›´ã‚’ä¿å­˜ã™ã‚‹.."
#: editor/editor_data.cpp
msgid "Updating scene.."
msgstr "シーンを更新ã—ã¦ã„ã¾ã™.."
#: editor/editor_dir_dialog.cpp
-msgid "Choose a Directory"
+msgid "Please select a base directory first"
msgstr ""
+#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Choose a Directory"
+msgstr "ディレクトリをé¸ã¶"
+
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: scene/gui/file_dialog.cpp
msgid "Create Folder"
-msgstr "フォルダを作æˆ"
+msgstr "フォルダを作æˆã™ã‚‹"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
@@ -1077,52 +1450,62 @@ msgid "Could not create folder."
msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/editor_dir_dialog.cpp
+#, fuzzy
msgid "Choose"
-msgstr ""
+msgstr "é¸ã¶"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Storing File:"
-msgstr ""
+msgstr "ファイルをä¿å­˜ã™ã‚‹:"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Packing"
-msgstr ""
+msgstr "パッキングã™ã‚‹"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
+#, fuzzy
msgid "Template file not found:\n"
-msgstr ""
+msgstr "テンプレートファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:\n"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Added:"
-msgstr ""
+msgstr "加ãˆãŸã®ã¯:"
#: editor/editor_export.cpp
msgid "Removed:"
-msgstr ""
+msgstr "å–り除ã„ãŸã®ã¯:"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Error saving atlas:"
-msgstr ""
+msgstr "アトラスã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ:"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Could not save atlas subtexture:"
-msgstr ""
+msgstr "アトラスã®è¦ç´ ã§ã‚るテクスãƒãƒ£ã®ä¿å­˜ãŒã§ãã¾ã›ã‚“:"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Exporting for %s"
-msgstr ""
+msgstr "%sã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆä¸­"
#: editor/editor_export.cpp
+#, fuzzy
msgid "Setting Up.."
-msgstr ""
+msgstr "セットアップ中.."
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+#, fuzzy
msgid "All Recognized"
-msgstr "ã™ã¹ã¦ã®èªè­˜"
+msgstr "知られã¦ã„ã‚‹ã™ã¹ã¦ã®"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Files (*)"
@@ -1134,6 +1517,22 @@ msgstr "ã™ã¹ã¦ã®ãƒ•ァイル(*)"
msgid "Open"
msgstr "é–‹ã"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "ファイルを開ã"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "ファイルを開ã"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "ディレクトリを開ã"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "ファイルã¾ãŸã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’é–‹ã"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1145,52 +1544,63 @@ msgid "Save a File"
msgstr "ファイルをä¿å­˜"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Go Back"
-msgstr ""
+msgstr "戻る"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Go Forward"
-msgstr ""
+msgstr "進む"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Go Up"
-msgstr ""
+msgstr "上ã«å‘ã‹ã†"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Refresh"
-msgstr ""
+msgstr "å†èª­è¾¼"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Toggle Hidden Files"
-msgstr ""
+msgstr "éš ã—ファイルを切り替ãˆã‚‹"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Toggle Favorite"
-msgstr ""
+msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’切り替ãˆã‚‹"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Toggle Mode"
-msgstr ""
+msgstr "モードを切り替ãˆã‚‹"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Focus Path"
-msgstr ""
+msgstr "フォーカスã¸ã®ãƒ‘ス"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Move Favorite Up"
-msgstr ""
+msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’上ã’ã‚‹"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Move Favorite Down"
-msgstr ""
+msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’下ã’ã‚‹"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "ディレクトリã¾ãŸã¯ãƒ•ァイル:"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Preview:"
-msgstr ""
+msgstr "プレビュー:"
#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
#: scene/gui/file_dialog.cpp
@@ -1206,77 +1616,103 @@ msgid "Must use a valid extension."
msgstr "æœ‰åŠ¹ãªæ‹¡å¼µå­ã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: editor/editor_file_system.cpp
+#, fuzzy
msgid "ScanSources"
-msgstr ""
+msgstr "ソース走査"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr ""
+msgstr "アセットを(å†ï¼‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Search Help"
-msgstr ""
+msgstr "ヘルプを検索"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Class List:"
-msgstr ""
+msgstr "クラスã®ãƒªã‚¹ãƒˆ:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Search Classes"
-msgstr ""
+msgstr "ã‚¯ãƒ©ã‚¹ã®æ¤œç´¢"
#: editor/editor_help.cpp editor/property_editor.cpp
+#, fuzzy
msgid "Class:"
-msgstr ""
+msgstr "クラス:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
+#, fuzzy
msgid "Inherits:"
-msgstr ""
+msgstr "継承:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Inherited by:"
-msgstr ""
+msgstr "~ã«ç¶™æ‰¿ã•れる:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Brief Description:"
-msgstr ""
+msgstr "è¦ç´„:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Members:"
-msgstr ""
+msgstr "メンãƒãƒ¼:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Public Methods:"
-msgstr ""
+msgstr "公開メソッド:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "GUI Theme Items:"
-msgstr ""
+msgstr "GUIテーマã®éƒ¨å“:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Signals:"
+msgstr "シグナル:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "アニメーション"
+
+#: editor/editor_help.cpp
+msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
msgid "Constants:"
-msgstr ""
+msgstr "定数:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
-msgstr ""
+msgstr "プロパティã«ã¤ã„ã¦ã®è¨˜è¼‰:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Method Description:"
-msgstr ""
+msgstr "メソッドã«ã¤ã„ã¦ã®è¨˜è¼‰:"
#: editor/editor_help.cpp
+#, fuzzy
msgid "Search Text"
-msgstr ""
+msgstr "テキストを探ã™"
#: editor/editor_log.cpp
-msgid " Output:"
-msgstr ""
+#, fuzzy
+msgid "Output:"
+msgstr " 出力:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
@@ -1287,114 +1723,142 @@ msgstr "削除"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/resources_dock.cpp
+#, fuzzy
msgid "Error saving resource!"
-msgstr ""
+msgstr "リソースä¿å­˜ã‚¨ãƒ©ãƒ¼!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/resources_dock.cpp
+#, fuzzy
msgid "Save Resource As.."
-msgstr ""
+msgstr "~ã¨ã„ã†åå‰ã§ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
#: editor/editor_node.cpp editor/export_template_manager.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "I see.."
-msgstr ""
+msgstr "ã‚ã‹ã£ãŸ.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Can't open file for writing:"
-msgstr ""
+msgstr "ファイルを開ã„ã¦æ›¸ãè¾¼ã‚ã¾ã›ã‚“:"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Requested file format unknown:"
-msgstr ""
+msgstr "ãã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æœªçŸ¥ã®ãƒ•ォーマットã§ã™:"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Error while saving."
-msgstr ""
+msgstr "ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸ."
#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "シーンをä¿å­˜"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Analyzing"
-msgstr ""
+msgstr "分æžä¸­"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Creating Thumbnail"
-msgstr ""
+msgstr "サムãƒã‚¤ãƒ«ã‚’作æˆã—ã¦ã„ã¾ã™"
#: editor/editor_node.cpp
#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "ã“ã®å‡¦ç†ã«ã¯ã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
-"シーンをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãŠãらãä¾å­˜é–¢ä¿‚ (インスタンス) を満ãŸã›ã¦ã„ã¾"
-"ã›ã‚“。"
+"シーンをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãŠãらãä¾å­˜é–¢ä¿‚ (インスタンス) を完備ã•れã¦ã„"
+"ãªã„ã¨æ€ã‚れã¾ã™."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Failed to load resource."
-msgstr ""
+msgstr "リソース読ã¿è¾¼ã¿å¤±æ•—"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Can't load MeshLibrary for merging!"
-msgstr ""
+msgstr "マージã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãƒ©ã‚¤ãƒ–ラリーã®èª­ã¿è¾¼ã¿å¤±æ•—"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Error saving MeshLibrary!"
-msgstr ""
+msgstr "メッシュライブラリーã®ä¿å­˜ã‚¨ãƒ©ãƒ¼!"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Can't load TileSet for merging!"
-msgstr ""
+msgstr "マージã™ã‚‹ã‚¿ã‚¤ãƒ«ã‚»ãƒƒãƒˆã®èª­ã¿è¾¼ã¿å¤±æ•—"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Error saving TileSet!"
-msgstr ""
+msgstr "タイルセットã®ä¿å­˜ã‚¨ãƒ©ãƒ¼!"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Error trying to save layout!"
-msgstr ""
+msgstr "レイアウトã®ä¿å­˜ã‚¨ãƒ©ãƒ¼"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Default editor layout overridden."
-msgstr ""
+msgstr "ã‚¨ãƒ‡ã‚£ã‚¿ã®æ¨™æº–レイアウトを上書ãã—ã¾ã—ãŸ."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Layout name not found!"
-msgstr ""
+msgstr "レイアウトåãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Restored default layout to base settings."
-msgstr ""
+msgstr "æ¨™æº–ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’åŸºæœ¬è¨­å®šã«æˆ»ã—ã¾ã—ãŸ"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Copy Params"
-msgstr ""
+msgstr "パラメーターをコピーã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Paste Params"
-msgstr ""
+msgstr "パラメーターを張り付ã‘ã‚‹"
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
msgid "Paste Resource"
-msgstr ""
+msgstr "リソースを張り付ã‘ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Copy Resource"
-msgstr ""
+msgstr "リソースをコピーã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Make Built-In"
-msgstr ""
+msgstr "ビルトインを作る"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Make Sub-Resources Unique"
-msgstr ""
+msgstr "一æ„ã®ï¼ˆï¼ä»–ã¨é‡è¤‡ã—ãªã„)サブリソースを生æˆ"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open in Help"
-msgstr ""
+msgstr "ヘルプを開ã"
#: editor/editor_node.cpp
#, fuzzy
@@ -1413,11 +1877,15 @@ msgstr ""
"'アプリケーション' カテゴリã®ä¸‹ã®'プロジェクトã®è¨­å®š'ã§å¤‰æ›´ã§ãã¾ã™ã€‚"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"Selected scene '%s' does not exist, select a valid one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"é¸æŠžã—ãŸã‚·ãƒ¼ãƒ³'%s' ã¯å­˜åœ¨ã—ã¾ã›ã‚“ 有効ãªã‚·ãƒ¼ãƒ³ã‚’指定ã—ã¦ãã ã•ã„\n"
+"指定ã•れãŸã‚·ãƒ¼ãƒ³ã¯å¾Œã§\"アプリケーション\"ã®\"プロジェクトã®è¨­å®š\"ã‹ã‚‰å¤‰æ›´å¯"
+"能ã§ã™"
#: editor/editor_node.cpp
#, fuzzy
@@ -1438,51 +1906,97 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
-msgstr ""
+msgstr "サブプロセスを開始ã§ãã¾ã›ã‚“!"
#: editor/editor_node.cpp
msgid "Open Scene"
msgstr "シーンを開ã"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open Base Scene"
-msgstr ""
+msgstr "基本シーンを開ã"
#: editor/editor_node.cpp
msgid "Quick Open Scene.."
-msgstr ""
+msgstr "シーンã®ã‚¯ã‚¤ãƒƒã‚¯ã‚ªãƒ¼ãƒ—ン.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Quick Open Script.."
-msgstr ""
+msgstr "スクリプトã®ã‚¯ã‚¤ãƒƒã‚¯ã‚ªãƒ¼ãƒ—ン.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
+#, fuzzy
+msgid "Save & Close"
+msgstr "ファイルをä¿å­˜"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
msgid "Save Scene As.."
-msgstr ""
+msgstr "~ã®åå‰ã§ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜ã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "No"
-msgstr ""
+msgstr "ã„ã„ãˆ"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Yes"
+msgstr "ã¯ã„"
#: editor/editor_node.cpp
+#, fuzzy
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "ã“ã®ã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¦ã„ã¾ã›ã‚“. runã™ã‚‹å‰ã«ä¿å­˜ã—ã¾ã™ã‹?"
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "This operation can't be done without a scene."
+msgstr "ã“ã®å‡¦ç†ã«ã¯ã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr ""
+msgstr "メッシュライブラリã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/editor_node.cpp
msgid "Export Tile Set"
-msgstr ""
+msgstr "タイルセットã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "ã“ã®å‡¦ç†ã«ã¯ã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Current scene not saved. Open anyway?"
+msgstr "ã“ã®ã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¦ã„ã¾ã›ã‚“. ãれã§ã‚‚é–‹ãã¾ã™ã‹?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't reload a scene that was never saved."
+msgstr "ä¿å­˜ã•れã¦ã„ãªã„シーンã¯å†èª­ã¿è¾¼ã¿ã§ãã¾ã›ã‚“"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Revert"
+msgstr "å…ƒã«æˆ»ã™"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "This action cannot be undone. Revert anyway?"
+msgstr "ã“ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã¯undoã§ãã¾ã›ã‚“. å…ƒã«æˆ»ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Quick Run Scene.."
+msgstr "シーンをクイックランã™ã‚‹"
#: editor/editor_node.cpp
msgid "Quit"
@@ -1493,33 +2007,42 @@ msgid "Exit the editor?"
msgstr "エディターを終了ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_node.cpp
-msgid "Current scene not saved. Open anyway?"
-msgstr ""
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
#: editor/editor_node.cpp
-msgid "Can't reload a scene that was never saved."
+#, fuzzy
+msgid "Save & Quit"
+msgstr "ファイルをä¿å­˜"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Revert"
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
-msgid "This action cannot be undone. Revert anyway?"
+#, fuzzy
+msgid "Pick a Main Scene"
+msgstr "メインシーンを指定"
+
+#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quick Run Scene.."
+msgid "' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
msgstr ""
#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
+msgid "Unable to load addon script from path: '"
msgstr ""
#: editor/editor_node.cpp
@@ -1527,118 +2050,151 @@ 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"
+"変更ã™ã‚‹ãŸã‚ã«ã¯ã€ã‚·ãƒ¼ãƒ³ã‚’継承ã—ã¦æ–°ã—ã生æˆã—ã¾ã™."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Ugh"
-msgstr ""
+msgstr "ã†ã‡"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"Error loading scene, it must be inside the project path. Use 'Import' to "
"open the scene, then save it inside the project path."
msgstr ""
+"シーン読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€€ã‚·ãƒ¼ãƒ³ã¯ãƒ—ロジェクトパス内ã«ä½ç½®ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“"
+"ã®ã‚·ãƒ¼ãƒ³ã‚’é–‹ãã«ã¯'インãƒãƒ¼ãƒˆ'を使用ã—ã€ãƒ—ロジェクトパス内ã«ä¿å­˜ã—ã¦ãã ã•ã„"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Error loading scene."
-msgstr ""
+msgstr "シーンã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Scene '%s' has broken dependencies:"
-msgstr ""
+msgstr "シーン'%s' ã¯ä¾å­˜é–¢ä¿‚ãŒå£Šã‚Œã¦ã„ã¾ã™:"
#: editor/editor_node.cpp
msgid "Save Layout"
-msgstr ""
+msgstr "レイアウトをä¿å­˜"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Delete Layout"
-msgstr ""
+msgstr "ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã®æ¶ˆåŽ»"
+
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "Default"
+msgstr "標準(既定)"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Switch Scene Tab"
-msgstr ""
+msgstr "シーンタブを切り替ãˆã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "%d more file(s)"
-msgstr ""
+msgstr "%d 多ã„ファイル"
#: editor/editor_node.cpp
+#, fuzzy
msgid "%d more file(s) or folder(s)"
-msgstr ""
+msgstr "%d 多ã„ファイルã‹ãƒ•ォルダ"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "最低é™ãƒ¢ãƒ¼ãƒ‰"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "最低é™ãƒ¢ãƒ¼ãƒ‰"
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Scene"
-msgstr ""
+msgstr "シーン"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Go to previously opened scene."
-msgstr ""
+msgstr "éŽåŽ»ã«é–‹ã„ãŸã‚·ãƒ¼ãƒ³ã«ç§»å‹•"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Next tab"
-msgstr ""
+msgstr "次ã®ã‚¿ãƒ–"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Previous tab"
-msgstr ""
+msgstr "以å‰ã®ã‚¿ãƒ–"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Filter Files.."
-msgstr ""
+msgstr "ファイルを絞り込む.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Operations with scene files."
-msgstr ""
+msgstr "シーンファイルã¸ã®æ“作"
#: editor/editor_node.cpp
+#, fuzzy
msgid "New Scene"
-msgstr ""
+msgstr "æ–°ã—ã„シーン"
#: editor/editor_node.cpp
+#, fuzzy
msgid "New Inherited Scene.."
-msgstr ""
+msgstr "æ–°ã—ã„継承ã—ãŸã‚·ãƒ¼ãƒ³.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open Scene.."
-msgstr ""
+msgstr "シーンを開ã.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Save Scene"
-msgstr ""
+msgstr "シーンをä¿å­˜ã™ã‚‹"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save all Scenes"
-msgstr "ファイルをä¿å­˜"
+msgstr "シーンをã™ã¹ã¦ä¿å­˜"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Close Scene"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
+msgstr "シーンを閉ã˜ã‚‹"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Open Recent"
-msgstr ""
+msgstr "最近ã®ã‚’é–‹ã"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Convert To.."
-msgstr ""
+msgstr "~ã«å¤‰æ›ã™ã‚‹.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "MeshLibrary.."
-msgstr ""
+msgstr "メッシュライブラリ.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "TileSet.."
-msgstr ""
+msgstr "タイルセット.."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -1648,58 +2204,70 @@ msgstr "å…ƒã«æˆ»ã™"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
+#, fuzzy
msgid "Redo"
-msgstr ""
+msgstr "å†å®Ÿè¡Œ"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Revert Scene"
-msgstr ""
+msgstr "シーンを戻ã™"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
+msgstr "数多ãã®ãƒ—ロジェクトやシーンã®ãƒ„ール"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Project"
-msgstr ""
+msgstr "プロジェクト"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Project Settings"
-msgstr ""
+msgstr "プロジェクトã®è¨­å®š"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Run Script"
-msgstr ""
+msgstr "スクリプトã®å®Ÿè¡Œ"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export"
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆ"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Tools"
-msgstr ""
+msgstr "ツール"
#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "終了ã—ã¦ãƒ—ロジェクトリストを開ã"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Debug"
-msgstr ""
+msgstr "デãƒãƒƒã‚°"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
-msgstr ""
+msgstr "リモートデãƒãƒƒã‚°ä»˜ãã§ãƒ‡ãƒ—ロイ(æä¾›ï¼‰ã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"When exporting or deploying, the resulting executable will attempt to "
"connect to the IP of this computer in order to be debugged."
msgstr ""
+"エクスãƒãƒ¼ãƒˆã™ã‚‹ã«ã›ã‚ˆã€ãƒ‡ãƒ—ロイ(æä¾›ï¼‰ã™ã‚‹ã«ã›ã‚ˆã€ç”Ÿæˆã•れãŸå®Ÿè¡Œãƒ•ァイル"
+"ã¯ã€ã“ã®ã‚³ãƒ³ãƒ”ューターã®ï¼©ï¼°ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãƒ‡ãƒãƒƒã‚°ã®ãŸã‚接続ã—よã†ã¨ã™ã‚‹."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Small Deploy with Network FS"
-msgstr ""
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ•ァイルシステムã§ãƒ‡ãƒ—ロイ(æä¾›ï¼‰ã™ã‚‹"
#: editor/editor_node.cpp
msgid ""
@@ -1710,256 +2278,310 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This "
"option speeds up testing for games with a large footprint."
msgstr ""
+"ã“ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæœ‰åйã«ã™ã‚‹ã¨ã€æ›¸ã出ã—ã‚‚ã—ãã¯ãƒ‡ãƒ—ロイ(æä¾›ï¼‰ã•ã‚Œã‚‹æ™‚ã€æœ€å°"
+"ã®å®Ÿè¡Œãƒ•ァイルを生æˆã—ã¾ã™. \n"
+"ファイルシステムã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯è¶Šã—ã«ã‚¨ãƒ‡ã‚£ã‚¿ã®ãƒ—ロジェクトを利用ã—ã¾ã™\n"
+"Androidã§ã¯USBケーブルã®åˆ©ç”¨ã§ã‚ˆã‚Šé«˜é€Ÿã«ãªã‚Šã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã¯å¤§ããªã‚²ãƒ¼"
+"ムã®ãƒ†ã‚¹ãƒˆã‚’スピードアップã§ãã¾ã™ã€‚"
#: editor/editor_node.cpp
msgid "Visible Collision Shapes"
-msgstr ""
+msgstr "コリジョンã®ã‚·ã‚§ã‚¤ãƒ—を見ãˆã‚‹ã‚ˆã†ã«ãªã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the "
"running game if this option is turned on."
msgstr ""
+"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ã‚³ãƒªã‚¸ãƒ§ãƒ³ã®ã‚·ã‚§ã‚£ãƒ—ã¨ãƒ¬ã‚¤ã‚­ãƒ£ã‚¹ãƒˆã®ãƒŽãƒ¼ãƒ‰ãŒã€"
+"ゲーム実行時ã«è¦‹ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Visible Navigation"
-msgstr ""
+msgstr "ナビゲーションãŒè¦‹ãˆã‚‹ã‚ˆã†ã«ãªã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"Navigation meshes and polygons will be visible on the running game if this "
"option is turned on."
msgstr ""
+"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ãƒŠãƒ“ゲーションメッシュã¨ãƒãƒªã‚´ãƒ³ãŒã‚²ãƒ¼ãƒ å®Ÿè¡Œæ™‚"
+"ã«è¦‹ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Sync Scene Changes"
-msgstr ""
+msgstr "シーンã®å¤‰æ›´ã‚’åŒæœŸ"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"When this option is turned on, any changes made to the scene in the editor "
"will be replicated in the running game.\n"
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ã‚¨ãƒ‡ã‚£ã‚¿ã«ã‚ˆã‚‹ã‚·ãƒ¼ãƒ³ã®å¤‰æ›´ã¯å®Ÿè¡Œä¸­ã®ã‚²ãƒ¼ãƒ ã«é©"
+"用ã•れã¾ã™.リモート実行ã®å ´åˆã€ã“ã®ã‚ªãƒ—ションã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ•ァイルシステムを"
+"使ã†ã¨ã‚ˆã‚ŠåŠ¹æžœçš„ã§ã™"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Sync Script Changes"
-msgstr ""
+msgstr "スクリプトã®å¤‰æ›´ã‚’åŒæœŸã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"When this option is turned on, any script that is saved will be reloaded on "
"the running game.\n"
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"ã“ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨ã€ä¿å­˜ã—ãŸã‚¹ã‚¯ãƒªãƒ—トãŒå®Ÿè¡Œä¸­ã®ã‚²ãƒ¼ãƒ ã«é©ç”¨ã•れã¾"
+"ã™.リモート実行ã®å ´åˆã€ã“ã®ã‚ªãƒ—ションã¯ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ•ァイルシステムを使ã†ã¨ã‚ˆ"
+"り効果的ã§ã™"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Editor"
-msgstr ""
+msgstr "エディタ"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
+#, fuzzy
msgid "Editor Settings"
-msgstr ""
+msgstr "エディタã®è¨­å®š"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Editor Layout"
-msgstr ""
+msgstr "エディタã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Toggle Fullscreen"
-msgstr ""
+msgstr "フルスクリーンã®åˆ‡ã‚Šæ›¿ãˆ"
#: editor/editor_node.cpp editor/project_export.cpp
+#, fuzzy
msgid "Manage Export Templates"
-msgstr ""
+msgstr "テンプレート エクスãƒãƒ¼ãƒˆã‚’管ç†"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Help"
-msgstr ""
+msgstr "ヘルプ"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Classes"
-msgstr ""
+msgstr "クラス"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Online Docs"
-msgstr "é–‰ã˜ã‚‹"
+msgstr "オンライン文書"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Q&A"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Issue Tracker"
-msgstr ""
+msgstr "課題(ãƒã‚°ï¼‰ç®¡ç†ã‚·ã‚¹ãƒ†ãƒ "
#: editor/editor_node.cpp
+#, fuzzy
msgid "About"
-msgstr ""
+msgstr "ã«ã¤ã„ã¦"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Play the project."
-msgstr ""
+msgstr "プロジェクトã®å®Ÿè¡Œ"
#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#, fuzzy
msgid "Play"
-msgstr ""
+msgstr "実行"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Pause the scene"
-msgstr ""
+msgstr "ã‚·ãƒ¼ãƒ³ã‚’ä¸€æ™‚åœæ­¢"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Pause Scene"
-msgstr ""
+msgstr "ã‚·ãƒ¼ãƒ³ã‚’ä¸€æ™‚åœæ­¢"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Stop the scene."
-msgstr ""
+msgstr "シーンを止ã‚ã‚‹"
#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#, fuzzy
msgid "Stop"
-msgstr ""
+msgstr "æ­¢ã‚ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Play the edited scene."
-msgstr ""
+msgstr "編集ã—ãŸã‚·ãƒ¼ãƒ³ã‚’実行"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Play Scene"
-msgstr ""
+msgstr "シーンを実行"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Play custom scene"
-msgstr ""
+msgstr "カスタムシーンを実行"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Play Custom Scene"
-msgstr ""
+msgstr "カスタムシーンを実行"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Spins when the editor window repaints!"
-msgstr ""
+msgstr "ã‚¨ãƒ‡ã‚£ã‚¿ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’å†æç”»ã™ã‚‹ã¨ãã«å¤‰æ›´ã™ã‚‹!"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Update Always"
-msgstr ""
+msgstr "常ã«ã‚¢ãƒƒãƒ—デート"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Update Changes"
-msgstr ""
+msgstr "å¤‰æ›´ã‚’åæ˜ ã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Disable Update Spinner"
-msgstr ""
+msgstr "ã‚¢ãƒƒãƒ—ãƒ‡ãƒ¼ãƒˆåæ˜ ã‚’åœæ­¢"
#: editor/editor_node.cpp
msgid "Inspector"
-msgstr ""
+msgstr "インスペクター"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Create a new resource in memory and edit it."
-msgstr ""
+msgstr "ãƒ¡ãƒ¢ãƒªãƒ¼ã«æ–°ã—ã„リソースを確ä¿ã—編集ã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Load an existing resource from disk and edit it."
-msgstr ""
+msgstr "既存ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ディスクã‹ã‚‰èª­ã¿è¾¼ã¿ç·¨é›†ã™ã‚‹"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Save the currently edited resource."
-msgstr ""
+msgstr "ç¾åœ¨ç·¨é›†ä¸­ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Save As.."
-msgstr ""
+msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜.."
#: editor/editor_node.cpp
msgid "Go to the previous edited object in history."
-msgstr ""
+msgstr "以å‰ã«ç·¨é›†ã—ãŸã‚ªãƒ–ジェクト履歴ã§ã€Œã²ã¨ã¤å‰ã€ã«ç§»å‹•."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Go to the next edited object in history."
-msgstr ""
+msgstr "以å‰ã«ç·¨é›†ã—ãŸã‚ªãƒ–ジェクト履歴ã§ã€Œæ¬¡ã€ã«ç§»å‹•."
#: editor/editor_node.cpp
+#, fuzzy
msgid "History of recently edited objects."
-msgstr ""
+msgstr "最近編集ã—ãŸã‚ªãƒ–ジェクトã®å±¥æ­´"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Object properties."
-msgstr ""
+msgstr "オブジェクトã®ãƒ—ロパティ"
#: editor/editor_node.cpp
+#, fuzzy
msgid "FileSystem"
-msgstr ""
+msgstr "ファイルシステム"
#: editor/editor_node.cpp editor/node_dock.cpp
+#, fuzzy
msgid "Node"
-msgstr ""
+msgstr "ノード"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Output"
+msgstr "出力"
+
+#: editor/editor_node.cpp
+msgid "Don't Save"
msgstr ""
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
-msgstr ""
+msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
msgid "Update"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
+msgstr "アップデート"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Import Templates From ZIP File"
-msgstr ""
+msgstr "ZIPファイルã‹ã‚‰ãƒ†ãƒ³ãƒ—レートをインãƒãƒ¼ãƒˆ"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
-msgstr ""
+msgstr "プロジェクトをエクスãƒãƒ¼ãƒˆ"
#: editor/editor_node.cpp
msgid "Export Library"
-msgstr ""
+msgstr "ライブラリをエクスãƒãƒ¼ãƒˆ"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Merge With Existing"
-msgstr ""
+msgstr "(ライブラリを)マージã™ã‚‹"
#: editor/editor_node.cpp
msgid "Password:"
-msgstr ""
+msgstr "パスワード:"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open & Run a Script"
-msgstr ""
+msgstr "é–‹ã„ã¦ã‚¹ã‚¯ãƒªãƒ—トを実行ã™ã‚‹"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "æ–°ã—ã„継承ã—ãŸã‚·ãƒ¼ãƒ³.."
#: editor/editor_node.cpp
msgid "Load Errors"
+msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
+
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
msgstr ""
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
-msgstr "ディレクトリを開ã"
+msgstr "2Dエディタを開ã"
#: editor/editor_node.cpp
#, fuzzy
@@ -1967,211 +2589,267 @@ msgid "Open 3D Editor"
msgstr "ディレクトリを開ã"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open Script Editor"
-msgstr ""
+msgstr "スクリプトエディタを開ã"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open Asset Library"
-msgstr ""
+msgstr "アセット ライブラリを開ã"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "エディターを終了ã—ã¾ã™ã‹ï¼Ÿ"
+msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Open the previous Editor"
-msgstr ""
+msgstr "å‰ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
-msgstr ""
+msgstr "インストール済ã¿ã®ãƒ—ラグイン:"
#: editor/editor_plugin_settings.cpp
+#, fuzzy
msgid "Author:"
-msgstr ""
+msgstr "作者:"
#: editor/editor_plugin_settings.cpp
+#, fuzzy
msgid "Status:"
-msgstr ""
+msgstr "ステータス:"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Stop Profiling"
-msgstr ""
+msgstr "ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒªãƒ³ã‚°åœæ­¢"
#: editor/editor_profiler.cpp
msgid "Start Profiling"
-msgstr ""
+msgstr "プロファイリング開始"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Measure:"
-msgstr ""
+msgstr "測定:"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Frame Time (sec)"
-msgstr ""
+msgstr "フレーム時間(秒)"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Average Time (sec)"
-msgstr ""
+msgstr "平凿™‚間(秒)"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Frame %"
-msgstr ""
+msgstr "フレーム %"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Fixed Frame %"
-msgstr ""
+msgstr "固定フレーム %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Time:"
-msgstr ""
+msgstr "時間:"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Inclusive"
-msgstr ""
+msgstr "ã‚’å«ã‚€"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Self"
-msgstr ""
+msgstr "セルフ"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Frame #:"
-msgstr ""
+msgstr "フレーム #:"
#: editor/editor_reimport_dialog.cpp
+#, fuzzy
msgid "Please wait for scan to complete."
-msgstr ""
+msgstr "走査完了をãŠå¾…ã¡ãã ã•ã„"
#: editor/editor_reimport_dialog.cpp
+#, fuzzy
msgid "Current scene must be saved to re-import."
-msgstr ""
+msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«ã¯ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™"
#: editor/editor_reimport_dialog.cpp
+#, fuzzy
msgid "Save & Re-Import"
-msgstr ""
+msgstr "ä¿å­˜ã—ã¦å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/editor_reimport_dialog.cpp
+#, fuzzy
msgid "Re-Importing"
-msgstr ""
+msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/editor_reimport_dialog.cpp
+#, fuzzy
msgid "Re-Import Changed Resources"
+msgstr "変更ã—ãŸãƒªã‚½ãƒ¼ã‚¹ã‚’å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
msgstr ""
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "Write your logic in the _run() method."
-msgstr ""
+msgstr "ã‚ãªãŸã®ãƒ­ã‚¸ãƒƒã‚¯ã‚’_run() メソッドã«è¨˜è¿°ã—ã¦ãã ã•ã„"
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "There is an edited scene already."
-msgstr ""
+msgstr "æ—¢ã«ç·¨é›†ã—ãŸã‚·ãƒ¼ãƒ³ãŒã‚りã¾ã™"
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "Couldn't instance script:"
-msgstr ""
+msgstr "スクリプトをインスタンス化ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "Did you forget the 'tool' keyword?"
-msgstr ""
+msgstr "キーワード'tool'を忘れã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ"
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "Couldn't run script:"
-msgstr ""
+msgstr "スクリプトを実行ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "Did you forget the '_run' method?"
-msgstr ""
+msgstr "'_run'メソッドを忘れã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Default (Same as Editor)"
-msgstr ""
+msgstr "既定(エディタã¨åŒã˜ï¼‰"
#: editor/editor_sub_scene.cpp
+#, fuzzy
msgid "Select Node(s) to Import"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠžã™ã‚‹"
#: editor/editor_sub_scene.cpp
+#, fuzzy
msgid "Scene Path:"
-msgstr ""
+msgstr "シーンã®ãƒ‘ス:"
#: editor/editor_sub_scene.cpp
+#, fuzzy
msgid "Import From Node:"
-msgstr ""
+msgstr "ノードã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ:"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Re-Download"
-msgstr ""
+msgstr "å†ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uninstall"
-msgstr ""
+msgstr "アンインストール"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "(Installed)"
-msgstr ""
+msgstr "(インストール済)"
#: editor/export_template_manager.cpp
msgid "Download"
-msgstr ""
+msgstr "ダウンロード"
#: editor/export_template_manager.cpp
msgid "(Missing)"
-msgstr ""
+msgstr "(見ã¤ã‹ã‚Šã¾ã›ã‚“)"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "(Current)"
-msgstr ""
+msgstr "(ç¾åœ¨ã®ï¼‰"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Remove template version '%s'?"
-msgstr ""
+msgstr "テンプレート ãƒãƒ¼ã‚¸ãƒ§ãƒ³'%s'を除去ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レート(ZIP)ファイルを確èªã§ãã¾ã›ã‚“."
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Invalid version.txt format inside templates."
-msgstr ""
+msgstr "テンプレート内ã®version.txt フォーマットãŒä¸æ­£ã§ã™"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid ""
"Invalid version.txt format inside templates. Revision is not a valid "
"identifier."
msgstr ""
+"テンプレート内ã®version.txt フォーマットãŒä¸æ­£ã§ã™. Revisionã¯æœ‰åйãªè­˜åˆ¥å­ã§"
+"ã¯ã‚りã¾ã›ã‚“."
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "No version.txt found inside templates."
-msgstr ""
+msgstr "テンプレート内ã«version.txtãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Error creating path for templates:\n"
-msgstr ""
+msgstr "テンプレートã®ãƒ‘ス生æˆã‚¨ãƒ©ãƒ¼\n"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Extracting Export Templates"
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆã®æŠ½å‡º"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Importing:"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆ:"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Loading Export Templates"
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レートã®èª­ã¿è¾¼ã¿"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Current Version:"
-msgstr ""
+msgstr "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Installed Versions:"
-msgstr ""
+msgstr "インストールã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Install From File"
-msgstr ""
+msgstr "ファイルã‹ã‚‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
#: editor/export_template_manager.cpp
#, fuzzy
@@ -2184,156 +2862,260 @@ msgid "Select template file"
msgstr "ã™ã¹ã¦é¸æŠž"
#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Export Template Manager"
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レート マãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
#: editor/file_type_cache.cpp
+#, fuzzy
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 "Cannot navigate to '"
-msgstr ""
+msgstr "~ã«ç§»å‹•ã§ãã¾ã›ã‚“"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "ä¿å­˜ã—ã¦å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "ソース:"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Same source and destination files, doing nothing."
+msgstr "åŒã˜ãƒ•ã‚¡ã‚¤ãƒ«ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã®ã§ã€ä½•も行ã„ã¾ã›ã‚“."
+
+#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Same source and destination paths, doing nothing."
-msgstr ""
+msgstr "åŒã˜ãƒ‘ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã®ã§ã€ä½•も行ã„ã¾ã›ã‚“"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Can't move directories to within themselves."
+msgstr "ディレクトリを自身ã®å†…部ã«ã¯ç§»å‹•ã§ãã¾ã›ã‚“"
+
+#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "イメージ読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "エラーをインãƒãƒ¼ãƒˆä¸­:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Can't operate on '..'"
-msgstr ""
+msgstr "'..'を処ç†ã§ãã¾ã›ã‚“"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Pick New Name and Location For:"
-msgstr ""
+msgstr "æ–°ã—ã„åå‰ã¨ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’é¸æŠž:"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "No files selected!"
-msgstr ""
+msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“!"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Expand all"
-msgstr ""
+msgstr "ã™ã¹ã¦å±•é–‹ã™ã‚‹"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Collapse all"
-msgstr ""
+msgstr "ã™ã¹ã¦æŠ˜ã‚ŠãŸãŸã‚€"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Show In File Manager"
-msgstr ""
+msgstr "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§è¡¨ç¤º"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Instance"
-msgstr ""
+msgstr "インスタンス"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Edit Dependencies.."
-msgstr ""
+msgstr "ä¾å­˜é–¢ä¿‚を編集.."
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "View Owners.."
-msgstr ""
+msgstr "オーナーを見る.."
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Copy Path"
-msgstr ""
+msgstr "パスをコピーã™ã‚‹"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Rename or Move.."
-msgstr ""
+msgstr "åå‰ã‚’変ãˆã‚‹ã‹ç§»å‹•ã—ã¦ãã ã•ã„.."
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Move To.."
-msgstr ""
+msgstr "~ã¸ç§»å‹•ã™ã‚‹.."
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Info"
-msgstr ""
+msgstr "インフォーメーション"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Re-Import.."
-msgstr ""
+msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
-msgstr ""
+msgstr "最後ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Next Directory"
-msgstr ""
+msgstr "次ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Re-Scan Filesystem"
-msgstr ""
+msgstr "ファイルシステムをå†èµ°æŸ»"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Toggle folder status as Favorite"
-msgstr ""
+msgstr "フォルダã®çŠ¶æ…‹ã‚’ãŠæ°—ã«å…¥ã‚Šã«å¤‰æ›´"
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Instance the selected scene(s) as child of the selected node."
+msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã®å­ã¨ã—ã¦ã€é¸æŠžã—ãŸã‚·ãƒ¼ãƒ³ã‚’インスタンス化ã™ã‚‹"
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Move"
-msgstr ""
+msgstr "移動"
#: editor/groups_editor.cpp
+#, fuzzy
msgid "Add to Group"
-msgstr ""
+msgstr "グループã«åŠ ãˆã‚‹"
#: editor/groups_editor.cpp
+#, fuzzy
msgid "Remove from Group"
+msgstr "グループã‹ã‚‰å–り除ã"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "シーンをインãƒãƒ¼ãƒˆä¸­.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "3Dシーンをインãƒãƒ¼ãƒˆ"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+#, fuzzy
msgid "Import Scene"
-msgstr ""
+msgstr "シーンをインãƒãƒ¼ãƒˆ"
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Importing Scene.."
-msgstr ""
+msgstr "シーンをインãƒãƒ¼ãƒˆä¸­.."
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Running Custom Script.."
-msgstr ""
+msgstr "カスタムスクリプトを実行中"
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Couldn't load post-import script:"
-msgstr ""
+msgstr "æ—¢ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ãŸã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
+"無効ãª/壊れãŸã‚¤ãƒ³ãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—ト(コンソールをãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„)"
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Error running post-import script:"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—ト実行エラー"
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Saving.."
+msgstr "ä¿å­˜ä¸­.."
+
+#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
@@ -2342,56 +3124,65 @@ msgid " Files"
msgstr "ファイル:"
#: editor/import_dock.cpp
+#, fuzzy
msgid "Import As:"
-msgstr ""
+msgstr "~ã¨ã—ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆ:"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
-msgstr ""
+msgstr "åˆæœŸè¨­å®šå€¤.."
#: editor/import_dock.cpp
+#, fuzzy
msgid "Reimport"
-msgstr ""
+msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
+#, fuzzy
msgid "No bit masks to import!"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒ“ットマスクãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
#: editor/io_plugins/editor_sample_import_plugin.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Target path is empty."
-msgstr ""
+msgstr "ターゲットã®ãƒ‘スã«ä½•ã‚‚ã‚りã¾ã›ã‚“"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
#: editor/io_plugins/editor_sample_import_plugin.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Target path must be a complete resource path."
-msgstr ""
+msgstr "ターゲットã®ãƒ‘スã¯ãƒªã‚½ãƒ¼ã‚¹ã®å®Œå…¨ãªãƒ‘スã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“."
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
#: editor/io_plugins/editor_sample_import_plugin.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Target path must exist."
-msgstr ""
+msgstr "ターゲットã®ãƒ‘スãŒå­˜åœ¨ã—ã¾ã›ã‚“"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
#: editor/io_plugins/editor_mesh_import_plugin.cpp
#: editor/io_plugins/editor_sample_import_plugin.cpp
+#, fuzzy
msgid "Save path is empty!"
-msgstr ""
+msgstr "ä¿å­˜ã™ã‚‹ãƒ‘スãŒã‚りã¾ã›ã‚“!"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
+#, fuzzy
msgid "Import BitMasks"
-msgstr ""
+msgstr "ビットマスクをインãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Source Texture(s):"
-msgstr ""
+msgstr "ソースã®ãƒ†ã‚¯ã‚¹ãƒãƒ£:"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
#: editor/io_plugins/editor_mesh_import_plugin.cpp
@@ -2399,8 +3190,9 @@ msgstr ""
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/io_plugins/editor_texture_import_plugin.cpp
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Target Path:"
-msgstr ""
+msgstr "ターゲットã®ãƒ‘ス:"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
#: editor/io_plugins/editor_font_import_plugin.cpp
@@ -2408,75 +3200,92 @@ msgstr ""
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/io_plugins/editor_texture_import_plugin.cpp
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Accept"
-msgstr ""
+msgstr "å—å–OK"
#: editor/io_plugins/editor_bitmask_import_plugin.cpp
msgid "Bit Mask"
-msgstr ""
+msgstr "ビットマスク"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "No source font file!"
-msgstr ""
+msgstr "ソースã®ãƒ•ォントファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "No target font resource!"
-msgstr ""
+msgstr "ターゲットã®ãƒ•ォントリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
+"ファイル拡張å­ãŒä¸æ­£ã§ã™.\n"
+" .fontを使ã£ã¦ãã ã•ã„."
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Can't load/process source font."
-msgstr ""
+msgstr "ソースã®ãƒ•ォントを読ã¿è¾¼ã¿/処ç†ã§ãã¾ã›ã‚“."
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Couldn't save font."
-msgstr ""
+msgstr "フォントをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Source Font:"
-msgstr ""
+msgstr "ソース フォント:"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Source Font Size:"
-msgstr ""
+msgstr "ソース フォントサイズ:"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Dest Resource:"
-msgstr ""
+msgstr "é€ã‚Šå…ˆã®ãƒªã‚½ãƒ¼ã‚¹:"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
+msgstr "ã„ã‚ã¯ã«ã»ã¸ã¨ï½ž."
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Test:"
-msgstr ""
+msgstr "テスト:"
#: editor/io_plugins/editor_font_import_plugin.cpp
#: editor/io_plugins/editor_mesh_import_plugin.cpp
#: editor/io_plugins/editor_sample_import_plugin.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Options:"
-msgstr ""
+msgstr "オプション:"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Font Import"
-msgstr ""
+msgstr "フォントã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid ""
"This file is already a Godot font file, please supply a BMFont type file "
"instead."
msgstr ""
+"ã“ã®ãƒ•ァイルã¯ã‚‚ã†Godotã®ãƒ•ォントファイルã§ã™. BMFont type ã®ãƒ•ァイルを代ã‚り"
+"ã«åˆ©ç”¨ã—ã¦ãã ã•ã„."
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Failed opening as BMFont file."
-msgstr ""
+msgstr "BMFont ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ"
#: editor/io_plugins/editor_font_import_plugin.cpp
#: scene/resources/dynamic_font.cpp
@@ -2499,582 +3308,698 @@ msgid "Invalid font size."
msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
#: editor/io_plugins/editor_font_import_plugin.cpp
+#, fuzzy
msgid "Invalid font custom source."
-msgstr ""
+msgstr "䏿­£ãªãƒ•ォントカスタムソース"
#: editor/io_plugins/editor_font_import_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp
msgid "Font"
-msgstr ""
+msgstr "フォント"
#: editor/io_plugins/editor_mesh_import_plugin.cpp
+#, fuzzy
msgid "No meshes to import!"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãŒã‚りã¾ã›ã‚“"
#: editor/io_plugins/editor_mesh_import_plugin.cpp
+#, fuzzy
msgid "Single Mesh Import"
-msgstr ""
+msgstr "シングルメッシュをインãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_mesh_import_plugin.cpp
+#, fuzzy
msgid "Source Mesh(es):"
-msgstr ""
+msgstr "ソース メッシュ:"
#: editor/io_plugins/editor_mesh_import_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh"
-msgstr ""
+msgstr "メッシュ"
+
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+#, fuzzy
+msgid "Surface %d"
+msgstr "サーフェース %d"
#: editor/io_plugins/editor_sample_import_plugin.cpp
+#, fuzzy
msgid "No samples to import!"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ã‚µãƒ³ãƒ—ルãŒã‚りã¾ã›ã‚“!"
#: editor/io_plugins/editor_sample_import_plugin.cpp
+#, fuzzy
msgid "Import Audio Samples"
-msgstr ""
+msgstr "オーディオサンプルをインãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_sample_import_plugin.cpp
+#, fuzzy
msgid "Source Sample(s):"
-msgstr ""
+msgstr "ソースã®ã‚µãƒ³ãƒ—ル:"
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "Audio Sample"
-msgstr ""
+msgstr "オーディオサンプル"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "New Clip"
-msgstr ""
+msgstr "æ–°ã—ã„クリップ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Animation Options"
-msgstr ""
+msgstr "アニメーションã®ã‚ªãƒ—ション"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Flags"
-msgstr ""
+msgstr "フラグ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Bake FPS:"
-msgstr ""
+msgstr "FPSを焼ãè¾¼ã¿(ベイク):"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Optimizer"
-msgstr ""
+msgstr "オプティマイザ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Max Linear Error"
-msgstr ""
+msgstr "最大ä½ç½®ã‚¨ãƒ©ãƒ¼"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Max Angular Error"
-msgstr ""
+msgstr "最大角度エラー"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Max Angle"
-msgstr ""
+msgstr "最大角度"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Clips"
-msgstr ""
+msgstr "クリップ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Start(s)"
-msgstr ""
+msgstr "é–‹å§‹"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "End(s)"
-msgstr ""
+msgstr "終了"
#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Loop"
-msgstr ""
+msgstr "ループ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Filters"
-msgstr ""
+msgstr "フィルター"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Source path is empty."
-msgstr ""
+msgstr "ソースã®ãƒ‘スã¯ç©ºã§ã™"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Couldn't load post-import script."
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã¿ã¾ã›ã‚“ã§ã—ãŸ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Invalid/broken script for post-import."
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ä¸æ­£ãª/壊れãŸã‚¹ã‚¯ãƒªãƒ—トã§ã™"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Error importing scene."
-msgstr ""
+msgstr "シーン インãƒãƒ¼ãƒˆã®ã‚¨ãƒ©ãƒ¼"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Import 3D Scene"
-msgstr ""
+msgstr "3Dシーンをインãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Source Scene:"
-msgstr ""
+msgstr "ソース シーン:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Same as Target Scene"
-msgstr ""
+msgstr "ターゲットシーンã¨åŒã˜"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Shared"
-msgstr ""
+msgstr "共有ã•れã¦ã„ã‚‹"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Target Texture Folder:"
-msgstr ""
+msgstr "ターゲットテクスãƒãƒ£ã®ãƒ•ォルダ:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Post-Process Script:"
-msgstr ""
+msgstr "後処ç†ã‚¹ã‚¯ãƒªãƒ—ト:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Custom Root Node Type:"
-msgstr ""
+msgstr "ルートノードã®ã‚«ã‚¹ã‚¿ãƒ ã‚¿ã‚¤ãƒ—:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Auto"
-msgstr ""
+msgstr "自動"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Root Node Name:"
-msgstr ""
+msgstr "ルートノードã®åå‰:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "The Following Files are Missing:"
-msgstr ""
+msgstr "以下ã®ãƒ•ァイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Import Anyway"
-msgstr ""
+msgstr "ã¨ã‚Šã‚ãˆãšã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "キャンセル"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Import & Open"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã—ã¦é–‹ã"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Edited scene has not been saved, open imported scene anyway?"
msgstr ""
+"編集ã—ãŸã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¦ã„ã¾ã›ã‚“ãŒã€ãれã§ã‚‚インãƒãƒ¼ãƒˆã—ãŸã‚·ãƒ¼ãƒ³ã‚’é–‹ãã¾ã™"
+"ã‹ï¼Ÿ"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Import Image:"
-msgstr ""
+msgstr "イメージをインãƒãƒ¼ãƒˆ:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Can't import a file over itself:"
-msgstr ""
+msgstr "åŒã˜ãƒ•ァイルã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "Couldn't localize path: %s (already local)"
-msgstr ""
+msgstr "パスをローカライズã§ãã¾ã›ã‚“: %s (ã™ã§ã«ãƒ­ãƒ¼ã‚«ãƒ«)"
#: editor/io_plugins/editor_scene_import_plugin.cpp
+#, fuzzy
msgid "3D Scene Animation"
-msgstr ""
+msgstr "3Dシーンアニメーション"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Uncompressed"
-msgstr ""
+msgstr "éžåœ§ç¸®"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Compress Lossless (PNG)"
-msgstr ""
+msgstr "ロスレス圧縮(PNG)"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Compress Lossy (WebP)"
-msgstr ""
+msgstr "éžå¯é€†åœ§ç¸®(WebP)"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Compress (VRAM)"
-msgstr ""
+msgstr "圧縮 (VRAM)"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Texture Format"
-msgstr ""
+msgstr "テクスãƒãƒ£ãƒ•ォーマット"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Texture Compression Quality (WebP):"
-msgstr ""
+msgstr "テクスãƒãƒ£åœ§ç¸®å“質 (WebP):"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Texture Options"
-msgstr ""
+msgstr "テクスãƒãƒ£ã€€ã‚ªãƒ—ション"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Please specify some files!"
-msgstr ""
+msgstr "ãªã«ã‹ãƒ•ァイルを指定ã—ã¦ãã ã•ã„!"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "At least one file needed for Atlas."
-msgstr ""
+msgstr "ã‚¢ãƒˆãƒ©ã‚¹ã«æœ€ä½Žä¸€ã¤ã®ãƒ•ァイルを指定ã—ã¦ãã ã•ã„"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Error importing:"
-msgstr ""
+msgstr "エラーをインãƒãƒ¼ãƒˆä¸­:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Only one file is required for large texture."
-msgstr ""
+msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ãŸã‚ã«ä¸€ã¤ãƒ•ァイルãŒå¿…è¦ã§ã™"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Max Texture Size:"
-msgstr ""
+msgstr "最大テクスãƒãƒ£ã‚µã‚¤ã‚º:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Import Textures for Atlas (2D)"
-msgstr ""
+msgstr "アトラスã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ (2D)"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Cell Size:"
-msgstr ""
+msgstr "セルサイズ:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Large Texture"
-msgstr ""
+msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Import Large Textures (2D)"
-msgstr ""
+msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ (2D)"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Source Texture"
-msgstr ""
+msgstr "ソーステクスãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Base Atlas Texture"
-msgstr ""
+msgstr "基本アトラステクスãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Source Texture(s)"
-msgstr ""
+msgstr "ソース テクスãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Import Textures for 2D"
-msgstr ""
+msgstr "2Dテクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Import Textures for 3D"
-msgstr ""
+msgstr "3Dテクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Import Textures"
-msgstr ""
+msgstr "テクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "2D Texture"
-msgstr ""
+msgstr "2Dテクスãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "3D Texture"
-msgstr ""
+msgstr "3Dテクスãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Atlas Texture"
-msgstr ""
+msgstr "アトラステクスãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid ""
"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
"the project."
msgstr ""
+"注æ„:2Dテクスãƒãƒ£ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“. png/jpgファイルをプロジェ"
+"クトã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„."
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Crop empty space."
-msgstr ""
+msgstr "空白を刈り込む"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Texture"
-msgstr ""
+msgstr "テクスãƒãƒ£"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Import Large Texture"
-msgstr ""
+msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Load Source Image"
-msgstr ""
+msgstr "ソースイメージを読ã¿è¾¼ã‚€"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Slicing"
-msgstr ""
+msgstr "スライシング"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Inserting"
-msgstr ""
+msgstr "挿入"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Saving"
-msgstr ""
+msgstr "ä¿å­˜ä¸­"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Couldn't save large texture:"
-msgstr ""
+msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Build Atlas For:"
-msgstr ""
+msgstr "~ã®ã‚¢ãƒˆãƒ©ã‚¹ã‚’ビルド:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Loading Image:"
-msgstr ""
+msgstr "イメージを読ã¿è¾¼ã¿ä¸­:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Couldn't load image:"
-msgstr ""
+msgstr "イメージを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Converting Images"
-msgstr ""
+msgstr "イメージを変æ›ä¸­"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Cropping Images"
-msgstr ""
+msgstr "イメージをクロッピング(トリミング)"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Blitting Images"
-msgstr ""
+msgstr "イメージをé…ç½®(Blit)"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Couldn't save atlas image:"
-msgstr ""
+msgstr "アトラスイメージをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/io_plugins/editor_texture_import_plugin.cpp
+#, fuzzy
msgid "Couldn't save converted texture:"
-msgstr ""
+msgstr "変æ›ã—ãŸãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Invalid source!"
-msgstr ""
+msgstr "䏿­£ãªã‚½ãƒ¼ã‚¹!"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Invalid translation source!"
-msgstr ""
+msgstr "䏿­£ãªç¿»è¨³ã‚½ãƒ¼ã‚¹!"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Column"
-msgstr ""
+msgstr "カラム"
#: editor/io_plugins/editor_translation_import_plugin.cpp
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Language"
-msgstr ""
+msgstr "言語"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "No items to import!"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“!"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "No target path!"
-msgstr ""
+msgstr "ターゲットã®ãƒ‘スãŒã‚りã¾ã›ã‚“!"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Import Translations"
-msgstr ""
+msgstr "翻訳をインãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Couldn't import!"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ!"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Import Translation"
-msgstr ""
+msgstr "翻訳をインãƒãƒ¼ãƒˆ"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Source CSV:"
-msgstr ""
+msgstr "ソースCSVファイル:"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Ignore First Row"
-msgstr ""
+msgstr "最åˆã®è¡Œã‚’無視"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Compress"
-msgstr ""
+msgstr "圧縮"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr ""
+msgstr "プロジェクトã«è¿½åŠ  (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
+#, fuzzy
msgid "Import Languages:"
-msgstr ""
+msgstr "言語をインãƒãƒ¼ãƒˆ:"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Translation"
-msgstr ""
+msgstr "翻訳"
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
-msgstr ""
+msgstr "複数ノード セット"
#: editor/node_dock.cpp
msgid "Groups"
-msgstr ""
+msgstr "グループ"
#: editor/node_dock.cpp
+#, fuzzy
msgid "Select a Node to edit Signals and Groups."
-msgstr ""
+msgstr "シグナルã¨ã‚°ãƒ«ãƒ¼ãƒ—を編集ã™ã‚‹ãŸã‚ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠž"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Toggle Autoplay"
-msgstr ""
+msgstr "オートプレイを切替"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "New Animation Name:"
-msgstr ""
+msgstr "æ–°ã—ã„アニメーションã®åå‰:"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "New Anim"
-msgstr ""
+msgstr "æ–°ã—ã„アニメーション"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Change Animation Name:"
-msgstr ""
+msgstr "アニメーションã®åå‰ã‚’変更:"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Delete Animation?"
-msgstr "ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã®æœ€é©åŒ–"
+msgstr "アニメーションを削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
msgid "Remove Animation"
-msgstr ""
+msgstr "アニメーションを削除"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: Invalid animation name!"
-msgstr ""
+msgstr "エラー:アニメーションã®åå‰ãŒä¸æ­£ã§ã™!"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: Animation name already exists!"
-msgstr ""
+msgstr "エラー:アニメーションã®åå‰ãŒã™ã§ã«ã‚ã‚‹åå‰ã§ã™!"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Rename Animation"
-msgstr ""
+msgstr "アニメーションã®åå‰ã‚’変更"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
msgid "Add Animation"
-msgstr ""
+msgstr "アニメーションを加ãˆã‚‹"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Blend Next Changed"
-msgstr ""
+msgstr "ブレンドã™ã‚‹å¯¾è±¡ã‚’変更"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Change Blend Time"
-msgstr ""
+msgstr "ブレンドã™ã‚‹æ™‚間を変更"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Load Animation"
-msgstr ""
+msgstr "アニメーションを読ã¿è¾¼ã¿"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Duplicate Animation"
-msgstr ""
+msgstr "アニメーションを複製"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: No animation to copy!"
-msgstr ""
+msgstr "エラー:アニメーションã®è¤‡è£½å…ƒãŒã‚りã¾ã›ã‚“"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: No animation resource on clipboard!"
-msgstr ""
+msgstr "エラー:クリップボードã«ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã®ãƒªã‚½ãƒ¼ã‚¹ãŒã‚りã¾ã›ã‚“"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pasted Animation"
-msgstr ""
+msgstr "貼り付ã‘ãŸã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Paste Animation"
-msgstr ""
+msgstr "アニメーションを貼り付ã‘ã‚‹"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: No animation to edit!"
-msgstr ""
+msgstr "エラー:編集ã™ã‚‹ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãŒã‚りã¾ã›ã‚“!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ç¾æ™‚点ã‹ã‚‰å·»ã戻ã—å†ç”Ÿ(A)"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’最後ã‹ã‚‰å·»ã戻ã—å†ç”Ÿ (Shift+A)"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Stop animation playback. (S)"
-msgstr ""
+msgstr "アニメーションå†ç”Ÿã‚’中止(S)"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’最åˆã‹ã‚‰å†ç”Ÿ(Shift+D)"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Play selected animation from current pos. (D)"
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ç¾æ™‚点ã‹ã‚‰å†ç”Ÿ(D)"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Animation position (in seconds)."
-msgstr ""
+msgstr "アニメーションã®çµŒéŽæ™‚é–“(秒)"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Scale animation playback globally for the node."
-msgstr ""
+msgstr "ノードã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³å†ç”Ÿã®ç¸®å°ºå¤‰æ›´."
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Create new animation in player."
-msgstr ""
+msgstr "ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ãƒ—ãƒ¬ã‚¤ãƒ¤ãƒ¼å†…ã«æ–°ã—ã作æˆã™ã‚‹"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Load animation from disk."
-msgstr ""
+msgstr "ディスクã‹ã‚‰ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’読ã¿è¾¼ã‚€"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Load an animation from disk."
-msgstr ""
+msgstr "ディスクã‹ã‚‰ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’一ã¤èª­ã¿è¾¼ã‚€"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Save the current animation"
-msgstr ""
+msgstr "ç¾åœ¨ã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ä¿å­˜ã™ã‚‹"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Display list of animations in player."
-msgstr ""
+msgstr "プレイヤーã®ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãƒªã‚¹ãƒˆã‚’表示ã™ã‚‹"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Autoplay on Load"
-msgstr ""
+msgstr "読ã¿è¾¼ã¿å¾Œã€è‡ªå‹•å†ç”Ÿ"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Edit Target Blend Times"
-msgstr ""
+msgstr "ターゲットã®ãƒ–レンドã®å›žæ•°ã‚’変更ã™ã‚‹"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Animation Tools"
-msgstr ""
+msgstr "アニメーションツール"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Copy Animation"
-msgstr ""
+msgstr "アニメーションを複製ã™ã‚‹"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Create New Animation"
-msgstr ""
+msgstr "アニメーションを新ã—ã作る"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation Name:"
-msgstr ""
+msgstr "アニメーションã®åå‰:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
@@ -3082,298 +4007,355 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
-msgstr ""
+msgstr "エラー!"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Blend Times:"
-msgstr ""
+msgstr "ブレンドã®å›žæ•°:"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Next (Auto Queue):"
-msgstr ""
+msgstr "次(オートキュー)"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Cross-Animation Blend Times"
-msgstr ""
+msgstr "アニメーション間ã®ãƒ–レンド回数"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Animation"
-msgstr ""
+msgstr "アニメーション"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "New name:"
-msgstr ""
+msgstr "æ–°ã—ã„åå‰:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "ノードフィルターã®ç·¨é›†"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Scale:"
-msgstr ""
+msgstr "縮尺:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Fade In (s):"
-msgstr ""
+msgstr "フェードイン:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Fade Out (s):"
-msgstr ""
+msgstr "フェードアウト:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend"
-msgstr ""
+msgstr "ブレンド(æ··åˆï¼‰"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Mix"
-msgstr ""
+msgstr "ミクシング"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Auto Restart:"
-msgstr ""
+msgstr "自動ã§ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’最åˆã‹ã‚‰å†ç”Ÿã™ã‚‹ :"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Restart (s):"
-msgstr ""
+msgstr "アニメーションを最åˆã‹ã‚‰å†ç”Ÿã™ã‚‹ :"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Random Restart (s):"
-msgstr ""
+msgstr "ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’ãƒ©ãƒ³ãƒ€ãƒ ã«æœ€åˆã‹ã‚‰å†ç”Ÿã™ã‚‹:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Start!"
-msgstr ""
+msgstr "å†ç”Ÿé–‹å§‹!"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Amount:"
-msgstr ""
+msgstr "ç·è¨ˆ:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Blend:"
-msgstr ""
+msgstr "ブレンド:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Blend 0:"
-msgstr ""
+msgstr "ブレンド 0:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Blend 1:"
-msgstr ""
+msgstr "ブレンド 1:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "X-Fade Time (s):"
-msgstr ""
+msgstr "クロスフェード時間(秒)"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Current:"
-msgstr ""
+msgstr "ç¾åœ¨ã®:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Add Input"
-msgstr ""
+msgstr "入力を追加"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Clear Auto-Advance"
-msgstr ""
+msgstr "自動表示ã®è§£é™¤"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Set Auto-Advance"
-msgstr ""
+msgstr "自動表示を設定"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Delete Input"
-msgstr ""
+msgstr "入力を消去"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Rename"
-msgstr ""
+msgstr "åå‰ã‚’変更ã™ã‚‹"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Animation tree is valid."
-msgstr ""
+msgstr "アニメーションツリーã¯å•題ã‚りã¾ã›ã‚“."
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Animation tree is invalid."
-msgstr ""
+msgstr "アニメーションツリーã«å•題ãŒã‚りã¾ã™."
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Animation Node"
-msgstr ""
+msgstr "アニメーションã®ãƒŽãƒ¼ãƒ‰"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "OneShot Node"
-msgstr ""
+msgstr "ワンショット ノード"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Mix Node"
-msgstr ""
+msgstr "ミキシング ノード"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend2 Node"
-msgstr ""
+msgstr "ブレンド2ノード"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend3 Node"
-msgstr ""
+msgstr "ブレンド3ノード"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend4 Node"
-msgstr ""
+msgstr "ブレンド4ノード"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "TimeScale Node"
-msgstr ""
+msgstr "進行速度ノード"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "TimeSeek Node"
-msgstr ""
+msgstr "時刻移動ノード"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Transition Node"
-msgstr ""
+msgstr "トランジション(é·ç§»ï¼‰ãƒŽãƒ¼ãƒ‰"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Import Animations.."
-msgstr ""
+msgstr "アニメーションをインãƒãƒ¼ãƒˆ.."
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Edit Node Filters"
-msgstr ""
+msgstr "ノードフィルターã®ç·¨é›†"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Filters.."
-msgstr ""
+msgstr "フィルター.."
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Parsing %d Triangles:"
-msgstr ""
+msgstr "%d 三角形をパース中ã§ã™:"
#: editor/plugins/baked_light_baker.cpp
msgid "Triangle #"
-msgstr ""
+msgstr "三角形 #"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Light Baker Setup:"
-msgstr ""
+msgstr "ライティング(照明)ベイク設定:"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Parsing Geometry"
-msgstr ""
+msgstr "ジオメトリーをパース"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Fixing Lights"
-msgstr ""
+msgstr "照明(ライティング)ã®ä¿®å¾©"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Making BVH"
-msgstr ""
+msgstr "BVHデータを生æˆ"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Creating Light Octree"
-msgstr ""
+msgstr "照明ã®å…«åˆ†æœ¨ã‚’生æˆ"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Creating Octree Texture"
-msgstr ""
+msgstr "八分木テクスãƒãƒ£ã‚’生æˆ"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Transfer to Lightmaps:"
-msgstr ""
+msgstr "ライトマップã¸ã®è»¢å†™:"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Allocating Texture #"
-msgstr ""
+msgstr "テクスãƒãƒ£ã‚’(メモリ上ã§ï¼‰ç¢ºä¿#"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Baking Triangle #"
-msgstr ""
+msgstr "三角形をベイク#"
#: editor/plugins/baked_light_baker.cpp
+#, fuzzy
msgid "Post-Processing Texture #"
-msgstr ""
+msgstr "後処ç†ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£#"
#: editor/plugins/baked_light_editor_plugin.cpp
msgid "Bake!"
-msgstr ""
+msgstr "ベイク!"
#: editor/plugins/baked_light_editor_plugin.cpp
+#, fuzzy
msgid "Reset the lightmap octree baking process (start over)."
-msgstr ""
+msgstr "ライトマップ八分木ベイクã®ãƒ—ロセスをリセット(やり直ã—)."
#: editor/plugins/camera_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
-msgstr ""
+msgstr "プレビュー"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Configure Snap"
-msgstr ""
+msgstr "スナップ機能ã®è¨­å®š"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Grid Offset:"
-msgstr ""
+msgstr "グリッドã®ã‚ªãƒ•セット:"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Grid Step:"
-msgstr ""
+msgstr "グリッドã®ã‚¹ãƒ†ãƒƒãƒ—:"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Rotation Offset:"
-msgstr ""
+msgstr "回転ã®ã‚ªãƒ•セット:"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Rotation Step:"
-msgstr ""
+msgstr "回転ã®ã‚¹ãƒ†ãƒƒãƒ—:"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Move Pivot"
-msgstr ""
+msgstr "ピボット移動"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Move Action"
-msgstr ""
+msgstr "移動動作"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Edit IK Chain"
-msgstr ""
+msgstr "IK(インãƒãƒ¼ã‚¹ ã‚­ãƒãƒžãƒ†ã‚£ã‚¯ã‚¹ï¼‰ãƒã‚§ãƒ¼ãƒ³ã®ç·¨é›†"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Edit CanvasItem"
-msgstr ""
+msgstr "キャンãƒã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®ç·¨é›†"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Change Anchors"
-msgstr ""
+msgstr "アンカーを変更ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom (%):"
-msgstr ""
+msgstr "ズーム (%):"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Paste Pose"
-msgstr ""
+msgstr "ãƒãƒ¼ã‚ºã‚’貼り付ã‘ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode"
-msgstr "ã™ã¹ã¦é¸æŠž"
+msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag: Rotate"
-msgstr ""
+msgstr "ドラッグ:回転"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Alt+Drag: Move"
-msgstr ""
+msgstr "Alt+ドラッグ:移動"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
msgstr ""
+"vキーを押ã™ã¨ãƒ”ボットã®å¤‰æ›´ã€'Shift+v' ã§ãƒ”ボットをドラッグ(移動中ã§ã‚‚)"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Alt+RMB: Depth list selection"
-msgstr ""
+msgstr "Alt+å³ã‚¯ãƒªãƒƒã‚¯: デプス(深ã•)リストã®é¸æŠž"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -3381,206 +4363,236 @@ msgid "Move Mode"
msgstr "追加ã—ãŸã‚­ãƒ¼ã‚’移動"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Rotate Mode"
-msgstr ""
+msgstr "回転モード"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
"Show a list of all objects at the position clicked\n"
"(same as Alt+RMB in select mode)."
msgstr ""
+"クリックã—ãŸä½ç½®ã®ã‚ªãƒ–ジェクトã®ãƒªã‚¹ãƒˆ\n"
+"ï¼ˆé¸æŠžãƒ¢ãƒ¼ãƒ‰ã§ã®Alt+å³ã‚¯ãƒªãƒƒã‚¯ã¨åŒã˜)"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Click to change object's rotation pivot."
-msgstr ""
+msgstr "クリックã™ã‚‹ã¨ã‚ªãƒ–ジェクトã®å›žè»¢ãƒ”ボットを変更"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Pan Mode"
-msgstr ""
+msgstr "パン・モード"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Lock the selected object in place (can't be moved)."
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚ªãƒ–ジェクトをロックã—ã¦ç§»å‹•ä¸èƒ½ã¨ã™ã‚‹."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Unlock the selected object (can be moved)."
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚ªãƒ–ジェクトをロック解除ã—ã¦ç§»å‹•å¯èƒ½ã¨ã™ã‚‹."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Makes sure the object's children are not selectable."
-msgstr ""
+msgstr "ã“ã®ã‚ªãƒ–ジェクトã®å­ï¼ˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆï¼‰ã‚’é¸æŠžä¸å¯ã¨ã™ã‚‹."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Restores the object's children's ability to be selected."
-msgstr ""
+msgstr "ã“ã®ã‚ªãƒ–ジェクトã®å­ï¼ˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆï¼‰ã‚’é¸æŠžå¯èƒ½ã¨ã™ã‚‹."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
-msgstr ""
+msgstr "編集"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Use Snap"
-msgstr ""
+msgstr "スナップ機能を使ã†"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Show Grid"
-msgstr ""
+msgstr "グリッドを表示"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Use Rotation Snap"
-msgstr ""
+msgstr "回転スナップ機能を使ã†"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Snap Relative"
-msgstr ""
+msgstr "相対スナップ機能"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Configure Snap.."
-msgstr ""
+msgstr "スナップ機能ã®è¨­å®š"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Use Pixel Snap"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
+msgstr "ピクセルå˜ä½ã‚¹ãƒŠãƒƒãƒ—"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Skeleton.."
-msgstr ""
+msgstr "スケルトン.."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Make Bones"
-msgstr ""
+msgstr "ボーンを生æˆ"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Clear Bones"
-msgstr ""
+msgstr "ボーンをクリアã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Show Bones"
-msgstr ""
+msgstr "ボーンを表示ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Make IK Chain"
-msgstr ""
+msgstr "IK(インãƒãƒ¼ã‚¹ ã‚­ãƒãƒžãƒ†ã‚£ã‚¯ã‚¹ï¼‰ãƒã‚§ãƒ¼ãƒ³ã®ä½œæˆ"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Clear IK Chain"
-msgstr ""
+msgstr "IK(インãƒãƒ¼ã‚¹ ã‚­ãƒãƒžãƒ†ã‚£ã‚¯ã‚¹ï¼‰ãƒã‚§ãƒ¼ãƒ³ã‚’クリアã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View"
-msgstr ""
+msgstr "ビュー"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom Reset"
-msgstr ""
+msgstr "ズームをリセット"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Zoom Set.."
-msgstr ""
+msgstr "ズームをセットã™ã‚‹.."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Center Selection"
-msgstr ""
+msgstr "é¸æŠžå¯¾è±¡ã‚’ä¸­å¤®ã«"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Frame Selection"
-msgstr ""
+msgstr "é¸æŠžå¯¾è±¡ã‚’ãƒ•ãƒ¬ãƒ¼ãƒ ã®ä¸­å¤®ã«"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Anchor"
-msgstr ""
+msgstr "アンカー"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Insert Keys"
-msgstr ""
+msgstr "キーフレームを挿入"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Insert Key"
-msgstr ""
+msgstr "キーフレームを挿入"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Insert Key (Existing Tracks)"
-msgstr ""
+msgstr "キーフレームを(既存ã®ãƒˆãƒ©ãƒƒã‚¯ã«ï¼‰æŒ¿å…¥"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
-msgstr ""
+msgstr "ãƒãƒ¼ã‚ºã‚’コピー"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Pose"
-msgstr ""
+msgstr "ãƒãƒ¼ã‚ºã‚’クリアã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Set a Value"
-msgstr ""
+msgstr "値を設定ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Snap (Pixels):"
-msgstr ""
+msgstr "スナップ機能(ピクセルå˜ä½ï¼‰:"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Add %s"
-msgstr ""
+msgstr "%s追加ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Adding %s..."
-msgstr ""
+msgstr "%s追加中..."
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Create Node"
-msgstr ""
+msgstr "ノードを生æˆ"
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Error instancing scene from %s"
-msgstr ""
+msgstr "%sシーンã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–エラー"
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
-msgstr ""
+msgstr "ãŠãƒ¼ã‘ー :("
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "No parent to instance a child at."
-msgstr ""
+msgstr "å­ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã™ã‚‹ãŸã‚ã®è¦ªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "This operation requires a single selected node."
-msgstr ""
+msgstr "一ã¤ãƒŽãƒ¼ãƒ‰ã‚’指定ã—ãªã„ã¨ã€ã“ã®æ“作ã¯ã§ãã¾ã›ã‚“"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
msgid "Change default type"
msgstr "é…列ã®å€¤ã®ç¨®é¡žã®å¤‰æ›´"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "決定"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
"Drag & drop + Alt : Change node type"
msgstr ""
+"ドラッグ&ドロップ + Shift : 兄弟ノードã¨ã—ã¦åŠ ãˆã‚‹ \n"
+"ドラッグ&ドロップ + Alt : ノードã®ã‚¿ã‚¤ãƒ—を変更ã™ã‚‹"
#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create Poly"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
#: editor/plugins/collision_polygon_editor_plugin.cpp
@@ -3589,7 +4601,7 @@ msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Edit Poly"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集"
#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
#: editor/plugins/collision_polygon_editor_plugin.cpp
@@ -3597,632 +4609,785 @@ msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Edit Poly (Remove Point)"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集(ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去)"
#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
+#, fuzzy
msgid "Create a new polygon from scratch."
+msgstr "æ–°è¦ã«ãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
+
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
-msgstr ""
+msgstr "3Dãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
+#, fuzzy
msgid "Set Handle"
-msgstr ""
+msgstr "ãƒãƒ³ãƒ‰ãƒ«ã‚’設定ã™ã‚‹"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+#, fuzzy
msgid "Creating Mesh Library"
-msgstr ""
+msgstr "メッシュライブラリを生æˆ"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Thumbnail.."
-msgstr ""
+msgstr "サムãƒã‚¤ãƒ«.."
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
-msgstr ""
+msgstr "アイテム%dã‚’å–り除ãã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Add Item"
-msgstr ""
+msgstr "アイテムを追加"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove Selected Item"
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’å–り除ã"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import from Scene"
-msgstr ""
+msgstr "シーンã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Update from Scene"
-msgstr ""
+msgstr "シーンã‹ã‚‰ã‚¢ãƒƒãƒ—デート"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Add point"
-msgstr ""
+#, fuzzy
+msgid "Modify Curve Point"
+msgstr "カーブを修正ã™ã‚‹"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "カーブマップを修正"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Load Curve Preset"
+msgstr "åˆæœŸè¨­å®šå€¤ã‚’読ã¿è¾¼ã‚€"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’追加"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+msgstr "é¸æŠžã—ã¦ã„ã‚‹ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’削除"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "等速"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "å³å´é¢å›³"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
+msgstr "åˆæœŸè¨­å®šå€¤ã‚’読ã¿è¾¼ã‚€"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "パスã®ãƒã‚¤ãƒ³ãƒˆã‚’除去"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
-msgstr ""
+msgstr "色変化ã®å‚¾æ–œã«ã€ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’追加ã¾ãŸã¯é™¤åŽ»ã™ã‚‹"
#: editor/plugins/gradient_editor_plugin.cpp
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Modify Color Ramp"
-msgstr ""
+msgstr "色変化ã®å‚¾æ–œã‚’修正"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
-msgstr ""
+msgstr "アイテム%d"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Items"
-msgstr ""
+msgstr "アイテム"
#: editor/plugins/item_list_editor_plugin.cpp
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
+#, fuzzy
msgid "Create Occluder Polygon"
-msgstr ""
+msgstr "オクルージョンを生ã˜ã‚‹ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
-msgstr ""
+msgstr "既存ã®ãƒãƒªã‚´ãƒ³ã‚’編集:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
-msgstr ""
+msgstr "マウス左ボタン:ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’移動."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
+#, fuzzy
msgid "Ctrl+LMB: Split Segment."
-msgstr ""
+msgstr "Ctrl+マウス左ボタン: セグメントを分割"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
-msgstr ""
+msgstr "マウスå³ãƒœã‚¿ãƒ³:ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去."
#: editor/plugins/line_2d_editor_plugin.cpp
+#, fuzzy
msgid "Remove Point from Line2D"
-msgstr ""
+msgstr "Line2Dã‹ã‚‰ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Point to Line2D"
-msgstr "行ã«ç§»å‹•"
+msgstr "Line2Dã«ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’追加"
#: editor/plugins/line_2d_editor_plugin.cpp
msgid "Move Point in Line2D"
-msgstr ""
+msgstr "Line2D ã®ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’移動"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Select Points"
-msgstr ""
+msgstr "ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’é¸æŠž"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Shift+Drag: Select Control Points"
-msgstr ""
+msgstr "Shift+ドラッグ:コントロールãƒã‚¤ãƒ³ãƒˆã‚’é¸æŠž"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Click: Add Point"
-msgstr ""
+msgstr "クリック:ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’追加"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Right Click: Delete Point"
-msgstr ""
+msgstr "å³ã‚¯ãƒªãƒƒã‚¯:ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Add Point (in empty space)"
-msgstr ""
+msgstr "ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’追加(空白ã«ï¼‰"
#: editor/plugins/line_2d_editor_plugin.cpp
msgid "Split Segment (in line)"
-msgstr ""
+msgstr "セグメント分割(線分内ã§ï¼‰"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Delete Point"
-msgstr ""
+msgstr "ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Mesh is empty!"
-msgstr ""
+msgstr "メッシュãŒã‚りã¾ã›ã‚“!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
-msgstr ""
+msgstr "スタティック(ä¸å¤‰ï¼‰ä¸‰è§’形メッシュ ボディを作æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Static Convex Body"
-msgstr ""
+msgstr "スタティック(ä¸å¤‰ï¼‰å‡¸çŠ¶ãƒœãƒ‡ã‚£ã‚’ç”Ÿæˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "This doesn't work on scene root!"
-msgstr ""
+msgstr "シーンã®ãƒ«ãƒ¼ãƒˆã§ã¯æ©Ÿèƒ½ã—ã¾ã›ã‚“!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Trimesh Shape"
-msgstr ""
+msgstr "三角形メッシュ ã®ã‚·ã‚§ã‚¤ãƒ—を生æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Shape"
-msgstr ""
+msgstr "凸状シェイプを生æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Navigation Mesh"
-msgstr ""
+msgstr "ナビメッシュ(ナビゲーションメッシュ)ã®ç”Ÿæˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "MeshInstance lacks a Mesh!"
-msgstr ""
+msgstr "メッシュインスタンスã®ãƒ¡ãƒƒã‚·ãƒ¥ãŒå­˜åœ¨ã—ã¾ã›ã‚“"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Mesh has not surface to create outlines from!"
-msgstr ""
+msgstr "メッシュã«ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³ã‚’作æˆã™ã‚‹ãŸã‚ã®ã‚µãƒ¼ãƒ•ェイスãŒå­˜åœ¨ã—ã¾ã›ã‚“"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Could not create outline!"
-msgstr ""
+msgstr "アウトラインを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline"
-msgstr ""
+msgstr "アウトラインを生æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Trimesh Static Body"
-msgstr ""
+msgstr "スタティック(ä¸å¤‰ï¼‰ä¸‰è§’形メッシュ ボディを作æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Static Body"
-msgstr ""
+msgstr "スタティック(ä¸å¤‰ï¼‰å‡¸çŠ¶ãƒœãƒ‡ã‚£ã‚’ç”Ÿæˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
-msgstr ""
+msgstr "三角形メッシュ兄弟コリジョンを生æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Convex Collision Sibling"
-msgstr ""
+msgstr "凸型兄弟コリジョンを生æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Outline Mesh.."
-msgstr ""
+msgstr "アウトラインメッシュを生æˆ.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
-msgstr ""
+msgstr "アウトラインメッシュを生æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Outline Size:"
-msgstr ""
+msgstr "アウトラインã®ã‚µã‚¤ã‚º:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "No mesh source specified (and no MultiMesh set in node)."
msgstr ""
+"メッシュã®ã‚½ãƒ¼ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“(MultiMesh setã‚‚ node内ã«å­˜åœ¨ã—ã¾ã›ã‚“)"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
msgstr ""
+"メッシュã®ã‚½ãƒ¼ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“(ãã—ã¦MultiMesh set内ã«ã¯ã¯ãƒ¡ãƒƒã‚·ãƒ¥ãŒå­˜"
+"在ã—ã¾ã›ã‚“)."
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Mesh source is invalid (invalid path)."
-msgstr ""
+msgstr "ãƒ¡ãƒƒã‚·ãƒ¥ã‚½ãƒ¼ã‚¹ã¯æ­£ã—ãæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“ï¼ˆä¸æ­£ãªãƒ‘ス)"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Mesh source is invalid (not a MeshInstance)."
msgstr ""
+"ãƒ¡ãƒƒã‚·ãƒ¥ã‚½ãƒ¼ã‚¹ã¯æ­£ã—ãã‚りã¾ã›ã‚“(メッシュã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã¯ã‚りã¾ã›ã‚“)"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
+msgstr "ãƒ¡ãƒƒã‚·ãƒ¥ã‚½ãƒ¼ã‚¹ã¯æ­£ã—ãã‚りã¾ã›ã‚“(メッシュリソースãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“)"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "No surface source specified."
-msgstr ""
+msgstr "サーフェイスã®ã‚½ãƒ¼ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“."
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Surface source is invalid (invalid path)."
-msgstr ""
+msgstr "サーフェイスã®ã‚½ãƒ¼ã‚¹ãŒæ­£ã—ãã‚りã¾ã›ã‚“ï¼ˆä¸æ­£ãªãƒ‘ス)"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Surface source is invalid (no geometry)."
-msgstr ""
+msgstr "サーフェイスã®ã‚½ãƒ¼ã‚¹ãŒæ­£ã—ãã‚りã¾ã›ã‚“(ジオメトリーãŒã‚りã¾ã›ã‚“)"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Surface source is invalid (no faces)."
-msgstr ""
+msgstr "ã‚µãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã‚½ãƒ¼ã‚¹ã¯æ­£ã—ãã‚りã¾ã›ã‚“(フェースãŒã‚りã¾ã›ã‚“)"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Parent has no solid faces to populate."
-msgstr ""
+msgstr "åˆæœŸå€¤ã‚’設定ã™ã‚‹å¡—りã¤ã¶ã—é¢ãŒã€è¦ªã«ã‚りã¾ã›ã‚“."
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Couldn't map area."
-msgstr ""
+msgstr "エリアをマッピングã§ãã¾ã›ã‚“"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Select a Source Mesh:"
-msgstr ""
+msgstr "ソースメッシュをé¸ã¶:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Select a Target Surface:"
-msgstr ""
+msgstr "ターゲットサーフェースをé¸ã¶:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Populate Surface"
-msgstr ""
+msgstr "サーフェースã«åˆæœŸå€¤ã‚’設定"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Populate MultiMesh"
-msgstr ""
+msgstr "マルãƒãƒ¡ãƒƒã‚·ãƒ¥ã«åˆæœŸå€¤ã‚’設定"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
-msgstr ""
+msgstr "ターゲットサーフェース:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Source Mesh:"
-msgstr ""
+msgstr "ソースメッシュ:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "X-Axis"
-msgstr ""
+msgstr "X軸"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Y-Axis"
-msgstr ""
+msgstr "Y軸"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Z-Axis"
-msgstr ""
+msgstr "Z軸"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Mesh Up Axis:"
-msgstr ""
+msgstr "メッシュã®ã‚¢ãƒƒãƒ—軸:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Random Rotation:"
-msgstr ""
+msgstr "ランダムãªå›žè»¢:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Random Tilt:"
-msgstr ""
+msgstr "ランダムãªãƒ†ã‚£ãƒ«ãƒˆ:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Random Scale:"
-msgstr ""
+msgstr "縮尺をランダムã«å¤‰æ›´:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Populate"
-msgstr ""
+msgstr "åˆæœŸå€¤ã‚’設定"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
-msgstr ""
+msgstr "ナビゲーションãƒãƒªã‚´ãƒ³ã‚’生æˆ"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Remove Poly And Point"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ã¨ãƒã‚¤ãƒ³ãƒˆã‚’除去"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Clear Emission Mask"
-msgstr ""
+msgstr "発光(Emission)マスクをクリア"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Generating AABB"
-msgstr ""
+msgstr "軸平行境界ボックス(AABB)を生æˆ"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Error loading image:"
-msgstr ""
+msgstr "イメージ読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "No pixels with transparency > 128 in image.."
-msgstr ""
+msgstr "イメージ内ã«é€æ˜Žåº¦>128ã®ãƒ”クセルãŒã‚りã¾ã›ã‚“.."
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Set Emission Mask"
-msgstr ""
+msgstr "発光(Emission)マスクを設定"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "å¯è¦–性ã®çŸ©å½¢ã‚’生æˆ"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Load Emission Mask"
-msgstr ""
+msgstr "発光(Emission)マスクを読ã¿è¾¼ã‚€"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "頂点"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Generated Point Count:"
-msgstr ""
+msgstr "生æˆã—ãŸãƒã‚¤ãƒ³ãƒˆã®æ•°:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Generation Time (sec):"
-msgstr ""
+msgstr "ç”Ÿæˆæ™‚間(秒)"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Mask"
-msgstr ""
+msgstr "発光(Emission)マスク"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Capture from Pixel"
-msgstr ""
+msgstr "ピクセルã‹ã‚‰å–å¾—"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Colors"
-msgstr ""
+msgstr "発光(Emission)色"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Node does not contain geometry."
-msgstr ""
+msgstr "ノードã¯ã‚¸ã‚ªãƒ¡ãƒˆãƒªãƒ¼ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“."
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Node does not contain geometry (faces)."
-msgstr ""
+msgstr "ノードã¯ã‚¸ã‚ªãƒ¡ãƒˆãƒªãƒ¼(é¢ï¼‰ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“."
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Faces contain no area!"
-msgstr ""
+msgstr "é¢ã«ã‚¨ãƒªã‚¢ãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“!"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "No faces!"
-msgstr ""
+msgstr "é¢ãŒã‚りã¾ã›ã‚“!"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generate AABB"
-msgstr ""
+msgstr "軸平行境界ボックス(AABB)を生æˆ"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Create Emission Points From Mesh"
-msgstr ""
+msgstr "メッシュã‹ã‚‰ç™ºå…‰ç‚¹ã‚’生æˆ"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Create Emission Points From Node"
-msgstr ""
+msgstr "ノードã‹ã‚‰ã®ç™ºå…‰ç‚¹ã‚’生æˆ"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Clear Emitter"
-msgstr ""
+msgstr "発光物をクリア"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Create Emitter"
-msgstr ""
+msgstr "発光物を生æˆ"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Emission Points:"
-msgstr ""
+msgstr "発光点:"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Surface Points"
-msgstr ""
+msgstr "サーフェース(表é¢ï¼‰ãƒã‚¤ãƒ³ãƒˆ"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "サーフェースãƒã‚¤ãƒ³ãƒˆï¼‹Normalï¼ˆæŒ‡å‘æ€§ï¼‰"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Volume"
-msgstr ""
+msgstr "(発光ã®ï¼‰ãƒœãƒªãƒ¥ãƒ¼ãƒ "
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Emission Source: "
-msgstr ""
+msgstr "発光æº: "
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Generate Visibility AABB"
-msgstr ""
+msgstr "å¯è¦–性ã®è»¸å¹³è¡Œå¢ƒç•Œãƒœãƒƒã‚¯ã‚¹ã‚’生æˆ"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
-msgstr ""
+msgstr "曲線ã‹ã‚‰ãƒã‚¤ãƒ³ãƒˆã‚’除去"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr ""
+msgstr "Out-ãƒãƒ³ãƒ‰ãƒ«ã‚’曲線ã‹ã‚‰é™¤åŽ»"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr ""
+msgstr "In-ãƒãƒ³ãƒ‰ãƒ«ã‚’曲線ã‹ã‚‰é™¤åŽ»"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Add Point to Curve"
-msgstr ""
+msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’曲線ã«è¿½åŠ "
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
msgid "Move Point in Curve"
-msgstr ""
+msgstr "曲線ã®ãƒã‚¤ãƒ³ãƒˆã‚’移動"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
msgid "Move In-Control in Curve"
-msgstr ""
+msgstr "曲線ã®In-ãƒãƒ³ãƒ‰ãƒ«ã‚’移動ã™ã‚‹"
#: editor/plugins/path_2d_editor_plugin.cpp
+#, fuzzy
msgid "Move Out-Control in Curve"
-msgstr ""
+msgstr "曲線ã®Out-ãƒãƒ³ãƒ‰ãƒ«ã‚’移動ã™ã‚‹"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
-msgstr ""
+msgstr "コントロールãƒã‚¤ãƒ³ãƒˆã‚’é¸ã¶ (Shift+Drag)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Split Segment (in curve)"
-msgstr ""
+msgstr "分割ã™ã‚‹(曲線を)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Close Curve"
-msgstr ""
+msgstr "曲線を閉ã˜ã‚‹"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Curve Point #"
-msgstr ""
+msgstr "曲線ã®ãƒã‚¤ãƒ³ãƒˆ#"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Pos"
-msgstr ""
+msgstr "曲線ã®ãƒã‚¤ãƒ³ãƒˆã®ä½ç½®ã‚’指定"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Pos"
-msgstr ""
+msgstr "曲線ã®In-ãƒãƒ³ãƒ‰ãƒ«ã®ä½ç½®ã‚’指定"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Pos"
-msgstr ""
+msgstr "曲線ã®Out-ãƒãƒ³ãƒ‰ãƒ«ã®ä½ç½®ã‚’指定"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Split Path"
-msgstr ""
+msgstr "パスを分割"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Remove Path Point"
-msgstr ""
+msgstr "パスã®ãƒã‚¤ãƒ³ãƒˆã‚’除去"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+msgstr "曲線ã®Out-ãƒãƒ³ãƒ‰ãƒ«ã‚’除去"
#: editor/plugins/path_editor_plugin.cpp
msgid "Remove In-Control Point"
-msgstr ""
+msgstr "曲線ã®In-ãƒãƒ³ãƒ‰ãƒ«ã‚’除去"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Create UV Map"
-msgstr ""
+msgstr "UVマップを生æˆ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
-msgstr ""
+msgstr "UVマップをトランスフォーム"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Polygon 2D UV Editor"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ï¼’Dã®UVエディタ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Move Point"
-msgstr ""
+msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’移動"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Ctrl: Rotate"
-msgstr ""
+msgstr "Ctrl: 回転"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Shift: Move All"
-msgstr ""
+msgstr "Shift: ã™ã¹ã¦ç§»å‹•"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Shift+Ctrl: Scale"
-msgstr ""
+msgstr "Shift+Ctrl: 縮尺(Scale)"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Move Polygon"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’移動"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Rotate Polygon"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’回転"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Scale Polygon"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³ã®ç¸®å°ºã‚’変更"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Polygon->UV"
-msgstr ""
+msgstr "ãƒãƒªã‚´ãƒ³->UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "UV->Polygon"
-msgstr ""
+msgstr "UV->ãƒãƒªã‚´ãƒ³"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Clear UV"
-msgstr ""
+msgstr "UVをクリア"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap"
-msgstr ""
+msgstr "スナップ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Enable Snap"
-msgstr ""
+msgstr "スナップを有効ã«ã™ã‚‹"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid"
-msgstr ""
+msgstr "グリッド"
#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: Couldn't load resource!"
-msgstr ""
+msgstr "エラー:リソースを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ!"
#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
msgid "Add Resource"
-msgstr ""
+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
msgid "Resource clipboard is empty!"
-msgstr ""
+msgstr "リソースã®ã‚¯ãƒªãƒƒãƒ—ボードã¯ç©ºã§ã™!"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Load Resource"
-msgstr ""
+msgstr "リソースを読ã¿è¾¼ã‚€"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4233,129 +5398,149 @@ msgid "Paste"
msgstr "貼り付ã‘"
#: editor/plugins/rich_text_editor_plugin.cpp
+#, fuzzy
msgid "Parse BBCode"
-msgstr ""
+msgstr "BBコードをパースã™ã‚‹"
#: editor/plugins/sample_editor_plugin.cpp
+#, fuzzy
msgid "Length:"
-msgstr ""
+msgstr "é•·ã•:"
#: editor/plugins/sample_library_editor_plugin.cpp
+#, fuzzy
msgid "Open Sample File(s)"
-msgstr ""
+msgstr "サンプルファイルを開ã‘ã‚‹"
#: editor/plugins/sample_library_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: Couldn't load sample!"
-msgstr ""
+msgstr "エラー:サンプルを読ã¿è¾¼ã‚ã¾ã›ã‚“!"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Add Sample"
-msgstr ""
+msgstr "サンプルを追加"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Rename Sample"
-msgstr ""
+msgstr "サンプルã®åå‰ã‚’変ãˆã‚‹"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Delete Sample"
-msgstr ""
+msgstr "サンプルを消去ã™ã‚‹"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "16 Bits"
-msgstr ""
+msgstr "16ビット"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "8 Bits"
-msgstr ""
+msgstr "8ビット"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Stereo"
-msgstr ""
+msgstr "ステレオ音声"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Mono"
-msgstr ""
+msgstr "モノラル音声"
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Format"
-msgstr ""
+msgstr "フォーマット"
#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Pitch"
-msgstr ""
+msgstr "ピッãƒ"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Clear Recent Files"
+msgstr "最近開ã„ãŸãƒ•ァイルã®è¨˜éŒ²ã‚’クリア"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Error while saving theme"
-msgstr ""
+msgstr "テーマをä¿å­˜ã™ã‚‹é€”中ã§ã®ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error saving"
-msgstr ""
+msgstr "ä¿å­˜ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Error importing theme"
-msgstr ""
+msgstr "テーマをインãƒãƒ¼ãƒˆä¸­ã®ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error importing"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã®ã‚¨ãƒ©ãƒ¼"
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme"
-msgstr ""
+msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As.."
+msgstr "テーマをåå‰ã‚’ã¤ã‘ã¦ä¿å­˜.."
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
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
+#, fuzzy
msgid "File"
-msgstr ""
+msgstr "ファイル"
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "New"
-msgstr ""
+msgstr "æ–°ã—ã„"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
-msgstr ""
+msgstr "ã™ã¹ã¦ä¿å­˜"
#: editor/plugins/script_editor_plugin.cpp
msgid "Soft Reload Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "History Prev"
-msgstr ""
+msgstr "ç›´å‰ã®å±¥æ­´"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Next"
-msgstr ""
+msgstr "次ã®å±¥æ­´"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Reload Theme"
-msgstr ""
+msgstr "テーマをå†èª­è¾¼"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme"
-msgstr ""
+msgstr "テーマをä¿å­˜"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As"
-msgstr ""
+msgstr "テーマã«åå‰ã‚’付ã‘ã¦ä¿å­˜"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -4368,68 +5553,84 @@ msgid "Close All"
msgstr "é–‰ã˜ã‚‹"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’切り替ãˆã‚‹"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
+#, fuzzy
msgid "Find.."
-msgstr ""
+msgstr "検索.."
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
+#, fuzzy
msgid "Find Next"
-msgstr ""
+msgstr "次を探ã™"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Over"
-msgstr ""
+msgstr "ステップオーãƒãƒ¼"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Step Into"
-msgstr ""
+msgstr "ステップイン"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Break"
-msgstr ""
+msgstr "(デãƒãƒƒã‚°ã§ï¼‰ãƒ–レーク"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Continue"
-msgstr ""
+msgstr "実行を継続"
#: editor/plugins/script_editor_plugin.cpp
msgid "Keep Debugger Open"
-msgstr ""
+msgstr "デãƒãƒƒã‚¬ã‚’é–‹ã„ãŸã¾ã¾ã«"
+
+#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
-msgstr ""
+msgstr "ウィンドウ"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Move Left"
-msgstr ""
+msgstr "å·¦ã«ç§»å‹•"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Move Right"
-msgstr ""
+msgstr "å³ã«ç§»å‹•"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
-msgstr ""
+msgstr "Godotã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³æ–‡æ›¸ã‚’é–‹ã"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "Search the class hierarchy."
-msgstr ""
+msgstr "クラス階層を検索."
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the reference documentation."
-msgstr ""
+msgstr "リファレンス文書を探ã™."
#: editor/plugins/script_editor_plugin.cpp
msgid "Go to previous edited document."
-msgstr ""
+msgstr "ç›´å‰ã®ã€Œç·¨é›†ã—ãŸæ–‡æ›¸ã€ã¸ç§»å‹•."
#: editor/plugins/script_editor_plugin.cpp
msgid "Go to next edited document."
-msgstr ""
+msgstr "次ã®ã®ã€Œç·¨é›†ã—ãŸæ–‡æ›¸ã€ã¸ç§»å‹•."
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -4438,50 +5639,59 @@ msgstr "離散"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
-msgstr ""
+msgstr "スクリプトを作æˆ"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid ""
"The following files are newer on disk.\n"
"What action should be taken?:"
msgstr ""
+"次ã®ãƒ•ァイルã¯ã€ã‚ˆã‚Šæ–°ã—ã„版ãŒãƒ‡ã‚£ã‚¹ã‚¯ã«å­˜åœ¨ã—ã¾ã™\n"
+"ã©ã†ã—ã¾ã™ã‹?:"
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload"
-msgstr ""
+msgstr "å†èª­è¾¼"
#: editor/plugins/script_editor_plugin.cpp
msgid "Resave"
-msgstr ""
+msgstr "å†ä¿å­˜"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Debugger"
-msgstr ""
+msgstr "デãƒãƒƒã‚¬"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid ""
"Built-in scripts can only be edited when the scene they belong to is loaded"
msgstr ""
+"組ã¿è¾¼ã¾ã‚ŒãŸã‚¹ã‚¯ãƒªãƒ—ãƒˆã¯æ‰€å±žã™ã‚‹ã‚·ãƒ¼ãƒ³ãŒèª­ã¿è¾¼ã¾ã‚Œã¦ã„ãªã„ã¨ç·¨é›†ã§ãã¾ã›ã‚“"
#: editor/plugins/script_text_editor.cpp
-msgid "Pick Color"
+msgid "Only resources from filesystem can be dropped."
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Pick Color"
+msgstr "色をå–å¾—"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Convert Case"
-msgstr ""
+msgstr "大文字ã¨å°æ–‡å­—を変æ›"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "大文字"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "å°æ–‡å­—"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "先頭を大文字ã«"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4503,140 +5713,160 @@ msgstr "ã™ã¹ã¦é¸æŠž"
#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
msgid "Move Up"
-msgstr ""
+msgstr "上ã«ç§»å‹•"
#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
msgid "Move Down"
-msgstr ""
+msgstr "下ã«ç§»å‹•"
+
+#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
-msgstr ""
+msgstr "左インデント"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Right"
-msgstr ""
+msgstr "å³ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆ"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Toggle Comment"
-msgstr ""
+msgstr "コメントを切り替ãˆã‚‹"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Clone Down"
-msgstr ""
+msgstr "複製ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Complete Symbol"
-msgstr ""
+msgstr "記å·ã™ã¹ã¦"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Trim Trailing Whitespace"
-msgstr ""
+msgstr "連続スペースを刈り込む"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "インデントをスペースã«å¤‰æ›"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "インデントをタブã«å¤‰æ›"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
-msgstr ""
+msgstr "自動インデント"
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Toggle Breakpoint"
-msgstr ""
+msgstr "ブレークãƒã‚¤ãƒ³ãƒˆã‚’切替"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Breakpoints"
-msgstr ""
+msgstr "ã™ã¹ã¦ã®ãƒ–レークãƒã‚¤ãƒ³ãƒˆã‚’消去"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Next Breakpoint"
-msgstr ""
+msgstr "次ã®ãƒ–レークãƒã‚¤ãƒ³ãƒˆã«ç§»å‹•"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Previous Breakpoint"
-msgstr ""
+msgstr "最後ã®ãƒ–レークãƒã‚¤ãƒ³ãƒˆã«æˆ»ã‚‹"
#: editor/plugins/script_text_editor.cpp
msgid "Convert To Uppercase"
-msgstr ""
+msgstr "大文字ã«å¤‰æ›"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "ãƒŽãƒ¼ãƒ‰ã«æŽ¥ç¶šã—ã¾ã™ã€‚"
+msgstr "å°æ–‡å­—ã«å¤‰æ›"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find Previous"
-msgstr ""
+msgstr "å‰ã‚’検索"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Replace.."
-msgstr ""
+msgstr "ç½®ãæ›ãˆ.."
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Goto Function.."
-msgstr ""
+msgstr "関数~ã«ç§»å‹•.."
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
+#, fuzzy
msgid "Goto Line.."
-msgstr ""
+msgstr "~行ã«ç§»å‹•.."
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Contextual Help"
-msgstr ""
+msgstr "文脈å‚照ヘルプ"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "シェーダー"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change Scalar Constant"
-msgstr ""
+msgstr "スカラ定数を変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change Vec Constant"
-msgstr ""
+msgstr "ベクトル定数を変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change RGB Constant"
-msgstr ""
+msgstr "RGB定数を変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change Scalar Operator"
-msgstr ""
+msgstr "スカラ演算å­ã‚’変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change Vec Operator"
-msgstr ""
+msgstr "ベクトル演算å­ã‚’変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change Vec Scalar Operator"
-msgstr ""
+msgstr "ベクトル・スカラ演算å­ã‚’変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change RGB Operator"
-msgstr ""
+msgstr "RGB演算å­ã‚’変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Toggle Rot Only"
msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change Scalar Function"
-msgstr ""
+msgstr "スカラ関数を変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Change Vec Function"
-msgstr ""
+msgstr "ベクトル関数を変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Uniform"
@@ -4652,7 +5882,7 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Default Value"
-msgstr ""
+msgstr "è¦å®šå€¤ã‚’変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change XForm Uniform"
@@ -4668,289 +5898,328 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Comment"
-msgstr ""
+msgstr "コメントを変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Add/Remove to Color Ramp"
-msgstr ""
+msgstr "色ã®å‚¾æ–œã‚’付加/消去"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Add/Remove to Curve Map"
-msgstr ""
+msgstr "カーブマップを加ãˆã‚‹/除去"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Modify Curve Map"
-msgstr ""
+msgstr "カーブマップを修正"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Input Name"
-msgstr ""
+msgstr "入力ã®åå‰ã‚’変更"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Connect Graph Nodes"
-msgstr ""
+msgstr "グラフノードを接続"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Disconnect Graph Nodes"
-msgstr ""
+msgstr "グラフノードを切断"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Remove Shader Graph Node"
-msgstr ""
+msgstr "シェーダーグラフノードを除去"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Move Shader Graph Node"
-msgstr ""
+msgstr "シェーダーグラフノードを移動"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Duplicate Graph Node(s)"
-msgstr ""
+msgstr "グラフノードを複製"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Delete Shader Graph Node(s)"
-msgstr ""
+msgstr "シェーダーグラフノードを消去"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Error: Cyclic Connection Link"
-msgstr ""
+msgstr "エラー:循環çµåˆãƒªãƒ³ã‚¯"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Error: Missing Input Connections"
-msgstr ""
+msgstr "エラー:入力コãƒã‚¯ã‚·ãƒ§ãƒ³ãŒå¤±ã‚れã¦ã„ã¾ã™"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Add Shader Graph Node"
-msgstr ""
+msgstr "シェーダーグラフノードを追加"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
-msgstr ""
+msgstr "並行投影"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective"
-msgstr ""
+msgstr "é€è¦–投影(é è¿‘法)"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Transform Aborted."
-msgstr ""
+msgstr "トランスフォームã¯ä¸­æ­¢ã•れã¾ã—ãŸ."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "X-Axis Transform."
-msgstr ""
+msgstr "X軸トランスフォーム."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Y-Axis Transform."
-msgstr ""
+msgstr "Y軸トランスフォーム."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Z-Axis Transform."
-msgstr ""
+msgstr "Z軸トランスフォーム."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Plane Transform."
-msgstr ""
+msgstr "ビュー平é¢ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォーム."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Scaling to %s%%."
-msgstr ""
+msgstr "æ‹¡å¤§ç¸®å°æ¯”率%s%%."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
-msgstr ""
+msgstr "%s 度回転."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View."
-msgstr ""
+msgstr "下é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom"
-msgstr ""
+msgstr "下é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
-msgstr ""
+msgstr "上é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top"
-msgstr ""
+msgstr "上é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
-msgstr ""
+msgstr "後é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear"
-msgstr ""
+msgstr "後é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front View."
-msgstr ""
+msgstr "å‰é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front"
-msgstr ""
+msgstr "å‰é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left View."
-msgstr ""
+msgstr "å·¦å´é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left"
-msgstr ""
+msgstr "å·¦å´é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right View."
-msgstr ""
+msgstr "å³å´é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right"
-msgstr ""
+msgstr "å³å´é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Keying is disabled (no key inserted)."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "後方"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
+msgstr "キーã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ï¼ˆã‚­ãƒ¼ã¯æŒ¿å…¥ã•れã¦ã„ã¾ã›ã‚“)."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Freelook Down"
-msgstr "ホイール下"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
+msgid "Animation Key Inserted."
+msgstr "アニメーションã®ã‚­ãƒ¼ãŒæŒ¿å…¥ã•れã¦ã„ã¾ã™."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Material Changes"
-msgstr ""
+msgstr "ç´ æã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Shader Changes"
-msgstr ""
+msgstr "シェーダーã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Surface Changes"
-msgstr ""
+msgstr "サーフェースã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "ドローコール(Daw call)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Vertices"
-msgstr ""
+msgstr "頂点"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
-msgstr ""
+msgstr "シーンビューã«ã‚«ãƒ¡ãƒ©ã‚’åˆã‚ã›ã‚‹ï¼ˆAlign With View)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
-msgstr ""
+msgstr "通常表示"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Display Wireframe"
-msgstr ""
+msgstr "ワイヤーフレーム表示"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Display Overdraw"
-msgstr ""
+msgstr "逿˜Žã‚·ãƒ«ã‚¨ãƒƒãƒˆè¡¨ç¤º"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Display Unshaded"
-msgstr ""
+msgstr "シェーディングãªã—ã§è¡¨ç¤º"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Gizmos"
-msgstr ""
+msgstr "ギズモ(Gizmo)表示"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Information"
-msgstr ""
+msgstr "情報を表示"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "有効ã«ã™ã‚‹"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr "フリールック左"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr "フリールックå³"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "ãƒ•ãƒªãƒ¼ãƒ«ãƒƒã‚¯å‰æ–¹"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr "フリールック後方"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr "フリールック上"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr "フリールック下"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr "フリールックã®é€Ÿåº¦ã‚’調整"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "プレビュー"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
-msgstr ""
+msgstr "Xformダイアログ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+å³ã‚¯ãƒªãƒƒã‚¯: デプス(深ã•)リストã®é¸æŠž"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
-msgstr ""
+msgstr "移動モード (W)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Mode (E)"
-msgstr ""
+msgstr "回転Mode (E)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Mode (R)"
-msgstr ""
+msgstr "スケール(拡大縮å°ï¼‰ãƒ¢ãƒ¼ãƒ‰(R)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
-msgstr ""
+msgstr "底é¢å›³"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View"
-msgstr ""
+msgstr "上é¢å›³"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View"
-msgstr ""
+msgstr "後é¢å›³"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front View"
-msgstr ""
+msgstr "å‰é¢å›³"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Left View"
-msgstr ""
+msgstr "å·¦å´é¢å›³"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Right View"
-msgstr ""
+msgstr "å³å´é¢å›³"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal view"
-msgstr ""
+msgstr "é€è¦–投影/並行投影ã®åˆ‡ã‚Šæ›¿ãˆ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
-msgstr ""
+msgstr "アニメーションキーを挿入"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Origin"
@@ -4965,57 +6234,61 @@ msgid "Align Selection With View"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "ã™ã¹ã¦é¸æŠž"
+msgstr "é¸æŠžãƒ„ãƒ¼ãƒ«"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Tool Move"
-msgstr ""
+msgstr "移動ツール"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Tool Rotate"
-msgstr ""
+msgstr "回転ツール"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Tool Scale"
-msgstr ""
+msgstr "拡大縮å°ãƒ„ール"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Transform"
-msgstr ""
+msgstr "トランスフォーム"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
-msgstr ""
+msgstr "ローカル座標系"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Transform Dialog.."
-msgstr ""
+msgstr "トランスフォームã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°.."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "1 Viewport"
-msgstr ""
+msgstr "1 ビューãƒãƒ¼ãƒˆ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "2 Viewports"
-msgstr ""
+msgstr "2 ビューãƒãƒ¼ãƒˆ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "2 Viewports (Alt)"
-msgstr ""
+msgstr "2 ビューãƒãƒ¼ãƒˆ(Alt)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "3 Viewports"
-msgstr ""
+msgstr "3 ビューãƒãƒ¼ãƒˆ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "3 Viewports (Alt)"
-msgstr ""
+msgstr "3 ビューãƒãƒ¼ãƒˆ(Alt)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "4 Viewports"
-msgstr ""
+msgstr "4 ビューãƒãƒ¼ãƒˆ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Origin"
@@ -5023,31 +6296,36 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Grid"
-msgstr ""
+msgstr "ビューã®ã‚°ãƒªãƒƒãƒ‰"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Settings"
-msgstr ""
+msgstr "設定"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Snap Settings"
-msgstr ""
+msgstr "Snapã®è¨­å®š"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Translate Snap:"
-msgstr ""
+msgstr "Snapを移動:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Snap (deg.):"
-msgstr ""
+msgstr "Snapã®å›žè»¢ï¼ˆåº¦ï¼‰:"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Scale Snap (%):"
-msgstr ""
+msgstr "スナップã®å¤§ãã•(%):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Viewport Settings"
-msgstr ""
+msgstr "ビューãƒãƒ¼ãƒˆã®è¨­å®š"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective FOV (deg.):"
@@ -5066,16 +6344,18 @@ msgid "Transform Change"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Translate:"
-msgstr ""
+msgstr "移動(translate):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate (deg.):"
-msgstr ""
+msgstr "回転(度):"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Scale (ratio):"
-msgstr ""
+msgstr "縮尺(比):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Type"
@@ -5090,20 +6370,24 @@ msgid "Post"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
+msgstr "エラー:フレームリソースを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ!"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
msgid "Add Frame"
-msgstr ""
+msgstr "フレームを追加"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
msgid "Resource clipboard is empty or not a texture!"
-msgstr ""
+msgstr "リソースクリップボードã¯ç©ºã‹ã€ãƒ†ã‚¯ã‚¹ãƒãƒ£ä»¥å¤–ã§ã™!"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
msgid "Paste Frame"
-msgstr ""
+msgstr "フレームを張り付ã‘"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Empty"
@@ -5111,27 +6395,27 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr ""
+msgstr "アニメーションã®ãƒ«ãƒ¼ãƒ—を変更"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation FPS"
-msgstr ""
+msgstr "アニメーションã®FPSを変更"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "(empty)"
-msgstr ""
+msgstr "(空)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animations"
-msgstr ""
+msgstr "アニメーション"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Speed (FPS):"
-msgstr ""
+msgstr "速度(FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
-msgstr ""
+msgstr "アニメーションã®ãƒ•レーム"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Insert Empty (Before)"
@@ -5143,76 +6427,93 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Up"
-msgstr ""
+msgstr "上"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Down"
-msgstr ""
+msgstr "下"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
-msgstr ""
+msgstr "スタイルボックス プレビュー:"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "テクスãƒãƒ£ã€€ãƒªãƒ¼ã‚¸ãƒ§ãƒ³"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
-msgstr ""
+msgstr "Snapモード:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "<None>"
-msgstr ""
+msgstr "<None>"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
-msgstr ""
+msgstr "ピクセルSnap"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
msgid "Grid Snap"
-msgstr ""
+msgstr "グリッドSnap"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Auto Slice"
-msgstr ""
+msgstr "自動スライス"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Offset:"
-msgstr ""
+msgstr "オフセット:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Step:"
-msgstr ""
+msgstr "ステップ:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Separation:"
-msgstr ""
+msgstr "分離:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
msgid "Texture Region"
-msgstr ""
+msgstr "テクスãƒãƒ£ã€€ãƒªãƒ¼ã‚¸ãƒ§ãƒ³"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Texture Region Editor"
-msgstr ""
+msgstr "テクスãƒãƒ£ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã€€ã‚¨ãƒ‡ã‚£ã‚¿"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Can't save theme to file:"
-msgstr ""
+msgstr "ファイルã«ãƒ†ãƒ¼ãƒžã‚’ä¿å­˜ã§ãã¾ã›ã‚“:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All Items"
-msgstr ""
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’追加"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All"
-msgstr ""
+msgstr "ã™ã¹ã¦ã‚’追加"
#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove Item"
-msgstr ""
+msgstr "アイテムを除去"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "アイテムを除去"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "削除"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
-msgstr ""
+msgstr "テーマ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5224,31 +6525,33 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create Empty Template"
-msgstr ""
+msgstr "空ã®ãƒ†ãƒ³ãƒ—レートを生æˆ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create Empty Editor Template"
-msgstr ""
+msgstr "空ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ†ãƒ³ãƒ—レートを生æˆ"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "CheckBox Radio1"
-msgstr ""
+msgstr "ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã€€Radio1"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "CheckBox Radio2"
-msgstr ""
+msgstr "ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã€€Radio2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Item"
-msgstr ""
+msgstr "アイテム"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Check Item"
-msgstr ""
+msgstr "アイテムをãƒã‚§ãƒƒã‚¯"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Checked Item"
-msgstr ""
+msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿ã‚¢ã‚¤ãƒ†ãƒ "
#: editor/plugins/theme_editor_plugin.cpp
msgid "Has"
@@ -5260,7 +6563,7 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
-msgstr ""
+msgstr "オプション"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Have,Many,Several,Options!"
@@ -5268,60 +6571,78 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 1"
-msgstr ""
+msgstr "タブ1"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 2"
-msgstr ""
+msgstr "タブ2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 3"
-msgstr ""
+msgstr "タブ3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Type:"
-msgstr ""
+msgstr "åž‹(Type):"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "Data Type:"
-msgstr ""
+msgstr "データã®åž‹(Type):"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Icon"
-msgstr ""
+msgstr "アイコン"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Style"
-msgstr ""
+msgstr "スタイル"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
-msgstr ""
+msgstr "色"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "é¸æŠžã‚’æ¶ˆåŽ»"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "等速"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Erase TileMap"
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase TileMap"
+msgstr "タイルマップを消去"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase selection"
-msgstr ""
+msgstr "é¸æŠžã‚’æ¶ˆåŽ»"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
msgid "Find tile"
-msgstr ""
+msgstr "タイルを探ã™"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
msgid "Transpose"
-msgstr ""
+msgstr "転置"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Mirror X"
@@ -5340,106 +6661,117 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
msgid "Rotate 0 degrees"
-msgstr ""
+msgstr "0度回転"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 90 degrees"
-msgstr ""
+msgstr "90度回転"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 180 degrees"
-msgstr ""
+msgstr "180度回転"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 270 degrees"
-msgstr ""
+msgstr "270度回転"
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "Could not find tile:"
-msgstr ""
+msgstr "タイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "Item name or ID:"
-msgstr ""
+msgstr "アイテムã®åå‰ã‹ID:"
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "Create from scene?"
-msgstr ""
+msgstr "シーンã‹ã‚‰ç”Ÿæˆã—ã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
msgid "Merge from scene?"
-msgstr ""
+msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
-msgstr ""
+msgstr "シーンã‹ã‚‰ç”Ÿæˆ"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Merge from Scene"
-msgstr ""
+msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸"
#: editor/plugins/tile_set_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Error"
-msgstr ""
+msgstr "エラー"
#: editor/project_export.cpp
msgid "Runnable"
-msgstr ""
+msgstr "実行å¯èƒ½"
#: editor/project_export.cpp
+#, fuzzy
msgid "Delete patch '"
-msgstr ""
+msgstr "パッãƒé™¤åŽ»'"
#: editor/project_export.cpp
+#, fuzzy
msgid "Delete preset '%s'?"
-msgstr ""
+msgstr "åˆæœŸè¨­å®šå€¤ '%s'?を削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/project_export.cpp
msgid "Presets"
-msgstr ""
+msgstr "åˆæœŸè¨­å®šå€¤"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
-msgstr ""
+msgstr "追加.."
#: editor/project_export.cpp
msgid "Resources"
-msgstr ""
+msgstr "リソース"
#: editor/project_export.cpp
+#, fuzzy
msgid "Export all resources in the project"
-msgstr ""
+msgstr "プロジェクト内ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ã™ã¹ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
#: editor/project_export.cpp
msgid "Export selected scenes (and dependencies)"
-msgstr ""
+msgstr "é¸æŠžã—ãŸã‚·ãƒ¼ãƒ³ï¼ˆã¨ä¾å­˜é–¢ä¿‚ã«ã‚ã‚‹ã‚‚ã®ï¼‰ã‚’エクスãƒãƒ¼ãƒˆ"
#: editor/project_export.cpp
msgid "Export selected resources (and dependencies)"
-msgstr ""
+msgstr "é¸æŠžã—ãŸãƒªã‚½ãƒ¼ã‚¹ï¼ˆã¨ä¾å­˜é–¢ä¿‚ã«ã‚ã‚‹ã‚‚ã®ï¼‰ã‚’エクスãƒãƒ¼ãƒˆ"
#: editor/project_export.cpp
+#, fuzzy
msgid "Export Mode:"
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã®ãƒ¢ãƒ¼ãƒ‰:"
#: editor/project_export.cpp
msgid "Resources to export:"
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒªã‚½ãƒ¼ã‚¹:"
#: editor/project_export.cpp
+#, fuzzy
msgid ""
"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
msgstr ""
+"リソース以外ã®ãƒ•ァイルをエクスãƒãƒ¼ãƒˆã™ã‚‹éš›ã®é¸åˆ¥åŸºæº–(Filters)(コンマã§åˆ†å‰²,"
+"例*.json, *.txt)"
#: editor/project_export.cpp
+#, fuzzy
msgid ""
"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
msgstr ""
+"リソース以外ã®ãƒ•ァイルをエクスãƒãƒ¼ãƒˆã™ã‚‹éš›ã®é™¤å¤–基準(Filters)(コンマã§åˆ†å‰²,"
+"例*.json, *.txt)"
#: editor/project_export.cpp
#, fuzzy
@@ -5448,71 +6780,96 @@ msgstr "一致ãªã—"
#: editor/project_export.cpp
msgid "Make Patch"
+msgstr "パッãƒç”Ÿæˆ"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "テクスãƒãƒ£"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
msgstr ""
#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "メソッド一覧:"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "エクスãƒãƒ¼ãƒˆ"
+
+#: editor/project_export.cpp
+#, fuzzy
msgid "Export templates for this platform are missing:"
msgstr ""
+"ã“ã®ãƒ—ラットフォームã«å‘ã‘ã¦ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã®ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
#: editor/project_export.cpp
msgid "Export With Debug"
-msgstr ""
+msgstr "デãƒãƒƒã‚°ä»˜ãエクスãƒãƒ¼ãƒˆ"
#: editor/project_manager.cpp
+#, fuzzy
msgid "Invalid project path, the path must exist!"
-msgstr ""
+msgstr "パスãŒä¸æ­£ã§ã™.パスãŒå­˜åœ¨ã—ãªã„ã¨ã„ã‘ã¾ã›ã‚“."
#: editor/project_manager.cpp
+#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr ""
+msgstr "プロジェクトã®ãƒ‘スãŒä¸æ­£ã§ã™.project.godotã¯å­˜åœ¨ã—ã¾ã›ã‚“."
#: editor/project_manager.cpp
+#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr ""
+msgstr "プロジェクトã®ãƒ‘スãŒä¸æ­£ã§ã™.project.godotã¯å­˜åœ¨ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: editor/project_manager.cpp
msgid "Imported Project"
-msgstr ""
+msgstr "インãƒãƒ¼ãƒˆã•れãŸãƒ—ロジェクト"
#: editor/project_manager.cpp
+#, fuzzy
msgid "Invalid project path (changed anything?)."
-msgstr ""
+msgstr "䏿­£ãªãƒ—ロジェクトã®ãƒ‘ス(何ã‹å¤‰ãˆã¾ã—ãŸã‹ï¼Ÿï¼‰"
#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr ""
+msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
#: editor/project_manager.cpp
+#, fuzzy
msgid "The following files failed extraction from package:"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
+msgstr "以下ã®ãƒ•ァイルをパッケージã‹ã‚‰æŠ½å‡ºã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/project_manager.cpp
msgid "Import Existing Project"
-msgstr ""
+msgstr "既存ã®ãƒ—ロジェクトをインãƒãƒ¼ãƒˆ"
#: editor/project_manager.cpp
+#, fuzzy
msgid "Project Path (Must Exist):"
-msgstr ""
+msgstr "プロジェクトパス(存在ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰"
#: editor/project_manager.cpp
+#, fuzzy
msgid "Project Name:"
-msgstr ""
+msgstr "プロジェクトå:"
#: editor/project_manager.cpp
msgid "Create New Project"
-msgstr ""
+msgstr "æ–°ã—ã„プロジェクトを作る"
#: editor/project_manager.cpp
msgid "Project Path:"
-msgstr ""
+msgstr "プロジェクトパス:"
#: editor/project_manager.cpp
msgid "Install Project:"
-msgstr ""
+msgstr "プロジェクトをインストール:"
#: editor/project_manager.cpp
msgid "Browse"
@@ -5520,27 +6877,47 @@ msgstr ""
#: editor/project_manager.cpp
msgid "New Game Project"
-msgstr ""
+msgstr "æ–°ã—ã„ゲームプロジェクト"
#: editor/project_manager.cpp
msgid "That's a BINGO!"
-msgstr ""
+msgstr "当ãŸã‚Š!"
#: editor/project_manager.cpp
msgid "Unnamed Project"
-msgstr ""
+msgstr "åç„¡ã—ã®ãƒ—ロジェクト"
#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
+msgstr "複数ã®ãƒ—ロジェクトを本当ã«é–‹ã‘ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
msgstr ""
+"é¸æŠžã—ãŸã‚·ãƒ¼ãƒ³ '%s' ã¯ã€ã‚·ãƒ¼ãƒ³ ファイルã§ã¯ã‚りã¾ã›ã‚“ã€æœ‰åйãªã‚‚ã®ã‚’é¸æŠžã—ã¦ã„"
+"ã¾ã™ã‹ï¼Ÿ\n"
+"'アプリケーション' カテゴリã®ä¸‹ã®'プロジェクトã®è¨­å®š'ã§å¤‰æ›´ã§ãã¾ã™ã€‚"
#: editor/project_manager.cpp
-msgid "Are you sure to run more than one project?"
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
msgstr ""
#: editor/project_manager.cpp
+msgid "Are you sure to run more than one project?"
+msgstr "複数ã®ãƒ—ロジェクトを本当ã«å®Ÿè¡Œã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove project from the list? (Folder contents will not be modified)"
msgstr ""
+"リストã‹ã‚‰ãƒ—ロジェクトを除去ã—ã¾ã™ã‹ï¼Ÿï¼ˆãƒ•ォルダーã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯å½±éŸ¿ã‚’å—ã‘ã¾"
+"ã›ã‚“)"
#: editor/project_manager.cpp
msgid ""
@@ -5549,28 +6926,24 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
-msgstr ""
+msgstr "プロジェクトã®ãƒªã‚¹ãƒˆ"
#: editor/project_manager.cpp
msgid "Run"
-msgstr ""
+msgstr "実行"
#: editor/project_manager.cpp
msgid "Scan"
-msgstr ""
+msgstr "スキャン"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
-msgstr ""
+msgstr "スキャンã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã‚’é¸æŠž"
#: editor/project_manager.cpp
msgid "New Project"
-msgstr ""
+msgstr "æ–°ã—ã„プロジェクト"
#: editor/project_manager.cpp
#, fuzzy
@@ -5581,304 +6954,373 @@ msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
msgid "Exit"
msgstr "終了"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "接続失敗."
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Key "
-msgstr ""
+msgstr "キー.. "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Joy Button"
-msgstr ""
+msgstr "ジョイスティックã®ãƒœã‚¿ãƒ³"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Joy Axis"
-msgstr ""
+msgstr "ジョイスティックã®è»¸"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
-msgstr ""
+msgstr "マウスボタン"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
-msgstr ""
+msgstr "䏿­£ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³ï¼ˆ '/' ã¨':'ã¯ä¸å¯ã§ã™ï¼‰."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
-msgstr ""
+msgstr "アクション'%s'ã¯æ—¢ã«ã‚りã¾ã™!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Rename Input Action Event"
-msgstr ""
+msgstr "入力アクションイベントã®åå‰ã‚’変更ã™ã‚‹"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
-msgstr ""
+msgstr "入力アクションイベントを追加"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
-msgstr ""
+msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+#, fuzzy
msgid "Press a Key.."
-msgstr ""
+msgstr "キーを押ã—ã¦ãã ã•ã„.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
-msgstr ""
+msgstr "左ボタン"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
-msgstr ""
+msgstr "å³ãƒœã‚¿ãƒ³"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
-msgstr ""
+msgstr "中央ボタン"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Wheel Up Button"
-msgstr ""
+msgstr "ホイールupボタン"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Wheel Down Button"
-msgstr ""
+msgstr "ホイールDownボタン"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
-msgstr ""
+msgstr "ボタン6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
-msgstr ""
+msgstr "ボタン7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
-msgstr ""
+msgstr "ボタン8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
-msgstr ""
+msgstr "ボタン9"
+
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change"
+msgstr "変更"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Joypad Axis Index:"
-msgstr ""
+msgstr "ジョイパッド軸ã®Index:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "アナログ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Joypad Button Index:"
-msgstr ""
+msgstr "ジョイパッドã®ãƒœã‚¿ãƒ³ã®Index:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Add Input Action"
-msgstr ""
+msgstr "入力アクションを追加"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Erase Input Action Event"
-msgstr ""
+msgstr "入力アクションイベントを消去"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr ""
+msgstr "イベントを追加"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "デãƒã‚¤ã‚¹"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "ボタン"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "左クリック"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "å³ã‚¯ãƒªãƒƒã‚¯"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "中クリック"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#, fuzzy
msgid "Wheel Up."
-msgstr "ホイール上"
+msgstr "マウスホイールを上ã¸."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
-msgstr "ホイール下"
+msgstr "マウスホイールを下."
-#: editor/project_settings.cpp
-msgid "Error saving settings."
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "プロパティã«getter(get method)を作る"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "プロパティ:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "設定"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "入力を消去"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Error saving settings."
+msgstr "設定をä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ."
+
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
+msgstr "設定ã®ä¿å­˜ã«æˆåŠŸã—ã¾ã—ãŸ."
+
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
-msgstr ""
+msgstr "翻訳を追加"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Remove Translation"
-msgstr ""
+msgstr "翻訳を除去"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Add Remapped Path"
-msgstr ""
+msgstr "リマップã•れãŸãƒ‘スを追加"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Change Resource Remap Language"
-msgstr ""
+msgstr "リソースリマップ言語を変更"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Remove Resource Remap"
-msgstr ""
+msgstr "リソースã®ãƒªãƒžãƒƒãƒ—を除去"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Remove Resource Remap Option"
-msgstr ""
+msgstr "リソースã®ãƒªãƒžãƒƒãƒ—オプションを除去"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
-msgstr ""
+msgstr "プロジェクト設定 (project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
+msgstr "プロパティ:"
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
-msgstr ""
+msgstr "インプットマップ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
-msgstr ""
+msgstr "アクション:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
-msgstr ""
+msgstr "デãƒã‚¤ã‚¹:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
-msgstr ""
+msgstr "インデックス:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
-msgstr ""
+msgstr "ローカライズ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
-msgstr ""
+msgstr "翻訳"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
-msgstr ""
+msgstr "翻訳:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
-msgstr ""
+msgstr "リマップ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
-msgstr ""
+msgstr "リソース:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Remaps by Locale:"
-msgstr ""
+msgstr "ロケールã«å¾“ã£ã¦ã‚­ãƒ¼ã®ãƒªãƒžãƒƒãƒ—:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Locale"
-msgstr ""
+msgstr "ロケール"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
-msgstr ""
+msgstr "自動読ã¿è¾¼ã¿"
#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Viewport"
-msgstr ""
+msgstr "ビューãƒãƒ¼ãƒˆã‚’é¸ã¶"
#: editor/property_editor.cpp
msgid "Ease In"
-msgstr ""
+msgstr "イージング(Ease In)"
#: editor/property_editor.cpp
msgid "Ease Out"
-msgstr ""
+msgstr "イージング(Ease Out)"
#: editor/property_editor.cpp
+#, fuzzy
msgid "Zero"
-msgstr ""
+msgstr "(イージング)無ã—"
#: editor/property_editor.cpp
msgid "Easing In-Out"
-msgstr ""
+msgstr "イージング(In-Out)"
#: editor/property_editor.cpp
msgid "Easing Out-In"
-msgstr ""
+msgstr "イージング(Out-In)"
#: editor/property_editor.cpp
msgid "File.."
-msgstr ""
+msgstr "ファイル.."
#: editor/property_editor.cpp
msgid "Dir.."
-msgstr ""
+msgstr "ディレクトリ.."
#: editor/property_editor.cpp
msgid "Assign"
-msgstr ""
+msgstr "アサインã™ã‚‹"
+
+#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠž"
#: editor/property_editor.cpp
msgid "New Script"
-msgstr ""
+msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト"
#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
msgid "Error loading file: Not a resource!"
-msgstr ""
+msgstr "ファイル読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:リソースã§ã¯ã‚りã¾ã›ã‚“!"
+
+#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠžã™ã‚‹"
#: editor/property_editor.cpp
#, fuzzy
@@ -5898,12 +7340,14 @@ msgid "Set"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
msgid "Properties:"
-msgstr ""
+msgstr "プロパティ:"
#: editor/property_editor.cpp
+#, fuzzy
msgid "Sections:"
-msgstr ""
+msgstr "セクション:"
#: editor/property_selector.cpp
#, fuzzy
@@ -5941,19 +7385,20 @@ msgstr ""
#: editor/resources_dock.cpp
msgid "Create New Resource"
-msgstr ""
+msgstr "æ–°ã—ã„リソースを生æˆ"
#: editor/resources_dock.cpp
msgid "Open Resource"
-msgstr ""
+msgstr "リソースを開ã‘ã‚‹"
#: editor/resources_dock.cpp
msgid "Save Resource"
-msgstr ""
+msgstr "リソースをä¿å­˜"
#: editor/resources_dock.cpp
+#, fuzzy
msgid "Resource Tools"
-msgstr ""
+msgstr "リソースã®ãƒ„ール"
#: editor/resources_dock.cpp
msgid "Make Local"
@@ -5965,155 +7410,205 @@ msgstr ""
#: editor/run_settings_dialog.cpp
msgid "Current Scene"
-msgstr ""
+msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³"
#: editor/run_settings_dialog.cpp
+#, fuzzy
msgid "Main Scene"
-msgstr ""
+msgstr "メインシーン"
#: editor/run_settings_dialog.cpp
+#, fuzzy
msgid "Main Scene Arguments:"
-msgstr ""
+msgstr "メインシーンã®å¼•æ•°:"
#: editor/run_settings_dialog.cpp
+#, fuzzy
msgid "Scene Run Settings"
-msgstr ""
+msgstr "シーン実行ã®è¨­å®š"
+
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "決定"
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Error loading scene from %s"
-msgstr ""
+msgstr "シーンを%sã‹ã‚‰èª­ã¿è¾¼ã‚€éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç”Ÿã˜ã¾ã—ãŸ"
#: editor/scene_tree_dock.cpp
msgid "Ok"
-msgstr ""
+msgstr "オッケー"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
msgstr ""
+"ã“ã®ã‚·ãƒ¼ãƒ³ã¯è‡ªèº«ã®ãƒŽãƒ¼ãƒ‰ã®ã†ã¡ã®ä¸€ã¤ã®å†…ã«ã‚ã‚‹ãŸã‚〠'%s'シーンをインスタンス"
+"化ã§ãã¾ã›ã‚“"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Instance Scene(s)"
-msgstr ""
+msgstr "シーンã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "This operation can't be done on the tree root."
-msgstr ""
+msgstr "ã“ã®å‡¦ç†ã¯ãƒ„リーã®ãƒ«ãƒ¼ãƒˆã§ã¯ã§ãã¾ã›ã‚“."
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Move Node In Parent"
-msgstr ""
+msgstr "親ã®ãƒŽãƒ¼ãƒ‰ã‚’移動"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Move Nodes In Parent"
-msgstr ""
+msgstr "親ã®ãƒŽãƒ¼ãƒ‰ã‚’移動"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Duplicate Node(s)"
-msgstr ""
+msgstr "ノードを複製"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Delete Node(s)?"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
+msgstr "ノードを除去ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Can not perform with the root node."
-msgstr ""
+msgstr "ルートノードãŒãªã„ã¨å‡¦ç†ã§ãã¾ã›ã‚“."
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "This operation can't be done on instanced scenes."
-msgstr ""
+msgstr "ã“ã®å‡¦ç†ã«ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•れãŸã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As.."
+msgstr "æ–°è¦ã‚·ãƒ¼ãƒ³ã«åå‰ã‚’付ã‘ã¦ä¿å­˜.."
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Editable Children"
+msgstr "編集å¯èƒ½ãªå­"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Discard Instancing"
+msgstr "インスタンス化ã®ç„¡åŠ¹åŒ–"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Makes Sense!"
-msgstr ""
+msgstr "有æ„義ã«!"
#: editor/scene_tree_dock.cpp
msgid "Can't operate on nodes from a foreign scene!"
-msgstr ""
+msgstr "ç•°ãªã‚‹ã‚·ãƒ¼ãƒ³ã®ãƒŽãƒ¼ãƒ‰ã‚’処ç†ã§ãã¾ã›ã‚“!"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
+msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ãŒç¶™æ‰¿ã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’処ç†ã§ãã¾ã›ã‚“!"
#: editor/scene_tree_dock.cpp
msgid "Remove Node(s)"
-msgstr ""
+msgstr "ノードを除去"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid ""
"Couldn't save new scene. Likely dependencies (instances) couldn't be "
"satisfied."
msgstr ""
+"æ–°ã—ã„シーンをä¿å­˜ã§ãã¾ã›ã‚“。ä¾å­˜é–¢ä¿‚ã®å¯¾è±¡ãŒå®Œå‚™ã•れã¦ã„ãªã„ã¨æ€ã‚れã¾ã™"
#: editor/scene_tree_dock.cpp
msgid "Error saving scene."
-msgstr ""
+msgstr "シーンをä¿å­˜ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ."
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Error duplicating scene to save it."
-msgstr ""
+msgstr "ä¿å­˜ã®ãŸã‚シーンを複製ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ."
#: editor/scene_tree_dock.cpp
msgid "Sub-Resources:"
-msgstr ""
+msgstr "サブリソース:"
#: editor/scene_tree_dock.cpp
msgid "Edit Groups"
-msgstr ""
+msgstr "グループを編集"
#: editor/scene_tree_dock.cpp
msgid "Edit Connections"
-msgstr ""
+msgstr "コãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’編集"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Clear Inheritance"
+msgstr "継承をクリアã™ã‚‹"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "エディタã§é–‹ã"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
-msgstr ""
+msgstr "ノードを消去"
#: editor/scene_tree_dock.cpp
msgid "Add Child Node"
-msgstr ""
+msgstr "å­ãƒŽãƒ¼ãƒ‰ã‚’追加"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Instance Child Scene"
-msgstr ""
+msgstr "å­ã‚·ãƒ¼ãƒ³ã‚’インスタンス化"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Change Type"
-msgstr ""
+msgstr "型(type)を変更"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Attach Script"
-msgstr ""
+msgstr "スクリプトを付与"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Clear Script"
-msgstr ""
+msgstr "スクリプトをクリア"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
-msgstr ""
+msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Save Branch as Scene"
-msgstr ""
+msgstr "ブランãƒã‚’シーンã¨ã—ã¦ä¿å­˜"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Copy Node Path"
-msgstr ""
+msgstr "ノードã®ãƒ‘スをコピー"
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -6122,21 +7617,40 @@ msgstr "確èªã—ã¦ãã ã•ã„。"
#: editor/scene_tree_dock.cpp
msgid "Add/Create a New Node"
-msgstr ""
+msgstr "æ–°ã—ã„ノードを加ãˆã‚‹/生æˆã™ã‚‹"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid ""
"Instance a scene file as a Node. Creates an inherited scene if no root node "
"exists."
msgstr ""
+"シーンファイルをノードã¨ã—ã¦ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–. ã‚‚ã—ルートã®ï¼¾åº¦ãŒãªã‘れã°ã€ç¶™æ‰¿"
+"ã—ãŸã‚·ãƒ¼ãƒ³ã‚’生æˆ"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "フィルター"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Attach a new or existing script for the selected node."
-msgstr ""
+msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã«æ–°è¦/既存ã®ã‚¹ã‚¯ãƒªãƒ—トを付与"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Clear a script for the selected node."
-msgstr ""
+msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã®ã‚¹ã‚¯ãƒªãƒ—トをクリア"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "継承をクリアã—ã¾ã™ã‹ï¼Ÿï¼ˆundoã§ãã¾ã›ã‚“!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "クリアï¼"
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
@@ -6147,34 +7661,40 @@ msgid "Toggle CanvasItem Visible"
msgstr ""
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid "Node configuration warning:"
-msgstr ""
+msgstr "ノードã®è¨­å®šã«é–¢ã™ã‚‹è­¦å‘Š:"
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"ノードãŒã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã¨ã‚°ãƒ«ãƒ¼ãƒ—ã‚’ä¿æŒã—ã¦ã„ã¾ã™\n"
+"クリックã—ã¦ã‚·ã‚°ãƒŠãƒ«ãƒ‰ãƒƒã‚¯ã‚’表示ã—ã¦ãã ã•ã„"
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"ノードã¯ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’ä¿æŒã—ã¦ã„ã¾ã™\n"
+"クリックã—ã¦ã‚·ã‚°ãƒŠãƒ«ãƒ‰ãƒƒã‚¯ã‚’表示ã—ã¦ãã ã•ã„"
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
+"ノードã¯ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã—ã¦ã„ã¾ã™.\n"
+"クリックã—ã¦ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‰ãƒƒã‚¯ã‚’表示ã—ã¦ãã ã•ã„."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
-msgstr ""
+msgstr "インスタンス:"
#: editor/scene_tree_editor.cpp
#, fuzzy
@@ -6182,64 +7702,52 @@ msgid "Open script"
msgstr "フォルダを作æˆ"
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"ノードã¯ãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã™.\n"
+"クリックã—ã¦ãƒ­ãƒƒã‚¯ã‚’外ã—ã¦ãã ã•ã„"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"å­ã‚’é¸æŠžã§ãã¾ã›ã‚“.\n"
+"クリックã—ã¦é¸æŠžå¯èƒ½ã«ã—ã¦ãã ã•ã„"
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid "Toggle Visibility"
-msgstr ""
+msgstr "å¯è¦–性(Visibility)を変更"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
-msgstr ""
+msgstr "䏿­£ãªãƒŽãƒ¼ãƒ‰å.ä»¥ä¸‹ã®æ–‡å­—ã¯ä½¿ãˆã¾ã›ã‚“:"
#: editor/scene_tree_editor.cpp
msgid "Rename Node"
-msgstr ""
+msgstr "ノードã®åå‰ã‚’変更"
#: editor/scene_tree_editor.cpp
msgid "Scene Tree (Nodes):"
-msgstr ""
+msgstr "シーンツリー(ノード):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr ""
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "ノードã®è¨­å®šã«é–¢ã™ã‚‹è­¦å‘Š:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
-msgstr ""
+msgstr "ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠž"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "イメージ読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -6252,16 +7760,22 @@ msgid "Error loading script from %s"
msgstr "フォント読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "利用ã§ããªã„"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
-msgstr ""
+msgstr "パスãŒã‚りã¾ã›ã‚“"
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Path is not local"
-msgstr ""
+msgstr "パスã¯ãƒ­ãƒ¼ã‚«ãƒ«ã§ã¯ã‚りã¾ã›ã‚“"
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Invalid base path"
-msgstr ""
+msgstr "䏿­£ãªãƒ™ãƒ¼ã‚¹ï¼ˆbase)パス"
#: editor/script_create_dialog.cpp
msgid "Invalid extension"
@@ -6278,27 +7792,25 @@ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
-msgstr ""
+msgstr "䏿­£ãªã‚¯ãƒ©ã‚¹å"
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr ""
+msgstr "継承ã—ãŸè¦ªã®åå‰ã‹ãƒ‘スãŒä¸æ­£ã§ã™"
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Script valid"
-msgstr ""
+msgstr "スクリプトã¯å•題ã‚りã¾ã›ã‚“"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
+msgstr "使ãˆã‚‹æ–‡å­—ã¯:a-z, A-Z, 0-9 㨠_ã§ã™"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "組ã¿è¾¼ã¿ã‚¹ã‚¯ãƒªãƒ—ト(シーンファイルã®ï¼‰"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -6307,15 +7819,15 @@ msgstr "フォルダを作æˆ"
#: editor/script_create_dialog.cpp
msgid "Load existing script file"
-msgstr ""
+msgstr "既存ã®ã‚¹ã‚¯ãƒªãƒ—トファイルを読ã¿è¾¼ã‚€"
#: editor/script_create_dialog.cpp
msgid "Inherits"
-msgstr ""
+msgstr "継承"
#: editor/script_create_dialog.cpp
msgid "Class Name"
-msgstr ""
+msgstr "クラスå"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -6324,67 +7836,70 @@ msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
#: editor/script_create_dialog.cpp
msgid "Built-in Script"
-msgstr ""
+msgstr "組ã¿è¾¼ã¿ã‚¹ã‚¯ãƒªãƒ—ト"
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Attach Node Script"
-msgstr ""
+msgstr "ノードã«ã‚¹ã‚¯ãƒªãƒ—トを添付ã™ã‚‹"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
-msgstr ""
+msgstr "ãƒã‚¤ãƒˆ:"
#: editor/script_editor_debugger.cpp
msgid "Warning"
-msgstr ""
+msgstr "警告"
#: editor/script_editor_debugger.cpp
msgid "Error:"
-msgstr ""
+msgstr "エラー:"
#: editor/script_editor_debugger.cpp
msgid "Source:"
-msgstr ""
+msgstr "ソース:"
#: editor/script_editor_debugger.cpp
msgid "Function:"
-msgstr ""
+msgstr "関数:"
#: editor/script_editor_debugger.cpp
msgid "Errors"
-msgstr ""
+msgstr "エラー"
#: editor/script_editor_debugger.cpp
msgid "Child Process Connected"
-msgstr ""
+msgstr "å­ãƒ—ロセス接続"
#: editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Inspect Previous Instance"
-msgstr ""
+msgstr "å‰ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®å†…容を確èª"
#: editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Inspect Next Instance"
-msgstr ""
+msgstr "次ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®å†…容を確èª"
#: editor/script_editor_debugger.cpp
msgid "Stack Frames"
-msgstr ""
+msgstr "スタックフレーム"
#: editor/script_editor_debugger.cpp
msgid "Variable"
-msgstr ""
+msgstr "変数"
#: editor/script_editor_debugger.cpp
msgid "Errors:"
-msgstr ""
+msgstr "エラー:"
#: editor/script_editor_debugger.cpp
msgid "Stack Trace (if applicable):"
-msgstr ""
+msgstr "スタックトレース(å¯èƒ½ãªã‚‰ï¼‰:"
#: editor/script_editor_debugger.cpp
msgid "Remote Inspector"
-msgstr ""
+msgstr "リモートインスペクター"
#: editor/script_editor_debugger.cpp
msgid "Live Scene Tree:"
@@ -6392,59 +7907,61 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Remote Object Properties: "
-msgstr ""
+msgstr "リモートオブジェクトã®ãƒ—ロパティ: "
#: editor/script_editor_debugger.cpp
msgid "Profiler"
-msgstr ""
+msgstr "プロファイラー"
#: editor/script_editor_debugger.cpp
msgid "Monitor"
-msgstr ""
+msgstr "モニター"
#: editor/script_editor_debugger.cpp
msgid "Value"
-msgstr ""
+msgstr "値"
#: editor/script_editor_debugger.cpp
msgid "Monitors"
-msgstr ""
+msgstr "モニター"
#: editor/script_editor_debugger.cpp
+#, fuzzy
msgid "List of Video Memory Usage by Resource:"
-msgstr ""
+msgstr "リソースã«ã‚ˆã‚‹ãƒ“デオメモリーã®ä½¿ç”¨ãƒªã‚¹ãƒˆ:"
#: editor/script_editor_debugger.cpp
msgid "Total:"
-msgstr ""
+msgstr "åˆè¨ˆ:"
#: editor/script_editor_debugger.cpp
msgid "Video Mem"
-msgstr ""
+msgstr "ビデオメモリー"
#: editor/script_editor_debugger.cpp
msgid "Resource Path"
-msgstr ""
+msgstr "リソースã®ãƒ‘ス"
#: editor/script_editor_debugger.cpp
msgid "Type"
-msgstr ""
+msgstr "タイプ(型)"
#: editor/script_editor_debugger.cpp
msgid "Usage"
-msgstr ""
+msgstr "使用"
#: editor/script_editor_debugger.cpp
msgid "Misc"
-msgstr ""
+msgstr "ãã®ä»–"
#: editor/script_editor_debugger.cpp
msgid "Clicked Control:"
-msgstr ""
+msgstr "クリックã•れãŸã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«:"
#: editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Clicked Control Type:"
-msgstr ""
+msgstr "クリックã•れãŸã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã®ã‚¿ã‚¤ãƒ—:"
#: editor/script_editor_debugger.cpp
msgid "Live Edit Root:"
@@ -6456,35 +7973,43 @@ msgstr ""
#: editor/settings_config_dialog.cpp
msgid "Shortcuts"
-msgstr ""
+msgstr "ショートカット"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
+msgstr "å…‰æºã®åŠå¾„を変更"
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
-msgstr ""
+msgstr "カメラã®FOVを変更"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera Size"
-msgstr ""
+msgstr "カメラã®ã‚µã‚¤ã‚ºã‚’変更"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Change Sphere Shape Radius"
-msgstr ""
+msgstr "çƒå½¢çжã®åŠå¾„変更"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Change Box Shape Extents"
-msgstr ""
+msgstr "ボックス(箱)形状ã®Extent(範囲)を変更"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Change Capsule Shape Radius"
-msgstr ""
+msgstr "カプセル形状ã®åŠå¾„変更"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Change Capsule Shape Height"
-msgstr ""
+msgstr "カプセル形状ã®é«˜ã•変更"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Ray Shape Length"
@@ -6496,7 +8021,7 @@ msgstr ""
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "パーティクルã®è»¸å¹³è¡Œå¢ƒç•Œãƒœãƒƒã‚¯ã‚¹ã‚’変更"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -6550,13 +8075,144 @@ msgstr "無効ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹è¾žæ›¸å½¢å¼ã§ã™ (@path ã§ç„¡åйãªã‚¹ã‚¯ã
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "無効ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹è¾žæ›¸ã§ã™ (無効ãªã‚µãƒ–クラス)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "é¸æŠžç¯„å›²ã‚’æ¶ˆåŽ»"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "é¸æŠžç¯„å›²ã‚’è¤‡è£½"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "上é¢å›³"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "無効"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: 回転"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: 回転"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: 回転"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "æ–°è¦ã«ç”Ÿæˆ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "æ–°ã—ã„プロジェクトを作る"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "タイルマップを消去"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "é¸æŠžç¯„å›²ã®ã¿"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "é¸æŠžç¯„å›²ã®ã¿"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Snapã®è¨­å®š"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "インスタンス:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "ファイル:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
+#, fuzzy
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
"properly!"
msgstr ""
-"使用メモリ外ã§ãƒŽãƒ¼ãƒ‰ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚æ­£ã—ã発生ã•ã›ã‚‹ãŸã‚ã«ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’ãŠèª­"
-"ã¿ãã ã•ã„。"
+"ノードã®ãƒ¡ãƒ¢ãƒªãƒ¼ä¸è¶³ã§ã™ã€‚ノードã«é–¢ã—ã¦ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’ãŠèª­ã¿ãã ã•ã„。"
#: modules/visual_script/visual_script.cpp
msgid ""
@@ -6565,22 +8221,54 @@ msgid ""
msgstr ""
#: modules/visual_script/visual_script.cpp
+#, fuzzy
msgid ""
"Return value must be assigned to first element of node working memory! Fix "
"your node please."
msgstr ""
+"返り値ã¯ãƒŽãƒ¼ãƒ‰ã®ãƒ¯ãƒ¼ã‚­ãƒ³ã‚°ãƒ¡ãƒ¢ãƒªãƒ¼ã§æœ€åˆã®è¦ç´ ã«ã‚¢ã‚µã‚¤ãƒ³ã•れã¦ã„ã‚‹å¿…è¦ãŒã‚り"
+"ã¾ã™!ノードを修正ã—ã¦ãã ã•ã„!"
#: modules/visual_script/visual_script.cpp
+#, fuzzy
msgid "Node returned an invalid sequence output: "
-msgstr ""
+msgstr "ノードã¯ä¸æ­£ãªã‚·ãƒ¼ã‚¯ã‚¨ãƒ³ã‚¹å‡ºåŠ›ã‚’è¿”ã—ã¾ã—ãŸ: "
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
+"スタックã«ã‚·ãƒ¼ã‚¯ã‚¨ãƒ³ã‚¹ãƒ“ットを見ã¤ã‘ã¾ã—ãŸãŒã€ãƒŽãƒ¼ãƒ‰ã§ã¯ã‚りã¾ã›ã‚“。ãƒã‚°å ±å‘Š"
+"ã‚’!"
#: modules/visual_script/visual_script.cpp
+#, fuzzy
msgid "Stack overflow with stack depth: "
-msgstr ""
+msgstr "スタックãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ローã—ã¦ã„ã¾ã™: "
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "シグナルã®å¼•数を編集:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "é…列ã®å€¤ã®ç¨®é¡žã®å¤‰æ›´"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "入力ã®åå‰ã‚’変更"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "è¦å®šå€¤ã‚’変更"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "変数を編集:"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -6589,15 +8277,17 @@ msgstr "関数を作æˆ"
#: modules/visual_script/visual_script_editor.cpp
msgid "Variables:"
-msgstr ""
+msgstr "変数を作æˆ:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Name is not a valid identifier:"
-msgstr ""
+msgstr "ã“ã®åå‰ã¯ä¸æ­£ãªè­˜åˆ¥å­ã§ã™:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Name already in use by another func/var/signal:"
-msgstr ""
+msgstr "ä»–ã®é–¢æ•°/変数/シグナルã«ã‚ˆã‚Šæ—¢ã«ä½¿ã‚れã¦ã„ã‚‹åå‰ã§ã™:"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -6605,80 +8295,79 @@ msgid "Rename Function"
msgstr "関数を作æˆ"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Rename Variable"
-msgstr ""
+msgstr "変数ã®åå‰ã‚’変ãˆã‚‹"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Signal"
-msgstr ""
+msgstr "シグナルã®åå‰ã‚’変ãˆã‚‹"
#: modules/visual_script/visual_script_editor.cpp
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 ""
+msgstr "signalを加ãˆã‚‹"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Remove Function"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+msgid "Change Expression"
+msgstr "å¼ã‚’変更"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Remove Variable"
-msgstr "無効ãªã‚­ãƒ¼ã‚’削除"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
+msgid "Add Node"
+msgstr "ノードを加ãˆã‚‹"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Remove Signal"
-msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+msgid "Remove VisualScript Nodes"
+msgstr "無効ãªã‚­ãƒ¼ã‚’削除"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
-msgid "Editing Signal:"
-msgstr "ä¿¡å·ã‚’接続:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr ""
+msgid "Duplicate VisualScript Nodes"
+msgstr "グラフノードを複製"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
+"ãƒ¡ã‚¿ã‚­ãƒ¼ã‚’ä¿æŒã—ã¦getterã‚’è½ã¨ã™.Shiftã‚­ãƒ¼ã‚’ä¿æŒã—ã¦ã‚¸ã‚§ãƒãƒªãƒƒã‚¯ã‚’指示ã™ã‚‹."
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
+"Ctrlã‚­ãƒ¼ã‚’ä¿æŒã—ã¦getterã‚’è½ã¨ã™.Shiftã‚­ãƒ¼ã‚’ä¿æŒã—ã¦ã‚¸ã‚§ãƒãƒªãƒƒã‚¯ã‚’指示ã™ã‚‹."
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Hold Meta to drop a simple reference to the node."
-msgstr ""
+msgstr "ãƒ¡ã‚¿ã‚­ãƒ¼ã‚’ä¿æŒã—ã¦å˜ç´”å‚照(simple reference)ã‚’è½ã¨ã™."
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
+msgstr "Ctrlã‚­ãƒ¼ã‚’ä¿æŒã—ã¦å˜ç´”å‚照(simple reference)ã‚’è½ã¨ã™."
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Hold Meta to drop a Variable Setter."
-msgstr ""
+msgstr "ãƒ¡ã‚¿ã‚­ãƒ¼ã‚’ä¿æŒã—ã¦å¤‰æ•°ã®setterã‚’è½ã¨ã™"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
+msgstr "Ctrlã‚­ãƒ¼ã‚’ä¿æŒã—ã¦å¤‰æ•°ã®setterã‚’è½ã¨ã™."
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Preload Node"
@@ -6690,247 +8379,260 @@ msgid "Add Node(s) From Tree"
msgstr "シーンã‹ã‚‰ã®ãƒŽãƒ¼ãƒ‰"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Add Getter Property"
-msgstr ""
+msgstr "プロパティã«getter(get method)を作る"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Add Setter Property"
-msgstr ""
+msgstr "プロパティã«setter(set method)を作る"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "型(type)を変更"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "ノードを除去"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "シェーダーグラフノードを除去"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "ãƒŽãƒ¼ãƒ‰ã«æŽ¥ç¶šã—ã¾ã™:"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Condition"
-msgstr "é·ç§»"
+msgstr "æ¡ä»¶(conditon)"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Sequence"
-msgstr ""
+msgstr "シークエンス"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Switch"
-msgstr ""
+msgstr "Switchæ–‡"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Iterator"
-msgstr ""
+msgstr "イテレーター"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "While"
-msgstr ""
+msgstr "Whileæ–‡"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Return"
-msgstr "戻り値:"
+msgstr "戻り値"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Get"
-msgstr ""
+msgstr "Getメソッド"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "入力ã®åå‰ã‚’変更"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "'..'を処ç†ã§ãã¾ã›ã‚“"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "リソースã®ã‚¯ãƒªãƒƒãƒ—ボードã¯ç©ºã§ã™!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "ノードを貼り付ã‘:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Function"
+msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "変数を編集:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Variable"
+msgstr "無効ãªã‚­ãƒ¼ã‚’削除"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "ä¿¡å·ã‚’接続:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Signal"
+msgstr "é¸æŠžã—ã¦ã„ã‚‹ã‚‚ã®ã‚’削除"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Editing Variable:"
+msgstr "変数を編集中:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Editing Signal:"
+msgstr "ä¿¡å·ã‚’接続:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Base Type:"
-msgstr ""
+msgstr "基底型(Base Type):"
#: modules/visual_script/visual_script_editor.cpp
msgid "Available Nodes:"
-msgstr ""
+msgstr "利用å¯èƒ½ãªãƒŽãƒ¼ãƒ‰:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Select or create a function to edit graph"
-msgstr ""
+msgstr "グラフを編集ã™ã‚‹é–¢æ•°ã‚’ã€é¸æŠžã™ã‚‹ã‹ç”Ÿæˆã™ã‚‹"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Edit Signal Arguments:"
-msgstr "余分ã«å‘¼ã³å‡ºã—引数を追加ã—ã¾ã™ã€‚"
+msgstr "シグナルã®å¼•数を編集:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Edit Variable:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
+msgstr "変数を編集:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Delete Selected"
-msgstr "é¸æŠžç¯„å›²ã‚’è¤‡è£½"
+msgstr "é¸æŠžç¯„å›²ã‚’æ¶ˆåŽ»"
#: modules/visual_script/visual_script_editor.cpp
msgid "Find Node Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Copy Nodes"
-msgstr ""
+msgstr "ノードをコピー"
#: modules/visual_script/visual_script_editor.cpp
msgid "Cut Nodes"
-msgstr ""
+msgstr "ノードを切りå–ã‚‹"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste Nodes"
-msgstr "ノードã¸ã®ãƒ‘ス:"
+msgstr "ノードを貼り付ã‘:"
#: modules/visual_script/visual_script_flow_control.cpp
+#, fuzzy
msgid "Input type not iterable: "
-msgstr ""
+msgstr "入力ã®åž‹ãŒã€ç¹°ã‚Šè¿”ã—処ç†ã§ãã¾ã›ã‚“(not iterable): "
#: modules/visual_script/visual_script_flow_control.cpp
+#, fuzzy
msgid "Iterator became invalid"
-msgstr ""
+msgstr "イテレーターãŒä¸æ­£ã§ã™"
#: modules/visual_script/visual_script_flow_control.cpp
+#, fuzzy
msgid "Iterator became invalid: "
-msgstr ""
+msgstr "イテレーターãŒä¸æ­£ã§ã™: "
#: modules/visual_script/visual_script_func_nodes.cpp
+#, fuzzy
msgid "Invalid index property name."
-msgstr ""
+msgstr "インデックスã®ãƒ—ロパティåãŒä¸æ­£ã§ã™."
#: modules/visual_script/visual_script_func_nodes.cpp
+#, fuzzy
msgid "Base object is not a Node!"
-msgstr ""
+msgstr "ベースオブジェクトã¯ãƒŽãƒ¼ãƒ‰ã§ã¯ã‚りã¾ã›ã‚“!"
#: modules/visual_script/visual_script_func_nodes.cpp
+#, fuzzy
msgid "Path does not lead Node!"
-msgstr ""
+msgstr "パスãŒãƒŽãƒ¼ãƒ‰ã«é”ã—ã¾ã›ã‚“!"
#: modules/visual_script/visual_script_func_nodes.cpp
+#, fuzzy
msgid "Invalid index property name '%s' in node %s."
-msgstr ""
+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
msgid "VariableGet not found in script: "
-msgstr ""
+msgstr "変数ã®get(VariableGet)ãŒã‚¹ã‚¯ãƒªãƒ—トã«ç„¡ã„: "
#: modules/visual_script/visual_script_nodes.cpp
+#, fuzzy
msgid "VariableSet not found in script: "
-msgstr ""
+msgstr "変数ã®set(VariableSet)ãŒã‚¹ã‚¯ãƒªãƒ—トã«ç„¡ã„: "
#: modules/visual_script/visual_script_nodes.cpp
+#, fuzzy
msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
+msgstr "カスタムノードã«_step() メソッドãŒç„¡ã„ãŸã‚ã€ã‚°ãƒ©ãƒ•を処ç†ã§ãã¾ã›ã‚“."
#: modules/visual_script/visual_script_nodes.cpp
+#, fuzzy
msgid ""
"Invalid return value from _step(), must be integer (seq out), or string "
"(error)."
msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
+"_step()ã®ä¸æ­£ãªè¿”り値 integer (seq out)ã¾ãŸã¯string (error)ã§ãªã„ã¨ã„ã‘ã¾ã›"
+"ã‚“."
#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Run in Browser"
-msgstr ""
+msgstr "ブラウザã§å®Ÿè¡Œ"
#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã—ãŸHTMLファイルを既定ã®ãƒ–ラウザã§å®Ÿè¡Œ."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file:\n"
-msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãè¾¼ã¿ã§ãã¾ã›ã‚“ã§ã—ãŸ:\n"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file:\n"
-msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+msgstr "ファイルを読ã‚ã¾ã›ã‚“ã§ã—ãŸ:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Could not open template for export:\n"
-msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートを開ã‘ã¾ã›ã‚“:\n"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -6950,14 +8652,16 @@ msgstr ""
"ã®éƒ¨åˆ†ã¯ç„¡è¦–ã•れã¾ã™ã€‚"
#: scene/2d/collision_polygon_2d.cpp
+#, fuzzy
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
"CollisionObject2D derived node. Please only use it as a child of Area2D, "
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
"CollisionPolygon2D ã¯ã€CollisionObject2D 派生ノードã«è¡çªã‚·ã‚§ã‚¤ãƒ—ã‚’æä¾›ã™ã‚‹ãŸ"
-"ã‚ã«ã®ã¿æ©Ÿèƒ½ã—ã¾ã™ã€‚ã®ã¿ã¨ã—ã¦ã”利用ãã ã•ã„ Area2Dã€StaticBody2Dã€"
-"RigidBody2Dã€KinematicBody2D ãªã©ã®å­å›³å½¢ã‚’ã™ã‚‹ã“ã¨ã§ã™ã€‚"
+"ã‚ã«ã®ã¿æ©Ÿèƒ½ã—ã¾ã™ã€‚2Dã®å½¢çŠ¶ï¼ˆã‚·ã‚§ã‚¤ãƒ—ï¼‰ã‚’ä»˜ä¸Žã™ã‚‹ãŸã‚ã«ã¯ Area2Dã€"
+"StaticBody2Dã€RigidBody2Dã€KinematicBody2D ãªã©ã®å­ã‚ªãƒ–ジェクトã¨ã—ã¦åˆ©ç”¨ã—ã¦"
+"ãã ã•ã„"
#: scene/2d/collision_polygon_2d.cpp
msgid "An empty CollisionPolygon2D has no effect on collision."
@@ -6971,16 +8675,17 @@ msgid ""
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
"CollisionShape2D ã¯ã€CollisionObject2D 派生ノードã«ã‚³ãƒªã‚¸ãƒ§ãƒ³ã‚·ã‚§ã‚¤ãƒ—ã‚’æä¾›ã™"
-"ã‚‹ãŸã‚ã«ã®ã¿æ©Ÿèƒ½ã—ã¾ã™ã€‚Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D ãª"
-"ã©ã®å­ã¨ã—ã¦ã®ã¿ã”利用ãã ã•ã„。"
+"ã‚‹ãŸã‚ã«ã®ã¿æ©Ÿèƒ½ã—ã¾ã™ã€‚ï¼’Dã®å½¢çŠ¶ï¼ˆã‚·ã‚§ã‚¤ãƒ—ï¼‰ã‚’ä»˜ä¸Žã™ã‚‹ãŸã‚ã«ã¯ Area2Dã€"
+"StaticBody2Dã€RigidBody2Dã€KinematicBody2D ãªã©ã®å­ã‚ªãƒ–ジェクトã¨ã—ã¦åˆ©ç”¨ã—ã¦"
+"ãã ã•ã„."
#: scene/2d/collision_shape_2d.cpp
msgid ""
"A shape must be provided for CollisionShape2D to function. Please create a "
"shape resource for it!"
msgstr ""
-"関数㮠CollisionShape2D ã®å½¢çŠ¶ã‚’æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãã®ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リ"
-"ソースを作æˆã—ã¦ãã ã•ã„!"
+"関数ã«å¯¾ã—㦠CollisionShape2D ã®å½¢çŠ¶ï¼ˆã‚·ã‚§ã‚¤ãƒ—ï¼‰ã‚’æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã"
+"ã®ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リソースを作æˆã—ã¦ãã ã•ã„!"
#: scene/2d/light_2d.cpp
msgid ""
@@ -7023,16 +8728,26 @@ msgstr ""
"ã®ã¿å‹•作ã—ã¾ã™ã€‚"
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
+#, fuzzy
msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"パーティクルを処ç†ã™ã‚‹ãŸã‚ã®ãƒžãƒ†ãƒªã‚¢ãƒ«ã¯æŒ‡å®šã•れã¦ãŠã‚‰ãšã€ãã®æŒ¯ã‚‹èˆžã„ã¯æœªæŒ‡"
+"示ã§ã™."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
"PathFollow2D ã¯ã€Path2D ノードã®å­ã¨ã—ã¦è¨­å®šã•れã¦ã„ã‚‹å ´åˆã®ã¿å‹•作ã—ã¾ã™ã€‚"
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7063,23 +8778,33 @@ msgstr ""
"VisibilityEnable2D ã¯ã€è¦ªã¨ã—ã¦ç›´æŽ¥ç·¨é›†ã•れãŸã‚·ãƒ¼ãƒ³ã®ãƒ«ãƒ¼ãƒˆã‚’使用ã™ã‚‹å ´åˆã«æœ€"
"é©ã§ã™ã€‚"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape ã¯è¡çªç‰©ç”±æ¥ã®ãƒŽãƒ¼ãƒ‰ã«è¡çªå½¢çŠ¶ã‚’æä¾›ã™ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚唯一ã®"
-"彼らã«å½¢çŠ¶ã‚’ä¸Žãˆã‚‹ã“ã¨ãªã©ã‚¨ãƒªã‚¢ã€é™ãƒœãƒ‡ã‚£ã€RigidBodyã€ã‚­ãƒãƒžãƒ†ã‚£ãƒƒã‚¯ãƒœãƒ‡ã‚£ã®"
-"å­ã¨ã—ã¦ãれを使用ã—ã¦ãã ã•ã„。"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"関数㮠CollisionShape ã®å½¢çŠ¶ã‚’æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãれã®ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リ"
-"ソースを作æˆã—ã¦ãã ã•ã„!"
#: scene/3d/collision_polygon.cpp
#, fuzzy
@@ -7096,6 +8821,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "空㮠CollisionPolygon ã¯ã€è¡çªåˆ¤å®šã‚’æŒã¡ã¾ã›ã‚“。"
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape ã¯è¡çªç‰©ç”±æ¥ã®ãƒŽãƒ¼ãƒ‰ã«è¡çªå½¢çŠ¶ã‚’æä¾›ã™ã‚‹ã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚唯一ã®"
+"彼らã«å½¢çŠ¶ã‚’ä¸Žãˆã‚‹ã“ã¨ãªã©ã‚¨ãƒªã‚¢ã€é™ãƒœãƒ‡ã‚£ã€RigidBodyã€ã‚­ãƒãƒžãƒ†ã‚£ãƒƒã‚¯ãƒœãƒ‡ã‚£ã®"
+"å­ã¨ã—ã¦ãれを使用ã—ã¦ãã ã•ã„。"
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"関数㮠CollisionShape ã®å½¢çŠ¶ã‚’æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãれã®ãŸã‚ã®ã‚·ã‚§ã‚¤ãƒ—リ"
+"ソースを作æˆã—ã¦ãã ã•ã„!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7111,8 +8854,16 @@ msgstr ""
"ã“れã¯ãƒŠãƒ“ゲーションデータã®ã¿æä¾›ã—ã¾ã™ã€‚"
#: scene/3d/particles.cpp
+#, fuzzy
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
+msgstr "æç”»ãƒ‘スã®ãŸã‚ã®ãƒ¡ãƒƒã‚·ãƒ¥ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“ã®ã§è¦‹ãˆã¾ã›ã‚“"
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
msgstr ""
#: scene/3d/remote_transform.cpp
@@ -7139,12 +8890,14 @@ msgstr ""
"㯠'Frames' プロパティã«è¨­å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
-msgstr ""
+#, fuzzy
+msgid "Raw Mode"
+msgstr "パン・モード"
#: scene/gui/color_picker.cpp
+#, fuzzy
msgid "Add current color as a preset"
-msgstr ""
+msgstr "ã“ã®è‰²ã‚’åˆæœŸè¨­å®šå€¤ã¨ã—ã¦è¿½åŠ ã™ã‚‹"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7154,22 +8907,6 @@ msgstr "警告!"
msgid "Please Confirm..."
msgstr "確èªã—ã¦ãã ã•ã„。"
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "ファイルを開ã"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "ファイルを開ã"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "ディレクトリを開ã"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "ファイルã¾ãŸã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’é–‹ã"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7185,17 +8922,24 @@ msgstr ""
"らã¯å®Ÿè¡Œæ™‚ã«éžè¡¨ç¤ºã«ãªã‚Šã¾ã™ã€‚"
#: scene/gui/scroll_container.cpp
+#, fuzzy
msgid ""
"ScrollContainer is intended to work with a single child control.\n"
"Use a container as child (VBox,HBox,etc), or a Control and set the custom "
"minimum size manually."
msgstr ""
+"スクロールコンテナã¯å­ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãŒå‹•作ã«å¿…è¦ã§ã™. VBox,HBoxãªã©ã®ã‚³ãƒ³ãƒ†ãƒŠ"
+"ã‚’å­ã¨ã™ã‚‹ã‹ã€ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’カスタム最å°ã‚µã‚¤ã‚ºã«ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã§æŒ‡å®šã—ã¦ä½¿ç”¨ã—ã¦"
+"ãã ã•ã„."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"プロジェクトã®è¨­å®š (レンダリング-> ビューãƒãƒ¼ãƒˆ -> 既定ã®ç’°å¢ƒ) ã§æ—¢å®šã¨ã•れã¦"
+"ã„る環境(Environment)ã¯èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ."
#: scene/main/viewport.cpp
msgid ""
@@ -7210,6 +8954,119 @@ msgstr ""
"ãã¤ã‹ã®ãƒŽãƒ¼ãƒ‰ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚"
#, fuzzy
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "シーンを閉ã˜ã¾ã™ã‹?(セーブã—ã¦ã„ãªã„変更ã¯å¤±ã‚れã¾ã™ï¼‰"
+
+#, fuzzy
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’é–‹ãã¾ã™ã‹ï¼Ÿ\n"
+#~ "(ä¿å­˜ã—ã¦ã„ãªã„変更ã¯å¤±ã‚れã¾ã™ï¼‰"
+
+#, fuzzy
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "é–‰ã˜ã¦éŽå޻開ã„ãŸã‚·ãƒ¼ãƒ³ã«ç§»å‹•"
+
+#, fuzzy
+#~ msgid "Expand to Parent"
+#~ msgstr "親ã¾ã§å±•é–‹ã™ã‚‹"
+
+#~ msgid "Del"
+#~ msgstr "deleteキー"
+
+#, fuzzy
+#~ msgid "Copy To Platform.."
+#~ msgstr "プラットフォームã¸ã‚³ãƒ”ー.."
+
+#, fuzzy
+#~ msgid "just pressed"
+#~ msgstr "押ã—ãŸ"
+
+#, fuzzy
+#~ msgid "just released"
+#~ msgstr "離ã—ãŸ"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr "証明書ファイルãŒèª­ã‚ã¾ã›ã‚“. パスã‹ãƒ‘スワードãŒé–“é•ã£ã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ"
+
+#, fuzzy
+#~ msgid "Error creating the signature object."
+#~ msgstr "ç½²åオブジェクトã®ç”Ÿæˆã‚¨ãƒ©ãƒ¼"
+
+#, fuzzy
+#~ msgid "Error creating the package signature."
+#~ msgstr "パッケージ署å生æˆã‚¨ãƒ©ãƒ¼"
+
+#, fuzzy
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“.\n"
+#~ "ダウンロードã—ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ãã ã•ã„."
+
+#, fuzzy
+#~ msgid "Custom debug package not found."
+#~ msgstr "カスタム デãƒãƒƒã‚°ãƒ‘ッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#, fuzzy
+#~ msgid "Custom release package not found."
+#~ msgstr "カスタム リリースパッケージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“."
+
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
+
+#, fuzzy
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "パブリッシャã®GUIDãŒä¸æ­£ã§ã™."
+
+#, fuzzy
+#~ msgid "Invalid background color."
+#~ msgstr "䏿­£ãªèƒŒæ™¯è‰²"
+
+#, fuzzy
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "䏿­£ãªStoreロゴイメージ(縦横50x50ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)"
+
+#, fuzzy
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "䏿­£ãª44X44正方ロゴイメージ(縦横44x44ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)"
+
+#, fuzzy
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "䏿­£ãª71x71正方ロゴイメージ(縦横71x71ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)"
+
+#, fuzzy
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "䏿­£ãª150X150正方ロゴイメージ(縦横150x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)"
+
+#, fuzzy
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "䏿­£ãª310X310正方ロゴイメージ(縦横310x310ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)"
+
+#, fuzzy
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "䏿­£ãª310X150幅広ロゴイメージ(縦横310x150ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)"
+
+#, fuzzy
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "䏿­£ãªã‚¹ãƒ—ラッシュスクリーンイメージ(縦横620x300ã§ãªã„ã¨ã„ã‘ã¾ã›ã‚“)"
+
+#~ msgid "RAW Mode"
+#~ msgstr "RAWモード"
+
+#, fuzzy
#~ msgid "Node From Scene"
#~ msgstr "シーンã‹ã‚‰ã®ãƒŽãƒ¼ãƒ‰"
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index ee409ab97f..b531720ebd 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -148,7 +148,8 @@ msgstr "ë‹¤ìŒ ìŠ¤í…으로 ì´ë™"
msgid "Goto Prev Step"
msgstr "ì´ì „ 스í…으로 ì´ë™"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "ì§ì„ í˜•"
@@ -382,7 +383,8 @@ msgstr "파ì¼"
msgid "Description:"
msgstr "설명:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "설치"
@@ -393,9 +395,9 @@ msgstr "설치"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "닫기"
@@ -471,7 +473,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -537,17 +539,16 @@ msgid "All"
msgstr "모ë‘"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "검색:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "검색"
@@ -563,7 +564,7 @@ msgstr "검색"
msgid "Import"
msgstr "가져오기"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "플러그ì¸"
@@ -575,7 +576,7 @@ msgstr "ì •ë ¬:"
msgid "Reverse"
msgstr "뒤집기"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "카테고리:"
@@ -730,14 +731,14 @@ msgstr "연결할 노드:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "추가"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "삭제"
@@ -846,7 +847,7 @@ msgid "Resource"
msgstr "리소스"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "경로"
@@ -928,12 +929,194 @@ msgstr "미사용 리소스 íƒìƒ‰ê¸°"
msgid "Delete selected files?"
msgstr "ì„ íƒëœ 파ì¼ë“¤ì„ 삭제하시겠습니까?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "삭제"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Godot ì»¤ë®¤ë‹ˆí‹°ì— ê°ì‚¬ë“œë¦½ë‹ˆë‹¤!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "ê°ì‚¬í•©ë‹ˆë‹¤!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "ì €ìž:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "프로ì íЏ 매니저"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "프로ì íЏ 매니저"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "ìƒìˆ˜:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "ìƒìˆ˜:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "무압축"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "패키지가 성공ì ìœ¼ë¡œ 설치ë˜ì—ˆìŠµë‹ˆë‹¤!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "패키지가 성공ì ìœ¼ë¡œ 설치ë˜ì—ˆìŠµë‹ˆë‹¤!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "빈 프레임 추가"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "ìžë™ 로드 ì´ë¦„ 변경"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "ìžë™ ìž¬ìƒ ì „í™˜"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "ì„ íƒ í•­ëª© ì‚­ì œ"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "디버그 옵션"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "복제"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "ì„ íƒ í•­ëª© ì‚­ì œ"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "%s 추가"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "ë ˆì´ì•„웃 ì‚­ì œ"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "애니메ì´ì…˜ 복제하기"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "ì´ë™ ì•¡ì…˜"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -947,24 +1130,53 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"유효하지 ì•Šì€ íŒŒì¼ í™•ìž¥ìž.\n"
+".fnt 를 사용하세요."
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Add Bus"
msgstr "%s 추가"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "새 리소스 만들기"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "로드"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "디스í¬ì—서 기존 리소스를 로드하여 편집합니다."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "다른 ì´ë¦„으로 저장"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "유효하지 ì•Šì€ ì´ë¦„."
@@ -1067,6 +1279,11 @@ msgid "Updating scene.."
msgstr "씬 ì—…ë°ì´íЏ 중.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "먼저 ì”¬ì„ ì €ìž¥í•´ì£¼ì„¸ìš”."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "디렉토리 ì„ íƒ"
@@ -1144,6 +1361,22 @@ msgstr "모든 íŒŒì¼ (*)"
msgid "Open"
msgstr "열기"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "íŒŒì¼ ì—´ê¸°"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "íŒŒì¼ ì—´ê¸°"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "디렉토리 열기"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "디렉토리 ë˜ëŠ” íŒŒì¼ ì—´ê¸°"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1270,6 +1503,15 @@ msgid "Signals:"
msgstr "시그ë„:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "애니메ì´ì…˜"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ìƒìˆ˜:"
@@ -1286,7 +1528,8 @@ msgid "Search Text"
msgstr "ë¬¸ìž ê²€ìƒ‰"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " 출력:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1336,6 +1579,11 @@ msgid "Creating Thumbnail"
msgstr "ì¸ë„¤ì¼ ìƒì„± 중"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1462,12 +1710,13 @@ msgid "Quick Open Script.."
msgstr "빠른 스í¬ë¦½íЏ 열기.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "네"
+#, fuzzy
+msgid "Save & Close"
+msgstr "파ì¼ë¡œ 저장하기"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "ì”¬ì„ ë‹«ìœ¼ì‹œê² ìŠµë‹ˆê¹Œ? (저장하지 ì•Šì€ ë³€ê²½ì‚¬í•­ì€ ì‚¬ë¼ì§‘니다.)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1479,9 +1728,17 @@ msgid "No"
msgstr "노드"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "네"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "ì´ ì”¬ì€ ì €ìž¥ë˜ì§€ 않았습니다. ì‹¤í–‰ì „ì— ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
@@ -1491,12 +1748,9 @@ msgid "Export Tile Set"
msgstr "íƒ€ì¼ ì…‹ 내보내기"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "종료"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "ì—디터를 종료하시겠습니까?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1519,18 +1773,52 @@ msgid "Quick Run Scene.."
msgstr "빠른 씬 실행.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "종료"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "ì—디터를 종료하시겠습니까?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "프로ì íЏ 매니저"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "파ì¼ë¡œ 저장하기"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"프로ì íЏ 매니저를 실행하시겠습니까?\n"
-"(저장하지 ì•Šì€ ë³€ê²½ì‚¬í•­ì€ ì‚¬ë¼ì§‘니다.)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "ë©”ì¸ ì”¬ ì„ íƒ"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1565,6 +1853,11 @@ msgstr "ë ˆì´ì•„웃 저장"
msgid "Delete Layout"
msgstr "ë ˆì´ì•„웃 ì‚­ì œ"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Default"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "씬 탭 전환"
@@ -1581,6 +1874,11 @@ msgstr "%dê°œ 추가 íŒŒì¼ ë˜ëŠ” í´ë”"
msgid "Distraction Free Mode"
msgstr "초집중 모드"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "초집중 모드"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "씬"
@@ -1630,10 +1928,6 @@ msgstr "모든 씬 저장"
msgid "Close Scene"
msgstr "씬 닫기"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "ë‹«ê³  ì´ì „ 씬으로 ì´ë™"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "최근 ì—´ì—ˆë˜ í•­ëª©"
@@ -1937,6 +2231,10 @@ msgstr "노드"
msgid "Output"
msgstr "출력"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "다시 가져오기"
@@ -1946,26 +2244,10 @@ msgid "Update"
msgstr "갱신"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Godot ì»¤ë®¤ë‹ˆí‹°ì— ê°ì‚¬ë“œë¦½ë‹ˆë‹¤!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "ê°ì‚¬í•©ë‹ˆë‹¤!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "ZIP 파ì¼ë¡œë¶€í„° í…œí”Œë¦¿ì„ ê°€ì ¸ì˜¤ê¸°"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "프로ì íЏ 내보내기"
@@ -1986,9 +2268,18 @@ msgid "Open & Run a Script"
msgstr "스í¬ë¦½íŠ¸ë¥¼ ì—´ê³  실행"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "새 ìƒì† 씬.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "로드 ì—러"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "ì„ íƒ"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2095,6 +2386,16 @@ msgstr "다시 가져오기"
msgid "Re-Import Changed Resources"
msgstr "ë³€ê²½ëœ ë¦¬ì†ŒìŠ¤ 다시 가져오기"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "로ì§ì„ _run() í•¨ìˆ˜ì•ˆì— ìž‘ì„±í•˜ì„¸ìš”."
@@ -2243,10 +2544,28 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "저장 ë° ë‹¤ì‹œ 가져오기"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "소스:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "소스와 ëŒ€ìƒ íŒŒì¼ì´ ë™ì¼í•˜ì—¬, 무시ë©ë‹ˆë‹¤."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "소스와 ëŒ€ìƒ ê²½ë¡œê°€ ë™ì¼í•˜ì—¬, 무시ë©ë‹ˆë‹¤."
@@ -2255,6 +2574,20 @@ msgid "Can't move directories to within themselves."
msgstr "디렉토리를 ìžì‹ ìœ¼ë¡œ ì´ë™í•  수 없습니다."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "ì´ë¯¸ì§€ 로드 ì—러:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "가져오기 ì—러:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "'..'ì— ìˆ˜í–‰í•  수 ì—†ìŒ"
@@ -2332,6 +2665,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "ì„ íƒëœ ì”¬ì„ ì„ íƒëœ ë…¸ë“œì˜ ìžì‹ìœ¼ë¡œ ì¸ìŠ¤í„´ìŠ¤ 합니다."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "ì´ë™"
@@ -2343,10 +2682,31 @@ msgstr "ê·¸ë£¹ì— ì¶”ê°€"
msgid "Remove from Group"
msgstr "그룹ì—서 제거"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "서페ì´ìФ %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "씬 가져오는 중.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "3D 씬 가져오기"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2386,6 +2746,14 @@ msgid "Saving.."
msgstr "저장 중.."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "파ì¼"
@@ -2580,6 +2948,10 @@ msgstr "소스 메쉬:"
msgid "Mesh"
msgstr "메쉬"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "서페ì´ìФ %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "가져올 ìƒ˜í”Œì´ ì—†ìŠµë‹ˆë‹¤!"
@@ -3165,6 +3537,11 @@ msgid "New name:"
msgstr "새 ì´ë¦„:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "노드 필터 편집"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "í¬ê¸°:"
@@ -3478,6 +3855,7 @@ msgstr "오브ì íŠ¸ì˜ ìžì‹ë…¸ë“œê°€ ì„ íƒë  수 있ë„ë¡ ë³µì›í•©ë‹ˆë‹¤.
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "편집"
@@ -3510,10 +3888,6 @@ msgid "Use Pixel Snap"
msgstr "픽셀 스냅 사용"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "부모로 확장"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "스켈레톤.."
@@ -3622,11 +3996,6 @@ msgstr "ì´ ìž‘ì—…ì€ í•˜ë‚˜ì˜ ì„ íƒëœ 노드를 필요로 합니다."
msgid "Change default type"
msgstr "기본 타입 변경"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "확ì¸"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3666,6 +4035,14 @@ msgstr "í´ë¦¬ê³¤ 편집 (ì  ì‚­ì œ)"
msgid "Create a new polygon from scratch."
msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "í´ë¦¬ê³¤3D 만들기"
@@ -3706,6 +4083,21 @@ msgstr "씬으로부터 갱신하기"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "커브맵 수정"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "커브맵 수정"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "리소스 로드"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "입력 추가"
@@ -3716,13 +4108,31 @@ msgstr "경로 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "ì§ì„ í˜•"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "우측 뷰"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "리소스 로드"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "커브맵 수정"
+msgid "Remove Curve Point"
+msgstr "경로 í¬ì¸íЏ ì‚­ì œ"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3746,6 +4156,12 @@ 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 "Occluder í´ë¦¬ê³¤ 만들기"
@@ -4040,6 +4456,12 @@ msgid "Load Emission Mask"
msgstr "ì—미션 ë§ˆìŠ¤í¬ ë¡œë“œ"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "버í…스"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "ìƒì„±ëœ í¬ì¸íЏ 개수:"
@@ -4371,6 +4793,12 @@ msgid "Clear Recent Files"
msgstr "Bones 없애기"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "테마 저장 중 ì—러"
@@ -4395,6 +4823,10 @@ msgid "Save Theme As.."
msgstr "테마 다른 ì´ë¦„으로 저장.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "ë‹¤ìŒ ìŠ¤í¬ë¦½íЏ"
@@ -4447,6 +4879,11 @@ msgid "Close All"
msgstr "ëª¨ë‘ ë‹«ê¸°"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "ì¦ê²¨ì°¾ê¸° 토글"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4479,6 +4916,11 @@ msgid "Keep Debugger Open"
msgstr "디버거 í•­ìƒ ì—´ì–´ë†“ê¸°"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "ì—디터ì—서 열기"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "윈ë„ìš°"
@@ -4546,6 +4988,10 @@ msgid ""
msgstr "내장 스í¬ë¦½íŠ¸ëŠ” 종ì†ëœ ì”¬ì´ ì—´ë¦° ìƒíƒœì—서만 íŽ¸ì§‘ì´ ê°€ëŠ¥í•©ë‹ˆë‹¤"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "ìƒ‰ìƒ ì„ íƒ"
@@ -4593,6 +5039,11 @@ msgid "Move Down"
msgstr "아래로 ì´ë™"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "í¬ì¸íЏ ì‚­ì œ"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "내어쓰기"
@@ -4899,37 +5350,6 @@ msgid "Animation Key Inserted."
msgstr "애니메ì´ì…˜ 키가 삽입ë˜ì—ˆìŠµë‹ˆë‹¤."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "앞으로 가기"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "뒤로"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "휠 아래로."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -4997,10 +5417,64 @@ msgid "Audio Listener"
msgstr "오디오 리스너"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "활성화"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "앞으로 가기"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "뒤로"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "휠 아래로."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "미리보기"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "변환 다ì´ì–¼ë¡œê·¸"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "ì„ íƒ ëª¨ë“œ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "알트+ìš°í´ë¦­: 겹친 오브ì íЏ ì„ íƒ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "ì´ë™ 모드 (W)"
@@ -5121,6 +5595,7 @@ msgid "View Grid"
msgstr "그리드 보기"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "설정"
@@ -5249,6 +5724,11 @@ msgid "StyleBox Preview:"
msgstr "StyleBox 미리보기:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "구역 설정"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "스냅 모드:"
@@ -5306,6 +5786,16 @@ msgid "Remove Item"
msgstr "ì•„ì´í…œ ì‚­ì œ"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "í´ëž˜ìФ ì•„ì´í…œ ì‚­ì œ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "삭제"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "테마"
@@ -5373,7 +5863,7 @@ msgstr "Tab 2"
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "타입:"
@@ -5395,12 +5885,27 @@ msgid "Color"
msgstr "색깔"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "ì„ íƒë¶€ë¶„ 지우기"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "타ì¼ë§µ 칠하기"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "복제"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "ì§ì„ í˜•"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "채우기"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5435,10 +5940,6 @@ msgid "Pick Tile"
msgstr "íƒ€ì¼ ì„ íƒ"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "ì„ íƒ"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "0ë„ íšŒì „"
@@ -5502,7 +6003,7 @@ msgstr "ì„ íƒëœ 파ì¼ë“¤ì„ 삭제하시겠습니까?"
msgid "Presets"
msgstr "프리셋.."
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "추가.."
@@ -5557,6 +6058,24 @@ msgid "Make Patch"
msgstr "ëŒ€ìƒ ê²½ë¡œ:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "í…스ì³"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "함수 목ë¡:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "PCK/Zip 내보내기"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5597,10 +6116,6 @@ msgid "The following files failed extraction from package:"
msgstr "다ìŒì˜ 파ì¼ë“¤ì„ 패키지로부터 ì¶”ì¶œí•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "패키지가 성공ì ìœ¼ë¡œ 설치ë˜ì—ˆìŠµë‹ˆë‹¤!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "기존 프로ì íЏ 가져오기"
@@ -5645,6 +6160,22 @@ msgid "Are you sure to open more than one project?"
msgstr "ë‘ê°œ ì´ìƒì˜ 프로ì íŠ¸ë¥¼ 열려는 ê²ƒì´ í™•ì‹¤í•©ë‹ˆê¹Œ?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"ë©”ì¸ ì”¬ì´ ì§€ì •ë˜ì§€ 않았습니다. ì„ íƒí•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n"
+"ë‚˜ì¤‘ì— \"프로ì íЏ 설정\"ì˜ 'Application' 항목ì—서 변경할 수 있습니다."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "ë‘ê°œ ì´ìƒì˜ 프로ì íŠ¸ë¥¼ 실행하려는 ê²ƒì´ í™•ì‹¤í•©ë‹ˆê¹Œ?"
@@ -5660,10 +6191,6 @@ msgid ""
msgstr "%s ì—서 기존 Godot 프로ì íŠ¸ë“¤ì„ ìŠ¤ìº”í•˜ë ¤ê³  합니다. 진행하시겠습니까?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "프로ì íЏ 매니저"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "프로ì íЏ 목ë¡"
@@ -5692,258 +6219,291 @@ msgstr "ì•„ì´í…œ ì‚­ì œ"
msgid "Exit"
msgstr "종료"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "연결하기.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "키 "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "ì¡°ì´ìŠ¤í‹± 버튼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "ì¡°ì´ìŠ¤í‹± ì¶•"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "마우스 버튼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "유효하지 ì•Šì€ ì•¡ì…˜ ('/' ë˜ëŠ” ':' ë¬¸ìž ì‚¬ìš© 불가)."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "'%s' ì•¡ì…˜ì´ ì´ë¯¸ 존재합니다!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "ìž…ë ¥ 앱션 ì´ë²¤íЏ ì´ë¦„ 변경"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ 추가"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "메타+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "쉬프트+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "알트+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "컨트롤+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "키를 눌러주세요.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "마우스 버튼 ì¸ë±ìФ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "왼쪽 버튼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "오른쪽 버튼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "ê°€ìš´ë° ë²„íŠ¼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "휠 위로 버튼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "휠 아래로 버튼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "버튼 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "버튼 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "버튼 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "버튼 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "변경"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "ì¡°ì´ìŠ¤í‹± ì¶• ì¸ë±ìФ:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "ì¶•"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "ì¡°ì´ìŠ¤í‹± 버튼 ì¸ë±ìФ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "입력 액션 추가"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ ì‚­ì œ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "빈 프레임 추가"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "기기"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "버튼"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "왼쪽 버튼."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "오른쪽 버튼."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "ê°€ìš´ë° ë²„íŠ¼."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "휠 위로."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "휠 아래로."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "ì†ì„±:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "설정"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "입력 삭제"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "설정 저장 중 ì—러."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "설정 저장 완료."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "번역 추가"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "번역 삭제"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "리맵핑 경로 추가"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "리소스 리맵핑 추가"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "언어 리소스 리맵핑 변경"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "리소스 리맵핑 제거"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "리소스 리맵핑 옵션 제거"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "프로ì íЏ 설정 (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "ì¼ë°˜"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "ì†ì„±:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "삭제"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "플랫í¼ìœ¼ë¡œ 복사.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "입력 설정"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "ì•¡ì…˜:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "기기:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "ì¸ë±ìФ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "현지화"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "번역"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "번역:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "리맵핑"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "리소스:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "ì§€ì—­ì— ë”°ë¥¸ 리맵핑:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "지역"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "ìžë™ 로드"
@@ -5985,6 +6545,11 @@ msgid "Assign"
msgstr "할당"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "노드 ì„ íƒ"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "새 스í¬ë¦½íЏ"
@@ -5999,6 +6564,11 @@ msgstr "íŒŒì¼ ë¡œë“œ ì—러: 리소스가 아닙니다!"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "가져올 노드들 ì„ íƒ"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "노드 ì„ íƒ"
@@ -6094,6 +6664,11 @@ msgstr "ë©”ì¸ ì”¬ ì¸ìˆ˜:"
msgid "Scene Run Settings"
msgstr "씬 실행 설정"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "확ì¸"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤í•  수 있는 부모가 없습니다."
@@ -6137,10 +6712,6 @@ msgid "Delete Node(s)?"
msgstr "노드를 삭제하시겠습니까?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6153,6 +6724,18 @@ msgid "Save New Scene As.."
msgstr "새 ì”¬ì„ ë‹¤ë¥¸ ì´ë¦„으로 저장.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "ìžì‹ë…¸ë“œ 편집 가능"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Placeholderë¡œì¨ ë¡œë“œ"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "ì¸ìŠ¤í„´ìŠ¤ í기"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "오케바리!"
@@ -6197,6 +6780,14 @@ msgid "Edit Connections"
msgstr "연결 편집"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "ìƒì† 없애기"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "ì—디터ì—서 열기"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "노드 삭제"
@@ -6249,6 +6840,11 @@ msgstr ""
"씬 파ì¼ì„ 노드로 추가합니다. 루트 노드가 ì—†ì„ ê²½ìš°, ìƒì†ì”¬ìœ¼ë¡œ 만들어집니다."
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "í•„í„°"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "ì„ íƒëœ ë…¸ë“œì— ìƒˆë¡œìš´ 스í¬ë¦½íŠ¸ë¥¼ ìƒì„±í•˜ê±°ë‚˜ 기존 스í¬ë¦½íŠ¸ë¥¼ 로드합니다."
@@ -6256,6 +6852,14 @@ msgstr "ì„ íƒëœ ë…¸ë“œì— ìƒˆë¡œìš´ 스í¬ë¦½íŠ¸ë¥¼ ìƒì„±í•˜ê±°ë‚˜ 기존 스
msgid "Clear a script for the selected node."
msgstr "ì„ íƒëœ ë…¸ë“œì˜ ìŠ¤í¬ë¦½íŠ¸ë¥¼ 제거합니다."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "ìƒì†ì„ 없애시겠습니까? (ë˜ëŒë¦¬ê¸° 불가!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "없앴습니다!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Spatial ë³´ì´ê¸° 토글"
@@ -6287,11 +6891,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "디버그 옵션"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "ì¸ìŠ¤í„´ìŠ¤:"
@@ -6330,32 +6929,8 @@ msgid "Scene Tree (Nodes):"
msgstr "씬 트리 (노드):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "ìžì‹ë…¸ë“œ 편집 가능"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Placeholderë¡œì¨ ë¡œë“œ"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "ì¸ìŠ¤í„´ìŠ¤ í기"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "ì—디터ì—서 열기"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "ìƒì† 없애기"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "ìƒì†ì„ 없애시겠습니까? (ë˜ëŒë¦¬ê¸° 불가!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "없앴습니다!"
+msgid "Node Configuration Warning!"
+msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6363,6 +6938,11 @@ msgstr "노드 ì„ íƒ"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "ì´ë¯¸ì§€ 로드 ì—러:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "íŒŒì¼ ì‹œìŠ¤í…œì— ìŠ¤í¬ë¦½íŠ¸ë¥¼ ìƒì„±í•  수 없습니다."
@@ -6371,6 +6951,10 @@ msgid "Error loading script from %s"
msgstr "'%s' 스í¬ë¦½íЏ 로딩 중 ì—러"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "해당 ì—†ìŒ"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "경로가 비어 있ìŒ"
@@ -6414,10 +6998,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "해당 ì—†ìŒ"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6588,6 +7168,10 @@ msgid "Change Light Radius"
msgstr "Light 반경 변경"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Camera 시야 변경"
@@ -6672,6 +7256,137 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "유효하지 ì•Šì€ ì¸ìŠ¤í„´ìŠ¤ Dictionary (서브í´ëž˜ìŠ¤ê°€ 유효하지 않ìŒ)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "ì„ íƒ í•­ëª© ì‚­ì œ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "ì„ íƒí‚¤ 복제"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "ìƒë‹¨ ë·°"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "사용 안함"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "컨트롤: 회전"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "컨트롤: 회전"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "컨트롤: 회전"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "새로 만들기"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "새 프로ì íЏ 만들기"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "타ì¼ë§µ 지우기"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "ì„ íƒì˜ì—­ë§Œ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "ì„ íƒì˜ì—­ë§Œ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "스냅 설정"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "ì¸ìŠ¤í„´ìŠ¤:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "파ì¼"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6703,6 +7418,31 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "ì‹œê·¸ë„ ì¸ìž 편집:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "배열 값 타입 변경"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "ìž…ë ¥ ì´ë¦„ 변경"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "기본값 변경"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "변수 편집:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "함수:"
@@ -6743,26 +7483,6 @@ msgid "Add Signal"
msgstr "ì‹œê·¸ë„ ì¶”ê°€"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "함수 제거"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "변수 제거"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "변수 편집:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "ì‹œê·¸ë„ ì œê±°"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "ì‹œê·¸ë„ íŽ¸ì§‘:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "í‘œí˜„ì‹ ë³€ê²½"
@@ -6771,6 +7491,16 @@ msgid "Add Node"
msgstr "노드 추가"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "유효하지 ì•Šì€ í‚¤ ì‚­ì œ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "그래프 노드 복제"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6811,6 +7541,26 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "타입 변경"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "노드 삭제"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "ì…°ì´ë” 그래프 노드 ì‚­ì œ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "연결할 노드:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "ì¡°ê±´"
@@ -6839,6 +7589,56 @@ msgid "Get"
msgstr "얻기"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "ìž…ë ¥ ì´ë¦„ 변경"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "'..'ì— ìˆ˜í–‰í•  수 ì—†ìŒ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "리소스 í´ë¦½ë³´ë“œê°€ 비었습니다!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "노드 붙여넣기"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "함수 제거"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "변수 편집:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "변수 제거"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "ì‹œê·¸ë„ íŽ¸ì§‘:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "ì‹œê·¸ë„ ì œê±°"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "변수 편집:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "ì‹œê·¸ë„ íŽ¸ì§‘:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "기본 타입:"
@@ -6859,10 +7659,6 @@ msgid "Edit Variable:"
msgstr "변수 편집:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "변경"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "ì„ íƒ í•­ëª© ì‚­ì œ"
@@ -6936,14 +7732,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Run in Browser"
@@ -6968,81 +7756,6 @@ msgstr "타ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:"
msgid "Could not open template for export:\n"
msgstr "í´ë”를 만들 수 없습니다."
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr "ì¸ì¦ì„œ 파ì¼ì„ ì½ì„ 수 없습니다. 경로와 비밀번호가 정확합니까?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "서명 오브ì íЏ ìƒì„±ì¤‘ ì—러."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "패키지 ì„œëª…ì„ ìƒì„±í•˜ëŠ” 중 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"내보내기 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다.\n"
-"내보내기 í…œí”Œë¦¿ì„ ë‹¤ìš´ë¡œë“œí•˜ì—¬ 설치하십시요."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "커스텀 디버그 패키지를 ì°¾ì„ ìˆ˜ 없습니다."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "커스텀 릴리즈 패키지를 ì°¾ì„ ìˆ˜ 없습니다."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "유효하지 ì•Šì€ ê³ ìœ  ì´ë¦„."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "유요하지 ì•Šì€ í”„ë¡œë•트 GUID."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "유요하지 ì•Šì€ í¼ë¸”리셔 GUID."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "유요하지 ì•Šì€ ë°°ê²½ 색ìƒ."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (50x50 ì´ì–´ì•¼ 합니다)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (44x44 ì´ì–´ì•¼ 합니다)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (71x71 ì´ì–´ì•¼ 합니다)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (150x150 ì´ì–´ì•¼ 합니다)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x310 ì´ì–´ì•¼ 합니다)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x150 ì´ì–´ì•¼ 합니다)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-"유효하지 ì•Šì€ ìŠ¤í”Œëž˜ì‰¬ 스í¬ë¦° ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (620x300 ì´ì–´ì•¼ 합니다)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7139,6 +7852,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D는 Path2D ë…¸ë“œì˜ ìžì‹ë…¸ë“œë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘합니다."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "Path ì†ì„±ì€ 유효한 Node2D 노드를 가리켜야 합니다."
@@ -7167,23 +7887,33 @@ msgstr ""
"VisibilityEnable2D는 편집 ì”¬ì˜ ë£¨íŠ¸ì˜ í•˜ìœ„ 노드로 추가할 때 가장 잘 ë™ìž‘합니"
"다."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShapeì€ CollisionObjectì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©ë‹ˆë‹¤. "
-"Area, StaticBody, RigidBody, KinematicBody ë“±ì— ìžì‹ 노드로 추가하여 사용합니"
-"다."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"CollisionShapeì´ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스"
-"를 만드세요!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7199,6 +7929,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "빈 CollisionPolygon는 ì¶©ëŒì— ì˜í–¥ì„ 주지 않습니다."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShapeì€ CollisionObjectì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©ë‹ˆë‹¤. "
+"Area, StaticBody, RigidBody, KinematicBody ë“±ì— ìžì‹ 노드로 추가하여 사용합니"
+"다."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"CollisionShapeì´ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스"
+"를 만드세요!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7218,6 +7966,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr "Path ì†ì„±ì€ 유효한 Spatial 노드를 가리켜야 합니다."
@@ -7237,8 +7992,8 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "실행 모드:"
+msgid "Raw Mode"
+msgstr "팬 모드"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
@@ -7252,22 +8007,6 @@ msgstr "경고!"
msgid "Please Confirm..."
msgstr "확ì¸í•´ì£¼ì„¸ìš”..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "íŒŒì¼ ì—´ê¸°"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "íŒŒì¼ ì—´ê¸°"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "디렉토리 열기"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "디렉토리 ë˜ëŠ” íŒŒì¼ ì—´ê¸°"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "컨트롤+"
@@ -7288,7 +8027,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7306,6 +8045,91 @@ msgstr ""
"합니다. 그렇지 ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 Render target으로 설정하"
"ê³  ë‚´ë¶€ì ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "ì”¬ì„ ë‹«ìœ¼ì‹œê² ìŠµë‹ˆê¹Œ? (저장하지 ì•Šì€ ë³€ê²½ì‚¬í•­ì€ ì‚¬ë¼ì§‘니다.)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "프로ì íЏ 매니저를 실행하시겠습니까?\n"
+#~ "(저장하지 ì•Šì€ ë³€ê²½ì‚¬í•­ì€ ì‚¬ë¼ì§‘니다.)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "ë‹«ê³  ì´ì „ 씬으로 ì´ë™"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "부모로 확장"
+
+#~ msgid "Del"
+#~ msgstr "삭제"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "플랫í¼ìœ¼ë¡œ 복사.."
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr "ì¸ì¦ì„œ 파ì¼ì„ ì½ì„ 수 없습니다. 경로와 비밀번호가 정확합니까?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "서명 오브ì íЏ ìƒì„±ì¤‘ ì—러."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "패키지 ì„œëª…ì„ ìƒì„±í•˜ëŠ” 중 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "내보내기 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다.\n"
+#~ "내보내기 í…œí”Œë¦¿ì„ ë‹¤ìš´ë¡œë“œí•˜ì—¬ 설치하십시요."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "커스텀 디버그 패키지를 ì°¾ì„ ìˆ˜ 없습니다."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "커스텀 릴리즈 패키지를 ì°¾ì„ ìˆ˜ 없습니다."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "유효하지 ì•Šì€ ê³ ìœ  ì´ë¦„."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "유요하지 ì•Šì€ í”„ë¡œë•트 GUID."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "유요하지 ì•Šì€ í¼ë¸”리셔 GUID."
+
+#~ msgid "Invalid background color."
+#~ msgstr "유요하지 ì•Šì€ ë°°ê²½ 색ìƒ."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (50x50 ì´ì–´ì•¼ 합니다)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (44x44 ì´ì–´ì•¼ 합니다)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (71x71 ì´ì–´ì•¼ 합니다)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (150x150 ì´ì–´ì•¼ 합니다)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x310 ì´ì–´ì•¼ 합니다)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "유효하지 ì•Šì€ ë¡œê³  ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (310x150 ì´ì–´ì•¼ 합니다)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "유효하지 ì•Šì€ ìŠ¤í”Œëž˜ì‰¬ 스í¬ë¦° ì´ë¯¸ì§€ í¬ê¸°ìž…니다 (620x300 ì´ì–´ì•¼ 합니다)."
+
+#, fuzzy
+#~ msgid "RAW Mode"
+#~ msgstr "실행 모드:"
+
#~ msgid "Node From Scene"
#~ msgstr "씬으로부터 노드 가져오기"
@@ -7389,9 +8213,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "%d 회 변경ë¨."
-#~ msgid "Please save the scene first."
-#~ msgstr "먼저 ì”¬ì„ ì €ìž¥í•´ì£¼ì„¸ìš”."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "번역가능한 문ìžì—´ 저장"
@@ -7578,9 +8399,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "스í¬ë¦½íЏ 암호 키 (256-비트를 hex í¬ë©§ìœ¼ë¡œ):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "PCK/Zip 내보내기"
-
#~ msgid "Export Project PCK"
#~ msgstr "프로ì íЏ PCK 내보내기"
@@ -7722,8 +8540,5 @@ msgstr ""
#~ msgid "Node Group(s)"
#~ msgstr "노트 그룹"
-#~ msgid "Set region_rect"
-#~ msgstr "구역 설정"
-
#~ msgid "Plugin List:"
#~ msgstr "í”ŒëŸ¬ê·¸ì¸ ëª©ë¡:"
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 3e522bbe49..eb230cc1ac 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -146,7 +146,8 @@ msgstr "GÃ¥ til Neste Steg"
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -379,7 +380,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -390,9 +392,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Lukk"
@@ -465,7 +467,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -526,17 +528,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -552,7 +553,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -564,7 +565,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -716,14 +717,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -828,7 +829,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -908,12 +909,184 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Kontinuerlig"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Kontinuerlig"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Slett Valgte"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Slett Valgte"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Dupliser Utvalg"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Flytt Legg til Nøkkel"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -927,21 +1100,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1044,6 +1240,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1121,6 +1321,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1246,6 +1462,15 @@ msgid "Signals:"
msgstr "Signaler:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Funksjoner:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1262,7 +1487,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1312,6 +1537,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1430,11 +1659,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1446,23 +1675,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1486,9 +1719,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1496,6 +1747,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1528,6 +1795,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1544,6 +1816,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1592,10 +1868,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1876,6 +2148,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1885,26 +2161,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1925,9 +2185,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2028,6 +2296,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2163,10 +2441,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2175,6 +2469,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2251,6 +2557,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2262,9 +2574,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2304,6 +2635,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2490,6 +2829,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3071,6 +3414,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Rediger Variabel:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3382,6 +3730,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Rediger"
@@ -3414,10 +3763,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3526,11 +3871,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3568,6 +3908,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3607,6 +3955,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
msgstr ""
@@ -3616,11 +3976,28 @@ msgid "Remove point"
msgstr "Fjern Funksjon"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Fjern Funksjon"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3645,6 +4022,12 @@ 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 ""
@@ -3934,6 +4317,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4251,6 +4639,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4275,6 +4669,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4327,6 +4725,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4359,6 +4761,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4422,6 +4828,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4468,6 +4878,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Slett Valgte"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4772,92 +5187,100 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Forandre"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Forandre"
+msgid "Display Unshaded"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Down"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4865,6 +5288,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4982,6 +5416,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5110,6 +5545,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5167,6 +5606,15 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Fjern Funksjon"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5234,7 +5682,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5256,11 +5704,24 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Fjern Utvalg"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5296,10 +5757,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5359,7 +5816,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5406,6 +5863,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5442,10 +5915,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5490,6 +5959,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5504,10 +5986,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5535,254 +6013,284 @@ msgstr ""
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Forandre"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Slett Valgte"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5823,6 +6331,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Kutt Noder"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5835,6 +6348,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "Lim inn Noder"
@@ -5931,6 +6448,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5974,10 +6496,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5990,6 +6508,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6032,6 +6562,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6083,6 +6621,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Lim inn Noder"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6090,6 +6633,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6121,10 +6672,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6161,35 +6708,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6201,6 +6728,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6242,10 +6773,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6410,6 +6937,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6491,6 +7022,126 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Slett Valgte"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Dupliser Utvalg"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Avslått"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Forandre Utvalgskurve"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6524,6 +7175,28 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Forandre Signal Argumenter:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Rediger Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funksjoner:"
@@ -6564,31 +7237,19 @@ msgid "Add Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Fjern Funksjon"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
+msgid "Change Expression"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
+msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
+msgid "Remove VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
+msgid "Duplicate VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6634,6 +7295,24 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Kopier Noder"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Kutt Noder"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Betingelse"
@@ -6662,6 +7341,54 @@ msgid "Get"
msgstr "FÃ¥"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Anim Forandre Verdi"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Lim inn Noder"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Fjern Funksjon"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Rediger Variabel:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Forandre Signal Argumenter:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6682,10 +7409,6 @@ msgid "Edit Variable:"
msgstr "Rediger Variabel:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Forandre"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Slett Valgte"
@@ -6760,14 +7483,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6788,77 +7503,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6937,6 +7581,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6959,17 +7610,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -6983,6 +7649,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -6998,6 +7677,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7014,7 +7700,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7029,22 +7715,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7063,7 +7733,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 212397fd88..0b8a154735 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -146,7 +146,8 @@ msgstr "Ga Naar Volgende Stap"
msgid "Goto Prev Step"
msgstr "Ga Naar Vorige Stap"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Lineair"
@@ -381,7 +382,8 @@ msgstr "Bestand:"
msgid "Description:"
msgstr "Omschrijving:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -392,9 +394,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Sluiten"
@@ -470,7 +472,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -534,17 +536,16 @@ msgid "All"
msgstr "Alle"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Zoeken:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Zoeken"
@@ -560,7 +561,7 @@ msgstr "Zoeken"
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -572,7 +573,7 @@ msgstr "Sorteren:"
msgid "Reverse"
msgstr "Omkeren"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Categorie:"
@@ -728,14 +729,14 @@ msgstr "Verbind Aan Node:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Toevoegen"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Verwijderen"
@@ -845,7 +846,7 @@ msgid "Resource"
msgstr "Resource"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Pad"
@@ -930,12 +931,190 @@ msgstr "Wees Resource Verkenner"
msgid "Delete selected files?"
msgstr "Verwijder geselecteerde bestanden?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Verwijder"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Constanten:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Constanten:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Aan Het Herimporteren"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Open Audio Bus Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Open Audio Bus Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Open Audio Bus Layout"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Geselecteerde Verwijderen"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Geselecteerde Verwijderen"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Bus Toevoegen"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Optimaliseer Animatie"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Dupliceer Selectie"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Open Audio Bus Layout"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "Sla Audio Bus Layout Op Als.."
@@ -949,23 +1128,49 @@ msgid "Open Audio Bus Layout"
msgstr "Open Audio Bus Layout"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Bus Toevoegen"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Sla Audio Bus Layout Op Als.."
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Laden"
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Opslaan Als"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Sla Audio Bus Layout Op Als.."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Standaard"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Ongeldige naam."
@@ -1069,6 +1274,10 @@ msgid "Updating scene.."
msgstr "Scene aan het updaten.."
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Kies een Map"
@@ -1148,6 +1357,22 @@ msgstr "Alle Bestanden (*)"
msgid "Open"
msgstr "Openen"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Open een Bestand"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Open Bestand(en)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Open een Map"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Open een Bestand of Map"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1275,6 +1500,15 @@ msgid "Signals:"
msgstr "Signalen:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Functies:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constanten:"
@@ -1291,7 +1525,8 @@ msgid "Search Text"
msgstr "Zoek Tekst"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Uitvoer:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1342,6 +1577,10 @@ msgid "Creating Thumbnail"
msgstr "Thumbnail Aan Het Maken"
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1462,11 +1701,12 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
+#, fuzzy
+msgid "Save & Close"
+msgstr "Sla een Bestand Op"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1478,23 +1718,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1518,9 +1762,28 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Sla een Bestand Op"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1528,6 +1791,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1560,6 +1839,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Standaard"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1576,6 +1860,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1624,10 +1912,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1908,6 +2192,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1917,26 +2205,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1957,9 +2229,18 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Geërfd door:"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2064,6 +2345,16 @@ msgstr "Aan Het Herimporteren"
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2202,10 +2493,27 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Resource"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2214,6 +2522,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Error bij het opslaan van TileSet!"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Error bij het laden van:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2290,6 +2612,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2301,9 +2629,29 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Scene aan het Updaten"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2343,6 +2691,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Bestand:"
@@ -2532,6 +2888,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3114,6 +3474,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Bestand:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3425,6 +3790,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Bewerken"
@@ -3457,10 +3823,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3569,11 +3931,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Oké"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3611,6 +3968,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3650,6 +4015,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Signaal Toevoegen"
@@ -3660,11 +4037,29 @@ msgid "Remove point"
msgstr "Verwijder Signaal"
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "Lineair"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Verwijder Signaal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3689,6 +4084,12 @@ 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 ""
@@ -3979,6 +4380,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4296,6 +4702,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4320,6 +4732,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4372,6 +4788,11 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Toggle Favoriet"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4404,6 +4825,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Afhankelijkheden Editor"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4468,6 +4894,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4514,6 +4944,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Verwijder"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4819,37 +5254,6 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Ga Verder"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Achterwaarts"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Scrollwiel Omlaag."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -4912,10 +5316,62 @@ msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Inschakelen"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Ga Verder"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Achterwaarts"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Scrollwiel Omlaag."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Preview:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5033,6 +5489,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5161,6 +5618,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5218,6 +5679,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Verwijder Selectie"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Verwijderen"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5285,7 +5756,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5307,11 +5778,25 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Schaal Selectie"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Lineair"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5347,10 +5832,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5413,7 +5894,7 @@ msgstr "Verwijder geselecteerde bestanden?"
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5461,6 +5942,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Methode Lijst:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5497,10 +5995,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5545,6 +6039,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5559,10 +6066,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5591,254 +6094,287 @@ msgstr "Verwijder Selectie"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Verbind.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Wijzig"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "As"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Apparaat"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Knop"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Linker Knop."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Rechter Knop."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Middelste Knop."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Scrollwiel Omhoog."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Scrollwiel Omlaag."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Getter Property Toevoegen"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Aan Het Opzetten.."
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Verwijder"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5879,6 +6415,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Alles Selecteren"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5891,6 +6432,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "Plak Nodes"
@@ -5987,6 +6532,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Oké"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6030,10 +6580,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6046,6 +6592,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6089,6 +6647,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6140,6 +6706,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filter:"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6147,6 +6718,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6178,10 +6757,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6219,31 +6794,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6252,6 +6803,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Error bij het laden van lettertype."
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Map kon niet gemaakt worden."
@@ -6260,6 +6816,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6302,10 +6862,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6474,6 +7030,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6556,6 +7116,129 @@ msgstr "Ongeldige dictionary formaat van instantie (ongeldige script op @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Ongeldige dictionary van instantie (ongeldige subklassen)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Geselecteerde Verwijderen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Dupliceer Selectie"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Uitgeschakeld"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Nieuwe Maken"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Alleen Selectie"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Alleen Selectie"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Bestand:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6595,6 +7278,30 @@ msgid "Stack overflow with stack depth: "
msgstr "Stack overloop met stack diepte: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Signaal Argumenten Bewerken:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Wijzig Array Waarde Type"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Wijzig Array Waarde"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Variabele Bewerken:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Functies:"
@@ -6635,26 +7342,6 @@ msgid "Add Signal"
msgstr "Signaal Toevoegen"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Verwijder Functie"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Verwijder Variabele"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Variabele Bewerken:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Verwijder Signaal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Signaal Bewerken:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Verander Expressie"
@@ -6663,6 +7350,15 @@ msgid "Add Node"
msgstr "Node Toevoegen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Verwijder ongeldige keys"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Houdt Meta ingedrukt om een Getter te plaatsen. Houdt Shift ingedrukt om een "
@@ -6709,6 +7405,26 @@ msgid "Add Setter Property"
msgstr "Setter Property Toevoegen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Wijzig Array Waarde Type"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Kopiëer Nodes"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Verwijder Variabele"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Verbind Aan Node:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Conditie"
@@ -6737,6 +7453,54 @@ msgid "Get"
msgstr "Krijg"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Wijzig Array Waarde"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Plak Nodes"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Verwijder Functie"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Variabele Bewerken:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Verwijder Variabele"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Signaal Bewerken:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Verwijder Signaal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Variabele Bewerken:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Signaal Bewerken:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Basis Type:"
@@ -6757,10 +7521,6 @@ msgid "Edit Variable:"
msgstr "Variabele Bewerken:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Wijzig"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Geselecteerde Verwijderen"
@@ -6837,14 +7597,6 @@ msgstr ""
"Ongeldige return waarde van _step(), moet een geheel getal (seq out) of "
"string (error) zijn."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "reeds ingedrukt"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "reeds losgelaten"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6868,89 +7620,6 @@ msgstr "Map kon niet gemaakt worden."
msgid "Could not open template for export:\n"
msgstr "Map kon niet gemaakt worden."
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"Kon het certificaat bestand niet lezen. Zijn het pad en wachtwoord beide "
-"correct?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Error bij het maken van het signatuur object."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Error bij het maken van het pakket signatuur."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Geen export templates gevonden.\n"
-"Download en installeer export templates."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Custom debug pakket niet gevonden."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Custom release pakket niet gevonden."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Ongeldige unieke naam."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "Ongeldig product GUID."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "Ongeldige uitgever GUID."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Ongeldige achtergrondkleur."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Ongeldige afmetingen voor Store Logo afbeelding (moet 50×50 zijn)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-"Ongeldige afmetingen van vierkante 44×44 logo afbeelding (moet 44×44 zijn)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-"Ongeldige afmetingen van vierkante 71×71 logo afbeelding (moet 71×71 zijn)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-"Ongeldige afmetingen van vierkante 150×150 logo afbeelding (moet 150×150 "
-"zijn)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-"Ongeldige afmetingen van vierkante 310×310 logo afbeelding (moet 310×310 "
-"zijn)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-"Ongeldige afmetingen van brede 310×150 logo afbeelding (moet 310×150 zijn)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "Ongeldige afmetingen van splash screen afbeelding (moet 620×300 zijn)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7056,6 +7725,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7085,23 +7761,33 @@ msgstr ""
"VisibilityEnable2D werkt het beste wanneer het gebruikt wordt met de "
"aangepaste scene root direct als ouder."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-"CollisionShape dient alleen om een bots vorm te bieden aan een node die "
-"afstamt van de CollisionObject node. Gebruik het alsjeblieft alleen als kind "
-"van Area, StaticBody, RigidBody, KinematicBody etc. om ze een vorm te geven."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Een vorm moet gegeven worden om CollisionShape te laten werken. Maak "
-"alsjeblieft een vorm resource voor deze!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7117,6 +7803,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Een lege CollisionPolygon heeft geen effect op botsingen."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape dient alleen om een bots vorm te bieden aan een node die "
+"afstamt van de CollisionObject node. Gebruik het alsjeblieft alleen als kind "
+"van Area, StaticBody, RigidBody, KinematicBody etc. om ze een vorm te geven."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Een vorm moet gegeven worden om CollisionShape te laten werken. Maak "
+"alsjeblieft een vorm resource voor deze!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7136,6 +7840,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7157,7 +7868,7 @@ msgstr ""
"eigenschap om AnimatedSprite3D frames te laten tonen."
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7172,22 +7883,6 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Bevestig Alsjeblieft..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Open een Bestand"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Open Bestand(en)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Open een Map"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Open een Bestand of Map"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7209,7 +7904,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7227,6 +7922,83 @@ msgstr ""
"inhoud direct op het scherm te weergeven. Anders, maak er een RenderTarget "
"van en wijs zijn interne texture toe aan een node om te tonen."
+#~ msgid "just pressed"
+#~ msgstr "reeds ingedrukt"
+
+#~ msgid "just released"
+#~ msgstr "reeds losgelaten"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Kon het certificaat bestand niet lezen. Zijn het pad en wachtwoord beide "
+#~ "correct?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Error bij het maken van het signatuur object."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Error bij het maken van het pakket signatuur."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Geen export templates gevonden.\n"
+#~ "Download en installeer export templates."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Custom debug pakket niet gevonden."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "Custom release pakket niet gevonden."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Ongeldige unieke naam."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "Ongeldig product GUID."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Ongeldige uitgever GUID."
+
+#~ msgid "Invalid background color."
+#~ msgstr "Ongeldige achtergrondkleur."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "Ongeldige afmetingen voor Store Logo afbeelding (moet 50×50 zijn)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr ""
+#~ "Ongeldige afmetingen van vierkante 44×44 logo afbeelding (moet 44×44 "
+#~ "zijn)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr ""
+#~ "Ongeldige afmetingen van vierkante 71×71 logo afbeelding (moet 71×71 "
+#~ "zijn)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "Ongeldige afmetingen van vierkante 150×150 logo afbeelding (moet 150×150 "
+#~ "zijn)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "Ongeldige afmetingen van vierkante 310×310 logo afbeelding (moet 310×310 "
+#~ "zijn)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr ""
+#~ "Ongeldige afmetingen van brede 310×150 logo afbeelding (moet 310×150 "
+#~ "zijn)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "Ongeldige afmetingen van splash screen afbeelding (moet 620×300 zijn)."
+
#~ msgid "Node From Scene"
#~ msgstr "Node Uit Scene"
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index 79dc614836..d9234269fd 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -4,7 +4,7 @@
#
# 8-bit Pixel <dawdejw@gmail.com>, 2016.
# Adrian Węcławski <weclawskiadrian@gmail.com>, 2016.
-# Daniel Lewan <vision360.daniel@gmail.com>, 2016.
+# Daniel Lewan <vision360.daniel@gmail.com>, 2016-2017.
# Kajetan Kuszczyński <kajetanek99@gmail.com>, 2016.
# Kamil Lewan <lewan.kamil@gmail.com>, 2016.
# Karol Walasek <coreconviction@gmail.com>, 2016.
@@ -16,7 +16,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-06-23 19:32+0000\n"
+"PO-Revision-Date: 2017-06-26 08:24+0000\n"
"Last-Translator: Daniel Lewan <vision360.daniel@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
@@ -162,7 +162,8 @@ msgstr "Przejdź do następnego kroku"
msgid "Goto Prev Step"
msgstr "Przejdź do poprzedniego kroku"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Liniowe"
@@ -401,7 +402,8 @@ msgstr "Plik"
msgid "Description:"
msgstr "Opis:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Instaluj"
@@ -412,9 +414,9 @@ msgstr "Instaluj"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Zamknij"
@@ -490,7 +492,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -556,17 +558,16 @@ msgid "All"
msgstr "Wszystko"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Szukaj:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Szukaj"
@@ -582,7 +583,7 @@ msgstr "Szukaj"
msgid "Import"
msgstr "Importuj"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Wtyczki"
@@ -594,7 +595,7 @@ msgstr "Sortuj:"
msgid "Reverse"
msgstr "Odwróć"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Kategoria:"
@@ -751,14 +752,14 @@ msgstr "Podłącz do węzła:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Dodaj"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Usuń"
@@ -870,7 +871,7 @@ msgid "Resource"
msgstr "Zasoby"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Ścieżka"
@@ -952,12 +953,195 @@ msgstr "Eksplorator osieroconych zasobów"
msgid "Delete selected files?"
msgstr "Usunąć zaznaczone pliki?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Usuń"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Podziękowania od społeczności Godot'a!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Dzięki!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Menedżer projektów"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Menedżer projektów"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Stałe:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Stałe:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Nieskompresowany"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Pakiet zastał zainstalowany poprawnie!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Pakiet zastał zainstalowany poprawnie!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Dodaj pusty"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Otwórz układ magistrali audio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Otwórz układ magistrali audio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Otwórz układ magistrali audio"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Usuń zaznaczone"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opcje debugowania"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Duplikuj"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Usuń zaznaczone"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Dodaj magistralÄ™"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Usuń układ"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplikuj animacje"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Otwórz układ magistrali audio"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "Zapisz układ magistrali audio jako..."
@@ -971,23 +1155,53 @@ msgid "Open Audio Bus Layout"
msgstr "Otwórz układ magistrali audio"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Błędne rozszerzenie pliku.\n"
+"Proszę użyć .fnt."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Dodaj magistralÄ™"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Utwórz nowy zasób"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Wczytaj"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Wczytaj istniejący zasób i edytuj go."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Zapisz jako"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Zapisz układ magistrali audio jako..."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Domyślny"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Niewłaściwa nazwa."
@@ -1090,6 +1304,11 @@ msgid "Updating scene.."
msgstr "Aktualizacja sceny .."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Proszę najpierw zapisać scenę."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Wybierz katalog"
@@ -1167,6 +1386,22 @@ msgstr "Wszystkie pliki (*)"
msgid "Open"
msgstr "Otwórz"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Otwórz plik"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Otwórz plik(i)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Otwórz katalog"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Otwórz plik lub katalog"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1293,6 +1528,15 @@ msgid "Signals:"
msgstr "Sygnały:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animacje"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Stałe:"
@@ -1310,7 +1554,8 @@ msgid "Search Text"
msgstr "Wyszukaj w tekście"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Konsola:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1360,6 +1605,11 @@ msgid "Creating Thumbnail"
msgstr "Tworzenie Miniatury"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Ta operacja nie może zostać wykonana bez sceny."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1490,26 +1740,34 @@ msgid "Quick Open Script.."
msgstr "Szybkie otwieranie skryptu.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Tak"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Zapisz plik"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Zamknąć scenę? (Niezapisane zmiany zostaną utracone)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Zapisz scenÄ™ jako.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Węzeł"
+msgstr "Nie"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Tak"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Ta scena nie została zapisana. Zapisać przed uruchomieniem?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Ta operacja nie może zostać wykonana bez sceny."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Eksportuj bibliotekę Meshów"
@@ -1519,12 +1777,9 @@ msgid "Export Tile Set"
msgstr "Eksportuj TileSet"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Wyjdź"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Zamknąć edytor?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Ta operacja nie może zostać wykonana bez sceny."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1547,18 +1802,52 @@ msgid "Quick Run Scene.."
msgstr "Szybkie uruchomienie sceny.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Wyjdź"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Zamknąć edytor?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Menedżer projektów"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Zapisz plik"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Otworzyć Menedżer Projektów?\n"
-"(Niezapisane zmiany zostanÄ… utracone)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Wybierz główną scenę"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
@@ -1599,6 +1888,11 @@ msgstr "Zapisz układ"
msgid "Delete Layout"
msgstr "Usuń układ"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Domyślny"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Przełącz Zakładkę Sceny"
@@ -1615,6 +1909,11 @@ msgstr "Pozostało %d plików lub folderów"
msgid "Distraction Free Mode"
msgstr "Tryb bez rozproszeń"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Tryb bez rozproszeń"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Scena"
@@ -1664,10 +1963,6 @@ msgstr "Zapisz wszystkie sceny"
msgid "Close Scene"
msgstr "Zamknij scenÄ™"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Zamknij i przejdź do poprzedniej sceny"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Ostatnio otwierane"
@@ -1706,7 +2001,7 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
msgid "Project"
-msgstr "Nowy projekt"
+msgstr "Projekt"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1817,9 +2112,8 @@ msgstr ""
"użyciem sieciowych systemów plików."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "Edycja"
+msgstr "Edytor"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1848,9 +2142,8 @@ msgid "Classes"
msgstr "Klasy"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Zamknij pliki pomocy"
+msgstr "Dokumentacja online"
#: editor/editor_node.cpp
msgid "Q&A"
@@ -1969,6 +2262,10 @@ msgstr "Węzeł"
msgid "Output"
msgstr "Konsola"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Importuj ponownie"
@@ -1978,26 +2275,10 @@ msgid "Update"
msgstr "Odśwież"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Podziękowania od społeczności Godot'a!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Dzięki!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Zaimportuj Szablony z pliku ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Wyeksportuj projekt"
@@ -2018,9 +2299,18 @@ msgid "Open & Run a Script"
msgstr "Otwórz i Uruchom Skrypt"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Nowa dziedziczÄ…ca scena.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Wczytaj błędy"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Zaznacz"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2128,6 +2418,16 @@ msgstr "Prze-Importowanie"
msgid "Re-Import Changed Resources"
msgstr "Zaimportuj ponownie zmienione zasoby"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Wpisz swojÄ… logikÄ™ w metodzie _run()."
@@ -2277,10 +2577,28 @@ msgstr "Nie można przejść do '"
#: editor/filesystem_dock.cpp
#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Zapisz i importuj ponownie"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Źródło:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
msgid "Same source and destination files, doing nothing."
msgstr "Pliki źródłowe i docelowe są te same, nie podjęto żadnej akcji."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
"Ścieżki źródłowa i docelowa są takie same, żadna akcja nie została wykonana."
@@ -2291,6 +2609,20 @@ msgid "Can't move directories to within themselves."
msgstr "Nie możesz przenieść danego katalogu do jego wnętrza."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Błąd wczytywania obrazu:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Błąd importowania:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "Nie można operować na '..'"
@@ -2367,6 +2699,12 @@ 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."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "PrzenieÅ›"
@@ -2378,10 +2716,31 @@ msgstr "Dodaj do Grupy"
msgid "Remove from Group"
msgstr "Usuń z Grupy"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Powierzchnia %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Importowanie Sceny.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Zaimportuj Scene 3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2422,6 +2781,14 @@ msgid "Saving.."
msgstr "Zapisywanie.."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Plik"
@@ -2613,6 +2980,10 @@ msgstr "Źródło Mesh:"
msgid "Mesh"
msgstr "Siatka"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Powierzchnia %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Brak sampli do importu!"
@@ -3201,6 +3572,11 @@ msgid "New name:"
msgstr "Nowa nazwa:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Edytuj filtry węzłów"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Skala:"
@@ -3517,6 +3893,7 @@ msgstr "Odblokuj selekcję węzłów podrzędnych."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Edycja"
@@ -3549,10 +3926,6 @@ msgid "Use Pixel Snap"
msgstr "Użyj krokowania na poziomie pikseli"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Szkielet.."
@@ -3665,11 +4038,6 @@ msgstr "Ta operacja wymaga pojedynczego wybranego węzła."
msgid "Change default type"
msgstr "Zmień Wartość Domyślną"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3709,6 +4077,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr "Utwórz nowy wielokąt."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3749,6 +4125,21 @@ msgstr "Aktualizuj ze sceny"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "Zamknij krzywÄ…"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Zamknij krzywÄ…"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Wczytaj Zasób"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "Dodaj Wejście"
@@ -3759,13 +4150,31 @@ msgstr "Usuń punkt ścieżki"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Liniowe"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Widok z prawej"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "Wczytaj Zasób"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "Zamknij krzywÄ…"
+msgid "Remove Curve Point"
+msgstr "Usuń punkt ścieżki"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3789,6 +4198,12 @@ 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 ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Stwórz Occluder Polygon"
@@ -4083,6 +4498,12 @@ msgid "Load Emission Mask"
msgstr "Wczytaj maskÄ™ emisji"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Wierzchołek"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "Wygeneruj chmurę punktów:"
@@ -4410,6 +4831,12 @@ msgid "Clear Recent Files"
msgstr "Wyczyść Kości"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "Błąd podczas zapisywania motywu"
@@ -4434,6 +4861,10 @@ msgid "Save Theme As.."
msgstr "Zapisz motyw jako.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Następny skrypt"
@@ -4487,6 +4918,11 @@ msgid "Close All"
msgstr "Zamknij"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Ustaw jako ulubione"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4522,6 +4958,11 @@ msgid "Keep Debugger Open"
msgstr "Pozostaw Debugger otwarty"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Otwórz w edytorze"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Okno"
@@ -4591,6 +5032,10 @@ msgstr ""
"należą"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
#, fuzzy
msgid "Pick Color"
msgstr "Kolor"
@@ -4639,6 +5084,11 @@ msgid "Move Down"
msgstr "Przesuń w dół"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Usuń Punkt"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Wcięcie w lewo"
@@ -4945,37 +5395,6 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Dalej"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Wstecz"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Kółko myszy w dół."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -5043,10 +5462,63 @@ msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Włącz"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Dalej"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Wstecz"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Kółko myszy w dół."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "PodglÄ…d"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Okno dialogowe XForm"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Tryb zaznaczenia"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Tryb Przesuwania (W)"
@@ -5167,6 +5639,7 @@ msgid "View Grid"
msgstr "Pokaż siatkę"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Ustawienia"
@@ -5295,6 +5768,11 @@ msgid "StyleBox Preview:"
msgstr "PodglÄ…d StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Edytor regionu tekstury"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Tryb przyciÄ…gania:"
@@ -5353,6 +5831,16 @@ msgstr "Usuń element"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Remove All Items"
+msgstr "Usuń klasę elementów"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Usuń"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "Theme"
msgstr "Zapisz motyw"
@@ -5421,7 +5909,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Typ:"
@@ -5443,12 +5931,27 @@ msgid "Color"
msgstr "Kolor"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Usuń zaznaczenie"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Maluj TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Duplikuj"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Liniowe"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Wiadro"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5483,10 +5986,6 @@ msgid "Pick Tile"
msgstr "Wybierz tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Zaznacz"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Obróć o 0 stopni"
@@ -5549,7 +6048,7 @@ msgstr "Usunąć zaznaczone pliki?"
msgid "Presets"
msgstr "Profile eksportu"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Dodaj.."
@@ -5605,6 +6104,24 @@ msgid "Make Patch"
msgstr "Ścieżka docelowa:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Tekstura"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Lista metod:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "Eksport PCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Brakuje eksportu szablonów dla tej platformy:"
@@ -5645,10 +6162,6 @@ msgid "The following files failed extraction from package:"
msgstr "Nie powiodło się wypakowanie z pakietu następujących plików:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Pakiet zastał zainstalowany poprawnie!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importuj istniejÄ…cy projekt"
@@ -5693,6 +6206,22 @@ msgid "Are you sure to open more than one project?"
msgstr "Czy jesteś pewny że chcesz otworzyć więcej niż jeden projekt?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Nie zdefiniowano głównej sceny, chcesz jakąś wybrać?\n"
+"Można to później zmienić w \"Ustawienia projektu\" w kategorii \"aplikacja\"."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "Czy jesteś pewny że chcesz uruchomić więcej niż jeden projekt?"
@@ -5709,10 +6238,6 @@ msgstr ""
"Potwierdzasz?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Menedżer projektów"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista projektów"
@@ -5735,264 +6260,297 @@ msgstr "Nowy projekt"
#: editor/project_manager.cpp
#, fuzzy
msgid "Templates"
-msgstr "Usuń element"
+msgstr "Szablony"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "Wyjdź"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Połącz.."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Klawisz "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Przycisk joysticka"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "OÅ› joysticka"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Przycisk myszy"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "Akcja %s już istnieje!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Zmień nazwę zdarzenia akcji wejścia"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Dodaj zdarzenie akcji wejścia"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Naciśnij klawisz.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Indeks przycisku myszy:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Lewy guzik"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Prawy guzik"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Åšrodkowy guzik"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Kółko myszy w górę"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Kółko myszy w dół"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Przycisk 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Przycisk 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Przycisk 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Przycisk 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Zmień"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "OÅ› joysticka"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "OÅ›"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "Przycisk joysticka"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Dodawanie akcji Wejścia"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Wyczyść zdarzenie akcji wejścia"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "Dodaj pusty"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "UrzÄ…dzenie"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Przycisk"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Lewy przycisk."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Prawy przycisk."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Åšrodkowy przycisk."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Kółko myszy w górę."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Kółko myszy w dół."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Właściwość:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Ustawienia"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Usuń"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Błąd zapisu ustawień."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Ustawienia zapisane pomyślnie."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Dodaj tłumaczenie"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Usuń tłumaczenie"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Dodaj zmapowaną ścieżkę"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Zmień język mapowania zasobu"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Usuń mapowanie zasobu"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Usuń opcję mapowania zasobu"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Ustawienia projektu (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "Ogólny"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Właściwość:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Usuń"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Kopiuj na platformÄ™..."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "Mapowanie wejścia"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Akcja:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "UrzÄ…dzenie:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Indeks:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Lokalizacja"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Tłumaczenia"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Tłumaczenia:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Mapowanie zasobów"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Zasoby:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Mapowanie w zależności od lokalizacji:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Lokalizacja"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "AutoLoad"
msgstr "Autoładowanie"
@@ -6034,6 +6592,11 @@ msgid "Assign"
msgstr "Przypisz"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Wybierz węzeł"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Nowy skrypt"
@@ -6048,6 +6611,11 @@ msgstr "Błąd wczytania pliku: Brak zasobu!"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Wybierz węzły do importu"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "Wybierz węzeł"
@@ -6147,6 +6715,11 @@ msgstr "Argumenty głównej sceny:"
msgid "Scene Run Settings"
msgstr "Ustawienia uruchomienia sceny"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "Brak elementu nadrzędnego do stworzenia instancji sceny."
@@ -6191,10 +6764,6 @@ msgid "Delete Node(s)?"
msgstr "Usuń węzeł(y)?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Ta operacja nie może zostać wykonana bez sceny."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6207,6 +6776,19 @@ msgid "Save New Scene As.."
msgstr "Zapisz nowÄ… scenÄ™ jako ..."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Edytowalne dzieci"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Wczytaj jako zastępczy"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Discard Instancing"
+msgstr "Odrzuć instancjonowanie"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "To ma sens!"
@@ -6253,6 +6835,14 @@ msgid "Edit Connections"
msgstr "Edytuj Połączenia"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Wyczyść dziedziczenie"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Otwórz w edytorze"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Usuń węzeł (węzły)"
@@ -6309,6 +6899,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtry"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Attach a new or existing script for the selected node."
msgstr "Utwórz nowy skrypt dla zaznaczonego węzła."
@@ -6317,6 +6912,14 @@ msgstr "Utwórz nowy skrypt dla zaznaczonego węzła."
msgid "Clear a script for the selected node."
msgstr "Utwórz nowy skrypt dla zaznaczonego węzła."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "Wyczyścić dziedziczenie? (Nie można cofnąć!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Czysto!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Przełącz widoczność Spatial"
@@ -6348,11 +6951,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Opcje debugowania"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instancja:"
@@ -6391,33 +6989,8 @@ msgid "Scene Tree (Nodes):"
msgstr "Drzewo sceny (węzły):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Edytowalne dzieci"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Wczytaj jako zastępczy"
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Discard Instancing"
-msgstr "Odrzuć instancjonowanie"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Otwórz w edytorze"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Wyczyść dziedziczenie"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "Wyczyścić dziedziczenie? (Nie można cofnąć!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Czysto!"
+msgid "Node Configuration Warning!"
+msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6425,6 +6998,11 @@ msgstr "Wybierz węzeł"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Błąd wczytywania obrazu:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Nie można było utworzyć skryptu w systemie plików."
@@ -6434,6 +7012,10 @@ msgid "Error loading script from %s"
msgstr "Błąd przy ładowaniu sceny z %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/A"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Ścieżka jest pusta"
@@ -6477,10 +7059,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/A"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6507,7 +7085,7 @@ msgstr "Nazwa klasy:"
#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Template"
-msgstr "Usuń element"
+msgstr "Szablon"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -6652,6 +7230,10 @@ msgid "Change Light Radius"
msgstr "Zmień promień światła"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Zmień Pole Widzenia Kamery"
@@ -6736,6 +7318,137 @@ msgstr "Niepoprawna instancja formatu słownika (niepoprawny skrypt w @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Niepoprawna instancja słownika (niepoprawne podklasy)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Usuń zaznaczone"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplikuj zaznaczone"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Widok z góry"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Wyłączone"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Obróć"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Obróć"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Obróć"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Utwórz nowy"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Utwórz nowy projekt"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Wyczyść TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Tylko zaznaczenie"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Tylko zaznaczenie"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Ustawienia przyciÄ…gania"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Instancja:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Plik"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6769,6 +7482,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Przepełnienie stosu z głębokością stosu: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Edytuj argumenty sygnału:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Zmień Typ Tablicy"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Zmień nazwę animacji:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Zmień Wartość Domyślną"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Edytuj zmiennÄ…:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funkcje:"
@@ -6809,26 +7547,6 @@ msgid "Add Signal"
msgstr "Dodaj sygnał"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Usuń funkcję"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Usuń zmienną"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Edytuj zmiennÄ…:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Usuń sygnał"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Edytuj sygnał:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "Zmień typ"
@@ -6838,6 +7556,16 @@ msgid "Add Node"
msgstr "Dodaj węzeł"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Usuń wadliwe klatki kluczowe"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Duplikuj węzeł(y)"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6880,6 +7608,26 @@ msgstr ""
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Base Type"
+msgstr "Zmień typ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Usuń węzeł(y)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Usuń węzeł Shader Graph"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Podłącz do węzła:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Condition"
msgstr "Skopiuj animacje"
@@ -6911,6 +7659,56 @@ msgid "Get"
msgstr "Ustaw"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Zmień Wartość Domyślną"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "Nie można operować na '..'"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Schowka zasobów jest pusty!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Wklej PozÄ™"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Usuń funkcję"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Edytuj zmiennÄ…:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Usuń zmienną"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Edytuj sygnał:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Usuń sygnał"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Edytuj zmiennÄ…:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Edytuj sygnał:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Typ bazowy:"
@@ -6931,10 +7729,6 @@ msgid "Edit Variable:"
msgstr "Edytuj zmiennÄ…:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Zmień"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Usuń zaznaczone"
@@ -7013,14 +7807,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Run in Browser"
@@ -7045,82 +7831,6 @@ msgstr "Nie można utworzyć katalogu."
msgid "Could not open template for export:\n"
msgstr "Nie można utworzyć katalogu."
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Error creating the signature object."
-msgstr "Błąd przy eksporcie projektu!"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "Niewłaściwa nazwa."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "Niepoprawny rozmiar fonta."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid publisher GUID."
-msgstr "Niepoprawna ścieżka bazowa"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Kolor tła nieprawidłowy."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-"Nieprawidłowe wymiary obrazka ekranu powitalnego (powinno być 620x300)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7220,6 +7930,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D zadziała tylko wtedy, gdy będzie dzieckiem węzeł Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "Żeby zadziałało, pole Path musi wskazywać na istniejący węzeł Node2D."
@@ -7249,23 +7966,33 @@ msgstr ""
"VisibilityEnable2D działa najlepiej, gdy jest bezpośrednio pod korzeniem "
"aktualnie edytowanej sceny."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape służy jedynie do określenia kształtu kolizji dla jednego z "
-"węzłów dziedziczących z CollisionObject. Używaj go tylko jako dziecko węzłów "
-"typu Area, StaticBody, RigidBody, KinematicBody itd."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Kształt musi być określony dla CollisionShape, aby spełniał swoje zadanie. "
-"Utwórz zasób typu CollisionShape w odpowiednim polu obiektu!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7281,6 +8008,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Pusty CollisionPolygon nie wpływa na efekty kolizji."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape służy jedynie do określenia kształtu kolizji dla jednego z "
+"węzłów dziedziczących z CollisionObject. Używaj go tylko jako dziecko węzłów "
+"typu Area, StaticBody, RigidBody, KinematicBody itd."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Kształt musi być określony dla CollisionShape, aby spełniał swoje zadanie. "
+"Utwórz zasób typu CollisionShape w odpowiednim polu obiektu!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7300,6 +8045,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7323,8 +8075,8 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Tryb uruchamiania:"
+msgid "Raw Mode"
+msgstr "Tryb przesuwania"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
@@ -7338,22 +8090,6 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Proszę potwierdzić..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Otwórz plik"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Otwórz plik(i)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Otwórz katalog"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Otwórz plik lub katalog"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7379,7 +8115,7 @@ msgstr ""
"Użyj kontenera jako dziecko (VBox,HBox,etc), lub węzła klasy Control i ustaw "
"ręcznie minimalny rozmiar."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7397,6 +8133,52 @@ msgstr ""
"otrzymał jakiś rozmiar. W przeciwnym wypadku ustawi opcję RenderTarget i "
"przyporządkuj jego teksturę dla któregoś węzła."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Zamknąć scenę? (Niezapisane zmiany zostaną utracone)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Otworzyć Menedżer Projektów?\n"
+#~ "(Niezapisane zmiany zostanÄ… utracone)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Zamknij i przejdź do poprzedniej sceny"
+
+#~ msgid "Del"
+#~ msgstr "Usuń"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Kopiuj na platformÄ™..."
+
+#, fuzzy
+#~ msgid "Error creating the signature object."
+#~ msgstr "Błąd przy eksporcie projektu!"
+
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "Niewłaściwa nazwa."
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "Niepoprawny rozmiar fonta."
+
+#, fuzzy
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Niepoprawna ścieżka bazowa"
+
+#~ msgid "Invalid background color."
+#~ msgstr "Kolor tła nieprawidłowy."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr ""
+#~ "Nieprawidłowe wymiary obrazka ekranu powitalnego (powinno być 620x300)."
+
+#, fuzzy
+#~ msgid "RAW Mode"
+#~ msgstr "Tryb uruchamiania:"
+
#~ msgid "Node From Scene"
#~ msgstr "Węzeł ze Sceny"
@@ -7479,9 +8261,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Zastąpiono %d wystąpień."
-#~ msgid "Please save the scene first."
-#~ msgstr "Proszę najpierw zapisać scenę."
-
#~ msgid "Install Export Templates"
#~ msgstr "Zainstaluj Szablony Eksportu"
@@ -7618,9 +8397,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Klucz szyfrujÄ…cy skryptu (256-bit jako hex):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "Eksport PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "Eksport projektu PCK"
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index 905c263061..418072c117 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -145,7 +145,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -377,7 +378,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -388,9 +390,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Close"
@@ -463,7 +465,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -524,17 +526,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -550,7 +551,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -562,7 +563,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -714,14 +715,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -826,7 +827,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -906,12 +907,181 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Rename Function"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -925,21 +1095,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1042,6 +1235,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1119,6 +1316,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1244,6 +1457,15 @@ msgid "Signals:"
msgstr "Yer signals:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Yer functions:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1260,7 +1482,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1310,6 +1532,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1428,11 +1654,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1444,23 +1670,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1484,9 +1714,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1494,6 +1742,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1526,6 +1790,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1542,6 +1811,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1590,10 +1863,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1874,6 +2143,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1883,26 +2156,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1923,9 +2180,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2026,6 +2291,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2163,10 +2438,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2175,6 +2466,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2251,6 +2554,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2262,9 +2571,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2304,6 +2632,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2490,6 +2826,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3071,6 +3411,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Edit yer Variable:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3382,6 +3727,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Edit"
@@ -3414,10 +3760,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3526,11 +3868,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3568,6 +3905,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3607,6 +3952,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Add Signal"
@@ -3617,11 +3974,28 @@ msgid "Remove point"
msgstr "Discharge ye' Signal"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Discharge ye' Signal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3646,6 +4020,12 @@ 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 ""
@@ -3935,6 +4315,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4252,6 +4637,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4276,6 +4667,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4328,6 +4723,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4360,6 +4759,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4423,6 +4826,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4469,6 +4876,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4773,92 +5185,100 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Change"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Change"
+msgid "Display Unshaded"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Down"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4866,6 +5286,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4983,6 +5414,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5111,6 +5543,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5168,6 +5604,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Discharge ye' Signal"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5235,7 +5681,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5257,11 +5703,23 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5297,10 +5755,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5360,7 +5814,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5407,6 +5861,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5443,10 +5913,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5491,6 +5957,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5505,10 +5984,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5537,254 +6012,285 @@ msgstr "Discharge ye' Variable"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Change"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Add yer Getter Property"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5825,6 +6331,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Slit th' Node"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5837,6 +6348,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "Paste yer Node"
@@ -5933,6 +6448,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5976,10 +6496,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5992,6 +6508,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6034,6 +6562,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6085,6 +6621,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Paste yer Node"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6092,6 +6633,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6123,10 +6672,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6163,31 +6708,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6195,6 +6716,11 @@ msgid "Select a Node"
msgstr ""
#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Blimey! I can't make th' signature object!"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
msgstr ""
@@ -6203,6 +6729,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6245,10 +6775,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6414,6 +6940,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6500,6 +7030,123 @@ msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
"Ye got th' wrong dictionary getup! (yer subclasses be walkin' the plank!)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6539,6 +7186,28 @@ msgid "Stack overflow with stack depth: "
msgstr "Avast! Yer stack has burst! Her depth be: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Edit ye Signal Arguments:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Edit yer Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Yer functions:"
@@ -6580,26 +7249,6 @@ msgid "Add Signal"
msgstr "Add Signal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Discharge ye' Function"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Discharge ye' Variable"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Ye be fixin' Variable:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Discharge ye' Signal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Ye be fixin' Signal:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Swap yer Expression"
@@ -6608,6 +7257,15 @@ msgid "Add Node"
msgstr "Add Node"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Discharge ye' Variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Smash yer Meta key t' sink yer Getter. Smash yer Shift t' sink a generic "
@@ -6652,6 +7310,26 @@ msgid "Add Setter Property"
msgstr "Add yer Setter Property"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "th' Base Type:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Forge yer Node!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Discharge ye' Variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Slit th' Node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Condition"
@@ -6680,6 +7358,53 @@ msgid "Get"
msgstr "Get"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Paste yer Node"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Discharge ye' Function"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Edit yer Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Discharge ye' Variable"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Ye be fixin' Signal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Discharge ye' Signal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Ye be fixin' Variable:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Ye be fixin' Signal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "th' Base Type:"
@@ -6700,10 +7425,6 @@ msgid "Edit Variable:"
msgstr "Edit yer Variable:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Change"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Yar, Blow th' Selected Down!"
@@ -6779,14 +7500,6 @@ msgstr ""
"Yer return value from _step() be no good! She must be th' integer (seq out) "
"or th' string (error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "just smashed"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "just released"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6807,81 +7520,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"Blimey! I can't read th' certificate file! Are yer path n' password trusty?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Blimey! I can't make th' signature object!"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Blimey! I can't create th' package signature."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Ye got no export templates!\n"
-"Download and install yer export templates."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Yer fancy debug package be nowhere."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Yer fancy release package be nowhere."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Yer unique name be evil."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "Yer product GUID be evil."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "Yer publisher GUID be evil! Walk th' plank!"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Yer background color be evil!"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Yer Store Logo got th' wrong dimensions! She should be 50x50 I reckon."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "Yer square 44x44 logo image dimensions aint' 44x44!"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "Yer square 71x71 logo image dimensions aint' 71x71!"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "Yer square 150x150 logo image dimensions aint' 150x150!"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "Yer square 310x310 logo image dimensions aint' 310x310!"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "Yer wide 310x150 logo image dimensions aint' 310x150!"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "Yer splash screen image dimensions aint' 620x300!"
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6960,6 +7598,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6982,17 +7627,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7006,6 +7666,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7021,6 +7694,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7037,7 +7717,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7052,22 +7732,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7086,7 +7750,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7100,6 +7764,73 @@ msgid ""
"texture to some node for display."
msgstr ""
+#~ msgid "just pressed"
+#~ msgstr "just smashed"
+
+#~ msgid "just released"
+#~ msgstr "just released"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Blimey! I can't read th' certificate file! Are yer path n' password "
+#~ "trusty?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Blimey! I can't make th' signature object!"
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Blimey! I can't create th' package signature."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Ye got no export templates!\n"
+#~ "Download and install yer export templates."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Yer fancy debug package be nowhere."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "Yer fancy release package be nowhere."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Yer unique name be evil."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "Yer product GUID be evil."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Yer publisher GUID be evil! Walk th' plank!"
+
+#~ msgid "Invalid background color."
+#~ msgstr "Yer background color be evil!"
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr ""
+#~ "Yer Store Logo got th' wrong dimensions! She should be 50x50 I reckon."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "Yer square 44x44 logo image dimensions aint' 44x44!"
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "Yer square 71x71 logo image dimensions aint' 71x71!"
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "Yer square 150x150 logo image dimensions aint' 150x150!"
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "Yer square 310x310 logo image dimensions aint' 310x310!"
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "Yer wide 310x150 logo image dimensions aint' 310x150!"
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr "Yer splash screen image dimensions aint' 620x300!"
+
#~ msgid ""
#~ "Paths cannot start with '/', absolute paths must start with 'res://', "
#~ "'user://', or 'local://'"
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index b812b6f8ef..7d0ff7cb95 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -5,16 +5,18 @@
# Allyson Souza <allyson_as@outlook.com>, 2017.
# António Sarmento <antonio.luis.sarmento@gmail.com>, 2016.
# George Marques <george@gmarqu.es>, 2016.
+# Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017.
# Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016.
# jonathan railarem <railarem@gmail.com>, 2017.
# Mailson Silva Marins <mailsons335@gmail.com>, 2016.
+# Michael Alexsander Silva Dias <michael.a.s.dias@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2017-03-27 19:34+0000\n"
-"Last-Translator: jonathan railarem <railarem@gmail.com>\n"
+"PO-Revision-Date: 2017-08-15 19:47+0000\n"
+"Last-Translator: Michael Alexsander Silva Dias <michael.a.s.dias@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -22,7 +24,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 2.13-dev\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -153,7 +155,8 @@ msgstr "Ir ao Próximo Passo"
msgid "Goto Prev Step"
msgstr "Ir ao Passo Anterior"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Linear"
@@ -313,7 +316,7 @@ msgstr "Otimizar"
#: editor/animation_editor.cpp
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
-msgstr ""
+msgstr "Selecione um AnimationPlayer da Ãrvore de Cena para editar animações."
#: editor/animation_editor.cpp
msgid "Key"
@@ -365,21 +368,19 @@ msgstr "Alterar Valor do Vetor"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Livrar"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "Versão:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "Constantes:"
+msgstr "Conteúdo:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "Arquivo"
+msgstr "Ver Arquivos"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -387,7 +388,8 @@ msgstr "Arquivo"
msgid "Description:"
msgstr "Descrição:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Instalar"
@@ -398,9 +400,9 @@ msgstr "Instalar"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Fechar"
@@ -418,9 +420,8 @@ msgid "Connection error, please try again."
msgstr ""
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "Conectar..."
+msgstr "Não é possível conectar..."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -433,7 +434,7 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Sem resposta."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -442,7 +443,7 @@ msgstr "Formato de arquivo requisitado desconhecido:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Sol. Falhou."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
@@ -454,7 +455,7 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Falhou:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
@@ -476,9 +477,9 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "Sucesso!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
@@ -490,14 +491,12 @@ msgid "Resolving.."
msgstr "Salvando..."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "Conectar..."
+msgstr "Conectando..."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "Em teste"
+msgstr "Solicitando..."
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -523,7 +522,7 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "primeiro"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
@@ -542,17 +541,16 @@ msgid "All"
msgstr "Todos"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Pesquisar:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Pesquisar"
@@ -568,7 +566,7 @@ msgstr "Pesquisar"
msgid "Import"
msgstr "Importar"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Plugins"
@@ -580,7 +578,7 @@ msgstr "Ordenar:"
msgid "Reverse"
msgstr "Reverso"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Categoria:"
@@ -733,14 +731,14 @@ msgstr "Conectar ao Nó:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Adicionar"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Remover"
@@ -849,7 +847,7 @@ msgid "Resource"
msgstr "Recurso"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Caminho"
@@ -932,12 +930,195 @@ msgstr "Explorador de Recursos Órfãos"
msgid "Delete selected files?"
msgstr "Excluir os arquivos selecionados?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Excluir"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Agradecimentos da comunidade Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "Obrigado!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Contribuidores da Godot Engine"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Gerenciador de Projetos"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "Desenvolvedores"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gerenciador de Projetos"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "Desenvolvedores"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Conteúdo:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Conteúdo:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Não comprimido"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Pacote Instalado com Sucesso!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Pacote Instalado com Sucesso!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Adicionar Vazio"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Renomear Autoload"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Alternar Inicio automático"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Excluir Selecionados"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opções de depuração"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Duplicar"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Excluir Selecionados"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Adicionar Todos"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Excluir Layout"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Duplicar Animação"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Ação de Mover"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -951,24 +1132,53 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Extensão de arquivo inválida.\n"
+"Por favor use .font."
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Add Bus"
msgstr "Adicionar Todos"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Criar Novo Recurso"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Carregar"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Carrega um recurso existente do disco e o edita."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Salvar Como"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Padrão"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Nome Inválido."
@@ -1072,6 +1282,11 @@ msgid "Updating scene.."
msgstr "Atualizando Cena..."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Por favor salve a cena primeiro."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Escolha um Diretório"
@@ -1105,7 +1320,7 @@ msgstr "Empacotando"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:\n"
-msgstr ""
+msgstr "Arquivo de modelo não encontrado:\n"
#: editor/editor_export.cpp
msgid "Added:"
@@ -1149,6 +1364,22 @@ msgstr "Todos os Arquivos (*)"
msgid "Open"
msgstr "Abrir"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Abrir um Arquivo"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Abrir Arquivo(s)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Abrir um Diretório"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Abrir Arquivo ou Diretório"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1275,13 +1506,21 @@ msgid "Signals:"
msgstr "Sinais:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Animações"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constantes:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Description:"
-msgstr "Descrição breve:"
+msgstr "Descrição da Propriedade:"
#: editor/editor_help.cpp
msgid "Method Description:"
@@ -1292,7 +1531,8 @@ msgid "Search Text"
msgstr "Pesquisar Texto"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Saída:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1342,6 +1582,11 @@ msgid "Creating Thumbnail"
msgstr "Criando Miniatura"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Essa operação não pode ser realizada sem uma cena."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1472,26 +1717,34 @@ msgid "Quick Open Script.."
msgstr "Abrir Script Ãgil..."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Sim"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Salvar um Arquivo"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Fechar cena? (Mudanças não salvas serão perdidas)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Salvar Cena Como..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Nó"
+msgstr "Não"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Sim"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Esta cena nunca foi salva. Salvar antes de rodar?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Essa operação não pode ser realizada sem uma cena."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Exportar MeshLibrary"
@@ -1501,12 +1754,9 @@ msgid "Export Tile Set"
msgstr "Exportar Tile Set"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Sair"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Sair do editor?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Essa operação não pode ser realizada sem uma cena."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1529,22 +1779,58 @@ msgid "Quick Run Scene.."
msgstr "Rodar Cena Ãgil..."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Sair"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Sair do editor?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Gerenciador de Projetos"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Salvar um Arquivo"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Abrir Gerenciador de Projetos?\n"
-"(Mudanças não salvas serão perdidas)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Escolha uma Cena Principal"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
msgstr ""
+"A cena '%s' foi importada automaticamente, não podendo ser modificada.\n"
+"Para fazer alterações, uma nova cena herdada pode ser criada."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1575,6 +1861,11 @@ msgstr "Salvar Layout"
msgid "Delete Layout"
msgstr "Excluir Layout"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Padrão"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Trocar Guia de Cena"
@@ -1591,6 +1882,11 @@ msgstr "Mais %d arquivo(s) ou pasta(s)"
msgid "Distraction Free Mode"
msgstr "Modo Sem Distrações"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Modo Sem Distrações"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Cena"
@@ -1608,9 +1904,8 @@ msgid "Previous tab"
msgstr "Guia anterior"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Filter Files.."
-msgstr "Filtrar Arquivos Rapidamente..."
+msgstr "Filtrar Arquivos.."
#: editor/editor_node.cpp
msgid "Operations with scene files."
@@ -1640,10 +1935,6 @@ msgstr "Salvar todas as Cenas"
msgid "Close Scene"
msgstr "Fechar Cena"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Ir a Cena Fechada Anterior"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Abrir Recente"
@@ -1680,9 +1971,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "Ferramentas diversas atuantes no projeto ou cena."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Novo Projeto"
+msgstr "Projeto"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1796,9 +2086,8 @@ msgstr ""
"sistema de arquivos via rede."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "Editar"
+msgstr "Editor"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1814,9 +2103,8 @@ msgid "Toggle Fullscreen"
msgstr "Modo Tela-Cheia"
#: editor/editor_node.cpp editor/project_export.cpp
-#, fuzzy
msgid "Manage Export Templates"
-msgstr "Carregando Modelos de Exportação"
+msgstr "Gerenciar Modelos de Exportação"
#: editor/editor_node.cpp
msgid "Help"
@@ -1827,9 +2115,8 @@ msgid "Classes"
msgstr "Classes"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Fechar Docs"
+msgstr "Docs Online"
#: editor/editor_node.cpp
msgid "Q&A"
@@ -1947,6 +2234,10 @@ msgstr "Nó"
msgid "Output"
msgstr "Saída"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Reimportar"
@@ -1956,26 +2247,10 @@ msgid "Update"
msgstr "Atualizar"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Agradecimentos da comunidade Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "Obrigado!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importar Modelos de um Arquivo ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Exportar Projeto"
@@ -1996,23 +2271,29 @@ msgid "Open & Run a Script"
msgstr "Abrir e Rodar um Script"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Nova Cena Herdada..."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Erros de Carregamento"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Selecionar"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Abrir no Editor"
+msgstr "Abrir Editor 2D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Abrir no Editor"
+msgstr "Abrir Editor 3D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Abrir no Editor"
+msgstr "Abrir Editor de Scripts"
#: editor/editor_node.cpp
#, fuzzy
@@ -2020,14 +2301,12 @@ msgid "Open Asset Library"
msgstr "Exportar Biblioteca"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Abrir no Editor"
+msgstr "Abrir o próximo Editor"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Abrir no Editor"
+msgstr "Abrir o Editor anterior"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2105,6 +2384,16 @@ msgstr "Re-Importando"
msgid "Re-Import Changed Resources"
msgstr "Re-Importar Recursos Alterados"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Escreva sua lógica no método _run()."
@@ -2151,14 +2440,12 @@ msgid "Re-Download"
msgstr "Recarregar"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall"
-msgstr "Instalar"
+msgstr "Desinstalar"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "(Installed)"
-msgstr "Instalar"
+msgstr "(Instalado)"
#: editor/export_template_manager.cpp
#, fuzzy
@@ -2167,12 +2454,11 @@ msgstr "Abaixo"
#: editor/export_template_manager.cpp
msgid "(Missing)"
-msgstr ""
+msgstr "(Faltando)"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "(Current)"
-msgstr "Atual:"
+msgstr "(Atual)"
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
@@ -2197,14 +2483,12 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error creating path for templates:\n"
-msgstr "Erro ao salvar atlas:"
+msgstr "Erro ao criar caminho para modelos:\n"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Extracting Export Templates"
-msgstr "Carregando Modelos de Exportação"
+msgstr "Extraindo Modelos de Exportação"
#: editor/export_template_manager.cpp
msgid "Importing:"
@@ -2215,34 +2499,28 @@ msgid "Loading Export Templates"
msgstr "Carregando Modelos de Exportação"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Current Version:"
-msgstr "Cena Atual"
+msgstr "Versão Atual:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Installed Versions:"
-msgstr "Plugins Instalados:"
+msgstr "Versões Instaladas:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install From File"
-msgstr "Instalar Projeto:"
+msgstr "Instalar a partir do arquivo"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Remove Template"
-msgstr "Remover Item"
+msgstr "Remover Modelo"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select template file"
-msgstr "Excluir os arquivos selecionados?"
+msgstr "Selecione o arquivo de modelo"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Export Template Manager"
-msgstr "Carregando Modelos de Exportação"
+msgstr "Gerenciador de Modelos de Exportação"
#: editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
@@ -2252,13 +2530,31 @@ msgstr ""
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '"
-msgstr ""
+msgstr "Não é possível navegar para '"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Salvar e Re-Importar"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Origem:"
#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Mesmos arquivos de destino e origem, nada a fazer."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Mesmo caminhos de destino e origem, nada a fazer."
@@ -2267,6 +2563,20 @@ msgid "Can't move directories to within themselves."
msgstr "Não é possível mover diretórios para dentro de si mesmos."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Erro ao carregar imagem:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Erro ao importar:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "Não é possível operar em \"..\""
@@ -2279,13 +2589,12 @@ msgid "No files selected!"
msgstr "Nenhum arquivo selecionado!"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Expand all"
-msgstr "Expandir para Pai"
+msgstr "Expandir tudo"
#: editor/filesystem_dock.cpp
msgid "Collapse all"
-msgstr ""
+msgstr "Recolher tudo"
#: editor/filesystem_dock.cpp
msgid "Show In File Manager"
@@ -2344,6 +2653,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "Instancia a(s) cena(s) selecionada como filho do nó selecionado."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Mover"
@@ -2355,10 +2670,31 @@ msgstr "Adicionar ao Grupo"
msgid "Remove from Group"
msgstr "Remover do Grupo"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superfície %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Importando Cena..."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Importar Cena 3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2397,14 +2733,20 @@ msgid "Saving.."
msgstr "Salvando..."
#: editor/import_dock.cpp
-#, fuzzy
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
-msgstr "Arquivo"
+msgstr " Arquivos"
#: editor/import_dock.cpp
-#, fuzzy
msgid "Import As:"
-msgstr "Importar"
+msgstr "Importar Como:"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
@@ -2486,13 +2828,12 @@ msgid "No target font resource!"
msgstr "Falta recurso de fonte destino!"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
"Extensão de arquivo inválida.\n"
-"Por favor use .fnt."
+"Por favor use .font."
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2593,6 +2934,10 @@ msgstr "Origem de Mesh(es):"
msgid "Mesh"
msgstr "Mesh"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Superfície %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Sem amostras para importar!"
@@ -2711,9 +3056,8 @@ msgid "Auto"
msgstr "Auto"
#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
msgid "Root Node Name:"
-msgstr "Nome do Nó:"
+msgstr "Nome do Nó Raíz:"
#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "The Following Files are Missing:"
@@ -2973,9 +3317,8 @@ msgid "Compress"
msgstr "Comprimir"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "Adicionar ao Projeto (engine.cfg)"
+msgstr "Adicionar ao Projeto (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3014,9 +3357,8 @@ msgid "Change Animation Name:"
msgstr "Alterar Nome da Animação:"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Delete Animation?"
-msgstr "Duplicar Animação"
+msgstr "Excluir Animação?"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3182,6 +3524,11 @@ msgid "New name:"
msgstr "Novo nome:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Editar Filtros de Nó"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Escala:"
@@ -3431,9 +3778,8 @@ msgid "Paste Pose"
msgstr "Colar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode"
-msgstr "Modo de Seleção (Q)"
+msgstr "Modo de Seleção"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag: Rotate"
@@ -3500,6 +3846,7 @@ msgstr "Restaura a habilidade dos filhos do objeto de serem selecionados."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Editar"
@@ -3532,10 +3879,6 @@ msgid "Use Pixel Snap"
msgstr "Usar Snap de Pixel"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Expandir para Pai"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Esqueleto..."
@@ -3647,11 +3990,6 @@ msgstr "Essa operação requer um único nó selecionado."
msgid "Change default type"
msgstr "Alterar Valor Padrão"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3689,6 +4027,14 @@ msgstr "Editar Polígono (Remover Ponto)"
msgid "Create a new polygon from scratch."
msgstr "Criar um novo polígono do zero."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Criar Polígono 3D"
@@ -3729,6 +4075,21 @@ msgstr "Atualizar a partir de Cena"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "Modificar Curve Map"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Modificar Curve Map"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Carregar Recurso"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "Adicionar Entrada"
@@ -3739,13 +4100,31 @@ msgstr "Remover Ponto do Caminho"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Linear"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Visão Direita"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "Carregar Recurso"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "Modificar Curve Map"
+msgid "Remove Curve Point"
+msgstr "Remover Ponto do Caminho"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3769,6 +4148,12 @@ 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 ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Criar Polígono de Oclusão"
@@ -4064,6 +4449,12 @@ msgid "Load Emission Mask"
msgstr "Carregar Máscara de Emissão"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Vértice"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "Gerar Contagem de Pontos:"
@@ -4395,6 +4786,12 @@ msgid "Clear Recent Files"
msgstr "Limpar Ossos"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "Erro ao salvar tema"
@@ -4419,6 +4816,10 @@ msgid "Save Theme As.."
msgstr "Salvar Tema Como..."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Próximo Script"
@@ -4472,6 +4873,11 @@ msgid "Close All"
msgstr "Fechar"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Alternar Favorito"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4504,6 +4910,11 @@ msgid "Keep Debugger Open"
msgstr "Manter Depurador Aberto"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Abrir o próximo Editor"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Janela"
@@ -4573,6 +4984,10 @@ msgstr ""
"carregada"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
#, fuzzy
msgid "Pick Color"
msgstr "Cor"
@@ -4621,6 +5036,11 @@ msgid "Move Down"
msgstr "Mover para Baixo"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Excluir Ponto"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Recuar Esquerda"
@@ -4927,37 +5347,6 @@ msgid "Animation Key Inserted."
msgstr "Chave de Animação Inserida."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Avançar"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Para trás"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Roda para Baixo."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -5025,10 +5414,64 @@ msgid "Audio Listener"
msgstr "Ouvinte de Ãudio"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Habilitar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "Avançar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Para trás"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Roda para Baixo."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Visualização"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diálogo XForm"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Modo de Seleção"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+RMB: Lista de seleção de profundidade"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Modo Mover (W)"
@@ -5150,6 +5593,7 @@ msgid "View Grid"
msgstr "Ver Grade"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Configurações"
@@ -5278,6 +5722,11 @@ msgid "StyleBox Preview:"
msgstr "Pré-Visualização do StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Definir region_rect"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Modo Snap:"
@@ -5336,6 +5785,16 @@ msgstr "Remover Item"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Remove All Items"
+msgstr "Remover Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Remover"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "Theme"
msgstr "Salvar Tema"
@@ -5403,7 +5862,7 @@ msgstr "Guia 2"
msgid "Tab 3"
msgstr "Guia 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Tipo:"
@@ -5425,12 +5884,27 @@ msgid "Color"
msgstr "Cor"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Apagar Seleção"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Pintar TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Duplicar"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Linear"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Balde"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5465,10 +5939,6 @@ msgid "Pick Tile"
msgstr "Pegar Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Selecionar"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Rotacionar 0 degraus"
@@ -5532,7 +6002,7 @@ msgstr "Excluir os arquivos selecionados?"
msgid "Presets"
msgstr "Predefinição..."
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Adicionar..."
@@ -5591,6 +6061,24 @@ msgid "Make Patch"
msgstr "Caminho Destino:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Textura"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Lista de Métodos:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "Exportar PCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5631,10 +6119,6 @@ msgid "The following files failed extraction from package:"
msgstr "Os arquivos a seguir falharam ao serem extraídos do pacote:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Pacote Instalado com Sucesso!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importar Projeto Existente"
@@ -5681,6 +6165,23 @@ msgstr "Tem certeza de que quer abrir mais de um projeto?"
#: editor/project_manager.cpp
#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"A cena principal não foi definida, selecionar uma?\n"
+"Você pode alterá-la mais tarde nas \"Configurações do Projeto\" na categoria "
+"\"application\"."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Are you sure to run more than one project?"
msgstr "Tem certeza de que quer rodar mais de um projeto?"
@@ -5695,10 +6196,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gerenciador de Projetos"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista de Projetos"
@@ -5728,258 +6225,292 @@ msgstr "Remover Item"
msgid "Exit"
msgstr "Sair"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Não é possível conectar..."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Chave "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Botão do Joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "Eixo do Joystick"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Botão do Mous"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Ação Inválida (qualquer coisa serve, exceto '/' ou ':')."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "A ação \"%s\" já existe!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Renomear Evento Ação de Entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Adicionar Evento Ação de Entrada"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Pressione uma Tecla..."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Botão do Mouse:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Botão Esquerdo"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Botão Direito"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Botão do Meio"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Roda para Cima"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Roda para Baixo"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Botão 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Botão 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Botão 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Botão 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Alterar"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "Eixo do Joystick:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Eixo"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "Botão do Joystick:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Adicionar Ação de Entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Apagar Evento Ação de Entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "Adicionar Vazio"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Botão"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Botão Esquerdo."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Botão Direito."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Botão do Meio."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Roda para Cima."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Roda para Baixo."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Adicionar Getter de Propriedade"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Propriedade:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Configurações"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Deletar Entrada"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Erro ao salvar as configurações."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Configurações Salvas."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Adicionar Tradução"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Remover Tradução"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Adicionar Caminho Remapeado"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "Remapeamento de Recurso Adicionar Remap"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Alterar Idioma de Remapeamento de Recuso"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Remover Remapeamento de Recurso"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Remover Opção de Remapeamento de Recurso"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Configurações do Projeto (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "Geral"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Propriedade:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Del"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Copiar para a Plataforma..."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "Mapa de Entrada"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Ação:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Dispositivo:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Ãndice:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "Localização"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Traduções"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Traduções:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Remapeamentos"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Recursos:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Remapeamentos por Localidade:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Localidade"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -6022,6 +6553,11 @@ msgstr "Atribuir"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "Selecione um Nó"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "New Script"
msgstr "Próximo Script"
@@ -6036,6 +6572,11 @@ msgstr "Erro ao carregar arquivo: Não é um recurso!"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Selecionar Nó(s) para Importar"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "Selecione um Nó"
@@ -6133,6 +6674,11 @@ msgstr "Argumentos da Cena Principal:"
msgid "Scene Run Settings"
msgstr "Configurações de Carregamento da Cena"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "No parent to instance the scenes at."
@@ -6179,10 +6725,6 @@ msgid "Delete Node(s)?"
msgstr "Excluir Nó(s)?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Essa operação não pode ser realizada sem uma cena."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6195,6 +6737,18 @@ msgid "Save New Scene As.."
msgstr "Salvar Nova Cena Como..."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Filhos Editáveis"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Carregar como Substituto"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "Descartar Instanciação"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Faz Sentido!"
@@ -6240,6 +6794,14 @@ msgid "Edit Connections"
msgstr "Editar Conexões"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Limpar Herança"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Abrir no Editor"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Excluir Nó(s)"
@@ -6296,6 +6858,11 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "Filter nodes"
+msgstr "Filtros"
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Attach a new or existing script for the selected node."
msgstr "Criar um script novo para o nó selecionado."
@@ -6304,6 +6871,14 @@ msgstr "Criar um script novo para o nó selecionado."
msgid "Clear a script for the selected node."
msgstr "Criar um script novo para o nó selecionado."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "Limpar Herança? (Irreversível!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Limpar!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Alternar Spatial Visível"
@@ -6335,11 +6910,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Opções de depuração"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instância:"
@@ -6378,32 +6948,8 @@ msgid "Scene Tree (Nodes):"
msgstr "Ãrvore de Cena (Nós):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Filhos Editáveis"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Carregar como Substituto"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "Descartar Instanciação"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Abrir no Editor"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Limpar Herança"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "Limpar Herança? (Irreversível!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Limpar!"
+msgid "Node Configuration Warning!"
+msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6411,6 +6957,11 @@ msgstr "Selecione um Nó"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Erro ao carregar imagem:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Não foi possível criar o script no sistema de arquivos."
@@ -6420,6 +6971,10 @@ msgid "Error loading script from %s"
msgstr "Erro ao carregar cena de %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/D"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "O caminho está vazio"
@@ -6463,10 +7018,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/D"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6638,6 +7189,10 @@ msgid "Change Light Radius"
msgstr "Mudar Raio da Luz"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Mudar FOV da Câmera"
@@ -6722,6 +7277,137 @@ msgstr "Formato de dicionário de instância inválido (script inválido em @pat
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Dicionário de instância inválido (subclasses inválidas)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Excluir Selecionados"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Duplicar Seleção"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Visão Superior"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Desabilitado"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Rotaciona"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Rotaciona"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Rotaciona"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Criar Novo"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Criar Novo Projeto"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Apagar TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Apenas na Seleção"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Apenas na Seleção"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Configurações do Snap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Instância:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " Arquivos"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6753,6 +7439,31 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Editar Argumentos do Sinal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Alterar Tipo de Valor do Vetor"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Alterar Nome de Entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Alterar Valor Padrão"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Editar Variável:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funções:"
@@ -6793,26 +7504,6 @@ msgid "Add Signal"
msgstr "Adicionar Sinal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Remover Função"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Remover Variável"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Editando Variável:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Remover Sinal"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Editando Sinal:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "Alterar Expressão"
@@ -6822,6 +7513,16 @@ msgid "Add Node"
msgstr "Adicionar Nó"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Remover Chaves Invalidas"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Duplicar Nó(s) de Grafo(s)"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Segure Meta para aplicar um Getter. Segure Shift para aplicar uma assinatura "
@@ -6866,6 +7567,26 @@ msgid "Add Setter Property"
msgstr "Adicionar Setter de Propriedade"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Alterar Tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Remover Nó(s)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Remover Nó de Shader Graph"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Conectar ao Nó:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "Condição"
@@ -6896,6 +7617,56 @@ msgid "Get"
msgstr "Obter"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Alterar Nome de Entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "Não é possível operar em \"..\""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Recurso da área de transferência está vazio!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Colar Nós"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Remover Função"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Editar Variável:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Remover Variável"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Editando Sinal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Remover Sinal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Editando Variável:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Editando Sinal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Tipo de Base:"
@@ -6916,10 +7687,6 @@ msgid "Edit Variable:"
msgstr "Editar Variável:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Alterar"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Excluir Selecionados"
@@ -6995,22 +7762,13 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Run in Browser"
-msgstr "Navegar"
+msgstr "Rodar no Navegador"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "Rodar HTML exportado no navegador padrão do sistema."
#: platform/javascript/export/export.cpp
#, fuzzy
@@ -7018,91 +7776,14 @@ msgid "Could not write file:\n"
msgstr "Não se pôde achar tile:"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file:\n"
-msgstr "Não se pôde achar tile:"
+msgstr "Não foi possível ler o arquivo:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Could not open template for export:\n"
msgstr "Não foi possível criar a pasta."
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Error creating the signature object."
-msgstr "Erro ao escrever o PCK do projeto!"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "Nome Inválido."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "Tamanho de fonte inválido."
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid publisher GUID."
-msgstr "Caminho base inválido"
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid background color."
-msgstr "Origem personalizada da fonte inválida."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7205,6 +7886,13 @@ msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
"PathFollow2D apenas funciona quando definido como filho de um nó Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7235,23 +7923,33 @@ msgstr ""
"VisibilityEnable2D funciona melhor quando usado como filho direto da raiz da "
"cena atualmente editada."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-"CollisionShape apenas serve para fornecer formas de colisão a um nó derivado "
-"de CollisionObject. Por favor, use-o apenas como filho de Area, StaticBody, "
-"RigidBody, KinematicBody, etc. para dá-los forma."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Uma forma deve ser fornecida para que o nó CollisionShape fucione. Por "
-"favor, crie um recurso de forma a ele!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7267,6 +7965,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Um nó CollisionPolygon vazio não é efetivo na colisão."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape apenas serve para fornecer formas de colisão a um nó derivado "
+"de CollisionObject. Por favor, use-o apenas como filho de Area, StaticBody, "
+"RigidBody, KinematicBody, etc. para dá-los forma."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Uma forma deve ser fornecida para que o nó CollisionShape fucione. Por "
+"favor, crie um recurso de forma a ele!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7286,6 +8002,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
@@ -7308,12 +8031,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Modo de Início:"
+msgid "Raw Mode"
+msgstr "Modo Panorâmico"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Adicionar cor atual como uma predefinição"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7323,22 +8046,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirme Por Favor..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Abrir um Arquivo"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Abrir Arquivo(s)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Abrir um Diretório"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Abrir Arquivo ou Diretório"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7360,7 +8067,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7378,6 +8085,57 @@ msgstr ""
"para que ele possa ter um tamanho. Caso contrário, defina-o como destino de "
"render e atribua sua textura interna a algum nó para exibir."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Fechar cena? (Mudanças não salvas serão perdidas)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Abrir Gerenciador de Projetos?\n"
+#~ "(Mudanças não salvas serão perdidas)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Ir a Cena Fechada Anterior"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Expandir para Pai"
+
+#~ msgid "Del"
+#~ msgstr "Del"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Copiar para a Plataforma..."
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Não foi possível ler o arquivo de certificado. Ambos o caminho e senha "
+#~ "estão corretos?"
+
+#, fuzzy
+#~ msgid "Error creating the signature object."
+#~ msgstr "Erro ao escrever o PCK do projeto!"
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Nome único inválido."
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "Tamanho de fonte inválido."
+
+#, fuzzy
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Caminho base inválido"
+
+#~ msgid "Invalid background color."
+#~ msgstr "Cor de fundo inválida."
+
+#, fuzzy
+#~ msgid "RAW Mode"
+#~ msgstr "Modo RAW"
+
#~ msgid "Node From Scene"
#~ msgstr "Nó a Partir de Cena"
@@ -7463,9 +8221,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Substituída(s) %d Ocorrência(s)."
-#~ msgid "Please save the scene first."
-#~ msgstr "Por favor salve a cena primeiro."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Salvar Strings Traduzíveis"
@@ -7659,9 +8414,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Chave de Criptografia dos Scripts (256-bit como hex):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "Exportar PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "Exportar PCK do Projeto"
@@ -7796,9 +8548,6 @@ msgstr ""
#~ msgid "Node Group(s)"
#~ msgstr "Grupo(s) do Nó"
-#~ msgid "Set region_rect"
-#~ msgstr "Definir region_rect"
-
#~ msgid "Plugin List:"
#~ msgstr "Lista de Plugins:"
diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po
index 738eea37a9..527bff68fd 100644
--- a/editor/translations/pt_PT.po
+++ b/editor/translations/pt_PT.po
@@ -145,7 +145,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -377,7 +378,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -388,9 +390,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Fechar"
@@ -463,7 +465,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -524,17 +526,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -550,7 +551,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -562,7 +563,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -714,14 +715,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -826,7 +827,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -906,12 +907,181 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Alterar nome da Função"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Apagar Seleccionados"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Apagar Seleccionados"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -925,21 +1095,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1042,6 +1235,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1119,6 +1316,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1244,6 +1457,15 @@ msgid "Signals:"
msgstr "Sinais:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Funções:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1260,7 +1482,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1310,6 +1532,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1428,11 +1654,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1444,9 +1670,17 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr ""
@@ -1456,11 +1690,7 @@ msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1484,9 +1714,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1494,6 +1742,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1526,6 +1790,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1542,6 +1811,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1590,10 +1863,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1874,6 +2143,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1883,26 +2156,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1923,9 +2180,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2026,6 +2291,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2162,10 +2437,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2174,6 +2465,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2250,6 +2553,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2261,9 +2570,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2303,6 +2631,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2489,6 +2825,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3070,6 +3410,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Editar Variável:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3381,6 +3726,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Editar"
@@ -3413,10 +3759,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3525,11 +3867,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3567,6 +3904,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3606,6 +3951,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Adicionar Sinal"
@@ -3616,11 +3973,28 @@ msgid "Remove point"
msgstr "Remover Sinal"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Remover Sinal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3645,6 +4019,12 @@ 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 ""
@@ -3934,6 +4314,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4251,6 +4636,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4275,6 +4666,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4328,6 +4723,10 @@ msgid "Close All"
msgstr "Fechar"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4360,6 +4759,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4423,6 +4826,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4469,6 +4876,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Apagar Seleccionados"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4773,92 +5185,100 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Alterar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Alterar"
+msgid "Display Unshaded"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Down"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4866,6 +5286,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4983,6 +5414,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5111,6 +5543,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5168,6 +5604,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Remover Variável"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Remover Sinal"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5235,7 +5681,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5257,11 +5703,23 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5297,10 +5755,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5360,7 +5814,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5407,6 +5861,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5443,10 +5913,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5491,6 +5957,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5505,10 +5984,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5537,254 +6012,285 @@ msgstr "Remover Variável"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Alterar"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Adicionar propriedade Getter"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Apagar Seleccionados"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5825,6 +6331,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Adicionar propriedade Setter"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5837,6 +6348,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr ""
@@ -5933,6 +6448,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5976,10 +6496,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5992,6 +6508,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6034,6 +6562,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6084,6 +6620,10 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6091,6 +6631,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6122,10 +6670,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6162,35 +6706,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6202,6 +6726,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6244,10 +6772,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6413,6 +6937,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6497,6 +7025,123 @@ msgstr "Formato de dicionário de instância inválido (script inválido em @pat
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Dicionário de instância inválido (subclasses inválidas)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Apagar Seleccionados"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6535,6 +7180,28 @@ msgid "Stack overflow with stack depth: "
msgstr "Stack overflow com a profundidade da pilha (stack): "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Editar Argumentos do Sinal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Editar Variável:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funções:"
@@ -6575,34 +7242,23 @@ msgid "Add Signal"
msgstr "Adicionar Sinal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Remover Função"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Remover Variável"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "A editar Variável:"
+msgid "Change Expression"
+msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Remover Sinal"
+msgid "Add Node"
+msgstr "Adicionar Nó"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "A editar Sinal:"
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Remover Variável"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
+msgid "Duplicate VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr "Adicionar Nó"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6644,6 +7300,24 @@ msgid "Add Setter Property"
msgstr "Adicionar propriedade Setter"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Tipo de Base:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Move Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Remover Variável"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6672,6 +7346,52 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Remover Função"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Editar Variável:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Remover Variável"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "A editar Sinal:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Remover Sinal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "A editar Variável:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "A editar Sinal:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Tipo de Base:"
@@ -6692,10 +7412,6 @@ msgid "Edit Variable:"
msgstr "Editar Variável:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Alterar"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Apagar Seleccionados"
@@ -6770,14 +7486,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6798,78 +7506,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "Nome de índice propriedade inválido."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6948,6 +7584,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6970,17 +7613,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -6994,6 +7652,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7009,6 +7680,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7025,7 +7703,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7040,22 +7718,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7074,7 +7736,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7087,3 +7749,7 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
+
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "Nome de índice propriedade inválido."
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 3acaa82736..92755d427b 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-05-10 20:34+0000\n"
-"Last-Translator: DimOkGamer <salnikov.mine@yandex.ru>\n"
+"PO-Revision-Date: 2017-07-25 09:47+0000\n"
+"Last-Translator: ijet <my-ijet@mail.ru>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
"Language: ru\n"
@@ -21,7 +21,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 2.14-dev\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -33,7 +33,7 @@ msgstr "Ð’Ñе выбранные Ñлементы"
#: editor/animation_editor.cpp
msgid "Move Add Key"
-msgstr "Подвинут ключ"
+msgstr "Подвинуть ключ"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -151,7 +151,8 @@ msgstr "Перейти к Ñледующему шагу"
msgid "Goto Prev Step"
msgstr "Перейти к предыдущему шагу"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "Линейный"
@@ -363,21 +364,19 @@ msgstr "Изменить значение маÑÑива"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "ОÑвободить"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "ВерÑиÑ:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "КонÑтанты:"
+msgstr "Содержание:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr " Файлы"
+msgstr "ПроÑмотр Файлов"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -385,7 +384,8 @@ msgstr " Файлы"
msgid "Description:"
msgstr "ОпиÑание:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "УÑтановить"
@@ -396,161 +396,152 @@ msgstr "УÑтановить"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Закрыть"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "Ðевозможно определить Ð¸Ð¼Ñ Ñ…Ð¾Ñта:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "Ðе удаетÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Ошибка подключениÑ, попробуйте еще раз."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "ПриÑоединить.."
+msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "ПриÑоединить к узлу:"
+msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "Ðет ответа от хоÑта:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Ðет ответа."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "ÐеизвеÑтный формат запрашиваемого файла:"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ, код:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошел."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошел, Ñлишком много перенаправлений"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "ЦикличеÑкое перенаправление."
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "Ðе удалоÑÑŒ:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "ÐеÑовпадение Ñ…Ñша загрузки, возможно файл был изменен."
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "ОжидаетÑÑ:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "Получил:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "Ðе удалоÑÑŒ проверить sha256 Ñ…Ñш"
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Ошибка Загрузки Шаблона:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "УÑпех!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Извлечение:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "Сохранение.."
+msgstr "ИнициализациÑ..."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "ПриÑоединить.."
+msgstr "Подключение.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "ТеÑтируемые"
+msgstr "Запрашиваю.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "Ошибка при Ñохранении реÑурÑа!"
+msgstr "Ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "ПроÑтой"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Повторить"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Download Error"
-msgstr "Загрузка"
+msgstr "Ошибка Загрузки"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Загрузка Ñтого шаблона уже идет!"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "первый"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "предыдущий"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "далее"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "поÑледний"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "Ð’Ñе"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "ПоиÑк:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "ПоиÑк"
@@ -566,7 +557,7 @@ msgstr "ПоиÑк"
msgid "Import"
msgstr "Импорт"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Плагины"
@@ -578,7 +569,7 @@ msgstr "Сортировать:"
msgid "Reverse"
msgstr "Обратно"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "КатегориÑ:"
@@ -732,14 +723,14 @@ msgstr "ПриÑоединить к узлу:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Добавить"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Удалить"
@@ -829,7 +820,7 @@ msgid ""
"Changes will not take effect unless reloaded."
msgstr ""
"Сцена '%s' в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÑ‚ÑÑ.\n"
-"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÑтупÑÑ‚ в Ñилу, поÑле перезагрузки."
+"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ вÑтупÑÑ‚ в Ñилу без перезапуÑка."
#: editor/dependency_editor.cpp
msgid ""
@@ -837,7 +828,7 @@ msgid ""
"Changes will take effect when reloaded."
msgstr ""
"РеÑурÑу '% s' иÑпользуетÑÑ.\n"
-"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÑтупÑÑ‚ в Ñилу поÑле перезагрузки."
+"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÑтупÑÑ‚ в Ñилу поÑле перезапуÑка."
#: editor/dependency_editor.cpp
msgid "Dependencies"
@@ -848,7 +839,7 @@ msgid "Resource"
msgstr "РеÑурÑ"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Путь"
@@ -930,12 +921,196 @@ msgstr "Обзор подключённых реÑурÑов"
msgid "Delete selected files?"
msgstr "Удалить выбранные файлы?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Удалить"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "СпаÑибо от ÑообщеÑтва Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "СпаÑибо!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Ðвторы Движка Godot"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Ðвтор:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Менеджер проектов"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "Разработчики"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Менеджер проектов"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "Разработчики"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Содержание:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Содержание:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "ÐеÑжатый"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Пакет уÑпешно уÑтановлен!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Пакет уÑпешно уÑтановлен!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "Добавить Ñобытие"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Открыть раÑкладку звуковой шины"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "Открыть раÑкладку звуковой шины"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "Открыть раÑкладку звуковой шины"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Удалить выделенное"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Опции вложенной Ñцены"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "Дублировать"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Удалить выделенное"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Добавить"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Удалить макет"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Дублировать анимацию"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "ПеремеÑтить дейÑтвие"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "Сохранить раÑкладку звуковой шины как.."
@@ -949,23 +1124,53 @@ msgid "Open Audio Bus Layout"
msgstr "Открыть раÑкладку звуковой шины"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"ÐедопуÑтимое раÑширение файла.\n"
+"ПожалуйÑта, иÑпользуйте .font."
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Добавить"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Создать новый реÑурÑ"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Загрузить"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Загрузить ÑущеÑтвующий реÑÑƒÑ€Ñ Ñ Ð´Ð¸Ñка и редактировать его."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "Сохранить как"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "Сохранить раÑкладку звуковой шины как.."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "По-умолчанию"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "ÐедопуÑтимое имÑ."
@@ -1072,6 +1277,11 @@ msgid "Updating scene.."
msgstr "Обновление Ñцены.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "ПожалуйÑта Ñначала Ñохраните Ñцену."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Выбрать каталог"
@@ -1149,6 +1359,22 @@ msgstr "Ð’Ñе файлы (*)"
msgid "Open"
msgstr "Открыть"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Открыть файл"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Открыть файл(ы)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Открыть каталог"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Открыть каталог или файл"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1231,7 +1457,7 @@ msgstr "(Ре)Импортировать"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
msgid "Search Help"
-msgstr "Помощь (ПоиÑк)"
+msgstr "Помощь"
#: editor/editor_help.cpp
msgid "Class List:"
@@ -1274,6 +1500,15 @@ msgid "Signals:"
msgstr "Сигналы:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Ðнимации"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "КонÑтанты:"
@@ -1290,7 +1525,8 @@ msgid "Search Text"
msgstr "ИÑкать текÑÑ‚"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Вывод:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1340,6 +1576,11 @@ msgid "Creating Thumbnail"
msgstr "Создание ÑÑкизов"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1415,7 +1656,6 @@ msgid "There is no defined scene to run."
msgstr "Ðет определённой Ñцены, чтобы работать."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
@@ -1470,26 +1710,34 @@ msgid "Quick Open Script.."
msgstr "БыÑтро открыть Ñкрипт.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Да"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Сохранить файл"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Закрыть Ñцену? (ÐеÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны.)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Сохранить Ñцену как.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Узел"
+msgstr "Ðет"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Да"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Эта Ñцена никогда не была Ñохранена. Сохранить перед запуÑком?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "ЭкÑпортировать библиотеку полиÑеток"
@@ -1499,12 +1747,9 @@ msgid "Export Tile Set"
msgstr "ЭкÑпортировать набор тайлов"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Выйти"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Выйти из редактора?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1527,18 +1772,52 @@ msgid "Quick Run Scene.."
msgstr "БыÑтро запуÑтить Ñцену.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Выйти"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Выйти из редактора?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Менеджер проектов"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Сохранить файл"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Открыть менеджер проектов? \n"
-"(ÐеÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны.)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Выберите главную Ñцену"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1577,6 +1856,11 @@ msgstr "Сохранить макет"
msgid "Delete Layout"
msgstr "Удалить макет"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "По-умолчанию"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Смена вкладки Ñо Ñценой"
@@ -1593,6 +1877,11 @@ msgstr "Ещё %d файла(ов) или папка(ок)"
msgid "Distraction Free Mode"
msgstr "Свободный режим"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Свободный режим"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Сцена"
@@ -1641,10 +1930,6 @@ msgstr "Сохранить вÑе Ñцены"
msgid "Close Scene"
msgstr "Закрыть Ñцену"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Закрыть и перейти к предыдущей Ñцене"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "Открыть поÑледнее"
@@ -1681,9 +1966,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "Прочие инÑтрументы."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Ðовый проект"
+msgstr "Проект"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1797,9 +2081,8 @@ msgstr ""
"Ñетевой файловой ÑиÑтемой."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "Редактировать"
+msgstr "Редактор"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1826,17 +2109,16 @@ msgid "Classes"
msgstr "КлаÑÑÑ‹"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Закрыть документацию"
+msgstr "Онлайн Документы"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "ВопроÑÑ‹ и ответы"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "СиÑтема отÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº"
#: editor/editor_node.cpp
msgid "About"
@@ -1946,6 +2228,10 @@ msgstr "Узел"
msgid "Output"
msgstr "Вывод"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Переимпортировать"
@@ -1955,26 +2241,10 @@ msgid "Update"
msgstr "Обновление"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "СпаÑибо от ÑообщеÑтва Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "СпаÑибо!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Импортировать шаблоны из ZIP файла"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "ЭкÑпортировать проект"
@@ -1995,38 +2265,41 @@ msgid "Open & Run a Script"
msgstr "Открыть и запуÑтить Ñкрипт"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "ÐÐ¾Ð²Ð°Ñ ÑƒÐ½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¡Ñ†ÐµÐ½Ð°.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Ошибки загрузки"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Выделение"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Открыть в редакторе"
+msgstr "Открыть 2D редактор"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Открыть в редакторе"
+msgstr "Открыть 3D редактор"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Открыть в редакторе"
+msgstr "Открыть редактор Ñкриптов"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "ЭкÑпортировать библиотеку"
+msgstr "Открыть библиотеку шаблонов"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Открыть в редакторе"
+msgstr "Открыть Ñледующий редактор"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Открыть в редакторе"
+msgstr "Открыть предыдущий редактор"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2104,6 +2377,16 @@ msgstr "Переимпортировать"
msgid "Re-Import Changed Resources"
msgstr "Переимпортировать изменённые реÑурÑÑ‹"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Пишите ваш код в методе _run()."
@@ -2243,10 +2526,28 @@ msgid "Cannot navigate to '"
msgstr "Ðе удалоÑÑŒ перейти к '"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Сохранить и переимпортировать"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "ИÑточник:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Файл Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ иÑходный файлы Ñовпадают, нечего делать."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Путь Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ иÑходный пути Ñовпадают, нечего делать."
@@ -2255,6 +2556,20 @@ msgid "Can't move directories to within themselves."
msgstr "Ðевозможно перемеÑтить каталоги внутрь ÑебÑ."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Ошибка при загрузке изображениÑ:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "Ошибка импортированиÑ:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "Ðевозможно работать Ñ '..'"
@@ -2331,6 +2646,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "Добавить выбранную Ñцену(Ñ‹), в качеÑтве потомка выбранного узла."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "ПеремеÑтить"
@@ -2342,10 +2663,31 @@ msgstr "Добавить в группу"
msgid "Remove from Group"
msgstr "Удалить из группы"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "ПоверхноÑтей %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Импортирование Ñцены.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "Импорт 3D Ñцены"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2384,6 +2726,14 @@ msgid "Saving.."
msgstr "Сохранение.."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr " Файлы"
@@ -2470,13 +2820,12 @@ msgid "No target font resource!"
msgstr "Ðет целевого реÑурÑа шрифта!"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
"ÐедопуÑтимое раÑширение файла.\n"
-"ПожалуйÑта, иÑпользуйте .fnt."
+"ПожалуйÑта, иÑпользуйте .font."
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2577,6 +2926,10 @@ msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñетка(и):"
msgid "Mesh"
msgstr "ПолиÑетка"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "ПоверхноÑтей %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Ðет ÑÑмплов Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°!"
@@ -2958,9 +3311,8 @@ msgid "Compress"
msgstr "Сжимать"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "Добавить к проекту (godot.cfg)"
+msgstr "Добавить к проекту (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3166,6 +3518,11 @@ msgid "New name:"
msgstr "Ðовое имÑ:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Редактировать фильтры узла"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "МаÑштаб:"
@@ -3481,6 +3838,7 @@ msgstr "ВоÑÑтанавливает возможноÑть выбора поÑ
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Редактировать"
@@ -3513,10 +3871,6 @@ msgid "Use Pixel Snap"
msgstr "ИÑпользовать попикÑельную привÑзку"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "РаÑÑ‚Ñнуть до размера родителей"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "Скелет.."
@@ -3625,11 +3979,6 @@ msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ одного выбранного
msgid "Change default type"
msgstr "Изменить тип по умолчанию"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Ок"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3669,6 +4018,14 @@ msgstr "Удалена точка полигона"
msgid "Create a new polygon from scratch."
msgstr "Создать новый полигон Ñ Ð½ÑƒÐ»Ñ."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Создан Poly3D"
@@ -3709,22 +4066,53 @@ msgstr "Обновить из Ñцены"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Add point"
-msgstr "Добавить вход"
+msgid "Modify Curve Point"
+msgstr "Изменить кривую"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Изменена карта кривой"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Загрузить заготовку"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "Добавить точку"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "Удалить точку пути"
+msgstr "Удалить точку"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "Линейный"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Вид Ñправа"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "Загрузить реÑурÑ"
+msgstr "Загрузить заготовку"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
-msgstr "Изменить кривую"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Удалить точку пути"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3748,6 +4136,12 @@ 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 "Создан затенÑющий полигон"
@@ -4009,13 +4403,12 @@ msgstr "МаÑка выброÑа очищена"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
msgstr "Генерировать AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
+msgstr "Возможно уÑтановить точку только в ParticlesMaterial материал"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4031,36 +4424,38 @@ msgstr "УÑтановлена маÑка выброÑа"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Создать облаÑть видимоÑти"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
msgstr "МаÑка выброÑа загружена"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "Вершины"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "КоличеÑтво Ñоздаваемых точек:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "Среднее Ð²Ñ€ÐµÐ¼Ñ (Ñек.)"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ (Ñек):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "УÑтановлена маÑка выброÑа"
+msgstr "МаÑка излучениÑ"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "Создать из Ñцены"
+msgstr "Из пикÑелÑ"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "Точек излучениÑ:"
+msgstr "Цвета излучениÑ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4123,7 +4518,6 @@ msgid "Emission Source: "
msgstr "ИÑточник излучениÑ: "
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
msgstr "Генерировать AABB"
@@ -4359,9 +4753,14 @@ msgid "Pitch"
msgstr "Ð’Ñ‹Ñота"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "ОчиÑтить коÑти"
+msgstr "ОчиÑтить недавние файлы"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4388,6 +4787,10 @@ msgid "Save Theme As.."
msgstr "Сохранить тему как.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Следующий Ñкрипт"
@@ -4440,6 +4843,11 @@ msgid "Close All"
msgstr "Закрыть вÑÑ‘"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Добавить в избранное"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4472,6 +4880,11 @@ msgid "Keep Debugger Open"
msgstr "ОÑтавить отладчик открытым"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Открыть Ñледующий редактор"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Окно"
@@ -4484,9 +4897,8 @@ msgid "Move Right"
msgstr "Двигать вправо"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "ПоиÑк Ñправочной документации."
+msgstr "Открыть онлайн документацию Godot"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4540,25 +4952,28 @@ msgstr ""
"принадлежат, загружена"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Выбрать цвет"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "Преобразование изображений"
+msgstr "Переключить региÑтр"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "ВЕРХÐИЙ РЕГИСТР"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "нижний региÑтр"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "С ПропиÑной"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4587,6 +5002,11 @@ msgid "Move Down"
msgstr "ПеремеÑтить вниз"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Удалить точку"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Убрать отÑтуп Ñлева"
@@ -4612,11 +5032,11 @@ msgstr "Удаление пробелов в конце Ñтрок"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Преобразовать отÑтуп в пробелы"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Преобразовать отÑтуп в табулÑцию"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4640,14 +5060,12 @@ msgid "Goto Previous Breakpoint"
msgstr "Перейти к предыдущей точке оÑтановки"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "Конвертировать в.."
+msgstr "Конвертировать в ВЕРХÐИЙ РЕГИСТР"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "Конвертировать в.."
+msgstr "Конвертировать в нижний региÑтр"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -4674,7 +5092,7 @@ msgstr "КонтекÑÑ‚Ð½Ð°Ñ Ñправка"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Шейдер"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -4893,63 +5311,28 @@ msgid "Animation Key Inserted."
msgstr "Ключ анимации вÑтавлен."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "Вперёд"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "В обратном направлении"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "КолёÑико вниз."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "ÐариÑовано обьектов"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "ОбновлÑть при изменениÑÑ…"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð°"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "ОбновлÑть при изменениÑÑ…"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑˆÑйдеров"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "ОбновлÑть при изменениÑÑ…"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾Ñти"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Вызовы отриÑовки"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "ВертекÑ"
+msgstr "Вершины"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -4968,33 +5351,81 @@ msgid "Display Overdraw"
msgstr "Режим проÑвечиваниÑ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
msgstr "Режим без теней"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
msgstr "Окружение"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "Вещицы"
+msgstr "Гизмо"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "ИнформациÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "ПроÑлушиватель звука"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Включить"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr "Обзор налево"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr "Обзор направо"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr "Обзор вперёд"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr "Обзор назад"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr "Обзор вверх"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr "Обзор вниз"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr "Обзор модификатор ÑкороÑти"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "ПредпроÑмотр"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm диалоговое окно"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Режим выделениÑ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+ПКМ: СпиÑок выбора глубины"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Режим Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ (W)"
@@ -5051,24 +5482,20 @@ msgid "Align Selection With View"
msgstr "СовмеÑтить выбранное Ñ Ð²Ð¸Ð´Ð¾Ð¼"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Выделение"
+msgstr "ИнÑтрумент выбора"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "ПеремеÑтить"
+msgstr "ИнÑтрумент перемещениÑ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl: Поворот"
+msgstr "ИнÑтрумент поворот"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "МаÑштаб:"
+msgstr "ИнÑтрумент маÑштаб"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5115,6 +5542,7 @@ msgid "View Grid"
msgstr "Отображать Ñетку"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "ÐаÑтройки"
@@ -5243,6 +5671,11 @@ msgid "StyleBox Preview:"
msgstr "StyleBox предпроÑмотр:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "УÑтановить прÑмоугольник региона"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Режим привÑзки:"
@@ -5300,6 +5733,16 @@ msgid "Remove Item"
msgstr "Удалить Ñлемент"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Удалить Ñлемент клаÑÑа"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Удалить"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Тема"
@@ -5367,7 +5810,7 @@ msgstr "Вкладка 2"
msgid "Tab 3"
msgstr "Вкладка 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Тип:"
@@ -5389,12 +5832,27 @@ msgid "Color"
msgstr "Цвет"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "ОчиÑтить выделенное"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "РиÑовать карту тайлов"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "Дублировать"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "Линейный"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Заливка"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5429,10 +5887,6 @@ msgid "Pick Tile"
msgstr "Выбрать тайл"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Выделение"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "Поворот на 0 градуÑов"
@@ -5492,7 +5946,7 @@ msgstr "Удалить '%s'?"
msgid "Presets"
msgstr "ПредуÑтановки"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Добавить.."
@@ -5541,6 +5995,24 @@ msgid "Make Patch"
msgstr "Создать латку"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "ТекÑтура"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "СпиÑок методов:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "ЭкÑпортировать PCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют:"
@@ -5553,14 +6025,12 @@ msgid "Invalid project path, the path must exist!"
msgstr "Ðеверный путь к проекту, путь должен ÑущеÑтвовать!"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr "ÐедопуÑтимый путь, не должен приÑутÑтвовать godot.cfg."
+msgstr "ÐедопуÑтимый путь, project.godot не должен приÑутÑтвовать."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr "ÐедопуÑтимый путь, должен приÑутÑтвовать godot.cfg."
+msgstr "ÐедопуÑтимый путь, project.godot должен приÑутÑтвовать."
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -5571,19 +6041,14 @@ msgid "Invalid project path (changed anything?)."
msgstr "Ðеверный путь к проекту (Что-то изменили?)."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr "Ðе удалоÑÑŒ Ñоздать godot.cfg в папке проекта."
+msgstr "Ðе удалоÑÑŒ Ñоздать project.godot в папке проекта."
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
msgstr "Следующие файлы не удалоÑÑŒ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· пакета:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Пакет уÑпешно уÑтановлен!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Импортировать ÑущеÑтвующий проект"
@@ -5628,6 +6093,23 @@ msgid "Are you sure to open more than one project?"
msgstr "Вы уверены, что хотите открыть более одного проекта?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Ðе назначена Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñцена. Хотите выбрать?\n"
+"Позже вы можете указать её в параметре \"main_scene\" раÑположенном\n"
+"в \"ÐаÑтройки проекта - ОÑновное - application\"."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "Ð’Ñ‹ уверены, что хотите запуÑтить более одного проекта?"
@@ -5644,10 +6126,6 @@ msgstr ""
"Подтверждаете?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Менеджер проектов"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "СпиÑок проектов"
@@ -5668,264 +6146,295 @@ msgid "New Project"
msgstr "Ðовый проект"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "Удалить шаблон"
+msgstr "Шаблоны"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "Выход"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Кнопка "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Кнопка геймпада"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "ОÑÑŒ геймпада"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Кнопка мыши"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "ÐедопуÑтимое название дейÑÑ‚Ð²Ð¸Ñ (подойдёт вÑÑ‘ кроме '/' или ':')."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "ДейÑтвие '%s' уже ÑущеÑтвует!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Переименовать дейÑтвие"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Добавить дейÑтвие"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Ðажмите любую клавишу..."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ¸ мыши:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Ð›ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "СреднÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° мыши"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "КолёÑико вверх"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "КолёÑико вниз"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Кнопка 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Кнопка 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Кнопка 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Кнопка 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Изменить"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¾Ñи джойÑтика:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "ОÑÑŒ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ джойÑтика:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "Добавить дейÑтвие"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Удалить дейÑтвие"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr "Добавить пуÑтоту"
+msgstr "Добавить Ñобытие"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "УÑтройÑтво"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Кнопка"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Ð›ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "СреднÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ°."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "КолёÑико вверх."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "КолёÑико вниз."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Добавить получающее ÑвойÑтво"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Параметр:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "ÐаÑтройки"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Удалить вход"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ñтроек."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "ÐаÑтройки Ñохранены нормально."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Добавлен перевод"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Перевод удалён"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Добавлен путь перенаправлениÑ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "Перенаправлен реÑÑƒÑ€Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Изменён Ñзык перенаправлениÑ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Удалён реÑÑƒÑ€Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Удалён параметр реÑурÑа перенаправлениÑ"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "ÐаÑтройки проекта (engine.cfg)"
+msgstr "ÐаÑтройки проекта (project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "ОÑновное"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Параметр:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Удалить"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Скопировать на платформу.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "СпиÑок дейÑтвий"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "ДейÑтвие:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "ДевайÑ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "ИндекÑ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "ЛокализациÑ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Переводы"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Переводы:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "ПереназначениÑ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "РеÑурÑÑ‹:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Заменить на Ñзык:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Язык"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "Ðвтозагрузка"
@@ -5966,6 +6475,11 @@ msgid "Assign"
msgstr "Ðазначить"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Выбрать узел"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Ðовый Ñкрипт"
@@ -5978,6 +6492,11 @@ msgid "Error loading file: Not a resource!"
msgstr "Ошибка загрузки файла: Это не реÑурÑ!"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Выберите Узел(узлы) Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr "Выберите узел"
@@ -6075,6 +6594,11 @@ msgstr "Ðргументы главной Ñцены:"
msgid "Scene Run Settings"
msgstr "Параметры запуÑка Ñцены"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Ок"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "Ðет Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñюда Ñцены."
@@ -6120,10 +6644,6 @@ msgid "Delete Node(s)?"
msgstr "Удалить узел(узлы)?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr "Ðевозможно выполнить Ñ ÐºÐ¾Ñ€Ð½ÐµÐ¼."
@@ -6136,6 +6656,18 @@ msgid "Save New Scene As.."
msgstr "Сохранить новую Сцену как.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Редактируемые потомки"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Загрузить как заполнитель"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "ОтброÑить инÑтанÑинг"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Имеет ÑмыÑл!"
@@ -6168,9 +6700,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
msgid "Edit Groups"
@@ -6181,6 +6712,14 @@ msgid "Edit Connections"
msgstr "Редактировать ÑвÑзи"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "ОчиÑтить наÑледование"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Открыть в редакторе"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Удалить узел(узлы)"
@@ -6233,6 +6772,11 @@ msgstr ""
"не ÑущеÑтвует."
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Фильтры"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "Прикрепить новый или ÑущеÑтвующий Ñкрипт к выбранному узлу."
@@ -6240,6 +6784,14 @@ msgstr "Прикрепить новый или ÑущеÑтвующий Ñкри
msgid "Clear a script for the selected node."
msgstr "Убрать Ñкрипт у выбранного узла."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "ОчиÑтить наÑледование? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "ОчиÑтить!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Переключена видимоÑть Spatial"
@@ -6250,56 +6802,59 @@ msgstr "Переключена видимоÑть CanvasItem"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Конфигурации узла, предупреждение:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"Узел Ñодержит ÑвÑзи и группы\n"
+"Ðажмите, чтобы показать панель Ñигналов."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"Узел Ñодержит ÑвÑзи.\n"
+"Ðажмите, чтобы показать панель Ñигналов."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Параметры отладки"
+"Узел принадлежит к группе.\n"
+"Ðажмите, чтобы показать панель групп."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "ЭкземплÑÑ€:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Следующий Ñкрипт"
+msgstr "Открыть Ñкрипт"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"Узел заблокирован.\n"
+"Ðажмите чтобы разблокировать"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Потомки не выделÑÑŽÑ‚ÑÑ.\n"
+"Ðажмите чтобы выделÑлиÑÑŒ"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "Переключена видимоÑть Spatial"
+msgstr "Переключение видимоÑти"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6314,32 +6869,9 @@ msgid "Scene Tree (Nodes):"
msgstr "Дерево Ñцены (Узлы):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Редактируемые потомки"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Загрузить как заполнитель"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "ОтброÑить инÑтанÑинг"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Открыть в редакторе"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "ОчиÑтить наÑледование"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "ОчиÑтить наÑледование? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "ОчиÑтить!"
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "Конфигурации узла, предупреждение:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6347,14 +6879,22 @@ msgstr "Выбрать узел"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Ошибка при загрузке изображениÑ:"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr "Ðе удалоÑÑŒ Ñоздать Ñкрипт в файловой ÑиÑтеме."
+msgstr "Ошибка - Ðе удалоÑÑŒ Ñоздать Ñкрипт в файловой ÑиÑтеме."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
msgstr "Ошибка при загрузке Ñкрипта из %s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "Ð/Д"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Ðе указан путь"
@@ -6372,66 +6912,53 @@ msgstr "ÐедопуÑтимое раÑширение"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Выбрано неверное раÑширение"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "ÐедопуÑтимый путь."
+msgstr "Ðеверный путь"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "Ðеверный Ð¸Ð½Ð´ÐµÐºÑ ÑвойÑтва имени."
+msgstr "Ðеверное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ путь наÑледуемого предка"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "Скрипт"
+msgstr "Скрипт корректен"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "Ð/Д"
+msgstr "ДопуÑкаютÑÑ: a-z, A-Z, 0-9 и _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Ð’Ñтроенный Ñкрипт (в файл Ñцены)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
msgstr "Создать новый Ñкрипт"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
msgstr "Загрузить ÑущеÑтвующий Ñкрипт"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "ÐаÑледует:"
+msgstr "ÐаÑледует"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Ð˜Ð¼Ñ ÐšÐ»Ð°ÑÑа:"
+msgstr "Ð˜Ð¼Ñ ÐšÐ»Ð°ÑÑа"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Удалить шаблон"
+msgstr "Шаблон"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
msgstr "Ð’Ñтроенный Скрипт"
@@ -6572,6 +7099,10 @@ msgid "Change Light Radius"
msgstr "Изменён Ñ€Ð°Ð´Ð¸ÑƒÑ Ñвета"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Изменён FOV камеры"
@@ -6605,7 +7136,7 @@ msgstr "Изменены границы уведомителÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Изменить AABB чаÑтиц"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -6654,6 +7185,137 @@ msgstr "ÐедопуÑтимый формат ÑкземплÑра ÑловарÑ
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "ÐедопуÑтимый ÑкземплÑÑ€ ÑÐ»Ð¾Ð²Ð°Ñ€Ñ (неверные подклаÑÑÑ‹)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Удалить выделенное"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Дублировать выделенное"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Вид Ñверху"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Отключено"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Поворот"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Поворот"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Поворот"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Создать новый"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Создать новый проект"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "Стирать карту тайлов"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Только выделÑть"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Только выделÑть"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Параметры привÑзки"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "ЭкземплÑÑ€:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " Файлы"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6691,6 +7353,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Переполнение Ñтека Ñ Ð³Ð»ÑƒÐ±Ð¸Ð½Ð¾Ð¹ Ñтека: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Редактирование аргументов Ñигнала:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Изменение типа Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Изменено входное имÑ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Изменено Ñтандартное значение"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Редактировать переменную:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Функции:"
@@ -6731,26 +7418,6 @@ msgid "Add Signal"
msgstr "Добавить Ñигнал"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Удалить функцию"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Удалить переменную"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Редактирование переменной:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Удалить Ñигнал"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Редактирование Ñигнала:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "Изменить выражение"
@@ -6759,6 +7426,16 @@ msgid "Add Node"
msgstr "Добавить узел"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Удалить недопуÑтимые ключи"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Граф(ы) дублированы"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Зажмите Meta, чтобы добавить Getter. Зажмите Shift, чтобы добавить "
@@ -6803,6 +7480,26 @@ msgid "Add Setter Property"
msgstr "Добавить уÑтанавливающее ÑвойÑтво"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Изменить тип"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Удалить узел(узлы)"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Удалён граф шейдера"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "ПриÑоединить к узлу:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "УÑловие"
@@ -6831,6 +7528,56 @@ msgid "Get"
msgstr "Получить"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Изменено входное имÑ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "Ðевозможно работать Ñ '..'"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Ðет реÑурÑа в буфере обмена!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Ð’Ñтавить узлы"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Удалить функцию"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Редактировать переменную:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Удалить переменную"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Редактирование Ñигнала:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Удалить Ñигнал"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Редактирование переменной:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Редактирование Ñигнала:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Базовый тип:"
@@ -6851,10 +7598,6 @@ msgid "Edit Variable:"
msgstr "Редактировать переменную:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Изменить"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Удалить выделенное"
@@ -6931,14 +7674,6 @@ msgstr ""
"ÐедопуÑтимое значение, возвращаемое _step(), должно быть целое чиÑло(seq "
"out) или Ñтрока (error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "проÑто нажата"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "проÑто отпущена"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr "ЗапуÑтить в браузере"
@@ -6959,79 +7694,6 @@ msgstr "Ðе удалоÑÑŒ прочитать файл:\n"
msgid "Could not open template for export:\n"
msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:\n"
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr "Ðе могу прочитать файл Ñертификата. Уверены, что путь и пароль верны?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "Ошибка при Ñоздании объекта подпиÑи."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Ошибка при Ñоздании подпиÑи пакета."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Шаблоны ÑкÑпорта не найдены.\n"
-"Скачайте и уÑтановите шаблоны ÑкÑпорта."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "ПользовательÑкий отладочный пакет не найден."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "ПользовательÑкий релизный пакет не найден."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Ðеверное уникальное имÑ."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "Ðеверный GUID продукта."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "Ðеверный GUID издателÑ."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "ÐедопуÑтимый цвет фона."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Ðеверные размеры логотипа Ð´Ð»Ñ Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½Ð° (должны быть 50Ñ…50)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "Ðеверные размеры квадратного логотипа 44x44 (должны быть 44x44)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "Ðеверные размеры квадратного логотипа 71x71 (должны быть 71x71)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "Ðеверные размеры квадратного логотипа 150x150 (должны быть 150x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "Ðеверные размеры квадратного логотипа 310x310 (должны быть 310x310)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "Ðеверные размеры широкого логотипа 310x150 (должны быть 310x150)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "Ðеверные размеры заÑтавки (должны быть 620x300)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7129,6 +7791,7 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"Материал Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ чаÑтиц не назначен, поÑтому поведение отÑутÑтвует."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7136,6 +7799,13 @@ msgstr ""
"PathFollow2D работает только при уÑтановке его в качеÑтве дочернего узла "
"Path2D."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7166,23 +7836,33 @@ msgstr ""
"VisibilityEnable2D работает наилучшим образом при иÑпользовании ÐºÐ¾Ñ€Ð½Ñ "
"редактируемой Ñцены, как прÑмого родителÑ."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-"CollisionShape Ñлужит только Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ñтолкновений фигурам типа "
-"CollisionObject. ПожалуйÑта иÑпользовать его только в качеÑтве дочернего Ð´Ð»Ñ "
-"Area, StaticBody, RigidBody, KinematicBody и др. чтобы придать им форму."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"Shape должен быть предуÑмотрен Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ CollisionShape. ПожалуйÑта, "
-"Ñоздайте shape-реÑÑƒÑ€Ñ Ð´Ð»Ñ Ñтого!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7198,6 +7878,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "ПуÑтой CollisionPolygon не влиÑет на ÑтолкновениÑ."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape Ñлужит только Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ñтолкновений фигурам типа "
+"CollisionObject. ПожалуйÑта иÑпользовать его только в качеÑтве дочернего Ð´Ð»Ñ "
+"Area, StaticBody, RigidBody, KinematicBody и др. чтобы придать им форму."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"Shape должен быть предуÑмотрен Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ CollisionShape. ПожалуйÑта, "
+"Ñоздайте shape-реÑÑƒÑ€Ñ Ð´Ð»Ñ Ñтого!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7214,6 +7912,13 @@ msgstr ""
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
+msgstr "Ðичего не видно, потому что полиÑетки не были назначены на отриÑовку."
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
msgstr ""
#: scene/3d/remote_transform.cpp
@@ -7237,12 +7942,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Режим запуÑка:"
+msgid "Raw Mode"
+msgstr "Режим оÑмотра"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Добавить текущий цвет как преÑет"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7252,22 +7957,6 @@ msgstr "Внимание!"
msgid "Please Confirm..."
msgstr "Подтверждение..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Открыть файл"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Открыть файл(ы)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Открыть каталог"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Открыть каталог или файл"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7293,11 +7982,13 @@ msgstr ""
"уÑтановите\n"
"минимальный размер вручную."
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"Среда по умолчанию, как определено в ÐаÑтройках проекта (Rendering -> "
+"Viewport -> Default Environment) не может быть загружена."
#: scene/main/viewport.cpp
msgid ""
@@ -7312,6 +8003,97 @@ msgstr ""
"Ñделайте его целью рендеринга и передайте его внутренние текÑтуры какому-то "
"другому узлу Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Закрыть Ñцену? (ÐеÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны.)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Открыть менеджер проектов? \n"
+#~ "(ÐеÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны.)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Закрыть и перейти к предыдущей Ñцене"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "РаÑÑ‚Ñнуть до размера родителей"
+
+#~ msgid "Del"
+#~ msgstr "Удалить"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Скопировать на платформу.."
+
+#~ msgid "just pressed"
+#~ msgstr "проÑто нажата"
+
+#~ msgid "just released"
+#~ msgstr "проÑто отпущена"
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Ðе могу прочитать файл Ñертификата. Уверены, что путь и пароль верны?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "Ошибка при Ñоздании объекта подпиÑи."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Ошибка при Ñоздании подпиÑи пакета."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Шаблоны ÑкÑпорта не найдены.\n"
+#~ "Скачайте и уÑтановите шаблоны ÑкÑпорта."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "ПользовательÑкий отладочный пакет не найден."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "ПользовательÑкий релизный пакет не найден."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Ðеверное уникальное имÑ."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "Ðеверный GUID продукта."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Ðеверный GUID издателÑ."
+
+#~ msgid "Invalid background color."
+#~ msgstr "ÐедопуÑтимый цвет фона."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "Ðеверные размеры логотипа Ð´Ð»Ñ Ð¼Ð°Ð³Ð°Ð·Ð¸Ð½Ð° (должны быть 50Ñ…50)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "Ðеверные размеры квадратного логотипа 44x44 (должны быть 44x44)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "Ðеверные размеры квадратного логотипа 71x71 (должны быть 71x71)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr ""
+#~ "Ðеверные размеры квадратного логотипа 150x150 (должны быть 150x150)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr ""
+#~ "Ðеверные размеры квадратного логотипа 310x310 (должны быть 310x310)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "Ðеверные размеры широкого логотипа 310x150 (должны быть 310x150)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr "Ðеверные размеры заÑтавки (должны быть 620x300)."
+
+#~ msgid "RAW Mode"
+#~ msgstr "Грубый режим"
+
#~ msgid "Node From Scene"
#~ msgstr "Узел Ñо Ñцены"
@@ -7397,9 +8179,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "Заменено %d Ñовпадений."
-#~ msgid "Please save the scene first."
-#~ msgstr "ПожалуйÑта Ñначала Ñохраните Ñцену."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Сохранить переводимые Ñтроки"
@@ -7611,9 +8390,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñкрипта (256-бит, а в шеÑтнадцатеричном виде):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "ЭкÑпортировать PCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "ЭкÑпортировать PCK проекта"
@@ -7762,9 +8538,6 @@ msgstr ""
#~ msgid "Node Group(s)"
#~ msgstr "Группа(ы) нода"
-#~ msgid "Set region_rect"
-#~ msgstr "УÑтановить прÑмоугольник региона"
-
#~ msgid "Plugin List:"
#~ msgstr "СпиÑок плагинов:"
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index 0b30bc80f4..b7ac0a7864 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -146,7 +146,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -380,7 +381,8 @@ msgstr "Súbor:"
msgid "Description:"
msgstr "Popis:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -391,9 +393,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr ""
@@ -466,7 +468,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -527,17 +529,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -553,7 +554,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -565,7 +566,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -717,14 +718,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -829,7 +830,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -909,12 +910,181 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "Konštanty:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "Konštanty:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Všetky vybrané"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -928,21 +1098,45 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Popis:"
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1045,6 +1239,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1122,6 +1320,22 @@ msgstr ""
msgid "Open"
msgstr "Otvoriť"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Otvoriť súbor"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Otvoriť súbor(y)"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Otvorit prieÄinok"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "OtvoriÅ¥ súbor / prieÄinok"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1247,6 +1461,15 @@ msgid "Signals:"
msgstr "Signály:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Popis:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Konštanty:"
@@ -1264,7 +1487,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1314,6 +1537,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1432,11 +1659,12 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr ""
+#, fuzzy
+msgid "Save & Close"
+msgstr "Uložiť súbor"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1448,23 +1676,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1488,9 +1720,28 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Uložiť súbor"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1498,6 +1749,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1530,6 +1797,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1546,6 +1818,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1595,10 +1871,6 @@ msgstr "Uložiť súbor"
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1878,6 +2150,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1887,26 +2163,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1927,9 +2187,18 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Popis:"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2032,6 +2301,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2168,10 +2447,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2180,6 +2475,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2256,6 +2563,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2267,9 +2580,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2309,6 +2641,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Súbor:"
@@ -2496,6 +2836,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3077,6 +3421,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Súbor:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3388,6 +3737,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3420,10 +3770,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3532,11 +3878,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3574,6 +3915,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3613,6 +3962,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Signály:"
@@ -3623,11 +3984,28 @@ msgid "Remove point"
msgstr "Všetky vybrané"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3652,6 +4030,12 @@ 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 ""
@@ -3941,6 +4325,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4258,6 +4647,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4282,6 +4677,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Next script"
msgstr "Popis:"
@@ -4335,6 +4734,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4367,6 +4770,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4430,6 +4837,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4476,6 +4887,10 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Delete Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4780,91 +5195,99 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4872,6 +5295,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4991,6 +5425,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5119,6 +5554,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5177,6 +5616,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5244,7 +5693,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5266,11 +5715,24 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5306,10 +5768,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5369,7 +5827,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5416,6 +5874,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5452,10 +5926,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5500,6 +5970,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5514,10 +5997,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5546,254 +6025,283 @@ msgstr "Všetky vybrané"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Os"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Zariadenie"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "TlaÄidlo"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5834,6 +6342,10 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "Popis:"
@@ -5847,6 +6359,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "Vložiť"
@@ -5943,6 +6459,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5986,10 +6507,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6002,6 +6519,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6044,6 +6573,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6096,6 +6633,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Filter:"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6103,6 +6645,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6134,10 +6684,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6175,35 +6721,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6215,6 +6741,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6255,10 +6785,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6428,6 +6954,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6509,6 +7039,125 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Všetky vybrané"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Vytvoriť adresár"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Súbor:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6540,6 +7189,26 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Signal Arguments"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr ""
@@ -6582,34 +7251,19 @@ msgid "Add Signal"
msgstr "Signály:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Function"
-msgstr "Všetky vybrané"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
+msgid "Change Expression"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Signal"
-msgstr "Všetky vybrané"
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Editing Signal:"
-msgstr "Signály:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
+msgid "Remove VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
+msgid "Duplicate VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6653,6 +7307,23 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Vložiť"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6681,6 +7352,55 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Vložiť"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Function"
+msgstr "Všetky vybrané"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Signály:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Signal"
+msgstr "Všetky vybrané"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Editing Signal:"
+msgstr "Signály:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6701,10 +7421,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6779,14 +7495,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6807,77 +7515,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6963,6 +7600,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6985,17 +7629,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7009,6 +7668,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7024,6 +7696,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7040,7 +7719,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7055,22 +7734,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Otvoriť súbor"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Otvoriť súbor(y)"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Otvorit prieÄinok"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "OtvoriÅ¥ súbor / prieÄinok"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7089,7 +7752,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index e50f907b65..daa7533a8c 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -146,7 +146,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -378,7 +379,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -389,9 +391,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Zapri"
@@ -464,7 +466,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -525,17 +527,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -551,7 +552,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -563,7 +564,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -715,14 +716,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -827,7 +828,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -907,12 +908,181 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "Preimenuj Funkcijo"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Izbriši Izbrano"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Izbriši Izbrano"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -926,21 +1096,44 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1043,6 +1236,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1120,6 +1317,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1245,6 +1458,15 @@ msgid "Signals:"
msgstr "Signali:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Funkcije:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1261,7 +1483,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1311,6 +1533,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1429,11 +1655,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1445,9 +1671,17 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr ""
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr ""
@@ -1457,11 +1691,7 @@ msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1485,9 +1715,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1495,6 +1743,22 @@ msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1527,6 +1791,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1543,6 +1812,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1591,10 +1864,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1875,6 +2144,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1884,26 +2157,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1924,9 +2181,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2027,6 +2292,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2163,10 +2438,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2175,6 +2466,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2251,6 +2554,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2262,9 +2571,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2304,6 +2632,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2490,6 +2826,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3071,6 +3411,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Uredi Spremenljivko:"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3382,6 +3727,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Uredi"
@@ -3414,10 +3760,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3526,11 +3868,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3568,6 +3905,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3607,6 +3952,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "Dodaj Signal"
@@ -3617,11 +3974,28 @@ msgid "Remove point"
msgstr "Odstrani Signal"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "Odstrani Signal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3646,6 +4020,12 @@ 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 ""
@@ -3935,6 +4315,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4252,6 +4637,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4276,6 +4667,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4329,6 +4724,10 @@ msgid "Close All"
msgstr "Zapri"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4361,6 +4760,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4424,6 +4827,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4470,6 +4877,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Izbriši Izbrano"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4774,92 +5186,100 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Spremeni"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Spremeni"
+msgid "Display Unshaded"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Down"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4867,6 +5287,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4984,6 +5415,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5112,6 +5544,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5169,6 +5605,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Odstrani Spremenljivko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Odstrani Signal"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5236,7 +5682,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5258,11 +5704,23 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5298,10 +5756,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5361,7 +5815,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5408,6 +5862,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5444,10 +5914,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5492,6 +5958,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5506,10 +5985,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5538,254 +6013,285 @@ msgstr "Odstrani Spremenljivko"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Spremeni"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Dodaj Getter Lastnost"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "Izbriši Izbrano"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5826,6 +6332,11 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Dodaj Setter Lastnost"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5838,6 +6349,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr ""
@@ -5934,6 +6449,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5977,10 +6497,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5993,6 +6509,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6035,6 +6563,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6085,6 +6621,10 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6092,6 +6632,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6123,10 +6671,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6163,35 +6707,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6203,6 +6727,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6245,10 +6773,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6414,6 +6938,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6496,6 +7024,123 @@ msgstr "Neveljaven primer formata slovarja (neveljavna skripta v @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Neveljaven primer slovarja (neveljavni podrazredi)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Izbriši Izbrano"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6533,6 +7178,28 @@ msgid "Stack overflow with stack depth: "
msgstr "Sklad prepoln z stack depth: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "Uredi Argumente Signala:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Uredi Spremenljivko:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "Funkcije:"
@@ -6573,34 +7240,23 @@ msgid "Add Signal"
msgstr "Dodaj Signal"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "Odstrani Funkcijo"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Odstrani Spremenljivko"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Urejanje Spremenljivke:"
+msgid "Change Expression"
+msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "Odstrani Signal"
+msgid "Add Node"
+msgstr "Dodaj Node"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "Urejanje Signala:"
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Odstrani Spremenljivko"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
+msgid "Duplicate VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr "Dodaj Node"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6642,6 +7298,24 @@ msgid "Add Setter Property"
msgstr "Dodaj Setter Lastnost"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Osnovni Tip:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Move Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Odstrani Spremenljivko"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6670,6 +7344,52 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "Odstrani Funkcijo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Uredi Spremenljivko:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Odstrani Spremenljivko"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "Urejanje Signala:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "Odstrani Signal"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Urejanje Spremenljivke:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "Urejanje Signala:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Osnovni Tip:"
@@ -6690,10 +7410,6 @@ msgid "Edit Variable:"
msgstr "Uredi Spremenljivko:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Spremeni"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Izbriši Izbrano"
@@ -6770,14 +7486,6 @@ msgstr ""
"Neveljavna vrnitev vrednosti od _step(), mora biti število (seq out), ali "
"string (error)."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6798,78 +7506,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "Neveljaven indeks lastnosti imena."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6960,6 +7596,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6982,17 +7625,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7006,6 +7664,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7021,6 +7692,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7037,7 +7715,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7052,22 +7730,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7086,7 +7748,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7100,6 +7762,10 @@ msgid ""
"texture to some node for display."
msgstr ""
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "Neveljaven indeks lastnosti imena."
+
#~ msgid ""
#~ "Custom node has no _get_output_port_unsequenced(idx,wmem), but "
#~ "unsequenced ports were specified."
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 9e140b2375..e89bbf043a 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -8,15 +8,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-05-08 10:38+0000\n"
-"Last-Translator: Noshyaar <poommetee@protonmail.com>\n"
+"PO-Revision-Date: 2017-07-15 12:39+0000\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"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.14-dev\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -147,7 +147,8 @@ msgstr "ถัดไป"
msgid "Goto Prev Step"
msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "เส้นตรง"
@@ -359,21 +360,19 @@ msgstr "เปลี่ยนค่าในอาร์เรย์"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "ฟรี"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "รุ่น:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "ค่าคงที่:"
+msgstr "ประà¸à¸­à¸šà¸”้วย:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr " ไฟล์"
+msgstr "ดูไฟล์"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -381,7 +380,8 @@ msgstr " ไฟล์"
msgid "Description:"
msgstr "รายละเอียด:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "ติดตั้ง"
@@ -392,161 +392,152 @@ msgstr "ติดตั้ง"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "ปิด"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "ไม่พบตำà¹à¸«à¸™à¹ˆà¸‡à¸™à¸µà¹‰:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "ค้นหาไม่สำเร็จ"
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "เชื่อมต่อไม่ได้ à¸à¸£à¸¸à¸“าลองใหม่"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "เชื่อมโยง.."
+msgstr "เชื่อมต่อไม่ได้"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "เชื่อมไปยังโหนด:"
+msgstr "ไม่สามารถเชื่อมต่อà¸à¸±à¸šà¹‚ฮสต์:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸šà¸ˆà¸²à¸à¹‚ฮสต์:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸š"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "ไม่ทราบรูปà¹à¸šà¸šà¹„ฟล์ที่ร้องขอ:"
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด รหัส:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "ร้องขอผิดพลาด"
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
-msgstr ""
+msgstr "เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "ผิดพลาด:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "à¹à¸®à¸Šà¸œà¸´à¸”พลาด ไฟล์ดาวน์โหลดอาจเสียหาย"
#: editor/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "ที่ควรจะเป็น:"
#: editor/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "ที่ได้รับ:"
#: editor/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "ผิดพลาดในà¸à¸²à¸£à¸•รวจสอบà¹à¸®à¸Š SHA256"
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "à¸à¸²à¸£à¸”าวน์โหลดผิดพลาด:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "สำเร็จ!"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸±à¸šà¸‚้อมูล:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึà¸.."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„้นหา.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "เชื่อมโยง.."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อ.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "ทดสอบ"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¹‰à¸­à¸‡à¸‚อ.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¸œà¸´à¸”พลาด!"
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "พร้อมใช้งาน"
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "ลองใหม่"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Download Error"
-msgstr "ดาวน์โหลด"
+msgstr "ดาวน์โหลดผิดพลาด"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดไฟล์นี้อยู่à¹à¸¥à¹‰à¸§!"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "à¹à¸£à¸à¸ªà¸¸à¸”"
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "ถัดไป"
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "ท้ายสุด"
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "ทั้งหมด"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "ค้นหา:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "ค้นหา"
@@ -562,7 +553,7 @@ msgstr "ค้นหา"
msgid "Import"
msgstr "นำเข้า"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "ปลั๊à¸à¸­à¸´à¸™"
@@ -574,7 +565,7 @@ msgstr "เรียงตาม:"
msgid "Reverse"
msgstr "ย้อนà¸à¸¥à¸±à¸š"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "หมวดหมู่:"
@@ -726,14 +717,14 @@ msgstr "เชื่อมไปยังโหนด:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "เพิ่ม"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "ลบ"
@@ -842,7 +833,7 @@ msgid "Resource"
msgstr "รีซอร์ส"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡"
@@ -924,12 +915,196 @@ msgstr "ตัวจัดà¸à¸²à¸£à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¸—ี่ไม่มี
msgid "Delete selected files?"
msgstr "ลบไฟล์ที่เลือ�"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "ลบ"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "ขอขอบคุณจาà¸à¸Šà¸¸à¸¡à¸Šà¸™à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ Godot!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "ขอบคุณ!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "ผู้ช่วยพัฒนา Godot Engine"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "โดย:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "ผู้พัฒนา"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "ผู้พัฒนา"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "ประà¸à¸­à¸šà¸”้วย:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "ประà¸à¸­à¸šà¸”้วย:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "ไม่บีบอัด"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "เพิ่ม"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "ลบสิ่งที่เลือà¸"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "ตัวเลือà¸à¸‰à¸²à¸à¸¢à¹ˆà¸­à¸¢"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "ทำซ้ำ"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "ลบสิ่งที่เลือà¸"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "เพิ่ม Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "ลบเลย์เอาต์"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "ทำซ้ำà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "บันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸­à¸²à¸•์ของ Audio Bus เป็น.."
@@ -943,23 +1118,53 @@ msgid "Open Audio Bus Layout"
msgstr "เปิดเลย์เอาต์ของ Audio Bus"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง\n"
+"à¸à¸£à¸¸à¸“าใช้ .font"
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "เพิ่ม Bus"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "สร้างรีซอร์สใหม่"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "โหลด"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "โหลดรีซอร์สที่มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸”ิสà¸à¹Œà¹à¸¥à¸°à¸—ำà¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•่ง"
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "บันทึà¸à¹€à¸›à¹‡à¸™"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "บันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸­à¸²à¸•์ของ Audio Bus เป็น.."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "ค่าเริ่มต้น"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "ชื่อผิดพลาด"
@@ -1060,6 +1265,11 @@ msgid "Updating scene.."
msgstr "อัพเดทฉาà¸.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "à¸à¸£à¸¸à¸“าบันทึà¸à¸‰à¸²à¸à¸à¹ˆà¸­à¸™"
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "เลือà¸à¹‚ฟลเดอร์"
@@ -1137,6 +1347,22 @@ msgstr "ทุà¸à¹„ฟล์ (*)"
msgid "Open"
msgstr "เปิด"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "เปิดไฟล์"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "เปิดไฟล์"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "เปิดโฟลเดอร์"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "เปิดไฟล์หรือโฟลเดอร์"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1264,6 +1490,15 @@ msgid "Signals:"
msgstr "สัà¸à¸à¸²à¸“:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ค่าคงที่:"
@@ -1280,7 +1515,8 @@ msgid "Search Text"
msgstr "ค้นหาคำ"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " ข้อความ:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1330,6 +1566,11 @@ msgid "Creating Thumbnail"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸£à¸¹à¸›à¸•ัวอย่าง"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr "บันทึà¸à¸‰à¸²à¸à¹„ม่ได้ อาจจะมีà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹„ม่สมบูรณ์"
@@ -1391,8 +1632,9 @@ msgid "Make Built-In"
msgstr "à¸à¸±à¸‡"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Make Sub-Resources Unique"
-msgstr ""
+msgstr "ไม่ใช้รีซอร์สร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
#: editor/editor_node.cpp
msgid "Open in Help"
@@ -1455,26 +1697,34 @@ msgid "Quick Open Script.."
msgstr "เปิดไฟล์สคริปต์ด่วน.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "ใช่"
+#, fuzzy
+msgid "Save & Close"
+msgstr "บันทึà¸à¹„ฟล์"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "ปิดไฟล์ฉาà¸? (à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ไม่ได้บันทึà¸à¸ˆà¸°à¸ªà¸¹à¸à¸«à¸²à¸¢)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "บันทึà¸à¸‰à¸²à¸à¹€à¸›à¹‡à¸™.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "โหนด"
+msgstr "ไม่"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "ใช่"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "ฉาà¸à¸™à¸µà¹‰à¸¢à¸±à¸‡à¹„ม่ได้บันทึภบันทึà¸à¸à¹ˆà¸­à¸™à¹€à¸£à¸´à¹ˆà¸¡?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "ส่งออภMesh Library"
@@ -1484,12 +1734,9 @@ msgid "Export Tile Set"
msgstr "ส่งออภTile Set"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "ออà¸"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "ออà¸à¹‚ปรà¹à¸à¸£à¸¡?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1512,18 +1759,52 @@ msgid "Quick Run Scene.."
msgstr "เริ่มฉาà¸à¸”่วน.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "ออà¸"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "ออà¸à¹‚ปรà¹à¸à¸£à¸¡?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "บันทึà¸à¹„ฟล์"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"เปิดตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์?\n"
-"(à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ไม่ได้บันทึà¸à¸ˆà¸°à¸ªà¸¹à¸à¸«à¸²à¸¢)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "เลือà¸à¸‰à¸²à¸à¹€à¸£à¸´à¹ˆà¸¡à¸•้น"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1560,6 +1841,11 @@ msgstr "บันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸­à¸²à¸•์"
msgid "Delete Layout"
msgstr "ลบเลย์เอาต์"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "ค่าเริ่มต้น"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "สลับฉาà¸"
@@ -1576,6 +1862,11 @@ msgstr "à¹à¸¥à¸°à¸­à¸µà¸ %d ไฟล์หรือโฟลเดอร์"
msgid "Distraction Free Mode"
msgstr "โหมดไร้สิ่งรบà¸à¸§à¸™"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "โหมดไร้สิ่งรบà¸à¸§à¸™"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "ฉาà¸"
@@ -1586,7 +1877,7 @@ msgstr "ไปยังฉาà¸à¸—ี่เพิ่งเปิด"
#: editor/editor_node.cpp
msgid "Next tab"
-msgstr "à¹à¸—็บต่อไป"
+msgstr "à¹à¸—็บถัดไป"
#: editor/editor_node.cpp
msgid "Previous tab"
@@ -1624,10 +1915,6 @@ msgstr "บันทึà¸à¸—ุà¸à¸‰à¸²à¸"
msgid "Close Scene"
msgstr "ปิดไฟล์ฉาà¸"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "ปิดไปยังฉาà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "เปิดไฟล์ล่าสุด"
@@ -1664,9 +1951,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "โปรเจà¸à¸•์à¹à¸¥à¸°à¹€à¸„รื่องมืออื่น ๆ"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "โปรเจà¸à¸•์ใหม่"
+msgstr "โปรเจà¸à¸•์"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1768,9 +2054,8 @@ msgstr ""
"ถ้าใช้à¸à¸±à¸šà¸­à¸¸à¸›à¸à¸£à¸“์รีโมท จะดีà¸à¸§à¹ˆà¸²à¸–้าเปิดระบบไฟล์เครือข่ายด้วย"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "à¹à¸à¹‰à¹„ข"
+msgstr "โปรà¹à¸à¸£à¸¡"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1790,24 +2075,23 @@ msgstr "จัดà¸à¸²à¸£à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸"
#: editor/editor_node.cpp
msgid "Help"
-msgstr ""
+msgstr "ช่วยเหลือ"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Classes"
msgstr "คลาส"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "ปิดคู่มือ"
+msgstr "คู่มือ"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "ถาม/ตอบ"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "ระบบติดตามบัค"
#: editor/editor_node.cpp
msgid "About"
@@ -1895,7 +2179,7 @@ msgstr "ไปยังวัตถุที่ปรับà¹à¸•่งà¸à¹ˆà¸­
#: editor/editor_node.cpp
msgid "Go to the next edited object in history."
-msgstr "ไปยังวัตถุที่ปรับà¹à¸•่งต่อไป"
+msgstr "ไปยังวัตถุที่ปรับà¹à¸•่งถัดไป"
#: editor/editor_node.cpp
msgid "History of recently edited objects."
@@ -1915,7 +2199,11 @@ msgstr "โหนด"
#: editor/editor_node.cpp
msgid "Output"
-msgstr "เอาท์พุต"
+msgstr "ข้อความ"
+
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
@@ -1926,26 +2214,10 @@ msgid "Update"
msgstr "อัพเดท"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "ขอขอบคุณจาà¸à¸Šà¸¸à¸¡à¸Šà¸™à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ Godot!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "ขอบคุณ!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "นำเข้าà¹à¸¡à¹ˆà¹à¸šà¸šà¸ˆà¸²à¸à¹„ฟล์ ZIP"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "ส่งออà¸à¹‚ปรเจà¸à¸•์"
@@ -1966,38 +2238,41 @@ msgid "Open & Run a Script"
msgstr "เปิดà¹à¸¥à¸°à¸£à¸±à¸™à¸ªà¸„ริปต์"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "สืบทอดฉาà¸à¹ƒà¸«à¸¡à¹ˆ.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "โหลดผิดพลาด"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "เลือà¸"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
+msgstr "เปิดตัวà¹à¸à¹‰à¹„ข 2 มิติ"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
+msgstr "เปิดตัวà¹à¸à¹‰à¹„ข 3 มิติ"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
+msgstr "เปิดตัวà¹à¸à¹‰à¹„ขสคริปต์"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "ส่งออà¸à¹„ลบรารี"
+msgstr "เปิดà¹à¸«à¸¥à¹ˆà¸‡à¸£à¸§à¸¡à¸—รัพยาà¸à¸£"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
+msgstr "เปิดตัวà¹à¸à¹‰à¹„ขถัดไป"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
+msgstr "เปิดตัวà¹à¸à¹‰à¹„ขà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2075,6 +2350,16 @@ msgstr "นำเข้าอีà¸à¸„รั้ง"
msgid "Re-Import Changed Resources"
msgstr "นำเข้ารีซอร์สที่à¹à¸à¹‰à¹„ขอีà¸à¸„รั้ง"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "เขียนโปรà¹à¸à¸£à¸¡à¹ƒà¸™à¹€à¸¡à¸—็อด _run()"
@@ -2167,9 +2452,8 @@ msgid "Error creating path for templates:\n"
msgstr "ผิดพลาดขณะสร้างตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸¡à¹ˆà¹à¸šà¸š:\n"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Extracting Export Templates"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ลายบีบอัดà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸"
#: editor/export_template_manager.cpp
msgid "Importing:"
@@ -2212,10 +2496,28 @@ msgid "Cannot navigate to '"
msgstr "ไม่สามารถไปยัง '"
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "บันทึà¸à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าอีà¸à¸„รั้ง"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "ต้นฉบับ:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "ไฟล์ต้นทางà¹à¸¥à¸°à¸›à¸¥à¸²à¸¢à¸—างเหมือนà¸à¸±à¸™ ไม่ทำอะไร"
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "ไฟล์ต้นทางà¹à¸¥à¸°à¸›à¸¥à¸²à¸¢à¸—างอยู่ที่เดียวà¸à¸±à¸™ ไม่ทำอะไร"
@@ -2224,6 +2526,20 @@ msgid "Can't move directories to within themselves."
msgstr "ย้ายโฟลเดอร์เข้ามาในตัวเองไม่ได้"
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "ผิดพลาดขณะโหลดรูป:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "ผิดพลาดขณะนำเข้า:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "ทำงานใน '..' ไม่ได้"
@@ -2300,6 +2616,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "อินสà¹à¸•นซ์ฉาà¸à¸—ี่เลือà¸à¹ƒà¸«à¹‰à¹€à¸›à¹‡à¸™à¹‚หนดลูà¸à¸‚องโหนดที่เลือà¸"
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "ย้าย"
@@ -2311,10 +2633,31 @@ msgstr "เพิ่มไปยังà¸à¸¥à¸¸à¹ˆà¸¡"
msgid "Remove from Group"
msgstr "ลบออà¸à¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "%d พื้นผิว"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าฉาà¸.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "นำเข้าฉาภ3D"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2353,6 +2696,14 @@ msgid "Saving.."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึà¸.."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr " ไฟล์"
@@ -2439,13 +2790,12 @@ msgid "No target font resource!"
msgstr "ไม่ได้เลือà¸à¸§à¹ˆà¸²à¸ˆà¸°à¸™à¸³à¹€à¸‚้ามาเป็นไฟล์ฟอนต์ชื่ออะไร!"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
"นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง\n"
-"à¸à¸£à¸¸à¸“าใช้ .fnt"
+"à¸à¸£à¸¸à¸“าใช้ .font"
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2469,7 +2819,7 @@ msgstr "นำเข้ามาเป็นรีซอร์ส:"
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
+msgstr "The quick brown fox jumps over the lazy dog."
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Test:"
@@ -2543,6 +2893,10 @@ msgstr "Mesh ต้นฉบับ:"
msgid "Mesh"
msgstr "Mesh"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "%d พื้นผิว"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "ไม่มีไฟล์เสียงให้นำเข้า!"
@@ -2812,7 +3166,7 @@ msgstr "ครอบตัดพื้นที่ว่าง"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Texture"
-msgstr ""
+msgstr "Texture"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Import Large Texture"
@@ -2860,7 +3214,7 @@ msgstr "ครอบตัดรูป"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Blitting Images"
-msgstr ""
+msgstr "คัดลอà¸à¸£à¸¹à¸›"
#: editor/io_plugins/editor_texture_import_plugin.cpp
msgid "Couldn't save atlas image:"
@@ -2920,9 +3274,8 @@ msgid "Compress"
msgstr "บีบอัด"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "เพิ่มเข้าโปรเจà¸à¸•์ (godot.cfg)"
+msgstr "เพิ่มเข้าโปรเจà¸à¸•์ (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3125,6 +3478,11 @@ msgid "New name:"
msgstr "ชื่อใหม่:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¸à¸£à¸­à¸‡à¹‚หนด"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "อัตราส่วน:"
@@ -3326,25 +3684,25 @@ msgstr "ตัวอย่าง"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap"
-msgstr "ตั้งค่า Snap"
+msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid Offset:"
-msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡ Grid:"
+msgstr "จุดà¸à¸³à¹€à¸™à¸´à¸”ตาราง:"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid Step:"
-msgstr "ระยะ Grid:"
+msgstr "ระยะห่างเส้น:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation Offset:"
-msgstr ""
+msgstr "องศาเริ่มต้น:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation Step:"
-msgstr ""
+msgstr "ช่วงองศา:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Pivot"
@@ -3363,9 +3721,8 @@ msgid "Edit CanvasItem"
msgstr "à¹à¸à¹‰à¹„ข CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Change Anchors"
-msgstr "à¹à¸à¹‰à¹„ขหมุด"
+msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸•รึง"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Zoom (%):"
@@ -3440,6 +3797,7 @@ msgstr "ทำให้เลือà¸à¹‚หนดลูà¸à¹„ด้เหมื
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "à¹à¸à¹‰à¹„ข"
@@ -3447,33 +3805,29 @@ msgstr "à¹à¸à¹‰à¹„ข"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Snap"
-msgstr "ใช้ Snap"
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Show Grid"
-msgstr "à¹à¸ªà¸”ง Grid"
+msgstr "à¹à¸ªà¸”งเส้นตาราง"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Rotation Snap"
-msgstr "ใช้ Snap à¸à¸±à¸šà¸à¸²à¸£à¸«à¸¡à¸¸à¸™"
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¸«à¸¡à¸¸à¸™"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap Relative"
-msgstr ""
+msgstr "จำà¸à¸±à¸”โดยใช้ตำà¹à¸«à¸™à¹ˆà¸‡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Configure Snap.."
-msgstr "ตั้งค่า Snap.."
+msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”.."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Pixel Snap"
-msgstr "ใช้ Snap พิà¸à¹€à¸‹à¸¥"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "ขยายให้เต็มโหนดà¹à¸¡à¹ˆ"
+msgstr "จำà¸à¸±à¸”ให้ย้ายเป็นพิà¸à¹€à¸‹à¸¥"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
@@ -3522,7 +3876,7 @@ msgstr "ให้สิ่งที่เลือà¸à¹€à¸•็มจอ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Anchor"
-msgstr "หมุด"
+msgstr "ตรึง"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3574,7 +3928,7 @@ msgstr "ตà¸à¸¥à¸‡ :("
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
-msgstr ""
+msgstr "ไม่พบโหนดà¹à¸¡à¹ˆà¸—ี่จะรับอินสà¹à¸•นซ์โหนดลูà¸"
#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
@@ -3584,11 +3938,6 @@ msgstr "ต้องเลือà¸à¹€à¸žà¸µà¸¢à¸‡à¹‚หนดเดียว"
msgid "Change default type"
msgstr "เปลี่ยนประเภท"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "ตà¸à¸¥à¸‡"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3628,13 +3977,21 @@ msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม (ลบจุà
msgid "Create a new polygon from scratch."
msgstr "สร้างรูปหลายเหลี่ยมจาà¸à¸„วามว่างเปล่า"
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม 3D"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
-msgstr ""
+msgstr "ปรับขนาดรูปร่าง"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Creating Mesh Library"
@@ -3668,22 +4025,53 @@ msgstr "อัพเดตจาà¸à¸‰à¸²à¸"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Add point"
-msgstr "เพิ่มอินพุต"
+msgid "Modify Curve Point"
+msgstr "à¹à¸à¹‰à¹„ขเส้นโค้ง"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "à¹à¸à¹‰à¹„ขเส้นโค้ง"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "โหลดค่าล่วงหน้า"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "เพิ่มจุด"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
msgstr "ลบจุด"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "เส้นตรง"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "มุมขวา"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "โหลดรีซอร์ส"
+msgstr "โหลดค่าล่วงหน้า"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
-msgstr "à¹à¸à¹‰à¹„ขเส้นโค้ง"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "ลบจุด"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3707,6 +4095,12 @@ 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 "สร้างรูปหลายเหลี่ยมà¸à¸±à¹‰à¸™à¹à¸ªà¸‡"
@@ -3788,11 +4182,11 @@ msgstr "Mesh ว่างเปล่า!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
-msgstr ""
+msgstr "สร้าง Static Trimesh Body"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Convex Body"
-msgstr ""
+msgstr "สร้าง StaticBody ทรงตัน"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "This doesn't work on scene root!"
@@ -3800,7 +4194,7 @@ msgstr "ทำà¸à¸±à¸šà¹‚หนดราà¸à¹„ม่ได้!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Shape"
-msgstr ""
+msgstr "สร้างรูปทรง Trimesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Shape"
@@ -3816,7 +4210,7 @@ msgstr "MeshInstance ไม่มี Mesh!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh has not surface to create outlines from!"
-msgstr ""
+msgstr "Mesh ไม่มีพื้นผิวให้สร้างเส้นขอบได้!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
@@ -3828,27 +4222,27 @@ msgstr "สร้างเส้นรอบรูป"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
-msgstr ""
+msgstr "สร้าง Trimesh Static Body"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Static Body"
-msgstr ""
+msgstr "สร้าง StaticBody ทรงตัน"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
-msgstr ""
+msgstr "สร้างรูปทรงà¸à¸²à¸¢à¸ à¸²à¸žà¹€à¸›à¹‡à¸™à¹‚หนดà¸à¸²à¸•ิ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Collision Sibling"
-msgstr ""
+msgstr "สร้างรูปทรงตันà¸à¸²à¸¢à¸ à¸²à¸žà¹€à¸›à¹‡à¸™à¹‚หนดà¸à¸²à¸•ิ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh.."
-msgstr ""
+msgstr "สร้างเส้นขอบ Mesh.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
-msgstr ""
+msgstr "สร้างเส้นขอบ Mesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Outline Size:"
@@ -3876,7 +4270,7 @@ msgstr "Mesh ต้นฉบับไม่ถูà¸à¸•้อง (ไม่มà¸
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No surface source specified."
-msgstr ""
+msgstr "ไม่ได้ระบุพื้นผิวต้นฉบับ"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (invalid path)."
@@ -3944,7 +4338,7 @@ msgstr "สุ่มà¸à¸²à¸£à¸«à¸¡à¸¸à¸™:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Tilt:"
-msgstr ""
+msgstr "สุ่มà¸à¸²à¸£à¹€à¸­à¸µà¸¢à¸‡:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Scale:"
@@ -3960,7 +4354,7 @@ msgstr "สร้างรูปทรงนำทาง"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Remove Poly And Point"
-msgstr ""
+msgstr "ลบรูปหลายเหลี่ยมà¹à¸¥à¸°à¸ˆà¸¸à¸”"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
@@ -3970,7 +4364,7 @@ msgstr "ลบ Mask à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢"
#: editor/plugins/particles_editor_plugin.cpp
#, fuzzy
msgid "Generating AABB"
-msgstr "สร้าง AABB"
+msgstr "สร้างเส้นà¸à¸£à¸­à¸š"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -3986,40 +4380,42 @@ msgstr "รูปไม่มีพิà¸à¹€à¸‹à¸¥à¹ƒà¸”ที่ความโ
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Set Emission Mask"
-msgstr "à¸à¸³à¸«à¸™à¸” Mask à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢"
+msgstr "à¸à¸³à¸«à¸™à¸” Mask à¸à¸²à¸£à¸›à¸°à¸—ุ"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "สร้างà¸à¸£à¸­à¸šà¸à¸²à¸£à¸¡à¸­à¸‡à¹€à¸«à¹‡à¸™"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
-msgstr "โหลด Mask à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢"
+msgstr "โหลด Mask à¸à¸²à¸£à¸›à¸°à¸—ุ"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "มุมรูปทรง"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
-msgstr ""
+msgstr "จำนวนจุดที่สร้างขึ้น:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "เวลาเฉลี่ย (วินาที)"
+msgstr "เวลาในà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡ (วินาที):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "à¸à¸³à¸«à¸™à¸” Mask à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢"
+msgstr "Mask à¸à¸²à¸£à¸›à¸°à¸—ุ"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "สร้างจาà¸à¸‰à¸²à¸"
+msgstr "ใช้สีพิà¸à¹€à¸‹à¸¥"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "à¸à¸³à¸«à¸™à¸” Mask à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢"
+msgstr "สีà¸à¸²à¸£à¸›à¸°à¸—ุ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4031,7 +4427,7 @@ msgstr "โหนดไม่มี geometry (หน้า)"
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
+msgstr "ต้องà¸à¸²à¸£ Material ประเภท 'ParticlesMaterial'"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Faces contain no area!"
@@ -4042,36 +4438,37 @@ msgid "No faces!"
msgstr "ไม่มีหน้า!"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Generate AABB"
-msgstr "สร้าง AABB"
+msgstr "สร้างเส้นà¸à¸£à¸­à¸š"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Mesh"
-msgstr ""
+msgstr "สร้างจุดปะทุจาภMesh"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Node"
-msgstr ""
+msgstr "สร้างจุดปะทุจาà¸à¹‚หนด"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Clear Emitter"
-msgstr ""
+msgstr "ลบตัวปะทุ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emitter"
-msgstr ""
+msgstr "สร้างตัวปะทุ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Emission Points:"
-msgstr ""
+msgstr "จุดปะทุ:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points"
-msgstr ""
+msgstr "จุดพื้นผิว"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "จุดพื้นผิว+เส้นบอà¸à¸—ิศ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Volume"
@@ -4079,26 +4476,24 @@ msgstr "ปริมาตร"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Emission Source: "
-msgstr ""
+msgstr "à¹à¸«à¸¥à¹ˆà¸‡à¸›à¸°à¸—ุ: "
#: editor/plugins/particles_editor_plugin.cpp
#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "สร้าง AABB"
+msgstr "สร้างà¸à¸£à¸­à¸šà¸à¸²à¸£à¸¡à¸­à¸‡à¹€à¸«à¹‡à¸™"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
msgstr "ลบจุดในเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "ลบจุดในเส้นโค้ง"
+msgstr "ลบจุดควบคุมขาออà¸à¸‚องเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "ลบจุดในเส้นโค้ง"
+msgstr "ลบจุดควบคุมขาเข้าของเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4111,11 +4506,11 @@ msgstr "ย้ายจุดในเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move In-Control in Curve"
-msgstr ""
+msgstr "ย้ายจุดควบคุมขาเข้าของเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Out-Control in Curve"
-msgstr ""
+msgstr "ย้ายจุดควบคุมขาออà¸à¸‚องเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
@@ -4141,11 +4536,11 @@ msgstr "à¸à¸³à¸«à¸™à¸”พิà¸à¸±à¸”จุดเส้นโค้ง"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve In Pos"
-msgstr ""
+msgstr "à¸à¸³à¸«à¸™à¸”เส้นโค้งขาเข้า"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Out Pos"
-msgstr ""
+msgstr "à¸à¸³à¸«à¸™à¸”เส้นโค้งขาออà¸"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4156,14 +4551,12 @@ msgid "Remove Path Point"
msgstr "ลบจุด"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "ลบจุด"
+msgstr "ลบจุดควบคุมขาออà¸"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "ลบจุด"
+msgstr "ลบจุดควบคุมขาเข้า"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4171,7 +4564,7 @@ msgstr "สร้าง UV Map"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
-msgstr ""
+msgstr "เคลื่อนย้าย UV Map"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
@@ -4220,11 +4613,11 @@ msgstr "ลบ UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap"
-msgstr ""
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Enable Snap"
-msgstr "เปิด Snap"
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid"
@@ -4318,9 +4711,14 @@ msgid "Pitch"
msgstr "เสียงสูงต่ำ"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "ลบà¸à¸£à¸°à¸”ูà¸"
+msgstr "ล้างรายà¸à¸²à¸£à¹„ฟล์ล่าสุด"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4347,8 +4745,12 @@ msgid "Save Theme As.."
msgstr "บันทึà¸à¸˜à¸µà¸¡à¹€à¸›à¹‡à¸™"
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
-msgstr "สคริปต์ต่อไป"
+msgstr "สคริปต์ถัดไป"
#: editor/plugins/script_editor_plugin.cpp
msgid "Previous script"
@@ -4399,6 +4801,11 @@ msgid "Close All"
msgstr "ปิดทั้งหมด"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "เลือà¸/ลบโฟลเดอร์ที่ชอบ"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4431,6 +4838,11 @@ msgid "Keep Debugger Open"
msgstr "เปิดตัวดีบัคค้างไว้"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "เปิดตัวà¹à¸à¹‰à¹„ขถัดไป"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "หน้าต่าง"
@@ -4443,9 +4855,8 @@ msgid "Move Right"
msgstr "ย้ายไปขวา"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "ค้นหาคู่มือ"
+msgstr "เปิดคู่มือ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4497,25 +4908,28 @@ msgid ""
msgstr "สคริปต์à¸à¸±à¸‡à¸ˆà¸°à¹à¸à¹‰à¹„ขได้ต่อเมื่อฉาà¸à¸—ี่à¸à¸±à¸‡à¸ªà¸„ริปต์นั้นถูà¸à¹€à¸›à¸´à¸”อยู่"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "เลือà¸à¸ªà¸µ"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸›à¸¥à¸‡à¸£à¸¹à¸›"
+msgstr "à¹à¸›à¸¥à¸‡à¸•ัวพิมพ์ใหà¸à¹ˆ-เล็à¸"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "ตัวพิมพ์ใหà¸à¹ˆ"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "ตัวพิมพ์เล็à¸"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "อัà¸à¸©à¸£à¹à¸£à¸à¸žà¸´à¸¡à¸žà¹Œà¹ƒà¸«à¸à¹ˆ"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4544,6 +4958,11 @@ msgid "Move Down"
msgstr "ย้ายลง"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "ลบจุด"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "ย่อหน้าซ้าย"
@@ -4560,20 +4979,23 @@ msgid "Clone Down"
msgstr "คัดลอà¸à¸šà¸£à¸£à¸—ัดลงมา"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Complete Symbol"
-msgstr ""
+msgstr "เสนอà¹à¸™à¸°à¸„ำเต็ม"
#: editor/plugins/script_text_editor.cpp
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 ""
+msgstr "ใช้à¹à¸—็บเป็นย่อหน้า"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4590,21 +5012,19 @@ msgstr "ลบจุดพัà¸à¸—ั้งหมด"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Next Breakpoint"
-msgstr "ไปจุดพัà¸à¸•่อไป"
+msgstr "ไปจุดพัà¸à¸–ัดไป"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Previous Breakpoint"
msgstr "ไปจุดพัà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™.."
+msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™à¸•ัวพิมพ์ใหà¸à¹ˆ"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™.."
+msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™à¸•ัวพิมพ์เล็à¸"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -4631,19 +5051,19 @@ msgstr "ค้นหาคำที่เลือà¸à¹ƒà¸™à¸„ู่มือ"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขค่าคงที่"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Constant"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขค่าคงที่เวà¸à¹€à¸•อร์"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change RGB Constant"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขค่าคงที่สี"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Operator"
@@ -4667,11 +5087,11 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Function"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขฟังà¸à¹Œà¸Šà¸±à¸™ Scalar"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Function"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขฟังà¸à¹Œà¸Šà¸±à¸™à¹€à¸§à¸à¹€à¸•อร์"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Uniform"
@@ -4687,7 +5107,7 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Default Value"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขค่าปริยาย"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change XForm Uniform"
@@ -4850,63 +5270,28 @@ msgid "Animation Key Inserted."
msgstr "à¹à¸—รà¸à¸„ีย์à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "ไปหน้า"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "ย้อนà¸à¸¥à¸±à¸š"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "ล้อเมาส์ลง"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "จำนวนวัตถุที่วาด"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "อัพเดทเมื่อเปลี่ยนà¹à¸›à¸¥à¸‡"
+msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "อัพเดทเมื่อเปลี่ยนà¹à¸›à¸¥à¸‡"
+msgstr "จำนวนครั้งที่เปลี่ยน Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "อัพเดทเมื่อเปลี่ยนà¹à¸›à¸¥à¸‡"
+msgstr "จำนวนครั้งที่เปลี่ยนพื้นผิว"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "คุณสมบัติ:"
+msgstr "มุมรูปทรง"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -4921,9 +5306,8 @@ msgid "Display Wireframe"
msgstr "à¹à¸ªà¸”งโครงร่าง"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Overdraw"
-msgstr "à¹à¸ªà¸”งà¸à¸²à¸£à¸§à¸²à¸”ซ้ำซ้อน"
+msgstr "à¹à¸ªà¸”งà¸à¸²à¸£à¸§à¸²à¸”ทับซ้อน"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -4933,24 +5317,76 @@ msgstr "à¹à¸ªà¸”งà¹à¸šà¸šà¹„ร้เงา"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "View Environment"
-msgstr "สภาพà¹à¸§à¸”ล้อม"
+msgstr "à¹à¸ªà¸”งสภาพà¹à¸§à¸”ล้อม"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "View Gizmos"
-msgstr "เครื่องมือเคลื่อนย้าย 3D"
+msgstr "à¹à¸ªà¸”งสัà¸à¸¥à¸±à¸à¸©à¸“์"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "à¹à¸ªà¸”งข้อมูล"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "ตัวรับเสียง"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "เปิด"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr "มุมมองอิสระ ไปซ้าย"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr "มุมมองอิสระ ไปขวา"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr "มุมมองอิสระ ไปข้างหน้า"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr "มุมมองอิสระ ถอยหลัง"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr "มุมมองอิสระ ขึ้น"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr "มุมมองอิสระ ลง"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr "มุมมองอิสระ ปรับความเร็ว"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "ตัวอย่าง"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "XForm Dialog"
-msgstr ""
+msgstr "เครื่องมือเคลื่อนย้าย"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "โหมดเลือà¸"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+คลิà¸à¸‚วา: เลือà¸à¸—ี่ซ้อนà¸à¸±à¸™"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5009,24 +5445,20 @@ msgid "Align Selection With View"
msgstr "ย้ายวัตถุที่เลือà¸à¸¡à¸²à¸—ี่à¸à¸¥à¹‰à¸­à¸‡"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "เลือà¸"
+msgstr "เครื่องมือเลือà¸"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "ย้าย"
+msgstr "เครื่องมือย้าย"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl: หมุน"
+msgstr "เครื่องมือหมุน"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "อัตราส่วน:"
+msgstr "เครื่องมือปรับขนาด"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5073,24 +5505,25 @@ msgid "View Grid"
msgstr "à¹à¸ªà¸”งเส้นตาราง"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "ตัวเลือà¸"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
-msgstr "ตั้งค่า Snap"
+msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate Snap:"
-msgstr "Snap à¸à¸²à¸£à¸¢à¹‰à¸²à¸¢:"
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¸¢à¹‰à¸²à¸¢:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Snap (deg.):"
-msgstr "Snap à¸à¸²à¸£à¸«à¸¡à¸¸à¸™ (องศา):"
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¸«à¸¡à¸¸à¸™ (องศา):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Snap (%):"
-msgstr "Snap ปรับขนาด (%):"
+msgstr "จำà¸à¸±à¸”ปรับขนาด (%):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Viewport Settings"
@@ -5098,15 +5531,15 @@ msgstr "ตั้งค่ามุมมอง"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective FOV (deg.):"
-msgstr "FOV เพอร์สเปà¸à¸—ีฟ (องศา):"
+msgstr "ขอบเขตà¸à¸²à¸£à¸¡à¸­à¸‡à¹€à¸«à¹‡à¸™à¹€à¸žà¸­à¸£à¹Œà¸ªà¹€à¸›à¸à¸—ีฟ (องศา):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Z-Near:"
-msgstr ""
+msgstr "à¸à¸²à¸£à¸¡à¸­à¸‡à¹€à¸«à¹‡à¸™à¸£à¸°à¸¢à¸°à¹ƒà¸à¸¥à¹‰:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Z-Far:"
-msgstr ""
+msgstr "à¸à¸²à¸£à¸¡à¸­à¸‡à¹€à¸«à¹‡à¸™à¸£à¸°à¸¢à¸°à¹„à¸à¸¥:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Change"
@@ -5201,8 +5634,13 @@ msgid "StyleBox Preview:"
msgstr "ตัวอย่าง StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "ขอบเขต Texture"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
-msgstr "โหมด Snap:"
+msgstr "โหมดà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "<None>"
@@ -5210,31 +5648,32 @@ msgstr "<ไม่มี>"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
-msgstr "Snap พิà¸à¹€à¸‹à¸¥"
+msgstr "จำà¸à¸±à¸”ให้ย้ายเป็นพิà¸à¹€à¸‹à¸¥"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Grid Snap"
-msgstr "Snap เส้นตาราง"
+msgstr "จำà¸à¸±à¸”ด้วยเส้นตาราง"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
msgid "Auto Slice"
-msgstr ""
+msgstr "à¹à¸šà¹ˆà¸‡à¸­à¸±à¸•โนมัติ"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Offset:"
-msgstr ""
+msgstr "เลื่อน:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Step:"
-msgstr ""
+msgstr "ขนาด:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Separation:"
-msgstr ""
+msgstr "เว้น:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Texture Region"
-msgstr ""
+msgstr "ขอบเขต Texture"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Texture Region Editor"
@@ -5258,6 +5697,16 @@ msgid "Remove Item"
msgstr "ลบไอเทม"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "ลบไอเทมคลาส"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "ลบ"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "ธีม"
@@ -5325,7 +5774,7 @@ msgstr "à¹à¸—็บ 2"
msgid "Tab 3"
msgstr "à¹à¸—็บ 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "ประเภท:"
@@ -5347,12 +5796,27 @@ msgid "Color"
msgstr "สี"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "ลบที่เลือà¸"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "วาด TileMap"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "ทำซ้ำ"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "เส้นตรง"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "ถัง"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5387,10 +5851,6 @@ msgid "Pick Tile"
msgstr "เลือภTile"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "เลือà¸"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "หมุน 0 องศา"
@@ -5439,9 +5899,8 @@ msgid "Runnable"
msgstr "รันได้"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete patch '"
-msgstr "ลบ '"
+msgstr "ลบà¹à¸žà¸•ช์ '"
#: editor/project_export.cpp
#, fuzzy
@@ -5452,7 +5911,7 @@ msgstr "ลบ '%s'?"
msgid "Presets"
msgstr "à¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "เพิ่ม.."
@@ -5499,6 +5958,24 @@ msgid "Make Patch"
msgstr "สร้างà¹à¸žà¸•ช์"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Texture"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "รายชื่อเมท็อด:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "ส่งออภPCK/Zip"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มนี้:"
@@ -5511,14 +5988,12 @@ msgid "Invalid project path, the path must exist!"
msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องมีอยู่จริง!"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องไม่มี godot.cfg"
+msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องไม่มี project.godot"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องมี godot.cfg"
+msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องมี project.godot"
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -5529,9 +6004,8 @@ msgid "Invalid project path (changed anything?)."
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¹‚ปรเจà¸à¸•์ผิดพลาด (ได้à¹à¸à¹‰à¹„ขอะไรไปหรือไม่?)"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr "สร้างไฟล์ godot.cfg ไม่ได้"
+msgstr "สร้างไฟล์ project.godot ไม่ได้"
#: editor/project_manager.cpp
#, fuzzy
@@ -5539,10 +6013,6 @@ msgid "The following files failed extraction from package:"
msgstr "ผิดพลาดขณะà¹à¸¢à¸à¹„ฟล์ต่อไปนี้จาà¸à¹à¸žà¸„เà¸à¸ˆ:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "นำเข้าโปรเจà¸à¸•์ที่มีอยู่เดิม"
@@ -5587,6 +6057,22 @@ msgid "Are you sure to open more than one project?"
msgstr "ยืนยันà¸à¸²à¸£à¹€à¸›à¸´à¸”โปรเจà¸à¸•์มาà¸à¸à¸§à¹ˆà¸² 1 โปรเจà¸à¸•์?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"ยังไม่ได้à¸à¸³à¸«à¸™à¸”ฉาà¸à¹€à¸£à¸´à¹ˆà¸¡à¸•้น à¸à¸³à¸«à¸™à¸”ตอนนี้หรือไม่?\n"
+"สามารถà¹à¸à¹‰à¹„ขภายหลังที่ \"ตัวเลือà¸à¹‚ปรเจà¸à¸•์\" ใต้หัวข้อ 'application'"
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "ยืนยันà¸à¸²à¸£à¸£à¸±à¸™à¹‚ปรเจà¸à¸•์มาà¸à¸à¸§à¹ˆà¸² 1 โปรเจà¸à¸•์?"
@@ -5601,10 +6087,6 @@ msgid ""
msgstr "จะทำà¸à¸²à¸£à¸ªà¹à¸à¸™à¸«à¸²à¹‚ปรเจà¸à¸•์ใน %s โฟลเดอร์ ยืนยัน?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "รายชื่อโปรเจà¸à¸•์"
@@ -5625,264 +6107,296 @@ msgid "New Project"
msgstr "โปรเจà¸à¸•์ใหม่"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "ลบà¹à¸¡à¹ˆà¹à¸šà¸š"
+msgstr "à¹à¸¡à¹ˆà¹à¸šà¸š"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "ออà¸"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "เชื่อมต่อไม่ได้"
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "ปุ่ม "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "ปุ่มจอย"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "คันบังคับจอย"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "ปุ่มเมาส์"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "ใช้ชื่อนี้ไม่ได้ (มี '/' หรือ ':')"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "มีà¸à¸²à¸£à¸à¸£à¸°à¸—ำ '%s' อยู่à¹à¸¥à¹‰à¸§!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "เปลี่ยนชื่อà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "เพิ่มà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Control+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "à¸à¸”ปุ่ม.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "ปุ่มเมาส์:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "เมาส์ซ้าย"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "เมาส์ขวา"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "เมาส์à¸à¸¥à¸²à¸‡"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "ล้อเมาส์ขึ้น"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "ล้อเมาส์ลง"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "ปุ่ม 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "ปุ่ม 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "ปุ่ม 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "ปุ่ม 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "เปลี่ยน"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "คันบังคับจอย:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "à¹à¸à¸™"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr "ปุ่มจอย:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "เพิ่มà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "ลบà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
-msgstr "เพิ่มà¹à¸šà¸šà¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²"
+msgstr "เพิ่ม"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "อุปà¸à¸£à¸“์"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "ปุ่ม"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "ปุ่มเมาส์ซ้าย"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "ปุ่มเมาส์ขวา"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "ปุ่มเมาส์à¸à¸¥à¸²à¸‡"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "ล้อเมาส์ขึ้น"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "ล้อเมาส์ลง"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "เพิ่มตัวรับคุณสมบัติ"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "คุณสมบัติ:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "ตัวเลือà¸"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "ลบอินพุต"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "ผิดพลาดขณะบันทึà¸à¸„่า"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "บันทึà¸à¹à¸¥à¹‰à¸§"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "เพิ่มà¸à¸²à¸£à¹à¸›à¸¥"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "ลบà¸à¸²à¸£à¹à¸›à¸¥"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "เพิ่มตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸—นที่"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "เพิ่มà¸à¸²à¸£à¹à¸—นที่"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "เปลี่ยนภาษาที่ใช้à¹à¸—นที่ไฟล์"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "ลบà¸à¸²à¸£à¹à¸—นที่"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "ลบà¸à¸²à¸£à¹à¸—นที่"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "ตัวเลือà¸à¹‚ปรเจà¸à¸•์ (godot.cfg)"
+msgstr "ตัวเลือà¸à¹‚ปรเจà¸à¸•์ (project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "ทั่วไป"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "คุณสมบัติ:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "ลบ"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "คัดลอà¸à¹„ปยังà¹à¸žà¸¥à¸•ฟอร์ม.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "ปุ่มà¸à¸”"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "อุปà¸à¸£à¸“์:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "ดัชนี:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "à¸à¸²à¸£à¹à¸›à¸¥:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "à¸à¸²à¸£à¹à¸—นที่"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "รีซอร์ส:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "à¹à¸—นที่ตามท้องถิ่น:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "ท้องถิ่น"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "ออโต้โหลด"
@@ -5923,6 +6437,11 @@ msgid "Assign"
msgstr "ระบุ"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "เลือà¸à¹‚หนด"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "สคริปต์ใหม่"
@@ -5935,6 +6454,11 @@ msgid "Error loading file: Not a resource!"
msgstr "ผิดพลาดขณะโหลดไฟล์: ไม่ใช่รีซอร์ส!"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "เลือà¸à¹‚หนดเพื่อนำเข้า"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr "เลือà¸à¹‚หนด"
@@ -6030,6 +6554,11 @@ msgstr "ตัวà¹à¸›à¸£à¸‰à¸²à¸à¸«à¸¥à¸±à¸:"
msgid "Scene Run Settings"
msgstr "ตัวเลือà¸à¸à¸²à¸£à¸£à¸±à¸™à¸‰à¸²à¸"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "ตà¸à¸¥à¸‡"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "ไม่มีโหนดà¹à¸¡à¹ˆà¹€à¸›à¹‡à¸™à¸—ี่อินสà¹à¸•นซ์ฉาà¸"
@@ -6073,12 +6602,8 @@ msgid "Delete Node(s)?"
msgstr "ลบโหนด?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
-msgstr "ไม่สามารถทำได้โดยที่ไม่มีโหนดราà¸"
+msgstr "ทำà¸à¸±à¸šà¹‚หนดราà¸à¹„ม่ได้"
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
@@ -6089,6 +6614,18 @@ msgid "Save New Scene As.."
msgstr "บันทึà¸à¸‰à¸²à¸à¹ƒà¸«à¸¡à¹ˆà¹€à¸›à¹‡à¸™.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "à¹à¸à¹‰à¹„ขโหนดลูà¸à¹„ด้"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "โหลดเป็นตัวà¹à¸—น"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸­à¸´à¸™à¸ªà¹à¸•นซ์"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "เข้าใจ!"
@@ -6132,6 +6669,14 @@ msgid "Edit Connections"
msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยง"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "ลบà¸à¸²à¸£à¸ªà¸·à¸šà¸—อด"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "ลบโหนด"
@@ -6182,6 +6727,11 @@ msgid ""
msgstr "อินสà¹à¸•นซ์ฉาà¸à¹€à¸›à¹‡à¸™à¹‚หนด สร้างฉาà¸à¸ªà¸·à¸šà¸—อดถ้าไม่มีโหนดราà¸"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "ตัวà¸à¸£à¸­à¸‡"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "เชื่อมสคริปต์ใหม่หรือที่มีอยู่เดิมให้à¸à¸±à¸šà¹‚หนดที่เลือà¸"
@@ -6189,9 +6739,17 @@ msgstr "เชื่อมสคริปต์ใหม่หรือที่
msgid "Clear a script for the selected node."
msgstr "ลบสคริปต์ของโหนดที่เลือà¸"
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "ลบà¸à¸²à¸£à¸ªà¸·à¸šà¸—อด? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "ลบ!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
-msgstr "ซ่อน/à¹à¸ªà¸”งโหนด Spatial"
+msgstr "ซ่อน/à¹à¸ªà¸”งโหนด"
#: editor/scene_tree_editor.cpp
msgid "Toggle CanvasItem Visible"
@@ -6199,56 +6757,60 @@ msgstr "ซ่อน/à¹à¸ªà¸”งโหนด CanvasItem"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "คำเตือนà¸à¸²à¸£à¸•ั้งค่าโหนด:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"โหนดมีà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยงà¹à¸¥à¸°à¸à¸¥à¸¸à¹ˆà¸¡\n"
+"คลิà¸à¹€à¸žà¸·à¹ˆà¸­à¹à¸ªà¸”งà¹à¸œà¸‡à¸ªà¸±à¸à¸à¸²à¸“"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"โหนดมีà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยง\n"
+"คลิà¸à¹€à¸žà¸·à¹ˆà¸­à¹à¸ªà¸”งà¹à¸œà¸‡à¸ªà¸±à¸à¸à¸²à¸“"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "ตัวเลือà¸à¸”ีบัค"
+"โหนดอยู่ในà¸à¸¥à¸¸à¹ˆà¸¡\n"
+"คลิà¸à¹€à¸žà¸·à¹ˆà¸­à¹à¸ªà¸”งà¹à¸œà¸‡à¸à¸¥à¸¸à¹ˆà¸¡"
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "อินสà¹à¸•นซ์:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "สคริปต์ต่อไป"
+msgstr "เปิดสคริปต์"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"โหนดถูà¸à¸¥à¹‡à¸­à¸„\n"
+"คลิà¸à¹€à¸žà¸·à¹ˆà¸­à¸›à¸¥à¸”ล็อค"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"โหนดลูà¸à¸–ูà¸à¸—ำให้เลือà¸à¹„ม่ได้\n"
+"คลิà¸à¹€à¸žà¸·à¹ˆà¸­à¸—ำให้เลือà¸à¹„ด้"
#: editor/scene_tree_editor.cpp
#, fuzzy
msgid "Toggle Visibility"
-msgstr "ซ่อน/à¹à¸ªà¸”งโหนด Spatial"
+msgstr "ซ่อน/à¹à¸ªà¸”ง"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6263,32 +6825,9 @@ msgid "Scene Tree (Nodes):"
msgstr "ผังฉาภ(โหนด):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "à¹à¸à¹‰à¹„ขโหนดลูà¸à¹„ด้"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "โหลดเป็นตัวà¹à¸—น"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸­à¸´à¸™à¸ªà¹à¸•นซ์"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "เปิดในโปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ข"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "ลบà¸à¸²à¸£à¸ªà¸·à¸šà¸—อด"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "ลบà¸à¸²à¸£à¸ªà¸·à¸šà¸—อด? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "ลบ!"
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "คำเตือนà¸à¸²à¸£à¸•ั้งค่าโหนด:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6296,6 +6835,11 @@ msgstr "เลือà¸à¹‚หนด"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "ผิดพลาดขณะโหลดรูป:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "สร้างสคริปต์ในระบบไฟล์ไม่ได้"
@@ -6304,6 +6848,10 @@ msgid "Error loading script from %s"
msgstr "ผิดพลาดขณะโหลดสคริปต์จาภ%s"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "ไม่มี"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ว่างเปล่า"
@@ -6338,21 +6886,16 @@ msgid "Invalid inherited parent name or path"
msgstr "ไม่พบคุณสมบัติ"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "สคริปต์"
+msgstr "สคริปต์ถูà¸à¸•้อง"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
+msgstr "อัà¸à¸‚ระที่ใช้ได้: a-z, A-Z, 0-9 à¹à¸¥à¸° _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "à¸à¸±à¸‡à¸ªà¸„ริปต์ในไฟล์ฉาà¸"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -6375,9 +6918,8 @@ msgid "Class Name"
msgstr "ชื่อคลาส:"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "ลบà¹à¸¡à¹ˆà¹à¸šà¸š"
+msgstr "à¹à¸¡à¹ˆà¹à¸šà¸š"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -6521,8 +7063,12 @@ msgid "Change Light Radius"
msgstr "ปรับรัศมีà¹à¸ªà¸‡"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
-msgstr "ปรับ FOV à¸à¸¥à¹‰à¸­à¸‡"
+msgstr "ปรับขอบเขตà¸à¸²à¸£à¸¡à¸­à¸‡à¹€à¸«à¹‡à¸™à¸‚องà¸à¸¥à¹‰à¸­à¸‡"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera Size"
@@ -6553,8 +7099,9 @@ msgid "Change Notifier Extents"
msgstr "à¹à¸à¹‰à¹„ขขนาด Notifier"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Change Particles AABB"
-msgstr ""
+msgstr "เปลี่ยนà¸à¸£à¸­à¸šà¸­à¸™à¸¸à¸ à¸²à¸„"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -6602,6 +7149,137 @@ msgstr "รูปà¹à¸šà¸šà¸”ิà¸à¸Šà¸±à¸™à¸™à¸²à¸£à¸µà¸—ี่เà¸à¹‡à¸šà¸­
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "ดิà¸à¸Šà¸±à¸™à¸™à¸²à¸£à¸µà¸—ี่เà¸à¹‡à¸šà¸­à¸´à¸™à¸ªà¹à¸•นซ์ผิดพลาด (คลาสย่อยผิดพลาด)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "ลบสิ่งที่เลือà¸"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "ทำซ้ำในà¹à¸—ร็à¸à¹€à¸”ิม"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "มุมบน"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "ปิดใช้งาน"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: หมุน"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: หมุน"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: หมุน"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "สร้างใหม่"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "สร้างโปรเจà¸à¸•์ใหม่"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "ลบ TileMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "อินสà¹à¸•นซ์:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr " ไฟล์"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
#, fuzzy
msgid ""
@@ -6637,6 +7315,31 @@ msgid "Stack overflow with stack depth: "
msgstr "สà¹à¸•คล้น ความสูงสà¹à¸•ค: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£à¸ªà¸±à¸à¸à¸²à¸“:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "เปลี่ยนประเภทตัวà¹à¸›à¸£à¹ƒà¸™à¸­à¸²à¸£à¹Œà¹€à¸£à¸¢à¹Œ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "เปลี่ยนชื่อà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "à¹à¸à¹‰à¹„ขค่าปริยาย"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™:"
@@ -6677,26 +7380,6 @@ msgid "Add Signal"
msgstr "เพิ่มสัà¸à¸à¸²à¸“"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "ลบฟังà¸à¹Œà¸Šà¸±à¸™"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "ลบตัวà¹à¸›à¸£"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "ลบสัà¸à¸à¸²à¸“"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "à¹à¸à¹‰à¹„ขสัà¸à¸à¸²à¸“:"
-
-#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Expression"
msgstr "à¹à¸à¹‰à¹„ขสมà¸à¸²à¸£"
@@ -6706,6 +7389,16 @@ msgid "Add Node"
msgstr "เพิ่มโหนด"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "ลบคีย์ที่ผิดพลาด"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "ทำซ้ำโหนด"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr "à¸à¸”ปุ่ม Meta ค้างเพื่อวาง Getter à¸à¸” Shift ค้างเพื่อวาง generic signature"
@@ -6746,6 +7439,26 @@ msgid "Add Setter Property"
msgstr "เพิ่มตัวà¸à¸³à¸«à¸™à¸”คุณสมบัติ"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "เปลี่ยนประเภท"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "ลบโหนด"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "ลบโหนด"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "เชื่อมไปยังโหนด:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "เงื่อนไข"
@@ -6775,6 +7488,56 @@ msgstr "รับ"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Input Value"
+msgstr "à¹à¸à¹‰à¹„ขค่าปริยาย"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "ทำงานใน '..' ไม่ได้"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "คลิปบอร์ดไม่มีรีซอร์ส!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "วางโหนด"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "ลบฟังà¸à¹Œà¸Šà¸±à¸™"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "ลบตัวà¹à¸›à¸£"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "à¹à¸à¹‰à¹„ขสัà¸à¸à¸²à¸“:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "ลบสัà¸à¸à¸²à¸“"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "à¹à¸à¹‰à¹„ขสัà¸à¸à¸²à¸“:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Base Type:"
msgstr "ชนิด:"
@@ -6795,10 +7558,6 @@ msgid "Edit Variable:"
msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "เปลี่ยน"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "ลบสิ่งที่เลือà¸"
@@ -6874,14 +7633,6 @@ msgid ""
"(error)."
msgstr "ค่าคืนจาภ_step() ผิดพลาด ต้องเป็นจำนวนเต็ม (ลำดับ) หรือสตริง (ข้อผิดพลาด)"
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "เพิ่งà¸à¸”"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "เพิ่งปล่อย"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr "รันในเบราเซอร์"
@@ -6902,79 +7653,6 @@ msgstr "อ่านไฟล์ไม่ได้:\n"
msgid "Could not open template for export:\n"
msgstr "เปิดà¹à¸¡à¹ˆà¹à¸šà¸šà¹€à¸žà¸·à¹ˆà¸­à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹„ม่ได้:\n"
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr "ไม่สามารถอ่านไฟล์ใบรับรองได้ ตำà¹à¸«à¸™à¹ˆà¸‡à¹„ฟล์à¹à¸¥à¸°à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸–ูà¸à¸•้องหรือไม่?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "ผิดพลาดขณะสร้าง signature object"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "ผิดพลาดขณะสร้าง signature ของà¹à¸žà¸„เà¸à¸ˆ"
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"ไม่มีà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¸³à¸«à¸£à¸±à¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸\n"
-"ดาวน์โหลดà¹à¸¥à¸°à¸•ิดตั้งà¹à¸¡à¹ˆà¹à¸šà¸š"
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸”ีบัคที่à¸à¸³à¸«à¸™à¸”"
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸ˆà¸³à¸«à¸™à¹ˆà¸²à¸¢à¸—ี่à¸à¸³à¸«à¸™à¸”"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "ชื่อเฉพาะไม่ถูà¸à¸•้อง"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "GUID ของโปรà¹à¸à¸£à¸¡à¹„ม่ถูà¸à¸•้อง"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "GUID ของผู้จัดจำหน่ายไม่ถูà¸à¸•้อง"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "สีพื้นหลังผิดพลาด"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "ขนาดรูปโลโà¸à¹‰ Store ผิดพลาด (ต้องเป็น 50x50)"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 44x44 ผิดพลาด (ต้องเป็น 44x44)"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 71x71 ผิดพลาด (ต้องเป็น 71x71)"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 150x150 ผิดพลาด (ต้องเป็น 150x150)"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 310x310 ผิดพลาด (ต้องเป็น 310x310)"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "ขนาดโลโà¸à¹‰à¸à¸§à¹‰à¸²à¸‡ 310x150 ผิดพลาด (ต้องเป็น 310x150)"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "ขนาดรูปหน้าจอเริ่มโปรà¹à¸à¸£à¸¡à¸œà¸´à¸”พลาด (ต้องเป็น 620x300)"
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7064,6 +7742,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D จะทำงานได้ต้องเป็นโหนดลูà¸à¸‚องโหนด Path2D"
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "ต้องà¹à¸à¹‰à¹„ข Path ให้ชี้ไปยังโหนด Node2D จึงจะทำงานได้"
@@ -7088,20 +7773,33 @@ msgid ""
"as parent."
msgstr "VisibilityEnable2D ควรจะเป็นโหนดลูà¸à¸‚องโหนดหลัà¸à¹ƒà¸™à¸‰à¸²à¸à¸™à¸µà¹‰"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape ใช้เป็นรูปทรงสำหรับโหนดà¸à¸¥à¸¸à¹ˆà¸¡ CollisionObject จึงควรให้เป็นโหนดลูà¸à¸‚อง "
-"Area, StaticBody, RigidBody, KinematicBody ฯลฯ เพื่อให้มีรูปทรง"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
-msgstr "ต้องมีรูปทรงเพื่อให้ CollisionShape ทำงานได้ à¸à¸£à¸¸à¸“าสร้างรูปทรง!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
+msgstr ""
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7116,6 +7814,21 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "CollisionPolygon ที่ว่างเปล่าจะไม่มีผลทางà¸à¸²à¸¢à¸ à¸²à¸ž"
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape ใช้เป็นรูปทรงสำหรับโหนดà¸à¸¥à¸¸à¹ˆà¸¡ CollisionObject จึงควรให้เป็นโหนดลูà¸à¸‚อง "
+"Area, StaticBody, RigidBody, KinematicBody ฯลฯ เพื่อให้มีรูปทรง"
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr "ต้องมีรูปทรงเพื่อให้ CollisionShape ทำงานได้ à¸à¸£à¸¸à¸“าสร้างรูปทรง!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr "ต้องมี NavigationMesh เพื่อให้โหนดนี้ทำงานได้"
@@ -7133,6 +7846,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr "ต้องà¹à¸à¹‰à¹„ข Path ให้ชี้ไปยังโหนด Spatial จึงจะทำงานได้"
@@ -7150,12 +7870,12 @@ msgstr "ต้องมี SpriteFrames ใน 'Frames' เพื่อให้
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "โหมดหมุน"
+msgid "Raw Mode"
+msgstr "โหมดมุมมอง"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "เพิ่มสีที่เลือà¸à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¹‚ปรด"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7165,22 +7885,6 @@ msgstr "à¹à¸ˆà¹‰à¸‡à¹€à¸•ือน!"
msgid "Please Confirm..."
msgstr "à¸à¸£à¸¸à¸“ายืนยัน..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "เปิดไฟล์"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "เปิดไฟล์"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "เปิดโฟลเดอร์"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "เปิดไฟล์หรือโฟลเดอร์"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7204,11 +7908,13 @@ msgstr ""
"ใช้ container เป็นโหนดลูภ(VBox,HBox,ฯลฯ) หรือโหนดà¸à¸¥à¸¸à¹ˆà¸¡ Control "
"à¹à¸¥à¸°à¸›à¸£à¸±à¸šà¸‚นาดเล็à¸à¸ªà¸¸à¸”ด้วยตนเอง"
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"ไม่สามารถโหลด Environment ปริยายที่à¸à¸³à¸«à¸™à¸”ในตัวเลือà¸à¹‚ปรเจà¸à¸•์ได้ (Rendering -> Viewport "
+"-> Default Environment)"
#: scene/main/viewport.cpp
msgid ""
@@ -7221,6 +7927,94 @@ msgstr ""
"ให้à¹à¸à¹‰à¹„ขโหนดนี้ให้เป็นโหนดลูà¸à¸‚อง Control à¹à¸•่ถ้าไม่ ให้ปรับเป็น render target à¹à¸¥à¸°à¸™à¸³à¹„ปใช้เป็น "
"texture ของโหนดอื่น"
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "ปิดไฟล์ฉาà¸? (à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ไม่ได้บันทึà¸à¸ˆà¸°à¸ªà¸¹à¸à¸«à¸²à¸¢)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "เปิดตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์?\n"
+#~ "(à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ไม่ได้บันทึà¸à¸ˆà¸°à¸ªà¸¹à¸à¸«à¸²à¸¢)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "ปิดไปยังฉาà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "ขยายให้เต็มโหนดà¹à¸¡à¹ˆ"
+
+#~ msgid "Del"
+#~ msgstr "ลบ"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "คัดลอà¸à¹„ปยังà¹à¸žà¸¥à¸•ฟอร์ม.."
+
+#~ msgid "just pressed"
+#~ msgstr "เพิ่งà¸à¸”"
+
+#~ msgid "just released"
+#~ msgstr "เพิ่งปล่อย"
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr "ไม่สามารถอ่านไฟล์ใบรับรองได้ ตำà¹à¸«à¸™à¹ˆà¸‡à¹„ฟล์à¹à¸¥à¸°à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸–ูà¸à¸•้องหรือไม่?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "ผิดพลาดขณะสร้าง signature object"
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "ผิดพลาดขณะสร้าง signature ของà¹à¸žà¸„เà¸à¸ˆ"
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "ไม่มีà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¸³à¸«à¸£à¸±à¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸\n"
+#~ "ดาวน์โหลดà¹à¸¥à¸°à¸•ิดตั้งà¹à¸¡à¹ˆà¹à¸šà¸š"
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸”ีบัคที่à¸à¸³à¸«à¸™à¸”"
+
+#~ msgid "Custom release package not found."
+#~ msgstr "ไม่พบà¹à¸žà¸„เà¸à¸ˆà¸ˆà¸³à¸«à¸™à¹ˆà¸²à¸¢à¸—ี่à¸à¸³à¸«à¸™à¸”"
+
+#~ msgid "Invalid unique name."
+#~ msgstr "ชื่อเฉพาะไม่ถูà¸à¸•้อง"
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "GUID ของโปรà¹à¸à¸£à¸¡à¹„ม่ถูà¸à¸•้อง"
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "GUID ของผู้จัดจำหน่ายไม่ถูà¸à¸•้อง"
+
+#~ msgid "Invalid background color."
+#~ msgstr "สีพื้นหลังผิดพลาด"
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "ขนาดรูปโลโà¸à¹‰ Store ผิดพลาด (ต้องเป็น 50x50)"
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 44x44 ผิดพลาด (ต้องเป็น 44x44)"
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 71x71 ผิดพลาด (ต้องเป็น 71x71)"
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 150x150 ผิดพลาด (ต้องเป็น 150x150)"
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "ขนาดโลโà¸à¹‰à¸ˆà¸±à¸•ุรัส 310x310 ผิดพลาด (ต้องเป็น 310x310)"
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "ขนาดโลโà¸à¹‰à¸à¸§à¹‰à¸²à¸‡ 310x150 ผิดพลาด (ต้องเป็น 310x150)"
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr "ขนาดรูปหน้าจอเริ่มโปรà¹à¸à¸£à¸¡à¸œà¸´à¸”พลาด (ต้องเป็น 620x300)"
+
+#~ msgid "RAW Mode"
+#~ msgstr "โหมด Raw"
+
#~ msgid "Node From Scene"
#~ msgstr "โหนดจาà¸à¸‰à¸²à¸"
@@ -7294,9 +8088,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "à¹à¸—นที่à¹à¸¥à¹‰à¸§ %d ครั้ง"
-#~ msgid "Please save the scene first."
-#~ msgstr "à¸à¸£à¸¸à¸“าบันทึà¸à¸‰à¸²à¸à¸à¹ˆà¸­à¸™"
-
#, fuzzy
#~ msgid "Save Translatable Strings"
#~ msgstr "บันทึà¸à¸ªà¸•ริงหลายภาษา"
@@ -7464,9 +8255,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "คีย์เข้ารหัสสคริปต์ (256 บิต à¸à¸²à¸™ 16):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "ส่งออภPCK/Zip"
-
#~ msgid "Export Project PCK"
#~ msgstr "ส่งออภPCK โปรเจà¸à¸•์"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index b041ed0901..df749f5c9b 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -5,21 +5,22 @@
# Aprın Çor Tigin <kabusturk38@gmail.com>, 2016-2017.
# Ceyhun Can Ulker <ceyhuncanu@gmail.com>, 2016.
# Enes Kaya Öcal <ekayaocal@hotmail.com>, 2016.
+# hubbyist <hub@legrud.net>, 2017.
# M. Yavuz Uzun <myavuzuzun@yandex.com>, 2016.
# Orkun Turan <holygatestudio@yandex.com>, 2016-2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-01-22 12:30+0000\n"
-"Last-Translator: Aprın Çor Tigin <kabusturk38@gmail.com>\n"
+"PO-Revision-Date: 2017-07-19 09:38+0000\n"
+"Last-Translator: hubbyist <hub@legrud.net>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 2.11-dev\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -86,9 +87,8 @@ msgid "Anim Track Change Value Mode"
msgstr "Canln İzi Değer Değiştir Biçimi"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Track Change Wrap Mode"
-msgstr "Canln İzi Değer Değiştir Biçimi"
+msgstr "Canlandırma İzi Hizalama Modunu Değiştir"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -150,7 +150,8 @@ msgstr "Sonraki Adıma Git"
msgid "Goto Prev Step"
msgstr "Önceki Adıma Git"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "DoÄŸrusal"
@@ -364,21 +365,19 @@ msgstr "Dizi DeÄŸerini DeÄŸiÅŸtir"
#: editor/asset_library_editor_plugin.cpp
msgid "Free"
-msgstr ""
+msgstr "Özgür"
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
msgstr "Sürüm:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "Sabitler:"
+msgstr "İçerikler:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "Dizeç"
+msgstr "Dosyaları Görüntüle"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -386,7 +385,8 @@ msgstr "Dizeç"
msgid "Description:"
msgstr "Açıklama:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "Kur"
@@ -397,55 +397,52 @@ msgstr "Kur"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "Kapat"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "Ana makine adı çözümlenemedi:"
#: editor/asset_library_editor_plugin.cpp
msgid "Can't resolve."
-msgstr ""
+msgstr "Çözümlenemedi."
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Bağlantı hatası, lütfen tekrar deneyiniz."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "BaÄŸlan..."
+msgstr "Bağlanamadı."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "Düğüme Bağlan:"
+msgstr "Ana makineye bağlanılamadı:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "Ana makineden cevap yok:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "Cevap yok."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "İstenilen dizeç formatı bilinmiyor:"
+msgstr "İstem başarısız, dönen kod:"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "İstem Başarısız."
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "İstem Başarısız, çok fazla yönlendirme"
#: editor/asset_library_editor_plugin.cpp
msgid "Redirect Loop."
@@ -475,7 +472,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -541,17 +538,16 @@ msgid "All"
msgstr "Hepsi"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "Ara:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "Ara"
@@ -567,7 +563,7 @@ msgstr "Ara"
msgid "Import"
msgstr "İçe Aktar"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "Eklentiler"
@@ -579,7 +575,7 @@ msgstr "Sırala:"
msgid "Reverse"
msgstr "Tersi"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "Katman:"
@@ -734,14 +730,14 @@ msgstr "Düğüme Bağlan:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "Ekle"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "Kaldır"
@@ -850,7 +846,7 @@ msgid "Resource"
msgstr "Kaynak"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "Yol"
@@ -932,12 +928,194 @@ msgstr "Orphan Kaynak Gezgini"
msgid "Delete selected files?"
msgstr "Seçili dizeçleri sil?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "Sil"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "Godot Topluluğu Sağ Olmanızı Diliyor!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "SaÄŸ olun!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Yazar:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "Tasarı Yöneticisi"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Tasarı Yöneticisi"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "İçerikler:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "İçerikler:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "Sıkıştırılmamış"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "Çıkın Başarı ile Kuruldu!"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "Çıkın Başarı ile Kuruldu!"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "BoÅŸ Ekle"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "KendindenYüklenme'yi Yeniden Adlandır"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "KendindenOynatmayı Aç/Kapat"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "Seçilenleri Sil"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Sorun ayıklama seçenekleri"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "İkile"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "Seçilenleri Sil"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "Ekle %s"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "Tasarımı Sil"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "Canlandırmayı İkile"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "Eylemi Taşı"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -951,24 +1129,53 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"Geçersiz dizeç uzantısı.\n"
+"Lütfen .fnt uzantısını kullanın."
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Add Bus"
msgstr "Ekle %s"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "Yeni Kaynak OluÅŸtur"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "Yükle"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "Var olan bir kaynağı saklaktan yükleyin ve düzenleyin."
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "BaÅŸkaca Kaydet"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "Önyüklü"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "Geçersiz ad."
@@ -1069,6 +1276,11 @@ msgid "Updating scene.."
msgstr "Sahne güncelleniyor.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "Lütfen önce sahneyi kaydediniz."
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Dizin Seç"
@@ -1146,6 +1358,22 @@ msgstr "Tüm Dizeçler (*)"
msgid "Open"
msgstr "Aç"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "Bir Dizeç Aç"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "Dizeç(leri) Aç"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "Bir dizin aç"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "Bir Dizeç ya da Dizin Aç"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1272,6 +1500,15 @@ msgid "Signals:"
msgstr "İşaretler:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "Canlandırmalar"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Sabitler:"
@@ -1288,7 +1525,8 @@ msgid "Search Text"
msgstr "Yazı Ara"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " Çıktı:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1338,6 +1576,11 @@ msgid "Creating Thumbnail"
msgstr "Küçük Bediz Oluşturuluyor"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "Bu işlem bir sahne olmadan yapılamaz."
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr "Sahne kaydedilemedi. Anlaşılan bağımlılıklar (örnekler) karşılanamadı."
@@ -1466,12 +1709,13 @@ msgid "Quick Open Script.."
msgstr "Betiği Hızlı Aç.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "Evet"
+#, fuzzy
+msgid "Save & Close"
+msgstr "Dizeci Kaydet"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "Sahneyi kapatsın mı? (Kaydedilmemiş değişiklikler yok olacak)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1483,9 +1727,17 @@ msgid "No"
msgstr "Düğüm"
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "Evet"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "Sahne hiç kaydedilmedi. Çalıştırmadan önce kaydedilsin mi?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "Bu işlem bir sahne olmadan yapılamaz."
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "Örüntü Betikevini Dışa Aktar"
@@ -1495,12 +1747,9 @@ msgid "Export Tile Set"
msgstr "Döşenti Dizi Dışa Aktar"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "Çıkış"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "Düzenleyiciden çık?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "Bu işlem bir sahne olmadan yapılamaz."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1523,18 +1772,52 @@ msgid "Quick Run Scene.."
msgstr "Sahneyi Hızlı Çalıştır.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "Çıkış"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "Düzenleyiciden çık?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "Tasarı Yöneticisi"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "Dizeci Kaydet"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Tasarı Yöneticisini Aç\n"
-"(KaydedilmemiÅŸ deÄŸiÅŸiklikler kaybolacak!)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Bir Ana Sahne Seç"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1570,6 +1853,11 @@ msgstr "Tasarımı Kaydet"
msgid "Delete Layout"
msgstr "Tasarımı Sil"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "Önyüklü"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "Sahne Sekmesine Geç"
@@ -1586,6 +1874,11 @@ msgstr "%d daha çok dizeç(ler) veya dizin(ler)"
msgid "Distraction Free Mode"
msgstr "Dikkat Dağıtmayan Biçim"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "Dikkat Dağıtmayan Biçim"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "Sahne"
@@ -1635,10 +1928,6 @@ msgstr "Tüm Sahneleri Kaydet"
msgid "Close Scene"
msgstr "Sahneyi Kapat"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "Önc. Sahneye Git sekmesini Kapat"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "En Sonuncuyu Aç"
@@ -1941,6 +2230,10 @@ msgstr "Düğüm"
msgid "Output"
msgstr "Çıktı"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "Yeniden İçe Aktar"
@@ -1950,26 +2243,10 @@ msgid "Update"
msgstr "Güncelle"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "Godot Topluluğu Sağ Olmanızı Diliyor!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "SaÄŸ olun!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Kalıpları ZIP Dizecinden İçe Aktar"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "Tasarıyı Dışa Aktar"
@@ -1990,9 +2267,18 @@ msgid "Open & Run a Script"
msgstr "Aç & Bir Betik Çalıştır"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "Yeni Kalıt Alınmış Sahne .."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "Sorunları Yükle"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "Seç"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2099,6 +2385,16 @@ msgstr "Yeniden-İçe Aktarım"
msgid "Re-Import Changed Resources"
msgstr "Değiştirilmiş Kaynakları Yeniden İçe Aktar"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "Mantığını _run() yöntemine yaz."
@@ -2249,10 +2545,28 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "Kaydet & Yeniden İçe Aktar"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "Kaynak:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "Özdeş kaynak ve varış dizeçleri, hiçbir şey yapılmıyor."
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "Özdeş kaynak ve varış yolları, hiçbir şey yapılmıyor."
@@ -2261,6 +2575,20 @@ msgid "Can't move directories to within themselves."
msgstr "Dizinleri kendi içlerine taşıyamazsınız."
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "Bediz yüklenirken sorun oluştu:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "İçe aktarırken sorun:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "'..' üzerinde çalışılamıyor"
@@ -2338,6 +2666,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "Seçilen sahneyi/sahneleri seçilen düğüme çocuk olarak örneklendir."
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Taşı"
@@ -2349,10 +2683,31 @@ msgstr "Öbeğe Ekle"
msgid "Remove from Group"
msgstr "Öbekten Kaldır"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Yüzey %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "Sahneyi İçe Aktarıyor..."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "3B Sahneyi İçe Aktar"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2393,6 +2748,14 @@ msgid "Saving.."
msgstr "Kaydediliyor..."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "Dizeç"
@@ -2587,6 +2950,10 @@ msgstr "Kaynak Örüntü(leri):"
msgid "Mesh"
msgstr "Örüntü"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "Yüzey %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "Alınacak örnek yok!"
@@ -3172,6 +3539,11 @@ msgid "New name:"
msgstr "Yeni ad:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "Düğüm Süzgeçlerini Düzenle"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "Ölçekle:"
@@ -3487,6 +3859,7 @@ msgstr "Nesnenin çocuğunun seçilebilme yeteneğini geri kazandırır."
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "Düzenle"
@@ -3519,10 +3892,6 @@ msgid "Use Pixel Snap"
msgstr "Nokta Yapışması Kullan"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "Ataya geniÅŸletin"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "İskelet.."
@@ -3631,11 +4000,6 @@ msgstr "Bu işlem, seçilmiş tek bir düğüm gerektirir."
msgid "Change default type"
msgstr "Önyüklü tipi değiştir"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "Tamam"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3675,6 +4039,14 @@ msgstr "Çokluyu Düzenleyin (Noktayı Silin)"
msgid "Create a new polygon from scratch."
msgstr "Sıfırdan yeni bir çokgen oluşturun."
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Çoklu3B Oluştur"
@@ -3715,6 +4087,21 @@ msgstr "Sahneden Güncelle"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Point"
+msgstr "Eğri Haritasını Değiştir"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "Eğri Haritasını Değiştir"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "Kaynak Yükle"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Add point"
msgstr "GiriÅŸ Ekle"
@@ -3725,13 +4112,31 @@ msgstr "Yol Noktasını Kaldır"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "DoÄŸrusal"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "Sağdan Görünüm"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Load preset"
msgstr "Kaynak Yükle"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve"
-msgstr "Eğri Haritasını Değiştir"
+msgid "Remove Curve Point"
+msgstr "Yol Noktasını Kaldır"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3755,6 +4160,12 @@ 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 ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Engelleyici Çokgeni Oluştur"
@@ -4049,6 +4460,12 @@ msgid "Load Emission Mask"
msgstr "Yayma Örtecini Yükle"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "BaÅŸucu"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "Üretilen Nokta Say:"
@@ -4380,6 +4797,12 @@ msgid "Clear Recent Files"
msgstr "Kemikleri Temizle"
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr "Kalıp kaydedilirken sorun oluştu"
@@ -4404,6 +4827,10 @@ msgid "Save Theme As.."
msgstr "Kalıbı Başkaca Kaydet.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "Sonraki betik"
@@ -4456,6 +4883,11 @@ msgid "Close All"
msgstr "Tümünü Kapat"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "Beğenileni Aç / Kapat"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4488,6 +4920,11 @@ msgid "Keep Debugger Open"
msgstr "Kusurayıkları Açık Tut"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "Düzenleyicide Aç"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "Pencere"
@@ -4557,6 +4994,10 @@ msgstr ""
"düzenlenebilirler"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Renk Seç"
@@ -4604,6 +5045,11 @@ msgid "Move Down"
msgstr "Aşağı Taşı"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "Noktayı Sil"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "Sola Girintile"
@@ -4910,37 +5356,6 @@ msgid "Animation Key Inserted."
msgstr "Canlandırma Açarı Eklendi."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "İleri Git"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "Terse doÄŸru"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "Tekerlek Aşağı."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -5008,10 +5423,64 @@ msgid "Audio Listener"
msgstr "Ses Dinleyici"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "Etkin"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "İleri Git"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Backwards"
+msgstr "Terse doÄŸru"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "Tekerlek Aşağı."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "Önizleme"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm İletişim Kutusu"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "Biçim Seç"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt + RMB: Derin dizelge seçimi"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "Taşıma Biçimi (W)"
@@ -5132,6 +5601,7 @@ msgid "View Grid"
msgstr "Izgara Görünümü"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "Ayarlar"
@@ -5260,6 +5730,11 @@ msgid "StyleBox Preview:"
msgstr "StyleBox Önizleme:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "Doku Bölgesi"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "Yapışma Biçimi:"
@@ -5317,6 +5792,16 @@ msgid "Remove Item"
msgstr "Öğeyi Kaldır"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Bölüt Öğelerini Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "Kalıp"
@@ -5384,7 +5869,7 @@ msgstr "Sekme 2"
msgid "Tab 3"
msgstr "Sekme 3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "Tür:"
@@ -5406,12 +5891,27 @@ msgid "Color"
msgstr "Renk"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "Seçimi Sil"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "TileMap'i Boya"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "İkile"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "DoÄŸrusal"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "Kova"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5446,10 +5946,6 @@ msgid "Pick Tile"
msgstr "Karo Seç"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "Seç"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "0 Düzeyde Döndür"
@@ -5513,7 +6009,7 @@ msgstr "Seçili dizeçleri sil?"
msgid "Presets"
msgstr "Ön ayar.."
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "Ekle.."
@@ -5572,6 +6068,24 @@ msgid "Make Patch"
msgstr "Amaçlanan Dizeç Yolu :"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "Doku"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "Yöntem Dizelgesi:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "PCK/Zip Dizecini Dışa Aktar"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5612,10 +6126,6 @@ msgid "The following files failed extraction from package:"
msgstr "Aşağıdaki dizeçlerin, çıkından ayıklanma işlemi başarısız oldu:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "Çıkın Başarı ile Kuruldu!"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Var olan Tasarıyı İçe Aktar"
@@ -5660,6 +6170,23 @@ msgid "Are you sure to open more than one project?"
msgstr "Birden fazla tasarı açmakta kararlı mısınız?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"Hiçbir ana sahne tanımlanmadı, birini seçiniz?\n"
+"Daha sonra \"uygulama\" kategorisinin altındaki \"Tasarı Ayarları\" ndan "
+"deÄŸiÅŸtirebilirsiniz."
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "Birden fazla tasarıyı çalıştırmaya kararlı mısınız?"
@@ -5677,10 +6204,6 @@ msgstr ""
"musunuz?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Tasarı Yöneticisi"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "Tasarı Dizelgesi"
@@ -5709,258 +6232,292 @@ msgstr "Öğeyi Kaldır"
msgid "Exit"
msgstr "Çık"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "Bağlanamadı."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "Dokunaç "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Eğlence Düğmesi"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "EÄŸlence Ekseni"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "Fare Düğmesi"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Geçersiz işlem (her şey ancak şu '/' ya da şuna ':' gider)."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "İşlem '%s' zaten var!"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "Giriş İşlem Olayını Yeniden Adlandır"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "Giriş İşlem Olayı Ekle"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Denetim+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "Bir Dokunaca Basın.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "Fare Düğme Dizini:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "Sol Düğme"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "Sağ Düğme"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "Orta Düğme"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "Tekerlek Yukarı Düğmesi"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "Tekerlek Aşağı Düğmesi"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "Düğme 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "Düğme 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "Düğme 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "Düğme 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "DeÄŸiÅŸtir"
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "Oyunçubuğu Ekseni Dizini:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "Eksen"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Button Index:"
msgstr "Oyunçubuğu Düğme Dizini:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "GiriÅŸ Eylemi Ekle"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Giriş Eylemi Olayını Sil"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Add Event"
msgstr "BoÅŸ Ekle"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "Aygıt"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "Düğme"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "Sol Düğme."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "Sağ Düğme."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "Orta Düğme."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "Tekerlek Yukarı."
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "Tekerlek Aşağı."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "Alıcı Özellik Ekle"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "Özellik:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "Ayarlar"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "GiriÅŸi Sil"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Ayarları kaydetme sorunu."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "Ayarlar kaydedildi TAMAM."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "Çeviri Ekle"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "Çeviriyi Kaldır"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "Yeniden EÅŸlenmiÅŸ Yol Ekle"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "Kaynak Yeniden EÅŸleme Ekle EÅŸle"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "Kaynak Yeniden EÅŸleme Dilini DeÄŸiÅŸtir"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "Kaynak Yeniden Eşlemesini Kaldır"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "Kaynak Yeniden Eşle Seçeneğini Kaldır"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Tasarı Ayarları (engine.cfg)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "Genel"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "Özellik:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "Sil"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "Düzleme Tıpkıla.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "EÅŸleme Gir"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "Eylem:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "Aygıt:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "Dizin:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "YerelleÅŸtirme"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "Çeviriler"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "Çeviriler:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "Yeniden EÅŸlemeler"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "Kaynaklar:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "Yerel Ayara Göre Yeniden Eşlemeler:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Yerel"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "KendindenYükle"
@@ -6002,6 +6559,11 @@ msgid "Assign"
msgstr "Ata"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "Bir Düğüm Seç"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "Yeni Betik"
@@ -6016,6 +6578,11 @@ msgstr "Dizeç yüklenirken sorun oluştu: Bir kaynak değil!"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "Düğüm(leri) içe Aktarmak için Seç"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Pick a Node"
msgstr "Bir Düğüm Seç"
@@ -6111,6 +6678,11 @@ msgstr "Ana Sahne DeÄŸiÅŸtirgenleri:"
msgid "Scene Run Settings"
msgstr "Sahne Çalıştırma Ayarları"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "Tamam"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "Sahneleri örneklemek için ata yok."
@@ -6156,10 +6728,6 @@ msgid "Delete Node(s)?"
msgstr "Düğüm(ler) Silinsin mi?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "Bu işlem bir sahne olmadan yapılamaz."
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6172,6 +6740,18 @@ msgid "Save New Scene As.."
msgstr "Yeni Sahneyi BaÅŸkaca Kaydet .."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "Düzenlenebilir Çocuklar"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "Yer Tutucu Olarak Yükle"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "Örneği Boşalt"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "Anlamlı!"
@@ -6216,6 +6796,14 @@ msgid "Edit Connections"
msgstr "Bağlantıları Düzenle"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "Kalıtı Temizle"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "Düzenleyicide Aç"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "Düğümleri Sil"
@@ -6269,6 +6857,11 @@ msgstr ""
"sahne oluÅŸturur."
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "Süzgeçler"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "Seçili düğüm için yeni veya mevcut bir betik iliştir."
@@ -6276,6 +6869,14 @@ msgstr "Seçili düğüm için yeni veya mevcut bir betik iliştir."
msgid "Clear a script for the selected node."
msgstr "Seçilen düğüm için betik temizle."
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "Kalıt Silinsin mi? (Geri Alınamaz!)"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "Temiz!"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "Uzaysal Görünürlüğü Aç / Kapat"
@@ -6307,11 +6908,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "Sorun ayıklama seçenekleri"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Örnek:"
@@ -6350,32 +6946,8 @@ msgid "Scene Tree (Nodes):"
msgstr "Sahne Ağacı (Düğümler):"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "Düzenlenebilir Çocuklar"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "Yer Tutucu Olarak Yükle"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "Örneği Boşalt"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "Düzenleyicide Aç"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "Kalıtı Temizle"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "Kalıt Silinsin mi? (Geri Alınamaz!)"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "Temiz!"
+msgid "Node Configuration Warning!"
+msgstr ""
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6383,6 +6955,11 @@ msgstr "Bir Düğüm Seç"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "Bediz yüklenirken sorun oluştu:"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "Dizeç düzeninde betik oluşturulamadı."
@@ -6391,6 +6968,10 @@ msgid "Error loading script from %s"
msgstr "Yazı tipi %s yüklerken sorun oluştu"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "Uygulanamaz"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "Yol boÅŸ"
@@ -6434,10 +7015,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "Uygulanamaz"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6608,6 +7185,10 @@ msgid "Change Light Radius"
msgstr "Işın Çapını Değiştir"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "Kamera FOV'sunu DeÄŸiÅŸtir"
@@ -6690,6 +7271,137 @@ msgstr "Geçersiz örnek sözlük biçemi (@path 'taki kod geçersiz)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "Geçersiz örnek sözlüğü (geçersiz altbölütler)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "Seçilenleri Sil"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "Seçimi İkile"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Üstten Görünüm"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "Devre dışı"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl: Döndür"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl: Döndür"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl: Döndür"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "Yeni oluÅŸtur"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "Yeni Tasarı Oluştur"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "TileMap'i Sil"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "Yalnızca Seçim"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "Yalnızca Seçim"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "Yapışma Ayarları"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "Örnek:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Dizeç"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6727,6 +7439,31 @@ msgid "Stack overflow with stack depth: "
msgstr "Şu derinlikte yığın taşması: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "İşaret Değiştirgenlerini Düzenle:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "Dizinin türünü degistir"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "Giriş Adını Değiştir"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "Önyüklü Değeri Değiştir"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "Değişkeni Düzenle:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "İşlevler:"
@@ -6767,26 +7504,6 @@ msgid "Add Signal"
msgstr "İşaret Ekle"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "İşlevi Kaldır"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "Değişkeni Kaldır"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "Değişken Düzenleniyor:"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "İşareti Kaldır"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "İşaret Düzenleniyor:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "İfadeyi Değiştir"
@@ -6795,6 +7512,16 @@ msgid "Add Node"
msgstr "Düğüm Ekle"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "Geçersiz açarları kaldır"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "Çizge Düğüm(lerini) İkile"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
"Alıcı işlevini bırakmak için Alt'a basılı tutun. Genelgeçer imzayı bırakmak "
@@ -6839,6 +7566,26 @@ msgid "Add Setter Property"
msgstr "Düzenleyici Özellik Ekle"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "Türü Değiştir"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "Düğümleri Kaldır"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "Gölgelendirici Çizge Düğümünü Kaldır"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "Düğüme Bağlan:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "KoÅŸul"
@@ -6867,6 +7614,56 @@ msgid "Get"
msgstr "Al"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "Giriş Adını Değiştir"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "'..' üzerinde çalışılamıyor"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "Kaynak bellemi boÅŸ!"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "Düğümleri Yapıştır"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "İşlevi Kaldır"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "Değişkeni Düzenle:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "Değişkeni Kaldır"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "İşaret Düzenleniyor:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "İşareti Kaldır"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "Değişken Düzenleniyor:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "İşaret Düzenleniyor:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "Taban Türü:"
@@ -6887,10 +7684,6 @@ msgid "Edit Variable:"
msgstr "Değişkeni Düzenle:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "DeÄŸiÅŸtir"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "Seçilenleri Sil"
@@ -6966,14 +7759,6 @@ msgstr ""
"_step()'ten geçersiz dönüş değeri, tam sayı (dizi çıkışı) ya da dizgi "
"(sorunu) olmalı."
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "yeni basıldı"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "yeni bırakıldı"
-
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Run in Browser"
@@ -6998,81 +7783,6 @@ msgstr "Karo Bulunamadı:"
msgid "Could not open template for export:\n"
msgstr "Dizin oluşturulamadı."
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-"Onay belgesi dizeci okunamadı. Yol ve gizyazının her ikisi de doğru mu?"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "İmza nesnesini oluşturmada sorun."
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "Çıkın imzasını oluşturmada sorun."
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"Hiçbir dışa aktarım kalıbı bulunamadı.\n"
-"Dışa aktarım kalıplarını indirin ve yükleyin.."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "Özel kusur ayıklama çıkını bulunmadı."
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "Özel yayınlama çıkını bulunamadı."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "Benzersiz Ad Geçersiz."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "Geçersiz ürün GUID'i."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "Geçersiz yayıncı GUID'i."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "Geçersiz arkaplan rengi."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Geçersiz Yığım Belirtkesi, bedizin boyutları (50x50 olmalı)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "Geçersiz kare 44x44 belirtkenin bediz boyutları (44x44 olmalı)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "Geçersiz kare 71x71 belirtkenin bediz boyutları (71x71 olmalı)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "Geçersiz kare 150x150 belirtkenin bediz boyutları (150x150 olmalı)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "Geçersiz kare 310x310 belirtkenin bediz boyutları (310x310 olmalı)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "Geçersiz kare 310x150 belirtkenin bediz boyutları (310x150 olmalı)."
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "Geçersiz açılış görüntülüğü bediz boyutları (620x300 olmalı)."
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7176,6 +7886,13 @@ msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
"PathFollow2D yalnızca Path2D düğümünün çocuğu olarak ayarlanınca çalışır."
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7205,23 +7922,33 @@ msgstr ""
"VisibilityEnable2D düğümü düzenlenmiş sahne kökü doğrudan ata olarak "
"kullanıldığında çalışır."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape sadece CollisionObject türetilmiş bir düğümde çarpışma yüzeyi "
-"sağlamaya yarar. Bunların yüzeyine şekil vermek için Area, StaticBody, "
-"RigidBody, KinematicBody, v.b. onu sadece bunların çocuğu olarak kullanın."
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"CollisionShape'in çalışması için bir şekil verilmelidir. Lütfen bunun için "
-"bir şekil kaynağı oluşturun!"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7238,6 +7965,24 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Boş bir CollisionPolygon'un çarpışma üzerinde etkisi yoktur."
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape sadece CollisionObject türetilmiş bir düğümde çarpışma yüzeyi "
+"sağlamaya yarar. Bunların yüzeyine şekil vermek için Area, StaticBody, "
+"RigidBody, KinematicBody, v.b. onu sadece bunların çocuğu olarak kullanın."
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"CollisionShape'in çalışması için bir şekil verilmelidir. Lütfen bunun için "
+"bir şekil kaynağı oluşturun!"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7257,6 +8002,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7279,8 +8031,8 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "Çalışma Biçimi:"
+msgid "Raw Mode"
+msgstr "Kaydırma Biçimi"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
@@ -7294,22 +8046,6 @@ msgstr "Uyarı!"
msgid "Please Confirm..."
msgstr "Lütfen Doğrulayın..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "Bir Dizeç Aç"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "Dizeç(leri) Aç"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "Bir dizin aç"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "Bir Dizeç ya da Dizin Aç"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7331,7 +8067,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7349,6 +8085,97 @@ msgstr ""
"bir boyut elde edin. Ya da, onu bir RenderTarget yapın ve iç dokusunu "
"görüntülemesi için bir düğüme atayın."
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "Sahneyi kapatsın mı? (Kaydedilmemiş değişiklikler yok olacak)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "Tasarı Yöneticisini Aç\n"
+#~ "(KaydedilmemiÅŸ deÄŸiÅŸiklikler kaybolacak!)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "Önc. Sahneye Git sekmesini Kapat"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "Ataya geniÅŸletin"
+
+#~ msgid "Del"
+#~ msgstr "Sil"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "Düzleme Tıpkıla.."
+
+#~ msgid "just pressed"
+#~ msgstr "yeni basıldı"
+
+#~ msgid "just released"
+#~ msgstr "yeni bırakıldı"
+
+#, fuzzy
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr ""
+#~ "Onay belgesi dizeci okunamadı. Yol ve gizyazının her ikisi de doğru mu?"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "İmza nesnesini oluşturmada sorun."
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "Çıkın imzasını oluşturmada sorun."
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "Hiçbir dışa aktarım kalıbı bulunamadı.\n"
+#~ "Dışa aktarım kalıplarını indirin ve yükleyin.."
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "Özel kusur ayıklama çıkını bulunmadı."
+
+#~ msgid "Custom release package not found."
+#~ msgstr "Özel yayınlama çıkını bulunamadı."
+
+#~ msgid "Invalid unique name."
+#~ msgstr "Benzersiz Ad Geçersiz."
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "Geçersiz ürün GUID'i."
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "Geçersiz yayıncı GUID'i."
+
+#~ msgid "Invalid background color."
+#~ msgstr "Geçersiz arkaplan rengi."
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "Geçersiz Yığım Belirtkesi, bedizin boyutları (50x50 olmalı)."
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "Geçersiz kare 44x44 belirtkenin bediz boyutları (44x44 olmalı)."
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "Geçersiz kare 71x71 belirtkenin bediz boyutları (71x71 olmalı)."
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "Geçersiz kare 150x150 belirtkenin bediz boyutları (150x150 olmalı)."
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "Geçersiz kare 310x310 belirtkenin bediz boyutları (310x310 olmalı)."
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "Geçersiz kare 310x150 belirtkenin bediz boyutları (310x150 olmalı)."
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr "Geçersiz açılış görüntülüğü bediz boyutları (620x300 olmalı)."
+
+#, fuzzy
+#~ msgid "RAW Mode"
+#~ msgstr "Çalışma Biçimi:"
+
#~ msgid "Node From Scene"
#~ msgstr "Sahneden Düğüm(node)"
@@ -7434,9 +8261,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "%d Olgusu(ları) ile Değiştirildi."
-#~ msgid "Please save the scene first."
-#~ msgstr "Lütfen önce sahneyi kaydediniz."
-
#~ msgid "Save Translatable Strings"
#~ msgstr "Çevirilebilir Metinleri Kaydet"
@@ -7648,9 +8472,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "Betik Şifreleme Açarı (Hex olarak 256-bit):"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "PCK/Zip Dizecini Dışa Aktar"
-
#~ msgid "Export Project PCK"
#~ msgstr "Tasarı PCK Dışa Aktar"
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index a154df0565..24796e1f32 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -146,7 +146,8 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr ""
@@ -378,7 +379,8 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -389,9 +391,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr ""
@@ -464,7 +466,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -525,17 +527,16 @@ msgid "All"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr ""
@@ -551,7 +552,7 @@ msgstr ""
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -563,7 +564,7 @@ msgstr ""
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr ""
@@ -715,14 +716,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr ""
@@ -827,7 +828,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr ""
@@ -907,12 +908,180 @@ msgstr ""
msgid "Delete selected files?"
msgstr ""
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr ""
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "ایکشن منتقل کریں"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -926,21 +1095,45 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
msgstr ""
#: editor/editor_autoload_settings.cpp
@@ -1044,6 +1237,10 @@ msgid "Updating scene.."
msgstr ""
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr ""
@@ -1121,6 +1318,22 @@ msgstr ""
msgid "Open"
msgstr ""
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1248,6 +1461,14 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1265,7 +1486,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1315,6 +1536,10 @@ msgid "Creating Thumbnail"
msgstr ""
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1433,11 +1658,11 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
+msgid "Save & Close"
msgstr ""
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1449,23 +1674,27 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
-msgid "This scene has never been saved. Save before running?"
+msgid "Yes"
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Mesh Library"
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Export Tile Set"
+msgid "Export Mesh Library"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
+msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Exit the editor?"
+msgid "This operation can't be done without a selected node."
msgstr ""
#: editor/editor_node.cpp
@@ -1489,9 +1718,27 @@ msgid "Quick Run Scene.."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
@@ -1500,6 +1747,22 @@ msgid "Pick a Main Scene"
msgstr "ایک مینو منظر چنیں"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1532,6 +1795,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr ""
@@ -1548,6 +1816,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr ""
@@ -1596,10 +1868,6 @@ msgstr ""
msgid "Close Scene"
msgstr ""
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr ""
@@ -1879,6 +2147,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1888,26 +2160,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1928,9 +2184,18 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2031,6 +2296,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2167,10 +2442,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2179,6 +2470,18 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving file:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving dir:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2255,6 +2558,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2266,9 +2575,28 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2308,6 +2636,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2494,6 +2830,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3075,6 +3415,10 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3387,6 +3731,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3419,10 +3764,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3531,11 +3872,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3573,6 +3909,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3612,6 +3956,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
msgstr ""
@@ -3621,11 +3977,28 @@ msgid "Remove point"
msgstr ".تمام کا انتخاب"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3650,6 +4023,12 @@ 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 ""
@@ -3939,6 +4318,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4256,6 +4640,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4280,6 +4670,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Next script"
msgstr "سب سکریپشن بنائیں"
@@ -4333,6 +4727,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4365,6 +4763,10 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4428,6 +4830,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4474,6 +4880,10 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Delete Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4778,91 +5188,99 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Display Overdraw"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Doppler Enable"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Forward"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4870,6 +5288,17 @@ msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -4989,6 +5418,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5117,6 +5547,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5174,6 +5608,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5241,7 +5685,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5263,11 +5707,24 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5303,10 +5760,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5366,7 +5819,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5413,6 +5866,22 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5449,10 +5918,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5497,6 +5962,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5511,10 +5989,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5543,254 +6017,283 @@ msgstr ".تمام کا انتخاب"
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr ""
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5831,6 +6334,10 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "New Script"
msgstr "سب سکریپشن بنائیں"
@@ -5844,6 +6351,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr ""
@@ -5939,6 +6450,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5982,10 +6498,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -5998,6 +6510,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6040,6 +6564,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6092,6 +6624,10 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6099,6 +6635,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6130,10 +6674,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6171,35 +6711,15 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Select a Node"
msgstr ""
-#: editor/scene_tree_editor.cpp
-msgid "Select a Node"
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
msgstr ""
#: editor/script_create_dialog.cpp
@@ -6211,6 +6731,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6251,10 +6775,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6423,6 +6943,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6506,6 +7030,123 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr ".تمام کا انتخاب"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6537,6 +7178,26 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Signal Arguments"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr ""
@@ -6578,33 +7239,19 @@ msgid "Add Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Function"
-msgstr ".تمام کا انتخاب"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Change Expression"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Signal"
-msgstr ".تمام کا انتخاب"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
+msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
+msgid "Remove VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
+msgid "Duplicate VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6648,6 +7295,23 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "ایکشن منتقل کریں"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6676,6 +7340,52 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Function"
+msgstr ".تمام کا انتخاب"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Signal"
+msgstr ".تمام کا انتخاب"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6696,10 +7406,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6773,14 +7479,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6801,77 +7499,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6950,6 +7577,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6972,17 +7606,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -6996,6 +7645,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7011,6 +7673,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7027,7 +7696,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7042,22 +7711,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr ""
@@ -7076,7 +7729,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index bddb77c731..cf9013091a 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-06-22 20:49+0800\n"
+"PO-Revision-Date: 2017-07-08 15:27+0800\n"
"Last-Translator: Geequlim <geequlim@gmail.com>\n"
"Language-Team: 汉语 <geequlim@gmail.com>\n"
"Language: zh_CN\n"
@@ -155,7 +155,8 @@ msgstr "å‰å¾€ä¸‹ä¸€æ­¥"
msgid "Goto Prev Step"
msgstr "å‰å¾€ä¸Šä¸€æ­¥"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "线性"
@@ -374,14 +375,12 @@ msgid "Version:"
msgstr "版本:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "常é‡:"
+msgstr "内容:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "文件"
+msgstr "查看文件"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
#: editor/editor_help.cpp editor/property_selector.cpp
@@ -389,7 +388,8 @@ msgstr "文件"
msgid "Description:"
msgstr "æè¿°:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr "安装"
@@ -400,9 +400,9 @@ msgstr "安装"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "关闭"
@@ -417,30 +417,27 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "连接错误,请é‡è¯•。"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "连接事件。"
+msgstr "无法连接。"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "连接到节点:"
+msgstr "无法连接到æœåС噍:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "æœåŠ¡å™¨æ— å“应:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "æ— å“应。"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request failed, return code:"
-msgstr "未知的文件类型请求:"
+msgstr "请求失败,错误代ç :"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
@@ -456,7 +453,7 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "失败:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
@@ -476,35 +473,31 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr ""
+msgstr "资æºä¸‹è½½å‡ºé”™:"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "完æˆï¼"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "获å–:"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
-msgstr "ä¿å­˜ä¸­..."
+msgstr "è§£æžä¸­.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "连接事件。"
+msgstr "连接中.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "测试"
+msgstr "正在请求.."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "ä¿å­˜èµ„æºå‡ºé”™ï¼"
+msgstr "请求错误"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
@@ -512,16 +505,15 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "é‡è¯•"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Download Error"
-msgstr "下载"
+msgstr "下载错误"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "æ­¤èµ„æºæ–‡ä»¶æ­£åœ¨ä¸‹è½½ä¸­ï¼"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
@@ -544,17 +536,16 @@ msgid "All"
msgstr "全部"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "æœç´¢:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "æœç´¢"
@@ -570,7 +561,7 @@ msgstr "æœç´¢"
msgid "Import"
msgstr "导入"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "æ’ä»¶"
@@ -582,7 +573,7 @@ msgstr "排åº:"
msgid "Reverse"
msgstr "å选"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "分类:"
@@ -734,14 +725,14 @@ msgstr "连接到节点:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "添加"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "移除"
@@ -846,7 +837,7 @@ msgid "Resource"
msgstr "资æº"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "路径"
@@ -926,12 +917,196 @@ msgstr "查看孤立资æº"
msgid "Delete selected files?"
msgstr "删除选中的文件?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "删除"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr "感谢Godot社区!"
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "谢谢ï¼"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr "Godot引擎贡献者"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "作者:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "项目管ç†å™¨"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "å¼€å‘者"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "项目管ç†å™¨"
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "å¼€å‘者"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "内容:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "内容:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "ä¸åŽ‹ç¼©"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr "软件包安装æˆåŠŸï¼"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Package Installer"
+msgstr "软件包安装æˆåŠŸï¼"
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Effect"
+msgstr "添加事件"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "打开音频Bus布局"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Solo"
+msgstr "打开音频Bus布局"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Toggle Audio Bus Mute"
+msgstr "打开音频Bus布局"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "删除选择的节点"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "å­åœºæ™¯é€‰é¡¹"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "æ‹·è´"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "删除选择的节点"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Add Audio Bus"
+msgstr "添加Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "删除布局"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "å¤åˆ¶åŠ¨ç”»"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "移动动作"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr "将音频Bus布局ä¿å­˜ä¸º.."
@@ -945,23 +1120,53 @@ msgid "Open Audio Bus Layout"
msgstr "打开音频Bus布局"
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+"文件扩展åä¸åˆæ³•\n"
+"请使用.font文件。"
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "添加Bus"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Create a new Bus Layout."
+msgstr "创建资æº"
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "加载"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "从ç£ç›˜ä¸­åŠ è½½èµ„æºå¹¶ç¼–辑。"
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "å¦å­˜ä¸º"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Save this Bus Layout to a file."
+msgstr "将音频Bus布局ä¿å­˜ä¸º.."
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "默认"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "åç§°éžæ³•:。"
@@ -1062,6 +1267,11 @@ msgid "Updating scene.."
msgstr "更新场景中.."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "请先ä¿å­˜åœºæ™¯ã€‚"
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "选择目录"
@@ -1139,6 +1349,22 @@ msgstr "所有文件(*)"
msgid "Open"
msgstr "打开"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "打开文件"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "打开文件"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "打开目录"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "打开文件或目录"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1264,6 +1490,15 @@ msgid "Signals:"
msgstr "事件:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "动画"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "常é‡:"
@@ -1280,7 +1515,8 @@ msgid "Search Text"
msgstr "æœç´¢æ–‡æœ¬"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " 输出:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1330,6 +1566,11 @@ msgid "Creating Thumbnail"
msgstr "创建缩略图"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr "无法ä¿å­˜åœºæ™¯ï¼Œä¾èµ–项(实例)验è¯å¤±è´¥ã€‚"
@@ -1403,14 +1644,13 @@ msgid "There is no defined scene to run."
msgstr "æ²¡æœ‰è®¾ç½®è¦æ‰§è¡Œçš„场景。"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"尚未定义主场景。\n"
-"请在项目设置的application分类下设置选择主场景。"
+"尚未定义主场景, 现在选择一个�\n"
+"你也å¯ä»¥ç¨åŽåœ¨é¡¹ç›®è®¾ç½®çš„application分类下修改。"
#: editor/editor_node.cpp
msgid ""
@@ -1455,26 +1695,34 @@ msgid "Quick Open Script.."
msgstr "快速打开脚本.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "是"
+#, fuzzy
+msgid "Save & Close"
+msgstr "ä¿å­˜æ–‡ä»¶"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "确定è¦å…³é—­åœºæ™¯å—?(未ä¿å­˜çš„修改将丢失)"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "场景å¦å­˜ä¸º.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "节点"
+msgstr "å¦"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "是"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "此场景尚未ä¿å­˜ï¼Œè¦åœ¨è¿è¡Œä¹‹å‰ä¿å­˜å®ƒå—?"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr "导出MeshLibrary"
@@ -1484,12 +1732,9 @@ msgid "Export Tile Set"
msgstr "导出砖å—集"
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "退出"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "确定è¦é€€å‡ºç¼–辑器å—?"
+#, fuzzy
+msgid "This operation can't be done without a selected node."
+msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1512,18 +1757,52 @@ msgid "Quick Run Scene.."
msgstr "快速è¿è¡Œåœºæ™¯.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Quit"
+msgstr "退出"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "确定è¦é€€å‡ºç¼–辑器å—?"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Open Project Manager?"
+msgstr "项目管ç†å™¨"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Quit"
+msgstr "ä¿å­˜æ–‡ä»¶"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"退出到项目管ç†çª—å£ï¼Ÿ\n"
-"(未ä¿å­˜çš„修改将丢失)"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "选择主场景"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1559,6 +1838,11 @@ msgstr "ä¿å­˜å¸ƒå±€"
msgid "Delete Layout"
msgstr "删除布局"
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "默认"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "切æ¢åœºæ™¯æ ‡ç­¾é¡µ"
@@ -1575,6 +1859,11 @@ msgstr "更多的%d个文件或目录"
msgid "Distraction Free Mode"
msgstr "无干扰模å¼"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Toggle distraction-free mode."
+msgstr "无干扰模å¼"
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "场景"
@@ -1623,10 +1912,6 @@ msgstr "ä¿å­˜æ‰€æœ‰åœºæ™¯"
msgid "Close Scene"
msgstr "关闭场景"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr "关闭并å‰å¾€ä¸Šä¸€ä¸ªåœºæ™¯"
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "最近打开"
@@ -1663,9 +1948,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "其他工程或全场景工具。"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "新建"
+msgstr "项目"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1769,9 +2053,8 @@ msgstr ""
"当使用远程设备调试时,使用网络文件系统能有效æé«˜ç¼–辑效率。"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "编辑"
+msgstr "编辑器"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1798,13 +2081,12 @@ msgid "Classes"
msgstr "类型"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "关闭文档"
+msgstr "在线文档"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "问答"
#: editor/editor_node.cpp
msgid "Issue Tracker"
@@ -1918,6 +2200,10 @@ msgstr "节点"
msgid "Output"
msgstr "输出"
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr "釿–°å¯¼å…¥"
@@ -1927,26 +2213,10 @@ msgid "Update"
msgstr "æ›´æ–°"
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr "感谢Godot社区!"
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "谢谢ï¼"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "从ZIP文件中导入模æ¿"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr "导出项目"
@@ -1967,38 +2237,41 @@ msgid "Open & Run a Script"
msgstr "打开并è¿è¡Œè„šæœ¬"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "从现有场景中创建.."
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr "加载错误"
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr "选择"
+
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "在编辑器中打开"
+msgstr "打开2D编辑器"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "在编辑器中打开"
+msgstr "打开3D编辑器"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "在编辑器中打开"
+msgstr "打开脚本编辑器"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "导出库"
+msgstr "打开资æºå•†åº—"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "在编辑器中打开"
+msgstr "打开下一个编辑器"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "在编辑器中打开"
+msgstr "打开上一个编辑器"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -2076,6 +2349,16 @@ msgstr "釿–°å¯¼å…¥"
msgid "Re-Import Changed Resources"
msgstr "釿–°å¯¼å…¥æ”¹å˜çš„资æº"
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr "在_run()方中填写您的逻辑代ç ã€‚"
@@ -2211,10 +2494,28 @@ msgid "Cannot navigate to '"
msgstr "无法导航到 "
#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr "ä¿å­˜å¹¶é‡æ–°å¯¼å…¥"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "æº:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr "æºæ–‡ä»¶å’Œç›®æ ‡æ–‡ä»¶ç›¸åŒï¼Œæ“作忽略。"
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr "æºè·¯å¾„和目标路径相åŒï¼Œæ“作忽略。"
@@ -2223,6 +2524,20 @@ msgid "Can't move directories to within themselves."
msgstr "无法将目录移动到自身下。"
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "加载图片出错:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "导入出错:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr "无法对'..'引用æ“作"
@@ -2299,6 +2614,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr "将选中的场景实例为选中节点的å­èŠ‚ç‚¹ã€‚"
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "移动"
@@ -2310,10 +2631,31 @@ msgstr "添加到分组"
msgid "Remove from Group"
msgstr "从分组中移除"
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "è¡¨é¢ %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "导入场景.."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Multiple Scenes"
+msgstr "导入3D场景"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
#: editor/import/resource_importer_scene.cpp
#: editor/io_plugins/editor_scene_import_plugin.cpp
@@ -2352,6 +2694,14 @@ msgid "Saving.."
msgstr "ä¿å­˜ä¸­..."
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr "文件"
@@ -2438,13 +2788,12 @@ msgid "No target font resource!"
msgstr "请设置目标字体资æºï¼"
#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
msgid ""
"Invalid file extension.\n"
"Please use .font."
msgstr ""
"文件扩展åä¸åˆæ³•\n"
-"请使用.fnt文件。"
+"请使用.font文件。"
#: editor/io_plugins/editor_font_import_plugin.cpp
msgid "Can't load/process source font."
@@ -2543,6 +2892,10 @@ msgstr "æºMesh:"
msgid "Mesh"
msgstr "Mesh"
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr "è¡¨é¢ %d"
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr "没有音效è¦å¯¼å…¥ï¼"
@@ -2921,9 +3274,8 @@ msgid "Compress"
msgstr "压缩"
#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
msgid "Add to Project (project.godot)"
-msgstr "添加到项目 (godot.cfg)"
+msgstr "添加到项目 (project.godot)"
#: editor/io_plugins/editor_translation_import_plugin.cpp
msgid "Import Languages:"
@@ -3126,6 +3478,11 @@ msgid "New name:"
msgstr "æ–°åç§°:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "编辑节点筛选"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr "缩放:"
@@ -3437,6 +3794,7 @@ msgstr "æ¢å¤èŠ‚ç‚¹çš„å­å­™èƒ½å¤Ÿè¢«é€‰ä¸­ã€‚"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "编辑"
@@ -3469,10 +3827,6 @@ msgid "Use Pixel Snap"
msgstr "使用åƒç´ å¸é™„"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr "展开父节点"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr "骨骼.."
@@ -3581,11 +3935,6 @@ msgstr "æ­¤æ“作åªèƒ½åº”用于å•个选中节点。"
msgid "Change default type"
msgstr "修改默认值"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "好的"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3625,6 +3974,14 @@ msgstr "编辑多边形(移除顶点)"
msgid "Create a new polygon from scratch."
msgstr "从头开始创建一个新的多边形。"
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "创建 Poly3D (多边型3D)"
@@ -3665,22 +4022,53 @@ msgstr "从场景中更新"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Add point"
-msgstr "添加输入事件"
+msgid "Modify Curve Point"
+msgstr "修改曲线"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Modify Curve Tangent"
+msgstr "修改曲线图"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Load Curve Preset"
+msgstr "加载预设"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr "添加顶点"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove point"
-msgstr "移除路径顶点"
+msgstr "移除顶点"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Left linear"
+msgstr "线性"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Right linear"
+msgstr "å³è§†å›¾"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "加载资æº"
+msgstr "加载预设"
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
-msgstr "修改曲线"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "移除路径顶点"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3704,6 +4092,12 @@ 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 "添加é®å…‰å¤šè¾¹å½¢"
@@ -3965,9 +4359,8 @@ msgstr "清除Emission Mask(å‘å°„å±è”½ï¼‰"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
-msgstr "生æˆAABB"
+msgstr "正在生æˆAABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -3994,29 +4387,31 @@ msgid "Load Emission Mask"
msgstr "加载Emission Mask(å‘å°„å±è”½ï¼‰"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
+msgid "Particles"
+msgstr "顶点"
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr "生æˆé¡¶ç‚¹è®¡æ•°:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "å¹³å‡å¸§æ—¶é—´ï¼ˆç§’)"
+msgstr "ç”Ÿæˆæ—¶é—´ï¼ˆç§’)"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "设置Emission Mask(å‘å°„å±è”½ï¼‰"
+msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "从场景中创建"
+msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "å‘å°„ä½ç½®:"
+msgstr ""
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4079,21 +4474,18 @@ msgid "Emission Source: "
msgstr "å‘å°„æºï¼š"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "生æˆAABB"
+msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
msgstr "从曲线中移除顶点"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "移动曲线外控制点"
+msgstr "移除曲线外控制点"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
msgstr "从曲线中移除顶点"
@@ -4153,14 +4545,12 @@ msgid "Remove Path Point"
msgstr "移除路径顶点"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "移动曲线外控制点"
+msgstr "移除曲线外控制点"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "移动曲线内控制点"
+msgstr "移除曲线内控制点"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4315,9 +4705,14 @@ msgid "Pitch"
msgstr "音调"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "清除骨骼"
+msgstr "清ç†å½“剿–‡ä»¶"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4344,6 +4739,10 @@ msgid "Save Theme As.."
msgstr "主题å¦å­˜ä¸º.."
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "下一个脚本"
@@ -4396,6 +4795,11 @@ msgid "Close All"
msgstr "关闭全部"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Scripts Panel"
+msgstr "åˆ‡æ¢æ”¶è—"
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4428,6 +4832,11 @@ msgid "Keep Debugger Open"
msgstr "ä¿æŒè°ƒè¯•器打开"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "打开下一个编辑器"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr "窗å£"
@@ -4440,9 +4849,8 @@ msgid "Move Right"
msgstr "å‘å³ç§»åЍ"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "æœç´¢æ–‡æ¡£ã€‚"
+msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4494,25 +4902,28 @@ msgid ""
msgstr "å†…å»ºè„šæœ¬åªæœ‰åœ¨å…¶æ‰€å±žçš„节点读å–åŽæ‰èƒ½è¢«ä¿®æ”¹"
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "拾å–颜色"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "正在转æ¢å›¾ç‰‡"
+msgstr "转æ¢å¤§å°å†™"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "大写"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "å°å†™"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "首字æ¯å¤§å†™"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -4541,6 +4952,11 @@ msgid "Move Down"
msgstr "å‘下移动"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "删除顶点"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr "å‘左缩进"
@@ -4566,11 +4982,11 @@ msgstr "修剪行åŽç©ºç™½"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "将缩进转为空格"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "将缩进转为Tab"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4594,14 +5010,12 @@ msgid "Goto Previous Breakpoint"
msgstr "å‰å¾€ä¸Šä¸€ä¸ªæ–­ç‚¹"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "转æ¢ä¸º.."
+msgstr "转æ¢ä¸ºå¤§å†™"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "转æ¢ä¸º.."
+msgstr "转æ¢ä¸ºå°å†™"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -4628,7 +5042,7 @@ msgstr "æœç´¢å…‰æ ‡ä½ç½®"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "ç€è‰²å™¨"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -4847,61 +5261,26 @@ msgid "Animation Key Inserted."
msgstr "æ’入动画键。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "å‰è¿›"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Backwards"
-msgstr "å‘åŽ"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "滚轮å‘下滚动。"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "有更改时更新UI"
+msgstr "æè´¨å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "有更改时更新UI"
+msgstr "ç€è‰²å™¨å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "有更改时更新UI"
+msgstr "表é¢å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Draw Calls"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
msgstr "顶点"
@@ -4922,14 +5301,12 @@ msgid "Display Overdraw"
msgstr "显示过度绘制"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
-msgstr "显示无阴影"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "环境"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -4945,10 +5322,61 @@ msgid "Audio Listener"
msgstr "音频监å¬å™¨"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "å¯ç”¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "预览"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XFormå¯¹è¯æ¡†"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "选择模å¼"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr "Alt+é¼ æ ‡å³é”®:显示鼠标点击ä½ç½®ä¸‹çš„æ‰€æœ‰èŠ‚ç‚¹åˆ—è¡¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr "移动模å¼ï¼ˆW)"
@@ -5069,6 +5497,7 @@ msgid "View Grid"
msgstr "显示网格"
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "设置"
@@ -5197,6 +5626,11 @@ msgid "StyleBox Preview:"
msgstr "StyleBox预览:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#, fuzzy
+msgid "Set Region Rect"
+msgstr "设置纹ç†åŒºåŸŸ"
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr "å¸é™„模å¼:"
@@ -5254,6 +5688,16 @@ msgid "Remove Item"
msgstr "移除项目"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "移除类项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "移除"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr "主题"
@@ -5321,7 +5765,7 @@ msgstr "分页2"
msgid "Tab 3"
msgstr "分页3"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr "类型:"
@@ -5343,12 +5787,27 @@ msgid "Color"
msgstr "颜色"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "擦除选中"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "绘制砖å—地图"
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "æ‹·è´"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "线性"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Bucket Fill"
+msgstr "æ¡¶(Bucket)"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5383,10 +5842,6 @@ msgid "Pick Tile"
msgstr "选择砖å—"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr "选择"
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr "旋转0度"
@@ -5446,7 +5901,7 @@ msgstr "删除选中的 '%s'?"
msgid "Presets"
msgstr "预设"
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "添加.."
@@ -5493,6 +5948,24 @@ msgid "Make Patch"
msgstr "制作Patch"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Features"
+msgstr "贴图"
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "方法列表:"
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr "导出 PCK/ZIP"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "没有下列平å°çš„导出模æ¿:"
@@ -5505,14 +5978,12 @@ msgid "Invalid project path, the path must exist!"
msgstr "项目目录ä¸å­˜åœ¨ï¼"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must not exist."
-msgstr "项目目录下ä¸èƒ½åŒ…å«godot.cfg文件。"
+msgstr "项目目录下ä¸èƒ½åŒ…å«project.godot文件。"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Invalid project path, project.godot must exist."
-msgstr "项目目录下必须包å«godot.cfg文件。"
+msgstr "项目目录下必须包å«project.godot文件。"
#: editor/project_manager.cpp
msgid "Imported Project"
@@ -5523,19 +5994,14 @@ msgid "Invalid project path (changed anything?)."
msgstr "é¡¹ç›®è·¯å¾„éžæ³•(被外部修改?)。"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Couldn't create project.godot in project path."
-msgstr "无法在项目目录下创建godot.cfg文件。"
+msgstr "无法在项目目录下创建project.godot文件。"
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
msgstr "æå–以下文件失败:"
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr "软件包安装æˆåŠŸï¼"
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "导入现有项目"
@@ -5580,6 +6046,22 @@ msgid "Are you sure to open more than one project?"
msgstr "æ‚¨ç¡®å®šè¦æ‰“开多个项目å—?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+"尚未定义主场景, 现在选择一个�\n"
+"你也å¯ä»¥ç¨åŽåœ¨é¡¹ç›®è®¾ç½®çš„application分类下修改。"
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr "æ‚¨ç¡®å®šè¦æ‰§è¡Œå¤šä¸ªé¡¹ç›®å—?"
@@ -5594,10 +6076,6 @@ msgid ""
msgstr "æ‚¨ç¡®è®¤è¦æ‰«æ%s目录下现有的Godot项目å—?"
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "项目管ç†å™¨"
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr "项目列表"
@@ -5618,264 +6096,295 @@ msgid "New Project"
msgstr "新建"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "移除模æ¿"
+msgstr "模æ¿"
#: editor/project_manager.cpp
msgid "Exit"
msgstr "退出"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "无法连接。"
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr "é”® "
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "手柄按钮"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr "摇æ†è½´"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr "鼠标按键"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr "Actionåéžæ³•(ä¸å¾—包å«'/'或':')。"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr "动作%s已存在ï¼"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr "é‡å‘½å输入事件"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr "添加输入事件"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr "Ctrl+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr "按下一个键.."
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr "鼠标按键:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr "左键"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr "å³é”®"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr "中键"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr "滚轮å‘上"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr "滚轮å‘下"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr "按键 6"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr "按键 7"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr "按键 8"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr "按键 9"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "更改"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "手柄摇æ†åºå·:"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr "è½´"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr "手柄按钮:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr "添加输入动作"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "移除输入事件"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr "添加空白帧"
+msgstr "添加事件"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "设备"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "按钮"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "左键。"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "å³é”®ã€‚"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "中键(滚轮)。"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "滚轮å‘上滚动。"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "滚轮å‘下滚动。"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Add Global Property"
+msgstr "添加 Getter Property"
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "No property '"
+msgstr "属性:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "设置"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "删除输入事件"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "ä¿å­˜è®¾ç½®å‡ºé”™ã€‚"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr "ä¿å­˜è®¾ç½®æˆåŠŸã€‚"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr "添加语言"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr "移除语言"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr "添加é‡å®šå‘路径"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr "添加资æºé‡å®šå‘"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr "修改语言资æºé‡å®šå‘"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr "移除资æºé‡å®šå‘"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr "移除资æºé‡å®šå‘选项"
-#: editor/project_settings.cpp
-#, fuzzy
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "项目设置(godot.cfg)"
+msgstr "项目设置(project.godot)"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr "一般"
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr "属性:"
-#: editor/project_settings.cpp
-msgid "Del"
-msgstr "删除"
-
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr "å¤åˆ¶åˆ°å¹³å°.."
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr "事件表"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr "动作:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr "设备:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr "åºå·:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "本地化"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "语言"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "语言:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr "é‡å®šå‘"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr "资æº:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr "地区é‡å®šå‘:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr "地区"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "自动加载(AutoLoad)"
@@ -5916,6 +6425,11 @@ msgid "Assign"
msgstr "分é…(Assign)"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Select Node"
+msgstr "选择一个节点"
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr "新建脚本"
@@ -5928,6 +6442,11 @@ msgid "Error loading file: Not a resource!"
msgstr "加载文件出错:䏿˜¯èµ„æºæ–‡ä»¶ï¼"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Selected node is not a Viewport!"
+msgstr "选择è¦å¯¼å…¥çš„节点"
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr "选择一个节点"
@@ -6023,6 +6542,11 @@ msgstr "ä¸»åœºæ™¯å‚æ•°:"
msgid "Scene Run Settings"
msgstr "场景è¿è¡Œè®¾ç½®"
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "好的"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr "æ²¡æœ‰é€‰ä¸­èŠ‚ç‚¹æ¥æ·»åŠ å®žä¾‹ã€‚"
@@ -6066,10 +6590,6 @@ msgid "Delete Node(s)?"
msgstr "确定è¦åˆ é™¤èŠ‚ç‚¹å—?"
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr "无法对根节点执行此æ“作。"
@@ -6082,6 +6602,18 @@ msgid "Save New Scene As.."
msgstr "将新场景å¦å­˜ä¸º.."
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr "å…许编辑å­å­™èŠ‚ç‚¹"
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr "加载为å ä½ç¬¦"
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr "废弃实例化"
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr "有é“ç†ï¼"
@@ -6112,9 +6644,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
msgid "Edit Groups"
@@ -6125,6 +6656,14 @@ msgid "Edit Connections"
msgstr "编辑事件连接"
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr "清除继承"
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr "在编辑器中打开"
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr "删除节点"
@@ -6175,6 +6714,11 @@ msgid ""
msgstr "实例化场景文件为一个节点,如果没有根节点则创建一个继承自该文件的场景。"
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "筛选"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr "为选中节点创建或设置脚本。"
@@ -6182,6 +6726,14 @@ msgstr "为选中节点创建或设置脚本。"
msgid "Clear a script for the selected node."
msgstr "清除选中节点的脚本。"
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr "ç¡®å®šè¦æ¸…除继承å—?(无法撤销ï¼ï¼‰"
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr "清除ï¼"
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr "切æ¢Spatialå¯è§"
@@ -6192,7 +6744,7 @@ msgstr "切æ¢CanvasItemå¯è§"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "节点é…置警告:"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -6205,32 +6757,32 @@ msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"节点有信å·è¿žæŽ¥ã€‚\n"
+"å•å‡»æŸ¥çœ‹ä¿¡å·æ ã€‚"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
-
-#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "调试选项"
+"分组中的节点。\n"
+"å•击显示分组æ ã€‚"
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "实例:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "下一个脚本"
+msgstr "打开脚本"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"节点已é”定\n"
+"点击å¯è§£é”"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -6239,9 +6791,8 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "切æ¢Spatialå¯è§"
+msgstr "åˆ‡æ¢ éšè—/å¯è§"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6256,32 +6807,9 @@ msgid "Scene Tree (Nodes):"
msgstr "场景树:"
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr "å…许编辑å­å­™èŠ‚ç‚¹"
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr "加载为å ä½ç¬¦"
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr "废弃实例化"
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr "在编辑器中打开"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr "清除继承"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr "ç¡®å®šè¦æ¸…除继承å—?(无法撤销ï¼ï¼‰"
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
-msgstr "清除ï¼"
+#, fuzzy
+msgid "Node Configuration Warning!"
+msgstr "节点é…置警告:"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6289,14 +6817,22 @@ msgstr "选择一个节点"
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "加载图片出错:"
+
+#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr "无法创建脚本。"
+msgstr "错误:无法创建脚本文件。"
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
msgstr "从%s加载脚本出错"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/A"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "文件路径为空"
@@ -6314,66 +6850,53 @@ msgstr "扩展åéžæ³•"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "选择了错误的扩展å"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "è·¯å¾„éžæ³•。"
+msgstr "è·¯å¾„éžæ³•"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "ç±»åéžæ³•"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "属性åç§°éžæ³•。"
+msgstr "éžæ³•的基类å称或脚本路径"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "脚本"
+msgstr "脚本å¯ç”¨"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/A"
+msgstr "ä»…å…许使用: a-z, A-Z, 0-9 或 _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "内置脚本(ä¿å­˜åœ¨åœºæ™¯æ–‡ä»¶ä¸­)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
msgstr "创建新脚本"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
msgstr "加载现有脚本"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "基类:"
+msgstr "继承自"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "ç±»å:"
+msgstr "ç±»å"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "移除模æ¿"
+msgstr "模æ¿"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
msgstr "内置脚本"
@@ -6514,6 +7037,10 @@ msgid "Change Light Radius"
msgstr "设置光照åŠå¾„"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "æ›´æ”¹æ‘„åƒæœºè§†è§’"
@@ -6547,7 +7074,7 @@ msgstr "更改通知器级别"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "修改粒å­AABB"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -6595,6 +7122,137 @@ msgstr "实例字典格å¼ä¸æ­£ç¡®ï¼ˆæ— æ•ˆè„šæœ¬@path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr "éžæ³•çš„å­—å…¸å®žä¾‹ï¼ˆæ´¾ç”Ÿç±»éžæ³•)"
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "删除选择的节点"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "å¤åˆ¶é€‰ä¸­é¡¹"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Snap View"
+msgstr "Top视图"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "å·²ç¦ç”¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate X"
+msgstr "Ctrl:旋转"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Y"
+msgstr "Ctrl:旋转"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Cursor Rotate Z"
+msgstr "Ctrl:旋转"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "新建"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Exterior Connector"
+msgstr "新建项目"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Area"
+msgstr "擦除砖å—地图"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "仅选中"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "仅选中"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "æ•æ‰(snap)设置"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Pick Distance:"
+msgstr "实例:"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "文件"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6627,6 +7285,31 @@ msgid "Stack overflow with stack depth: "
msgstr "堆栈深度溢出: "
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Signal Arguments"
+msgstr "ç¼–è¾‘äº‹ä»¶å‚æ•°:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "修改数组类型"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument name"
+msgstr "更改输入åç§°"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Default Value"
+msgstr "修改默认值"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Set Variable Type"
+msgstr "编辑å˜é‡:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
msgstr "函数:"
@@ -6667,26 +7350,6 @@ msgid "Add Signal"
msgstr "添加事件"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
-msgstr "删除函数"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr "删除å˜é‡"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
-msgstr "编辑å˜é‡ï¼š"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
-msgstr "删除事件"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
-msgstr "编辑事件:"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
msgstr "更改表达å¼"
@@ -6695,6 +7358,16 @@ msgid "Add Node"
msgstr "添加节点"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Nodes"
+msgstr "移除无效键"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Duplicate VisualScript Nodes"
+msgstr "å¤åˆ¶Graph Node节点"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr "按ä½Meta键放置一个Getter节点,按ä½Shift键放置一个通用签å。"
@@ -6735,6 +7408,26 @@ msgid "Add Setter Property"
msgstr "添加 Setter Property"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "更改类型"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "移除节点"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove VisualScript Node"
+msgstr "移除Graph Node节点"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "连接到节点:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr "æ¡ä»¶èŠ‚ç‚¹ï¼ˆCondition)"
@@ -6763,6 +7456,56 @@ msgid "Get"
msgstr "获å–"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "更改输入åç§°"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Can't copy the function node."
+msgstr "无法对'..'引用æ“作"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "资æºå‰ªåˆ‡æ¿ä¸­æ— å†…容ï¼"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "粘贴节点"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr "删除函数"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Variable"
+msgstr "编辑å˜é‡:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr "删除å˜é‡"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "编辑事件:"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr "删除事件"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr "编辑å˜é‡ï¼š"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr "编辑事件:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr "基础类型:"
@@ -6783,10 +7526,6 @@ msgid "Edit Variable:"
msgstr "编辑å˜é‡:"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "更改"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "删除选择的节点"
@@ -6860,14 +7599,6 @@ msgid ""
"(error)."
msgstr "_step()的返回值无效,必须是整形(seq out)或字符串(error)。"
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr "正好按下"
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr "刚好释放"
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr "在æµè§ˆå™¨ä¸­è¿è¡Œ"
@@ -6888,79 +7619,6 @@ msgstr "æ— æ³•è¯»å–æ–‡ä»¶:\n"
msgid "Could not open template for export:\n"
msgstr "无法打开导出模æ¿ï¼š\n"
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr "无法读å–è¯ä¹¦æ–‡ä»¶ã€‚è·¯å¾„å’Œå¯†ç æ˜¯å¦éƒ½æ­£ç¡®ï¼Ÿ"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr "创建包(PCK)ç­¾å对象出错。"
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr "创建包(PCK)ç­¾åæ—¶å‡ºé”™ã€‚"
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-"找ä¸åˆ°å¯¼å‡ºæ¨¡ç‰ˆã€‚\n"
-"下载并安装导出模版。"
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr "找ä¸åˆ°è‡ªå®šä¹‰è°ƒè¯•包。"
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布包。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr "åç§°éžæ³•。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr "产å“GUIDéžæ³•。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr "å‘布GUIDéžæ³•。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr "无效的背景颜色。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr "Logo图片尺寸无效(图åƒå°ºå¯¸å¿…须是50x50)。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr "正方形的 44x44 Logo图片尺寸无效(应为44x44)。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr "正方形的 71x71 Logo标志图片尺寸无效(应为71x71)。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr "正方的 150x150 Logo图片尺寸无效(应为150x150)。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr "正方形的 310x310 Logo图片尺寸无效(应为310x310)。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr "宽幅310x150 Logo图片尺寸无效(应为310x150)。"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr "å¯åŠ¨ç”»é¢å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”为620x300)。"
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7051,6 +7709,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2Dç±»åž‹çš„èŠ‚ç‚¹åªæœ‰æ”¾åœ¨Path2D节点下æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "path属性必须指å‘ä¸€ä¸ªåˆæ³•çš„Node2D节点æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
@@ -7076,22 +7741,33 @@ msgid ""
"as parent."
msgstr "VisibilityEnable2D类型的节点用于场景的根节点æ‰èƒ½èŽ·å¾—æœ€å¥½çš„æ•ˆæžœã€‚"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
msgstr ""
-"CollisionShape类型节点åªèƒ½ä¸ºCollisionObject的派生类æä¾›ç¢°æ’žå½¢çŠ¶æ•°æ®ï¼Œè¯·å°†å…¶æ”¾"
-"在Areaã€StaticBodyã€RigidBody或KinematicBody节点下。"
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
-"CollisionShape节点必须拥有一个形状æ‰èƒ½è¿›è¡Œç¢°æ’žæ£€æµ‹å·¥ä½œï¼Œè¯·ä¸ºå®ƒåˆ›å»ºä¸€ä¸ªå½¢çŠ¶èµ„"
-"æºï¼"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7106,6 +7782,23 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "空CollisionPolygon节点ä¸èµ·ç¢°æ’žæ£€æµ‹ä½œç”¨ã€‚"
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+"CollisionShape类型节点åªèƒ½ä¸ºCollisionObject的派生类æä¾›ç¢°æ’žå½¢çŠ¶æ•°æ®ï¼Œè¯·å°†å…¶æ”¾"
+"在Areaã€StaticBodyã€RigidBody或KinematicBody节点下。"
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+"CollisionShape节点必须拥有一个形状æ‰èƒ½è¿›è¡Œç¢°æ’žæ£€æµ‹å·¥ä½œï¼Œè¯·ä¸ºå®ƒåˆ›å»ºä¸€ä¸ªå½¢çŠ¶èµ„"
+"æºï¼"
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr "此节点需è¦è®¾ç½®NavigationMeshèµ„æºæ‰èƒ½å·¥ä½œã€‚"
@@ -7122,6 +7815,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr "path属性必须指å‘ä¸€ä¸ªåˆæ³•çš„Spatial节点æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
@@ -7141,12 +7841,12 @@ msgstr ""
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "RAW Mode"
-msgstr "è¿è¡Œæ¨¡å¼:"
+msgid "Raw Mode"
+msgstr "移动画布"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "将当å‰é¢œè‰²æ·»åŠ ä¸ºé¢„è®¾"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7156,22 +7856,6 @@ msgstr "æç¤ºï¼"
msgid "Please Confirm..."
msgstr "请确认..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "打开文件"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "打开文件"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "打开目录"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "打开文件或目录"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7195,7 +7879,7 @@ msgstr ""
"使用Container(VBox,HBoxç­‰ï¼‰ä½œä¸ºå…¶å­æŽ§ä»¶å¹¶æ‰‹åŠ¨æˆ–è®¾ç½®Control的自定义最å°å°º"
"寸。"
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7212,6 +7896,94 @@ msgstr ""
"使其æˆä¸ºå­æŽ§ä»¶çš„æ‰€ä»¥å®ƒå¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·è®¾ç½®ä¸ºRender target,并将其"
"内部纹ç†åˆ†é…给一些节点以显示。"
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "确定è¦å…³é—­åœºæ™¯å—?(未ä¿å­˜çš„修改将丢失)"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr ""
+#~ "退出到项目管ç†çª—å£ï¼Ÿ\n"
+#~ "(未ä¿å­˜çš„修改将丢失)"
+
+#~ msgid "Close Goto Prev. Scene"
+#~ msgstr "关闭并å‰å¾€ä¸Šä¸€ä¸ªåœºæ™¯"
+
+#~ msgid "Expand to Parent"
+#~ msgstr "展开父节点"
+
+#~ msgid "Del"
+#~ msgstr "删除"
+
+#~ msgid "Copy To Platform.."
+#~ msgstr "å¤åˆ¶åˆ°å¹³å°.."
+
+#~ msgid "just pressed"
+#~ msgstr "正好按下"
+
+#~ msgid "just released"
+#~ msgstr "刚好释放"
+
+#~ msgid ""
+#~ "Couldn't read the certificate file. Are the path and password both "
+#~ "correct?"
+#~ msgstr "无法读å–è¯ä¹¦æ–‡ä»¶ã€‚è·¯å¾„å’Œå¯†ç æ˜¯å¦éƒ½æ­£ç¡®ï¼Ÿ"
+
+#~ msgid "Error creating the signature object."
+#~ msgstr "创建包(PCK)ç­¾å对象出错。"
+
+#~ msgid "Error creating the package signature."
+#~ msgstr "创建包(PCK)ç­¾åæ—¶å‡ºé”™ã€‚"
+
+#~ msgid ""
+#~ "No export templates found.\n"
+#~ "Download and install export templates."
+#~ msgstr ""
+#~ "找ä¸åˆ°å¯¼å‡ºæ¨¡ç‰ˆã€‚\n"
+#~ "下载并安装导出模版。"
+
+#~ msgid "Custom debug package not found."
+#~ msgstr "找ä¸åˆ°è‡ªå®šä¹‰è°ƒè¯•包。"
+
+#~ msgid "Custom release package not found."
+#~ msgstr "找ä¸åˆ°è‡ªå®šä¹‰å‘布包。"
+
+#~ msgid "Invalid unique name."
+#~ msgstr "åç§°éžæ³•。"
+
+#~ msgid "Invalid product GUID."
+#~ msgstr "产å“GUIDéžæ³•。"
+
+#~ msgid "Invalid publisher GUID."
+#~ msgstr "å‘布GUIDéžæ³•。"
+
+#~ msgid "Invalid background color."
+#~ msgstr "无效的背景颜色。"
+
+#~ msgid "Invalid Store Logo image dimensions (should be 50x50)."
+#~ msgstr "Logo图片尺寸无效(图åƒå°ºå¯¸å¿…须是50x50)。"
+
+#~ msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
+#~ msgstr "正方形的 44x44 Logo图片尺寸无效(应为44x44)。"
+
+#~ msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
+#~ msgstr "正方形的 71x71 Logo标志图片尺寸无效(应为71x71)。"
+
+#~ msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
+#~ msgstr "正方的 150x150 Logo图片尺寸无效(应为150x150)。"
+
+#~ msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
+#~ msgstr "正方形的 310x310 Logo图片尺寸无效(应为310x310)。"
+
+#~ msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
+#~ msgstr "宽幅310x150 Logo图片尺寸无效(应为310x150)。"
+
+#~ msgid "Invalid splash screen image dimensions (should be 620x300)."
+#~ msgstr "å¯åŠ¨ç”»é¢å›¾ç‰‡å°ºå¯¸æ— æ•ˆï¼ˆåº”为620x300)。"
+
+#~ msgid "RAW Mode"
+#~ msgstr "RAW模å¼"
+
#~ msgid "Node From Scene"
#~ msgstr "从场景导入节点"
@@ -7295,9 +8067,6 @@ msgstr ""
#~ msgid "Replaced %d Ocurrence(s)."
#~ msgstr "替æ¢äº†%d项。"
-#~ msgid "Please save the scene first."
-#~ msgstr "请先ä¿å­˜åœºæ™¯ã€‚"
-
#~ msgid "Save Translatable Strings"
#~ msgstr "ä¿å­˜å¯ç¿»è¯‘字符串"
@@ -7509,9 +8278,6 @@ msgstr ""
#~ msgid "Script Encryption Key (256-bits as hex):"
#~ msgstr "脚本密匙(256ä½16进制ç ï¼‰:"
-#~ msgid "Export PCK/Zip"
-#~ msgstr "导出 PCK/ZIP"
-
#~ msgid "Export Project PCK"
#~ msgstr "导出项目PCK文件"
@@ -7626,9 +8392,6 @@ msgstr ""
#~ msgid "Node Group(s)"
#~ msgstr "节点分组"
-#~ msgid "Set region_rect"
-#~ msgstr "设置纹ç†åŒºåŸŸ"
-
#~ msgid "Plugin List:"
#~ msgstr "æ’件列表"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 110f5b6fab..f04322ff3c 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -2,21 +2,21 @@
# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
# This file is distributed under the same license as the Godot source code.
#
-# Wesley (zx-wt) <ZX_WT@ymail.com>, 2016.
+# Wesley (zx-wt) <ZX_WT@ymail.com>, 2016-2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2016-09-05 13:21+0000\n"
+"PO-Revision-Date: 2017-07-26 13:45+0000\n"
"Last-Translator: zx-wt <ZX_WT@ymail.com>\n"
"Language-Team: Chinese (Hong Kong) <https://hosted.weblate.org/projects/"
-"godot-engine/godot/zh_HK/>\n"
+"godot-engine/godot/zh_Hant_HK/>\n"
"Language: zh_HK\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.8\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -33,7 +33,7 @@ msgstr "移動"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr ""
+msgstr "å‹•ç•«è®ŠåŒ–éŽæ¸¡"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
@@ -41,7 +41,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Change Value"
-msgstr ""
+msgstr "動畫變化數值"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -49,40 +49,39 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Add Track"
-msgstr ""
+msgstr "新增動畫軌跡"
#: editor/animation_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr ""
+msgstr "複製動畫幀"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
-msgstr ""
+msgstr "動畫軌跡上移"
#: editor/animation_editor.cpp
msgid "Move Anim Track Down"
-msgstr ""
+msgstr "動畫軌跡下移"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Remove Anim Track"
-msgstr "移除動畫"
+msgstr "移除動畫軌跡"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
-msgstr ""
+msgstr "å°‡éŽæ¸¡è¨­åˆ°ï¼š"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
-msgstr ""
+msgstr "å‹•ç•«è»Œè·¡é‡æ–°å‘½å"
#: editor/animation_editor.cpp
msgid "Anim Track Change Interpolation"
-msgstr ""
+msgstr "動畫軌跡變化Interpolation"
#: editor/animation_editor.cpp
msgid "Anim Track Change Value Mode"
-msgstr ""
+msgstr "動畫軌跡變化數值模å¼"
#: editor/animation_editor.cpp
msgid "Anim Track Change Wrap Mode"
@@ -90,23 +89,25 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
-msgstr ""
+msgstr "編輯Node Curve"
#: editor/animation_editor.cpp
msgid "Edit Selection Curve"
-msgstr ""
+msgstr "編輯Selection Curve"
#: editor/animation_editor.cpp
msgid "Anim Delete Keys"
-msgstr ""
+msgstr "移除動畫幀"
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
msgid "Duplicate Selection"
-msgstr ""
+msgstr "複製 Selection"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Duplicate Transposed"
-msgstr ""
+msgstr "複製Transposed"
#: editor/animation_editor.cpp
msgid "Remove Selection"
@@ -127,19 +128,19 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Add Key"
-msgstr ""
+msgstr "新增動畫幀"
#: editor/animation_editor.cpp
msgid "Anim Move Keys"
-msgstr ""
+msgstr "移動動畫幀"
#: editor/animation_editor.cpp
msgid "Scale Selection"
-msgstr ""
+msgstr "縮放selection"
#: editor/animation_editor.cpp
msgid "Scale From Cursor"
-msgstr ""
+msgstr "由鼠標縮放"
#: editor/animation_editor.cpp
msgid "Goto Next Step"
@@ -149,13 +150,14 @@ msgstr ""
msgid "Goto Prev Step"
msgstr ""
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
-msgstr ""
+msgstr "線性"
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
-msgstr ""
+msgstr "常數"
#: editor/animation_editor.cpp
msgid "In"
@@ -175,7 +177,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Transitions"
-msgstr ""
+msgstr "éŽæ¸¡"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
@@ -221,7 +223,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Change Anim Loop"
-msgstr ""
+msgstr "更改動畫循環"
#: editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -229,7 +231,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Insert"
-msgstr ""
+msgstr "æ’入動畫"
#: editor/animation_editor.cpp
msgid "Anim Scale Keys"
@@ -245,11 +247,11 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Length (s):"
-msgstr ""
+msgstr "時長:"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
-msgstr ""
+msgstr "時長(秒):every"
#: editor/animation_editor.cpp
msgid "Step (s):"
@@ -265,7 +267,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr ""
+msgstr "新增軌迹"
#: editor/animation_editor.cpp
msgid "Move current track up."
@@ -313,11 +315,11 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Key"
-msgstr ""
+msgstr "é—œéµå¹€"
#: editor/animation_editor.cpp
msgid "Transition"
-msgstr ""
+msgstr "éŽæ¸¡"
#: editor/animation_editor.cpp
msgid "Scale Ratio:"
@@ -365,11 +367,11 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
msgid "Version:"
-msgstr ""
+msgstr "版本:"
#: editor/asset_library_editor_plugin.cpp
msgid "Contents:"
-msgstr ""
+msgstr "內容:"
#: editor/asset_library_editor_plugin.cpp
#, fuzzy
@@ -380,11 +382,12 @@ msgstr "檔案"
#: editor/editor_help.cpp editor/property_selector.cpp
#: editor/script_editor_debugger.cpp
msgid "Description:"
-msgstr ""
+msgstr "æè¿°ï¼š"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
-msgstr ""
+msgstr "安è£"
#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
#: editor/connections_dialog.cpp editor/export_template_manager.cpp
@@ -393,9 +396,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr "關閉"
@@ -413,30 +416,29 @@ msgid "Connection error, please try again."
msgstr ""
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "連到..."
+msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "連到"
+msgstr "ä¸èƒ½é€£åˆ°ä¸»æ©Ÿï¼š"
#: editor/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "主機沒有回應:"
#: editor/asset_library_editor_plugin.cpp
msgid "No response."
-msgstr ""
+msgstr "沒有回應。"
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Request failed, return code:"
-msgstr ""
+msgstr "請求失敗,"
#: editor/asset_library_editor_plugin.cpp
msgid "Req. Failed."
-msgstr ""
+msgstr "請求失敗。"
#: editor/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
@@ -448,7 +450,7 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Failed:"
-msgstr ""
+msgstr "失敗:"
#: editor/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
@@ -467,12 +469,13 @@ msgid "Failed sha256 hash check"
msgstr ""
#: editor/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Asset Download Error:"
-msgstr ""
+msgstr "Asset下載出ç¾éŒ¯èª¤ï¼š"
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
-msgstr ""
+msgstr "æˆåŠŸï¼"
#: editor/asset_library_editor_plugin.cpp
msgid "Fetching:"
@@ -488,14 +491,12 @@ msgid "Connecting.."
msgstr "連到..."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "測試"
+msgstr "請求中..."
#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "載入字形出ç¾éŒ¯èª¤"
+msgstr "請求時出ç¾éŒ¯èª¤"
#: editor/asset_library_editor_plugin.cpp
msgid "Idle"
@@ -503,48 +504,47 @@ msgstr ""
#: editor/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "é‡è©¦"
#: editor/asset_library_editor_plugin.cpp
msgid "Download Error"
-msgstr ""
+msgstr "下載出ç¾éŒ¯èª¤"
#: editor/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr ""
+msgstr "Asset已在下載中"
#: editor/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "首é "
#: editor/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "上一é "
#: editor/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "下一é "
#: editor/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "å°¾é "
#: editor/asset_library_editor_plugin.cpp
msgid "All"
msgstr "全部"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
-msgstr ""
+msgstr "æœå°‹ï¼š"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "æœå°‹"
@@ -560,19 +560,19 @@ msgstr "æœå°‹"
msgid "Import"
msgstr "å°Žå…¥"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr "æ’ä»¶"
#: editor/asset_library_editor_plugin.cpp
msgid "Sort:"
-msgstr ""
+msgstr "排åºï¼š"
#: editor/asset_library_editor_plugin.cpp
msgid "Reverse"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "分類:"
@@ -598,7 +598,7 @@ msgstr "測試"
#: editor/asset_library_editor_plugin.cpp
msgid "Assets ZIP File"
-msgstr ""
+msgstr "Assets ZIP 檔"
#: editor/call_dialog.cpp
msgid "Method List For '%s':"
@@ -622,15 +622,15 @@ msgstr ""
#: editor/code_editor.cpp
msgid "Go to Line"
-msgstr ""
+msgstr "跳到行"
#: editor/code_editor.cpp
msgid "Line Number:"
-msgstr ""
+msgstr "行數:"
#: editor/code_editor.cpp
msgid "No Matches"
-msgstr ""
+msgstr "沒有相åŒ"
#: editor/code_editor.cpp
msgid "Replaced %d occurrence(s)."
@@ -720,20 +720,19 @@ msgid ""
msgstr ""
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Connect To Node:"
-msgstr "連到"
+msgstr "連到:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "添加"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "移除"
@@ -797,7 +796,7 @@ msgstr "新增"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
-msgstr ""
+msgstr "最愛:"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
msgid "Recent:"
@@ -806,13 +805,12 @@ msgstr "最近:"
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
-#, fuzzy
msgid "Matches:"
-msgstr "å»åˆ"
+msgstr "å»åˆï¼š"
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
-msgstr ""
+msgstr "æœå°‹å’Œæ›¿ä»£ç‚ºï¼š"
#: editor/dependency_editor.cpp
msgid "Dependencies For:"
@@ -839,7 +837,7 @@ msgid "Resource"
msgstr "資æº"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "路徑"
@@ -919,12 +917,190 @@ msgstr ""
msgid "Delete selected files?"
msgstr "è¦åˆªé™¤é¸ä¸­æª”案?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "刪除"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr "多è¬!"
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "專案設定"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Lead Developer"
+msgstr "開發者"
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr "開發者"
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "All Components"
+msgstr "內容:"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Components"
+msgstr "內容:"
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "導入中:"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Rename Audio Bus"
+msgstr "釿–°å‘½åAutoload"
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Bus Effect"
+msgstr "刪除é¸ä¸­æª”案"
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "é¸é …"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr "複製"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "刪除é¸ä¸­æª”案"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Audio Bus"
+msgstr "刪除佈局"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "複製"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Move Audio Bus"
+msgstr "移動"
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -938,23 +1114,48 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Load an existing Bus Layout."
+msgstr "下一個腳本"
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "å¦å­˜ç‚º"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "é è¨­"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr "無效å稱"
@@ -965,16 +1166,19 @@ msgid "Valid characters:"
msgstr "有效字符:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid name. Must not collide with an existing engine class name."
-msgstr ""
+msgstr "有效å稱。"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid name. Must not collide with an existing buit-in type name."
-msgstr ""
+msgstr "有效å稱。"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Invalid name. Must not collide with an existing global constant name."
-msgstr ""
+msgstr "有效å稱。"
#: editor/editor_autoload_settings.cpp
msgid "Invalid Path."
@@ -985,32 +1189,38 @@ msgid "File does not exist."
msgstr "檔案ä¸å­˜åœ¨."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Not in resource path."
-msgstr ""
+msgstr "ä¸åœ¨è³‡æºè·¯å¾‘。"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Add AutoLoad"
-msgstr ""
+msgstr "新增AutoLoad"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Autoload '%s' already exists!"
-msgstr ""
+msgstr "AutoLoad '%s'已存在ï¼"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Rename Autoload"
-msgstr ""
+msgstr "釿–°å‘½åAutoload"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Move Autoload"
-msgstr ""
+msgstr "移動Autoload"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Remove Autoload"
-msgstr ""
+msgstr "移除Autoload"
#: editor/editor_autoload_settings.cpp
#, fuzzy
@@ -1018,8 +1228,9 @@ msgid "Enable"
msgstr "啟用"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Rearrange Autoloads"
-msgstr ""
+msgstr "釿–°æŽ’例Autoloads"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
@@ -1046,17 +1257,22 @@ msgstr ""
#: editor/editor_data.cpp
msgid "Updating Scene"
-msgstr ""
+msgstr "更新場景"
#: editor/editor_data.cpp
msgid "Storing local changes.."
-msgstr ""
+msgstr "儲存本地更改.."
#: editor/editor_data.cpp
msgid "Updating scene.."
msgstr "正在更新場景..."
#: editor/editor_dir_dialog.cpp
+#, fuzzy
+msgid "Please select a base directory first"
+msgstr "請先儲存場景"
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "鏿“‡è³‡æ–™å¤¾"
@@ -1094,11 +1310,11 @@ msgstr ""
#: editor/editor_export.cpp
msgid "Added:"
-msgstr ""
+msgstr "已加入:"
#: editor/editor_export.cpp
msgid "Removed:"
-msgstr ""
+msgstr "已移除:"
#: editor/editor_export.cpp
msgid "Error saving atlas:"
@@ -1134,6 +1350,22 @@ msgstr "所有檔案(*)"
msgid "Open"
msgstr "開啟"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr "開啟檔案"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "開啟檔案"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "開啟資料夾"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "鏿“‡è³‡æ–™å¤¾/檔案"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1177,14 +1409,13 @@ msgid "Focus Path"
msgstr ""
#: editor/editor_file_dialog.cpp
-#, fuzzy
msgid "Move Favorite Up"
-msgstr "上移"
+msgstr "上移最愛"
#: editor/editor_file_dialog.cpp
#, fuzzy
msgid "Move Favorite Down"
-msgstr "下移"
+msgstr "下移最愛"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
@@ -1262,6 +1493,15 @@ msgid "Signals:"
msgstr "訊號:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations:"
+msgstr "翻譯:"
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1278,7 +1518,7 @@ msgid "Search Text"
msgstr ""
#: editor/editor_log.cpp
-msgid " Output:"
+msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1290,8 +1530,9 @@ msgstr "清空"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/resources_dock.cpp
+#, fuzzy
msgid "Error saving resource!"
-msgstr ""
+msgstr "å„²å­˜è³‡æºæ™‚出ç¾éŒ¯èª¤ï¼"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/resources_dock.cpp
@@ -1304,12 +1545,14 @@ msgid "I see.."
msgstr "如來如此"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Can't open file for writing:"
-msgstr ""
+msgstr "ä¸èƒ½å¯«å…¥ï¼Œä¸èƒ½é–‹å•Ÿæª”案:"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Requested file format unknown:"
-msgstr ""
+msgstr "è¦æ±‚çš„æª”æ¡ˆæ ¼å¼æœªçŸ¥ï¼š"
#: editor/editor_node.cpp
msgid "Error while saving."
@@ -1329,14 +1572,17 @@ msgid "Creating Thumbnail"
msgstr "正在建立縮圖"
#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Failed to load resource."
-msgstr "資æºåŠ è¼‰å¤±æ•—"
+msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1344,7 +1590,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Error saving MeshLibrary!"
-msgstr ""
+msgstr "儲存MeshLibrary時出ç¾éŒ¯èª¤ï¼"
#: editor/editor_node.cpp
msgid "Can't load TileSet for merging!"
@@ -1352,11 +1598,12 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Error saving TileSet!"
-msgstr ""
+msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Error trying to save layout!"
-msgstr ""
+msgstr "儲存佈局時出ç¾éŒ¯èª¤ï¼"
#: editor/editor_node.cpp
msgid "Default editor layout overridden."
@@ -1364,27 +1611,30 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Layout name not found!"
-msgstr ""
+msgstr "未找到佈局å稱ï¼"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Restored default layout to base settings."
-msgstr ""
+msgstr "é‡è¨­é è¨­ä½ˆå±€ã€‚"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Copy Params"
-msgstr ""
+msgstr "è¤‡è£½åƒæ•¸"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Paste Params"
-msgstr ""
+msgstr "è²¼ä¸Šåƒæ•¸"
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Paste Resource"
-msgstr ""
+msgstr "複製資æº"
#: editor/editor_node.cpp
msgid "Copy Resource"
-msgstr ""
+msgstr "貼上資æº"
#: editor/editor_node.cpp
msgid "Make Built-In"
@@ -1397,11 +1647,11 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
msgid "Open in Help"
-msgstr "開啓場景"
+msgstr "在幫助中開啓"
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr ""
+msgstr "沒有å¯ä»¥å·²å®šç¾©çš„場景å¯ä»¥é‹è¡Œã€‚"
#: editor/editor_node.cpp
msgid ""
@@ -1438,22 +1688,23 @@ msgstr "開啓場景"
#: editor/editor_node.cpp
msgid "Open Base Scene"
-msgstr ""
+msgstr "開啟基礎場景"
#: editor/editor_node.cpp
msgid "Quick Open Scene.."
-msgstr ""
+msgstr "快速開啟場景.."
#: editor/editor_node.cpp
msgid "Quick Open Script.."
-msgstr ""
+msgstr "快速開啟腳本.."
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "是"
+#, fuzzy
+msgid "Save & Close"
+msgstr "儲存檔案"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
+msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
@@ -1462,21 +1713,53 @@ msgstr "把場景å¦å­˜ç‚º"
#: editor/editor_node.cpp
msgid "No"
-msgstr ""
+msgstr "å¦"
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "是"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
+msgstr "此場景從未儲存。è¦åœ¨é‹è¡Œå‰å„²å­˜å—Ž?"
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
msgstr ""
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr ""
+msgstr "匯出Mesh Library"
#: editor/editor_node.cpp
msgid "Export Tile Set"
+msgstr "匯出Tile Set"
+
+#: editor/editor_node.cpp
+msgid "This operation can't be done without a selected node."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Current scene not saved. Open anyway?"
+msgstr "未儲存當å‰å ´æ™¯ã€‚ä»è¦é–‹å•Ÿï¼Ÿ"
+
+#: editor/editor_node.cpp
+msgid "Can't reload a scene that was never saved."
+msgstr "ä¸èƒ½é‡æ–°è¼‰å…¥å¾žæœªå„²å­˜çš„場景。"
+
+#: editor/editor_node.cpp
+msgid "Revert"
msgstr ""
#: editor/editor_node.cpp
+msgid "This action cannot be undone. Revert anyway?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quick Run Scene.."
+msgstr "快速é‹è¡Œå ´æ™¯.."
+
+#: editor/editor_node.cpp
msgid "Quit"
msgstr "離開"
@@ -1485,34 +1768,41 @@ msgid "Exit the editor?"
msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?"
#: editor/editor_node.cpp
-msgid "Current scene not saved. Open anyway?"
+msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Can't reload a scene that was never saved."
+#, fuzzy
+msgid "Save & Quit"
+msgstr "儲存檔案"
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Revert"
+msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
-msgid "This action cannot be undone. Revert anyway?"
+msgid "Pick a Main Scene"
+msgstr "鏿“‡ä¸»å ´æ™¯"
+
+#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quick Run Scene.."
+msgid "' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
msgstr ""
#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
-msgstr "鏿“‡ä¸»å ´æ™¯"
+msgid "Unable to load addon script from path: '"
+msgstr ""
#: editor/editor_node.cpp
msgid ""
@@ -1533,7 +1823,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Error loading scene."
-msgstr ""
+msgstr "載入場景時出ç¾éŒ¯èª¤"
#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
@@ -1541,11 +1831,16 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save Layout"
-msgstr ""
+msgstr "儲存佈局"
#: editor/editor_node.cpp
msgid "Delete Layout"
-msgstr ""
+msgstr "刪除佈局"
+
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "é è¨­"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
@@ -1563,6 +1858,10 @@ msgstr ""
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Scene"
msgstr "場景"
@@ -1612,10 +1911,6 @@ msgstr "儲存所有場景"
msgid "Close Scene"
msgstr "關閉場景"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "開啓最近的"
@@ -1626,11 +1921,11 @@ msgstr "轉為..."
#: editor/editor_node.cpp
msgid "MeshLibrary.."
-msgstr ""
+msgstr "MeshLibrary.."
#: editor/editor_node.cpp
msgid "TileSet.."
-msgstr ""
+msgstr "TileSet.."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -1653,11 +1948,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Project"
-msgstr ""
+msgstr "專案"
#: editor/editor_node.cpp
msgid "Project Settings"
-msgstr ""
+msgstr "專案設定"
#: editor/editor_node.cpp
msgid "Run Script"
@@ -1665,7 +1960,7 @@ msgstr "é‹è¡Œè…³æœ¬"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export"
-msgstr ""
+msgstr "匯出"
#: editor/editor_node.cpp
msgid "Tools"
@@ -1673,7 +1968,7 @@ msgstr "工具"
#: editor/editor_node.cpp
msgid "Quit to Project List"
-msgstr ""
+msgstr "回到專案列表"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Debug"
@@ -1704,8 +1999,9 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
msgid "Visible Collision Shapes"
-msgstr ""
+msgstr "å¯è¦‹ç¢°æ’žåœ–å½¢"
#: editor/editor_node.cpp
msgid ""
@@ -1724,8 +2020,9 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
msgid "Sync Scene Changes"
-msgstr ""
+msgstr "åŒæ­¥å ´æ™¯çš„變動"
#: editor/editor_node.cpp
msgid ""
@@ -1748,9 +2045,8 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "編輯"
+msgstr "編輯器"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -1758,19 +2054,19 @@ msgstr "編輯器設定"
#: editor/editor_node.cpp
msgid "Editor Layout"
-msgstr ""
+msgstr "編輯器佈局"
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
-msgstr ""
+msgstr "全螢幕"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Manage Export Templates"
-msgstr ""
+msgstr "管ç†è¼¸å‡ºç¯„本"
#: editor/editor_node.cpp
msgid "Help"
-msgstr ""
+msgstr "幫助"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Classes"
@@ -1795,15 +2091,15 @@ msgstr "關於"
#: editor/editor_node.cpp
msgid "Play the project."
-msgstr ""
+msgstr "é‹è¡Œå°ˆæ¡ˆ"
#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
msgid "Play"
-msgstr ""
+msgstr "é‹è¡Œ"
#: editor/editor_node.cpp
msgid "Pause the scene"
-msgstr ""
+msgstr "æš«åœå ´æ™¯"
#: editor/editor_node.cpp
msgid "Pause Scene"
@@ -1811,11 +2107,11 @@ msgstr "æš«åœå ´æ™¯"
#: editor/editor_node.cpp
msgid "Stop the scene."
-msgstr ""
+msgstr "åœæ­¢é‹è¡Œå ´æ™¯"
#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
msgid "Stop"
-msgstr ""
+msgstr "åœæ­¢"
#: editor/editor_node.cpp
msgid "Play the edited scene."
@@ -1897,35 +2193,23 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
msgid "Update"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr "多è¬!"
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
+msgstr "æ›´æ–°"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1946,9 +2230,18 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "New Inherited"
+msgstr "下一個腳本"
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
@@ -2052,6 +2345,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2190,10 +2493,27 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid ""
+"\n"
+"Source: "
+msgstr "來æº:"
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2202,6 +2522,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "載入錯誤:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2278,6 +2612,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2289,9 +2629,29 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "更新場景"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2331,6 +2691,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
#, fuzzy
msgid " Files"
msgstr "檔案"
@@ -2520,6 +2888,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3101,6 +3473,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "檔案"
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3412,6 +3789,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr "編輯"
@@ -3444,10 +3822,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3556,11 +3930,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr "OK"
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3598,6 +3967,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3637,6 +4014,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Add point"
msgstr "新增訊號"
@@ -3647,11 +4036,29 @@ msgid "Remove point"
msgstr "åªé™é¸ä¸­"
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "線性"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "åªé™é¸ä¸­"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3676,6 +4083,12 @@ 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 ""
@@ -3965,6 +4378,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4282,6 +4700,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4306,6 +4730,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr "下一個腳本"
@@ -4360,6 +4788,10 @@ msgid "Close All"
msgstr "關閉"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4392,6 +4824,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4456,6 +4893,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4503,6 +4944,11 @@ msgid "Move Down"
msgstr "下移"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "刪除"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4809,35 +5255,6 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Forward"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Down"
-msgstr "下滾"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
msgstr ""
@@ -4901,10 +5318,61 @@ msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "啟用"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Freelook Down"
+msgstr "下滾"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "preview"
+msgstr "é è¦½:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Select Mode (Q)\n"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
msgstr ""
@@ -5023,6 +5491,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr "設定"
@@ -5151,6 +5620,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5208,6 +5681,16 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "移除"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5275,7 +5758,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5297,12 +5780,26 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "縮放selection"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
-msgstr "複製"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "線性"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5337,10 +5834,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5403,7 +5896,7 @@ msgstr "è¦åˆªé™¤é¸ä¸­æª”案?"
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr "添加..."
@@ -5452,6 +5945,23 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "匯出"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5488,10 +5998,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5536,6 +6042,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5550,10 +6069,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5582,255 +6097,288 @@ msgstr "移除é¸é …"
msgid "Exit"
msgstr "離開"
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change"
+msgstr "當改變時更新"
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
#, fuzzy
msgid "Axis"
msgstr "中軸"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr "設備"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr "按éµ"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr "左𨫡"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr "å³ð¨«¡"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr "中𨫡"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr "上滾"
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr "下滾"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Setting '"
+msgstr "設定"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "刪除"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr "本地化"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr "翻譯"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr "翻譯:"
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5872,6 +6420,11 @@ msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Select Node"
+msgstr "ä¸é¸"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "New Script"
msgstr "下一個腳本"
@@ -5884,6 +6437,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
#, fuzzy
msgid "Pick a Node"
msgstr "貼上"
@@ -5982,6 +6539,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr "OK"
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -6025,10 +6587,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6041,6 +6599,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6084,6 +6654,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6137,6 +6715,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "篩é¸:"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6144,6 +6727,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6175,10 +6766,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Subscene options"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6216,31 +6803,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6249,6 +6812,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "載入字形出ç¾éŒ¯èª¤"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "無法新增資料夾"
@@ -6258,6 +6826,10 @@ msgid "Error loading script from %s"
msgstr "載入字形出ç¾éŒ¯èª¤"
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr "N/A"
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr "路徑為空"
@@ -6300,10 +6872,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr "N/A"
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6474,6 +7042,10 @@ msgid "Change Light Radius"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr ""
@@ -6555,6 +7127,130 @@ msgstr ""
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "刪除é¸ä¸­æª”案"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "複製 Selection"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "å·²åœç”¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "新增"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "åªé™é¸ä¸­"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "åªé™é¸ä¸­"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "設定"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "檔案"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6586,6 +7282,27 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Signal Arguments"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Argument Type"
+msgstr "更改動畫循環"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Functions:"
msgstr "行為"
@@ -6629,35 +7346,20 @@ msgid "Add Signal"
msgstr "新增訊號"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Function"
-msgstr "åªé™é¸ä¸­"
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Change Expression"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Remove Signal"
-msgstr "åªé™é¸ä¸­"
-
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Editing Signal:"
-msgstr "連接"
+msgid "Add Node"
+msgstr "新增節點"
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change Expression"
+msgid "Remove VisualScript Nodes"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Node"
-msgstr "新增節點"
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -6701,6 +7403,24 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Move Node(s)"
+msgstr "移動模å¼"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "連到:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6729,6 +7449,57 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Input Value"
+msgstr "動畫變化數值"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Clipboard is empty!"
+msgstr "路徑為空"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Paste VisualScript Nodes"
+msgstr "貼上"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Function"
+msgstr "åªé™é¸ä¸­"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Edit Signal"
+msgstr "連接"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Remove Signal"
+msgstr "åªé™é¸ä¸­"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Editing Signal:"
+msgstr "連接"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6749,11 +7520,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change"
-msgstr "當改變時更新"
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr "刪除é¸ä¸­æª”案"
@@ -6828,14 +7594,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Run in Browser"
@@ -6860,79 +7618,6 @@ msgstr "無法新增資料夾"
msgid "Could not open template for export:\n"
msgstr "無法新增資料夾"
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid unique name."
-msgstr "無效å稱"
-
-#: platform/uwp/export/export.cpp
-#, fuzzy
-msgid "Invalid product GUID."
-msgstr "無效字型"
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -7011,6 +7696,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -7033,17 +7725,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7057,6 +7764,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7072,6 +7792,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7088,7 +7815,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7103,22 +7830,6 @@ msgstr "警告!"
msgid "Please Confirm..."
msgstr "請確èª..."
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr "開啟檔案"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr "開啟檔案"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr "開啟資料夾"
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr "鏿“‡è³‡æ–™å¤¾/檔案"
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
msgstr "Ctrl+"
@@ -7137,7 +7848,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7151,12 +7862,25 @@ msgid ""
"texture to some node for display."
msgstr ""
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "è¦é—œé–‰å ´æ™¯å—Žï¼Ÿï¼ˆæœªå„²å­˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr "回到專案管ç†å™¨ï¼Ÿï¼ˆæœªå„²å­˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰"
+
+#, fuzzy
+#~ msgid "Invalid unique name."
+#~ msgstr "無效å稱"
+
+#, fuzzy
+#~ msgid "Invalid product GUID."
+#~ msgstr "無效字型"
+
#~ msgid "Valid name"
#~ msgstr "有效å稱"
-#~ msgid "Please save the scene first."
-#~ msgstr "請先儲存場景"
-
#~ msgid "Edit Script Options"
#~ msgstr "編輯腳本é¸é …"
@@ -7202,9 +7926,6 @@ msgstr ""
#~ msgid "Images:"
#~ msgstr "圖片:"
-#~ msgid "Select None"
-#~ msgstr "ä¸é¸"
-
#~ msgid "Keep"
#~ msgstr "ä¿ç•™"
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index c5a1f6994c..8ed54a0798 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -3,21 +3,22 @@
# This file is distributed under the same license as the Godot source code.
#
# Allen H <w84miracle@gmail.com>, 2017.
+# Chao Yu <casd82@gmail.com>, 2017.
# popcade <popcade@gmail.com>, 2016.
# Sam Pan <sampan66@gmail.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-05-12 07:06+0000\n"
-"Last-Translator: Allen H. <w84miracle@gmail.com>\n"
+"PO-Revision-Date: 2017-07-31 15:51+0000\n"
+"Last-Translator: Chao Yu <casd82@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hant/>\n"
"Language: zh_TW\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.14-dev\n"
+"X-Generator: Weblate 2.16-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -37,7 +38,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr ""
+msgstr "動畫更改座標"
#: editor/animation_editor.cpp
msgid "Anim Change Value"
@@ -147,7 +148,8 @@ msgstr "往下一步"
msgid "Goto Prev Step"
msgstr "往上一步"
-#: editor/animation_editor.cpp editor/property_editor.cpp
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
msgid "Linear"
msgstr "線性"
@@ -380,7 +382,8 @@ msgstr "éŽæ¿¾æª”案.."
msgid "Description:"
msgstr "æè¿°:"
-#: editor/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
+#: editor/project_manager.cpp
msgid "Install"
msgstr ""
@@ -391,9 +394,9 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_settings.cpp
-#: editor/property_editor.cpp editor/run_settings_dialog.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
msgstr ""
@@ -467,7 +470,7 @@ msgstr ""
msgid "Asset Download Error:"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
+#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
msgid "Success!"
msgstr ""
@@ -530,17 +533,16 @@ msgid "All"
msgstr "全部"
#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
-#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp
+#: editor/settings_config_dialog.cpp
msgid "Search:"
msgstr "æœå°‹:"
#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_help.cpp editor/editor_node.cpp
-#: editor/plugins/script_editor_plugin.cpp
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Search"
msgstr "æœå°‹"
@@ -556,7 +558,7 @@ msgstr "æœå°‹"
msgid "Import"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Plugins"
msgstr ""
@@ -568,7 +570,7 @@ msgstr "排åº:"
msgid "Reverse"
msgstr "å轉"
-#: editor/asset_library_editor_plugin.cpp editor/project_settings.cpp
+#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Category:"
msgstr "類別:"
@@ -720,14 +722,14 @@ msgstr ""
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
msgstr "新增"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove"
msgstr "移除"
@@ -835,7 +837,7 @@ msgid "Resource"
msgstr ""
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
-#: editor/project_manager.cpp editor/project_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
msgstr "路徑"
@@ -918,12 +920,183 @@ msgstr ""
msgid "Delete selected files?"
msgstr "ç¢ºå®šåˆªé™¤æ‰€é¸æ“‡çš„æª”案嗎?"
-#: editor/dependency_editor.cpp editor/editor_node.cpp
-#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
-#: editor/project_export.cpp editor/scene_tree_dock.cpp
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
msgstr "刪除"
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Founders"
+msgstr "專案設定"
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Uncompressing Assets"
+msgstr "(釿–°)載入素æ"
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "除錯é¸é …"
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Delete Effect"
+msgstr "刪除"
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Duplicate Audio Bus"
+msgstr "複製所é¸"
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
msgstr ""
@@ -937,23 +1110,47 @@ msgid "Open Audio Bus Layout"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
msgid "Load"
msgstr "載入"
#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
msgstr "å¦å­˜æ–°æª”"
-#: editor/editor_audio_buses.cpp editor/editor_node.cpp editor/import_dock.cpp
-#: editor/script_create_dialog.cpp
-msgid "Default"
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+#, fuzzy
+msgid "Load Default"
msgstr "é è¨­"
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
msgstr ""
@@ -1055,6 +1252,10 @@ msgid "Updating scene.."
msgstr "更新場景中.."
#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "鏿“‡è³‡æ–™å¤¾"
@@ -1132,6 +1333,22 @@ msgstr "所有類型檔案"
msgid "Open"
msgstr "開啟"
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr "開啟檔案"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr "開啟資料夾"
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr "開啟檔案或資料夾"
+
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
@@ -1257,6 +1474,14 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
@@ -1273,7 +1498,8 @@ msgid "Search Text"
msgstr "æœå°‹è©žå½™"
#: editor/editor_log.cpp
-msgid " Output:"
+#, fuzzy
+msgid "Output:"
msgstr " 輸出:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
@@ -1323,6 +1549,11 @@ msgid "Creating Thumbnail"
msgstr "正在建立縮圖"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "This operation can't be done without a tree root."
+msgstr "æ­¤æ“作無法復原, 確定è¦é‚„原嗎?"
+
+#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
msgstr ""
@@ -1441,12 +1672,13 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-msgid "Yes"
-msgstr "是"
+#, fuzzy
+msgid "Save & Close"
+msgstr "å¦å­˜æ–°æª”"
#: editor/editor_node.cpp
-msgid "Close scene? (Unsaved changes will be lost)"
-msgstr "沒有儲存的變更都會éºå¤±, 確定è¦é—œé–‰?"
+msgid "Save changes to '%s' before closing?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1457,9 +1689,17 @@ msgid "No"
msgstr ""
#: editor/editor_node.cpp
+msgid "Yes"
+msgstr "是"
+
+#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
msgstr "此場景尚未存檔, 執行å‰è«‹å…ˆå­˜æª”"
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Export Mesh Library"
msgstr ""
@@ -1469,12 +1709,8 @@ msgid "Export Tile Set"
msgstr ""
#: editor/editor_node.cpp
-msgid "Quit"
-msgstr "離開"
-
-#: editor/editor_node.cpp
-msgid "Exit the editor?"
-msgstr "離開編輯器嗎?"
+msgid "This operation can't be done without a selected node."
+msgstr ""
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1497,16 +1733,50 @@ msgid "Quick Run Scene.."
msgstr "快速執行場景.."
#: editor/editor_node.cpp
-msgid ""
-"Open Project Manager? \n"
-"(Unsaved changes will be lost)"
-msgstr "未ä¿å­˜çš„變更將éºå¤±, è¦é–‹å•Ÿå°ˆæ¡ˆç®¡ç†å“¡å—Ž?"
+msgid "Quit"
+msgstr "離開"
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr "離開編輯器嗎?"
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "挑一個主è¦å ´æ™¯"
#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
@@ -1539,6 +1809,11 @@ msgstr ""
msgid "Delete Layout"
msgstr ""
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr "é è¨­"
+
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
msgstr "切æ›å ´æ™¯åˆ†é "
@@ -1555,6 +1830,10 @@ msgstr "還有 %d 個檔案或資料夾"
msgid "Distraction Free Mode"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
#, fuzzy
msgid "Scene"
@@ -1604,10 +1883,6 @@ msgstr "儲存全部場景"
msgid "Close Scene"
msgstr "關閉場景"
-#: editor/editor_node.cpp
-msgid "Close Goto Prev. Scene"
-msgstr ""
-
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
msgstr "開啟最近存å–"
@@ -1888,6 +2163,10 @@ msgstr ""
msgid "Output"
msgstr ""
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
msgid "Re-Import"
msgstr ""
@@ -1897,26 +2176,10 @@ msgid "Update"
msgstr ""
#: editor/editor_node.cpp
-msgid "Thanks from the Godot community!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Thanks!"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_node.cpp
-msgid "Developers"
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
msgstr ""
@@ -1937,9 +2200,17 @@ msgid "Open & Run a Script"
msgstr ""
#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Load Errors"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -2041,6 +2312,16 @@ msgstr ""
msgid "Re-Import Changed Resources"
msgstr ""
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
msgstr ""
@@ -2176,10 +2457,26 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Needs Re-Import"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination files, doing nothing."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Target file exists, can't overwrite. Delete first."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Same source and destination paths, doing nothing."
msgstr ""
@@ -2188,6 +2485,20 @@ msgid "Can't move directories to within themselves."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Can't rename deps for:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving file:\n"
+msgstr "載入時發生錯誤:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving dir:\n"
+msgstr "載入時發生錯誤:"
+
+#: editor/filesystem_dock.cpp
msgid "Can't operate on '..'"
msgstr ""
@@ -2264,6 +2575,12 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Move"
msgstr ""
@@ -2275,9 +2592,29 @@ msgstr ""
msgid "Remove from Group"
msgstr ""
-#: editor/import/resource_importer_obj.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import as Single Scene"
+msgstr "更新場景"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
@@ -2317,6 +2654,14 @@ msgid "Saving.."
msgstr ""
#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
msgid " Files"
msgstr ""
@@ -2503,6 +2848,10 @@ msgstr ""
msgid "Mesh"
msgstr ""
+#: editor/io_plugins/editor_mesh_import_plugin.cpp
+msgid "Surface %d"
+msgstr ""
+
#: editor/io_plugins/editor_sample_import_plugin.cpp
msgid "No samples to import!"
msgstr ""
@@ -3084,6 +3433,11 @@ msgid "New name:"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Filters"
+msgstr "éŽæ¿¾æª”案.."
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
msgstr ""
@@ -3395,6 +3749,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit"
msgstr ""
@@ -3427,10 +3782,6 @@ msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Expand to Parent"
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton.."
msgstr ""
@@ -3539,11 +3890,6 @@ msgstr ""
msgid "Change default type"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#: editor/script_create_dialog.cpp scene/gui/dialogs.cpp
-msgid "OK"
-msgstr ""
-
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
@@ -3581,6 +3927,14 @@ msgstr ""
msgid "Create a new polygon from scratch."
msgstr ""
+#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3620,6 +3974,18 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
msgstr ""
@@ -3629,11 +3995,29 @@ msgid "Remove point"
msgstr "移除"
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Left linear"
+msgstr "線性"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-msgid "Modify Curve"
+#, fuzzy
+msgid "Remove Curve Point"
+msgstr "移除"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
msgstr ""
#: editor/plugins/gradient_editor_plugin.cpp
@@ -3658,6 +4042,12 @@ 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 ""
@@ -3947,6 +4337,11 @@ msgid "Load Emission Mask"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
msgstr ""
@@ -4263,6 +4658,12 @@ msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
msgstr ""
@@ -4287,6 +4688,10 @@ msgid "Save Theme As.."
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
msgstr ""
@@ -4339,6 +4744,10 @@ msgid "Close All"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
@@ -4371,6 +4780,11 @@ msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Debug with external editor"
+msgstr "離開編輯器嗎?"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Window"
msgstr ""
@@ -4434,6 +4848,10 @@ msgid ""
msgstr ""
#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr ""
@@ -4481,6 +4899,11 @@ msgid "Move Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
+msgid "Delete Line"
+msgstr "刪除"
+
+#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
msgstr ""
@@ -4787,97 +5210,118 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Left"
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Right"
+#, fuzzy
+msgid "Material Changes"
+msgstr "正在儲存變更.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Freelook Forward"
-msgstr "å¾€å‰"
+msgid "Surface Changes"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Backwards"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Up"
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Down"
+msgid "Align with view"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Freelook Speed Modifier"
+msgid "Display Normal"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Display Wireframe"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Material Changes"
-msgstr "正在儲存變更.."
+msgid "Display Overdraw"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "View Environment"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "View Gizmos"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "View Information"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Align with view"
+msgid "Audio Listener"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Normal"
+#, fuzzy
+msgid "Doppler Enable"
+msgstr "啟用"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Wireframe"
+msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Overdraw"
+#, fuzzy
+msgid "Freelook Forward"
+msgstr "å¾€å‰"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Display Unshaded"
+msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Environment"
+msgid "Freelook Down"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Gizmos"
+msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "View Information"
+#, fuzzy
+msgid "preview"
+msgstr "é è¦½:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Audio Listener"
+msgid "Select Mode (Q)\n"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "XForm Dialog"
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -4998,6 +5442,7 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
msgstr ""
@@ -5126,6 +5571,10 @@ msgid "StyleBox Preview:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
msgstr ""
@@ -5183,6 +5632,15 @@ msgid "Remove Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "移除"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme"
msgstr ""
@@ -5250,7 +5708,7 @@ msgstr ""
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_settings.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
msgstr ""
@@ -5272,11 +5730,25 @@ msgid "Color"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Erase Selection"
+msgstr "æ‰€æœ‰çš„é¸æ“‡"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr ""
-#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Duplicate"
+#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
+msgid "Line Draw"
+msgstr "線性"
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5312,10 +5784,6 @@ msgid "Pick Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Select"
-msgstr ""
-
-#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
msgstr ""
@@ -5375,7 +5843,7 @@ msgstr ""
msgid "Presets"
msgstr ""
-#: editor/project_export.cpp editor/project_settings.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
msgstr ""
@@ -5422,6 +5890,24 @@ msgid "Make Patch"
msgstr ""
#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Feature List:"
+msgstr "方法:"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export PCK/Zip"
+msgstr "輸出"
+
+#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr ""
@@ -5458,10 +5944,6 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Package Installed Successfully!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr ""
@@ -5506,6 +5988,19 @@ msgid "Are you sure to open more than one project?"
msgstr ""
#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
msgstr ""
@@ -5520,10 +6015,6 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -5551,255 +6042,286 @@ msgstr ""
msgid "Exit"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't run project"
+msgstr "連接..."
+
+#: editor/project_settings_editor.cpp
msgid "Key "
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joy Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
msgstr ""
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 6"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 7"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 8"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Button 9"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Axis"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Input Action"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Event"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
msgid "Wheel Down."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select an setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Delete Item"
+msgstr "刪除"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Add Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "專案設定"
-#: editor/project_settings.cpp editor/settings_config_dialog.cpp
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
msgstr ""
-#: editor/project_settings.cpp editor/property_editor.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
msgstr ""
-#: editor/project_settings.cpp
-msgid "Del"
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
msgstr ""
-#: editor/project_settings.cpp
-msgid "Copy To Platform.."
-msgstr ""
-
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Input Map"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Action:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Device:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Index:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Localization"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Translations:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Resources:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "Locale"
msgstr ""
-#: editor/project_settings.cpp
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -5840,6 +6362,10 @@ msgid "Assign"
msgstr ""
#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "New Script"
msgstr ""
@@ -5852,6 +6378,10 @@ msgid "Error loading file: Not a resource!"
msgstr ""
#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Pick a Node"
msgstr ""
@@ -5947,6 +6477,11 @@ msgstr ""
msgid "Scene Run Settings"
msgstr ""
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
msgstr ""
@@ -5990,10 +6525,6 @@ msgid "Delete Node(s)?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done without a scene."
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
msgstr ""
@@ -6006,6 +6537,18 @@ msgid "Save New Scene As.."
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
msgstr ""
@@ -6048,6 +6591,14 @@ msgid "Edit Connections"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
msgstr ""
@@ -6098,6 +6649,11 @@ msgid ""
msgstr ""
#: editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Filter nodes"
+msgstr "éŽæ¿¾æª”案.."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
msgstr ""
@@ -6105,6 +6661,14 @@ msgstr ""
msgid "Clear a script for the selected node."
msgstr ""
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
msgstr ""
@@ -6136,11 +6700,6 @@ msgid ""
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
-msgid "Subscene options"
-msgstr "除錯é¸é …"
-
-#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr ""
@@ -6178,31 +6737,7 @@ msgid "Scene Tree (Nodes):"
msgstr ""
#: editor/scene_tree_editor.cpp
-msgid "Editable Children"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Load As Placeholder"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Discard Instancing"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Open in Editor"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
-
-#: editor/scene_tree_editor.cpp
-msgid "Clear!"
+msgid "Node Configuration Warning!"
msgstr ""
#: editor/scene_tree_editor.cpp
@@ -6211,6 +6746,11 @@ msgstr ""
#: editor/script_create_dialog.cpp
#, fuzzy
+msgid "Error loading template '%s'"
+msgstr "載入場景時發生錯誤"
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Error - Could not create script in filesystem."
msgstr "無法新增資料夾"
@@ -6219,6 +6759,10 @@ msgid "Error loading script from %s"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Path is empty"
msgstr ""
@@ -6260,10 +6804,6 @@ msgid "Allowed: a-z, A-Z, 0-9 and _"
msgstr ""
#: editor/script_create_dialog.cpp
-msgid "N/A"
-msgstr ""
-
-#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
msgstr ""
@@ -6369,7 +6909,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Value"
-msgstr ""
+msgstr "數值"
#: editor/script_editor_debugger.cpp
#, fuzzy
@@ -6432,6 +6972,10 @@ msgid "Change Light Radius"
msgstr "變更光æºåŠå¾‘"
#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
msgstr "變更é¡é ­è¦–野(FOV)"
@@ -6519,6 +7063,129 @@ msgstr "無效的事件詞典格å¼(無效的腳本 @path)"
msgid "Invalid instance dictionary (invalid subclasses)"
msgstr ""
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Delete Selection"
+msgstr "複製所é¸"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Duplicate Selection"
+msgstr "複製所é¸"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Paint"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Clip Disabled"
+msgstr "å·²åœç”¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Create Area"
+msgstr "新增"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Duplicate"
+msgstr "åƒ…é¸æ“‡å€åŸŸ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "Selection -> Clear"
+msgstr "åƒ…é¸æ“‡å€åŸŸ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Settings"
+msgstr "專案設定"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Tiles"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Areas"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -6552,63 +7219,63 @@ msgid "Stack overflow with stack depth: "
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Functions:"
+msgid "Change Signal Arguments"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Variables:"
+msgid "Change Argument Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name is not a valid identifier:"
+msgid "Change Argument name"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Name already in use by another func/var/signal:"
+msgid "Set Variable Default Value"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Function"
+msgid "Set Variable Type"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Variable"
+msgid "Functions:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Rename Signal"
+msgid "Variables:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Function"
+msgid "Name is not a valid identifier:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Variable"
+msgid "Name already in use by another func/var/signal:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Add Signal"
+msgid "Rename Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Function"
+msgid "Rename Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Variable"
+msgid "Rename Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Variable:"
+msgid "Add Function"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Remove Signal"
+msgid "Add Variable"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Editing Signal:"
+msgid "Add Signal"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
@@ -6620,6 +7287,14 @@ msgid "Add Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
@@ -6660,6 +7335,24 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Base Type"
+msgstr "變更é¡é ­å°ºå¯¸"
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Move Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Connect Nodes"
+msgstr "連接..."
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
msgstr ""
@@ -6688,6 +7381,50 @@ msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
msgstr ""
@@ -6708,10 +7445,6 @@ msgid "Edit Variable:"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
msgstr ""
@@ -6785,14 +7518,6 @@ msgid ""
"(error)."
msgstr ""
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just pressed"
-msgstr ""
-
-#: modules/visual_script/visual_script_nodes.cpp
-msgid "just released"
-msgstr ""
-
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
msgstr ""
@@ -6813,77 +7538,6 @@ msgstr ""
msgid "Could not open template for export:\n"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid ""
-"Couldn't read the certificate file. Are the path and password both correct?"
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the signature object."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Error creating the package signature."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid ""
-"No export templates found.\n"
-"Download and install export templates."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom debug package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Custom release package not found."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid unique name."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid product GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid publisher GUID."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid background color."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid Store Logo image dimensions (should be 50x50)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 44x44 logo image dimensions (should be 44x44)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 71x71 logo image dimensions (should be 71x71)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 150x150 logo image dimensions (should be 150x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid square 310x310 logo image dimensions (should be 310x310)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid wide 310x150 logo image dimensions (should be 310x150)."
-msgstr ""
-
-#: platform/uwp/export/export.cpp
-msgid "Invalid splash screen image dimensions (should be 620x300)."
-msgstr ""
-
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
@@ -6968,6 +7622,13 @@ msgstr ""
msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr ""
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
@@ -6990,17 +7651,32 @@ msgid ""
"as parent."
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"CollisionShape only serves to provide a collision shape to a CollisionObject "
-"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
-"KinematicBody, etc. to give them a shape."
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
msgstr ""
-#: scene/3d/body_shape.cpp
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
msgid ""
-"A shape must be provided for CollisionShape to function. Please create a "
-"shape resource for it!"
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -7014,6 +7690,19 @@ msgstr ""
msgid "An empty CollisionPolygon has no effect on collision."
msgstr ""
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
msgstr ""
@@ -7029,6 +7718,13 @@ msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
@@ -7045,7 +7741,7 @@ msgid ""
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "RAW Mode"
+msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
@@ -7060,25 +7756,9 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/file_dialog.cpp
-msgid "Open a File"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open File(s)"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a Directory"
-msgstr ""
-
-#: scene/gui/file_dialog.cpp
-msgid "Open a File or Directory"
-msgstr ""
-
#: scene/gui/input_action.cpp
msgid "Ctrl+"
-msgstr ""
+msgstr "Ctrl+"
#: scene/gui/popup.cpp
msgid ""
@@ -7094,7 +7774,7 @@ msgid ""
"minimum size manually."
msgstr ""
-#: scene/main/scene_main_loop.cpp
+#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
@@ -7108,6 +7788,14 @@ msgid ""
"texture to some node for display."
msgstr ""
+#~ msgid "Close scene? (Unsaved changes will be lost)"
+#~ msgstr "沒有儲存的變更都會éºå¤±, 確定è¦é—œé–‰?"
+
+#~ msgid ""
+#~ "Open Project Manager? \n"
+#~ "(Unsaved changes will be lost)"
+#~ msgstr "未ä¿å­˜çš„變更將éºå¤±, è¦é–‹å•Ÿå°ˆæ¡ˆç®¡ç†å“¡å—Ž?"
+
#~ msgid ""
#~ "Paths cannot start with '/', absolute paths must start with 'res://', "
#~ "'user://', or 'local://'"
diff --git a/main/SCsub b/main/SCsub
index 1675a6e6ab..1f97cd1be0 100644
--- a/main/SCsub
+++ b/main/SCsub
@@ -1,6 +1,7 @@
#!/usr/bin/env python
Import('env')
+from compat import byte_to_str
def make_splash(target, source, env):
@@ -8,17 +9,17 @@ def make_splash(target, source, env):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
f = open(src, "rb")
- g = open(dst, "wb")
+ g = open(dst, "w")
buf = f.read()
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef BOOT_SPLASH_H\n")
g.write("#define BOOT_SPLASH_H\n")
- g.write("static const Color boot_splash_bg_color = Color(1,1,1,1);\n");
+ g.write("static const Color boot_splash_bg_color = Color(1,1,1,1);\n")
g.write("static const unsigned char boot_splash_png[] = {\n")
for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
+ g.write(byte_to_str(buf[i]) + ",\n")
g.write("};\n")
g.write("#endif")
@@ -28,7 +29,7 @@ def make_app_icon(target, source, env):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
f = open(src, "rb")
- g = open(dst, "wb")
+ g = open(dst, "w")
buf = f.read()
@@ -37,7 +38,7 @@ def make_app_icon(target, source, env):
g.write("#define APP_ICON_H\n")
g.write("static const unsigned char app_icon_png[] = {\n")
for i in range(len(buf)):
- g.write(str(ord(buf[i])) + ",\n")
+ g.write(byte_to_str(buf[i]) + ",\n")
g.write("};\n")
g.write("#endif")
diff --git a/main/input_default.cpp b/main/input_default.cpp
index e7dc9d4b70..b4c9a6207f 100644
--- a/main/input_default.cpp
+++ b/main/input_default.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "input_default.h"
+
#include "input_map.h"
#include "os/os.h"
#include "scene/resources/texture.h"
@@ -96,58 +97,6 @@ bool InputDefault::is_joy_button_pressed(int p_device, int p_button) const {
bool InputDefault::is_action_pressed(const StringName &p_action) const {
return action_state.has(p_action) && action_state[p_action].pressed;
-#if 0
- if (custom_action_press.has(p_action))
- return true; //simpler
-
- const List<InputEvent> *alist = InputMap::get_singleton()->get_action_list(p_action);
- if (!alist)
- return false;
-
-
- for (const List<InputEvent>::Element *E=alist->front();E;E=E->next()) {
-
-
- int device=E->get().device;
-
- switch(E->get().type) {
-
- case InputEvent::KEY: {
-
- const InputEventKey &iek=E->get().key;
- if ((keys_pressed.has(iek->get_scancode())))
- return true;
- } break;
- case InputEvent::MOUSE_BUTTON: {
-
- const InputEventMouseButton &iemb=E->get().mouse_button;
- if(mouse_button_mask&(1<<iemb->get_button_index()))
- return true;
- } break;
- case InputEvent::JOYPAD_BUTTON: {
-
- const InputEventJoypadButton &iejb=E->get().joy_button;
- int c = _combine_device(iejb->get_button_index(),device);
- if (joy_buttons_pressed.has(c))
- return true;
- } break;
- case InputEvent::JOYPAD_MOTION: {
-
- const InputEventJoypadMotion &iejm=E->get().joy_motion;
- int c = _combine_device(iejm.axis,device);
- if (_joy_axis.has(c)) {
- if (iejm.axis_value < 0) {
- if (_joy_axis[c] < -0.5f) return true;
- }
- else
- if (_joy_axis[c] > 0.5f) return true;
- }
- } break;
- }
- }
-
- return false;
-#endif
}
bool InputDefault::is_action_just_pressed(const StringName &p_action) const {
@@ -775,7 +724,7 @@ static const char *s_ControllerMappings[] = {
"4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
"532e542e442e20496e74657261637420,3dfx InterAct HammerHead FX,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b25,rightshoulder:b27,rightx:a2,start:b31,righty:a3,dpleft:h0.8,lefttrigger:b28,x:b20,dpup:h0.1,back:b30,leftstick:b22,leftshoulder:b26,y:b21,a:b23,dpright:h0.2,righttrigger:b29,b:b24,",
"506572666f726d616e63652044657369,PDP Rock Candy Wireless Controller for PS3,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b6,rightshoulder:b18,rightx:a2,start:b16,righty:a3,dpleft:h0.8,lefttrigger:b9,x:b0,dpup:h0.1,back:h0.2,leftstick:b4,leftshoulder:b3,y:b2,a:b1,dpright:h0.2,righttrigger:b10,b:b17,",
- "4f5559412047616d6520436f6e74726f,OUYA Game Controller,leftx:a0,lefty:a1,dpdown:b9,rightstick:b7,rightshoulder:b5,rightx:a3,start:b16,righty:a4,dpleft:b10,lefttrigger:b12,x:b1,dpup:b8,back:b14,leftstick:b6,leftshoulder:b4,y:b2,a:b0,dpright:b11,righttrigger:b13,b:b3,",
+ "4f5559412047616d6520436f6e74726f,OUYA Game Controller,leftx:a1,lefty:a3,dpdown:b12,rightstick:b8,rightshoulder:b10,rightx:a6,start:b-86,righty:a7,dpleft:b13,lefttrigger:b15,x:b2,dpup:b11,leftstick:b7,leftshoulder:b9,y:b3,a:b0,dpright:b14,righttrigger:b16,b:b1,",
#endif
#ifdef JAVASCRIPT_ENABLED
diff --git a/main/input_default.h b/main/input_default.h
index 35e841a488..345c34c55e 100644
--- a/main/input_default.h
+++ b/main/input_default.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -214,7 +214,7 @@ public:
virtual void start_joy_vibration(int p_device, float p_weak_magnitude, float p_strong_magnitude, float p_duration = 0);
virtual void stop_joy_vibration(int p_device);
- void set_main_loop(MainLoop *main_loop);
+ void set_main_loop(MainLoop *p_main_loop);
void set_mouse_position(const Point2 &p_posf);
void action_press(const StringName &p_action);
diff --git a/main/main.cpp b/main/main.cpp
index 561201ab8a..532b5277b5 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "main.h"
+
#include "app_icon.gen.h"
#include "core/register_core_types.h"
#include "drivers/register_driver_types.h"
@@ -68,7 +69,6 @@
#include "core/io/file_access_zip.h"
#include "core/io/stream_peer_ssl.h"
#include "core/io/stream_peer_tcp.h"
-#include "core/os/thread.h"
#include "main/input_default.h"
#include "performance.h"
#include "translation.h"
@@ -110,6 +110,9 @@ static bool force_lowdpi = false;
static int init_screen = -1;
static bool use_vsync = true;
static bool editor = false;
+static bool show_help = false;
+
+static OS::ProcessID allow_focus_steal_pid = 0;
static String unescape_cmdline(const String &p_str) {
@@ -126,63 +129,88 @@ static String unescape_cmdline(const String &p_str) {
void Main::print_help(const char *p_binary) {
- OS::get_singleton()->print(VERSION_FULL_NAME " (c) 2008-2017 Juan Linietsky, Ariel Manzur.\n");
- OS::get_singleton()->print("Usage: %s [options] [scene]\n", p_binary);
- OS::get_singleton()->print("Options:\n");
- OS::get_singleton()->print("\t-path [dir] : Path to a game, containing project.godot\n");
-#ifdef TOOLS_ENABLED
- OS::get_singleton()->print("\t-e,-editor : Bring up the editor instead of running the scene.\n");
-#endif
- OS::get_singleton()->print("\t-test [test] : Run a test.\n");
- OS::get_singleton()->print("\t\t(");
- const char **test_names = tests_get_names();
- const char *coma = "";
- while (*test_names) {
+ OS::get_singleton()->print(VERSION_FULL_NAME " - https://godotengine.org\n");
+ OS::get_singleton()->print("(c) 2007-2017 Juan Linietsky, Ariel Manzur.\n");
+ OS::get_singleton()->print("(c) 2014-2017 Godot Engine contributors.\n");
+ OS::get_singleton()->print("\n");
+ OS::get_singleton()->print("Usage: %s [options] [path to scene or 'project.godot' file]\n", p_binary);
+ OS::get_singleton()->print("\n");
- OS::get_singleton()->print("%s%s", coma, *test_names);
- test_names++;
- coma = ", ";
- }
- OS::get_singleton()->print(")\n");
-
- OS::get_singleton()->print("\t-r WIDTHxHEIGHT\t : Request Window Resolution\n");
- OS::get_singleton()->print("\t-p XxY\t : Request Window Position\n");
- OS::get_singleton()->print("\t-f\t\t : Request Fullscreen\n");
- OS::get_singleton()->print("\t-mx\t\t Request Maximized\n");
- OS::get_singleton()->print("\t-w\t\t Request Windowed\n");
- OS::get_singleton()->print("\t-vd DRIVER\t : Video Driver (");
- for (int i = 0; i < OS::get_singleton()->get_video_driver_count(); i++) {
+ OS::get_singleton()->print("General options:\n");
+ OS::get_singleton()->print(" -h, --help Display this help message.\n");
+ OS::get_singleton()->print(" -v, --verbose Use verbose stdout mode.\n");
+ OS::get_singleton()->print(" --quiet Quiet mode, silences stdout messages. Errors are still displayed.\n");
+ OS::get_singleton()->print("\n");
+ OS::get_singleton()->print("Run options:\n");
+#ifdef TOOLS_ENABLED
+ OS::get_singleton()->print(" -e, --editor Start the editor instead of running the scene.\n");
+ OS::get_singleton()->print(" -p, --project-manager Start the project manager, even if a project is auto-detected.\n");
+#endif
+ OS::get_singleton()->print(" -l, --language <locale> Use a specific locale (<locale> being a two-letter code).\n");
+ OS::get_singleton()->print(" --path <directory> Path to a project (<directory> must contain a 'project.godot' file).\n");
+ OS::get_singleton()->print(" --main-pack <file> Path to a pack (.pck) file to load.\n");
+ OS::get_singleton()->print(" --render-thread <mode> Render thread mode ('unsafe', 'safe', 'separate').\n");
+ OS::get_singleton()->print(" --remote-fs <address> Remote filesystem (<host/IP>[:<port>] address).\n");
+ OS::get_singleton()->print(" --remote-fs-password <password> Password for remote filesystem.\n");
+ OS::get_singleton()->print(" --audio-driver <driver> Audio driver (");
+ for (int i = 0; i < OS::get_singleton()->get_audio_driver_count(); i++) {
if (i != 0)
OS::get_singleton()->print(", ");
- OS::get_singleton()->print("%s", OS::get_singleton()->get_video_driver_name(i));
+ OS::get_singleton()->print("'%s'", OS::get_singleton()->get_audio_driver_name(i));
}
- OS::get_singleton()->print(")\n");
- OS::get_singleton()->print("\t-ldpi\t : Force low-dpi mode (OSX Only)\n");
-
- OS::get_singleton()->print("\t-ad DRIVER\t : Audio Driver (");
- for (int i = 0; i < OS::get_singleton()->get_audio_driver_count(); i++) {
-
+ OS::get_singleton()->print(").\n");
+ OS::get_singleton()->print(" --video-driver <driver> Video driver (");
+ for (int i = 0; i < OS::get_singleton()->get_video_driver_count(); i++) {
if (i != 0)
OS::get_singleton()->print(", ");
- OS::get_singleton()->print("%s", OS::get_singleton()->get_audio_driver_name(i));
+ OS::get_singleton()->print("'%s'", OS::get_singleton()->get_video_driver_name(i));
}
- OS::get_singleton()->print(")\n");
- OS::get_singleton()->print("\t-rthread <mode>\t : Render Thread Mode ('unsafe', 'safe', 'separate').\n");
- OS::get_singleton()->print("\t-s,-script [script] : Run a script.\n");
- OS::get_singleton()->print("\t-d,-debug : Debug (local stdout debugger).\n");
- OS::get_singleton()->print("\t-rdebug ADDRESS : Remote debug (<ip>:<port> host address).\n");
- OS::get_singleton()->print("\t-fdelay [msec]: Simulate high CPU load (delay each frame by [msec]).\n");
- OS::get_singleton()->print("\t-timescale [msec]: Simulate high CPU load (delay each frame by [msec]).\n");
- OS::get_singleton()->print("\t-bp : breakpoint list as source::line comma separated pairs, no spaces (%%20,%%2C,etc instead).\n");
- OS::get_singleton()->print("\t-v : Verbose stdout mode\n");
- OS::get_singleton()->print("\t-lang [locale]: Use a specific locale\n");
- OS::get_singleton()->print("\t-rfs <host/ip>[:<port>] : Remote FileSystem.\n");
- OS::get_singleton()->print("\t-rfs_pass <password> : Password for Remote FileSystem.\n");
+ OS::get_singleton()->print(").\n");
+ OS::get_singleton()->print("\n");
+
+ OS::get_singleton()->print("Display options:\n");
+ OS::get_singleton()->print(" -f, --fullscreen Request fullscreen mode.\n");
+ OS::get_singleton()->print(" -m, --maximized Request a maximized window.\n");
+ OS::get_singleton()->print(" -w, --windowed Request windowed mode.\n");
+ OS::get_singleton()->print(" --resolution <W>x<H> Request window resolution.\n");
+ OS::get_singleton()->print(" --position <X>,<Y> Request window position.\n");
+ OS::get_singleton()->print(" --low-dpi Force low-DPI mode (macOS only).\n");
+ OS::get_singleton()->print(" --no-window Disable window creation (Windows only). Useful together with --script.\n");
+ OS::get_singleton()->print("\n");
+
+ OS::get_singleton()->print("Debug options:\n");
+ OS::get_singleton()->print(" -d, --debug Debug (local stdout debugger).\n");
+ OS::get_singleton()->print(" -b, --breakpoints Breakpoint list as source::line comma-separated pairs, no spaces (use %%20 instead).\n");
+ OS::get_singleton()->print(" --profiling Enable profiling in the script debugger.\n");
+ OS::get_singleton()->print(" --remote-debug <address> Remote debug (<host/IP>:<port> address).\n");
+#ifdef DEBUG_ENABLED
+ OS::get_singleton()->print(" --debug-collisions Show collisions shapes when running the scene.\n");
+ OS::get_singleton()->print(" --debug-navigation Show navigation polygons when running the scene.\n");
+#endif
+ OS::get_singleton()->print(" --frame-delay <ms> Simulate high CPU load (delay each frame by <ms> milliseconds).\n");
+ OS::get_singleton()->print(" --time-scale <scale> Force time scale (higher values are faster, 1.0 is normal speed).\n");
+ OS::get_singleton()->print("\n");
+
+ OS::get_singleton()->print("Standalone tools:\n");
+ OS::get_singleton()->print(" -s, --script <script> Run a script.\n");
#ifdef TOOLS_ENABLED
- OS::get_singleton()->print("\t-doctool FILE: Dump the whole engine api to FILE in XML format. If FILE exists, it will be merged.\n");
- OS::get_singleton()->print("\t-nodocbase: Disallow dump the base types (used with -doctool).\n");
- OS::get_singleton()->print("\t-export [target] Export the project using given export target.\n");
+ OS::get_singleton()->print(" --export <target> Export the project using the given export target.\n");
+ OS::get_singleton()->print(" --export-debug Use together with --export, enables debug mode for the template.\n");
+ OS::get_singleton()->print(" --doctool <file> Dump the whole engine API to <file> in XML format. If <file> exists, it will be merged.\n");
+ OS::get_singleton()->print(" --no-docbase Disallow dumping the base types (used with --doctool).\n");
+#ifdef DEBUG_METHODS_ENABLED
+ OS::get_singleton()->print(" --gdnative-generate-json-api Generate JSON dump of the Godot API for GDNative bindings.\n");
+#endif
+ OS::get_singleton()->print(" --test <test> Run a unit test (");
+ const char **test_names = tests_get_names();
+ const char *comma = "";
+ while (*test_names) {
+ OS::get_singleton()->print("%s'%s'", comma, *test_names);
+ test_names++;
+ comma = ", ";
+ }
+ OS::get_singleton()->print(").\n");
#endif
}
@@ -252,15 +280,10 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
String remotefs;
String remotefs_pass;
- String screen = "";
-
- List<String> pack_list;
Vector<String> breakpoints;
bool use_custom_res = true;
bool force_res = false;
- I = args.front();
-
packed_data = PackedData::get_singleton();
if (!packed_data)
packed_data = memnew(PackedData);
@@ -277,18 +300,17 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
packed_data->add_pack_source(zip_packed_data);
#endif
+ I = args.front();
while (I) {
List<String>::Element *N = I->next();
- if (I->get() == "-noop") {
-
- // no op
- } else if (I->get() == "-h" || I->get() == "--help" || I->get() == "/?") { // resolution
+ if (I->get() == "-h" || I->get() == "--help" || I->get() == "/?") { // display help
+ show_help = true;
goto error;
- } else if (I->get() == "-r") { // resolution
+ } else if (I->get() == "--resolution") { // force resolution
if (I->next()) {
@@ -296,16 +318,16 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
if (vm.find("x") == -1) { // invalid parameter format
- OS::get_singleton()->print("Invalid -r argument: %s\n", vm.utf8().get_data());
+ OS::get_singleton()->print("Invalid resolution '%s', it should be e.g. '1280x720'.\n", vm.utf8().get_data());
goto error;
}
int w = vm.get_slice("x", 0).to_int();
int h = vm.get_slice("x", 1).to_int();
- if (w == 0 || h == 0) {
+ if (w <= 0 || h <= 0) {
- OS::get_singleton()->print("Invalid -r resolution, x and y must be >0\n");
+ OS::get_singleton()->print("Invalid resolution '%s', width and height must be above 0.\n", vm.utf8().get_data());
goto error;
}
@@ -315,84 +337,86 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
N = I->next()->next();
} else {
- OS::get_singleton()->print("Invalid -p argument, needs resolution\n");
+ OS::get_singleton()->print("Missing resolution argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-p") { // position
+ } else if (I->get() == "--position") { // set window position
if (I->next()) {
String vm = I->next()->get();
- if (vm.find("x") == -1) { // invalid parameter format
+ if (vm.find(",") == -1) { // invalid parameter format
- OS::get_singleton()->print("Invalid -p argument: %s\n", vm.utf8().get_data());
+ OS::get_singleton()->print("Invalid position '%s', it should be e.g. '80,128'.\n", vm.utf8().get_data());
goto error;
}
- int x = vm.get_slice("x", 0).to_int();
- int y = vm.get_slice("x", 1).to_int();
+ int x = vm.get_slice(",", 0).to_int();
+ int y = vm.get_slice(",", 1).to_int();
init_custom_pos = Point2(x, y);
init_use_custom_pos = true;
N = I->next()->next();
} else {
- OS::get_singleton()->print("Invalid -r argument, needs position\n");
+ OS::get_singleton()->print("Missing position argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-mx") { // video driver
+ } else if (I->get() == "-m" || I->get() == "--maximized") { // force maximized window
init_maximized = true;
- } else if (I->get() == "-w") { // video driver
+ } else if (I->get() == "-w" || I->get() == "--windowed") { // force windowed window
init_windowed = true;
- } else if (I->get() == "-profile") { // video driver
+ } else if (I->get() == "--profiling") { // enable profiling
use_debug_profiler = true;
- } else if (I->get() == "-vd") { // video driver
+ } else if (I->get() == "--video-driver") { // force video driver
if (I->next()) {
video_driver = I->next()->get();
N = I->next()->next();
} else {
- OS::get_singleton()->print("Invalid -cd argument, needs driver name\n");
+ OS::get_singleton()->print("Missing video driver argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-lang") { // language
+ } else if (I->get() == "-l" || I->get() == "--language") { // language
if (I->next()) {
locale = I->next()->get();
N = I->next()->next();
} else {
- OS::get_singleton()->print("Invalid -lang argument, needs language code\n");
+ OS::get_singleton()->print("Missing language argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-ldpi") { // language
+ } else if (I->get() == "--low-dpi") { // force low DPI (macOS only)
force_lowdpi = true;
- } else if (I->get() == "-rfs") { // language
+ } else if (I->get() == "--remote-fs") { // remote filesystem
if (I->next()) {
remotefs = I->next()->get();
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing remote filesystem address, aborting.\n");
goto error;
}
- } else if (I->get() == "-rfs_pass") { // language
+ } else if (I->get() == "--remote-fs-password") { // remote filesystem password
if (I->next()) {
remotefs_pass = I->next()->get();
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing remote filesystem password, aborting.\n");
goto error;
}
- } else if (I->get() == "-rthread") { // language
+ } else if (I->get() == "--render-thread") { // render thread mode
if (I->next()) {
@@ -405,35 +429,37 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing render thread mode argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-ad") { // video driver
+ } else if (I->get() == "--audio-driver") { // audio driver
if (I->next()) {
audio_driver = I->next()->get();
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing audio driver argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-f") { // fullscreen
+ } else if (I->get() == "-f" || I->get() == "--fullscreen") { // force fullscreen
//video_mode.fullscreen=false;
init_fullscreen = true;
- } else if (I->get() == "-e" || I->get() == "-editor") { // fonud editor
+ } else if (I->get() == "-e" || I->get() == "--editor") { // starts editor
editor = true;
- } else if (I->get() == "-nowindow") { // fullscreen
+ } else if (I->get() == "--no-window") { // disable window creation, Windows only
OS::get_singleton()->set_no_window_mode(true);
- } else if (I->get() == "-quiet") { // fullscreen
+ } else if (I->get() == "--quiet") { // quieter output
quiet_stdout = true;
- } else if (I->get() == "-v") { // fullscreen
+ } else if (I->get() == "-v" || I->get() == "--verbose") { // verbose output
OS::get_singleton()->_verbose_stdout = true;
- } else if (I->get() == "-path") { // resolution
+ } else if (I->get() == "--path") { // set path of project to start or edit
if (I->next()) {
@@ -445,6 +471,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
}
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing relative or absolute path, aborting.\n");
goto error;
}
} else if (I->get().ends_with("project.godot")) {
@@ -464,7 +491,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
#ifdef TOOLS_ENABLED
editor = true;
#endif
- } else if (I->get() == "-bp") { // /breakpoints
+ } else if (I->get() == "-b" || I->get() == "--breakpoints") { // add breakpoints
if (I->next()) {
@@ -472,88 +499,72 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
breakpoints = bplist.split(",");
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing list of breakpoints, aborting.\n");
goto error;
}
- } else if (I->get() == "-fdelay") { // resolution
+ } else if (I->get() == "--frame-delay") { // force frame delay
if (I->next()) {
frame_delay = I->next()->get().to_int();
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing frame delay argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-timescale") { // resolution
+ } else if (I->get() == "--time-scale") { // force time scale
if (I->next()) {
Engine::get_singleton()->set_time_scale(I->next()->get().to_double());
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing time scale argument, aborting.\n");
goto error;
}
- } else if (I->get() == "-pack") {
-
- if (I->next()) {
-
- pack_list.push_back(I->next()->get());
- N = I->next()->next();
- } else {
-
- goto error;
- };
-
- } else if (I->get() == "-main_pack") {
+ } else if (I->get() == "--main-pack") {
if (I->next()) {
main_pack = I->next()->get();
N = I->next()->next();
} else {
-
+ OS::get_singleton()->print("Missing path to main pack file, aborting.\n");
goto error;
};
- } else if (I->get() == "-debug" || I->get() == "-d") {
+ } else if (I->get() == "-d" || I->get() == "--debug") {
debug_mode = "local";
#ifdef DEBUG_ENABLED
- } else if (I->get() == "-debugcol" || I->get() == "-dc") {
+ } else if (I->get() == "--debug-collisions") {
debug_collisions = true;
- } else if (I->get() == "-debugnav" || I->get() == "-dn") {
+ } else if (I->get() == "--debug-navigation") {
debug_navigation = true;
#endif
- } else if (I->get() == "-editor_scene") {
-
- if (I->next()) {
-
- ProjectSettings::get_singleton()->set("editor_scene", game_path = I->next()->get());
- } else {
- goto error;
- }
-
- } else if (I->get() == "-rdebug") {
+ } else if (I->get() == "--remote-debug") {
if (I->next()) {
debug_mode = "remote";
debug_host = I->next()->get();
- if (debug_host.find(":") == -1) { //wrong host
- OS::get_singleton()->print("Invalid debug host string\n");
+ if (debug_host.find(":") == -1) { // wrong address
+ OS::get_singleton()->print("Invalid debug host address, it should be of the form <host/IP>:<port>.\n");
goto error;
}
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing remote debug host address, aborting.\n");
goto error;
}
- } else if (I->get() == "-epid") {
+ } else if (I->get() == "--allow_focus_steal_pid") { // not exposed to user
if (I->next()) {
- int editor_pid = I->next()->get().to_int();
- ProjectSettings::get_singleton()->set("editor_pid", editor_pid);
+ allow_focus_steal_pid = I->next()->get().to_int64();
N = I->next()->next();
} else {
+ OS::get_singleton()->print("Missing editor PID argument, aborting.\n");
goto error;
}
} else {
@@ -617,7 +628,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
Error err = file_access_network_client->connect(remotefs, port, remotefs_pass);
if (err) {
- OS::get_singleton()->printerr("Could not connect to remotefs: %s:%i\n", remotefs.utf8().get_data(), port);
+ OS::get_singleton()->printerr("Could not connect to remotefs: %s:%i.\n", remotefs.utf8().get_data(), port);
goto error;
}
@@ -653,14 +664,15 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
#ifdef TOOLS_ENABLED
editor = false;
#else
- OS::get_singleton()->print("error: Couldn't load game path '%s'\n", game_path.ascii().get_data());
+ OS::get_singleton()->print("Error: Could not load game path '%s'.\n", game_path.ascii().get_data());
goto error;
#endif
}
if (editor) {
- main_args.push_back("-editor");
+ Engine::get_singleton()->set_editor_hint(true);
+ main_args.push_back("--editor");
init_maximized = true;
use_custom_res = false;
}
@@ -742,11 +754,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->_render_thread_mode = OS::RenderThreadMode(rtm);
}
- /* Determine Video Driver */
-
- if (audio_driver == "") { // specified in project.godot
- audio_driver = GLOBAL_DEF("audio/driver", OS::get_singleton()->get_audio_driver_name(0));
- }
+ /* Determine audio and video drivers */
for (int i = 0; i < OS::get_singleton()->get_video_driver_count(); i++) {
@@ -764,6 +772,10 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
//goto error;
}
+ if (audio_driver == "") { // specified in project.godot
+ audio_driver = GLOBAL_DEF("audio/driver", OS::get_singleton()->get_audio_driver_name(0));
+ }
+
for (int i = 0; i < OS::get_singleton()->get_audio_driver_count(); i++) {
if (audio_driver == OS::get_singleton()->get_audio_driver_name(i)) {
@@ -831,7 +843,8 @@ error:
args.clear();
main_args.clear();
- print_help(execpath);
+ if (show_help)
+ print_help(execpath);
if (performance)
memdelete(performance);
@@ -872,7 +885,11 @@ error:
return ERR_INVALID_PARAMETER;
}
-Error Main::setup2() {
+Error Main::setup2(Thread::ID p_main_tid_override) {
+
+ if (p_main_tid_override) {
+ Thread::_main_thread_id = p_main_tid_override;
+ }
OS::get_singleton()->initialize(video_mode, video_driver_idx, audio_driver_idx);
if (init_use_custom_pos) {
@@ -890,9 +907,10 @@ Error Main::setup2() {
MAIN_PRINT("Main: Setup Logo");
- bool show_logo = true;
#ifdef JAVASCRIPT_ENABLED
- show_logo = false;
+ bool show_logo = false;
+#else
+ bool show_logo = true;
#endif
if (init_screen != -1) {
@@ -966,7 +984,7 @@ Error Main::setup2() {
if (bool(GLOBAL_DEF("display/window/handheld/emulate_touchscreen", false))) {
if (!OS::get_singleton()->has_touchscreen_ui_hint() && Input::get_singleton() && !editor) {
//only if no touchscreen ui hint, set emulation
- InputDefault *id = Input::get_singleton()->cast_to<InputDefault>();
+ InputDefault *id = Object::cast_to<InputDefault>(Input::get_singleton());
if (id)
id->set_emulate_touch(true);
}
@@ -1000,6 +1018,10 @@ Error Main::setup2() {
#endif
+ if (allow_focus_steal_pid) {
+ OS::get_singleton()->enable_for_stealing_focus(allow_focus_steal_pid);
+ }
+
MAIN_PRINT("Main: Load Scripts, Modules, Drivers");
register_module_types();
@@ -1047,23 +1069,18 @@ bool Main::start() {
String game_path;
String script;
String test;
- String screen;
- String _export_platform;
- String _import;
- String _import_script;
- bool noquit = false;
+ String _export_preset;
bool export_debug = false;
bool project_manager_request = false;
+
List<String> args = OS::get_singleton()->get_cmdline_args();
for (int i = 0; i < args.size(); i++) {
//parameters that do not have an argument to the right
- if (args[i] == "-nodocbase") {
+ if (args[i] == "--no-docbase") {
doc_base = false;
- } else if (args[i] == "-noquit") {
- noquit = true;
- } else if (args[i] == "-editor" || args[i] == "-e") {
+ } else if (args[i] == "-e" || args[i] == "--editor") {
editor = true;
- } else if (args[i] == "-pm" || args[i] == "-project_manager") {
+ } else if (args[i] == "-p" || args[i] == "--project-manager") {
project_manager_request = true;
} else if (args[i].length() && args[i][0] != '-' && game_path == "") {
game_path = args[i];
@@ -1071,29 +1088,21 @@ bool Main::start() {
//parameters that have an argument to the right
else if (i < (args.size() - 1)) {
bool parsed_pair = true;
- if (args[i] == "-doctool") {
+ if (args[i] == "--doctool") {
doc_tool = args[i + 1];
for (int j = i + 2; j < args.size(); j++)
removal_docs.push_back(args[j]);
- } else if (args[i] == "-script" || args[i] == "-s") {
+ } else if (args[i] == "-s" || args[i] == "--script") {
script = args[i + 1];
- } else if (args[i] == "-level" || args[i] == "-l") {
- Engine::get_singleton()->_custom_level = args[i + 1];
- } else if (args[i] == "-test") {
+ } else if (args[i] == "--test") {
test = args[i + 1];
- } else if (args[i] == "-export") {
+ } else if (args[i] == "--export") {
editor = true; //needs editor
- _export_platform = args[i + 1];
- } else if (args[i] == "-export_debug") {
+ _export_preset = args[i + 1];
+ } else if (args[i] == "--export-debug") {
editor = true; //needs editor
- _export_platform = args[i + 1];
+ _export_preset = args[i + 1];
export_debug = true;
- } else if (args[i] == "-import") {
- editor = true; //needs editor
- _import = args[i + 1];
- } else if (args[i] == "-import_script") {
- editor = true; //needs editor
- _import_script = args[i + 1];
} else {
// The parameter does not match anything known, don't skip the next argument
parsed_pair = false;
@@ -1136,10 +1145,10 @@ bool Main::start() {
#endif
- if (_export_platform != "") {
+ if (_export_preset != "") {
if (game_path == "") {
String err = "Command line param ";
- err += export_debug ? "-export_debug" : "-export";
+ err += export_debug ? "--export-debug" : "--export";
err += " passed but no destination path given.\n";
err += "Please specify the binary's file path to export to. Aborting export.";
ERR_PRINT(err.utf8().get_data());
@@ -1175,7 +1184,7 @@ bool Main::start() {
StringName instance_type = script_res->get_instance_base_type();
Object *obj = ClassDB::instance(instance_type);
- MainLoop *script_loop = obj ? obj->cast_to<MainLoop>() : NULL;
+ MainLoop *script_loop = Object::cast_to<MainLoop>(obj);
if (!script_loop) {
if (obj)
memdelete(obj);
@@ -1199,7 +1208,7 @@ bool Main::start() {
if (!main_loop) {
if (!ClassDB::class_exists(main_loop_type)) {
- OS::get_singleton()->alert("godot: error: MainLoop type doesn't exist: " + main_loop_type);
+ OS::get_singleton()->alert("Error: MainLoop type doesn't exist: " + main_loop_type);
return false;
} else {
@@ -1209,7 +1218,7 @@ bool Main::start() {
ERR_FAIL_V(false);
}
- main_loop = ml->cast_to<MainLoop>();
+ main_loop = Object::cast_to<MainLoop>(ml);
if (!main_loop) {
memdelete(ml);
@@ -1221,7 +1230,7 @@ bool Main::start() {
if (main_loop->is_class("SceneTree")) {
- SceneTree *sml = main_loop->cast_to<SceneTree>();
+ SceneTree *sml = Object::cast_to<SceneTree>(main_loop);
#ifdef DEBUG_ENABLED
if (debug_collisions) {
@@ -1243,9 +1252,9 @@ bool Main::start() {
//root_node->set_editor(editor);
//startup editor
- if (_export_platform != "") {
+ if (_export_preset != "") {
- editor_node->export_platform(_export_platform, game_path, export_debug, "", true);
+ editor_node->export_preset(_export_preset, game_path, export_debug, "", true);
game_path = ""; //no load anything
}
}
@@ -1349,19 +1358,8 @@ bool Main::start() {
#ifdef TOOLS_ENABLED
if (editor) {
- if (_import != "") {
-
- //editor_node->import_scene(_import,local_game_path,_import_script);
- if (!noquit)
- sml->quit();
- game_path = ""; //no load anything
- } else {
-
- Error serr = editor_node->load_scene(local_game_path);
- }
+ Error serr = editor_node->load_scene(local_game_path);
OS::get_singleton()->set_context(OS::CONTEXT_EDITOR);
-
- //editor_node->set_edited_scene(game);
}
#endif
}
@@ -1426,7 +1424,7 @@ bool Main::start() {
ERR_EXPLAIN("Cannot instance script for autoload, expected 'Node' inheritance, got: " + String(ibt));
ERR_CONTINUE(obj == NULL);
- n = obj->cast_to<Node>();
+ n = Object::cast_to<Node>(obj);
n->set_script(s.get_ref_ptr());
}
@@ -1435,7 +1433,6 @@ bool Main::start() {
n->set_name(name);
//defer so references are all valid on _ready()
- //sml->get_root()->add_child(n);
to_add.push_back(n);
if (global_var) {
@@ -1460,7 +1457,6 @@ bool Main::start() {
ERR_EXPLAIN("Failed loading scene: " + local_game_path);
ERR_FAIL_COND_V(!scene, false)
- //sml->get_root()->add_child(scene);
sml->add_current_scene(scene);
String iconpath = GLOBAL_DEF("application/config/icon", "Variant()");
@@ -1474,27 +1470,6 @@ bool Main::start() {
}
#ifdef TOOLS_ENABLED
-
- /*if (_export_platform!="") {
-
- sml->quit();
- }*/
-
- /*
- if (sml->get_root_node()) {
-
- Console *console = memnew( Console );
-
- sml->get_root_node()->cast_to<RootNode>()->set_console(console);
- if (GLOBAL_DEF("console/visible_default",false).operator bool()) {
-
- console->show();
- } else {P
-
- console->hide();
- };
- }
-*/
if (project_manager_request || (script == "" && test == "" && game_path == "" && !editor)) {
ProjectManager *pmanager = memnew(ProjectManager);
@@ -1503,7 +1478,6 @@ bool Main::start() {
sml->get_root()->add_child(pmanager);
OS::get_singleton()->set_context(OS::CONTEXT_PROJECTMAN);
}
-
#endif
}
@@ -1584,10 +1558,6 @@ bool Main::iteration() {
time_accum -= frame_slice;
message_queue->flush();
- /*
- if (AudioServer::get_singleton())
- AudioServer::get_singleton()->update();
- */
fixed_process_ticks = MAX(fixed_process_ticks, OS::get_singleton()->get_ticks_usec() - fixed_begin); // keep the largest one for reference
fixed_process_max = MAX(OS::get_singleton()->get_ticks_usec() - fixed_begin, fixed_process_max);
@@ -1636,7 +1606,6 @@ bool Main::iteration() {
script_debugger->idle_poll();
}
- //x11_delay_usec(10000);
frames++;
Engine::get_singleton()->_idle_frames++;
@@ -1738,7 +1707,6 @@ void Main::cleanup() {
unregister_core_driver_types();
unregister_core_types();
- //PerformanceMetrics::finish();
OS::get_singleton()->clear_last_error();
OS::get_singleton()->finalize_core();
}
diff --git a/main/main.h b/main/main.h
index ca96e397ca..2c1d42a163 100644
--- a/main/main.h
+++ b/main/main.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,6 +34,7 @@
@author Juan Linietsky <reduzio@gmail.com>
*/
+#include "core/os/thread.h"
#include "error_list.h"
#include "typedefs.h"
@@ -49,7 +50,7 @@ class Main {
public:
static Error setup(const char *execpath, int argc, char *argv[], bool p_second_phase = true);
- static Error setup2();
+ static Error setup2(Thread::ID p_main_tid_override = 0);
static bool start();
static bool iteration();
static void cleanup();
diff --git a/main/performance.cpp b/main/performance.cpp
index 3d8e21bf33..e85d2bf736 100644
--- a/main/performance.cpp
+++ b/main/performance.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,35 +40,35 @@ void Performance::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_monitor", "monitor"), &Performance::get_monitor);
- BIND_CONSTANT(TIME_FPS);
- BIND_CONSTANT(TIME_PROCESS);
- BIND_CONSTANT(TIME_FIXED_PROCESS);
- BIND_CONSTANT(MEMORY_STATIC);
- BIND_CONSTANT(MEMORY_DYNAMIC);
- BIND_CONSTANT(MEMORY_STATIC_MAX);
- BIND_CONSTANT(MEMORY_DYNAMIC_MAX);
- BIND_CONSTANT(MEMORY_MESSAGE_BUFFER_MAX);
- BIND_CONSTANT(OBJECT_COUNT);
- BIND_CONSTANT(OBJECT_RESOURCE_COUNT);
- BIND_CONSTANT(OBJECT_NODE_COUNT);
- BIND_CONSTANT(RENDER_OBJECTS_IN_FRAME);
- BIND_CONSTANT(RENDER_VERTICES_IN_FRAME);
- BIND_CONSTANT(RENDER_MATERIAL_CHANGES_IN_FRAME);
- BIND_CONSTANT(RENDER_SHADER_CHANGES_IN_FRAME);
- BIND_CONSTANT(RENDER_SURFACE_CHANGES_IN_FRAME);
- BIND_CONSTANT(RENDER_DRAW_CALLS_IN_FRAME);
- BIND_CONSTANT(RENDER_USAGE_VIDEO_MEM_TOTAL);
- BIND_CONSTANT(RENDER_VIDEO_MEM_USED);
- BIND_CONSTANT(RENDER_TEXTURE_MEM_USED);
- BIND_CONSTANT(RENDER_VERTEX_MEM_USED);
- BIND_CONSTANT(PHYSICS_2D_ACTIVE_OBJECTS);
- BIND_CONSTANT(PHYSICS_2D_COLLISION_PAIRS);
- BIND_CONSTANT(PHYSICS_2D_ISLAND_COUNT);
- BIND_CONSTANT(PHYSICS_3D_ACTIVE_OBJECTS);
- BIND_CONSTANT(PHYSICS_3D_COLLISION_PAIRS);
- BIND_CONSTANT(PHYSICS_3D_ISLAND_COUNT);
-
- BIND_CONSTANT(MONITOR_MAX);
+ BIND_ENUM_CONSTANT(TIME_FPS);
+ BIND_ENUM_CONSTANT(TIME_PROCESS);
+ BIND_ENUM_CONSTANT(TIME_FIXED_PROCESS);
+ BIND_ENUM_CONSTANT(MEMORY_STATIC);
+ BIND_ENUM_CONSTANT(MEMORY_DYNAMIC);
+ BIND_ENUM_CONSTANT(MEMORY_STATIC_MAX);
+ BIND_ENUM_CONSTANT(MEMORY_DYNAMIC_MAX);
+ BIND_ENUM_CONSTANT(MEMORY_MESSAGE_BUFFER_MAX);
+ BIND_ENUM_CONSTANT(OBJECT_COUNT);
+ BIND_ENUM_CONSTANT(OBJECT_RESOURCE_COUNT);
+ BIND_ENUM_CONSTANT(OBJECT_NODE_COUNT);
+ BIND_ENUM_CONSTANT(RENDER_OBJECTS_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_VERTICES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_MATERIAL_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_SHADER_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_SURFACE_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_DRAW_CALLS_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_USAGE_VIDEO_MEM_TOTAL);
+ BIND_ENUM_CONSTANT(RENDER_VIDEO_MEM_USED);
+ BIND_ENUM_CONSTANT(RENDER_TEXTURE_MEM_USED);
+ BIND_ENUM_CONSTANT(RENDER_VERTEX_MEM_USED);
+ BIND_ENUM_CONSTANT(PHYSICS_2D_ACTIVE_OBJECTS);
+ BIND_ENUM_CONSTANT(PHYSICS_2D_COLLISION_PAIRS);
+ BIND_ENUM_CONSTANT(PHYSICS_2D_ISLAND_COUNT);
+ BIND_ENUM_CONSTANT(PHYSICS_3D_ACTIVE_OBJECTS);
+ BIND_ENUM_CONSTANT(PHYSICS_3D_COLLISION_PAIRS);
+ BIND_ENUM_CONSTANT(PHYSICS_3D_ISLAND_COUNT);
+
+ BIND_ENUM_CONSTANT(MONITOR_MAX);
}
String Performance::get_monitor_name(Monitor p_monitor) const {
@@ -125,9 +125,7 @@ float Performance::get_monitor(Monitor p_monitor) const {
case OBJECT_NODE_COUNT: {
MainLoop *ml = OS::get_singleton()->get_main_loop();
- if (!ml)
- return 0;
- SceneTree *sml = ml->cast_to<SceneTree>();
+ SceneTree *sml = Object::cast_to<SceneTree>(ml);
if (!sml)
return 0;
return sml->get_node_count();
diff --git a/main/performance.h b/main/performance.h
index 75583c6c38..a9e3c07d7c 100644
--- a/main/performance.h
+++ b/main/performance.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_containers.cpp b/main/tests/test_containers.cpp
deleted file mode 100644
index 956be5d169..0000000000
--- a/main/tests/test_containers.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*************************************************************************/
-/* test_containers.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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_containers.h"
-
-#include "dvector.h"
-#include "math_funcs.h"
-#include "print_string.h"
-#include "servers/visual/default_mouse_cursor.xpm"
-#include "set.h"
-
-#include "image.h"
-#include "list.h"
-#include "variant.h"
-
-namespace TestContainers {
-
-MainLoop *test() {
-
- /*
- HashMap<int,int> int_map;
-
- for (int i=0;i<68000;i++) {
-
- int num=(int)Math::random(0,1024);
- int_map[i]=num;
- }
- */
-
- {
-
- };
-
-#if 0
- Set<int> set;
-
- print_line("Begin Insert");
- for (int i=0;i<1100;i++) {
-
- int num=i;//(int)Math::random(0,1024);
- //print_line("inserting "+itos(num));
- set.insert( num );
- }
-
- /*
- for (int i=0;i<400;i++) {
-
- int num=(int)Math::random(0,1024);
- set.erase(num);
- }
- */
- //set.print_tree();
-
- for(Set<int>::Element *I=set.front();I;I=I->next()) {
-
- print_line("inserted "+itos(I->get())+" prev is "+itos(I->prev()?I->prev()->get():-100));
-
- }
-
- print_line("depth is "+itos(set.calculate_depth()));
- print_line("Insert Success");
-#endif
-
- return NULL;
-}
-}
diff --git a/main/tests/test_containers.h b/main/tests/test_containers.h
deleted file mode 100644
index 7b589d4057..0000000000
--- a/main/tests/test_containers.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*************************************************************************/
-/* test_containers.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 TEST_CONTAINERS_H
-#define TEST_CONTAINERS_H
-
-#include "os/main_loop.h"
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-
-namespace TestContainers {
-
-MainLoop *test();
-}
-
-#endif
diff --git a/main/tests/test_gdscript.cpp b/main/tests/test_gdscript.cpp
index 95147d8467..bcf4278bde 100644
--- a/main/tests/test_gdscript.cpp
+++ b/main/tests/test_gdscript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -911,7 +911,7 @@ static void _disassemble_class(const Ref<GDScript> &p_class, const Vector<String
}
}
-MainLoop *test(TestType p_test) {
+MainLoop *test(TestType p_type) {
List<String> cmdlargs = OS::get_singleton()->get_cmdline_args();
@@ -950,7 +950,7 @@ MainLoop *test(TestType p_test) {
}
}
- if (p_test == TEST_TOKENIZER) {
+ if (p_type == TEST_TOKENIZER) {
GDTokenizerText tk;
tk.set_code(code);
@@ -993,7 +993,7 @@ MainLoop *test(TestType p_test) {
}
}
- if (p_test == TEST_PARSER) {
+ if (p_type == TEST_PARSER) {
GDParser parser;
Error err = parser.parse(code);
@@ -1010,7 +1010,7 @@ MainLoop *test(TestType p_test) {
_parser_show_class(cnode, 0, lines);
}
- if (p_test == TEST_COMPILER) {
+ if (p_type == TEST_COMPILER) {
GDParser parser;
@@ -1044,7 +1044,7 @@ MainLoop *test(TestType p_test) {
current = current->get_base();
}
- } else if (p_test == TEST_BYTECODE) {
+ } else if (p_type == TEST_BYTECODE) {
Vector<uint8_t> buf = GDTokenizerBuffer::parse_code_string(code);
String dst = test.get_basename() + ".gdc";
@@ -1053,16 +1053,6 @@ MainLoop *test(TestType p_test) {
memdelete(fw);
}
-#if 0
- Parser parser;
- Error err = parser.parse(code);
- if (err) {
- print_line("error:"+itos(parser.get_error_line())+":"+itos(parser.get_error_column())+":"+parser.get_error());
- } else {
- print_line("Parse O-K!");
- }
-#endif
-
memdelete(fa);
return NULL;
@@ -1073,7 +1063,7 @@ MainLoop *test(TestType p_test) {
namespace TestGDScript {
-MainLoop *test(TestType p_test) {
+MainLoop *test(TestType p_type) {
return NULL;
}
diff --git a/main/tests/test_gdscript.h b/main/tests/test_gdscript.h
index b4e1665de5..f37b175913 100644
--- a/main/tests/test_gdscript.h
+++ b/main/tests/test_gdscript.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_gui.cpp b/main/tests/test_gui.cpp
index 3c6a708cd8..d9b2873d6b 100644
--- a/main/tests/test_gui.cpp
+++ b/main/tests/test_gui.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -70,32 +70,6 @@ public:
SceneTree::init();
-#if 0
-
-
- Viewport *vp = memnew( Viewport );
- vp->set_world( Ref<World>( memnew( World )));
- get_root()->add_child(vp);
-
- vp->set_rect(Rect2(0,0,256,256));
- vp->set_as_render_target(true);
- vp->set_render_target_update_mode(Viewport::RENDER_TARGET_UPDATE_ALWAYS);
-
-
- Camera *camera = memnew( Camera );
- vp->add_child(camera);
- camera->make_current();
-
- Sprite *sp = memnew( Sprite );
- sp->set_texture( vp->get_render_target_texture() );
- //sp->set_texture( ResourceLoader::load("res://ball.png") );
- sp->set_position(Point2(300,300));
- get_root()->add_child(sp);
-
-
- return;
-#endif
-
Panel *frame = memnew(Panel);
frame->set_anchor(MARGIN_RIGHT, Control::ANCHOR_END);
frame->set_anchor(MARGIN_BOTTOM, Control::ANCHOR_END);
@@ -111,7 +85,6 @@ public:
label->set_position(Point2(80, 90));
label->set_size(Point2(170, 80));
label->set_align(Label::ALIGN_FILL);
- //label->set_text("There");
label->set_text("There was once upon a time a beautiful unicorn that loved to play with little girls...");
frame->add_child(label);
@@ -124,25 +97,6 @@ public:
frame->add_child(button);
-#if 0
- Sprite *tf = memnew( Sprite );
- frame->add_child(tf);
- Image img;
- ImageLoader::load_image("LarvoClub.png",&img);
-
- img.resize(512,512);
- img.generate_mipmaps();
- img.compress(Image::COMPRESS_PVRTC4);
- Ref<ImageTexture> tt = memnew( ImageTexture );
- tt->create_from_image(img);
- tf->set_texture(tt);
- tf->set_position(Point2(50,50));
- //tf->set_scale(Point2(0.3,0.3));
-
-
- return;
-#endif
-
Tree *tree = memnew(Tree);
tree->set_columns(2);
@@ -182,9 +136,6 @@ public:
frame->add_child(tree);
- //control = memnew( Control );
- //root->add_child( control );
-
LineEdit *line_edit = memnew(LineEdit);
line_edit->set_position(Point2(30, 190));
@@ -244,41 +195,11 @@ public:
frame->add_child(options);
- /*
- Tree * tree = memnew( Tree );
- tree->set_columns(2);
-
- tree->set_position( Point2( 230,210 ) );
- tree->set_size( Point2( 150,250 ) );
-
-
- TreeItem *item = tree->create_item();
- item->set_editable(0,true);
- item->set_text(0,"root");
- item = tree->create_item( tree->get_root() );
- item->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
- item->set_editable(0,true);
- item->set_text(0,"check");
- item = tree->create_item( tree->get_root() );
- item->set_cell_mode(0, TreeItem::CELL_MODE_RANGE);
- item->set_editable(0,true);
- item->set_range_config(0,0,20,0.1);
- item->set_range(0,2);
- item->add_button(0,Theme::get_default()->get_icon("folder","FileDialog"));
- item = tree->create_item( tree->get_root() );
- item->set_cell_mode(0, TreeItem::CELL_MODE_RANGE);
- item->set_editable(0,true);
- item->set_text(0,"Have,Many,Several,Options!");
- item->set_range(0,2);
-
- frame->add_child(tree);
-*/
-
RichTextLabel *richtext = memnew(RichTextLabel);
richtext->set_position(Point2(600, 210));
richtext->set_size(Point2(180, 250));
- richtext->set_anchor_and_margin(MARGIN_RIGHT, Control::ANCHOR_END, 20);
+ richtext->set_anchor_and_margin(MARGIN_RIGHT, Control::ANCHOR_END, -20);
frame->add_child(richtext);
@@ -306,20 +227,10 @@ public:
richtext->add_text("keep writing a lot of text");
richtext->pop();
richtext->add_text(" so the label control overflows and the scrollbar appears.\n");
- //richtext->push_indent(1);
- //richtext->add_text("By the way, testing indent levels! Yohohoho! Everything should appear to the right sightly here!\n");
- //richtext->pop();
richtext->push_meta("http://www.scrollingcapabilities.xz");
richtext->add_text("This allows to test for the scrolling capabilities ");
richtext->pop();
richtext->add_text("of the rich text label for huge text (not like this text will really be huge but, you know).\nAs long as it is so long that it will work nicely for a test/demo, then it's welcomed in my book...\nChanging subject, the day is cloudy today and I'm wondering if I'll get che chance to travel somewhere nice. Sometimes, watching the clouds from satellite images may give a nice insight about how pressure zones in our planet work, althogh it also makes it pretty obvious to see why most weather forecasts get it wrong so often.\nClouds are so difficult to predict!\nBut it's pretty cool how our civilization has adapted to having water falling from the sky each time it rains...");
- //richtext->add_text("Hello!\nGorgeous..");
-
- //richtext->push_meta("http://www.scrollingcapabilities.xz");
- ///richtext->add_text("Hello!\n");
- //richtext->pop();
-
- richtext->set_anchor(MARGIN_RIGHT, Control::ANCHOR_END);
TabContainer *tabc = memnew(TabContainer);
@@ -348,21 +259,6 @@ public:
tabc->set_position(Point2(400, 210));
tabc->set_size(Point2(180, 250));
-
- /*Ref<ImageTexture> text = memnew( ImageTexture );
- text->load("test_data/concave.png");
-
- Sprite* sprite = memnew(Sprite);
- sprite->set_texture(text);
- sprite->set_position(Point2(300, 300));
- frame->add_child(sprite);
- sprite->show();
-
- Sprite* sprite2 = memnew(Sprite);
- sprite->set_texture(text);
- sprite->add_child(sprite2);
- sprite2->set_position(Point2(50, 50));
- sprite2->show();*/
}
};
diff --git a/main/tests/test_gui.h b/main/tests/test_gui.h
index 881ff96956..a5c5695980 100644
--- a/main/tests/test_gui.h
+++ b/main/tests/test_gui.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_image.cpp b/main/tests/test_image.cpp
index 0b120f87d5..b94d93b2b1 100644
--- a/main/tests/test_image.cpp
+++ b/main/tests/test_image.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_image.h b/main/tests/test_image.h
index 3b1783ded7..254bccea85 100644
--- a/main/tests/test_image.h
+++ b/main/tests/test_image.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_io.cpp b/main/tests/test_io.cpp
index f7c49c9249..f96c5cfe3c 100644
--- a/main/tests/test_io.cpp
+++ b/main/tests/test_io.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -112,66 +112,6 @@ MainLoop *test() {
FileAccess::make_default<FileAccessMemory>(FileAccess::ACCESS_USERDATA);
print_line("archive test");
-#if 0
- Archive arch;
-
- Archive::get_singleton()->add_package("a_package");
- FileAccessArchive f;
-
- print_line("opening for read");
- f._open("file.txt", FileAccess::READ);
- int pos = f.get_pos();
- printf("file has %i bytes, initial pos %i\n", (int)f.get_len(), pos);
-
- do {
- printf("%c", f.get_8());
-
- } while (!f.eof_reached());
-
- print_line("opening for stored seek");
- f.open("seek.bin", FileAccess::READ);
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- f.seek(128);
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
-
- print_line("opening for deflated seek");
- f.open("seek_deflated.bin", FileAccess::READ);
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- f.seek(128);
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- f.seek(256);
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- f.seek(4);
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
- pos = f.get_pos();
- printf("byte at pos %i is %i\n", pos, (int)f.get_8());
-
- f.close();
-
- DirAccessArchive d;
- String dir = "../blah1/blah2/blahask/../blah3/.//blah4/";
- printf("changing dir to %s\n", dir.utf8().get_data());
- d.change_dir(dir);
- printf("current dir is %s\n", d.get_current_dir().utf8().get_data());
-
- FileAccessMemory::cleanup();
-#endif
};
print_line("test done");
diff --git a/main/tests/test_io.h b/main/tests/test_io.h
index 765c083955..ffb834b894 100644
--- a/main/tests/test_io.h
+++ b/main/tests/test_io.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp
index f3ed4604e1..794bdb757b 100644
--- a/main/tests/test_main.cpp
+++ b/main/tests/test_main.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,19 +32,16 @@
#ifdef DEBUG_ENABLED
-#include "test_containers.h"
+#include "test_gdscript.h"
#include "test_gui.h"
+#include "test_image.h"
+#include "test_io.h"
#include "test_math.h"
#include "test_physics.h"
#include "test_physics_2d.h"
#include "test_render.h"
-#include "test_sound.h"
-#include "test_string.h"
-
-#include "test_gdscript.h"
-#include "test_image.h"
-#include "test_io.h"
#include "test_shader_lang.h"
+#include "test_string.h"
const char **tests_get_names() {
@@ -71,11 +68,6 @@ MainLoop *test_main(String p_test, const List<String> &p_args) {
return TestString::test();
}
- if (p_test == "containers") {
-
- return TestContainers::test();
- }
-
if (p_test == "math") {
return TestMath::test();
@@ -103,11 +95,6 @@ MainLoop *test_main(String p_test, const List<String> &p_args) {
}
#endif
- //if (p_test=="sound") {
-
- // return TestSound::test();
- //}
-
if (p_test == "io") {
return TestIO::test();
diff --git a/main/tests/test_main.h b/main/tests/test_main.h
index da890a4b96..0a50e3c7be 100644
--- a/main/tests/test_main.h
+++ b/main/tests/test_main.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_math.cpp b/main/tests/test_math.cpp
index d21be24dab..3ba8ef51b4 100644
--- a/main/tests/test_math.cpp
+++ b/main/tests/test_math.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -205,54 +205,12 @@ class GetClassAndNamespace {
case 'r':
res = 13;
break;
- /* too much, not needed for now
- case 'u': {
- //hexnumbarh - oct is deprecated
-
-
- for(int j=0;j<4;j++) {
- CharType c = code[idx+j+1];
- if (c==0) {
- r_err_str="Unterminated String";
- return ERR_PARSE_ERROR;
- }
- if (!((c>='0' && c<='9') || (c>='a' && c<='f') || (c>='A' && c<='F'))) {
-
- r_err_str="Malformed hex constant in string";
- return ERR_PARSE_ERROR;
- }
- CharType v;
- if (c>='0' && c<='9') {
- v=c-'0';
- } else if (c>='a' && c<='f') {
- v=c-'a';
- v+=10;
- } else if (c>='A' && c<='F') {
- v=c-'A';
- v+=10;
- } else {
- ERR_PRINT("BUG");
- v=0;
- }
-
- res<<=4;
- res|=v;
-
-
- }
- idx+=4; //will add at the end anyway
-
-
- } break;*/
case '\"': res = '\"'; break;
case '\\':
res = '\\';
break;
- //case '/': res='/'; break;
default: {
res = next;
- //r_err_str="Invalid escape sequence";
- //return ERR_PARSE_ERROR;
} break;
}
@@ -413,23 +371,6 @@ void test_vec(Plane p_vec) {
print_line("out: " + v0);
v0.normal.z = (v0.d / 100.0 * 2.0 - 1.0) * v0.d;
print_line("out_F: " + v0);
-
- /*v0: 0, 0, -0.1, 0.1
-v1: 0, 0, 0, 0.1
-fix: 0, 0, 0, 0.1
-v0: 0, 0, 1.302803, 1.5
-v1: 0, 0, 1.401401, 1.5
-fix: 0, 0, 1.401401, 1.5
-v0: 0, 0, 25.851850, 26
-v1: 0, 0, 25.925926, 26
-fix: 0, 0, 25.925924, 26
-v0: 0, 0, 49.899902, 50
-v1: 0, 0, 49.949947, 50
-fix: 0, 0, 49.949951, 50
-v0: 0, 0, 100, 100
-v1: 0, 0, 100, 100
-fix: 0, 0, 100, 100
-*/
}
uint32_t ihash(uint32_t a) {
@@ -469,10 +410,9 @@ MainLoop *test() {
const float pow2to9 = 512.0f;
const float B = 15.0f;
- //const float Emax = 31.0f;
const float N = 9.0f;
- float sharedexp = 65408.000f; //(( pow2to9 - 1.0f)/ pow2to9)*powf( 2.0f, 31.0f - 15.0f);
+ float sharedexp = 65408.000f;
float cRed = MAX(0.0f, MIN(sharedexp, r));
float cGreen = MAX(0.0f, MIN(sharedexp, g));
@@ -480,8 +420,6 @@ MainLoop *test() {
float cMax = MAX(cRed, MAX(cGreen, cBlue));
- // expp = MAX(-B - 1, log2(maxc)) + 1 + B
-
float expp = MAX(-B - 1.0f, floor(Math::log(cMax) / Math_LN2)) + 1.0f + B;
float sMax = (float)floor((cMax / Math::pow(2.0f, expp - B - N)) + 0.5f);
@@ -591,8 +529,6 @@ MainLoop *test() {
hashes.push_back(hashes.size());
}
- //hashes.resize(50);
-
for (int i = nearest_shift(hashes.size()); i < 20; i++) {
bool success = true;
@@ -625,7 +561,6 @@ MainLoop *test() {
}
{
- //print_line("NUM: "+itos(237641278346127));
print_line("NUM: " + itos(-128));
return NULL;
}
@@ -635,14 +570,12 @@ MainLoop *test() {
v.normalize();
float a = 0.3;
- //Quat q(v,a);
Basis m(v, a);
Vector3 v2(7, 3, 1);
v2.normalize();
float a2 = 0.8;
- //Quat q(v,a);
Basis m2(v2, a2);
Quat q = m;
@@ -749,86 +682,6 @@ MainLoop *test() {
print_line("scalar /=: " + v);
}
-#if 0
- print_line(String("C:\\momo\\.\\popo\\..\\gongo").simplify_path());
- print_line(String("res://../popo/..//gongo").simplify_path());
- print_line(String("res://..").simplify_path());
-
-
- PoolVector<uint8_t> a;
- PoolVector<uint8_t> b;
-
- a.resize(20);
- b=a;
- b.resize(30);
- a=b;
-#endif
-
-#if 0
- String za = String::utf8("á");
- printf("unicode: %x\n",za[0]);
- CharString cs=za.utf8();
- for(int i=0;i<cs.size();i++) {
- uint32_t v = uint8_t(cs[i]);
- printf("%i - %x\n",i,v);
- }
- return NULL;
-
- print_line(String("C:\\window\\system\\momo").path_to("C:\\window\\momonga"));
- print_line(String("res://momo/sampler").path_to("res://pindonga"));
- print_line(String("/margarito/terere").path_to("/margarito/pilates"));
- print_line(String("/algo").path_to("/algo"));
- print_line(String("c:").path_to("c:\\"));
- print_line(String("/").path_to("/"));
-
-
- print_line(itos(sizeof(Variant)));
- return NULL;
-
- Vector<StringName> path;
- path.push_back("three");
- path.push_back("two");
- path.push_back("one");
- path.push_back("comeon");
- path.revert();
-
- NodePath np(path,true);
-
- print_line(np);
-
-
- return NULL;
-
- bool a=2;
-
- print_line(Variant(a));
-
-
- Transform2D mat2_1;
- mat2_1.rotate(0.5);
- Transform2D mat2_2;
- mat2_2.translate(Vector2(1,2));
- Transform2D mat2_3 = mat2_1 * mat2_2;
- mat2_3.affine_invert();
-
- print_line(mat2_3.elements[0]);
- print_line(mat2_3.elements[1]);
- print_line(mat2_3.elements[2]);
-
-
-
- Transform mat3_1;
- mat3_1.basis.rotate(Vector3(0,0,1),0.5);
- Transform mat3_2;
- mat3_2.translate(Vector3(1,2,0));
- Transform mat3_3 = mat3_1 * mat3_2;
- mat3_3.affine_invert();
-
- print_line(mat3_3.basis.get_axis(0));
- print_line(mat3_3.basis.get_axis(1));
- print_line(mat3_3.origin);
-
-#endif
return NULL;
}
}
diff --git a/main/tests/test_math.h b/main/tests/test_math.h
index 24fd442dd0..a0328a14d0 100644
--- a/main/tests/test_math.h
+++ b/main/tests/test_math.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_physics.cpp b/main/tests/test_physics.cpp
index 5a233e818e..f149821928 100644
--- a/main/tests/test_physics.cpp
+++ b/main/tests/test_physics.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -71,7 +71,6 @@ class TestPhysicsMainLoop : public MainLoop {
PhysicsDirectBodyState *state = (PhysicsDirectBodyState *)p_state;
VisualServer *vs = VisualServer::get_singleton();
Transform t = state->get_transform();
- //t.basis.scale( Vector3(1.0,0.5,0.2) );
vs->instance_set_transform(p_visual_instance, t);
}
@@ -208,7 +207,6 @@ protected:
d[VS::ARRAY_VERTEX] = p_faces;
d[VS::ARRAY_NORMAL] = normals;
vs->mesh_add_surface_from_arrays(trimesh_mesh, VS::PRIMITIVE_TRIANGLES, d);
- //vs->material_set_flag( trimesh_mat, VisualServer::MATERIAL_FLAG_UNSHADED,true);
RID triins = vs->instance_create2(trimesh_mesh, scenario);
@@ -219,9 +217,6 @@ protected:
Transform tritrans = p_xform;
ps->body_set_state(tribody, PhysicsServer::BODY_STATE_TRANSFORM, tritrans);
vs->instance_set_transform(triins, tritrans);
- //RID trimesh_material = vs->fixed_material_create();
- //vs->material_generate( trimesh_material, Color(0.2,0.4,0.6) );
- //vs->mesh_surface_set_material( trimesh_mesh, 0, trimesh_material );
}
void make_grid(int p_width, int p_height, float p_cellsize, float p_cellheight, const Transform &p_xform = Transform()) {
@@ -305,7 +300,6 @@ public:
/* LIGHT */
RID lightaux = vs->light_create(VisualServer::LIGHT_DIRECTIONAL);
- //vs->light_set_color( lightaux, VisualServer::LIGHT_COLOR_AMBIENT, Color(0.0,0.0,0.0) );
scenario = vs->scenario_create();
vs->light_set_shadow(lightaux, true);
light = vs->instance_create2(lightaux, scenario);
@@ -327,100 +321,14 @@ public:
vs->camera_set_perspective(camera, 60, 0.1, 40.0);
vs->camera_set_transform(camera, Transform(Basis(), Vector3(0, 9, 12)));
- //vs->scenario_set_debug(scenario,VS::SCENARIO_DEBUG_WIREFRAME);
Transform gxf;
gxf.basis.scale(Vector3(1.4, 0.4, 1.4));
gxf.origin = Vector3(-2, 1, -2);
make_grid(5, 5, 2.5, 1, gxf);
- //create_body(PhysicsServer::SHAPE_BOX,PhysicsServer::BODY_MODE_STATIC,gxf);
- //create_static_plane( Plane( Vector3(0,1,0), -2) );
- //test_joint();
test_fall();
- //test_joint();
-
- /*
- Vector<Vector3> faces;
- faces.push_back( Vector3(10,0,-5) );
- faces.push_back( Vector3(0,0,10) );
- faces.push_back( Vector3(-10,-0.2,-5) );
- make_trimesh(faces);
-*/
- /* Make Trimesh */
quit = false;
return;
-
-#if 0
-#define GRID_SIZE 5
-
- float grid[GRID_SIZE][GRID_SIZE];
-
- for (int i=0;i<GRID_SIZE;i++) {
-
- for (int j=0;j<GRID_SIZE;j++) {
-
- grid[j][i]=Math::random(0.0, 1.0 );
- }
- }
-
- Vector<Vector3> faces;
-
- for (int i=1;i<GRID_SIZE;i++) {
-
- for (int j=1;j<GRID_SIZE;j++) {
-
-#define MAKE_VERTEX(m_x, m_z) \
- faces.push_back(Vector3(m_x - GRID_SIZE / 2.0, grid[m_x][m_z], m_z - GRID_SIZE / 2.0) * 3.0)
-
- MAKE_VERTEX(i,j-1);
- MAKE_VERTEX(i,j);
- MAKE_VERTEX(i-1,j);
-
- MAKE_VERTEX(i-1,j-1);
- MAKE_VERTEX(i,j-1);
- MAKE_VERTEX(i-1,j);
-
- }
- }
- /*
- faces.clear();
- faces.push_back( Vector3(0,0,-5) );
- faces.push_back( Vector3(1,0,-1) );
- faces.push_back( Vector3(-1,-0,-1) );
- */
-
- RID trimesh_shape = ps->shape_create();
- ps->shape_set_data(trimesh_shape, PhysicsServer::SHAPE_CONCAVE_POLYGON,faces);
- faces=ps->shape_get_shape(trimesh_shape, 0);
- Vector<Vector3> normals; // for drawing
- for (int i=0;i<faces.size()/3;i++) {
-
- Plane p( faces[i*3+0],faces[i*3+1], faces[i*3+2] );
- normals.push_back(p.normal);
- normals.push_back(p.normal);
- normals.push_back(p.normal);
- }
-
- RID trimesh_mesh = vs->mesh_create();
- vs->mesh_add_surface(trimesh_mesh, VS::PRIMITIVE_TRIANGLES, VS::ARRAY_FORMAT_VERTEX|VS::ARRAY_FORMAT_NORMAL, faces.size() );
- vs->mesh_surface_set_array(trimesh_mesh,0,VS::ARRAY_VERTEX, faces );
- vs->mesh_surface_set_array(trimesh_mesh,0,VS::ARRAY_NORMAL, normals );
- RID trimesh_mat = vs->fixed_material_create();
- vs->material_generate( trimesh_mat, Color(1.0,0.5,0.3) );
- vs->mesh_surface_set_material( trimesh_mesh, 0, trimesh_mat );
-
- RID triins = vs->instance_create2(trimesh_mesh);
-
-
-
- RID tribody = ps->body_create( PhysicsServer::BODY_MODE_STATIC, trimesh_shape);
- Transform tritrans = Transform( Basis(), Vector3(0,0,-2) );
- ps->body_set_state( tribody, PhysicsServer::BODY_STATE_TRANSFORM, tritrans );
- vs->instance_set_transform( triins, tritrans );
- RID trimesh_material = vs->fixed_material_create();
- vs->material_generate( trimesh_material, Color(0.2,0.4,0.6) );
- vs->mesh_surface_set_material( trimesh_mesh, 0, trimesh_material );
-#endif
}
virtual bool iteration(float p_time) {
@@ -445,58 +353,9 @@ public:
}
void test_joint() {
-#if 0
- PhysicsServer * ps = PhysicsServer::get_singleton();
-
- mover = create_body(PhysicsServer::SHAPE_BOX,PhysicsServer::BODY_MODE_STATIC,Transform(Basis(),Vector3(0,0,-24)));
- RID b = create_body(PhysicsServer::SHAPE_CAPSULE,PhysicsServer::BODY_MODE_RIGID,Transform());
-
- ps->joint_create_double_pin(b,Vector3(0,0,1.0),mover,Vector3(0,0,0));
- ps->body_add_collision_exception(mover,b);
-
-
- List<String> cmdline = OS::get_singleton()->get_cmdline_args();
- int link_count = LINK_COUNT;
- if (cmdline.size() > 0 && cmdline[cmdline.size()-1].to_int()) {
- link_count = cmdline[cmdline.size()-1].to_int();
- };
-
- for(int i=0;i<link_count;i++) {
-
- RID c = create_body(PhysicsServer::SHAPE_CAPSULE,PhysicsServer::BODY_MODE_RIGID,Transform());
- ps->joint_create_double_pin(b,Vector3(0,0,-0.7),c,Vector3(0,0,0.7));
- ps->body_add_collision_exception(c,b);
- b=c;
- }
-
-
- create_static_plane(Plane(Vector3(0,1,0),-8));
-#endif
}
void test_hinge() {
-#if 0
- PhysicsServer * ps = PhysicsServer::get_singleton();
-
-
- mover = create_body(PhysicsServer::SHAPE_BOX,PhysicsServer::BODY_MODE_STATIC,Transform(Basis(),Vector3(0,0,-24)));
- RID b = create_body(PhysicsServer::SHAPE_BOX,PhysicsServer::BODY_MODE_RIGID,Transform());
-
- ps->joint_create_double_hinge(b,Transform(Basis(),Vector3(1,1,1.0)),mover,Transform(Basis(),Vector3(0,0,0)));
- ps->body_add_collision_exception(mover,b);
-
-/*
- for(int i=0;i<20;i++) {
-
- RID c = create_body(PhysicsServer::SHAPE_CAPSULE,PhysicsServer::BODY_MODE_RIGID,Transform());
- ps->joint_create_double_hinge(b,Transform(Basis(),Vector3(0,0,-0.7)),c,Transform(Basis(),Vector3(0,0,0.7)));
- ps->body_add_collision_exception(c,b);
- b=c;
- }
-
-*/
- //create_static_plane(Plane(Vector3(0,1,0),-8));
-#endif
}
void test_character() {
@@ -544,35 +403,21 @@ public:
};
PhysicsServer::ShapeType type = shape_idx[i % 4];
- //type=PhysicsServer::SHAPE_CONVEX_POLYGON;
Transform t;
t.origin = Vector3(0.0 * i, 3.5 + 1.1 * i, 0.7 + 0.0 * i);
- //t.origin=Vector3(-0.7+0.0*i,0.5+4.1*i,0);
t.basis.rotate(Vector3(0.2, -1, 0), Math_PI / 2 * 0.6);
- //t.basis.rotate(Vector3(0,-1,0),Math_PI/4*i);
- //t.basis.rotate(Vector3(0,-1,0),Math_PI/4*i);
- //t.basis.rotate(Vector3(-1,0,0),Math_PI/4*i);
create_body(type, PhysicsServer::BODY_MODE_RIGID, t);
- //RID b = create_body(type,i==0?PhysicsServer::BODY_MODE_STATIC:PhysicsServer::BODY_MODE_RIGID,t);
}
create_static_plane(Plane(Vector3(0, 1, 0), -1));
-
- /*
- create_static_plane( Plane( Vector3(1,0,0), -2) );
- create_static_plane( Plane( Vector3(-1,0,0), -2) );
- create_static_plane( Plane( Vector3(0,0,1), -2) );
- create_static_plane( Plane( Vector3(0,0,-1), -2) );
-*/
}
void test_activate() {
create_body(PhysicsServer::SHAPE_BOX, PhysicsServer::BODY_MODE_RIGID, Transform(Basis(), Vector3(0, 2, 0)), true);
- //create_body(PhysicsServer::SHAPE_SPHERE,PhysicsServer::BODY_MODE_RIGID,Transform(Basis(),Vector3(0,6,0)),true);
create_static_plane(Plane(Vector3(0, 1, 0), -1));
}
diff --git a/main/tests/test_physics.h b/main/tests/test_physics.h
index 9c9f2fa883..166bc87b4b 100644
--- a/main/tests/test_physics.h
+++ b/main/tests/test_physics.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_physics_2d.cpp b/main/tests/test_physics_2d.cpp
index 2c9b51aadb..a746973799 100644
--- a/main/tests/test_physics_2d.cpp
+++ b/main/tests/test_physics_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_physics_2d.h b/main/tests/test_physics_2d.h
index e2022cb1f9..572429185f 100644
--- a/main/tests/test_physics_2d.h
+++ b/main/tests/test_physics_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_render.cpp b/main/tests/test_render.cpp
index 74f7453d1b..1f6217928d 100644
--- a/main/tests/test_render.cpp
+++ b/main/tests/test_render.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_render.h b/main/tests/test_render.h
index d7849c45ca..84b882de06 100644
--- a/main/tests/test_render.h
+++ b/main/tests/test_render.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_shader_lang.cpp b/main/tests/test_shader_lang.cpp
index dc581a71e2..ddb2ed5e75 100644
--- a/main/tests/test_shader_lang.cpp
+++ b/main/tests/test_shader_lang.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -37,7 +37,6 @@
#include "scene/gui/control.h"
#include "scene/gui/text_edit.h"
#include "servers/visual/shader_language.h"
-//#include "drivers/gles2/shader_compiler_gles2.h"
typedef ShaderLanguage SL;
@@ -56,8 +55,6 @@ static String _mktab(int p_level) {
static String _typestr(SL::DataType p_type) {
return ShaderLanguage::get_datatype_name(p_type);
-
- return "";
}
static String _prestr(SL::DataPrecision p_pres) {
@@ -319,8 +316,9 @@ MainLoop *test() {
SL sl;
print_line("tokens:\n\n" + sl.token_debug(code));
- Map<StringName, Map<StringName, SL::DataType> > dt;
- dt["fragment"]["ALBEDO"] = SL::TYPE_VEC3;
+ Map<StringName, SL::FunctionInfo> dt;
+ dt["fragment"].built_ins["ALBEDO"] = SL::TYPE_VEC3;
+ dt["fragment"].can_discard = true;
Set<String> rm;
rm.insert("popo");
diff --git a/main/tests/test_shader_lang.h b/main/tests/test_shader_lang.h
index 7d871b72e7..203f3ffa87 100644
--- a/main/tests/test_shader_lang.h
+++ b/main/tests/test_shader_lang.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_sound.cpp b/main/tests/test_sound.cpp
deleted file mode 100644
index d8737f6c8d..0000000000
--- a/main/tests/test_sound.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************/
-/* test_sound.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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_sound.h"
-#include "math_funcs.h"
-#include "os/main_loop.h"
-#include "servers/visual_server.h"
-
-#include "io/resource_loader.h"
-#include "os/os.h"
-#include "print_string.h"
-#include "servers/audio_server.h"
-
-#if 0
-namespace TestSound {
-
-
-class TestMainLoop : public MainLoop {
-
- bool quit;
- Ref<Sample> sample;
-
-public:
- virtual void input_event(const InputEvent& p_event) {
-
-
- }
- virtual void request_quit() {
-
- quit=true;
- }
-
- virtual void init() {
-
- List<String> cmdline = OS::get_singleton()->get_cmdline_args();
- quit=false;
- if (cmdline.size()) {
-
- sample=ResourceLoader::load(cmdline.back()->get());
- ERR_FAIL_COND(sample.is_null());
- print_line("Sample loaded OK");
- }
-
- RID voice = AudioServer::get_singleton()->voice_create();
- AudioServer::get_singleton()->voice_play( voice, sample->get_rid() );
-
-
- }
-
- virtual bool idle(float p_time) {
- return false;
- }
-
-
- virtual bool iteration(float p_time) {
-
- return quit;
- }
- virtual void finish() {
-
- }
-
-};
-
-
-MainLoop* test() {
-
- return memnew( TestMainLoop );
-
-}
-
-}
-#endif
diff --git a/main/tests/test_sound.h b/main/tests/test_sound.h
deleted file mode 100644
index f55f25fa18..0000000000
--- a/main/tests/test_sound.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*************************************************************************/
-/* test_sound.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 TEST_SOUND_H
-#define TEST_SOUND_H
-
-#include "os/main_loop.h"
-
-namespace TestSound {
-
-MainLoop *test();
-}
-
-#endif // TEST_SOUND_H
diff --git a/main/tests/test_string.cpp b/main/tests/test_string.cpp
index 5531b71c96..88d7702acc 100644
--- a/main/tests/test_string.cpp
+++ b/main/tests/test_string.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -802,7 +802,6 @@ bool test_28() {
bool test_29() {
bool state = true;
- bool success = false;
IP_Address ip0("2001:0db8:85a3:0000:0000:8a2e:0370:7334");
OS::get_singleton()->print("ip0 is %ls\n", String(ip0).c_str());
@@ -817,7 +816,7 @@ bool test_29() {
OS::get_singleton()->print("ip6 is %ls\n", String(ip3).c_str());
String ip4 = "192.168.0.1";
- success = ip4.is_valid_ip_address();
+ bool success = ip4.is_valid_ip_address();
OS::get_singleton()->print("Is valid ipv4: %ls, %s\n", ip4.c_str(), success ? "OK" : "FAIL");
if (!success) state = false;
diff --git a/main/tests/test_string.h b/main/tests/test_string.h
index 1060adbc8d..9c97b13626 100644
--- a/main/tests/test_string.h
+++ b/main/tests/test_string.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/methods.py b/methods.py
index 30a1f3caed..ec7e658a3b 100644
--- a/methods.py
+++ b/methods.py
@@ -1,4 +1,5 @@
import os
+from compat import iteritems
def add_source_files(self, sources, filetype, lib_env=None, shared=False):
@@ -21,7 +22,7 @@ def add_source_files(self, sources, filetype, lib_env=None, shared=False):
def build_shader_header(target, source, env):
for x in source:
- print x
+ print(x)
name = str(x)
name = name[name.rfind("/") + 1:]
@@ -704,11 +705,11 @@ def include_file_in_legacygl_header(filename, header_data, depth):
if (not included_file in header_data.vertex_included_files and header_data.reading == "vertex"):
header_data.vertex_included_files += [included_file]
if(include_file_in_legacygl_header(included_file, header_data, depth + 1) == None):
- print "Error in file '" + filename + "': #include " + includeline + "could not be found!"
+ print("Error in file '" + filename + "': #include " + includeline + "could not be found!")
elif (not included_file in header_data.fragment_included_files and header_data.reading == "fragment"):
header_data.fragment_included_files += [included_file]
if(include_file_in_legacygl_header(included_file, header_data, depth + 1) == None):
- print "Error in file '" + filename + "': #include " + includeline + "could not be found!"
+ print("Error in file '" + filename + "': #include " + includeline + "could not be found!")
line = fs.readline()
@@ -1145,12 +1146,6 @@ def build_legacygl_headers(target, source, env):
return 0
-def build_gles2_headers(target, source, env):
-
- for x in source:
- build_legacygl_header(str(x), include="drivers/gles2/shader_gles2.h", class_suffix="GLES2", output_attribs=True)
-
-
def build_gles3_headers(target, source, env):
for x in source:
@@ -1166,7 +1161,7 @@ def update_version():
print("Using custom revision: " + rev)
import version
- f = open("core/version_generated.gen.h", "wb")
+ f = open("core/version_generated.gen.h", "w")
f.write("#define VERSION_SHORT_NAME " + str(version.short_name) + "\n")
f.write("#define VERSION_NAME " + str(version.name) + "\n")
f.write("#define VERSION_MAJOR " + str(version.major) + "\n")
@@ -1179,14 +1174,14 @@ def update_version():
f.write("#define VERSION_YEAR " + str(datetime.datetime.now().year) + "\n")
f.close()
- fhash = open("core/version_hash.gen.h", "wb")
+ fhash = open("core/version_hash.gen.h", "w")
githash = ""
if os.path.isfile(".git/HEAD"):
- head = open(".git/HEAD", "rb").readline().strip()
+ head = open(".git/HEAD", "r").readline().strip()
if head.startswith("ref: "):
head = ".git/" + head[5:]
if os.path.isfile(head):
- githash = open(head, "rb").readline().strip()
+ githash = open(head, "r").readline().strip()
else:
githash = head
fhash.write("#define VERSION_HASH \"" + githash + "\"")
@@ -1314,7 +1309,7 @@ void unregister_module_types() {
"""
- f = open("modules/register_module_types.gen.cpp", "wb")
+ f = open("modules/register_module_types.gen.cpp", "w")
f.write(modules_cpp)
return module_list
@@ -1334,9 +1329,9 @@ def win32_spawn(sh, escape, cmd, args, env):
data, err = proc.communicate()
rv = proc.wait()
if rv:
- print "====="
- print err
- print "====="
+ print("=====")
+ print(err)
+ print("=====")
return rv
"""
@@ -1410,17 +1405,17 @@ def android_add_default_config(self, config):
def android_add_to_manifest(self, file):
base_path = self.Dir(".").abspath + "/modules/" + self.current_module + "/" + file
- f = open(base_path, "rb")
+ f = open(base_path, "r")
self.android_manifest_chunk += f.read()
def android_add_to_permissions(self, file):
base_path = self.Dir(".").abspath + "/modules/" + self.current_module + "/" + file
- f = open(base_path, "rb")
+ f = open(base_path, "r")
self.android_permission_chunk += f.read()
def android_add_to_attributes(self, file):
base_path = self.Dir(".").abspath + "/modules/" + self.current_module + "/" + file
- f = open(base_path, "rb")
+ f = open(base_path, "r")
self.android_appattributes_chunk += f.read()
def disable_module(self):
@@ -1455,9 +1450,9 @@ def use_windows_spawn_fix(self, platform=None):
data, err = proc.communicate()
rv = proc.wait()
if rv:
- print "====="
- print err
- print "====="
+ print("=====")
+ print(err)
+ print("=====")
return rv
def mySpawn(sh, escape, cmd, args, env):
@@ -1466,7 +1461,7 @@ def use_windows_spawn_fix(self, platform=None):
cmdline = cmd + " " + newargs
rv = 0
- env = {str(key): str(value) for key, value in env.iteritems()}
+ env = {str(key): str(value) for key, value in iteritems(env)}
if len(cmdline) > 32000 and cmd.endswith("ar"):
cmdline = cmd + " " + args[1] + " " + args[2] + " "
for i in range(3, len(args)):
@@ -1546,7 +1541,7 @@ def save_active_platforms(apnames, ap):
str += "};\n"
wf = x + "/" + name + ".gen.h"
- pngw = open(wf, "wb")
+ pngw = open(wf, "w")
pngw.write(str)
@@ -1614,7 +1609,7 @@ def detect_visual_c_compiler_version(tools_env):
# Start with Pre VS 2017 checks which uses VCINSTALLDIR:
if 'VCINSTALLDIR' in tools_env:
- # print "Checking VCINSTALLDIR"
+ # print("Checking VCINSTALLDIR")
# find() works with -1 so big ifs bellow are needed... the simplest solution, in fact
# First test if amd64 and amd64_x86 compilers are present in the path
@@ -1647,7 +1642,7 @@ def detect_visual_c_compiler_version(tools_env):
# and for VS 2017 and newer we check VCTOOLSINSTALLDIR:
if 'VCTOOLSINSTALLDIR' in tools_env:
- # print "Checking VCTOOLSINSTALLDIR"
+ # print("Checking VCTOOLSINSTALLDIR")
# Newer versions have a different path available
vc_amd64_compiler_detection_index = tools_env["PATH"].upper().find(tools_env['VCTOOLSINSTALLDIR'].upper() + "BIN\\HOSTX64\\X64;")
@@ -1677,14 +1672,67 @@ def detect_visual_c_compiler_version(tools_env):
vc_chosen_compiler_str = "x86_amd64"
# debug help
- # print vc_amd64_compiler_detection_index
- # print vc_amd64_x86_compiler_detection_index
- # print vc_x86_compiler_detection_index
- # print vc_x86_amd64_compiler_detection_index
- # print "chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str)
+ # print(vc_amd64_compiler_detection_index)
+ # print(vc_amd64_x86_compiler_detection_index)
+ # print(vc_x86_compiler_detection_index)
+ # print(vc_x86_amd64_compiler_detection_index)
+ # print("chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str))
return vc_chosen_compiler_str
+def find_visual_c_batch_file(env):
+ from SCons.Tool.MSCommon.vc import get_default_version, get_host_target, find_batch_file
+
+ version = get_default_version(env)
+ (host_platform, target_platform,req_target_platform) = get_host_target(env)
+ return find_batch_file(env, version, host_platform, target_platform)[0]
+
+
+def generate_vs_project(env, num_jobs):
+ batch_file = find_visual_c_batch_file(env)
+ if batch_file:
+ def build_commandline(commands):
+ common_build_prefix = ['cmd /V /C set "plat=$(PlatformTarget)"',
+ '(if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64"))',
+ 'set "tools=yes"',
+ '(if "$(Configuration)"=="release" (set "tools=no"))',
+ 'call "' + batch_file + '" !plat!']
+
+ result = " ^& ".join(common_build_prefix + [commands])
+ # print("Building commandline: ", result)
+ return result
+
+ env.AddToVSProject(env.core_sources)
+ env.AddToVSProject(env.main_sources)
+ env.AddToVSProject(env.modules_sources)
+ env.AddToVSProject(env.scene_sources)
+ env.AddToVSProject(env.servers_sources)
+ env.AddToVSProject(env.editor_sources)
+
+ env['MSVSBUILDCOM'] = build_commandline('scons platform=windows target=$(Configuration) tools=!tools! -j' + str(num_jobs))
+ env['MSVSREBUILDCOM'] = build_commandline('scons platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j' + str(num_jobs))
+ env['MSVSCLEANCOM'] = build_commandline('scons --clean platform=windows target=$(Configuration) tools=!tools! -j' + str(num_jobs))
+
+ # This version information (Win32, x64, Debug, Release, Release_Debug seems to be
+ # required for Visual Studio to understand that it needs to generate an NMAKE
+ # project. Do not modify without knowing what you are doing.
+ debug_variants = ['debug|Win32'] + ['debug|x64']
+ release_variants = ['release|Win32'] + ['release|x64']
+ release_debug_variants = ['release_debug|Win32'] + ['release_debug|x64']
+ variants = debug_variants + release_variants + release_debug_variants
+ debug_targets = ['bin\\godot.windows.tools.32.exe'] + ['bin\\godot.windows.tools.64.exe']
+ release_targets = ['bin\\godot.windows.opt.32.exe'] + ['bin\\godot.windows.opt.64.exe']
+ release_debug_targets = ['bin\\godot.windows.opt.tools.32.exe'] + ['bin\\godot.windows.opt.tools.64.exe']
+ targets = debug_targets + release_targets + release_debug_targets
+ msvproj = env.MSVSProject(target=['#godot' + env['MSVSPROJECTSUFFIX']],
+ incs=env.vs_incs,
+ srcs=env.vs_srcs,
+ runfile=targets,
+ buildtarget=targets,
+ auto_build_solution=1,
+ variant=variants)
+ else:
+ print("Could not locate Visual Studio batch file for setting up the build environment. Not generating VS project.")
def precious_program(env, program, sources, **args):
program = env.ProgramOriginal(program, sources, **args)
diff --git a/misc/dist/ios_xcode/godot_ios/main.m b/misc/dist/ios_xcode/godot_ios/main.m
index ad53cf7fea..bb63364d8f 100644
--- a/misc/dist/ios_xcode/godot_ios/main.m
+++ b/misc/dist/ios_xcode/godot_ios/main.m
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/misc/scripts/addheader.py b/misc/scripts/addheader.py
index acb517b5bd..3f8b75ebcd 100644
--- a/misc/scripts/addheader.py
+++ b/misc/scripts/addheader.py
@@ -4,7 +4,7 @@ header = """\
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/dds/register_types.cpp b/modules/dds/register_types.cpp
index 4a758fe033..22fb391b9a 100644
--- a/modules/dds/register_types.cpp
+++ b/modules/dds/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/dds/register_types.h b/modules/dds/register_types.h
index 4807c7dd5b..e48d56c898 100644
--- a/modules/dds/register_types.h
+++ b/modules/dds/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/dds/texture_loader_dds.cpp b/modules/dds/texture_loader_dds.cpp
index 71593ebfa9..95d93e6af6 100644
--- a/modules/dds/texture_loader_dds.cpp
+++ b/modules/dds/texture_loader_dds.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/dds/texture_loader_dds.h b/modules/dds/texture_loader_dds.h
index 3b36e7f1eb..c545d210b4 100644
--- a/modules/dds/texture_loader_dds.h
+++ b/modules/dds/texture_loader_dds.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp
index 68d5c9e611..c50886ad3c 100644
--- a/modules/enet/networked_multiplayer_enet.cpp
+++ b/modules/enet/networked_multiplayer_enet.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -658,11 +658,11 @@ void NetworkedMultiplayerENet::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_compression_mode"), &NetworkedMultiplayerENet::get_compression_mode);
ClassDB::bind_method(D_METHOD("set_bind_ip", "ip"), &NetworkedMultiplayerENet::set_bind_ip);
- BIND_CONSTANT(COMPRESS_NONE);
- BIND_CONSTANT(COMPRESS_RANGE_CODER);
- BIND_CONSTANT(COMPRESS_FASTLZ);
- BIND_CONSTANT(COMPRESS_ZLIB);
- BIND_CONSTANT(COMPRESS_ZSTD);
+ BIND_ENUM_CONSTANT(COMPRESS_NONE);
+ BIND_ENUM_CONSTANT(COMPRESS_RANGE_CODER);
+ BIND_ENUM_CONSTANT(COMPRESS_FASTLZ);
+ BIND_ENUM_CONSTANT(COMPRESS_ZLIB);
+ BIND_ENUM_CONSTANT(COMPRESS_ZSTD);
}
NetworkedMultiplayerENet::NetworkedMultiplayerENet() {
diff --git a/modules/enet/networked_multiplayer_enet.h b/modules/enet/networked_multiplayer_enet.h
index 8b971adf55..81d517147d 100644
--- a/modules/enet/networked_multiplayer_enet.h
+++ b/modules/enet/networked_multiplayer_enet.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -113,7 +113,7 @@ public:
virtual int get_packet_peer() const;
- Error create_server(int p_port, int p_max_peers = 32, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
+ Error create_server(int p_port, int p_max_clients = 32, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
Error create_client(const IP_Address &p_ip, int p_port, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
void close_connection();
diff --git a/modules/enet/register_types.cpp b/modules/enet/register_types.cpp
index a6e6c87c14..316aca6d94 100644
--- a/modules/enet/register_types.cpp
+++ b/modules/enet/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/enet/register_types.h b/modules/enet/register_types.h
index 9bcb35a92b..0775044bc7 100644
--- a/modules/enet/register_types.h
+++ b/modules/enet/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/etc/SCsub b/modules/etc/SCsub
index 8f5937017e..f0c1ee64b9 100644
--- a/modules/etc/SCsub
+++ b/modules/etc/SCsub
@@ -35,3 +35,7 @@ env_etc.add_source_files(env.modules_sources, "*.cpp")
# upstream uses c++11
env_etc.Append(CXXFLAGS="-std=gnu++11")
+# -ffast-math seems to be incompatible with ec2comp on recent versions of
+# GCC and Clang
+if '-ffast-math' in env_etc['CCFLAGS']:
+ env_etc['CCFLAGS'].remove('-ffast-math')
diff --git a/modules/etc/image_etc.cpp b/modules/etc/image_etc.cpp
index 353bd1274a..9a15beb6eb 100644
--- a/modules/etc/image_etc.cpp
+++ b/modules/etc/image_etc.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -118,7 +118,7 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
}
int imgw = p_img->get_width(), imgh = p_img->get_height();
- ERR_FAIL_COND(nearest_power_of_2(imgw) != imgw || nearest_power_of_2(imgh) != imgh);
+ ERR_FAIL_COND(next_power_of_2(imgw) != imgw || next_power_of_2(imgh) != imgh);
Image::Format etc_format = force_etc1_format ? Image::FORMAT_ETC : _get_etc2_mode(detected_channels);
diff --git a/modules/etc/image_etc.h b/modules/etc/image_etc.h
index 3cbadef6fa..8cc0bdc08f 100644
--- a/modules/etc/image_etc.h
+++ b/modules/etc/image_etc.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/etc/register_types.cpp b/modules/etc/register_types.cpp
index e777859a8f..ef0a403e90 100644
--- a/modules/etc/register_types.cpp
+++ b/modules/etc/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/etc/register_types.h b/modules/etc/register_types.h
index 44399376f3..1d9a0e3b2c 100644
--- a/modules/etc/register_types.h
+++ b/modules/etc/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/etc/texture_loader_pkm.cpp b/modules/etc/texture_loader_pkm.cpp
index c04528d2a0..e8a5aced3e 100644
--- a/modules/etc/texture_loader_pkm.cpp
+++ b/modules/etc/texture_loader_pkm.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/etc/texture_loader_pkm.h b/modules/etc/texture_loader_pkm.h
index 8a0f06a51a..667870d7cc 100644
--- a/modules/etc/texture_loader_pkm.h
+++ b/modules/etc/texture_loader_pkm.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/freetype/SCsub b/modules/freetype/SCsub
index 6a89e8e087..f22df4407c 100644
--- a/modules/freetype/SCsub
+++ b/modules/freetype/SCsub
@@ -1,6 +1,7 @@
#!/usr/bin/env python
Import('env')
+from compat import isbasestring
# Not building in a separate env as scene needs it
@@ -74,7 +75,7 @@ if (env['builtin_freetype'] != 'no'):
# and then plain strings for system library. We insert between the two.
inserted = False
for idx, linklib in enumerate(env["LIBS"]):
- if isinstance(linklib, basestring): # first system lib such as "X11", otherwise SCons lib object
+ if isbasestring(linklib): # first system lib such as "X11", otherwise SCons lib object
env["LIBS"].insert(idx, lib)
inserted = True
break
diff --git a/modules/freetype/register_types.cpp b/modules/freetype/register_types.cpp
index 3f290c2138..de6e73a55e 100644
--- a/modules/freetype/register_types.cpp
+++ b/modules/freetype/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/freetype/register_types.h b/modules/freetype/register_types.h
index c3ba324ed1..ed8b5656b6 100644
--- a/modules/freetype/register_types.h
+++ b/modules/freetype/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/freetype/uwpdef.h b/modules/freetype/uwpdef.h
index c29b14dd12..ecde9946c7 100644
--- a/modules/freetype/uwpdef.h
+++ b/modules/freetype/uwpdef.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp
index 440cc45479..7faf21c5a1 100644
--- a/modules/gdnative/gdnative.cpp
+++ b/modules/gdnative/gdnative.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -229,7 +229,7 @@ bool GDNative::initialize() {
godot_gdnative_init_options options;
- options.in_editor = SceneTree::get_singleton()->is_editor_hint();
+ options.in_editor = Engine::get_singleton()->is_editor_hint();
options.core_api_hash = ClassDB::get_api_hash(ClassDB::API_CORE);
options.editor_api_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR);
options.no_api_hash = ClassDB::get_api_hash(ClassDB::API_NONE);
@@ -247,9 +247,8 @@ bool GDNative::terminate() {
return false;
}
- Error error = OK;
void *library_terminate;
- error = OS::get_singleton()->get_dynamic_library_symbol_handle(
+ Error error = OS::get_singleton()->get_dynamic_library_symbol_handle(
native_handle,
terminate_symbol,
library_terminate);
@@ -265,7 +264,7 @@ bool GDNative::terminate() {
// TODO(karroffel): remove this? Should be part of NativeScript, not
// GDNative IMO
godot_gdnative_terminate_options options;
- options.in_editor = SceneTree::get_singleton()->is_editor_hint();
+ options.in_editor = Engine::get_singleton()->is_editor_hint();
library_terminate_pointer(&options);
diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h
index b03866f432..bec746a441 100644
--- a/modules/gdnative/gdnative.h
+++ b/modules/gdnative/gdnative.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -137,7 +137,7 @@ public:
bool initialize();
bool terminate();
- Variant call_native(StringName p_call_type, StringName p_procedure_name, Array p_arguments = Array());
+ Variant call_native(StringName p_native_call_type, StringName p_procedure_name, Array p_arguments = Array());
void call_native_raw(StringName p_raw_call_type, StringName p_procedure_name, void *data, int num_args, void **args, void *r_return);
};
diff --git a/modules/gdnative/godot/array.cpp b/modules/gdnative/godot/array.cpp
index 97c73dc253..c15ba30ca2 100644
--- a/modules/gdnative/godot/array.cpp
+++ b/modules/gdnative/godot/array.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/array.h b/modules/gdnative/godot/array.h
index 158170ba0e..434ce958c9 100644
--- a/modules/gdnative/godot/array.h
+++ b/modules/gdnative/godot/array.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/basis.cpp b/modules/gdnative/godot/basis.cpp
index 5cf379b7d5..1d7aa18a70 100644
--- a/modules/gdnative/godot/basis.cpp
+++ b/modules/gdnative/godot/basis.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -107,24 +107,6 @@ godot_basis GDAPI godot_basis_scaled(const godot_basis *p_self, const godot_vect
return dest;
}
-void GDAPI godot_basis_set_scale(godot_basis *p_self, const godot_vector3 *p_scale) {
- Basis *self = (Basis *)p_self;
- const Vector3 *scale = (const Vector3 *)p_scale;
- self->set_scale(*scale);
-}
-
-void GDAPI godot_basis_set_rotation_euler(godot_basis *p_self, const godot_vector3 *p_euler) {
- Basis *self = (Basis *)p_self;
- const Vector3 *euler = (const Vector3 *)p_euler;
- self->set_rotation_euler(*euler);
-}
-
-void GDAPI godot_basis_set_rotation_axis_angle(godot_basis *p_self, const godot_vector3 *p_axis, const godot_real p_angle) {
- Basis *self = (Basis *)p_self;
- const Vector3 *axis = (const Vector3 *)p_axis;
- self->set_rotation_axis_angle(*axis, p_angle);
-}
-
godot_vector3 GDAPI godot_basis_get_scale(const godot_basis *p_self) {
godot_vector3 dest;
const Basis *self = (const Basis *)p_self;
diff --git a/modules/gdnative/godot/basis.h b/modules/gdnative/godot/basis.h
index e96b8b730d..f36d2199de 100644
--- a/modules/gdnative/godot/basis.h
+++ b/modules/gdnative/godot/basis.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -67,12 +67,6 @@ godot_basis GDAPI godot_basis_rotated(const godot_basis *p_self, const godot_vec
godot_basis GDAPI godot_basis_scaled(const godot_basis *p_self, const godot_vector3 *p_scale);
-void GDAPI godot_basis_set_scale(godot_basis *p_self, const godot_vector3 *p_scale);
-
-void GDAPI godot_basis_set_rotation_euler(godot_basis *p_self, const godot_vector3 *p_euler);
-
-void GDAPI godot_basis_set_rotation_axis_angle(godot_basis *p_self, const godot_vector3 *p_axis, const godot_real p_angle);
-
godot_vector3 GDAPI godot_basis_get_scale(const godot_basis *p_self);
godot_vector3 GDAPI godot_basis_get_euler(const godot_basis *p_self);
diff --git a/modules/gdnative/godot/color.cpp b/modules/gdnative/godot/color.cpp
index a5ffee1e0b..3677fdc265 100644
--- a/modules/gdnative/godot/color.cpp
+++ b/modules/gdnative/godot/color.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/color.h b/modules/gdnative/godot/color.h
index 2cd6b48b48..5d550e40b3 100644
--- a/modules/gdnative/godot/color.h
+++ b/modules/gdnative/godot/color.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/dictionary.cpp b/modules/gdnative/godot/dictionary.cpp
index b92c8125bb..2996cc78a3 100644
--- a/modules/gdnative/godot/dictionary.cpp
+++ b/modules/gdnative/godot/dictionary.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,7 +30,7 @@
#include <godot/dictionary.h>
#include "core/variant.h"
-
+// core/variant.h before to avoid compile errors with MSVC
#include "core/dictionary.h"
#include "core/io/json.h"
diff --git a/modules/gdnative/godot/dictionary.h b/modules/gdnative/godot/dictionary.h
index 594b02b4dd..bbe40f23c3 100644
--- a/modules/gdnative/godot/dictionary.h
+++ b/modules/gdnative/godot/dictionary.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/gdnative.cpp b/modules/gdnative/godot/gdnative.cpp
index 4cda1f4560..7cd52da34d 100644
--- a/modules/gdnative/godot/gdnative.cpp
+++ b/modules/gdnative/godot/gdnative.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/gdnative.h b/modules/gdnative/godot/gdnative.h
index d849999079..8b289da1f5 100644
--- a/modules/gdnative/godot/gdnative.h
+++ b/modules/gdnative/godot/gdnative.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/node_path.cpp b/modules/gdnative/godot/node_path.cpp
index f4179361be..2309588a81 100644
--- a/modules/gdnative/godot/node_path.cpp
+++ b/modules/gdnative/godot/node_path.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/node_path.h b/modules/gdnative/godot/node_path.h
index 4d3dc4e0ee..3e2a99e461 100644
--- a/modules/gdnative/godot/node_path.h
+++ b/modules/gdnative/godot/node_path.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/plane.cpp b/modules/gdnative/godot/plane.cpp
index 5c5b302345..f3d4b6971e 100644
--- a/modules/gdnative/godot/plane.cpp
+++ b/modules/gdnative/godot/plane.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/plane.h b/modules/gdnative/godot/plane.h
index 8519ac60c4..27548c8b0c 100644
--- a/modules/gdnative/godot/plane.h
+++ b/modules/gdnative/godot/plane.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/pool_arrays.cpp b/modules/gdnative/godot/pool_arrays.cpp
index fa460be8bc..2e533077f6 100644
--- a/modules/gdnative/godot/pool_arrays.cpp
+++ b/modules/gdnative/godot/pool_arrays.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/pool_arrays.h b/modules/gdnative/godot/pool_arrays.h
index 29517d21ac..ecd85ddfe8 100644
--- a/modules/gdnative/godot/pool_arrays.h
+++ b/modules/gdnative/godot/pool_arrays.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/quat.cpp b/modules/gdnative/godot/quat.cpp
index 37ee4d6b15..e6bea78b60 100644
--- a/modules/gdnative/godot/quat.cpp
+++ b/modules/gdnative/godot/quat.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/quat.h b/modules/gdnative/godot/quat.h
index 0979653d93..9a3238a337 100644
--- a/modules/gdnative/godot/quat.h
+++ b/modules/gdnative/godot/quat.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/rect2.cpp b/modules/gdnative/godot/rect2.cpp
index 023584c4f6..98e7855dc9 100644
--- a/modules/gdnative/godot/rect2.cpp
+++ b/modules/gdnative/godot/rect2.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/rect2.h b/modules/gdnative/godot/rect2.h
index cb1ddb58cf..8ceeddf1b4 100644
--- a/modules/gdnative/godot/rect2.h
+++ b/modules/gdnative/godot/rect2.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/rect3.cpp b/modules/gdnative/godot/rect3.cpp
index 708d2987f2..88952ab49c 100644
--- a/modules/gdnative/godot/rect3.cpp
+++ b/modules/gdnative/godot/rect3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/rect3.h b/modules/gdnative/godot/rect3.h
index 69279351c4..ca96aadd5c 100644
--- a/modules/gdnative/godot/rect3.h
+++ b/modules/gdnative/godot/rect3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/rid.cpp b/modules/gdnative/godot/rid.cpp
index eb9538e692..51c8aaa1b3 100644
--- a/modules/gdnative/godot/rid.cpp
+++ b/modules/gdnative/godot/rid.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -50,7 +50,7 @@ godot_int GDAPI godot_rid_get_id(const godot_rid *p_self) {
}
void GDAPI godot_rid_new_with_resource(godot_rid *r_dest, const godot_object *p_from) {
- const Resource *res_from = ((const Object *)p_from)->cast_to<Resource>();
+ const Resource *res_from = Object::cast_to<Resource>((Object *)p_from);
godot_rid_new(r_dest);
if (res_from) {
RID *dest = (RID *)r_dest;
diff --git a/modules/gdnative/godot/rid.h b/modules/gdnative/godot/rid.h
index ac5b5383d9..b685157cec 100644
--- a/modules/gdnative/godot/rid.h
+++ b/modules/gdnative/godot/rid.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/string.cpp b/modules/gdnative/godot/string.cpp
index 76cf1fba12..3790b6ea95 100644
--- a/modules/gdnative/godot/string.cpp
+++ b/modules/gdnative/godot/string.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -63,13 +63,13 @@ void GDAPI godot_string_new_unicode_data(godot_string *r_dest, const wchar_t *p_
memnew_placement(dest, String(p_contents, p_size));
}
-void GDAPI godot_string_get_data(const godot_string *p_self, char *r_dest, int *p_size) {
+void GDAPI godot_string_get_data(const godot_string *p_self, char *p_dest, int *p_size) {
String *self = (String *)p_self;
if (p_size != NULL) {
*p_size = self->utf8().length();
}
- if (r_dest != NULL) {
- memcpy(r_dest, self->utf8().get_data(), *p_size);
+ if (p_dest != NULL) {
+ memcpy(p_dest, self->utf8().get_data(), *p_size);
}
}
@@ -277,11 +277,11 @@ godot_int GDAPI godot_string_hex_to_int_without_prefix(const godot_string *p_sel
return self->hex_to_int(true);
}
-godot_string GDAPI godot_string_insert(const godot_string *p_self, godot_int at_pos, godot_string p_content) {
+godot_string GDAPI godot_string_insert(const godot_string *p_self, godot_int p_at_pos, godot_string p_string) {
const String *self = (const String *)p_self;
- String *content = (String *)&p_content;
+ String *content = (String *)&p_string;
godot_string result;
- memnew_placement(&result, String(self->insert(at_pos, *content)));
+ memnew_placement(&result, String(self->insert(p_at_pos, *content)));
return result;
}
diff --git a/modules/gdnative/godot/string.h b/modules/gdnative/godot/string.h
index bfe66aa5ec..f41626faa1 100644
--- a/modules/gdnative/godot/string.h
+++ b/modules/gdnative/godot/string.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -83,8 +83,8 @@ godot_int GDAPI godot_string_findmk_from_in_place(const godot_string *p_self, co
godot_int GDAPI godot_string_findn(const godot_string *p_self, godot_string p_what);
godot_int GDAPI godot_string_findn_from(const godot_string *p_self, godot_string p_what, godot_int p_from);
godot_int GDAPI find_last(const godot_string *p_self, godot_string p_what);
-godot_string GDAPI godot_string_format(const godot_string *p_self, const godot_variant *values);
-godot_string GDAPI godot_string_format_with_custom_placeholder(const godot_string *p_self, const godot_variant *values, const char *placeholder);
+godot_string GDAPI godot_string_format(const godot_string *p_self, const godot_variant *p_values);
+godot_string GDAPI godot_string_format_with_custom_placeholder(const godot_string *p_self, const godot_variant *p_values, const char *p_placeholder);
godot_string GDAPI godot_string_hex_encode_buffer(const uint8_t *p_buffer, godot_int p_len);
godot_int GDAPI godot_string_hex_to_int(const godot_string *p_self);
godot_int GDAPI godot_string_hex_to_int_without_prefix(const godot_string *p_self);
@@ -172,7 +172,7 @@ void GDAPI godot_string_utf8(godot_string *p_self, char *result);
godot_bool GDAPI godot_string_parse_utf8(godot_string *p_self, const char *p_utf8);
godot_bool GDAPI godot_string_parse_utf8_with_len(godot_string *p_self, const char *p_utf8, godot_int p_len);
godot_string GDAPI godot_string_chars_to_utf8(const char *p_utf8);
-godot_string GDAPI godot_string_chars_utf8_with_len(const char *p_utf8, godot_int p_len);
+godot_string GDAPI godot_string_chars_to_utf8_with_len(const char *p_utf8, godot_int p_len);
uint32_t GDAPI godot_string_hash(const godot_string *p_self);
uint64_t GDAPI godot_string_hash64(const godot_string *p_self);
diff --git a/modules/gdnative/godot/transform.cpp b/modules/gdnative/godot/transform.cpp
index 87fee918bd..a965067b77 100644
--- a/modules/gdnative/godot/transform.cpp
+++ b/modules/gdnative/godot/transform.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/transform.h b/modules/gdnative/godot/transform.h
index 30b9970f67..60788e3d57 100644
--- a/modules/gdnative/godot/transform.h
+++ b/modules/gdnative/godot/transform.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/transform2d.cpp b/modules/gdnative/godot/transform2d.cpp
index 65f9f8ee32..9fc44ecdfa 100644
--- a/modules/gdnative/godot/transform2d.cpp
+++ b/modules/gdnative/godot/transform2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/transform2d.h b/modules/gdnative/godot/transform2d.h
index 41c8ba982c..c0f5725eed 100644
--- a/modules/gdnative/godot/transform2d.h
+++ b/modules/gdnative/godot/transform2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/variant.cpp b/modules/gdnative/godot/variant.cpp
index d814ef913c..582544b3a0 100644
--- a/modules/gdnative/godot/variant.cpp
+++ b/modules/gdnative/godot/variant.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/variant.h b/modules/gdnative/godot/variant.h
index 1c19d2a25b..fda24db8d4 100644
--- a/modules/gdnative/godot/variant.h
+++ b/modules/gdnative/godot/variant.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/vector2.cpp b/modules/gdnative/godot/vector2.cpp
index 05d4b1acc8..78ed5f06a9 100644
--- a/modules/gdnative/godot/vector2.cpp
+++ b/modules/gdnative/godot/vector2.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/vector2.h b/modules/gdnative/godot/vector2.h
index 9db238b4fd..98e9700e32 100644
--- a/modules/gdnative/godot/vector2.h
+++ b/modules/gdnative/godot/vector2.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/vector3.cpp b/modules/gdnative/godot/vector3.cpp
index fe27e740e2..5faeac2864 100644
--- a/modules/gdnative/godot/vector3.cpp
+++ b/modules/gdnative/godot/vector3.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/godot/vector3.h b/modules/gdnative/godot/vector3.h
index 8aba1d9a85..b76ca11a9c 100644
--- a/modules/gdnative/godot/vector3.h
+++ b/modules/gdnative/godot/vector3.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp
index da50104e26..9ad05b7194 100644
--- a/modules/gdnative/register_types.cpp
+++ b/modules/gdnative/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/register_types.h b/modules/gdnative/register_types.h
index 48e778cb2c..08da72016f 100644
--- a/modules/gdnative/register_types.h
+++ b/modules/gdnative/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdscript/gd_compiler.cpp b/modules/gdscript/gd_compiler.cpp
index d4ede4cb17..4803781c67 100644
--- a/modules/gdscript/gd_compiler.cpp
+++ b/modules/gdscript/gd_compiler.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -1451,15 +1451,13 @@ Error GDCompiler::_parse_function(GDScript *p_script, const GDParser::ClassNode
codegen.opcodes.push_back(GDFunction::OPCODE_END);
- GDFunction *gdfunc = NULL;
-
/*
if (String(p_func->name)=="") { //initializer func
gdfunc = &p_script->initializer;
*/
//} else { //regular func
p_script->member_functions[func_name] = memnew(GDFunction);
- gdfunc = p_script->member_functions[func_name];
+ GDFunction *gdfunc = p_script->member_functions[func_name];
//}
if (p_func) {
@@ -1973,7 +1971,7 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa
p_script->placeholders.erase(psi); //remove placeholder
GDInstance *instance = memnew(GDInstance);
- instance->base_ref = E->get()->cast_to<Reference>();
+ instance->base_ref = Object::cast_to<Reference>(E->get());
instance->members.resize(p_script->member_indices.size());
instance->script = Ref<GDScript>(p_script);
instance->owner = E->get();
diff --git a/modules/gdscript/gd_compiler.h b/modules/gdscript/gd_compiler.h
index b7ff092eba..ac713ae75b 100644
--- a/modules/gdscript/gd_compiler.h
+++ b/modules/gdscript/gd_compiler.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -91,7 +91,6 @@ class GDCompiler {
}
}
- //int get_identifier_pos(const StringName& p_dentifier) const;
HashMap<Variant, int, VariantHasher, VariantComparator> constant_map;
Map<StringName, int> name_map;
@@ -127,17 +126,6 @@ class GDCompiler {
int call_max;
};
-#if 0
- void _create_index(const GDParser::OperatorNode *on);
- void _create_call(const GDParser::OperatorNode *on);
-
-
- int _parse_expression(const GDParser::Node *p_expr,CodeGen& codegen);
- void _parse_block(GDParser::BlockNode *p_block);
- void _parse_function(GDParser::FunctionNode *p_func);
- Ref<GDScript> _parse_class(GDParser::ClassNode *p_class);
-#endif
-
bool _is_class_member_property(CodeGen &codegen, const StringName &p_name);
bool _is_class_member_property(GDScript *owner, const StringName &p_name);
@@ -146,7 +134,6 @@ class GDCompiler {
bool _create_unary_operator(CodeGen &codegen, const GDParser::OperatorNode *on, Variant::Operator op, int p_stack_level);
bool _create_binary_operator(CodeGen &codegen, const GDParser::OperatorNode *on, Variant::Operator op, int p_stack_level, bool p_initializer = false);
- //int _parse_subexpression(CodeGen& codegen,const GDParser::BlockNode *p_block,const GDParser::Node *p_expression);
int _parse_assign_right_expression(CodeGen &codegen, const GDParser::OperatorNode *p_expression, int p_stack_level);
int _parse_expression(CodeGen &codegen, const GDParser::Node *p_expression, int p_stack_level, bool p_root = false, bool p_initializer = false);
Error _parse_block(CodeGen &codegen, const GDParser::BlockNode *p_block, int p_stack_level = 0, int p_break_addr = -1, int p_continue_addr = -1);
diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp
index f8b45af85a..70e7da5748 100644
--- a/modules/gdscript/gd_editor.cpp
+++ b/modules/gdscript/gd_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,14 +27,18 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+#include "gd_script.h"
+
#include "editor/editor_settings.h"
#include "gd_compiler.h"
-#include "gd_script.h"
+#include "global_constants.h"
#include "os/file_access.h"
#include "project_settings.h"
+
#ifdef TOOLS_ENABLED
#include "editor/editor_file_system.h"
#include "editor/editor_settings.h"
+#include "engine.h"
#endif
void GDScriptLanguage::get_comment_delimiters(List<String> *p_delimiters) const {
@@ -293,23 +297,25 @@ void GDScriptLanguage::get_public_functions(List<MethodInfo> *p_functions) const
//not really "functions", but..
{
MethodInfo mi;
- mi.name = "preload:Resource";
+ mi.name = "preload";
mi.arguments.push_back(PropertyInfo(Variant::STRING, "path"));
mi.return_val = PropertyInfo(Variant::OBJECT, "", PROPERTY_HINT_RESOURCE_TYPE, "Resource");
p_functions->push_back(mi);
}
{
MethodInfo mi;
- mi.name = "yield:GDFunctionState";
+ mi.name = "yield";
mi.arguments.push_back(PropertyInfo(Variant::OBJECT, "object"));
mi.arguments.push_back(PropertyInfo(Variant::STRING, "signal"));
mi.default_arguments.push_back(Variant::NIL);
mi.default_arguments.push_back(Variant::STRING);
+ mi.return_val = PropertyInfo(Variant::OBJECT, "", PROPERTY_HINT_RESOURCE_TYPE, "GDFunctionState");
p_functions->push_back(mi);
}
{
MethodInfo mi;
mi.name = "assert";
+ mi.return_val.type = Variant::NIL;
mi.arguments.push_back(PropertyInfo(Variant::BOOL, "condition"));
p_functions->push_back(mi);
}
@@ -354,13 +360,14 @@ String GDScriptLanguage::make_function(const String &p_class, const String &p_na
struct GDCompletionIdentifier {
+ String enumeration;
StringName obj_type;
Ref<GDScript> script;
Variant::Type type;
Variant value; //im case there is a value, also return it
};
-static GDCompletionIdentifier _get_type_from_variant(const Variant &p_variant) {
+static GDCompletionIdentifier _get_type_from_variant(const Variant &p_variant, bool p_allow_gdnative_class = false) {
GDCompletionIdentifier t;
t.type = p_variant.get_type();
@@ -368,14 +375,14 @@ static GDCompletionIdentifier _get_type_from_variant(const Variant &p_variant) {
if (p_variant.get_type() == Variant::OBJECT) {
Object *obj = p_variant;
if (obj) {
- /*
- if (obj->cast_to<GDNativeClass>()) {
- t.obj_type=obj->cast_to<GDNativeClass>()->get_name();
- t.value=Variant();
+
+ if (p_allow_gdnative_class && Object::cast_to<GDNativeClass>(obj)) {
+ t.obj_type = Object::cast_to<GDNativeClass>(obj)->get_name();
+ t.value = Variant();
} else {
- */
- t.obj_type = obj->get_class();
- //}
+
+ t.obj_type = obj->get_class();
+ }
}
}
return t;
@@ -508,9 +515,9 @@ static GDCompletionIdentifier _get_native_class(GDCompletionContext &context) {
return id;
}
-static bool _guess_identifier_type(GDCompletionContext &context, int p_line, const StringName &p_identifier, GDCompletionIdentifier &r_type);
+static bool _guess_identifier_type(GDCompletionContext &context, int p_line, const StringName &p_identifier, GDCompletionIdentifier &r_type, bool p_for_indexing);
-static bool _guess_expression_type(GDCompletionContext &context, const GDParser::Node *p_node, int p_line, GDCompletionIdentifier &r_type) {
+static bool _guess_expression_type(GDCompletionContext &context, const GDParser::Node *p_node, int p_line, GDCompletionIdentifier &r_type, bool p_for_indexing = false) {
if (p_node->type == GDParser::Node::TYPE_CONSTANT) {
@@ -561,7 +568,7 @@ static bool _guess_expression_type(GDCompletionContext &context, const GDParser:
return true;
} else if (p_node->type == GDParser::Node::TYPE_IDENTIFIER) {
- return _guess_identifier_type(context, p_line - 1, static_cast<const GDParser::IdentifierNode *>(p_node)->name, r_type);
+ return _guess_identifier_type(context, p_line - 1, static_cast<const GDParser::IdentifierNode *>(p_node)->name, r_type, p_for_indexing);
} else if (p_node->type == GDParser::Node::TYPE_SELF) {
//eeh...
@@ -572,6 +579,7 @@ static bool _guess_expression_type(GDCompletionContext &context, const GDParser:
const GDParser::OperatorNode *op = static_cast<const GDParser::OperatorNode *>(p_node);
if (op->op == GDParser::OperatorNode::OP_CALL) {
+
if (op->arguments[0]->type == GDParser::Node::TYPE_TYPE) {
const GDParser::TypeNode *tn = static_cast<const GDParser::TypeNode *>(op->arguments[0]);
@@ -584,22 +592,45 @@ static bool _guess_expression_type(GDCompletionContext &context, const GDParser:
} else if (op->arguments.size() > 1 && op->arguments[1]->type == GDParser::Node::TYPE_IDENTIFIER) {
+ StringName id = static_cast<const GDParser::IdentifierNode *>(op->arguments[1])->name;
+
+ if (op->arguments[0]->type == GDParser::Node::TYPE_IDENTIFIER && String(id) == "new") {
+
+ //shortcut
+ StringName identifier = static_cast<const GDParser::IdentifierNode *>(op->arguments[0])->name;
+
+ if (ClassDB::class_exists(identifier)) {
+ r_type.type = Variant::OBJECT;
+ r_type.value = Variant();
+ r_type.obj_type = identifier;
+ return true;
+ }
+ }
+
GDCompletionIdentifier base;
if (!_guess_expression_type(context, op->arguments[0], p_line, base))
return false;
- StringName id = static_cast<const GDParser::IdentifierNode *>(op->arguments[1])->name;
-
if (base.type == Variant::OBJECT) {
if (id.operator String() == "new" && base.value.get_type() == Variant::OBJECT) {
+
Object *obj = base.value;
- if (obj && obj->cast_to<GDNativeClass>()) {
- GDNativeClass *gdnc = obj->cast_to<GDNativeClass>();
+ if (obj && Object::cast_to<GDNativeClass>(obj)) {
+ GDNativeClass *gdnc = Object::cast_to<GDNativeClass>(obj);
r_type.type = Variant::OBJECT;
r_type.value = Variant();
r_type.obj_type = gdnc->get_name();
return true;
+ } else {
+
+ if (base.obj_type != StringName()) {
+
+ r_type.type = Variant::OBJECT;
+ r_type.value = Variant();
+ r_type.obj_type = base.obj_type;
+ return true;
+ }
}
}
@@ -607,7 +638,7 @@ static bool _guess_expression_type(GDCompletionContext &context, const GDParser:
#ifdef TOOLS_ENABLED
MethodBind *mb = ClassDB::get_method(base.obj_type, id);
- PropertyInfo pi = mb->get_argument_info(-1);
+ PropertyInfo pi = mb->get_return_info();
//try calling the function if constant and all args are constant, should not crash..
Object *baseptr = base.value;
@@ -808,6 +839,47 @@ static bool _guess_expression_type(GDCompletionContext &context, const GDParser:
if (p1.value.get_type() == Variant::OBJECT) {
//??
+
+ if (p1.obj_type != StringName() && p2.type == Variant::STRING) {
+
+ StringName base_type = p1.obj_type;
+
+ if (p1.obj_type == "GDNativeClass") {
+ //native enum
+ Ref<GDNativeClass> gdn = p1.value;
+ if (gdn.is_valid()) {
+
+ base_type = gdn->get_name();
+ }
+ }
+ StringName index = p2.value;
+ bool valid;
+ Variant::Type t = ClassDB::get_property_type(base_type, index, &valid);
+ if (t != Variant::NIL && valid) {
+ r_type.type = t;
+ if (t == Variant::INT || t == Variant::OBJECT) {
+//check for enum!
+#if defined(DEBUG_METHODS_ENABLED) && defined(TOOLS_ENABLED)
+
+ StringName getter = ClassDB::get_property_getter(base_type, index);
+ if (getter != StringName()) {
+ MethodBind *mb = ClassDB::get_method(base_type, getter);
+ if (mb) {
+ PropertyInfo rt = mb->get_return_info();
+ if (rt.usage & PROPERTY_USAGE_CLASS_IS_ENUM && t == Variant::INT) {
+ r_type.enumeration = rt.class_name;
+ } else if (t == Variant::OBJECT) {
+
+ r_type.obj_type = rt.class_name;
+ }
+ }
+ }
+#endif
+ }
+
+ return true;
+ }
+ }
} else if (p1.value.get_type() != Variant::NIL) {
bool valid;
@@ -901,12 +973,42 @@ static bool _guess_expression_type(GDCompletionContext &context, const GDParser:
static bool _guess_identifier_type_in_block(GDCompletionContext &context, int p_line, const StringName &p_identifier, GDCompletionIdentifier &r_type) {
+ if (context.block->if_condition && context.block->if_condition->type == GDParser::Node::TYPE_OPERATOR && static_cast<const GDParser::OperatorNode *>(context.block->if_condition)->op == GDParser::OperatorNode::OP_IS) {
+ //is used, check if identifier is in there! this helps resolve in blocks that are (if (identifier is value)): which are very common..
+ //super dirty hack, but very useful
+ //credit: Zylann
+ //TODO: this could be hacked to detect ANDed conditions too..
+ const GDParser::OperatorNode *op = static_cast<const GDParser::OperatorNode *>(context.block->if_condition);
+ if (op->arguments[0]->type == GDParser::Node::TYPE_IDENTIFIER && static_cast<const GDParser::IdentifierNode *>(op->arguments[0])->name == p_identifier) {
+ //bingo
+ if (_guess_expression_type(context, op->arguments[1], op->line, r_type)) {
+ return true;
+ }
+ }
+ }
+
GDCompletionIdentifier gdi = _get_native_class(context);
if (gdi.obj_type != StringName()) {
bool valid;
Variant::Type t = ClassDB::get_property_type(gdi.obj_type, p_identifier, &valid);
if (t != Variant::NIL && valid) {
r_type.type = t;
+ if (t == Variant::INT) {
+//check for enum!
+#if defined(DEBUG_METHODS_ENABLED) && defined(TOOLS_ENABLED)
+
+ StringName getter = ClassDB::get_property_getter(gdi.obj_type, p_identifier);
+ if (getter != StringName()) {
+ MethodBind *mb = ClassDB::get_method(gdi.obj_type, getter);
+ if (mb) {
+ PropertyInfo rt = mb->get_return_info();
+ if (rt.usage & PROPERTY_USAGE_CLASS_IS_ENUM) {
+ r_type.enumeration = rt.class_name;
+ }
+ }
+ }
+#endif
+ }
return true;
}
}
@@ -996,7 +1098,7 @@ static bool _guess_identifier_from_assignment_in_function(GDCompletionContext &c
return false;
}
-static bool _guess_identifier_type(GDCompletionContext &context, int p_line, const StringName &p_identifier, GDCompletionIdentifier &r_type) {
+static bool _guess_identifier_type(GDCompletionContext &context, int p_line, const StringName &p_identifier, GDCompletionIdentifier &r_type, bool p_for_indexing) {
//go to block first
@@ -1040,11 +1142,11 @@ static bool _guess_identifier_type(GDCompletionContext &context, int p_line, con
PropertyInfo arg = E->get().arguments[argindex];
- int scp = arg.name.find(":");
+ int scp = String(arg.name).find(":");
if (scp != -1) {
r_type.type = Variant::OBJECT;
- r_type.obj_type = arg.name.substr(scp + 1, arg.name.length());
+ r_type.obj_type = String(arg.name).substr(scp + 1, String(arg.name).length());
return true;
} else {
@@ -1150,7 +1252,7 @@ static bool _guess_identifier_type(GDCompletionContext &context, int p_line, con
for (Map<StringName, int>::Element *E = GDScriptLanguage::get_singleton()->get_global_map().front(); E; E = E->next()) {
if (E->key() == p_identifier) {
- r_type = _get_type_from_variant(GDScriptLanguage::get_singleton()->get_global_array()[E->get()]);
+ r_type = _get_type_from_variant(GDScriptLanguage::get_singleton()->get_global_array()[E->get()], !p_for_indexing);
return true;
}
}
@@ -1270,7 +1372,7 @@ static void _find_identifiers_in_class(GDCompletionContext &context, bool p_stat
for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
if (E->get().usage & (PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY))
continue;
- if (E->get().name.find("/") != -1)
+ if (String(E->get().name).find("/") != -1)
continue;
result.insert(E->get().name);
}
@@ -1435,7 +1537,7 @@ void get_directory_contents(EditorFileSystemDirectory *p_dir, Set<String> &r_lis
}
}
-static void _find_type_arguments(GDCompletionContext &context, const GDParser::Node *p_node, int p_line, const StringName &p_method, const GDCompletionIdentifier &id, int p_argidx, Set<String> &result, String &arghint) {
+static void _find_type_arguments(GDCompletionContext &context, const GDParser::Node *p_node, int p_line, const StringName &p_method, const GDCompletionIdentifier &id, int p_argidx, Set<String> &result, bool &r_forced, String &arghint) {
//print_line("find type arguments?");
if (id.type == Variant::OBJECT && id.obj_type != StringName()) {
@@ -1450,46 +1552,45 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
if (id.value.get_type()) {
Object *obj = id.value;
- if (obj) {
-
- GDScript *scr = obj->cast_to<GDScript>();
- if (scr) {
- while (scr) {
+ GDScript *scr = Object::cast_to<GDScript>(obj);
+ if (scr) {
+ while (scr) {
- for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
- if (E->get()->is_static() && p_method == E->get()->get_name()) {
- arghint = "static func " + String(p_method) + "(";
- for (int i = 0; i < E->get()->get_argument_count(); i++) {
- if (i > 0)
- arghint += ", ";
- else
- arghint += " ";
- if (i == p_argidx) {
- arghint += String::chr(0xFFFF);
- }
- arghint += "var " + E->get()->get_argument_name(i);
- int deffrom = E->get()->get_argument_count() - E->get()->get_default_argument_count();
- if (i >= deffrom) {
- int defidx = deffrom - i;
- if (defidx >= 0 && defidx < E->get()->get_default_argument_count()) {
- arghint += "=" + E->get()->get_default_argument(defidx).get_construct_string();
- }
- }
- if (i == p_argidx) {
- arghint += String::chr(0xFFFF);
+ for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
+ if (E->get()->is_static() && p_method == E->get()->get_name()) {
+ arghint = "static func " + String(p_method) + "(";
+ for (int i = 0; i < E->get()->get_argument_count(); i++) {
+ if (i > 0)
+ arghint += ", ";
+ else
+ arghint += " ";
+ if (i == p_argidx) {
+ arghint += String::chr(0xFFFF);
+ }
+ arghint += "var " + E->get()->get_argument_name(i);
+ int deffrom = E->get()->get_argument_count() - E->get()->get_default_argument_count();
+ if (i >= deffrom) {
+ int defidx = deffrom - i;
+ if (defidx >= 0 && defidx < E->get()->get_default_argument_count()) {
+ arghint += "=" + E->get()->get_default_argument(defidx).get_construct_string();
}
}
- arghint += ")";
- return; //found
+ if (i == p_argidx) {
+ arghint += String::chr(0xFFFF);
+ }
}
+ arghint += ")";
+ return; //found
}
-
- if (scr->get_base().is_valid())
- scr = scr->get_base().ptr();
- else
- scr = NULL;
}
- } else {
+
+ if (scr->get_base().is_valid())
+ scr = scr->get_base().ptr();
+ else
+ scr = NULL;
+ }
+ } else {
+ if (obj) {
on_script = obj->get_script();
}
}
@@ -1615,21 +1716,6 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
return; //found
}
}
-#if 0
- //use class directly, no code was found
- if (!isfunction) {
- for (const Map<StringName,Variant>::Element *E=scr->get_constants().front();E;E=E->next()) {
- options.insert(E->key());
- }
- }
- for (const Map<StringName,GDFunction>::Element *E=scr->get_member_functions().front();E;E=E->next()) {
- options.insert(String(E->key())+"(");
- }
-
- for (const Set<StringName>::Element *E=scr->get_members().front();E;E=E->next()) {
- options.insert(E->get());
- }
-#endif
}
if (scr->get_base().is_valid())
@@ -1641,8 +1727,43 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
}
} else {
- //regular method
+//regular method
+#if defined(DEBUG_METHODS_ENABLED) && defined(TOOLS_ENABLED)
+ if (p_argidx < m->get_argument_count()) {
+ PropertyInfo pi = m->get_argument_info(p_argidx);
+
+ if (pi.usage & PROPERTY_USAGE_CLASS_IS_ENUM) {
+ String enumeration = pi.class_name;
+ if (enumeration.find(".") != -1) {
+ //class constant
+ List<StringName> constants;
+ String cls = enumeration.get_slice(".", 0);
+ String enm = enumeration.get_slice(".", 1);
+
+ ClassDB::get_enum_constants(cls, enm, &constants);
+ //constants.sort_custom<StringName::AlphCompare>();
+ for (List<StringName>::Element *E = constants.front(); E; E = E->next()) {
+ String add = cls + "." + E->get();
+ result.insert(add);
+ r_forced = true;
+ }
+ } else {
+
+ //global constant
+ StringName current_enum = enumeration;
+
+ for (int i = 0; i < GlobalConstants::get_global_constant_count(); i++) {
+ if (GlobalConstants::get_global_constant_enum(i) == current_enum) {
+ result.insert(GlobalConstants::get_global_constant_name(i));
+ r_forced = true;
+ }
+ }
+ //global
+ }
+ }
+ }
+#endif
if (p_method.operator String() == "connect" || (p_method.operator String() == "emit_signal" && p_argidx == 0)) {
if (p_argidx == 0) {
@@ -1663,6 +1784,7 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
for (List<MethodInfo>::Element *E = sigs.front(); E; E = E->next()) {
result.insert("\"" + E->get().name + "\"");
+ r_forced = true;
}
} else if (p_argidx == 2) {
@@ -1670,6 +1792,7 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
if (context._class) {
for (int i = 0; i < context._class->functions.size(); i++) {
result.insert("\"" + context._class->functions[i]->name + "\"");
+ r_forced = true;
}
}
}
@@ -1695,6 +1818,7 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
//print_line("found "+s);
String name = s.get_slice("/", 1);
result.insert("\"/root/" + name + "\"");
+ r_forced = true;
}
}
@@ -1706,11 +1830,12 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
for (List<String>::Element *E = options.front(); E; E = E->next()) {
result.insert(E->get());
+ r_forced = true;
}
}
}
- arghint = _get_visual_datatype(m->get_argument_info(-1), false) + " " + p_method.operator String() + String("(");
+ arghint = _get_visual_datatype(m->get_return_info(), false) + " " + p_method.operator String() + String("(");
for (int i = 0; i < m->get_argument_count(); i++) {
if (i > 0)
@@ -1749,7 +1874,7 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
}
}
-static void _find_call_arguments(GDCompletionContext &context, const GDParser::Node *p_node, int p_line, int p_argidx, Set<String> &result, String &arghint) {
+static void _find_call_arguments(GDCompletionContext &context, const GDParser::Node *p_node, int p_line, int p_argidx, Set<String> &result, bool &r_forced, String &arghint) {
if (!p_node || p_node->type != GDParser::Node::TYPE_OPERATOR) {
@@ -1778,11 +1903,11 @@ static void _find_call_arguments(GDCompletionContext &context, const GDParser::N
arghint += ", ";
else
arghint += " ";
- if (i == p_argidx) {
+ if (i == p_argidx || (mi.flags & METHOD_FLAG_VARARG && i > p_argidx)) {
arghint += String::chr(0xFFFF);
}
arghint += _get_visual_datatype(mi.arguments[i]) + " " + mi.arguments[i].name;
- if (i == p_argidx) {
+ if (i == p_argidx || (mi.flags & METHOD_FLAG_VARARG && i > p_argidx)) {
arghint += String::chr(0xFFFF);
}
}
@@ -1904,7 +2029,7 @@ static void _find_call_arguments(GDCompletionContext &context, const GDParser::N
if (!context._class->owner)
ci.value = context.base;
- _find_type_arguments(context, p_node, p_line, id->name, ci, p_argidx, result, arghint);
+ _find_type_arguments(context, p_node, p_line, id->name, ci, p_argidx, result, r_forced, arghint);
//guess type..
/*
List<MethodInfo> methods;
@@ -1926,114 +2051,21 @@ static void _find_call_arguments(GDCompletionContext &context, const GDParser::N
GDCompletionIdentifier ci;
if (_guess_expression_type(context, op->arguments[0], p_line, ci)) {
- _find_type_arguments(context, p_node, p_line, id->name, ci, p_argidx, result, arghint);
+ _find_type_arguments(context, p_node, p_line, id->name, ci, p_argidx, result, r_forced, arghint);
return;
}
}
}
-#if 0
- bool _static=context.function->_static;
-
-
-
-
- for(int i=0;i<context._class->static_functions.size();i++) {
- if (context._class->static_functions[i]->arguments.size())
- result.insert(context._class->static_functions[i]->name.operator String()+"(");
- else
- result.insert(context._class->static_functions[i]->name.operator String()+"()");
- }
-
- if (!p_static) {
-
- for(int i=0;i<context._class->functions.size();i++) {
- if (context._class->functions[i]->arguments.size())
- result.insert(context._class->functions[i]->name.operator String()+"(");
- else
- result.insert(context._class->functions[i]->name.operator String()+"()");
- }
- }
-
- Ref<Reference> base = _get_parent_class(context);
-
- while(true) {
-
- Ref<GDScript> script = base;
- Ref<GDNativeClass> nc = base;
- if (script.is_valid()) {
-
- if (!p_static && !p_only_functions) {
- for (const Set<StringName>::Element *E=script->get_members().front();E;E=E->next()) {
- result.insert(E->get().operator String());
- }
- }
-
- if (!p_only_functions) {
- for (const Map<StringName,Variant>::Element *E=script->get_constants().front();E;E=E->next()) {
- result.insert(E->key().operator String());
- }
- }
-
- for (const Map<StringName,GDFunction>::Element *E=script->get_member_functions().front();E;E=E->next()) {
- if (!p_static || E->get().is_static()) {
- if (E->get().get_argument_count())
- result.insert(E->key().operator String()+"(");
- else
- result.insert(E->key().operator String()+"()");
- }
- }
-
- if (!p_only_functions) {
- for (const Map<StringName,Ref<GDScript> >::Element *E=script->get_subclasses().front();E;E=E->next()) {
- result.insert(E->key().operator String());
- }
- }
-
- base=script->get_base();
- if (base.is_null())
- base=script->get_native();
- } else if (nc.is_valid()) {
-
- if (!p_only_functions) {
-
- StringName type = nc->get_name();
- List<String> constants;
- ClassDB::get_integer_constant_list(type,&constants);
- for(List<String>::Element *E=constants.front();E;E=E->next()) {
- result.insert(E->get());
- }
-
- List<MethodInfo> methods;
- ClassDB::get_method_list(type,&methods);
- for(List<MethodInfo>::Element *E=methods.front();E;E=E->next()) {
- if (E->get().arguments.size())
- result.insert(E->get().name+"(");
- else
- result.insert(E->get().name+"()");
- }
- }
- break;
- } else
- break;
-
- }
-
- for(int i=0;i<GDFunctions::FUNC_MAX;i++) {
-
- result.insert(GDFunctions::get_func_name(GDFunctions::Function(i)));
- }
-
-#endif
}
-Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, String &r_call_hint) {
+Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_forced, String &r_call_hint) {
GDParser p;
p.parse(p_code, p_base_path, false, "", true);
bool isfunction = false;
Set<String> options;
-
+ r_forced = false;
GDCompletionContext context;
context._class = p.get_completion_class();
context.block = p.get_completion_block();
@@ -2072,6 +2104,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
String opt = E->get().strip_edges();
if (opt.begins_with("\"") && opt.ends_with("\"")) {
+ r_forced = true;
String idopt = opt.substr(1, opt.length() - 2);
if (idopt.replace("/", "_").is_valid_identifier()) {
options.insert(idopt);
@@ -2091,7 +2124,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
break;
GDCompletionIdentifier t;
- if (_guess_expression_type(context, static_cast<const GDParser::OperatorNode *>(node)->arguments[0], p.get_completion_line(), t)) {
+ if (_guess_expression_type(context, static_cast<const GDParser::OperatorNode *>(node)->arguments[0], p.get_completion_line(), t, true)) {
if (t.type == Variant::OBJECT && t.obj_type == "GDNativeClass") {
//native enum
@@ -2110,7 +2143,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
if (E->get().usage & (PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY))
continue;
- if (E->get().name.find("/") != -1)
+ if (String(E->get().name).find("/") != -1)
continue;
options.insert(E->get().name);
}
@@ -2122,28 +2155,27 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
if (t.value.get_type()) {
Object *obj = t.value;
- if (obj) {
-
- GDScript *scr = obj->cast_to<GDScript>();
- if (scr) {
- while (scr) {
+ GDScript *scr = Object::cast_to<GDScript>(obj);
+ if (scr) {
+ while (scr) {
- if (!isfunction) {
- for (const Map<StringName, Variant>::Element *E = scr->get_constants().front(); E; E = E->next()) {
- options.insert(E->key());
- }
+ if (!isfunction) {
+ for (const Map<StringName, Variant>::Element *E = scr->get_constants().front(); E; E = E->next()) {
+ options.insert(E->key());
}
- for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
- if (E->get()->is_static())
- options.insert(E->key());
- }
-
- if (scr->get_base().is_valid())
- scr = scr->get_base().ptr();
- else
- scr = NULL;
}
- } else {
+ for (const Map<StringName, GDFunction *>::Element *E = scr->get_member_functions().front(); E; E = E->next()) {
+ if (E->get()->is_static())
+ options.insert(E->key());
+ }
+
+ if (scr->get_base().is_valid())
+ scr = scr->get_base().ptr();
+ else
+ scr = NULL;
+ }
+ } else {
+ if (obj) {
on_script = obj->get_script();
}
}
@@ -2244,7 +2276,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
if (E->get().usage & (PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY))
continue;
- if (E->get().name.find("/") != -1)
+ if (String(E->get().name).find("/") != -1)
continue;
r_options->push_back(E->get().name);
}
@@ -2276,7 +2308,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
t.value.get_property_list(&pl);
for (List<PropertyInfo>::Element *E = pl.front(); E; E = E->next()) {
- if (E->get().name.find("/") == -1)
+ if (String(E->get().name).find("/") == -1)
options.insert(E->get().name);
}
}
@@ -2296,7 +2328,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
} break;
case GDParser::COMPLETION_CALL_ARGUMENTS: {
- _find_call_arguments(context, p.get_completion_node(), p.get_completion_line(), p.get_completion_argument_index(), options, r_call_hint);
+ _find_call_arguments(context, p.get_completion_node(), p.get_completion_line(), p.get_completion_argument_index(), options, r_forced, r_call_hint);
} break;
case GDParser::COMPLETION_VIRTUAL_FUNC: {
@@ -2343,6 +2375,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
ClassDB::get_signal_list(t.obj_type, &sigs);
for (List<MethodInfo>::Element *E = sigs.front(); E; E = E->next()) {
options.insert("\"" + E->get().name + "\"");
+ r_forced = true;
}
}
@@ -2352,6 +2385,42 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
if (EditorSettings::get_singleton()->get("text_editor/completion/complete_file_paths"))
get_directory_contents(EditorFileSystem::get_singleton()->get_filesystem(), options);
} break;
+ case GDParser::COMPLETION_ASSIGN: {
+#if defined(DEBUG_METHODS_ENABLED) && defined(TOOLS_ENABLED)
+
+ GDCompletionIdentifier ci;
+ if (_guess_expression_type(context, p.get_completion_node(), p.get_completion_line(), ci)) {
+
+ String enumeration = ci.enumeration;
+ if (enumeration.find(".") != -1) {
+ //class constant
+ List<StringName> constants;
+ String cls = enumeration.get_slice(".", 0);
+ String enm = enumeration.get_slice(".", 1);
+
+ ClassDB::get_enum_constants(cls, enm, &constants);
+ //constants.sort_custom<StringName::AlphCompare>();
+ for (List<StringName>::Element *E = constants.front(); E; E = E->next()) {
+ String add = cls + "." + E->get();
+ r_options->push_back(add);
+ r_forced = true;
+ }
+ } else {
+
+ //global constant
+ StringName current_enum = enumeration;
+
+ for (int i = 0; i < GlobalConstants::get_global_constant_count(); i++) {
+ if (GlobalConstants::get_global_constant_enum(i) == current_enum) {
+ r_options->push_back(GlobalConstants::get_global_constant_name(i));
+ r_forced = true;
+ }
+ }
+ //global
+ }
+ }
+#endif
+ } break;
}
for (Set<String>::Element *E = options.front(); E; E = E->next()) {
@@ -2363,7 +2432,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
#else
-Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, String &r_call_hint) {
+Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_forced, String &r_call_hint) {
return OK;
}
@@ -2371,7 +2440,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
String GDScriptLanguage::_get_indentation() const {
#ifdef TOOLS_ENABLED
- if (SceneTree::get_singleton()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
bool use_space_indentation = EDITOR_DEF("text_editor/indent/type", 0);
if (use_space_indentation) {
@@ -2700,9 +2769,9 @@ Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol
Object *obj = value;
if (obj) {
- if (obj->cast_to<GDNativeClass>()) {
+ if (Object::cast_to<GDNativeClass>(obj)) {
r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;
- r_result.class_name = obj->cast_to<GDNativeClass>()->get_name();
+ r_result.class_name = Object::cast_to<GDNativeClass>(obj)->get_name();
} else {
r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;
@@ -2719,18 +2788,6 @@ Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol
}
}
}
-#if 0
- GDCompletionIdentifier identifier;
- if (_guess_identifier_type(context,p.get_completion_line(),p_symbol,identifier)) {
-
- print_line("var type: "+Variant::get_type_name(identifier.type));
- if (identifier.script.is_valid()) {
- print_line("var script: "+identifier.script->get_path());
- }
- print_line("obj type: "+String(identifier.obj_type));
- print_line("value: "+String(identifier.value));
- }
-#endif
}
} break;
diff --git a/modules/gdscript/gd_function.cpp b/modules/gdscript/gd_function.cpp
index cafcc1e965..e6f65fe0c2 100644
--- a/modules/gdscript/gd_function.cpp
+++ b/modules/gdscript/gd_function.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -371,7 +371,7 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
Object *obj_A = *a;
Object *obj_B = *b;
- GDScript *scr_B = obj_B->cast_to<GDScript>();
+ GDScript *scr_B = Object::cast_to<GDScript>(obj_B);
bool extends_ok = false;
@@ -397,7 +397,7 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a
} else {
- GDNativeClass *nc = obj_B->cast_to<GDNativeClass>();
+ GDNativeClass *nc = Object::cast_to<GDNativeClass>(obj_B);
if (!nc) {
@@ -1233,10 +1233,10 @@ int GDFunction::get_default_argument_count() const {
return default_arguments.size();
}
-int GDFunction::get_default_argument_addr(int p_arg) const {
+int GDFunction::get_default_argument_addr(int p_idx) const {
- ERR_FAIL_INDEX_V(p_arg, default_arguments.size(), -1);
- return default_arguments[p_arg];
+ ERR_FAIL_INDEX_V(p_idx, default_arguments.size(), -1);
+ return default_arguments[p_idx];
}
StringName GDFunction::get_name() const {
@@ -1319,22 +1319,6 @@ void GDFunction::debug_get_stack_member_state(int p_line, List<Pair<StringName,
}
}
-#if 0
-void GDFunction::clear() {
-
- name=StringName();
- constants.clear();
- _stack_size=0;
- code.clear();
- _constants_ptr=NULL;
- _constant_count=0;
- _global_names_ptr=NULL;
- _global_names_count=0;
- _code_ptr=NULL;
- _code_size=0;
-
-}
-#endif
GDFunction::GDFunction()
: function_list(this) {
@@ -1434,7 +1418,7 @@ Variant GDFunctionState::_signal_callback(const Variant **p_args, int p_argcount
// If the return value is a GDFunctionState reference,
// then the function did yield again after resuming.
if (ret.is_ref()) {
- GDFunctionState *gdfs = ret.operator Object *()->cast_to<GDFunctionState>();
+ GDFunctionState *gdfs = Object::cast_to<GDFunctionState>(ret);
if (gdfs && gdfs->function == function)
completed = false;
}
@@ -1490,7 +1474,7 @@ Variant GDFunctionState::resume(const Variant &p_arg) {
// If the return value is a GDFunctionState reference,
// then the function did yield again after resuming.
if (ret.is_ref()) {
- GDFunctionState *gdfs = ret.operator Object *()->cast_to<GDFunctionState>();
+ GDFunctionState *gdfs = Object::cast_to<GDFunctionState>(ret);
if (gdfs && gdfs->function == function)
completed = false;
}
diff --git a/modules/gdscript/gd_function.h b/modules/gdscript/gd_function.h
index 6d20b19777..bf5ff5f8da 100644
--- a/modules/gdscript/gd_function.h
+++ b/modules/gdscript/gd_function.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -210,8 +210,9 @@ public:
#ifdef TOOLS_ENABLED
ERR_FAIL_INDEX_V(p_idx, arg_names.size(), StringName());
return arg_names[p_idx];
-#endif
+#else
return StringName();
+#endif
}
Variant get_default_argument(int p_idx) const {
ERR_FAIL_INDEX_V(p_idx, default_arguments.size(), Variant());
diff --git a/modules/gdscript/gd_functions.cpp b/modules/gdscript/gd_functions.cpp
index 209bdadd67..f0cfdd6258 100644
--- a/modules/gdscript/gd_functions.cpp
+++ b/modules/gdscript/gd_functions.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -70,6 +70,8 @@ const char *GDFunctions::get_func_name(Function p_func) {
"decimals",
"stepify",
"lerp",
+ "inverse_lerp",
+ "range_lerp",
"dectime",
"randomize",
"randi",
@@ -326,6 +328,22 @@ void GDFunctions::call(Function p_func, const Variant **p_args, int p_arg_count,
VALIDATE_ARG_NUM(2);
r_ret = Math::lerp((double)*p_args[0], (double)*p_args[1], (double)*p_args[2]);
} break;
+ case MATH_INVERSE_LERP: {
+ VALIDATE_ARG_COUNT(3);
+ VALIDATE_ARG_NUM(0);
+ VALIDATE_ARG_NUM(1);
+ VALIDATE_ARG_NUM(2);
+ r_ret = Math::inverse_lerp((double)*p_args[0], (double)*p_args[1], (double)*p_args[2]);
+ } break;
+ case MATH_RANGE_LERP: {
+ VALIDATE_ARG_COUNT(5);
+ VALIDATE_ARG_NUM(0);
+ VALIDATE_ARG_NUM(1);
+ VALIDATE_ARG_NUM(2);
+ VALIDATE_ARG_NUM(3);
+ VALIDATE_ARG_NUM(4);
+ r_ret = Math::range_lerp((double)*p_args[0], (double)*p_args[1], (double)*p_args[2], (double)*p_args[3], (double)*p_args[4]);
+ } break;
case MATH_DECTIME: {
VALIDATE_ARG_COUNT(3);
VALIDATE_ARG_NUM(0);
@@ -446,7 +464,7 @@ void GDFunctions::call(Function p_func, const Variant **p_args, int p_arg_count,
VALIDATE_ARG_COUNT(1);
VALIDATE_ARG_NUM(0);
int64_t num = *p_args[0];
- r_ret = nearest_power_of_2(num);
+ r_ret = next_power_of_2(num);
} break;
case OBJ_WEAKREF: {
VALIDATE_ARG_COUNT(1);
@@ -1252,6 +1270,8 @@ bool GDFunctions::is_deterministic(Function p_func) {
case MATH_DECIMALS:
case MATH_STEPIFY:
case MATH_LERP:
+ case MATH_INVERSE_LERP:
+ case MATH_RANGE_LERP:
case MATH_DECTIME:
case MATH_DEG2RAD:
case MATH_RAD2DEG:
@@ -1420,6 +1440,16 @@ MethodInfo GDFunctions::get_info(Function p_func) {
mi.return_val.type = Variant::REAL;
return mi;
} break;
+ case MATH_INVERSE_LERP: {
+ MethodInfo mi("inverse_lerp", PropertyInfo(Variant::REAL, "from"), PropertyInfo(Variant::REAL, "to"), PropertyInfo(Variant::REAL, "value"));
+ mi.return_val.type = Variant::REAL;
+ return mi;
+ } break;
+ case MATH_RANGE_LERP: {
+ MethodInfo mi("range_lerp", PropertyInfo(Variant::REAL, "value"), PropertyInfo(Variant::REAL, "istart"), PropertyInfo(Variant::REAL, "istop"), PropertyInfo(Variant::REAL, "ostart"), PropertyInfo(Variant::REAL, "ostop"));
+ mi.return_val.type = Variant::REAL;
+ return mi;
+ } break;
case MATH_DECTIME: {
MethodInfo mi("dectime", PropertyInfo(Variant::REAL, "value"), PropertyInfo(Variant::REAL, "amount"), PropertyInfo(Variant::REAL, "step"));
mi.return_val.type = Variant::REAL;
@@ -1542,43 +1572,49 @@ MethodInfo GDFunctions::get_info(Function p_func) {
} break;
case TEXT_STR: {
- MethodInfo mi("str", PropertyInfo(Variant::NIL, "what"), PropertyInfo(Variant::NIL, "..."));
+ MethodInfo mi("str");
mi.return_val.type = Variant::STRING;
+ mi.flags |= METHOD_FLAG_VARARG;
return mi;
} break;
case TEXT_PRINT: {
- MethodInfo mi("print", PropertyInfo(Variant::NIL, "what"), PropertyInfo(Variant::NIL, "..."));
+ MethodInfo mi("print");
mi.return_val.type = Variant::NIL;
+ mi.flags |= METHOD_FLAG_VARARG;
return mi;
} break;
case TEXT_PRINT_TABBED: {
- MethodInfo mi("printt", PropertyInfo(Variant::NIL, "what"), PropertyInfo(Variant::NIL, "..."));
+ MethodInfo mi("printt");
mi.return_val.type = Variant::NIL;
+ mi.flags |= METHOD_FLAG_VARARG;
return mi;
} break;
case TEXT_PRINT_SPACED: {
- MethodInfo mi("prints", PropertyInfo(Variant::NIL, "what"), PropertyInfo(Variant::NIL, "..."));
+ MethodInfo mi("prints");
mi.return_val.type = Variant::NIL;
+ mi.flags |= METHOD_FLAG_VARARG;
return mi;
} break;
case TEXT_PRINTERR: {
- MethodInfo mi("printerr", PropertyInfo(Variant::NIL, "what"), PropertyInfo(Variant::NIL, "..."));
+ MethodInfo mi("printerr");
mi.return_val.type = Variant::NIL;
+ mi.flags |= METHOD_FLAG_VARARG;
return mi;
} break;
case TEXT_PRINTRAW: {
- MethodInfo mi("printraw", PropertyInfo(Variant::NIL, "what"), PropertyInfo(Variant::NIL, "..."));
+ MethodInfo mi("printraw");
mi.return_val.type = Variant::NIL;
+ mi.flags |= METHOD_FLAG_VARARG;
return mi;
} break;
@@ -1590,8 +1626,9 @@ MethodInfo GDFunctions::get_info(Function p_func) {
} break;
case STR_TO_VAR: {
- MethodInfo mi("str2var:Variant", PropertyInfo(Variant::STRING, "string"));
+ MethodInfo mi(Variant::NIL, "str2var", PropertyInfo(Variant::STRING, "string"));
mi.return_val.type = Variant::NIL;
+ mi.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
return mi;
} break;
case VAR_TO_BYTES: {
@@ -1602,14 +1639,16 @@ MethodInfo GDFunctions::get_info(Function p_func) {
} break;
case BYTES_TO_VAR: {
- MethodInfo mi("bytes2var:Variant", PropertyInfo(Variant::POOL_BYTE_ARRAY, "bytes"));
+ MethodInfo mi(Variant::NIL, "bytes2var", PropertyInfo(Variant::POOL_BYTE_ARRAY, "bytes"));
mi.return_val.type = Variant::NIL;
+ mi.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
return mi;
} break;
case GEN_RANGE: {
- MethodInfo mi("range", PropertyInfo(Variant::NIL, "..."));
+ MethodInfo mi("range");
mi.return_val.type = Variant::ARRAY;
+ mi.flags |= METHOD_FLAG_VARARG;
return mi;
} break;
case RESOURCE_LOAD: {
@@ -1633,14 +1672,15 @@ MethodInfo GDFunctions::get_info(Function p_func) {
} break;
case VALIDATE_JSON: {
- MethodInfo mi("validate_json:Variant", PropertyInfo(Variant::STRING, "json"));
+ MethodInfo mi("validate_json", PropertyInfo(Variant::STRING, "json"));
mi.return_val.type = Variant::STRING;
return mi;
} break;
case PARSE_JSON: {
- MethodInfo mi("parse_json:Variant", PropertyInfo(Variant::STRING, "json"));
+ MethodInfo mi(Variant::NIL, "parse_json", PropertyInfo(Variant::STRING, "json"));
mi.return_val.type = Variant::NIL;
+ mi.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
return mi;
} break;
case TO_JSON: {
diff --git a/modules/gdscript/gd_functions.h b/modules/gdscript/gd_functions.h
index 93cb524118..a568c8f1cf 100644
--- a/modules/gdscript/gd_functions.h
+++ b/modules/gdscript/gd_functions.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -62,6 +62,8 @@ public:
MATH_DECIMALS,
MATH_STEPIFY,
MATH_LERP,
+ MATH_INVERSE_LERP,
+ MATH_RANGE_LERP,
MATH_DECTIME,
MATH_RANDOMIZE,
MATH_RAND,
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp
index 9023fd4bf4..072937a521 100644
--- a/modules/gdscript/gd_parser.cpp
+++ b/modules/gdscript/gd_parser.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -1044,6 +1044,7 @@ GDParser::Node *GDParser::_parse_expression(Node *p_parent, bool p_static, bool
return NULL; \
} \
p_allow_assign = false;
+
switch (tokenizer->get_token()) { //see operator
case GDTokenizer::TK_OP_IN: op = OperatorNode::OP_IN; break;
@@ -1065,7 +1066,22 @@ GDParser::Node *GDParser::_parse_expression(Node *p_parent, bool p_static, bool
//case GDTokenizer::TK_OP_NEG: op=OperatorNode::OP_NEG ; break;
case GDTokenizer::TK_OP_SHIFT_LEFT: op = OperatorNode::OP_SHIFT_LEFT; break;
case GDTokenizer::TK_OP_SHIFT_RIGHT: op = OperatorNode::OP_SHIFT_RIGHT; break;
- case GDTokenizer::TK_OP_ASSIGN: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN; break;
+ case GDTokenizer::TK_OP_ASSIGN: {
+ _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN;
+
+ if (tokenizer->get_token(1) == GDTokenizer::TK_CURSOR) {
+ //code complete assignment
+ completion_type = COMPLETION_ASSIGN;
+ completion_node = expr;
+ completion_class = current_class;
+ completion_function = current_function;
+ completion_line = tokenizer->get_token_line();
+ completion_block = current_block;
+ completion_found = true;
+ tokenizer->advance();
+ }
+
+ } break;
case GDTokenizer::TK_OP_ASSIGN_ADD: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_ADD; break;
case GDTokenizer::TK_OP_ASSIGN_SUB: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_SUB; break;
case GDTokenizer::TK_OP_ASSIGN_MUL: _VALIDATE_ASSIGN op = OperatorNode::OP_ASSIGN_MUL; break;
@@ -1894,7 +1910,26 @@ GDParser::PatternNode *GDParser::_parse_pattern(bool p_static) {
return NULL;
}
- if (value->type != Node::TYPE_IDENTIFIER && value->type != Node::TYPE_CONSTANT) {
+ if (value->type == Node::TYPE_OPERATOR) {
+ // Maybe it's SomeEnum.VALUE
+ Node *current_value = value;
+
+ while (current_value->type == Node::TYPE_OPERATOR) {
+ OperatorNode *op_node = static_cast<OperatorNode *>(current_value);
+
+ if (op_node->op != OperatorNode::OP_INDEX_NAMED) {
+ _set_error("Invalid operator in pattern. Only index (`A.B`) is allowed");
+ return NULL;
+ }
+ current_value = op_node->arguments[0];
+ }
+
+ if (current_value->type != Node::TYPE_IDENTIFIER) {
+ _set_error("Only constant expression or variables allowed in a pattern");
+ return NULL;
+ }
+
+ } else if (value->type != Node::TYPE_IDENTIFIER && value->type != Node::TYPE_CONSTANT) {
_set_error("Only constant expressions or variables allowed in a pattern");
return NULL;
}
@@ -2381,9 +2416,7 @@ void GDParser::_parse_block(BlockNode *p_block, bool p_static) {
if (tokenizer->get_token() == GDTokenizer::TK_OP_ASSIGN) {
tokenizer->advance();
- Node *subexpr = NULL;
-
- subexpr = _parse_and_reduce_expression(p_block, p_static);
+ Node *subexpr = _parse_and_reduce_expression(p_block, p_static);
if (!subexpr) {
if (_recover_from_completion()) {
break;
@@ -2437,6 +2470,8 @@ void GDParser::_parse_block(BlockNode *p_block, bool p_static) {
cf_if->body = alloc_node<BlockNode>();
cf_if->body->parent_block = p_block;
+ cf_if->body->if_condition = condition; //helps code completion
+
p_block->sub_blocks.push_back(cf_if->body);
if (!_enter_indent_block(cf_if->body)) {
@@ -3135,9 +3170,7 @@ void GDParser::_parse_class(ClassNode *p_class) {
if (tokenizer->get_token() == GDTokenizer::TK_OP_ASSIGN) {
defaulting = true;
tokenizer->advance(1);
- Node *defval = NULL;
-
- defval = _parse_and_reduce_expression(p_class, _static);
+ Node *defval = _parse_and_reduce_expression(p_class, _static);
if (!defval || error_set)
return;
@@ -3875,9 +3908,7 @@ void GDParser::_parse_class(ClassNode *p_class) {
#endif
tokenizer->advance();
- Node *subexpr = NULL;
-
- subexpr = _parse_and_reduce_expression(p_class, false, autoexport);
+ Node *subexpr = _parse_and_reduce_expression(p_class, false, autoexport);
if (!subexpr) {
if (_recover_from_completion()) {
break;
@@ -3928,7 +3959,7 @@ void GDParser::_parse_class(ClassNode *p_class) {
member._export.usage |= PROPERTY_USAGE_SCRIPT_VARIABLE;
if (cn->value.get_type() == Variant::OBJECT) {
Object *obj = cn->value;
- Resource *res = obj->cast_to<Resource>();
+ Resource *res = Object::cast_to<Resource>(obj);
if (res == NULL) {
_set_error("Exported constant not a type or resource.");
return;
@@ -4035,9 +4066,7 @@ void GDParser::_parse_class(ClassNode *p_class) {
tokenizer->advance();
- Node *subexpr = NULL;
-
- subexpr = _parse_and_reduce_expression(p_class, true, true);
+ Node *subexpr = _parse_and_reduce_expression(p_class, true, true);
if (!subexpr) {
if (_recover_from_completion()) {
break;
@@ -4103,9 +4132,7 @@ void GDParser::_parse_class(ClassNode *p_class) {
if (tokenizer->get_token() == GDTokenizer::TK_OP_ASSIGN) {
tokenizer->advance();
- Node *subexpr = NULL;
-
- subexpr = _parse_and_reduce_expression(p_class, true, true);
+ Node *subexpr = _parse_and_reduce_expression(p_class, true, true);
if (!subexpr) {
if (_recover_from_completion()) {
break;
diff --git a/modules/gdscript/gd_parser.h b/modules/gdscript/gd_parser.h
index 3ad3466624..7e88fd9746 100644
--- a/modules/gdscript/gd_parser.h
+++ b/modules/gdscript/gd_parser.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -146,10 +146,13 @@ public:
Vector<StringName> variables;
Vector<int> variable_lines;
+ Node *if_condition; //tiny hack to improve code completion on if () blocks
+
//the following is useful for code completion
List<BlockNode *> sub_blocks;
int end_line;
BlockNode() {
+ if_condition = NULL;
type = TYPE_BLOCK;
end_line = -1;
parent_block = NULL;
@@ -441,6 +444,7 @@ public:
COMPLETION_INDEX,
COMPLETION_VIRTUAL_FUNC,
COMPLETION_YIELD,
+ COMPLETION_ASSIGN,
};
private:
diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp
index 9d304c6d34..cf6529d5ae 100644
--- a/modules/gdscript/gd_script.cpp
+++ b/modules/gdscript/gd_script.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "gd_script.h"
+
#include "gd_compiler.h"
#include "global_constants.h"
#include "io/file_access_encrypted.h"
@@ -42,11 +43,6 @@ GDNativeClass::GDNativeClass(const StringName &p_name) {
name = p_name;
}
-/*void GDNativeClass::call_multilevel(const StringName& p_method,const Variant** p_args,int p_argcount){
-
-
-}*/
-
bool GDNativeClass::_get(const StringName &p_name, Variant &r_ret) const {
bool ok;
@@ -73,7 +69,7 @@ Variant GDNativeClass::_new() {
ERR_FAIL_COND_V(!o, Variant());
}
- Reference *ref = o->cast_to<Reference>();
+ Reference *ref = Object::cast_to<Reference>(o);
if (ref) {
return REF(ref);
} else {
@@ -161,7 +157,7 @@ Variant GDScript::_new(const Variant **p_args, int p_argcount, Variant::CallErro
owner = memnew(Reference); //by default, no base means use reference
}
- Reference *r = owner->cast_to<Reference>();
+ Reference *r = Object::cast_to<Reference>(owner);
if (r) {
ref = REF(r);
}
@@ -183,7 +179,6 @@ Variant GDScript::_new(const Variant **p_args, int p_argcount, Variant::CallErro
bool GDScript::can_instance() const {
- //return valid; //any script in GDscript can instance
return valid || (!tool && !ScriptServer::is_scripting_enabled());
}
@@ -218,49 +213,6 @@ void GDScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder) {
placeholders.erase(p_placeholder);
}
-
-/*
-void GDScript::_update_placeholder(PlaceHolderScriptInstance *p_placeholder) {
-
-
- List<PropertyInfo> plist;
- GDScript *scr=this;
-
- Map<StringName,Variant> default_values;
- while(scr) {
-
- Vector<_GDScriptMemberSort> msort;
- for(Map<StringName,PropertyInfo>::Element *E=scr->member_info.front();E;E=E->next()) {
-
- _GDScriptMemberSort ms;
- ERR_CONTINUE(!scr->member_indices.has(E->key()));
- ms.index=scr->member_indices[E->key()].index;
- ms.name=E->key();
-
- msort.push_back(ms);
-
- }
-
- msort.sort();
- msort.invert();
- for(int i=0;i<msort.size();i++) {
-
- plist.push_front(scr->member_info[msort[i].name]);
- if (scr->member_default_values.has(msort[i].name))
- default_values[msort[i].name]=scr->member_default_values[msort[i].name];
- else {
- Variant::CallError err;
- default_values[msort[i].name]=Variant::construct(scr->member_info[msort[i].name].type,NULL,0,err);
- }
- }
-
- scr=scr->_base;
- }
-
-
- p_placeholder->update(plist,default_values);
-
-}*/
#endif
void GDScript::get_script_method_list(List<MethodInfo> *p_list) const {
@@ -397,7 +349,7 @@ ScriptInstance *GDScript::instance_create(Object *p_this) {
}
Variant::CallError unchecked_error;
- return _create_instance(NULL, 0, p_this, p_this->cast_to<Reference>(), unchecked_error);
+ return _create_instance(NULL, 0, p_this, Object::cast_to<Reference>(p_this), unchecked_error);
}
bool GDScript::instance_has(const Object *p_this) const {
@@ -428,7 +380,6 @@ void GDScript::set_source_code(const String &p_code) {
source = p_code;
#ifdef TOOLS_ENABLED
source_changed_cache = true;
-//print_line("SC CHANGED "+get_path());
#endif
}
@@ -559,8 +510,9 @@ bool GDScript::_update_exports() {
return changed;
-#endif
+#else
return false;
+#endif
}
void GDScript::update_exports() {
@@ -574,9 +526,7 @@ void GDScript::update_exports() {
//print_line("update exports for "+get_path()+" ic: "+itos(copy.size()));
for (Set<ObjectID>::Element *E = copy.front(); E; E = E->next()) {
Object *id = ObjectDB::get_instance(E->get());
- if (!id)
- continue;
- GDScript *s = id->cast_to<GDScript>();
+ GDScript *s = Object::cast_to<GDScript>(id);
if (!s)
continue;
s->update_exports();
@@ -615,7 +565,7 @@ Error GDScript::reload(bool p_keep_state) {
if (basedir != "")
basedir = basedir.get_base_dir();
- if (basedir.find("res://") == -1 && basedir.find("user://") == -1) {
+ if (source.find("%BASE%") != -1) {
//loading a template, don't parse
return OK;
}
@@ -656,12 +606,6 @@ Error GDScript::reload(bool p_keep_state) {
_set_subclass_path(E->get(), path);
}
-#ifdef TOOLS_ENABLED
-/*for (Set<PlaceHolderScriptInstance*>::Element *E=placeholders.front();E;E=E->next()) {
-
- _update_placeholder(E->get());
- }*/
-#endif
return OK;
}
@@ -1142,53 +1086,10 @@ void GDInstance::get_property_list(List<PropertyInfo> *p_properties) const {
props.push_front(sptr->member_info[msort[i].name]);
}
-#if 0
- if (sptr->member_functions.has("_get_property_list")) {
-
- Variant::CallError err;
- GDFunction *f = const_cast<GDFunction*>(sptr->member_functions["_get_property_list"]);
- Variant plv = f->call(const_cast<GDInstance*>(this),NULL,0,err);
-
- if (plv.get_type()!=Variant::ARRAY) {
-
- ERR_PRINT("_get_property_list: expected array returned");
- } else {
-
- Array pl=plv;
-
- for(int i=0;i<pl.size();i++) {
-
- Dictionary p = pl[i];
- PropertyInfo pinfo;
- if (!p.has("name")) {
- ERR_PRINT("_get_property_list: expected 'name' key of type string.")
- continue;
- }
- if (!p.has("type")) {
- ERR_PRINT("_get_property_list: expected 'type' key of type integer.")
- continue;
- }
- pinfo.name=p["name"];
- pinfo.type=Variant::Type(int(p["type"]));
- if (p.has("hint"))
- pinfo.hint=PropertyHint(int(p["hint"]));
- if (p.has("hint_string"))
- pinfo.hint_string=p["hint_string"];
- if (p.has("usage"))
- pinfo.usage=p["usage"];
-
-
- props.push_back(pinfo);
- }
- }
- }
-#endif
sptr = sptr->_base;
}
- //props.invert();
-
for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
p_properties->push_back(E->get());
@@ -1391,10 +1292,6 @@ GDInstance::~GDInstance() {
}
/************* SCRIPT LANGUAGE **************/
-/************* SCRIPT LANGUAGE **************/
-/************* SCRIPT LANGUAGE **************/
-/************* SCRIPT LANGUAGE **************/
-/************* SCRIPT LANGUAGE **************/
GDScriptLanguage *GDScriptLanguage::singleton = NULL;
@@ -2005,11 +1902,11 @@ Error ResourceFormatSaverGDScript::save(const String &p_path, const RES &p_resou
void ResourceFormatSaverGDScript::get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const {
- if (p_resource->cast_to<GDScript>()) {
+ if (Object::cast_to<GDScript>(*p_resource)) {
p_extensions->push_back("gd");
}
}
bool ResourceFormatSaverGDScript::recognize(const RES &p_resource) const {
- return p_resource->cast_to<GDScript>() != NULL;
+ return Object::cast_to<GDScript>(*p_resource) != NULL;
}
diff --git a/modules/gdscript/gd_script.h b/modules/gdscript/gd_script.h
index 17e7b0bc03..6f05a4770b 100644
--- a/modules/gdscript/gd_script.h
+++ b/modules/gdscript/gd_script.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -390,7 +390,7 @@ public:
virtual int find_function(const String &p_function, const String &p_code) const;
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
virtual Error open_in_external_editor(const Ref<Script> &p_script, int p_line, int p_col) { return OK; }
- virtual Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, String &r_call_hint);
+ virtual Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_forced, String &r_call_hint);
#ifdef TOOLS_ENABLED
virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_base_path, Object *p_owner, LookupResult &r_result);
#endif
diff --git a/modules/gdscript/gd_tokenizer.cpp b/modules/gdscript/gd_tokenizer.cpp
index 5803046185..5f85158232 100644
--- a/modules/gdscript/gd_tokenizer.cpp
+++ b/modules/gdscript/gd_tokenizer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "gd_tokenizer.h"
+
#include "gd_functions.h"
#include "io/marshalls.h"
#include "map.h"
@@ -504,7 +505,6 @@ void GDTokenizerText::_advance() {
_make_newline(i);
return;
}
-#if 1 //py style tokenizer
case '#': { // line comment skip
while (GETCHAR(0) != '\n') {
@@ -526,57 +526,9 @@ void GDTokenizerText::_advance() {
return;
} break;
-#endif
case '/': {
switch (GETCHAR(1)) {
-#if 0 // c style tokenizer
- case '*': { // block comment
- int pos = code_pos+2;
- int new_line=line;
- int new_col=column+2;
-
- while(true) {
- if (_code[pos]=='0') {
- _make_error("Unterminated Comment");
- code_pos=pos;
- return;
- }
- if (_code[pos]=='*' && _code[pos+1]=='/') {
- new_col+=2;
- pos+=2; //compensate
- break;
- } else if (_code[pos]=='\n') {
- new_line++;
- new_col=1;
- } else {
- new_col++;
- }
- pos++;
- }
-
- column=new_col;
- line=new_line;
- code_pos=pos;
- continue;
-
- } break;
- case '/': { // line comment skip
-
- while(GETCHAR(0)!='\n') {
- code_pos++;
- if (GETCHAR(0)==0) { //end of file
- _make_error("Unterminated Comment");
- return;
- }
- }
- INCPOS(1);
- column=1;
- line++;
- continue;
-
- } break;
-#endif
case '=': { // diveq
_make_token(TK_OP_ASSIGN_DIV);
@@ -1187,9 +1139,7 @@ Error GDTokenizerBuffer::set_code_buffer(const Vector<uint8_t> &p_buffer) {
int line_count = decode_uint32(&buf[16]);
int token_count = decode_uint32(&buf[20]);
- const uint8_t *b = buf;
-
- b = &buf[24];
+ const uint8_t *b = &buf[24];
total_len -= 24;
identifiers.resize(identifier_count);
diff --git a/modules/gdscript/gd_tokenizer.h b/modules/gdscript/gd_tokenizer.h
index 4e868301a3..c935ce45a1 100644
--- a/modules/gdscript/gd_tokenizer.h
+++ b/modules/gdscript/gd_tokenizer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdscript/register_types.cpp b/modules/gdscript/register_types.cpp
index 41ea0c2a26..036274c8f2 100644
--- a/modules/gdscript/register_types.cpp
+++ b/modules/gdscript/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -37,103 +37,7 @@
GDScriptLanguage *script_language_gd = NULL;
ResourceFormatLoaderGDScript *resource_loader_gd = NULL;
ResourceFormatSaverGDScript *resource_saver_gd = NULL;
-#if 0
-#ifdef TOOLS_ENABLED
-#include "editor/editor_import_export.h"
-#include "editor/editor_node.h"
-#include "editor/editor_settings.h"
-#include "gd_tokenizer.h"
-
-class EditorExportGDScript : public EditorExportPlugin {
-
- GDCLASS(EditorExportGDScript,EditorExportPlugin);
-
-public:
-
- virtual Vector<uint8_t> custom_export(String& p_path,const Ref<EditorExportPlatform> &p_platform) {
- //compile gdscript to bytecode
-
- if (EditorImportExport::get_singleton()->script_get_action()!=EditorImportExport::SCRIPT_ACTION_NONE) {
-
- if (p_path.ends_with(".gd")) {
- Vector<uint8_t> file = FileAccess::get_file_as_array(p_path);
- if (file.empty())
- return file;
- String txt;
- txt.parse_utf8((const char*)file.ptr(),file.size());
- file = GDTokenizerBuffer::parse_code_string(txt);
-
- if (!file.empty()) {
-
- if (EditorImportExport::get_singleton()->script_get_action()==EditorImportExport::SCRIPT_ACTION_ENCRYPT) {
-
- String tmp_path=EditorSettings::get_singleton()->get_settings_path().plus_file("tmp/script.gde");
- FileAccess *fa = FileAccess::open(tmp_path,FileAccess::WRITE);
- String skey=EditorImportExport::get_singleton()->script_get_encryption_key().to_lower();
- Vector<uint8_t> key;
- key.resize(32);
- for(int i=0;i<32;i++) {
- int v=0;
- if (i*2<skey.length()) {
- CharType ct = skey[i*2];
- if (ct>='0' && ct<='9')
- ct=ct-'0';
- else if (ct>='a' && ct<='f')
- ct=10+ct-'a';
- v|=ct<<4;
- }
-
- if (i*2+1<skey.length()) {
- CharType ct = skey[i*2+1];
- if (ct>='0' && ct<='9')
- ct=ct-'0';
- else if (ct>='a' && ct<='f')
- ct=10+ct-'a';
- v|=ct;
- }
- key[i]=v;
- }
- FileAccessEncrypted *fae=memnew(FileAccessEncrypted);
- Error err = fae->open_and_parse(fa,key,FileAccessEncrypted::MODE_WRITE_AES256);
- if (err==OK) {
-
- fae->store_buffer(file.ptr(),file.size());
- p_path=p_path.get_basename()+".gde";
- }
-
- memdelete(fae);
-
- file=FileAccess::get_file_as_array(tmp_path);
- return file;
-
-
- } else {
-
- p_path=p_path.get_basename()+".gdc";
- return file;
- }
- }
-
- }
- }
-
- return Vector<uint8_t>();
- }
-
-
- EditorExportGDScript(){}
-
-};
-
-static void register_editor_plugin() {
-
- Ref<EditorExportGDScript> egd = memnew( EditorExportGDScript );
- EditorImportExport::get_singleton()->add_export_plugin(egd);
-}
-
-#endif
-#endif
void register_gdscript_types() {
ClassDB::register_class<GDScript>();
@@ -146,13 +50,8 @@ void register_gdscript_types() {
ResourceLoader::add_resource_format_loader(resource_loader_gd);
resource_saver_gd = memnew(ResourceFormatSaverGDScript);
ResourceSaver::add_resource_format_saver(resource_saver_gd);
-#if 0
-#ifdef TOOLS_ENABLED
-
- EditorNode::add_init_callback(register_editor_plugin);
-#endif
-#endif
}
+
void unregister_gdscript_types() {
ScriptServer::unregister_language(script_language_gd);
diff --git a/modules/gdscript/register_types.h b/modules/gdscript/register_types.h
index 4e969f5bd4..a674877f37 100644
--- a/modules/gdscript/register_types.h
+++ b/modules/gdscript/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp
index f241a96e58..1b932f040e 100644
--- a/modules/gridmap/grid_map.cpp
+++ b/modules/gridmap/grid_map.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -46,7 +46,13 @@ bool GridMap::_set(const StringName &p_name, const Variant &p_value) {
set_theme(p_value);
} else if (name == "cell_size") {
- set_cell_size(p_value);
+ if (p_value.get_type() == Variant::INT || p_value.get_type() == Variant::REAL) {
+ //compatibility
+ float cs = p_value;
+ set_cell_size(Vector3(cs, cs, cs));
+ } else {
+ set_cell_size(p_value);
+ }
} else if (name == "cell_octant_size") {
set_octant_size(p_value);
} else if (name == "cell_center_x") {
@@ -96,25 +102,6 @@ bool GridMap::_set(const StringName &p_name, const Variant &p_value) {
}
_recreate_octant_data();
- } else if (name.begins_with("areas/")) {
- int which = name.get_slicec('/', 1).to_int();
- String what = name.get_slicec('/', 2);
- if (what == "bounds") {
- ERR_FAIL_COND_V(area_map.has(which), false);
- create_area(which, p_value);
- return true;
- }
-
- ERR_FAIL_COND_V(!area_map.has(which), false);
-
- if (what == "name")
- area_set_name(which, p_value);
- else if (what == "disable_distance")
- area_set_portal_disable_distance(which, p_value);
- else if (what == "exterior_portal")
- area_set_portal_disable_color(which, p_value);
- else
- return false;
} else
return false;
@@ -158,19 +145,6 @@ bool GridMap::_get(const StringName &p_name, Variant &r_ret) const {
d["cells"] = cells;
r_ret = d;
- } else if (name.begins_with("areas/")) {
- int which = name.get_slicec('/', 1).to_int();
- String what = name.get_slicec('/', 2);
- if (what == "bounds")
- r_ret = area_get_bounds(which);
- else if (what == "name")
- r_ret = area_get_name(which);
- else if (what == "disable_distance")
- r_ret = area_get_portal_disable_distance(which);
- else if (what == "exterior_portal")
- r_ret = area_is_exterior_portal(which);
- else
- return false;
} else
return false;
@@ -181,7 +155,7 @@ void GridMap::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary"));
p_list->push_back(PropertyInfo(Variant::NIL, "Cell", PROPERTY_HINT_NONE, "cell_", PROPERTY_USAGE_GROUP));
- p_list->push_back(PropertyInfo(Variant::REAL, "cell_size", PROPERTY_HINT_RANGE, "0.01,16384,0.01"));
+ p_list->push_back(PropertyInfo(Variant::VECTOR3, "cell_size"));
p_list->push_back(PropertyInfo(Variant::INT, "cell_octant_size", PROPERTY_HINT_RANGE, "1,1024,1"));
p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_x"));
p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_y"));
@@ -189,16 +163,6 @@ void GridMap::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::REAL, "cell_scale"));
p_list->push_back(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
-
- for (const Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
-
- String base = "areas/" + itos(E->key()) + "/";
- p_list->push_back(PropertyInfo(Variant::RECT3, base + "bounds", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
- p_list->push_back(PropertyInfo(Variant::STRING, base + "name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
- p_list->push_back(PropertyInfo(Variant::REAL, base + "disable_distance", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
- p_list->push_back(PropertyInfo(Variant::COLOR, base + "disable_color", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
- p_list->push_back(PropertyInfo(Variant::BOOL, base + "exterior_portal", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
- }
}
void GridMap::set_theme(const Ref<MeshLibrary> &p_theme) {
@@ -218,12 +182,13 @@ Ref<MeshLibrary> GridMap::get_theme() const {
return theme;
}
-void GridMap::set_cell_size(float p_size) {
+void GridMap::set_cell_size(const Vector3 &p_size) {
+ ERR_FAIL_COND(p_size.x < 0.001 || p_size.y < 0.001 || p_size.z < 0.001);
cell_size = p_size;
_recreate_octant_data();
}
-float GridMap::get_cell_size() const {
+Vector3 GridMap::get_cell_size() const {
return cell_size;
}
@@ -268,20 +233,6 @@ bool GridMap::get_center_z() const {
return center_z;
}
-int GridMap::_find_area(const IndexKey &p_pos) const {
-
- for (const Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
- //this should somehow be faster...
- const Area &a = *E->get();
- if (p_pos.x >= a.from.x && p_pos.x < a.to.x &&
- p_pos.y >= a.from.y && p_pos.y < a.to.y &&
- p_pos.z >= a.from.z && p_pos.z < a.to.z) {
- return E->key();
- }
- }
-
- return 0;
-}
void GridMap::set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_rot) {
ERR_FAIL_INDEX(ABS(p_x), 1 << 20);
@@ -297,58 +248,30 @@ void GridMap::set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_rot) {
ok.x = p_x / octant_size;
ok.y = p_y / octant_size;
ok.z = p_z / octant_size;
- ok.area = _find_area(key);
-
- if (cell_map.has(key)) {
-
- int prev_item = cell_map[key].item;
- OctantKey octantkey = ok;
-
- ERR_FAIL_COND(!octant_map.has(octantkey));
- Octant &g = *octant_map[octantkey];
- ERR_FAIL_COND(!g.items.has(prev_item));
- ERR_FAIL_COND(!g.items[prev_item].cells.has(key));
-
- g.items[prev_item].cells.erase(key);
- if (g.items[prev_item].cells.size() == 0) {
- VS::get_singleton()->free(g.items[prev_item].multimesh_instance);
- g.items.erase(prev_item);
- }
- if (g.items.empty()) {
-
- PhysicsServer::get_singleton()->free(g.static_body);
- if (g.collision_debug.is_valid()) {
- PhysicsServer::get_singleton()->free(g.collision_debug);
- PhysicsServer::get_singleton()->free(g.collision_debug_instance);
- }
-
- memdelete(&g);
- octant_map.erase(octantkey);
- } else {
+ if (p_item < 0) {
+ //erase
+ if (cell_map.has(key)) {
+ OctantKey octantkey = ok;
+ ERR_FAIL_COND(!octant_map.has(octantkey));
+ Octant &g = *octant_map[octantkey];
+ g.cells.erase(key);
g.dirty = true;
+ cell_map.erase(key);
+ _queue_octants_dirty();
}
- cell_map.erase(key);
-
- _queue_dirty_map();
- }
-
- if (p_item < 0)
return;
+ }
OctantKey octantkey = ok;
- //add later
if (!octant_map.has(octantkey)) {
-
+ //create octant because it does not exist
Octant *g = memnew(Octant);
g->dirty = true;
g->static_body = PhysicsServer::get_singleton()->body_create(PhysicsServer::BODY_MODE_STATIC);
PhysicsServer::get_singleton()->body_attach_object_instance_id(g->static_body, get_instance_id());
- if (is_inside_world())
- PhysicsServer::get_singleton()->body_set_space(g->static_body, get_world()->get_space());
-
SceneTree *st = SceneTree::get_singleton();
if (st && st->is_debugging_collisions_hint()) {
@@ -356,45 +279,26 @@ void GridMap::set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_rot) {
g->collision_debug = VisualServer::get_singleton()->mesh_create();
g->collision_debug_instance = VisualServer::get_singleton()->instance_create();
VisualServer::get_singleton()->instance_set_base(g->collision_debug_instance, g->collision_debug);
- if (is_inside_world()) {
- VisualServer::get_singleton()->instance_set_scenario(g->collision_debug_instance, get_world()->get_scenario());
- VisualServer::get_singleton()->instance_set_transform(g->collision_debug_instance, get_global_transform());
- }
}
octant_map[octantkey] = g;
- }
-
- Octant &g = *octant_map[octantkey];
- if (!g.items.has(p_item)) {
- Octant::ItemInstances ii;
- if (theme.is_valid() && theme->has_item(p_item)) {
- ii.mesh = theme->get_item_mesh(p_item);
- ii.shape = theme->get_item_shape(p_item);
- ii.navmesh = theme->get_item_navmesh(p_item);
+ if (is_inside_world()) {
+ _octant_enter_world(octantkey);
+ _octant_transform(octantkey);
}
- ii.multimesh = Ref<MultiMesh>(memnew(MultiMesh));
- ii.multimesh->set_color_format(MultiMesh::COLOR_NONE);
- ii.multimesh->set_transform_format(MultiMesh::TRANSFORM_3D);
- ii.multimesh->set_mesh(ii.mesh);
- ii.multimesh_instance = VS::get_singleton()->instance_create();
- VS::get_singleton()->instance_set_base(ii.multimesh_instance, ii.multimesh->get_rid());
- VS::get_singleton()->instance_geometry_set_flag(ii.multimesh_instance, VS::INSTANCE_FLAG_USE_BAKED_LIGHT, true);
-
- g.items[p_item] = ii;
}
- Octant::ItemInstances &ii = g.items[p_item];
- ii.cells.insert(key);
+ Octant &g = *octant_map[octantkey];
+ g.cells.insert(key);
g.dirty = true;
+ _queue_octants_dirty();
- _queue_dirty_map();
-
- cell_map[key] = Cell();
- Cell &c = cell_map[key];
+ Cell c;
c.item = p_item;
c.rot = p_rot;
+
+ cell_map[key] = c;
}
int GridMap::get_cell_item(int p_x, int p_y, int p_z) const {
@@ -429,122 +333,57 @@ int GridMap::get_cell_item_orientation(int p_x, int p_y, int p_z) const {
return cell_map[key].rot;
}
-void GridMap::_octant_enter_tree(const OctantKey &p_key) {
- ERR_FAIL_COND(!octant_map.has(p_key));
- if (navigation) {
- Octant &g = *octant_map[p_key];
-
- Vector3 ofs(cell_size * 0.5 * int(center_x), cell_size * 0.5 * int(center_y), cell_size * 0.5 * int(center_z));
- _octant_clear_navmesh(p_key);
-
- for (Map<int, Octant::ItemInstances>::Element *E = g.items.front(); E; E = E->next()) {
- Octant::ItemInstances &ii = E->get();
-
- for (Set<IndexKey>::Element *F = ii.cells.front(); F; F = F->next()) {
-
- IndexKey ik = F->get();
- Map<IndexKey, Cell>::Element *C = cell_map.find(ik);
- ERR_CONTINUE(!C);
-
- Vector3 cellpos = Vector3(ik.x, ik.y, ik.z);
-
- Transform xform;
-
- if (clip && ((clip_above && cellpos[clip_axis] > clip_floor) || (!clip_above && cellpos[clip_axis] < clip_floor))) {
-
- xform.basis.set_zero();
-
- } else {
-
- xform.basis.set_orthogonal_index(C->get().rot);
- }
-
- xform.set_origin(cellpos * cell_size + ofs);
- xform.basis.scale(Vector3(cell_scale, cell_scale, cell_scale));
- // add the item's navmesh at given xform to GridMap's Navigation ancestor
- if (ii.navmesh.is_valid()) {
- int nm_id = navigation->navmesh_create(ii.navmesh, xform, this);
- Octant::NavMesh nm;
- nm.id = nm_id;
- nm.xform = xform;
- g.navmesh_ids[ik] = nm;
- }
- }
- }
- }
-}
-
-void GridMap::_octant_enter_world(const OctantKey &p_key) {
+void GridMap::_octant_transform(const OctantKey &p_key) {
ERR_FAIL_COND(!octant_map.has(p_key));
Octant &g = *octant_map[p_key];
PhysicsServer::get_singleton()->body_set_state(g.static_body, PhysicsServer::BODY_STATE_TRANSFORM, get_global_transform());
- PhysicsServer::get_singleton()->body_set_space(g.static_body, get_world()->get_space());
- //print_line("BODYPOS: "+get_global_transform());
if (g.collision_debug_instance.is_valid()) {
- VS::get_singleton()->instance_set_scenario(g.collision_debug_instance, get_world()->get_scenario());
VS::get_singleton()->instance_set_transform(g.collision_debug_instance, get_global_transform());
- if (area_map.has(p_key.area)) {
- VS::get_singleton()->instance_set_room(g.collision_debug_instance, area_map[p_key.area]->instance);
- }
}
- for (Map<int, Octant::ItemInstances>::Element *E = g.items.front(); E; E = E->next()) {
-
- VS::get_singleton()->instance_set_scenario(E->get().multimesh_instance, get_world()->get_scenario());
- VS::get_singleton()->instance_set_transform(E->get().multimesh_instance, get_global_transform());
- //print_line("INSTANCEPOS: "+get_global_transform());
- if (area_map.has(p_key.area)) {
- VS::get_singleton()->instance_set_room(E->get().multimesh_instance, area_map[p_key.area]->instance);
- }
+ for (int i = 0; i < g.multimesh_instances.size(); i++) {
+ VS::get_singleton()->instance_set_transform(g.multimesh_instances[i].instance, get_global_transform());
}
}
-void GridMap::_octant_transform(const OctantKey &p_key) {
-
- ERR_FAIL_COND(!octant_map.has(p_key));
+bool GridMap::_octant_update(const OctantKey &p_key) {
+ ERR_FAIL_COND_V(!octant_map.has(p_key), false);
Octant &g = *octant_map[p_key];
- PhysicsServer::get_singleton()->body_set_state(g.static_body, PhysicsServer::BODY_STATE_TRANSFORM, get_global_transform());
+ if (!g.dirty)
+ return false;
- if (g.collision_debug_instance.is_valid()) {
- VS::get_singleton()->instance_set_transform(g.collision_debug_instance, get_global_transform());
- }
+ //erase body shapes
+ PhysicsServer::get_singleton()->body_clear_shapes(g.static_body);
- for (Map<int, Octant::ItemInstances>::Element *E = g.items.front(); E; E = E->next()) {
+ //erase body shapes debug
+ if (g.collision_debug.is_valid()) {
- VS::get_singleton()->instance_set_transform(E->get().multimesh_instance, get_global_transform());
- //print_line("UPDATEPOS: "+get_global_transform());
+ VS::get_singleton()->mesh_clear(g.collision_debug);
}
-}
-void GridMap::_octant_clear_navmesh(const OctantKey &p_key) {
- Octant &g = *octant_map[p_key];
+ //erase navigation
if (navigation) {
for (Map<IndexKey, Octant::NavMesh>::Element *E = g.navmesh_ids.front(); E; E = E->next()) {
- Octant::NavMesh *nvm = &E->get();
- if (nvm && nvm->id) {
- navigation->navmesh_remove(E->get().id);
- }
+ navigation->navmesh_remove(E->get().id);
}
g.navmesh_ids.clear();
}
-}
-void GridMap::_octant_update(const OctantKey &p_key) {
- ERR_FAIL_COND(!octant_map.has(p_key));
- Octant &g = *octant_map[p_key];
- if (!g.dirty)
- return;
-
- Ref<Mesh> mesh;
+ //erase multimeshes
- _octant_clear_navmesh(p_key);
- PhysicsServer::get_singleton()->body_clear_shapes(g.static_body);
+ for (int i = 0; i < g.multimesh_instances.size(); i++) {
- if (g.collision_debug.is_valid()) {
+ VS::get_singleton()->free(g.multimesh_instances[i].instance);
+ VS::get_singleton()->free(g.multimesh_instances[i].multimesh);
+ }
+ g.multimesh_instances.clear();
- VS::get_singleton()->mesh_clear(g.collision_debug);
+ if (g.cells.size() == 0) {
+ //octant no longer needed
+ _octant_clean_up(p_key);
+ return true;
}
PoolVector<Vector3> col_debug;
@@ -554,80 +393,111 @@ void GridMap::_octant_update(const OctantKey &p_key) {
* set item's multimesh's instance count to number of cells which have this item
* and set said multimesh bounding box to one containing all cells which have this item
*/
- for (Map<int, Octant::ItemInstances>::Element *E = g.items.front(); E; E = E->next()) {
- Octant::ItemInstances &ii = E->get();
+ Map<int, List<Pair<Transform, IndexKey> > > multimesh_items;
+
+ print_line("updating octant " + itos(p_key.x) + ", " + itos(p_key.y) + ", " + itos(p_key.z) + " cells: " + itos(g.cells.size()));
- ii.multimesh->set_instance_count(ii.cells.size());
+ for (Set<IndexKey>::Element *E = g.cells.front(); E; E = E->next()) {
- Rect3 aabb;
- Rect3 mesh_aabb = ii.mesh.is_null() ? Rect3() : ii.mesh->get_aabb();
+ ERR_CONTINUE(!cell_map.has(E->get()));
+ const Cell &c = cell_map[E->get()];
- Vector3 ofs(cell_size * 0.5 * int(center_x), cell_size * 0.5 * int(center_y), cell_size * 0.5 * int(center_z));
+ if (!theme.is_valid() || !theme->has_item(c.item))
+ continue;
//print_line("OCTANT, CELLS: "+itos(ii.cells.size()));
- int idx = 0;
- // foreach cell containing this item type
- for (Set<IndexKey>::Element *F = ii.cells.front(); F; F = F->next()) {
- IndexKey ik = F->get();
- Map<IndexKey, Cell>::Element *C = cell_map.find(ik);
- ERR_CONTINUE(!C);
- Vector3 cellpos = Vector3(ik.x, ik.y, ik.z);
+ Vector3 cellpos = Vector3(E->get().x, E->get().y, E->get().z);
+ Vector3 ofs(cell_size.x * 0.5 * int(center_x), cell_size.y * 0.5 * int(center_y), cell_size.z * 0.5 * int(center_z));
- Transform xform;
+ Transform xform;
- if (clip && ((clip_above && cellpos[clip_axis] > clip_floor) || (!clip_above && cellpos[clip_axis] < clip_floor))) {
+ if (clip && ((clip_above && cellpos[clip_axis] > clip_floor) || (!clip_above && cellpos[clip_axis] < clip_floor))) {
- xform.basis.set_zero();
+ } else {
+ }
- } else {
+ xform.basis.set_orthogonal_index(c.rot);
+ xform.set_origin(cellpos * cell_size + ofs);
+ xform.basis.scale(Vector3(cell_scale, cell_scale, cell_scale));
- xform.basis.set_orthogonal_index(C->get().rot);
+ if (theme->get_item_mesh(c.item).is_valid()) {
+ if (!multimesh_items.has(c.item)) {
+ multimesh_items[c.item] = List<Pair<Transform, IndexKey> >();
}
- xform.set_origin(cellpos * cell_size + ofs);
- xform.basis.scale(Vector3(cell_scale, cell_scale, cell_scale));
+ Pair<Transform, IndexKey> p;
+ p.first = xform;
+ p.second = E->get();
+ multimesh_items[c.item].push_back(p);
+ }
- ii.multimesh->set_instance_transform(idx, xform);
- //ii.multimesh->set_instance_transform(idx,Transform() );
- //ii.multimesh->set_instance_color(idx,Color(1,1,1,1));
- //print_line("MMINST: "+xform);
+ Vector<MeshLibrary::ShapeData> shapes = theme->get_item_shapes(c.item);
+ // add the item's shape at given xform to octant's static_body
+ for (int i = 0; i < shapes.size(); i++) {
+ // add the item's shape
+ if (!shapes[i].shape.is_valid())
+ continue;
+ PhysicsServer::get_singleton()->body_add_shape(g.static_body, shapes[i].shape->get_rid(), xform * shapes[i].local_transform);
+ if (g.collision_debug.is_valid()) {
+ shapes[i].shape->add_vertices_to_array(col_debug, xform * shapes[i].local_transform);
+ }
+
+ //print_line("PHIS x: "+xform);
+ }
- if (idx == 0) {
+ // add the item's navmesh at given xform to GridMap's Navigation ancestor
+ Ref<NavigationMesh> navmesh = theme->get_item_navmesh(c.item);
+ if (navmesh.is_valid()) {
+ Octant::NavMesh nm;
+ nm.xform = xform;
- aabb = xform.xform(mesh_aabb);
+ if (navigation) {
+ nm.id = navigation->navmesh_create(navmesh, xform, this);
} else {
-
- aabb.merge_with(xform.xform(mesh_aabb));
+ nm.id = -1;
}
+ g.navmesh_ids[E->get()] = nm;
+ }
+ }
- // add the item's shape at given xform to octant's static_body
- if (ii.shape.is_valid()) {
- // add the item's shape
- PhysicsServer::get_singleton()->body_add_shape(g.static_body, ii.shape->get_rid(), xform);
- if (g.collision_debug.is_valid()) {
- ii.shape->add_vertices_to_array(col_debug, xform);
- }
+ //update multimeshes
+ for (Map<int, List<Pair<Transform, IndexKey> > >::Element *E = multimesh_items.front(); E; E = E->next()) {
+ print_line("multimesh item " + itos(E->key()) + " transforms " + itos(E->get().size()));
+ Octant::MultimeshInstance mmi;
- //print_line("PHIS x: "+xform);
- }
+ RID mm = VS::get_singleton()->multimesh_create();
+ VS::get_singleton()->multimesh_allocate(mm, E->get().size(), VS::MULTIMESH_TRANSFORM_3D, VS::MULTIMESH_COLOR_NONE);
+ VS::get_singleton()->multimesh_set_mesh(mm, theme->get_item_mesh(E->key())->get_rid());
- // add the item's navmesh at given xform to GridMap's Navigation ancestor
- if (navigation) {
- if (ii.navmesh.is_valid()) {
- int nm_id = navigation->navmesh_create(ii.navmesh, xform, this);
- Octant::NavMesh nm;
- nm.id = nm_id;
- nm.xform = xform;
- g.navmesh_ids[ik] = nm;
- }
- }
+ int idx = 0;
+ for (List<Pair<Transform, IndexKey> >::Element *F = E->get().front(); F; F = F->next()) {
+ VS::get_singleton()->multimesh_instance_set_transform(mm, idx, F->get().first);
+#ifdef TOOLS_ENABLED
+
+ Octant::MultimeshInstance::Item it;
+ it.index = idx;
+ it.transform = F->get().first;
+ it.key = F->get().second;
+ mmi.items.push_back(it);
+#endif
idx++;
}
- //ii.multimesh->set_aabb(aabb);
+ RID instance = VS::get_singleton()->instance_create();
+ VS::get_singleton()->instance_set_base(instance, mm);
+
+ if (is_inside_tree()) {
+ VS::get_singleton()->instance_set_scenario(instance, get_world()->get_scenario());
+ VS::get_singleton()->instance_set_transform(instance, get_global_transform());
+ }
+
+ mmi.multimesh = mm;
+ mmi.instance = instance;
+
+ g.multimesh_instances.push_back(mmi);
}
if (col_debug.size()) {
@@ -644,6 +514,39 @@ void GridMap::_octant_update(const OctantKey &p_key) {
}
g.dirty = false;
+
+ return false;
+}
+
+void GridMap::_octant_enter_world(const OctantKey &p_key) {
+
+ ERR_FAIL_COND(!octant_map.has(p_key));
+ Octant &g = *octant_map[p_key];
+ PhysicsServer::get_singleton()->body_set_state(g.static_body, PhysicsServer::BODY_STATE_TRANSFORM, get_global_transform());
+ PhysicsServer::get_singleton()->body_set_space(g.static_body, get_world()->get_space());
+ //print_line("BODYPOS: "+get_global_transform());
+
+ if (g.collision_debug_instance.is_valid()) {
+ VS::get_singleton()->instance_set_scenario(g.collision_debug_instance, get_world()->get_scenario());
+ VS::get_singleton()->instance_set_transform(g.collision_debug_instance, get_global_transform());
+ }
+
+ for (int i = 0; i < g.multimesh_instances.size(); i++) {
+ VS::get_singleton()->instance_set_scenario(g.multimesh_instances[i].instance, get_world()->get_scenario());
+ VS::get_singleton()->instance_set_transform(g.multimesh_instances[i].instance, get_global_transform());
+ }
+
+ if (navigation && theme.is_valid()) {
+ for (Map<IndexKey, Octant::NavMesh>::Element *F = g.navmesh_ids.front(); F; F = F->next()) {
+
+ if (cell_map.has(F->key()) && F->get().id < 0) {
+ Ref<NavigationMesh> nm = theme->get_item_navmesh(cell_map[F->key()].item);
+ if (nm.is_valid()) {
+ F->get().id = navigation->navmesh_create(nm, F->get().xform, this);
+ }
+ }
+ }
+ }
}
void GridMap::_octant_exit_world(const OctantKey &p_key) {
@@ -655,16 +558,52 @@ void GridMap::_octant_exit_world(const OctantKey &p_key) {
if (g.collision_debug_instance.is_valid()) {
- VS::get_singleton()->instance_set_room(g.collision_debug_instance, RID());
VS::get_singleton()->instance_set_scenario(g.collision_debug_instance, RID());
}
- for (Map<int, Octant::ItemInstances>::Element *E = g.items.front(); E; E = E->next()) {
+ for (int i = 0; i < g.multimesh_instances.size(); i++) {
+ VS::get_singleton()->instance_set_scenario(g.multimesh_instances[i].instance, RID());
+ }
+
+ if (navigation) {
+ for (Map<IndexKey, Octant::NavMesh>::Element *F = g.navmesh_ids.front(); F; F = F->next()) {
+
+ if (F->get().id >= 0) {
+ navigation->navmesh_remove(F->get().id);
+ F->get().id = -1;
+ }
+ }
+ }
+}
+
+void GridMap::_octant_clean_up(const OctantKey &p_key) {
+
+ ERR_FAIL_COND(!octant_map.has(p_key));
+ Octant &g = *octant_map[p_key];
+
+ if (g.collision_debug.is_valid())
+ VS::get_singleton()->free(g.collision_debug);
+ if (g.collision_debug_instance.is_valid())
+ VS::get_singleton()->free(g.collision_debug_instance);
+
+ PhysicsServer::get_singleton()->free(g.static_body);
+
+ //erase navigation
+ if (navigation) {
+ for (Map<IndexKey, Octant::NavMesh>::Element *E = g.navmesh_ids.front(); E; E = E->next()) {
+ navigation->navmesh_remove(E->get().id);
+ }
+ g.navmesh_ids.clear();
+ }
+
+ //erase multimeshes
+
+ for (int i = 0; i < g.multimesh_instances.size(); i++) {
- VS::get_singleton()->instance_set_scenario(E->get().multimesh_instance, RID());
- //VS::get_singleton()->instance_set_transform(E->get().multimesh_instance,get_global_transform());
- VS::get_singleton()->instance_set_room(E->get().multimesh_instance, RID());
+ VS::get_singleton()->free(g.multimesh_instances[i].instance);
+ VS::get_singleton()->free(g.multimesh_instances[i].multimesh);
}
+ g.multimesh_instances.clear();
}
void GridMap::_notification(int p_what) {
@@ -673,19 +612,22 @@ void GridMap::_notification(int p_what) {
case NOTIFICATION_ENTER_WORLD: {
- _update_area_instances();
+ Spatial *c = this;
+ while (c) {
+ navigation = Object::cast_to<Navigation>(c);
+ if (navigation) {
+ break;
+ }
+
+ c = Object::cast_to<Spatial>(c->get_parent());
+ }
+
+ last_transform = get_global_transform();
for (Map<OctantKey, Octant *>::Element *E = octant_map.front(); E; E = E->next()) {
- //IndexKey ik;
- //ik.key = E->key().indexkey;
_octant_enter_world(E->key());
- _octant_update(E->key());
}
- awaiting_update = false;
-
- last_transform = get_global_transform();
-
} break;
case NOTIFICATION_TRANSFORM_CHANGED: {
@@ -706,104 +648,47 @@ void GridMap::_notification(int p_what) {
_octant_exit_world(E->key());
}
- //_queue_dirty_map(MAP_DIRTY_INSTANCES|MAP_DIRTY_TRANSFORMS);
- //_update_dirty_map_callback();
- //_update_area_instances();
-
- } break;
- case NOTIFICATION_ENTER_TREE: {
-
- Spatial *c = this;
- while (c) {
- navigation = c->cast_to<Navigation>();
- if (navigation) {
- break;
- }
-
- c = c->get_parent()->cast_to<Spatial>();
- }
-
- if (navigation) {
- for (Map<OctantKey, Octant *>::Element *E = octant_map.front(); E; E = E->next()) {
- if (navigation) {
- _octant_enter_tree(E->key());
- }
- }
- }
-
- _queue_dirty_map();
- } break;
- case NOTIFICATION_EXIT_TREE: {
- for (Map<OctantKey, Octant *>::Element *E = octant_map.front(); E; E = E->next()) {
- if (navigation) {
- _octant_clear_navmesh(E->key());
- }
- }
-
navigation = NULL;
+ //_queue_octants_dirty(MAP_DIRTY_INSTANCES|MAP_DIRTY_TRANSFORMS);
+ //_update_octants_callback();
+ //_update_area_instances();
+
} break;
}
}
-void GridMap::_queue_dirty_map() {
+void GridMap::_queue_octants_dirty() {
if (awaiting_update)
return;
- if (is_inside_world()) {
-
- MessageQueue::get_singleton()->push_call(this, "_update_dirty_map_callback");
- awaiting_update = true;
- }
+ MessageQueue::get_singleton()->push_call(this, "_update_octants_callback");
+ awaiting_update = true;
}
void GridMap::_recreate_octant_data() {
Map<IndexKey, Cell> cell_copy = cell_map;
- _clear_internal(true);
+ _clear_internal();
for (Map<IndexKey, Cell>::Element *E = cell_copy.front(); E; E = E->next()) {
set_cell_item(E->key().x, E->key().y, E->key().z, E->get().item, E->get().rot);
}
}
-void GridMap::_clear_internal(bool p_keep_areas) {
+void GridMap::_clear_internal() {
for (Map<OctantKey, Octant *>::Element *E = octant_map.front(); E; E = E->next()) {
if (is_inside_world())
_octant_exit_world(E->key());
- for (Map<int, Octant::ItemInstances>::Element *F = E->get()->items.front(); F; F = F->next()) {
-
- VS::get_singleton()->free(F->get().multimesh_instance);
- }
-
- if (E->get()->collision_debug.is_valid())
- VS::get_singleton()->free(E->get()->collision_debug);
- if (E->get()->collision_debug_instance.is_valid())
- VS::get_singleton()->free(E->get()->collision_debug_instance);
-
- PhysicsServer::get_singleton()->free(E->get()->static_body);
+ _octant_clean_up(E->key());
memdelete(E->get());
}
octant_map.clear();
cell_map.clear();
-
- if (p_keep_areas)
- return;
-
- for (Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
-
- VS::get_singleton()->free(E->get()->base_portal);
- VS::get_singleton()->free(E->get()->instance);
- for (int i = 0; i < E->get()->portals.size(); i++) {
- VS::get_singleton()->free(E->get()->portals[i].instance);
- }
-
- memdelete(E->get());
- }
}
void GridMap::clear() {
@@ -816,13 +701,23 @@ void GridMap::resource_changed(const RES &p_res) {
_recreate_octant_data();
}
-void GridMap::_update_dirty_map_callback() {
+void GridMap::_update_octants_callback() {
if (!awaiting_update)
return;
+ List<OctantKey> to_delete;
for (Map<OctantKey, Octant *>::Element *E = octant_map.front(); E; E = E->next()) {
- _octant_update(E->key());
+
+ if (_octant_update(E->key())) {
+ to_delete.push_back(E->key());
+ }
+ }
+
+ while (to_delete.front()) {
+ memdelete(octant_map[to_delete.front()->get()]);
+ octant_map.erase(to_delete.front()->get());
+ to_delete.pop_back();
}
awaiting_update = false;
@@ -844,7 +739,7 @@ void GridMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_cell_item_orientation", "x", "y", "z"), &GridMap::get_cell_item_orientation);
//ClassDB::bind_method(D_METHOD("_recreate_octants"),&GridMap::_recreate_octants);
- ClassDB::bind_method(D_METHOD("_update_dirty_map_callback"), &GridMap::_update_dirty_map_callback);
+ ClassDB::bind_method(D_METHOD("_update_octants_callback"), &GridMap::_update_octants_callback);
ClassDB::bind_method(D_METHOD("resource_changed", "resource"), &GridMap::resource_changed);
ClassDB::bind_method(D_METHOD("set_center_x", "enable"), &GridMap::set_center_x);
@@ -856,19 +751,6 @@ void GridMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_clip", "enabled", "clipabove", "floor", "axis"), &GridMap::set_clip, DEFVAL(true), DEFVAL(0), DEFVAL(Vector3::AXIS_X));
- ClassDB::bind_method(D_METHOD("create_area", "id", "area"), &GridMap::create_area);
- ClassDB::bind_method(D_METHOD("area_get_bounds", "area"), &GridMap::area_get_bounds);
- ClassDB::bind_method(D_METHOD("area_set_exterior_portal", "area", "enable"), &GridMap::area_set_exterior_portal);
- ClassDB::bind_method(D_METHOD("area_set_name", "area", "name"), &GridMap::area_set_name);
- ClassDB::bind_method(D_METHOD("area_get_name", "area"), &GridMap::area_get_name);
- ClassDB::bind_method(D_METHOD("area_is_exterior_portal", "area"), &GridMap::area_is_exterior_portal);
- ClassDB::bind_method(D_METHOD("area_set_portal_disable_distance", "area", "distance"), &GridMap::area_set_portal_disable_distance);
- ClassDB::bind_method(D_METHOD("area_get_portal_disable_distance", "area"), &GridMap::area_get_portal_disable_distance);
- ClassDB::bind_method(D_METHOD("area_set_portal_disable_color", "area", "color"), &GridMap::area_set_portal_disable_color);
- ClassDB::bind_method(D_METHOD("area_get_portal_disable_color", "area"), &GridMap::area_get_portal_disable_color);
- ClassDB::bind_method(D_METHOD("erase_area", "area"), &GridMap::erase_area);
- ClassDB::bind_method(D_METHOD("get_unused_area_id"), &GridMap::get_unused_area_id);
-
ClassDB::bind_method(D_METHOD("clear"), &GridMap::clear);
ClassDB::bind_method(D_METHOD("get_meshes"), &GridMap::get_meshes);
@@ -895,341 +777,13 @@ void GridMap::set_clip(bool p_enabled, bool p_clip_above, int p_floor, Vector3::
g->dirty = true;
}
awaiting_update = true;
- _update_dirty_map_callback();
-}
-
-void GridMap::_update_areas() {
-
- //clear the portals
- for (Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
- //this should somehow be faster...
- Area &a = *E->get();
- a.portals.clear();
- if (a.instance.is_valid()) {
- VisualServer::get_singleton()->free(a.instance);
- a.instance = RID();
- }
- }
-
- //test all areas against all areas and create portals - this sucks (slow :( )
- for (Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
- Area &a = *E->get();
- if (a.exterior_portal) //that's pretty much all it does... yes it is
- continue;
- Vector3 from_a(a.from.x, a.from.y, a.from.z);
- Vector3 to_a(a.to.x, a.to.y, a.to.z);
-
- for (Map<int, Area *>::Element *F = area_map.front(); F; F = F->next()) {
-
- Area &b = *F->get();
- Vector3 from_b(b.from.x, b.from.y, b.from.z);
- Vector3 to_b(b.to.x, b.to.y, b.to.z);
-
- // initially test intersection and discards
- int axis = -1;
- float sign = 0;
- bool valid = true;
- Vector3 axmin, axmax;
-
- for (int i = 0; i < 3; i++) {
-
- if (from_a[i] == to_b[i]) {
-
- if (axis != -1) {
- valid = false;
- break;
- }
-
- axis = i;
- sign = -1;
- } else if (from_b[i] == to_a[i]) {
-
- if (axis != -1) {
- valid = false;
- break;
- }
- axis = i;
- sign = +1;
- }
-
- if (from_a[i] > to_b[i] || to_a[i] < from_b[i]) {
- valid = false;
- break;
- } else {
-
- axmin[i] = (from_a[i] > from_b[i]) ? from_a[i] : from_b[i];
- axmax[i] = (to_a[i] < to_b[i]) ? to_a[i] : to_b[i];
- }
- }
-
- if (axis == -1 || !valid)
- continue;
-
- Transform xf;
-
- for (int i = 0; i < 3; i++) {
-
- int ax = (axis + i) % 3;
- Vector3 axis_vec;
- float scale = (i == 0) ? sign : ((axmax[ax] - axmin[ax]) * cell_size);
- axis_vec[ax] = scale;
- xf.basis.set_axis((2 + i) % 3, axis_vec);
- xf.origin[i] = axmin[i] * cell_size;
- }
-
- Area::Portal portal;
- portal.xform = xf;
- a.portals.push_back(portal);
- }
- }
-
- _update_area_instances();
-}
-
-void GridMap::_update_area_instances() {
-
- Transform base_xform;
- if (_in_tree)
- base_xform = get_global_transform();
-
- for (Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
- //this should somehow be faster...
- Area &a = *E->get();
- if (a.instance.is_valid() != _in_tree) {
-
- if (!_in_tree) {
-
- for (int i = 0; i < a.portals.size(); i++) {
-
- Area::Portal &p = a.portals[i];
- ERR_CONTINUE(!p.instance.is_valid());
- VisualServer::get_singleton()->free(p.instance);
- p.instance = RID();
- }
-
- VisualServer::get_singleton()->free(a.instance);
- a.instance = RID();
-
- } else {
-
- //a.instance = VisualServer::get_singleton()->instance_create2(base_room,get_world()->get_scenario());
- for (int i = 0; i < a.portals.size(); i++) {
-
- Area::Portal &p = a.portals[i];
- ERR_CONTINUE(p.instance.is_valid());
- p.instance = VisualServer::get_singleton()->instance_create2(a.base_portal, get_world()->get_scenario());
- VisualServer::get_singleton()->instance_set_room(p.instance, a.instance);
- }
- }
- }
-
- if (a.instance.is_valid()) {
- Transform xform;
-
- Vector3 from_a(a.from.x, a.from.y, a.from.z);
- Vector3 to_a(a.to.x, a.to.y, a.to.z);
-
- for (int i = 0; i < 3; i++) {
- xform.origin[i] = from_a[i] * cell_size;
- Vector3 s;
- s[i] = (to_a[i] - from_a[i]) * cell_size;
- xform.basis.set_axis(i, s);
- }
-
- VisualServer::get_singleton()->instance_set_transform(a.instance, base_xform * xform);
-
- for (int i = 0; i < a.portals.size(); i++) {
-
- Area::Portal &p = a.portals[i];
- ERR_CONTINUE(!p.instance.is_valid());
-
- VisualServer::get_singleton()->instance_set_transform(p.instance, base_xform * xform);
- }
- }
- }
-}
-
-Error GridMap::create_area(int p_id, const Rect3 &p_bounds) {
-
- ERR_FAIL_COND_V(area_map.has(p_id), ERR_ALREADY_EXISTS);
- ERR_EXPLAIN("ID 0 is taken as global area, start from 1");
- ERR_FAIL_COND_V(p_id == 0, ERR_INVALID_PARAMETER);
- ERR_FAIL_COND_V(p_bounds.has_no_area(), ERR_INVALID_PARAMETER);
-
- // FIRST VALIDATE AREA
- IndexKey from, to;
- from.x = p_bounds.position.x;
- from.y = p_bounds.position.y;
- from.z = p_bounds.position.z;
- to.x = p_bounds.position.x + p_bounds.size.x;
- to.y = p_bounds.position.y + p_bounds.size.y;
- to.z = p_bounds.position.z + p_bounds.size.z;
-
- for (Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
- //this should somehow be faster...
- Area &a = *E->get();
-
- //does it interset with anything else?
-
- if (from.x >= a.to.x ||
- to.x <= a.from.x ||
- from.y >= a.to.y ||
- to.y <= a.from.y ||
- from.z >= a.to.z ||
- to.z <= a.from.z) {
-
- // all good
- } else {
-
- return ERR_INVALID_PARAMETER;
- }
- }
-
- Area *area = memnew(Area);
- area->from = from;
- area->to = to;
- area->portal_disable_distance = 0;
- area->exterior_portal = false;
- area->name = "Area " + itos(p_id);
- area_map[p_id] = area;
- _recreate_octant_data();
- return OK;
-}
-
-Rect3 GridMap::area_get_bounds(int p_area) const {
-
- ERR_FAIL_COND_V(!area_map.has(p_area), Rect3());
-
- const Area *a = area_map[p_area];
- Rect3 aabb;
- aabb.position = Vector3(a->from.x, a->from.y, a->from.z);
- aabb.size = Vector3(a->to.x, a->to.y, a->to.z) - aabb.position;
-
- return aabb;
-}
-
-void GridMap::area_set_name(int p_area, const String &p_name) {
-
- ERR_FAIL_COND(!area_map.has(p_area));
-
- Area *a = area_map[p_area];
- a->name = p_name;
-}
-
-String GridMap::area_get_name(int p_area) const {
-
- ERR_FAIL_COND_V(!area_map.has(p_area), "");
-
- const Area *a = area_map[p_area];
- return a->name;
-}
-
-void GridMap::area_set_exterior_portal(int p_area, bool p_enable) {
-
- ERR_FAIL_COND(!area_map.has(p_area));
-
- Area *a = area_map[p_area];
- if (a->exterior_portal == p_enable)
- return;
- a->exterior_portal = p_enable;
-
- _recreate_octant_data();
-}
-
-bool GridMap::area_is_exterior_portal(int p_area) const {
-
- ERR_FAIL_COND_V(!area_map.has(p_area), false);
-
- const Area *a = area_map[p_area];
- return a->exterior_portal;
-}
-
-void GridMap::area_set_portal_disable_distance(int p_area, float p_distance) {
-
- ERR_FAIL_COND(!area_map.has(p_area));
-
- Area *a = area_map[p_area];
- a->portal_disable_distance = p_distance;
-}
-
-float GridMap::area_get_portal_disable_distance(int p_area) const {
-
- ERR_FAIL_COND_V(!area_map.has(p_area), 0);
-
- const Area *a = area_map[p_area];
- return a->portal_disable_distance;
-}
-
-void GridMap::area_set_portal_disable_color(int p_area, Color p_color) {
-
- ERR_FAIL_COND(!area_map.has(p_area));
-
- Area *a = area_map[p_area];
- a->portal_disable_color = p_color;
-}
-
-Color GridMap::area_get_portal_disable_color(int p_area) const {
-
- ERR_FAIL_COND_V(!area_map.has(p_area), Color());
-
- const Area *a = area_map[p_area];
- return a->portal_disable_color;
-}
-
-void GridMap::get_area_list(List<int> *p_areas) const {
-
- for (const Map<int, Area *>::Element *E = area_map.front(); E; E = E->next()) {
-
- p_areas->push_back(E->key());
- }
-}
-
-GridMap::Area::Portal::~Portal() {
-
- if (instance.is_valid())
- VisualServer::get_singleton()->free(instance);
-}
-
-GridMap::Area::Area() {
-
- base_portal = VisualServer::get_singleton()->portal_create();
- Vector<Point2> points;
- points.push_back(Point2(0, 1));
- points.push_back(Point2(1, 1));
- points.push_back(Point2(1, 0));
- points.push_back(Point2(0, 0));
- VisualServer::get_singleton()->portal_set_shape(base_portal, points);
-}
-
-GridMap::Area::~Area() {
-
- if (instance.is_valid())
- VisualServer::get_singleton()->free(instance);
- VisualServer::get_singleton()->free(base_portal);
-}
-
-void GridMap::erase_area(int p_area) {
-
- ERR_FAIL_COND(!area_map.has(p_area));
-
- Area *a = area_map[p_area];
- memdelete(a);
- area_map.erase(p_area);
- _recreate_octant_data();
-}
-
-int GridMap::get_unused_area_id() const {
-
- if (area_map.empty())
- return 1;
- else
- return area_map.back()->key() + 1;
+ _update_octants_callback();
}
void GridMap::set_cell_scale(float p_scale) {
cell_scale = p_scale;
- _queue_dirty_map();
+ _queue_octants_dirty();
}
float GridMap::get_cell_scale() const {
@@ -1242,7 +796,7 @@ Array GridMap::get_meshes() {
if (theme.is_null())
return Array();
- Vector3 ofs(cell_size * 0.5 * int(center_x), cell_size * 0.5 * int(center_y), cell_size * 0.5 * int(center_z));
+ Vector3 ofs(cell_size.x * 0.5 * int(center_x), cell_size.y * 0.5 * int(center_y), cell_size.z * 0.5 * int(center_z));
Array meshes;
for (Map<IndexKey, Cell>::Element *E = cell_map.front(); E; E = E->next()) {
@@ -1274,7 +828,7 @@ Array GridMap::get_meshes() {
GridMap::GridMap() {
- cell_size = 2;
+ cell_size = Vector3(2, 2, 2);
octant_size = 4;
awaiting_update = false;
_in_tree = false;
diff --git a/modules/gridmap/grid_map.h b/modules/gridmap/grid_map.h
index c386e4f66b..9e1d250680 100644
--- a/modules/gridmap/grid_map.h
+++ b/modules/gridmap/grid_map.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,8 +38,6 @@
//heh heh, godotsphir!! this shares no code and the design is completely different with previous projects i've done..
//should scale better with hardware that supports instancing
-class BakedLightInstance;
-
class GridMap : public Spatial {
GDCLASS(GridMap, Spatial);
@@ -96,21 +94,25 @@ class GridMap : public Spatial {
Transform xform;
};
- struct ItemInstances {
- Set<IndexKey> cells;
- Ref<Mesh> mesh;
- Ref<Shape> shape;
- Ref<MultiMesh> multimesh;
- RID multimesh_instance;
- Ref<NavigationMesh> navmesh;
+ struct MultimeshInstance {
+ RID instance;
+ RID multimesh;
+ struct Item {
+ int index;
+ Transform transform;
+ IndexKey key;
+ };
+
+ Vector<Item> items; //tools only, for changing visibility
};
+ Vector<MultimeshInstance> multimesh_instances;
+ Set<IndexKey> cells;
RID collision_debug;
RID collision_debug_instance;
bool dirty;
RID static_body;
- Map<int, ItemInstances> items;
Map<IndexKey, NavMesh> navmesh_ids;
};
@@ -120,7 +122,7 @@ class GridMap : public Spatial {
int16_t x;
int16_t y;
int16_t z;
- int16_t area;
+ int16_t empty;
};
uint64_t key;
@@ -137,7 +139,7 @@ class GridMap : public Spatial {
Transform last_transform;
bool _in_tree;
- float cell_size;
+ Vector3 cell_size;
int octant_size;
bool center_x, center_y, center_z;
float cell_scale;
@@ -148,35 +150,10 @@ class GridMap : public Spatial {
int clip_floor;
Vector3::Axis clip_axis;
- /**
- * @brief An Area is something like a room: it has doors, and Octants can choose to belong to it.
- */
- struct Area {
-
- String name;
- RID base_portal;
- RID instance;
- IndexKey from;
- IndexKey to;
- struct Portal {
- Transform xform;
- RID instance;
- ~Portal();
- };
- Vector<Portal> portals;
- float portal_disable_distance;
- Color portal_disable_color;
- bool exterior_portal;
-
- Area();
- ~Area();
- };
-
Ref<MeshLibrary> theme;
Map<OctantKey, Octant *> octant_map;
Map<IndexKey, Cell> cell_map;
- Map<int, Area *> area_map;
void _recreate_octant_data();
@@ -188,30 +165,24 @@ class GridMap : public Spatial {
float param[VS::LIGHT_PARAM_MAX];
};
- _FORCE_INLINE_ int _find_area(const IndexKey &p_pos) const;
-
_FORCE_INLINE_ Vector3 _octant_get_offset(const OctantKey &p_key) const {
return Vector3(p_key.x, p_key.y, p_key.z) * cell_size * octant_size;
}
void _octant_enter_world(const OctantKey &p_key);
- void _octant_enter_tree(const OctantKey &p_key);
void _octant_exit_world(const OctantKey &p_key);
- void _octant_update(const OctantKey &p_key);
+ bool _octant_update(const OctantKey &p_key);
+ void _octant_clean_up(const OctantKey &p_key);
void _octant_transform(const OctantKey &p_key);
- void _octant_clear_navmesh(const GridMap::OctantKey &);
bool awaiting_update;
- void _queue_dirty_map();
- void _update_dirty_map_callback();
+ void _queue_octants_dirty();
+ void _update_octants_callback();
void resource_changed(const RES &p_res);
- void _update_areas();
- void _update_area_instances();
-
- void _clear_internal(bool p_keep_areas = false);
+ void _clear_internal();
protected:
bool _set(const StringName &p_name, const Variant &p_value);
@@ -229,8 +200,8 @@ public:
void set_theme(const Ref<MeshLibrary> &p_theme);
Ref<MeshLibrary> get_theme() const;
- void set_cell_size(float p_size);
- float get_cell_size() const;
+ void set_cell_size(const Vector3 &p_size);
+ Vector3 get_cell_size() const;
void set_octant_size(int p_size);
int get_octant_size() const;
@@ -242,26 +213,12 @@ public:
void set_center_z(bool p_enable);
bool get_center_z() const;
- void set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_orientation = 0);
+ void set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_rot = 0);
int get_cell_item(int p_x, int p_y, int p_z) const;
int get_cell_item_orientation(int p_x, int p_y, int p_z) const;
void set_clip(bool p_enabled, bool p_clip_above = true, int p_floor = 0, Vector3::Axis p_axis = Vector3::AXIS_X);
- Error create_area(int p_id, const Rect3 &p_area);
- Rect3 area_get_bounds(int p_area) const;
- void area_set_exterior_portal(int p_area, bool p_enable);
- void area_set_name(int p_area, const String &p_name);
- String area_get_name(int p_area) const;
- bool area_is_exterior_portal(int p_area) const;
- void area_set_portal_disable_distance(int p_area, float p_distance);
- float area_get_portal_disable_distance(int p_area) const;
- void area_set_portal_disable_color(int p_area, Color p_color);
- Color area_get_portal_disable_color(int p_area) const;
- void get_area_list(List<int> *p_areas) const;
- void erase_area(int p_area);
- int get_unused_area_id() const;
-
void set_cell_scale(float p_scale);
float get_cell_scale() const;
@@ -273,4 +230,4 @@ public:
~GridMap();
};
-#endif // CUBE_GRID_MAP_H
+#endif // GRID_MAP_H
diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/grid_map_editor_plugin.cpp
index 954e865bcd..6f0a13e07f 100644
--- a/modules/gridmap/grid_map_editor_plugin.cpp
+++ b/modules/gridmap/grid_map_editor_plugin.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -178,30 +178,6 @@ void GridMapEditor::_menu_option(int p_option) {
int idx = options->get_popup()->get_item_index(MENU_OPTION_DUPLICATE_SELECTS);
options->get_popup()->set_item_checked(idx, !options->get_popup()->is_item_checked(idx));
} break;
- case MENU_OPTION_SELECTION_MAKE_AREA:
- case MENU_OPTION_SELECTION_MAKE_EXTERIOR_CONNECTOR: {
-
- if (!selection.active)
- break;
- int area = node->get_unused_area_id();
- Error err = node->create_area(area, Rect3(selection.begin, selection.end - selection.begin + Vector3(1, 1, 1)));
- if (err != OK) {
- }
- if (p_option == MENU_OPTION_SELECTION_MAKE_EXTERIOR_CONNECTOR) {
-
- node->area_set_exterior_portal(area, true);
- }
- _update_areas_display();
- update_areas();
-
- } break;
- case MENU_OPTION_REMOVE_AREA: {
- if (selected_area < 1)
- return;
- node->erase_area(selected_area);
- _update_areas_display();
- update_areas();
- } break;
case MENU_OPTION_SELECTION_DUPLICATE:
if (!(selection.active && input_action == INPUT_NONE))
return;
@@ -241,12 +217,15 @@ void GridMapEditor::_update_cursor_transform() {
}
void GridMapEditor::_update_selection_transform() {
+ Transform xf_zero;
+ xf_zero.basis.set_zero();
if (!selection.active) {
- Transform xf;
- xf.basis.set_zero();
- VisualServer::get_singleton()->instance_set_transform(selection_instance, xf);
+ VisualServer::get_singleton()->instance_set_transform(selection_instance, xf_zero);
+ for (int i = 0; i < 3; i++) {
+ VisualServer::get_singleton()->instance_set_transform(selection_level_instance[i], xf_zero);
+ }
return;
}
@@ -255,6 +234,27 @@ void GridMapEditor::_update_selection_transform() {
xf.origin = selection.begin * node->get_cell_size();
VisualServer::get_singleton()->instance_set_transform(selection_instance, node->get_global_transform() * xf);
+
+ for (int i = 0; i < 3; i++) {
+ if (i != edit_axis || (edit_floor[edit_axis] < selection.begin[edit_axis]) || (edit_floor[edit_axis] > selection.end[edit_axis] + 1)) {
+ VisualServer::get_singleton()->instance_set_transform(selection_level_instance[i], xf_zero);
+ } else {
+
+ Vector3 scale = (selection.end - selection.begin + Vector3(1, 1, 1));
+ scale[edit_axis] = 1.0;
+ Vector3 pos = selection.begin;
+ pos[edit_axis] = edit_floor[edit_axis];
+
+ scale *= node->get_cell_size();
+ pos *= node->get_cell_size();
+
+ Transform xf;
+ xf.basis.scale(scale);
+ xf.origin = pos;
+
+ VisualServer::get_singleton()->instance_set_transform(selection_level_instance[i], xf);
+ }
+ }
}
void GridMapEditor::_validate_selection() {
@@ -297,7 +297,7 @@ bool GridMapEditor::do_input_action(Camera *p_camera, const Point2 &p_point, boo
Plane p;
p.normal[edit_axis] = 1.0;
- p.d = edit_floor[edit_axis] * node->get_cell_size();
+ p.d = edit_floor[edit_axis] * node->get_cell_size()[edit_axis];
Vector3 inters;
if (!p.intersects_segment(from, from + normal * settings_pick_distance->get_value(), &inters))
@@ -313,7 +313,7 @@ bool GridMapEditor::do_input_action(Camera *p_camera, const Point2 &p_point, boo
}
int cell[3];
- float cell_size[3] = { node->get_cell_size(), node->get_cell_size(), node->get_cell_size() };
+ float cell_size[3] = { node->get_cell_size().x, node->get_cell_size().y, node->get_cell_size().z };
last_mouseover = Vector3(-1, -1, -1);
@@ -323,7 +323,7 @@ bool GridMapEditor::do_input_action(Camera *p_camera, const Point2 &p_point, boo
cell[i] = edit_floor[i];
else {
- cell[i] = inters[i] / node->get_cell_size();
+ cell[i] = inters[i] / node->get_cell_size()[i];
if (inters[i] < 0)
cell[i] -= 1; //compensate negative
grid_ofs[i] = cell[i] * cell_size[i];
@@ -403,7 +403,7 @@ void GridMapEditor::_delete_selection() {
if (!selection.active)
return;
- undo_redo->create_action("GridMap Delete Selection");
+ undo_redo->create_action(TTR("GridMap Delete Selection"));
for (int i = selection.begin.x; i <= selection.end.x; i++) {
for (int j = selection.begin.y; j <= selection.end.y; j++) {
@@ -487,7 +487,7 @@ void GridMapEditor::_duplicate_paste() {
Vector3 ofs = selection.current - selection.click;
if (items.size()) {
- undo_redo->create_action("GridMap Duplicate Selection");
+ undo_redo->create_action(TTR("GridMap Duplicate Selection"));
for (List<__Item>::Element *E = items.front(); E; E = E->next()) {
__Item &it = E->get();
Vector3 pos = it.pos + ofs;
@@ -513,146 +513,96 @@ bool GridMapEditor::forward_spatial_input_event(Camera *p_camera, const Ref<Inpu
return false;
}
- if (edit_mode->get_selected() == 0) { // regular click
-
- Ref<InputEventMouseButton> mb = p_event;
-
- if (mb.is_valid()) {
-
- if (mb->get_button_index() == BUTTON_WHEEL_UP && (mb->get_command() || mb->get_shift())) {
- if (mb->is_pressed())
- floor->set_value(floor->get_value() + mb->get_factor());
-
- return true; //eaten
- } else if (mb->get_button_index() == BUTTON_WHEEL_DOWN && (mb->get_command() || mb->get_shift())) {
- if (mb->is_pressed())
- floor->set_value(floor->get_value() - mb->get_factor());
- return true;
- }
-
- if (mb->is_pressed()) {
-
- if (mb->get_button_index() == BUTTON_LEFT) {
+ Ref<InputEventMouseButton> mb = p_event;
- if (input_action == INPUT_DUPLICATE) {
+ if (mb.is_valid()) {
- //paste
- _duplicate_paste();
- input_action = INPUT_NONE;
- _update_duplicate_indicator();
- } else if (mb->get_shift()) {
- input_action = INPUT_SELECT;
- } else if (mb->get_command())
- input_action = INPUT_COPY;
- else {
- input_action = INPUT_PAINT;
- set_items.clear();
- }
- } else if (mb->get_button_index() == BUTTON_RIGHT)
- if (input_action == INPUT_DUPLICATE) {
-
- input_action = INPUT_NONE;
- _update_duplicate_indicator();
- } else {
- input_action = INPUT_ERASE;
- set_items.clear();
- }
- else
- return false;
+ if (mb->get_button_index() == BUTTON_WHEEL_UP && (mb->get_command() || mb->get_shift())) {
+ if (mb->is_pressed())
+ floor->set_value(floor->get_value() + mb->get_factor());
- return do_input_action(p_camera, Point2(mb->get_position().x, mb->get_position().y), true);
- } else {
-
- if (
- (mb->get_button_index() == BUTTON_RIGHT && input_action == INPUT_ERASE) ||
- (mb->get_button_index() == BUTTON_LEFT && input_action == INPUT_PAINT)) {
+ return true; //eaten
+ } else if (mb->get_button_index() == BUTTON_WHEEL_DOWN && (mb->get_command() || mb->get_shift())) {
+ if (mb->is_pressed())
+ floor->set_value(floor->get_value() - mb->get_factor());
+ return true;
+ }
- if (set_items.size()) {
- undo_redo->create_action("GridMap Paint");
- for (List<SetItem>::Element *E = set_items.front(); E; E = E->next()) {
+ if (mb->is_pressed()) {
- const SetItem &si = E->get();
- undo_redo->add_do_method(node, "set_cell_item", si.pos.x, si.pos.y, si.pos.z, si.new_value, si.new_orientation);
- }
- for (List<SetItem>::Element *E = set_items.back(); E; E = E->prev()) {
+ if (mb->get_button_index() == BUTTON_LEFT) {
- const SetItem &si = E->get();
- undo_redo->add_undo_method(node, "set_cell_item", si.pos.x, si.pos.y, si.pos.z, si.old_value, si.old_orientation);
- }
+ if (input_action == INPUT_DUPLICATE) {
- undo_redo->commit_action();
- }
- set_items.clear();
+ //paste
+ _duplicate_paste();
input_action = INPUT_NONE;
- return true;
- }
-
- if (mb->get_button_index() == BUTTON_LEFT && input_action != INPUT_NONE) {
-
+ _update_duplicate_indicator();
+ } else if (mb->get_shift()) {
+ input_action = INPUT_SELECT;
+ } else if (mb->get_command())
+ input_action = INPUT_COPY;
+ else {
+ input_action = INPUT_PAINT;
set_items.clear();
- input_action = INPUT_NONE;
- return true;
}
- if (mb->get_button_index() == BUTTON_RIGHT && (input_action == INPUT_ERASE || input_action == INPUT_DUPLICATE)) {
+ } else if (mb->get_button_index() == BUTTON_RIGHT)
+ if (input_action == INPUT_DUPLICATE) {
+
input_action = INPUT_NONE;
- return true;
+ _update_duplicate_indicator();
+ } else {
+ input_action = INPUT_ERASE;
+ set_items.clear();
}
- }
- }
-
- Ref<InputEventMouseMotion> mm = p_event;
+ else
+ return false;
- if (mm.is_valid()) {
+ return do_input_action(p_camera, Point2(mb->get_position().x, mb->get_position().y), true);
+ } else {
- return do_input_action(p_camera, mm->get_position(), false);
- }
-
- } else if (edit_mode->get_selected() == 1) {
- //area mode, select an area
-
- Ref<InputEventMouseButton> mb = p_event;
-
- if (mb.is_valid()) {
-
- if (mb->get_button_index() == BUTTON_LEFT && mb->is_pressed()) {
+ if (
+ (mb->get_button_index() == BUTTON_RIGHT && input_action == INPUT_ERASE) ||
+ (mb->get_button_index() == BUTTON_LEFT && input_action == INPUT_PAINT)) {
- Point2 point = mb->get_position();
+ if (set_items.size()) {
+ undo_redo->create_action("GridMap Paint");
+ for (List<SetItem>::Element *E = set_items.front(); E; E = E->next()) {
- Camera *camera = p_camera;
- Vector3 from = camera->project_ray_origin(point);
- Vector3 normal = camera->project_ray_normal(point);
- Transform local_xform = node->get_global_transform().affine_inverse();
- from = local_xform.xform(from);
- normal = local_xform.basis.xform(normal).normalized();
+ const SetItem &si = E->get();
+ undo_redo->add_do_method(node, "set_cell_item", si.pos.x, si.pos.y, si.pos.z, si.new_value, si.new_orientation);
+ }
+ for (List<SetItem>::Element *E = set_items.back(); E; E = E->prev()) {
- List<int> areas;
- node->get_area_list(&areas);
+ const SetItem &si = E->get();
+ undo_redo->add_undo_method(node, "set_cell_item", si.pos.x, si.pos.y, si.pos.z, si.old_value, si.old_orientation);
+ }
- float min_d = 1e10;
- int min_area = -1;
+ undo_redo->commit_action();
+ }
+ set_items.clear();
+ input_action = INPUT_NONE;
+ return true;
+ }
- for (List<int>::Element *E = areas.front(); E; E = E->next()) {
+ if (mb->get_button_index() == BUTTON_LEFT && input_action != INPUT_NONE) {
- int area = E->get();
- Rect3 aabb = node->area_get_bounds(area);
- aabb.position *= node->get_cell_size();
- aabb.size *= node->get_cell_size();
+ set_items.clear();
+ input_action = INPUT_NONE;
+ return true;
+ }
+ if (mb->get_button_index() == BUTTON_RIGHT && (input_action == INPUT_ERASE || input_action == INPUT_DUPLICATE)) {
+ input_action = INPUT_NONE;
+ return true;
+ }
+ }
+ }
- Vector3 rclip, rnormal;
- if (!aabb.intersects_segment(from, from + normal * 10000, &rclip, &rnormal))
- continue;
+ Ref<InputEventMouseMotion> mm = p_event;
- float d = normal.dot(rclip);
- if (d < min_d) {
- min_d = d;
- min_area = area;
- }
- }
+ if (mm.is_valid()) {
- selected_area = min_area;
- update_areas();
- }
- }
+ return do_input_action(p_camera, mm->get_position(), false);
}
return false;
@@ -749,52 +699,6 @@ void GridMapEditor::update_pallete() {
last_theme = theme.operator->();
}
-void GridMapEditor::_area_renamed() {
-
- TreeItem *it = area_list->get_selected();
- int area = it->get_metadata(0);
- if (area < 1)
- return;
- node->area_set_name(area, it->get_text(0));
-}
-
-void GridMapEditor::_area_selected() {
-
- TreeItem *it = area_list->get_selected();
- int area = it->get_metadata(0);
- if (area < 1)
- return;
- selected_area = area;
-}
-
-void GridMapEditor::update_areas() {
-
- area_list->clear();
-
- List<int> areas;
- node->get_area_list(&areas);
-
- TreeItem *root = area_list->create_item(NULL);
- area_list->set_hide_root(true);
- TreeItem *selected = NULL;
-
- for (List<int>::Element *E = areas.front(); E; E = E->next()) {
-
- int area = E->get();
- TreeItem *ti = area_list->create_item(root);
- String name = node->area_get_name(area);
-
- ti->set_metadata(0, area);
- ti->set_text(0, name);
- ti->set_editable(0, true);
- if (area == selected_area)
- selected = ti;
- }
-
- if (selected)
- selected->select(0);
-}
-
void GridMapEditor::edit(GridMap *p_gridmap) {
node = p_gridmap;
@@ -806,7 +710,7 @@ void GridMapEditor::edit(GridMap *p_gridmap) {
_update_selection_transform();
_update_duplicate_indicator();
- spatial_editor = editor->get_editor_plugin_screen()->cast_to<SpatialEditorPlugin>();
+ spatial_editor = Object::cast_to<SpatialEditorPlugin>(editor->get_editor_plugin_screen());
if (!node) {
set_process(false);
@@ -816,13 +720,10 @@ void GridMapEditor::edit(GridMap *p_gridmap) {
VisualServer::get_singleton()->instance_set_visible(cursor_instance, false);
- _clear_areas();
-
return;
}
update_pallete();
- update_areas();
set_process(true);
@@ -840,6 +741,7 @@ void GridMapEditor::edit(GridMap *p_gridmap) {
//update grids
indicator_mat.instance();
indicator_mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ indicator_mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
indicator_mat->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
indicator_mat->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
indicator_mat->set_albedo(Color(0.8, 0.5, 0.1));
@@ -847,7 +749,7 @@ void GridMapEditor::edit(GridMap *p_gridmap) {
Vector<Vector3> grid_points[3];
Vector<Color> grid_colors[3];
- float cell_size[3] = { p_gridmap->get_cell_size(), p_gridmap->get_cell_size(), p_gridmap->get_cell_size() };
+ float cell_size[3] = { p_gridmap->get_cell_size().x, p_gridmap->get_cell_size().y, p_gridmap->get_cell_size().z };
for (int i = 0; i < 3; i++) {
@@ -894,7 +796,6 @@ void GridMapEditor::edit(GridMap *p_gridmap) {
update_grid();
_update_clip();
- _update_areas_display();
}
void GridMapEditor::_update_clip() {
@@ -912,7 +813,7 @@ void GridMapEditor::update_grid() {
//VS *vs = VS::get_singleton();
- grid_ofs[edit_axis] = edit_floor[edit_axis] * node->get_cell_size();
+ grid_ofs[edit_axis] = edit_floor[edit_axis] * node->get_cell_size()[edit_axis];
edit_grid_xform.origin = grid_ofs;
edit_grid_xform.basis = Basis();
@@ -931,13 +832,11 @@ void GridMapEditor::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
theme_pallete->connect("item_selected", this, "_item_selected_cbk");
- edit_mode->connect("item_selected", this, "_edit_mode_changed");
- area_list->connect("item_edited", this, "_area_renamed");
- area_list->connect("item_selected", this, "_area_selected");
for (int i = 0; i < 3; i++) {
grid[i] = VS::get_singleton()->mesh_create();
grid_instance[i] = VS::get_singleton()->instance_create2(grid[i], get_tree()->get_root()->get_world()->get_scenario());
+ selection_level_instance[i] = VisualServer::get_singleton()->instance_create2(selection_level_mesh[i], get_tree()->get_root()->get_world()->get_scenario());
}
selection_instance = VisualServer::get_singleton()->instance_create2(selection_mesh, get_tree()->get_root()->get_world()->get_scenario());
@@ -954,6 +853,7 @@ void GridMapEditor::_notification(int p_what) {
VS::get_singleton()->free(grid[i]);
grid_instance[i] = RID();
grid[i] = RID();
+ VisualServer::get_singleton()->free(selection_level_instance[i]);
}
VisualServer::get_singleton()->free(selection_instance);
@@ -962,6 +862,9 @@ void GridMapEditor::_notification(int p_what) {
duplicate_instance = RID();
} else if (p_what == NOTIFICATION_PROCESS) {
+ if (!node) {
+ return;
+ }
Transform xf = node->get_global_transform();
@@ -978,14 +881,14 @@ void GridMapEditor::_notification(int p_what) {
if (lock_view) {
- EditorNode *editor = get_tree()->get_root()->get_child(0)->cast_to<EditorNode>();
+ EditorNode *editor = Object::cast_to<EditorNode>(get_tree()->get_root()->get_child(0));
Plane p;
p.normal[edit_axis] = 1.0;
- p.d = edit_floor[edit_axis] * node->get_cell_size();
+ p.d = edit_floor[edit_axis] * node->get_cell_size()[edit_axis];
p = node->get_transform().xform(p); // plane to snap
- SpatialEditorPlugin *sep = editor->get_editor_plugin_screen()->cast_to<SpatialEditorPlugin>();
+ SpatialEditorPlugin *sep = Object::cast_to<SpatialEditorPlugin>(editor->get_editor_plugin_screen());
if (sep)
sep->snap_cursor_to_plane(p);
//editor->get_editor_plugin_screen()->call("snap_cursor_to_plane",p);
@@ -1021,85 +924,6 @@ void GridMapEditor::_item_selected_cbk(int idx) {
_update_cursor_instance();
}
-void GridMapEditor::_clear_areas() {
-
- for (int i = 0; i < areas.size(); i++) {
-
- VisualServer::get_singleton()->free(areas[i].instance);
- VisualServer::get_singleton()->free(areas[i].mesh);
- }
-
- areas.clear();
-}
-
-void GridMapEditor::_update_areas_display() {
- if (!node) {
- return;
- }
-#if 0
- _clear_areas();
- List<int> areas;
- node->get_area_list(&areas);
-
- Transform global_xf = node->get_global_transform();
-
- for(List<int>::Element *E=areas.front();E;E=E->next()) {
-
- int area = E->get();
- Color color;
- if (node->area_is_exterior_portal(area))
- color=Color(1,1,1,0.2);
- else
- color.set_hsv(Math::fmod(area*0.37,1),Math::fmod(area*0.75,1),1.0,0.2);
-
-
- RID material = VisualServer::get_singleton()->fixed_material_create();
- VisualServer::get_singleton()->fixed_material_set_param( material, VS::FIXED_MATERIAL_PARAM_DIFFUSE,color );
- VisualServer::get_singleton()->fixed_material_set_param( material, VS::FIXED_MATERIAL_PARAM_EMISSION,0.5 );
- VisualServer::get_singleton()->fixed_material_set_flag( material, VisualServer::FIXED_MATERIAL_FLAG_USE_ALPHA, true );
-
-
- RID mesh = VisualServer::get_singleton()->mesh_create();
-
- PoolVector<Plane> planes;
- for(int i=0;i<3;i++) {
-
- Vector3 axis;
- axis[i]=1.0;
- planes.push_back(Plane(axis,1));
- planes.push_back(Plane(-axis,0));
- }
-
- VisualServer::get_singleton()->mesh_add_surface_from_planes(mesh,planes);
- VisualServer::get_singleton()->mesh_surface_set_material(mesh,0,material,true);
-
- AreaDisplay ad;
- ad.mesh=mesh;
- ad.instance = VisualServer::get_singleton()->instance_create2(mesh,node->get_world()->get_scenario());
- Transform xform;
- Rect3 aabb = node->area_get_bounds(area);
- xform.origin=aabb.pos * node->get_cell_size();
- xform.basis.scale(aabb.size * node->get_cell_size());
- VisualServer::get_singleton()->instance_set_transform(ad.instance,global_xf * xform);
- this->areas.push_back(ad);
-
- }
-#endif
-}
-
-void GridMapEditor::_edit_mode_changed(int p_what) {
-
- if (p_what == 0) {
-
- theme_pallete->show();
- area_list->hide();
- } else {
-
- theme_pallete->hide();
- area_list->show();
- }
-}
-
void GridMapEditor::_floor_changed(float p_value) {
if (updating)
@@ -1109,6 +933,7 @@ void GridMapEditor::_floor_changed(float p_value) {
node->set_meta("_editor_floor_", Vector3(edit_floor[0], edit_floor[1], edit_floor[2]));
update_grid();
_update_clip();
+ _update_selection_transform();
}
void GridMapEditor::_bind_methods() {
@@ -1116,9 +941,6 @@ void GridMapEditor::_bind_methods() {
ClassDB::bind_method("_menu_option", &GridMapEditor::_menu_option);
ClassDB::bind_method("_configure", &GridMapEditor::_configure);
ClassDB::bind_method("_item_selected_cbk", &GridMapEditor::_item_selected_cbk);
- ClassDB::bind_method("_edit_mode_changed", &GridMapEditor::_edit_mode_changed);
- ClassDB::bind_method("_area_renamed", &GridMapEditor::_area_renamed);
- ClassDB::bind_method("_area_selected", &GridMapEditor::_area_selected);
ClassDB::bind_method("_floor_changed", &GridMapEditor::_floor_changed);
ClassDB::bind_method(D_METHOD("_set_display_mode", "mode"), &GridMapEditor::_set_display_mode);
@@ -1142,45 +964,43 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
spatial_editor_hb->hide();
options->set_text("Grid");
- options->get_popup()->add_check_item("Snap View", MENU_OPTION_LOCK_VIEW);
+ options->get_popup()->add_check_item(TTR("Snap View"), MENU_OPTION_LOCK_VIEW);
options->get_popup()->add_separator();
- options->get_popup()->add_item("Prev Level (" + keycode_get_string(KEY_MASK_CMD) + "Down Wheel)", MENU_OPTION_PREV_LEVEL);
- options->get_popup()->add_item("Next Level (" + keycode_get_string(KEY_MASK_CMD) + "Up Wheel)", MENU_OPTION_NEXT_LEVEL);
+ options->get_popup()->add_item(vformat(TTR("Prev Level (%sDown Wheel)"), keycode_get_string(KEY_MASK_CMD)), MENU_OPTION_PREV_LEVEL);
+ options->get_popup()->add_item(vformat(TTR("Next Level (%sUp Wheel)"), keycode_get_string(KEY_MASK_CMD)), MENU_OPTION_NEXT_LEVEL);
options->get_popup()->add_separator();
- options->get_popup()->add_check_item("Clip Disabled", MENU_OPTION_CLIP_DISABLED);
+ options->get_popup()->add_check_item(TTR("Clip Disabled"), MENU_OPTION_CLIP_DISABLED);
options->get_popup()->set_item_checked(options->get_popup()->get_item_index(MENU_OPTION_CLIP_DISABLED), true);
- options->get_popup()->add_check_item("Clip Above", MENU_OPTION_CLIP_ABOVE);
- options->get_popup()->add_check_item("Clip Below", MENU_OPTION_CLIP_BELOW);
+ options->get_popup()->add_check_item(TTR("Clip Above"), MENU_OPTION_CLIP_ABOVE);
+ options->get_popup()->add_check_item(TTR("Clip Below"), MENU_OPTION_CLIP_BELOW);
options->get_popup()->add_separator();
- options->get_popup()->add_check_item("Edit X Axis", MENU_OPTION_X_AXIS, KEY_Z);
- options->get_popup()->add_check_item("Edit Y Axis", MENU_OPTION_Y_AXIS, KEY_X);
- options->get_popup()->add_check_item("Edit Z Axis", MENU_OPTION_Z_AXIS, KEY_C);
+ options->get_popup()->add_check_item(TTR("Edit X Axis"), MENU_OPTION_X_AXIS, KEY_Z);
+ options->get_popup()->add_check_item(TTR("Edit Y Axis"), MENU_OPTION_Y_AXIS, KEY_X);
+ options->get_popup()->add_check_item(TTR("Edit Z Axis"), MENU_OPTION_Z_AXIS, KEY_C);
options->get_popup()->set_item_checked(options->get_popup()->get_item_index(MENU_OPTION_Y_AXIS), true);
options->get_popup()->add_separator();
- options->get_popup()->add_item("Cursor Rotate X", MENU_OPTION_CURSOR_ROTATE_X, KEY_A);
- options->get_popup()->add_item("Cursor Rotate Y", MENU_OPTION_CURSOR_ROTATE_Y, KEY_S);
- options->get_popup()->add_item("Cursor Rotate Z", MENU_OPTION_CURSOR_ROTATE_Z, KEY_D);
- options->get_popup()->add_item("Cursor Back Rotate X", MENU_OPTION_CURSOR_BACK_ROTATE_X, KEY_MASK_SHIFT + KEY_A);
- options->get_popup()->add_item("Cursor Back Rotate Y", MENU_OPTION_CURSOR_BACK_ROTATE_Y, KEY_MASK_SHIFT + KEY_S);
- options->get_popup()->add_item("Cursor Back Rotate Z", MENU_OPTION_CURSOR_BACK_ROTATE_Z, KEY_MASK_SHIFT + KEY_D);
- options->get_popup()->add_item("Cursor Clear Rotation", MENU_OPTION_CURSOR_CLEAR_ROTATION, KEY_W);
+ options->get_popup()->add_item(TTR("Cursor Rotate X"), MENU_OPTION_CURSOR_ROTATE_X, KEY_A);
+ options->get_popup()->add_item(TTR("Cursor Rotate Y"), MENU_OPTION_CURSOR_ROTATE_Y, KEY_S);
+ options->get_popup()->add_item(TTR("Cursor Rotate Z"), MENU_OPTION_CURSOR_ROTATE_Z, KEY_D);
+ options->get_popup()->add_item(TTR("Cursor Back Rotate X"), MENU_OPTION_CURSOR_BACK_ROTATE_X, KEY_MASK_SHIFT + KEY_A);
+ options->get_popup()->add_item(TTR("Cursor Back Rotate Y"), MENU_OPTION_CURSOR_BACK_ROTATE_Y, KEY_MASK_SHIFT + KEY_S);
+ options->get_popup()->add_item(TTR("Cursor Back Rotate Z"), MENU_OPTION_CURSOR_BACK_ROTATE_Z, KEY_MASK_SHIFT + KEY_D);
+ options->get_popup()->add_item(TTR("Cursor Clear Rotation"), MENU_OPTION_CURSOR_CLEAR_ROTATION, KEY_W);
options->get_popup()->add_separator();
options->get_popup()->add_check_item("Duplicate Selects", MENU_OPTION_DUPLICATE_SELECTS);
options->get_popup()->add_separator();
- options->get_popup()->add_item("Create Area", MENU_OPTION_SELECTION_MAKE_AREA, KEY_CONTROL + KEY_C);
- options->get_popup()->add_item("Create Exterior Connector", MENU_OPTION_SELECTION_MAKE_EXTERIOR_CONNECTOR);
- options->get_popup()->add_item("Erase Area", MENU_OPTION_REMOVE_AREA);
+ options->get_popup()->add_item(TTR("Create Area"), MENU_OPTION_SELECTION_MAKE_AREA, KEY_CONTROL + KEY_C);
+ options->get_popup()->add_item(TTR("Create Exterior Connector"), MENU_OPTION_SELECTION_MAKE_EXTERIOR_CONNECTOR);
+ options->get_popup()->add_item(TTR("Erase Area"), MENU_OPTION_REMOVE_AREA);
options->get_popup()->add_separator();
- options->get_popup()->add_item("Selection -> Duplicate", MENU_OPTION_SELECTION_DUPLICATE, KEY_MASK_SHIFT + KEY_INSERT);
- options->get_popup()->add_item("Selection -> Clear", MENU_OPTION_SELECTION_CLEAR, KEY_MASK_SHIFT + KEY_DELETE);
- //options->get_popup()->add_separator();
- //options->get_popup()->add_item("Configure",MENU_OPTION_CONFIGURE);
+ options->get_popup()->add_item(TTR("Selection -> Duplicate"), MENU_OPTION_SELECTION_DUPLICATE, KEY_MASK_SHIFT + KEY_INSERT);
+ options->get_popup()->add_item(TTR("Selection -> Clear"), MENU_OPTION_SELECTION_CLEAR, KEY_MASK_SHIFT + KEY_DELETE);
options->get_popup()->add_separator();
- options->get_popup()->add_item("Settings", MENU_OPTION_GRIDMAP_SETTINGS);
+ options->get_popup()->add_item(TTR("Settings"), MENU_OPTION_GRIDMAP_SETTINGS);
settings_dialog = memnew(ConfirmationDialog);
- settings_dialog->set_title("GridMap Settings");
+ settings_dialog->set_title(TTR("GridMap Settings"));
add_child(settings_dialog);
settings_vbc = memnew(VBoxContainer);
settings_vbc->set_custom_minimum_size(Size2(200, 0));
@@ -1191,7 +1011,7 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
settings_pick_distance->set_min(500.0f);
settings_pick_distance->set_step(1.0f);
settings_pick_distance->set_value(EDITOR_DEF("editors/grid_map/pick_distance", 5000.0));
- settings_vbc->add_margin_child("Pick Distance:", settings_pick_distance);
+ settings_vbc->add_margin_child(TTR("Pick Distance:"), settings_pick_distance);
clip_mode = CLIP_DISABLED;
options->get_popup()->connect("id_pressed", this, "_menu_option");
@@ -1200,15 +1020,6 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
add_child(hb);
hb->set_h_size_flags(SIZE_EXPAND_FILL);
- edit_mode = memnew(OptionButton);
- edit_mode->set_area_as_parent_rect();
- edit_mode->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_BEGIN, 24);
- edit_mode->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 14);
- edit_mode->add_item("Tiles");
- edit_mode->add_item("Areas");
- hb->add_child(edit_mode);
- edit_mode->set_h_size_flags(SIZE_EXPAND_FILL);
-
mode_thumbnail = memnew(ToolButton);
mode_thumbnail->set_toggle_mode(true);
mode_thumbnail->set_pressed(true);
@@ -1226,17 +1037,11 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
EDITOR_DEF("editors/grid_map/preview_size", 64);
display_mode = DISPLAY_THUMBNAIL;
- selected_area = -1;
theme_pallete = memnew(ItemList);
add_child(theme_pallete);
theme_pallete->set_v_size_flags(SIZE_EXPAND_FILL);
- area_list = memnew(Tree);
- add_child(area_list);
- area_list->set_v_size_flags(SIZE_EXPAND_FILL);
- area_list->hide();
-
spatial_editor_hb->add_child(memnew(VSeparator));
Label *fl = memnew(Label);
fl->set_text(" Floor: ");
@@ -1270,6 +1075,7 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
PoolVector<Vector3> lines;
PoolVector<Vector3> triangles;
+ PoolVector<Vector3> square[3];
for (int i = 0; i < 6; i++) {
@@ -1309,12 +1115,41 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
lines.push_back(b);
}
+ for (int i = 0; i < 3; i++) {
+ Vector3 points[4];
+ for (int j = 0; j < 4; j++) {
+
+ static const bool orderx[4] = { 0, 1, 1, 0 };
+ static const bool ordery[4] = { 0, 0, 1, 1 };
+
+ Vector3 sp;
+ if (orderx[j]) {
+ sp[(i + 1) % 3] = 1.0;
+ }
+ if (ordery[j]) {
+ sp[(i + 2) % 3] = 1.0;
+ }
+
+ points[j] = sp;
+ }
+
+ for (int j = 0; j < 4; j++) {
+
+ Vector3 ofs;
+ ofs[i] += 0.01;
+ square[i].push_back(points[j] - ofs);
+ square[i].push_back(points[(j + 1) % 4] - ofs);
+ square[i].push_back(points[j] + ofs);
+ square[i].push_back(points[(j + 1) % 4] + ofs);
+ }
+ }
+
Array d;
d.resize(VS::ARRAY_MAX);
inner_mat.instance();
- inner_mat->set_albedo(Color(0.7, 0.7, 1.0, 0.3));
- inner_mat->set_flag(SpatialMaterial::FLAG_ONTOP, true);
+ inner_mat->set_albedo(Color(0.7, 0.7, 1.0, 0.2));
+ //inner_mat->set_flag(SpatialMaterial::FLAG_ONTOP, true);
inner_mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
inner_mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
@@ -1323,12 +1158,19 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
VisualServer::get_singleton()->mesh_surface_set_material(selection_mesh, 0, inner_mat->get_rid());
outer_mat.instance();
- outer_mat->set_albedo(Color(0.7, 0.7, 1.0, 0.3));
+ outer_mat->set_albedo(Color(0.7, 0.7, 1.0, 0.8));
outer_mat->set_flag(SpatialMaterial::FLAG_ONTOP, true);
outer_mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
outer_mat->set_line_width(3.0);
outer_mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ selection_floor_mat.instance();
+ selection_floor_mat->set_albedo(Color(0.80, 0.80, 1.0, 1));
+ selection_floor_mat->set_flag(SpatialMaterial::FLAG_ONTOP, true);
+ selection_floor_mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ selection_floor_mat->set_line_width(3.0);
+ //selection_floor_mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+
d[VS::ARRAY_VERTEX] = lines;
VisualServer::get_singleton()->mesh_add_surface_from_arrays(selection_mesh, VS::PRIMITIVE_LINES, d);
VisualServer::get_singleton()->mesh_surface_set_material(selection_mesh, 1, outer_mat->get_rid());
@@ -1340,6 +1182,13 @@ GridMapEditor::GridMapEditor(EditorNode *p_editor) {
d[VS::ARRAY_VERTEX] = lines;
VisualServer::get_singleton()->mesh_add_surface_from_arrays(duplicate_mesh, VS::PRIMITIVE_LINES, d);
VisualServer::get_singleton()->mesh_surface_set_material(duplicate_mesh, 1, outer_mat->get_rid());
+
+ for (int i = 0; i < 3; i++) {
+ d[VS::ARRAY_VERTEX] = square[i];
+ selection_level_mesh[i] = VS::get_singleton()->mesh_create();
+ VisualServer::get_singleton()->mesh_add_surface_from_arrays(selection_level_mesh[i], VS::PRIMITIVE_LINES, d);
+ VisualServer::get_singleton()->mesh_surface_set_material(selection_level_mesh[i], 0, selection_floor_mat->get_rid());
+ }
}
selection.active = false;
@@ -1356,6 +1205,9 @@ GridMapEditor::~GridMapEditor() {
VisualServer::get_singleton()->free(grid_instance[i]);
if (cursor_instance.is_valid())
VisualServer::get_singleton()->free(cursor_instance);
+ if (selection_level_instance[i].is_valid()) {
+ VisualServer::get_singleton()->free(selection_level_instance[i]);
+ }
}
VisualServer::get_singleton()->free(selection_mesh);
@@ -1365,13 +1217,11 @@ GridMapEditor::~GridMapEditor() {
VisualServer::get_singleton()->free(duplicate_mesh);
if (duplicate_instance.is_valid())
VisualServer::get_singleton()->free(duplicate_instance);
-
- _clear_areas();
}
void GridMapEditorPlugin::edit(Object *p_object) {
- gridmap_editor->edit(p_object ? p_object->cast_to<GridMap>() : NULL);
+ gridmap_editor->edit(Object::cast_to<GridMap>(p_object));
}
bool GridMapEditorPlugin::handles(Object *p_object) const {
diff --git a/modules/gridmap/grid_map_editor_plugin.h b/modules/gridmap/grid_map_editor_plugin.h
index 1572f4fbe5..ecbfbf2d65 100644
--- a/modules/gridmap/grid_map_editor_plugin.h
+++ b/modules/gridmap/grid_map_editor_plugin.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,7 +75,6 @@ class GridMapEditor : public VBoxContainer {
Panel *panel;
MenuButton *options;
SpinBox *floor;
- OptionButton *edit_mode;
ToolButton *mode_thumbnail;
ToolButton *mode_list;
HBoxContainer *spatial_editor_hb;
@@ -110,12 +109,15 @@ class GridMapEditor : public VBoxContainer {
RID cursor_instance;
RID selection_mesh;
RID selection_instance;
+ RID selection_level_mesh[3];
+ RID selection_level_instance[3];
RID duplicate_mesh;
RID duplicate_instance;
Ref<SpatialMaterial> indicator_mat;
Ref<SpatialMaterial> inner_mat;
Ref<SpatialMaterial> outer_mat;
+ Ref<SpatialMaterial> selection_floor_mat;
bool updating;
@@ -137,7 +139,6 @@ class GridMapEditor : public VBoxContainer {
int display_mode;
int selected_pallete;
- int selected_area;
int cursor_rot;
enum Menu {
@@ -177,18 +178,12 @@ class GridMapEditor : public VBoxContainer {
RID instance;
};
- Vector<AreaDisplay> areas;
-
- void _update_areas_display();
- void _clear_areas();
-
void update_grid();
void _configure();
void _menu_option(int);
void update_pallete();
void _set_display_mode(int p_mode);
ItemList *theme_pallete;
- Tree *area_list;
void _item_selected_cbk(int idx);
void _update_cursor_transform();
void _update_cursor_instance();
@@ -199,14 +194,9 @@ class GridMapEditor : public VBoxContainer {
void _update_selection_transform();
void _validate_selection();
- void _edit_mode_changed(int p_what);
- void _area_renamed();
- void _area_selected();
-
void _floor_changed(float p_value);
void _delete_selection();
- void update_areas();
EditorNode *editor;
bool do_input_action(Camera *p_camera, const Point2 &p_point, bool p_click);
@@ -236,11 +226,11 @@ class GridMapEditorPlugin : public EditorPlugin {
EditorNode *editor;
public:
- virtual bool forward_spatial_input_event(Camera *p_camera, const Ref<InputEvent> &p_event) { return gridmap_editor->forward_spatial_input_event(p_camera, p_event); }
+ virtual bool forward_spatial_gui_input(Camera *p_camera, const Ref<InputEvent> &p_event) { return gridmap_editor->forward_spatial_input_event(p_camera, p_event); }
virtual String get_name() const { return "GridMap"; }
bool has_main_screen() const { return false; }
- virtual void edit(Object *p_node);
- virtual bool handles(Object *p_node) const;
+ virtual void edit(Object *p_object);
+ virtual bool handles(Object *p_object) const;
virtual void make_visible(bool p_visible);
GridMapEditorPlugin(EditorNode *p_node);
diff --git a/modules/gridmap/register_types.cpp b/modules/gridmap/register_types.cpp
index e4def9378f..e2f6b57c04 100644
--- a/modules/gridmap/register_types.cpp
+++ b/modules/gridmap/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gridmap/register_types.h b/modules/gridmap/register_types.h
index 1978353fc3..c50f89155f 100644
--- a/modules/gridmap/register_types.h
+++ b/modules/gridmap/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp
index 19df27b962..d883b0f280 100644
--- a/modules/hdr/image_loader_hdr.cpp
+++ b/modules/hdr/image_loader_hdr.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,7 +34,7 @@
#include "thirdparty/tinyexr/tinyexr.h"
-Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear) {
+Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
String header = f->get_token();
diff --git a/modules/hdr/image_loader_hdr.h b/modules/hdr/image_loader_hdr.h
index 127833ebd0..e6703dc142 100644
--- a/modules/hdr/image_loader_hdr.h
+++ b/modules/hdr/image_loader_hdr.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,7 +38,7 @@
class ImageLoaderHDR : public ImageFormatLoader {
public:
- virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear);
+ virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
ImageLoaderHDR();
};
diff --git a/modules/hdr/register_types.cpp b/modules/hdr/register_types.cpp
index e4f7c14aa7..808b168432 100644
--- a/modules/hdr/register_types.cpp
+++ b/modules/hdr/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/hdr/register_types.h b/modules/hdr/register_types.h
index 3d901ea003..e453192d9c 100644
--- a/modules/hdr/register_types.h
+++ b/modules/hdr/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/jpg/image_loader_jpegd.cpp b/modules/jpg/image_loader_jpegd.cpp
index 8c73b69f1b..57ec074bbb 100644
--- a/modules/jpg/image_loader_jpegd.cpp
+++ b/modules/jpg/image_loader_jpegd.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -89,7 +89,7 @@ Error jpeg_load_image_from_buffer(Image *p_image, const uint8_t *p_buffer, int p
return OK;
}
-Error ImageLoaderJPG::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear) {
+Error ImageLoaderJPG::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
PoolVector<uint8_t> src_image;
int src_image_len = f->get_len();
diff --git a/modules/jpg/image_loader_jpegd.h b/modules/jpg/image_loader_jpegd.h
index aa073b493d..6a2f042412 100644
--- a/modules/jpg/image_loader_jpegd.h
+++ b/modules/jpg/image_loader_jpegd.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,7 +38,7 @@
class ImageLoaderJPG : public ImageFormatLoader {
public:
- virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear);
+ virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
ImageLoaderJPG();
};
diff --git a/modules/jpg/register_types.cpp b/modules/jpg/register_types.cpp
index 2379bee0df..85dee90eb0 100644
--- a/modules/jpg/register_types.cpp
+++ b/modules/jpg/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/jpg/register_types.h b/modules/jpg/register_types.h
index c14f860742..3d912a4398 100644
--- a/modules/jpg/register_types.h
+++ b/modules/jpg/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/nativescript/api_generator.cpp b/modules/nativescript/api_generator.cpp
index 47162bfc49..fdd5a2ea19 100644
--- a/modules/nativescript/api_generator.cpp
+++ b/modules/nativescript/api_generator.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,6 +33,7 @@
#include "class_db.h"
#include "core/global_constants.h"
+#include "core/pair.h"
#include "core/project_settings.h"
#include "os/file_access.h"
@@ -93,6 +94,11 @@ struct SignalAPI {
Map<int, Variant> default_arguments;
};
+struct EnumAPI {
+ String name;
+ List<Pair<int, String> > values;
+};
+
struct ClassAPI {
String class_name;
String super_class_name;
@@ -109,8 +115,28 @@ struct ClassAPI {
List<PropertyAPI> properties;
List<ConstantAPI> constants;
List<SignalAPI> signals_;
+ List<EnumAPI> enums;
};
+static String get_type_name(const PropertyInfo &info) {
+ if (info.type == Variant::INT && (info.usage & PROPERTY_USAGE_CLASS_IS_ENUM)) {
+ return String("enum.") + String(info.class_name).replace(".", "::");
+ }
+ if (info.class_name != StringName()) {
+ return info.class_name;
+ }
+ if (info.hint == PROPERTY_HINT_RESOURCE_TYPE) {
+ return info.hint_string;
+ }
+ if (info.type == Variant::NIL && (info.usage & PROPERTY_USAGE_NIL_IS_VARIANT)) {
+ return "Variant";
+ }
+ if (info.type == Variant::NIL) {
+ return "void";
+ }
+ return Variant::get_type_name(info.type);
+}
+
/*
* Reads the entire Godot API to a list
*/
@@ -155,10 +181,9 @@ List<ClassAPI> generate_c_api_classes() {
class_api.is_instanciable = !class_api.is_singleton && ClassDB::can_instance(class_name);
{
- bool is_reference = false;
List<StringName> inheriters;
ClassDB::get_inheriters_from_class("Reference", &inheriters);
- is_reference = !!inheriters.find(class_name);
+ bool is_reference = !!inheriters.find(class_name);
// @Unclear
class_api.is_reference = !class_api.is_singleton && is_reference;
}
@@ -195,12 +220,8 @@ List<ClassAPI> generate_c_api_classes() {
if (argument.name.find(":") != -1) {
type = argument.name.get_slice(":", 1);
name = argument.name.get_slice(":", 0);
- } else if (argument.hint == PROPERTY_HINT_RESOURCE_TYPE) {
- type = argument.hint_string;
- } else if (argument.type == Variant::NIL) {
- type = "Variant";
} else {
- type = Variant::get_type_name(argument.type);
+ type = get_type_name(argument);
}
signal.argument_names.push_back(name);
@@ -234,12 +255,8 @@ List<ClassAPI> generate_c_api_classes() {
if (p->get().name.find(":") != -1) {
property_api.type = p->get().name.get_slice(":", 1);
property_api.name = p->get().name.get_slice(":", 0);
- } else if (p->get().hint == PROPERTY_HINT_RESOURCE_TYPE) {
- property_api.type = p->get().hint_string;
- } else if (p->get().type == Variant::NIL) {
- property_api.type = "Variant";
} else {
- property_api.type = Variant::get_type_name(p->get().type);
+ property_api.type = get_type_name(p->get());
}
if (!property_api.setter.empty() || !property_api.getter.empty()) {
@@ -261,17 +278,11 @@ List<ClassAPI> generate_c_api_classes() {
//method name
method_api.method_name = m->get().name;
//method return type
- if (method_bind && method_bind->get_return_type() != StringName()) {
- method_api.return_type = method_bind->get_return_type();
- } else if (method_api.method_name.find(":") != -1) {
+ if (method_api.method_name.find(":") != -1) {
method_api.return_type = method_api.method_name.get_slice(":", 1);
method_api.method_name = method_api.method_name.get_slice(":", 0);
- } else if (m->get().return_val.type != Variant::NIL) {
- method_api.return_type = m->get().return_val.hint == PROPERTY_HINT_RESOURCE_TYPE ? m->get().return_val.hint_string : Variant::get_type_name(m->get().return_val.type);
- } else if (m->get().return_val.name != "") {
- method_api.return_type = m->get().return_val.name;
} else {
- method_api.return_type = "void";
+ method_api.return_type = get_type_name(m->get().return_val);
}
method_api.argument_count = method_info.arguments.size();
@@ -322,6 +333,25 @@ List<ClassAPI> generate_c_api_classes() {
}
}
+ // enums
+ {
+ List<EnumAPI> enums;
+ List<StringName> enum_names;
+ ClassDB::get_enum_list(class_name, &enum_names, true);
+ for (List<StringName>::Element *E = enum_names.front(); E; E = E->next()) {
+ List<StringName> value_names;
+ EnumAPI enum_api;
+ enum_api.name = E->get();
+ ClassDB::get_enum_constants(class_name, E->get(), &value_names, true);
+ for (List<StringName>::Element *val_e = value_names.front(); val_e; val_e = val_e->next()) {
+ int int_val = ClassDB::get_integer_constant(class_name, val_e->get(), NULL);
+ enum_api.values.push_back(Pair<int, String>(int_val, val_e->get()));
+ }
+ enum_api.values.sort_custom<PairSort<int, String> >();
+ class_api.enums.push_back(enum_api);
+ }
+ }
+
api.push_back(class_api);
}
@@ -411,11 +441,24 @@ static List<String> generate_c_api_json(const List<ClassAPI> &p_api) {
source.push_back("\t\t\t\t]\n");
source.push_back(String("\t\t\t}") + (e->next() ? "," : "") + "\n");
}
+ source.push_back("\t\t],\n");
+
+ source.push_back("\t\t\"enums\": [\n");
+ for (List<EnumAPI>::Element *e = api.enums.front(); e; e = e->next()) {
+ source.push_back("\t\t\t{\n");
+ source.push_back("\t\t\t\t\"name\": \"" + e->get().name + "\",\n");
+ source.push_back("\t\t\t\t\"values\": {\n");
+ for (List<Pair<int, String> >::Element *val_e = e->get().values.front(); val_e; val_e = val_e->next()) {
+ source.push_back("\t\t\t\t\t\"" + val_e->get().second + "\": " + itos(val_e->get().first));
+ source.push_back(String((val_e->next() ? "," : "")) + "\n");
+ }
+ source.push_back("\t\t\t\t}\n");
+ source.push_back(String("\t\t\t}") + (e->next() ? "," : "") + "\n");
+ }
source.push_back("\t\t]\n");
source.push_back(String("\t}") + (c->next() ? "," : "") + "\n");
}
-
source.push_back("]");
return source;
diff --git a/modules/nativescript/api_generator.h b/modules/nativescript/api_generator.h
index a108d7a7b6..56c2d786e6 100644
--- a/modules/nativescript/api_generator.h
+++ b/modules/nativescript/api_generator.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/nativescript/godot_nativescript.cpp b/modules/nativescript/godot_nativescript.cpp
index 453cee3a18..926b3261b2 100644
--- a/modules/nativescript/godot_nativescript.cpp
+++ b/modules/nativescript/godot_nativescript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/nativescript/godot_nativescript.h b/modules/nativescript/godot_nativescript.h
index cfd445086b..1eaf459570 100644
--- a/modules/nativescript/godot_nativescript.h
+++ b/modules/nativescript/godot_nativescript.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/nativescript/nativescript.cpp b/modules/nativescript/nativescript.cpp
index d428834d59..3799ce31f8 100644
--- a/modules/nativescript/nativescript.cpp
+++ b/modules/nativescript/nativescript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -399,7 +399,7 @@ Variant NativeScript::_new(const Variant **p_args, int p_argcount, Variant::Call
owner = memnew(Reference);
}
- Reference *r = owner->cast_to<Reference>();
+ Reference *r = Object::cast_to<Reference>(owner);
if (r) {
ref = REF(r);
}
@@ -1203,11 +1203,11 @@ Error ResourceFormatSaverNativeScript::save(const String &p_path, const RES &p_r
}
bool ResourceFormatSaverNativeScript::recognize(const RES &p_resource) const {
- return p_resource->cast_to<NativeScript>() != NULL;
+ return Object::cast_to<NativeScript>(*p_resource) != NULL;
}
void ResourceFormatSaverNativeScript::get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const {
- if (p_resource->cast_to<NativeScript>()) {
+ if (Object::cast_to<NativeScript>(*p_resource)) {
p_extensions->push_back("gdns");
}
}
diff --git a/modules/nativescript/nativescript.h b/modules/nativescript/nativescript.h
index c60effd0c1..571a3c9cc7 100644
--- a/modules/nativescript/nativescript.h
+++ b/modules/nativescript/nativescript.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -120,7 +120,7 @@ public:
void set_class_name(String p_class_name);
String get_class_name() const;
- void set_library(Ref<GDNativeLibrary> library);
+ void set_library(Ref<GDNativeLibrary> p_library);
Ref<GDNativeLibrary> get_library() const;
virtual bool can_instance() const;
diff --git a/modules/nativescript/register_types.cpp b/modules/nativescript/register_types.cpp
index c28b982884..b846710ab8 100644
--- a/modules/nativescript/register_types.cpp
+++ b/modules/nativescript/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/nativescript/register_types.h b/modules/nativescript/register_types.h
index 319da9c42f..7ac558f68f 100644
--- a/modules/nativescript/register_types.h
+++ b/modules/nativescript/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/ogg/register_types.cpp b/modules/ogg/register_types.cpp
index 9837ae12d9..452e6e332a 100644
--- a/modules/ogg/register_types.cpp
+++ b/modules/ogg/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/ogg/register_types.h b/modules/ogg/register_types.h
index dc84227b80..a2a8b7cedc 100644
--- a/modules/ogg/register_types.h
+++ b/modules/ogg/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/openssl/register_types.cpp b/modules/openssl/register_types.cpp
index e1ae581caf..16563aabf7 100644
--- a/modules/openssl/register_types.cpp
+++ b/modules/openssl/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/openssl/register_types.h b/modules/openssl/register_types.h
index ff39ec8798..58f2d55c98 100644
--- a/modules/openssl/register_types.h
+++ b/modules/openssl/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/openssl/stream_peer_openssl.cpp b/modules/openssl/stream_peer_openssl.cpp
index 7a9d5195a9..d40bf73883 100644
--- a/modules/openssl/stream_peer_openssl.cpp
+++ b/modules/openssl/stream_peer_openssl.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,40 +28,32 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "stream_peer_openssl.h"
-//hostname matching code from curl
-//#include <openssl/applink.c> // To prevent crashing (see the OpenSSL FAQ)
+//hostname matching code from curl
bool StreamPeerOpenSSL::_match_host_name(const char *name, const char *hostname) {
return Tool_Curl_cert_hostcheck(name, hostname) == CURL_HOST_MATCH;
- //print_line("MATCH: "+String(name)+" vs "+String(hostname));
- //return true;
}
Error StreamPeerOpenSSL::_match_common_name(const char *hostname, const X509 *server_cert) {
- int common_name_loc = -1;
- X509_NAME_ENTRY *common_name_entry = NULL;
- ASN1_STRING *common_name_asn1 = NULL;
- char *common_name_str = NULL;
-
// Find the position of the CN field in the Subject field of the certificate
- common_name_loc = X509_NAME_get_index_by_NID(X509_get_subject_name((X509 *)server_cert), NID_commonName, -1);
+ int common_name_loc = X509_NAME_get_index_by_NID(X509_get_subject_name((X509 *)server_cert), NID_commonName, -1);
ERR_FAIL_COND_V(common_name_loc < 0, ERR_INVALID_PARAMETER);
// Extract the CN field
- common_name_entry = X509_NAME_get_entry(X509_get_subject_name((X509 *)server_cert), common_name_loc);
+ X509_NAME_ENTRY *common_name_entry = X509_NAME_get_entry(X509_get_subject_name((X509 *)server_cert), common_name_loc);
ERR_FAIL_COND_V(common_name_entry == NULL, ERR_INVALID_PARAMETER);
// Convert the CN field to a C string
- common_name_asn1 = X509_NAME_ENTRY_get_data(common_name_entry);
+ ASN1_STRING *common_name_asn1 = X509_NAME_ENTRY_get_data(common_name_entry);
ERR_FAIL_COND_V(common_name_asn1 == NULL, ERR_INVALID_PARAMETER);
- common_name_str = (char *)ASN1_STRING_data(common_name_asn1);
+ char *common_name_str = (char *)ASN1_STRING_data(common_name_asn1);
// Make sure there isn't an embedded NUL character in the CN
bool malformed_certificate = (size_t)ASN1_STRING_length(common_name_asn1) != strlen(common_name_str);
@@ -303,20 +295,6 @@ Error StreamPeerOpenSSL::connect_to_stream(Ref<StreamPeer> p_base, bool p_valida
X509_STORE_add_cert(store, certs[i]);
}
-#if 0
- const unsigned char *in=(const unsigned char *)certs.ptr();
- X509 *Cert = d2i_X509(NULL, &in, certs.size()-1);
- if (!Cert) {
- print_line(String(ERR_error_string(ERR_get_error(),NULL)));
- }
- ERR_FAIL_COND_V(!Cert,ERR_PARSE_ERROR);
-
- X509_STORE *store = SSL_CTX_get_cert_store(ctx);
- X509_STORE_add_cert(store,Cert);
-
- //char *str = X509_NAME_oneline(X509_get_subject_name(Cert),0,0);
- //printf ("subject: %s\n", str); /* [1] */
-#endif
}
//used for testing
diff --git a/modules/openssl/stream_peer_openssl.h b/modules/openssl/stream_peer_openssl.h
index b1da5e1d95..1e445ef681 100644
--- a/modules/openssl/stream_peer_openssl.h
+++ b/modules/openssl/stream_peer_openssl.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/opus/audio_stream_opus.cpp b/modules/opus/audio_stream_opus.cpp
index e361ebf019..1dac890eb8 100644
--- a/modules/opus/audio_stream_opus.cpp
+++ b/modules/opus/audio_stream_opus.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/opus/audio_stream_opus.h b/modules/opus/audio_stream_opus.h
index daf3958c2a..ccfe04e84e 100644
--- a/modules/opus/audio_stream_opus.h
+++ b/modules/opus/audio_stream_opus.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/opus/register_types.cpp b/modules/opus/register_types.cpp
index e8bff58cbb..a69c8bf9f3 100644
--- a/modules/opus/register_types.cpp
+++ b/modules/opus/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/opus/register_types.h b/modules/opus/register_types.h
index 4517dc5df7..1865b7966e 100644
--- a/modules/opus/register_types.h
+++ b/modules/opus/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/pbm/bitmap_loader_pbm.cpp b/modules/pbm/bitmap_loader_pbm.cpp
index c8f25ad68c..d222935970 100644
--- a/modules/pbm/bitmap_loader_pbm.cpp
+++ b/modules/pbm/bitmap_loader_pbm.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -95,6 +95,9 @@ static bool _get_token(FileAccessRef &f, uint8_t &saved, PoolVector<uint8_t> &r_
resized = true;
}
if (resized) {
+ // Note: Certain C++ static analyzers might point out that the following assigment is unnecessary.
+ // This is wrong since PoolVector<class T>::Write has an operator= method where the lhs gets updated under certain conditions.
+ // See core/dvector.h.
w = PoolVector<uint8_t>::Write();
r_token.resize(token_max);
w = r_token.write();
diff --git a/modules/pbm/bitmap_loader_pbm.h b/modules/pbm/bitmap_loader_pbm.h
index 7a72edaeee..85d3eadcb9 100644
--- a/modules/pbm/bitmap_loader_pbm.h
+++ b/modules/pbm/bitmap_loader_pbm.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/pbm/register_types.cpp b/modules/pbm/register_types.cpp
index c9531ba14f..60401b8cc9 100644
--- a/modules/pbm/register_types.cpp
+++ b/modules/pbm/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/pbm/register_types.h b/modules/pbm/register_types.h
index 3888fd6f77..b75eff55d3 100644
--- a/modules/pbm/register_types.h
+++ b/modules/pbm/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/pvr/register_types.cpp b/modules/pvr/register_types.cpp
index 04e20558ce..8fb78d7734 100644
--- a/modules/pvr/register_types.cpp
+++ b/modules/pvr/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/pvr/register_types.h b/modules/pvr/register_types.h
index 7ff5237c03..4db8219b21 100644
--- a/modules/pvr/register_types.h
+++ b/modules/pvr/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp
index bdd4779e28..9989785c70 100644
--- a/modules/pvr/texture_loader_pvr.cpp
+++ b/modules/pvr/texture_loader_pvr.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/pvr/texture_loader_pvr.h b/modules/pvr/texture_loader_pvr.h
index 7d60831175..a51160d902 100644
--- a/modules/pvr/texture_loader_pvr.h
+++ b/modules/pvr/texture_loader_pvr.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/regex/regex.cpp b/modules/regex/regex.cpp
index c728657d6b..de0a6b7e21 100644
--- a/modules/regex/regex.cpp
+++ b/modules/regex/regex.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/regex/regex.h b/modules/regex/regex.h
index 106d2649a5..8c76035b82 100644
--- a/modules/regex/regex.h
+++ b/modules/regex/regex.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/regex/register_types.cpp b/modules/regex/register_types.cpp
index eaa8f41e33..7b042aaa52 100644
--- a/modules/regex/register_types.cpp
+++ b/modules/regex/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/regex/register_types.h b/modules/regex/register_types.h
index 3b977edd32..1624fe18c8 100644
--- a/modules/regex/register_types.h
+++ b/modules/regex/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/register_module_types.h b/modules/register_module_types.h
index e30dab2819..089055ffa0 100644
--- a/modules/register_module_types.h
+++ b/modules/register_module_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/squish/image_compress_squish.cpp b/modules/squish/image_compress_squish.cpp
index efce76c805..29073a8499 100644
--- a/modules/squish/image_compress_squish.cpp
+++ b/modules/squish/image_compress_squish.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/squish/image_compress_squish.h b/modules/squish/image_compress_squish.h
index 68aaeefc30..0dff5a7ce3 100644
--- a/modules/squish/image_compress_squish.h
+++ b/modules/squish/image_compress_squish.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/squish/register_types.cpp b/modules/squish/register_types.cpp
index 2eeea59836..d5aa1d4b71 100644
--- a/modules/squish/register_types.cpp
+++ b/modules/squish/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/squish/register_types.h b/modules/squish/register_types.h
index 3bf1b19dec..0afeeeff3b 100644
--- a/modules/squish/register_types.h
+++ b/modules/squish/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
index 7b8b2abebb..49d959203c 100644
--- a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -49,7 +49,7 @@ void AudioStreamPlaybackOGGVorbis::_mix_internal(AudioFrame *p_buffer, int p_fra
//end of file!
if (vorbis_stream->loop) {
//loop
- seek_pos(0);
+ seek_pos(vorbis_stream->loop_offset);
loops++;
} else {
for (int i = mixed; i < p_frames; i++) {
@@ -227,6 +227,14 @@ bool AudioStreamOGGVorbis::has_loop() const {
return loop;
}
+void AudioStreamOGGVorbis::set_loop_offset(float p_seconds) {
+ loop_offset = p_seconds;
+}
+
+float AudioStreamOGGVorbis::get_loop_offset() const {
+ return loop_offset;
+}
+
void AudioStreamOGGVorbis::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_data", "data"), &AudioStreamOGGVorbis::set_data);
@@ -235,8 +243,12 @@ void AudioStreamOGGVorbis::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_loop", "enable"), &AudioStreamOGGVorbis::set_loop);
ClassDB::bind_method(D_METHOD("has_loop"), &AudioStreamOGGVorbis::has_loop);
+ ClassDB::bind_method(D_METHOD("set_loop_offset", "seconds"), &AudioStreamOGGVorbis::set_loop_offset);
+ ClassDB::bind_method(D_METHOD("get_loop_offset"), &AudioStreamOGGVorbis::get_loop_offset);
+
ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_data", "get_data");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_loop", "has_loop");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "loop_offset", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_loop_offset", "get_loop_offset");
}
AudioStreamOGGVorbis::AudioStreamOGGVorbis() {
@@ -245,6 +257,7 @@ AudioStreamOGGVorbis::AudioStreamOGGVorbis() {
length = 0;
sample_rate = 1;
channels = 1;
+ loop_offset = 0;
decode_mem_size = 0;
loop = false;
}
diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.h b/modules/stb_vorbis/audio_stream_ogg_vorbis.h
index 46cdfd3f2d..a459e6f31d 100644
--- a/modules/stb_vorbis/audio_stream_ogg_vorbis.h
+++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -89,6 +89,7 @@ class AudioStreamOGGVorbis : public AudioStream {
int channels;
float length;
bool loop;
+ float loop_offset;
protected:
static void _bind_methods();
@@ -97,6 +98,9 @@ public:
void set_loop(bool p_enable);
bool has_loop() const;
+ void set_loop_offset(float p_seconds);
+ float get_loop_offset() const;
+
virtual Ref<AudioStreamPlayback> instance_playback();
virtual String get_stream_name() const;
diff --git a/modules/stb_vorbis/register_types.cpp b/modules/stb_vorbis/register_types.cpp
index 726260b45c..abd01e9a14 100644
--- a/modules/stb_vorbis/register_types.cpp
+++ b/modules/stb_vorbis/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/stb_vorbis/register_types.h b/modules/stb_vorbis/register_types.h
index c17e1eafe9..8e2d5e78f8 100644
--- a/modules/stb_vorbis/register_types.h
+++ b/modules/stb_vorbis/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
index f0a7ee1ec6..4d28dc027b 100644
--- a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
+++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -72,11 +72,13 @@ String ResourceImporterOGGVorbis::get_preset_name(int p_idx) const {
void ResourceImporterOGGVorbis::get_import_options(List<ImportOption> *r_options, int p_preset) const {
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "loop"), true));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "loop_offset"), 0));
}
Error ResourceImporterOGGVorbis::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files) {
bool loop = p_options["loop"];
+ float loop_offset = p_options["loop_offset"];
FileAccess *f = FileAccess::open(p_source_file, FileAccess::READ);
if (!f) {
@@ -98,6 +100,7 @@ Error ResourceImporterOGGVorbis::import(const String &p_source_file, const Strin
ogg_stream->set_data(data);
ogg_stream->set_loop(loop);
+ ogg_stream->set_loop_offset(loop_offset);
return ResourceSaver::save(p_save_path + ".oggstr", ogg_stream);
}
diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.h b/modules/stb_vorbis/resource_importer_ogg_vorbis.h
index c588b58fb2..8134009704 100644
--- a/modules/stb_vorbis/resource_importer_ogg_vorbis.h
+++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/svg/SCsub b/modules/svg/SCsub
new file mode 100644
index 0000000000..5be9367808
--- /dev/null
+++ b/modules/svg/SCsub
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+
+Import('env')
+from compat import isbasestring
+
+# Thirdparty source files
+thirdparty_dir = "#thirdparty/nanosvg/"
+thirdparty_sources = [
+ "nanosvg.cc"
+]
+thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
+
+# env.add_source_files(env.modules_sources, thirdparty_sources)
+
+lib = env.Library("svg_builtin", thirdparty_sources)
+# Needs to be appended to arrive after libscene in the linker call,
+# but we don't want it to arrive *after* system libs, so manual hack
+# LIBS contains first SCons Library objects ("SCons.Node.FS.File object")
+# and then plain strings for system library. We insert between the two.
+inserted = False
+for idx, linklib in enumerate(env["LIBS"]):
+ if isbasestring(linklib): # first system lib such as "X11", otherwise SCons lib object
+ env["LIBS"].insert(idx, lib)
+ inserted = True
+ break
+if not inserted:
+ env.Append(LIBS=[lib])
+
+env.Append(CPPPATH=[thirdparty_dir])
+env.Append(CCFLAGS=["-DSVG_ENABLED"])
+
+# Godot's own source files
+env.add_source_files(env.modules_sources, "*.cpp")
+
+Export('env')
diff --git a/modules/svg/config.py b/modules/svg/config.py
new file mode 100644
index 0000000000..fb920482f5
--- /dev/null
+++ b/modules/svg/config.py
@@ -0,0 +1,7 @@
+
+def can_build(platform):
+ return True
+
+
+def configure(env):
+ pass
diff --git a/modules/svg/image_loader_svg.cpp b/modules/svg/image_loader_svg.cpp
new file mode 100644
index 0000000000..086cc202f9
--- /dev/null
+++ b/modules/svg/image_loader_svg.cpp
@@ -0,0 +1,111 @@
+/*************************************************************************/
+/* image_loader_svg.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 "image_loader_svg.h"
+
+#include "os/os.h"
+#include "print_string.h"
+
+#include <ustring.h>
+
+void SVGRasterizer::rasterize(NSVGimage *p_image, float p_tx, float p_ty, float p_scale, unsigned char *p_dst, int p_w, int p_h, int p_stride) {
+ nsvgRasterize(rasterizer, p_image, p_tx, p_ty, p_scale, p_dst, p_w, p_h, p_stride);
+}
+
+SVGRasterizer::SVGRasterizer() {
+ rasterizer = nsvgCreateRasterizer();
+}
+SVGRasterizer::~SVGRasterizer() {
+ nsvgDeleteRasterizer(rasterizer);
+}
+
+SVGRasterizer ImageLoaderSVG::rasterizer;
+
+Error ImageLoaderSVG::_create_image(Ref<Image> p_image, const PoolVector<uint8_t> *p_data, float p_scale, bool upsample) {
+ NSVGimage *svg_image;
+ PoolVector<uint8_t>::Read src_r = p_data->read();
+ svg_image = nsvgParse((char *)src_r.ptr(), "px", 96);
+ if (svg_image == NULL) {
+ ERR_PRINT("SVG Corrupted");
+ return ERR_FILE_CORRUPT;
+ }
+
+ float upscale = upsample ? 2.0 : 1.0;
+
+ int w = (int)(svg_image->width * p_scale * upscale);
+ int h = (int)(svg_image->height * p_scale * upscale);
+
+ PoolVector<uint8_t> dst_image;
+ dst_image.resize(w * h * 4);
+
+ PoolVector<uint8_t>::Write dw = dst_image.write();
+
+ rasterizer.rasterize(svg_image, 0, 0, p_scale * upscale, (unsigned char *)dw.ptr(), w, h, w * 4);
+
+ dw = PoolVector<uint8_t>::Write();
+ p_image->create(w, h, false, Image::FORMAT_RGBA8, dst_image);
+ if (upsample)
+ p_image->shrink_x2();
+
+ nsvgDelete(svg_image);
+
+ return OK;
+}
+
+Error ImageLoaderSVG::create_image_from_string(Ref<Image> p_image, const char *svg_str, float p_scale, bool upsample) {
+
+ size_t str_len = strlen(svg_str);
+ PoolVector<uint8_t> src_data;
+ src_data.resize(str_len + 1);
+ PoolVector<uint8_t>::Write src_w = src_data.write();
+ memcpy(src_w.ptr(), svg_str, str_len + 1);
+
+ return _create_image(p_image, &src_data, p_scale, upsample);
+}
+
+Error ImageLoaderSVG::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
+
+ uint32_t size = f->get_len();
+ PoolVector<uint8_t> src_image;
+ src_image.resize(size + 1);
+ PoolVector<uint8_t>::Write src_w = src_image.write();
+ f->get_buffer(src_w.ptr(), size);
+ src_w.ptr()[size] = '\0';
+
+ return _create_image(p_image, &src_image, p_scale, 1.0);
+}
+
+void ImageLoaderSVG::get_recognized_extensions(List<String> *p_extensions) const {
+
+ p_extensions->push_back("svg");
+ p_extensions->push_back("svgz");
+}
+
+ImageLoaderSVG::ImageLoaderSVG() {
+}
diff --git a/modules/svg/image_loader_svg.h b/modules/svg/image_loader_svg.h
new file mode 100644
index 0000000000..1f2ec3c1c2
--- /dev/null
+++ b/modules/svg/image_loader_svg.h
@@ -0,0 +1,67 @@
+/*************************************************************************/
+/* image_loader_svg.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 IMAGE_LOADER_SVG_H
+#define IMAGE_LOADER_SVG_H
+
+#include "io/image_loader.h"
+#include "ustring.h"
+
+#include <nanosvg.h>
+#include <nanosvgrast.h>
+
+/**
+ @author Daniel Ramirez <djrmuv@gmail.com>
+*/
+
+class SVGRasterizer {
+
+ NSVGrasterizer *rasterizer;
+
+public:
+ void rasterize(NSVGimage *p_image, float p_tx, float p_ty, float p_scale, unsigned char *p_dst, int p_w, int p_h, int p_stride);
+
+ SVGRasterizer();
+ ~SVGRasterizer();
+};
+
+class ImageLoaderSVG : public ImageFormatLoader {
+
+ static SVGRasterizer rasterizer;
+ static Error _create_image(Ref<Image> p_image, const PoolVector<uint8_t> *p_data, float p_scale, bool upsample);
+
+public:
+ static Error create_image_from_string(Ref<Image> p_image, const char *p_svg_str, float p_scale, bool upsample);
+
+ virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
+ virtual void get_recognized_extensions(List<String> *p_extensions) const;
+ ImageLoaderSVG();
+};
+
+#endif \ No newline at end of file
diff --git a/modules/svg/register_types.cpp b/modules/svg/register_types.cpp
new file mode 100644
index 0000000000..e37239f27a
--- /dev/null
+++ b/modules/svg/register_types.cpp
@@ -0,0 +1,45 @@
+/*************************************************************************/
+/* register_types.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+#include "register_types.h"
+
+#include "image_loader_svg.h"
+
+static ImageLoaderSVG *image_loader_svg = NULL;
+
+void register_svg_types() {
+
+ image_loader_svg = memnew(ImageLoaderSVG);
+ ImageLoader::add_image_format_loader(image_loader_svg);
+}
+
+void unregister_svg_types() {
+
+ memdelete(image_loader_svg);
+}
diff --git a/modules/svg/register_types.h b/modules/svg/register_types.h
new file mode 100644
index 0000000000..49d550e7c9
--- /dev/null
+++ b/modules/svg/register_types.h
@@ -0,0 +1,31 @@
+/*************************************************************************/
+/* register_types.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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. */
+/*************************************************************************/
+void register_svg_types();
+void unregister_svg_types();
diff --git a/modules/tga/image_loader_tga.cpp b/modules/tga/image_loader_tga.cpp
index 5b8610b975..379c894550 100644
--- a/modules/tga/image_loader_tga.cpp
+++ b/modules/tga/image_loader_tga.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -203,7 +203,7 @@ Error ImageLoaderTGA::convert_to_image(Ref<Image> p_image, const uint8_t *p_buff
return OK;
}
-Error ImageLoaderTGA::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear) {
+Error ImageLoaderTGA::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
PoolVector<uint8_t> src_image;
int src_image_len = f->get_len();
diff --git a/modules/tga/image_loader_tga.h b/modules/tga/image_loader_tga.h
index 11329ec68a..8689a1773b 100644
--- a/modules/tga/image_loader_tga.h
+++ b/modules/tga/image_loader_tga.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,7 +75,7 @@ class ImageLoaderTGA : public ImageFormatLoader {
static Error convert_to_image(Ref<Image> p_image, const uint8_t *p_buffer, const tga_header_s &p_header, const uint8_t *p_palette, const bool p_is_monochrome);
public:
- virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear);
+ virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
ImageLoaderTGA();
};
diff --git a/modules/tga/register_types.cpp b/modules/tga/register_types.cpp
index 6e120fa3bf..814b21d368 100644
--- a/modules/tga/register_types.cpp
+++ b/modules/tga/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/tga/register_types.h b/modules/tga/register_types.h
index 079b7bf291..10812981f8 100644
--- a/modules/tga/register_types.h
+++ b/modules/tga/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/theora/register_types.cpp b/modules/theora/register_types.cpp
index 1bea5439a3..ae6961b3da 100644
--- a/modules/theora/register_types.cpp
+++ b/modules/theora/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/theora/register_types.h b/modules/theora/register_types.h
index cb9f9d1848..7011ee44d0 100644
--- a/modules/theora/register_types.h
+++ b/modules/theora/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp
index 977062dd14..2a24f8d4d1 100644
--- a/modules/theora/video_stream_theora.cpp
+++ b/modules/theora/video_stream_theora.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -83,37 +83,6 @@ void VideoStreamPlaybackTheora::video_write(void) {
th_ycbcr_buffer yuv;
th_decode_ycbcr_out(td, yuv);
- // FIXME: The way stuff is commented out with `//*/` closing comments
- // sounds very fishy...
-
- /*
- int y_offset, uv_offset;
- y_offset=(ti.pic_x&~1)+yuv[0].stride*(ti.pic_y&~1);
-
- {
- int pixels = size.x * size.y;
- frame_data.resize(pixels * 4);
- PoolVector<uint8_t>::Write w = frame_data.write();
- char* dst = (char*)w.ptr();
- int p = 0;
- for (int i=0; i<size.y; i++) {
-
- char *in_y = (char *)yuv[0].data+y_offset+yuv[0].stride*i;
- char *out = dst + (int)size.x * 4 * i;
- for (int j=0;j<size.x;j++) {
-
- dst[p++] = in_y[j];
- dst[p++] = in_y[j];
- dst[p++] = in_y[j];
- dst[p++] = 255;
- };
- }
- format = Image::FORMAT_RGBA8;
- }
- //*/
-
- //*
-
int pitch = 4;
frame_data.resize(size.x * size.y * pitch);
{
@@ -142,99 +111,6 @@ void VideoStreamPlaybackTheora::video_write(void) {
texture->set_data(img); //zero copy send to visual server
- /*
-
- if (px_fmt == TH_PF_444) {
-
- int pitch = 3;
- frame_data.resize(size.x * size.y * pitch);
- PoolVector<uint8_t>::Write w = frame_data.write();
- char* dst = (char*)w.ptr();
-
- for(int i=0;i<size.y;i++) {
-
- char *in_y = (char *)yuv[0].data+y_offset+yuv[0].stride*i;
- char *out = dst + (int)size.x * pitch * i;
- char *in_u = (char *)yuv[1].data+uv_offset+yuv[1].stride*i;
- char *in_v = (char *)yuv[2].data+uv_offset+yuv[2].stride*i;
- for (int j=0;j<size.x;j++) {
-
- out[j*3+0] = in_y[j];
- out[j*3+1] = in_u[j];
- out[j*3+2] = in_v[j];
- };
- }
-
- format = Image::FORMAT_YUV_444;
-
- } else {
-
- int div;
- if (px_fmt!=TH_PF_422) {
- div = 2;
- }
-
- bool rgba = true;
- if (rgba) {
-
- int pitch = 4;
- frame_data.resize(size.x * size.y * pitch);
- PoolVector<uint8_t>::Write w = frame_data.write();
- char* dst = (char*)w.ptr();
-
- uv_offset=(ti.pic_x/2)+(yuv[1].stride)*(ti.pic_y / div);
- for(int i=0;i<size.y;i++) {
- char *in_y = (char *)yuv[0].data+y_offset+yuv[0].stride*i;
- char *in_u = (char *)yuv[1].data+uv_offset+yuv[1].stride*(i/div);
- char *in_v = (char *)yuv[2].data+uv_offset+yuv[2].stride*(i/div);
- uint8_t *out = (uint8_t*)dst + (int)size.x * pitch * i;
- int ofs = 0;
- for (int j=0;j<size.x;j++) {
-
- uint8_t y, u, v;
- y = in_y[j];
- u = in_u[j/2];
- v = in_v[j/2];
-
- int32_t r = Math::fast_ftoi(1.164 * (y - 16) + 1.596 * (v - 128));
- int32_t g = Math::fast_ftoi(1.164 * (y - 16) - 0.813 * (v - 128) - 0.391 * (u - 128));
- int32_t b = Math::fast_ftoi(1.164 * (y - 16) + 2.018 * (u - 128));
-
- out[ofs++] = CLAMP(r, 0, 255);
- out[ofs++] = CLAMP(g, 0, 255);
- out[ofs++] = CLAMP(b, 0, 255);
- out[ofs++] = 255;
- }
- }
-
- format = Image::FORMAT_RGBA8;
-
- } else {
-
- int pitch = 2;
- frame_data.resize(size.x * size.y * pitch);
- PoolVector<uint8_t>::Write w = frame_data.write();
- char* dst = (char*)w.ptr();
-
- uv_offset=(ti.pic_x/2)+(yuv[1].stride)*(ti.pic_y / div);
- for(int i=0;i<size.y;i++) {
- char *in_y = (char *)yuv[0].data+y_offset+yuv[0].stride*i;
- char *out = dst + (int)size.x * pitch * i;
- for (int j=0;j<size.x;j++)
- out[j*2] = in_y[j];
- char *in_u = (char *)yuv[1].data+uv_offset+yuv[1].stride*(i/div);
- char *in_v = (char *)yuv[2].data+uv_offset+yuv[2].stride*(i/div);
- for (int j=0;j<(int)size.x>>1;j++) {
- out[j*4+1] = in_u[j];
- out[j*4+3] = in_v[j];
- }
- }
-
- format = Image::FORMAT_YUV_422;
- };
- };
- //*/
-
frames_pending = 1;
}
@@ -451,20 +327,10 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) {
ti.frame_width, ti.frame_height, ti.pic_x, ti.pic_y);
th_decode_ctl(td, TH_DECCTL_GET_PPLEVEL_MAX, &pp_level_max,
sizeof(pp_level_max));
- pp_level = pp_level_max;
pp_level = 0;
th_decode_ctl(td, TH_DECCTL_SET_PPLEVEL, &pp_level, sizeof(pp_level));
pp_inc = 0;
- /*{
- int arg = 0xffff;
- th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_MBMODE,&arg,sizeof(arg));
- th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_MV,&arg,sizeof(arg));
- th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_QI,&arg,sizeof(arg));
- arg=10;
- th_decode_ctl(td,TH_DECCTL_SET_TELEMETRY_BITS,&arg,sizeof(arg));
- }*/
-
int w;
int h;
w = (ti.pic_x + ti.frame_width + 1 & ~1) - (ti.pic_x & ~1);
@@ -503,8 +369,6 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) {
float VideoStreamPlaybackTheora::get_time() const {
- //print_line("total: "+itos(get_total())+" todo: "+itos(get_todo()));
- //return MAX(0,time-((get_total())/(float)vi.rate));
return time - AudioServer::get_singleton()->get_output_delay() - delay_compensation; //-((get_total())/(float)vi.rate);
};
@@ -527,8 +391,6 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
thread_sem->post();
#endif
- //double ctime =AudioServer::get_singleton()->get_mix_time();
-
//print_line("play "+rtos(p_delta));
time += p_delta;
@@ -664,8 +526,6 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
}
}
-//print_line("no theora: "+itos(no_theora)+" theora eos: "+itos(theora_eos)+" frame done "+itos(frame_done));
-
#ifdef THEORA_USE_THREAD_STREAMING
if (file && thread_eof && no_theora && theora_eos && ring_buffer.data_left() == 0) {
#else
@@ -675,16 +535,6 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
stop();
return;
};
-#if 0
- if (!videobuf_ready || audio_todo > 0){
- /* no data yet for somebody. Grab another page */
-
- buffer_data();
- while(ogg_sync_pageout(&oy,&og)>0){
- queue_page(&og);
- }
- }
-#else
if (!frame_done || !audio_done) {
//what's the point of waiting for audio to grab a page?
@@ -694,7 +544,7 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
queue_page(&og);
}
}
-#endif
+
/* If playback has begun, top audio buffer off immediately. */
//if(stateflag) audio_write_nonblocking();
diff --git a/modules/theora/video_stream_theora.h b/modules/theora/video_stream_theora.h
index 84b665382b..f04e49c662 100644
--- a/modules/theora/video_stream_theora.h
+++ b/modules/theora/video_stream_theora.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/tinyexr/image_loader_tinyexr.cpp b/modules/tinyexr/image_loader_tinyexr.cpp
index 4eb91da10b..57826d69fb 100644
--- a/modules/tinyexr/image_loader_tinyexr.cpp
+++ b/modules/tinyexr/image_loader_tinyexr.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,7 +34,7 @@
#include "thirdparty/tinyexr/tinyexr.h"
-Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear) {
+Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
PoolVector<uint8_t> src_image;
int src_image_len = f->get_len();
diff --git a/modules/tinyexr/image_loader_tinyexr.h b/modules/tinyexr/image_loader_tinyexr.h
index a52894b12b..adecba5d9d 100644
--- a/modules/tinyexr/image_loader_tinyexr.h
+++ b/modules/tinyexr/image_loader_tinyexr.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,7 +38,7 @@
class ImageLoaderTinyEXR : public ImageFormatLoader {
public:
- virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear);
+ virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
ImageLoaderTinyEXR();
};
diff --git a/modules/tinyexr/register_types.cpp b/modules/tinyexr/register_types.cpp
index 73f3131276..4bbafbc90a 100644
--- a/modules/tinyexr/register_types.cpp
+++ b/modules/tinyexr/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/tinyexr/register_types.h b/modules/tinyexr/register_types.h
index f3c7372359..e866bb7624 100644
--- a/modules/tinyexr/register_types.h
+++ b/modules/tinyexr/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/visual_script/register_types.cpp b/modules/visual_script/register_types.cpp
index a54d306aff..c50ba17c35 100644
--- a/modules/visual_script/register_types.cpp
+++ b/modules/visual_script/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/visual_script/register_types.h b/modules/visual_script/register_types.h
index 2c0ee56268..4fb03bc227 100644
--- a/modules/visual_script/register_types.h
+++ b/modules/visual_script/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index d1cf0f1dce..88012d2031 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -273,7 +273,9 @@ void VisualScript::_node_ports_changed(int p_id) {
Function &func = functions[function];
Ref<VisualScriptNode> vsn = func.nodes[p_id].node;
- if (OS::get_singleton()->get_main_loop() && OS::get_singleton()->get_main_loop()->cast_to<SceneTree>() && OS::get_singleton()->get_main_loop()->cast_to<SceneTree>()->is_editor_hint()) {
+ if (OS::get_singleton()->get_main_loop() &&
+ Object::cast_to<SceneTree>(OS::get_singleton()->get_main_loop()) &&
+ Engine::get_singleton()->is_editor_hint()) {
vsn->validate_input_default_values(); //force validate default values when editing on editor
}
@@ -336,7 +338,7 @@ void VisualScript::add_node(const StringName &p_func, int p_id, const Ref<Visual
Function &func = functions[p_func];
- if (p_node->cast_to<VisualScriptFunction>()) {
+ if (Object::cast_to<VisualScriptFunction>(*p_node)) {
//the function indeed
ERR_EXPLAIN("A function node already has been set here.");
ERR_FAIL_COND(func.function_id >= 0);
@@ -393,7 +395,7 @@ void VisualScript::remove_node(const StringName &p_func, int p_id) {
}
}
- if (func.nodes[p_id].node->cast_to<VisualScriptFunction>()) {
+ if (Object::cast_to<VisualScriptFunction>(func.nodes[p_id].node.ptr())) {
func.function_id = -1; //revert to invalid
}
@@ -1086,7 +1088,7 @@ int VisualScript::get_member_line(const StringName &p_member) const {
#ifdef TOOLS_ENABLED
if (has_function(p_member)) {
for (Map<int, Function::NodeData>::Element *E = functions[p_member].nodes.front(); E; E = E->next()) {
- if (E->get().node->cast_to<VisualScriptFunction>())
+ if (Object::cast_to<VisualScriptFunction>(E->get().node.ptr()))
return E->key();
}
}
@@ -1578,12 +1580,15 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
VisualScriptNodeInstance::StartMode start_mode;
{
- if (p_resuming_yield)
+ if (p_resuming_yield) {
start_mode = VisualScriptNodeInstance::START_MODE_RESUME_YIELD;
- else if (!flow_stack || !(flow_stack[flow_stack_pos] & VisualScriptNodeInstance::FLOW_STACK_PUSHED_BIT)) //if there is a push bit, it means we are continuing a sequence
- start_mode = VisualScriptNodeInstance::START_MODE_BEGIN_SEQUENCE;
- else
+ p_resuming_yield = false; // should resume only the first time
+ } else if (flow_stack && (flow_stack[flow_stack_pos] & VisualScriptNodeInstance::FLOW_STACK_PUSHED_BIT)) {
+ //if there is a push bit, it means we are continuing a sequence
start_mode = VisualScriptNodeInstance::START_MODE_CONTINUE_SEQUENCE;
+ } else {
+ start_mode = VisualScriptNodeInstance::START_MODE_BEGIN_SEQUENCE;
+ }
}
VSDEBUG("STEP - STARTSEQ: " + itos(start_mode));
@@ -1998,9 +2003,9 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
max_input_args = 0;
max_output_args = 0;
- if (p_owner->cast_to<Node>()) {
+ if (Object::cast_to<Node>(p_owner)) {
//turn on these if they exist and base is a node
- Node *node = p_owner->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(p_owner);
if (p_script->functions.has("_process"))
node->set_process(true);
if (p_script->functions.has("_fixed_process"))
@@ -2091,16 +2096,16 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
}
}
- if (node->cast_to<VisualScriptLocalVar>() || node->cast_to<VisualScriptLocalVarSet>()) {
+ if (Object::cast_to<VisualScriptLocalVar>(node.ptr()) || Object::cast_to<VisualScriptLocalVarSet>(*node)) {
//working memory is shared only for this node, for the same variables
Ref<VisualScriptLocalVar> vslv = node;
StringName var_name;
- if (node->cast_to<VisualScriptLocalVar>())
- var_name = String(node->cast_to<VisualScriptLocalVar>()->get_var_name()).strip_edges();
+ if (Object::cast_to<VisualScriptLocalVar>(*node))
+ var_name = String(Object::cast_to<VisualScriptLocalVar>(*node)->get_var_name()).strip_edges();
else
- var_name = String(node->cast_to<VisualScriptLocalVarSet>()->get_var_name()).strip_edges();
+ var_name = String(Object::cast_to<VisualScriptLocalVarSet>(*node)->get_var_name()).strip_edges();
if (!local_var_indices.has(var_name)) {
local_var_indices[var_name] = function.max_stack;
diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h
index 63ac5769c6..b2e7a6aa27 100644
--- a/modules/visual_script/visual_script.h
+++ b/modules/visual_script/visual_script.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -291,8 +291,8 @@ public:
void data_disconnect(const StringName &p_func, int p_from_node, int p_from_port, int p_to_node, int p_to_port);
bool has_data_connection(const StringName &p_func, int p_from_node, int p_from_port, int p_to_node, int p_to_port) const;
void get_data_connection_list(const StringName &p_func, List<DataConnection> *r_connection) const;
- bool is_input_value_port_connected(const StringName &p_name, int p_node, int p_port) const;
- bool get_input_value_port_connection_source(const StringName &p_name, int p_node, int p_port, int *r_node, int *r_port) const;
+ bool is_input_value_port_connected(const StringName &p_func, int p_node, int p_port) const;
+ bool get_input_value_port_connection_source(const StringName &p_func, int p_node, int p_port, int *r_node, int *r_port) const;
void add_variable(const StringName &p_name, const Variant &p_default_value = Variant(), bool p_export = false);
bool has_variable(const StringName &p_name) const;
diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp
index 203e0bb483..2c8796820e 100644
--- a/modules/visual_script/visual_script_builtin_funcs.cpp
+++ b/modules/visual_script/visual_script_builtin_funcs.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -915,7 +915,7 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
VALIDATE_ARG_NUM(0);
int64_t num = *p_inputs[0];
- *r_return = nearest_power_of_2(num);
+ *r_return = next_power_of_2(num);
} break;
case VisualScriptBuiltinFunc::OBJ_WEAKREF: {
diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h
index 8e9c0eca76..97ab307039 100644
--- a/modules/visual_script/visual_script_builtin_funcs.h
+++ b/modules/visual_script/visual_script_builtin_funcs.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp
index 8912227692..05ceb7a38f 100644
--- a/modules/visual_script/visual_script_editor.cpp
+++ b/modules/visual_script/visual_script_editor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -73,7 +73,7 @@ protected:
if (argc == new_argc)
return true;
- undo_redo->create_action("Change Signal Arguments");
+ undo_redo->create_action(TTR("Change Signal Arguments"));
if (new_argc < argc) {
for (int i = new_argc; i < argc; i++) {
@@ -104,7 +104,7 @@ protected:
int old_type = script->custom_signal_get_argument_type(sig, idx);
int new_type = p_value;
- undo_redo->create_action("Change Argument Type");
+ undo_redo->create_action(TTR("Change Argument Type"));
undo_redo->add_do_method(script.ptr(), "custom_signal_set_argument_type", sig, idx, new_type);
undo_redo->add_undo_method(script.ptr(), "custom_signal_set_argument_type", sig, idx, old_type);
undo_redo->commit_action();
@@ -116,7 +116,7 @@ protected:
String old_name = script->custom_signal_get_argument_name(sig, idx);
String new_name = p_value;
- undo_redo->create_action("Change Argument name");
+ undo_redo->create_action(TTR("Change Argument name"));
undo_redo->add_do_method(script.ptr(), "custom_signal_set_argument_name", sig, idx, new_name);
undo_redo->add_undo_method(script.ptr(), "custom_signal_set_argument_name", sig, idx, old_name);
undo_redo->commit_action();
@@ -213,7 +213,7 @@ protected:
return false;
if (String(p_name) == "value") {
- undo_redo->create_action("Set Variable Default Value");
+ undo_redo->create_action(TTR("Set Variable Default Value"));
Variant current = script->get_variable_default_value(var);
undo_redo->add_do_method(script.ptr(), "set_variable_default_value", var, p_value);
undo_redo->add_undo_method(script.ptr(), "set_variable_default_value", var, current);
@@ -229,7 +229,7 @@ protected:
Dictionary dc = d.copy();
dc["type"] = p_value;
- undo_redo->create_action("Set Variable Type");
+ undo_redo->create_action(TTR("Set Variable Type"));
undo_redo->add_do_method(script.ptr(), "set_variable_info", var, dc);
undo_redo->add_undo_method(script.ptr(), "set_variable_info", var, d);
undo_redo->add_do_method(this, "_var_changed");
@@ -242,7 +242,7 @@ protected:
Dictionary dc = d.copy();
dc["hint"] = p_value;
- undo_redo->create_action("Set Variable Type");
+ undo_redo->create_action(TTR("Set Variable Type"));
undo_redo->add_do_method(script.ptr(), "set_variable_info", var, dc);
undo_redo->add_undo_method(script.ptr(), "set_variable_info", var, d);
undo_redo->add_do_method(this, "_var_changed");
@@ -255,7 +255,7 @@ protected:
Dictionary dc = d.copy();
dc["hint_string"] = p_value;
- undo_redo->create_action("Set Variable Type");
+ undo_redo->create_action(TTR("Set Variable Type"));
undo_redo->add_do_method(script.ptr(), "set_variable_info", var, dc);
undo_redo->add_undo_method(script.ptr(), "set_variable_info", var, d);
undo_redo->add_do_method(this, "_var_changed");
@@ -422,7 +422,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
for (int i = 0; i < graph->get_child_count(); i++) {
- if (graph->get_child(i)->cast_to<GraphNode>()) {
+ if (Object::cast_to<GraphNode>(graph->get_child(i))) {
memdelete(graph->get_child(i));
i--;
}
@@ -506,7 +506,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
gnode->set_show_close_button(true);
}
- if (node->cast_to<VisualScriptExpression>()) {
+ if (Object::cast_to<VisualScriptExpression>(*node)) {
LineEdit *line_edit = memnew(LineEdit);
line_edit->set_text(node->get_text());
@@ -520,7 +520,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
gnode->add_child(text);
}
- if (node->cast_to<VisualScriptComment>()) {
+ if (Object::cast_to<VisualScriptExpression>(*node)) {
Ref<VisualScriptComment> vsc = node;
gnode->set_comment(true);
gnode->set_resizeable(true);
@@ -886,6 +886,8 @@ void VisualScriptEditor::_member_edited() {
undo_redo->add_undo_method(this, "_update_members");
undo_redo->add_do_method(this, "_update_graph");
undo_redo->add_undo_method(this, "_update_graph");
+ undo_redo->add_do_method(this, "emit_signal", "edited_script_changed");
+ undo_redo->add_undo_method(this, "emit_signal", "edited_script_changed");
undo_redo->commit_action();
// _update_graph();
@@ -901,6 +903,8 @@ void VisualScriptEditor::_member_edited() {
undo_redo->add_undo_method(script.ptr(), "rename_variable", new_name, name);
undo_redo->add_do_method(this, "_update_members");
undo_redo->add_undo_method(this, "_update_members");
+ undo_redo->add_do_method(this, "emit_signal", "edited_script_changed");
+ undo_redo->add_undo_method(this, "emit_signal", "edited_script_changed");
undo_redo->commit_action();
return; //or crash because it will become invalid
@@ -914,6 +918,8 @@ void VisualScriptEditor::_member_edited() {
undo_redo->add_undo_method(script.ptr(), "rename_custom_signal", new_name, name);
undo_redo->add_do_method(this, "_update_members");
undo_redo->add_undo_method(this, "_update_members");
+ undo_redo->add_do_method(this, "emit_signal", "edited_script_changed");
+ undo_redo->add_undo_method(this, "emit_signal", "edited_script_changed");
undo_redo->commit_action();
return; //or crash because it will become invalid
@@ -964,7 +970,7 @@ void VisualScriptEditor::_override_pressed(int p_id) {
void VisualScriptEditor::_member_button(Object *p_item, int p_column, int p_button) {
- TreeItem *ti = p_item->cast_to<TreeItem>();
+ TreeItem *ti = Object::cast_to<TreeItem>(p_item);
TreeItem *root = members->get_root();
@@ -1051,7 +1057,8 @@ void VisualScriptEditor::_member_button(Object *p_item, int p_column, int p_butt
undo_redo->add_undo_method(this, "_update_members");
undo_redo->add_do_method(this, "_update_graph");
undo_redo->add_undo_method(this, "_update_graph");
-
+ undo_redo->add_do_method(this, "emit_signal", "edited_script_changed");
+ undo_redo->add_undo_method(this, "emit_signal", "edited_script_changed");
undo_redo->commit_action();
_update_graph();
@@ -1070,6 +1077,8 @@ void VisualScriptEditor::_member_button(Object *p_item, int p_column, int p_butt
undo_redo->add_undo_method(script.ptr(), "remove_variable", name);
undo_redo->add_do_method(this, "_update_members");
undo_redo->add_undo_method(this, "_update_members");
+ undo_redo->add_do_method(this, "emit_signal", "edited_script_changed");
+ undo_redo->add_undo_method(this, "emit_signal", "edited_script_changed");
undo_redo->commit_action();
return; //or crash because it will become invalid
}
@@ -1084,6 +1093,8 @@ void VisualScriptEditor::_member_button(Object *p_item, int p_column, int p_butt
undo_redo->add_undo_method(script.ptr(), "remove_custom_signal", name);
undo_redo->add_do_method(this, "_update_members");
undo_redo->add_undo_method(this, "_update_members");
+ undo_redo->add_do_method(this, "emit_signal", "edited_script_changed");
+ undo_redo->add_undo_method(this, "emit_signal", "edited_script_changed");
undo_redo->commit_action();
return; //or crash because it will become invalid
}
@@ -1106,8 +1117,8 @@ void VisualScriptEditor::_expression_text_changed(const String &p_text, int p_id
undo_redo->commit_action();
Node *node = graph->get_node(itos(p_id));
- if (node->cast_to<Control>())
- node->cast_to<Control>()->set_size(Vector2(1, 1)); //shrink if text is smaller
+ if (Object::cast_to<Control>(node))
+ Object::cast_to<Control>(node)->set_size(Vector2(1, 1)); //shrink if text is smaller
updating_graph = false;
}
@@ -1242,7 +1253,7 @@ void VisualScriptEditor::_on_nodes_delete() {
List<int> to_erase;
for (int i = 0; i < graph->get_child_count(); i++) {
- GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
if (gn) {
if (gn->is_selected() && gn->is_close_button_visible()) {
to_erase.push_back(gn->get_name().operator String().to_int());
@@ -1253,7 +1264,7 @@ void VisualScriptEditor::_on_nodes_delete() {
if (to_erase.empty())
return;
- undo_redo->create_action("Remove VisualScript Nodes");
+ undo_redo->create_action(TTR("Remove VisualScript Nodes"));
for (List<int>::Element *F = to_erase.front(); F; F = F->next()) {
@@ -1291,7 +1302,7 @@ void VisualScriptEditor::_on_nodes_duplicate() {
List<int> to_duplicate;
for (int i = 0; i < graph->get_child_count(); i++) {
- GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
if (gn) {
if (gn->is_selected() && gn->is_close_button_visible()) {
to_duplicate.push_back(gn->get_name().operator String().to_int());
@@ -1302,7 +1313,7 @@ void VisualScriptEditor::_on_nodes_duplicate() {
if (to_duplicate.empty())
return;
- undo_redo->create_action("Duplicate VisualScript Nodes");
+ undo_redo->create_action(TTR("Duplicate VisualScript Nodes"));
int idc = script->get_available_id() + 1;
Set<int> to_select;
@@ -1324,7 +1335,7 @@ void VisualScriptEditor::_on_nodes_duplicate() {
undo_redo->commit_action();
for (int i = 0; i < graph->get_child_count(); i++) {
- GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
if (gn) {
int id = gn->get_name().operator String().to_int();
gn->set_selected(to_select.has(id));
@@ -1788,7 +1799,7 @@ void VisualScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da
if (!obj)
return;
- Node *node = obj->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(obj);
Vector2 ofs = graph->get_scroll_ofs() + p_point;
if (graph->is_using_snap()) {
@@ -1907,7 +1918,7 @@ void VisualScriptEditor::_selected_method(const String &p_method) {
void VisualScriptEditor::_draw_color_over_button(Object *obj, Color p_color) {
- Button *button = obj->cast_to<Button>();
+ Button *button = Object::cast_to<Button>(obj);
if (!button)
return;
@@ -1926,7 +1937,7 @@ void VisualScriptEditor::_button_resource_previewed(const String &p_path, const
if (!obj)
return;
- Button *b = obj->cast_to<Button>();
+ Button *b = Object::cast_to<Button>(obj);
ERR_FAIL_COND(!b);
if (p_preview.is_null()) {
@@ -2039,9 +2050,7 @@ void VisualScriptEditor::set_edit_state(const Variant &p_state) {
void VisualScriptEditor::_center_on_node(int p_id) {
Node *n = graph->get_node(itos(p_id));
- if (!n)
- return;
- GraphNode *gn = n->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(n);
if (gn) {
gn->set_selected(true);
Vector2 new_scroll = gn->get_offset() - graph->get_size() * 0.5 + gn->get_size() * 0.5;
@@ -2199,7 +2208,7 @@ void VisualScriptEditor::_change_base_type_callback() {
String bt = select_base_type->get_selected_type();
ERR_FAIL_COND(bt == String());
- undo_redo->create_action("Change Base Type");
+ undo_redo->create_action(TTR("Change Base Type"));
undo_redo->add_do_method(script.ptr(), "set_instance_base_type", bt);
undo_redo->add_undo_method(script.ptr(), "set_instance_base_type", script->get_instance_base_type());
undo_redo->add_do_method(this, "_update_members");
@@ -2247,7 +2256,7 @@ static bool _get_in_slot(const Ref<VisualScriptNode> &p_node, int p_slot, int &r
void VisualScriptEditor::_begin_node_move() {
- undo_redo->create_action("Move Node(s)");
+ undo_redo->create_action(TTR("Move Node(s)"));
}
void VisualScriptEditor::_end_node_move() {
@@ -2259,8 +2268,8 @@ void VisualScriptEditor::_move_node(String func, int p_id, const Vector2 &p_to)
if (func == String(edited_func)) {
Node *node = graph->get_node(itos(p_id));
- if (node && node->cast_to<GraphNode>())
- node->cast_to<GraphNode>()->set_offset(p_to);
+ if (Object::cast_to<GraphNode>(node))
+ Object::cast_to<GraphNode>(node)->set_offset(p_to);
}
script->set_node_pos(edited_func, p_id, p_to / EDSCALE);
}
@@ -2273,7 +2282,7 @@ void VisualScriptEditor::_node_moved(Vector2 p_from, Vector2 p_to, int p_id) {
void VisualScriptEditor::_remove_node(int p_id) {
- undo_redo->create_action("Remove VisualScript Node");
+ undo_redo->create_action(TTR("Remove VisualScript Node"));
undo_redo->add_do_method(script.ptr(), "remove_node", edited_func, p_id);
undo_redo->add_undo_method(script.ptr(), "add_node", edited_func, p_id, script->get_node(edited_func, p_id), script->get_node_pos(edited_func, p_id));
@@ -2334,7 +2343,7 @@ void VisualScriptEditor::_graph_connected(const String &p_from, int p_from_slot,
ERR_FAIL_COND(from_seq != to_seq);
- undo_redo->create_action("Connect Nodes");
+ undo_redo->create_action(TTR("Connect Nodes"));
if (from_seq) {
undo_redo->add_do_method(script.ptr(), "sequence_connect", edited_func, p_from.to_int(), from_port, p_to.to_int());
@@ -2387,7 +2396,7 @@ void VisualScriptEditor::_graph_disconnected(const String &p_from, int p_from_sl
ERR_FAIL_COND(from_seq != to_seq);
- undo_redo->create_action("Connect Nodes");
+ undo_redo->create_action(TTR("Connect Nodes"));
if (from_seq) {
undo_redo->add_do_method(script.ptr(), "sequence_disconnect", edited_func, p_from.to_int(), from_port, p_to.to_int());
@@ -2410,10 +2419,7 @@ void VisualScriptEditor::_graph_disconnected(const String &p_from, int p_from_sl
void VisualScriptEditor::_graph_connect_to_empty(const String &p_from, int p_from_slot, const Vector2 &p_release_pos) {
Node *node = graph->get_node(p_from);
- if (!node)
- return;
-
- GraphNode *gn = node->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(node);
if (!gn)
return;
@@ -2450,17 +2456,17 @@ void VisualScriptEditor::_graph_connect_to_empty(const String &p_from, int p_fro
port_action_popup->popup();
}
-VisualScriptNode::TypeGuess VisualScriptEditor::_guess_output_type(int p_node, int p_output, Set<int> &visited_nodes) {
+VisualScriptNode::TypeGuess VisualScriptEditor::_guess_output_type(int p_port_action_node, int p_port_action_output, Set<int> &visited_nodes) {
VisualScriptNode::TypeGuess tg;
tg.type = Variant::NIL;
- if (visited_nodes.has(p_node))
+ if (visited_nodes.has(p_port_action_node))
return tg; //no loop
- visited_nodes.insert(p_node);
+ visited_nodes.insert(p_port_action_node);
- Ref<VisualScriptNode> node = script->get_node(edited_func, p_node);
+ Ref<VisualScriptNode> node = script->get_node(edited_func, p_port_action_node);
if (!node.is_valid()) {
@@ -2479,7 +2485,7 @@ VisualScriptNode::TypeGuess VisualScriptEditor::_guess_output_type(int p_node, i
int from_node;
int from_port;
- if (script->get_input_value_port_connection_source(edited_func, p_node, i, &from_node, &from_port)) {
+ if (script->get_input_value_port_connection_source(edited_func, p_port_action_node, i, &from_node, &from_port)) {
g = _guess_output_type(from_node, from_port, visited_nodes);
} else {
@@ -2501,7 +2507,7 @@ VisualScriptNode::TypeGuess VisualScriptEditor::_guess_output_type(int p_node, i
in_guesses.push_back(g);
}
- return node->guess_output_type(in_guesses.ptr(), p_output);
+ return node->guess_output_type(in_guesses.ptr(), p_port_action_output);
}
void VisualScriptEditor::_port_action_menu(int p_option) {
@@ -2680,21 +2686,21 @@ void VisualScriptEditor::_selected_connect_node_method_or_setget(const String &p
Ref<VisualScriptNode> vsn = script->get_node(edited_func, port_action_new_node);
- if (vsn->cast_to<VisualScriptFunctionCall>()) {
+ if (Object::cast_to<VisualScriptFunctionCall>(*vsn)) {
Ref<VisualScriptFunctionCall> vsfc = vsn;
vsfc->set_function(p_text);
script->data_connect(edited_func, port_action_node, port_action_output, port_action_new_node, 0);
}
- if (vsn->cast_to<VisualScriptPropertySet>()) {
+ if (Object::cast_to<VisualScriptPropertySet>(*vsn)) {
Ref<VisualScriptPropertySet> vsp = vsn;
vsp->set_property(p_text);
script->data_connect(edited_func, port_action_node, port_action_output, port_action_new_node, 0);
}
- if (vsn->cast_to<VisualScriptPropertyGet>()) {
+ if (Object::cast_to<VisualScriptPropertyGet>(*vsn)) {
Ref<VisualScriptPropertyGet> vsp = vsn;
vsp->set_property(p_text);
@@ -2705,13 +2711,19 @@ void VisualScriptEditor::_selected_connect_node_method_or_setget(const String &p
_update_graph_connections();
}
+void VisualScriptEditor::_cancel_connect_node_method_or_setget() {
+
+ script->remove_node(edited_func, port_action_new_node);
+ _update_graph();
+}
+
void VisualScriptEditor::_default_value_changed() {
Ref<VisualScriptNode> vsn = script->get_node(edited_func, editing_id);
if (vsn.is_null())
return;
- undo_redo->create_action("Change Input Value");
+ undo_redo->create_action(TTR("Change Input Value"));
undo_redo->add_do_method(vsn.ptr(), "set_default_input_value", editing_input, default_value_edit->get_variant());
undo_redo->add_undo_method(vsn.ptr(), "set_default_input_value", editing_input, vsn->get_default_input_value(editing_input));
@@ -2735,7 +2747,7 @@ void VisualScriptEditor::_default_value_edited(Node *p_button, int p_id, int p_i
existing = Variant::construct(pinfo.type, &existingp, 1, ce, false);
}
- default_value_edit->set_position(p_button->cast_to<Control>()->get_global_position() + Vector2(0, p_button->cast_to<Control>()->get_size().y));
+ default_value_edit->set_position(Object::cast_to<Control>(p_button)->get_global_position() + Vector2(0, Object::cast_to<Control>(p_button)->get_size().y));
default_value_edit->set_size(Size2(1, 1));
if (default_value_edit->edit(NULL, pinfo.name, pinfo.type, existing, pinfo.hint, pinfo.hint_string)) {
if (pinfo.hint == PROPERTY_HINT_MULTILINE_TEXT)
@@ -2801,9 +2813,7 @@ void VisualScriptEditor::_comment_node_resized(const Vector2 &p_new_size, int p_
return;
Node *node = graph->get_node(itos(p_node));
- if (!node)
- return;
- GraphNode *gn = node->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(node);
if (!gn)
return;
@@ -2832,7 +2842,7 @@ void VisualScriptEditor::_menu_option(int p_what) {
List<String> reselect;
for (int i = 0; i < graph->get_child_count(); i++) {
- GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
if (gn) {
if (gn->is_selected()) {
int id = String(gn->get_name()).to_int();
@@ -2848,7 +2858,7 @@ void VisualScriptEditor::_menu_option(int p_what) {
_update_graph();
for (List<String>::Element *E = reselect.front(); E; E = E->next()) {
- GraphNode *gn = graph->get_node(E->get())->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_node(E->get()));
gn->set_selected(true);
}
@@ -2869,14 +2879,14 @@ void VisualScriptEditor::_menu_option(int p_what) {
clipboard->sequence_connections.clear();
for (int i = 0; i < graph->get_child_count(); i++) {
- GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
if (gn) {
if (gn->is_selected()) {
int id = String(gn->get_name()).to_int();
Ref<VisualScriptNode> node = script->get_node(edited_func, id);
- if (node->cast_to<VisualScriptFunction>()) {
- EditorNode::get_singleton()->show_warning("Can't copy the function node.");
+ if (Object::cast_to<VisualScriptFunction>(*node)) {
+ EditorNode::get_singleton()->show_warning(TTR("Can't copy the function node."));
return;
}
if (node.is_valid()) {
@@ -2924,13 +2934,13 @@ void VisualScriptEditor::_menu_option(int p_what) {
break;
if (clipboard->nodes.empty()) {
- EditorNode::get_singleton()->show_warning("Clipboard is empty!");
+ EditorNode::get_singleton()->show_warning(TTR("Clipboard is empty!"));
break;
}
Map<int, int> remap;
- undo_redo->create_action("Paste VisualScript Nodes");
+ undo_redo->create_action(TTR("Paste VisualScript Nodes"));
int idc = script->get_available_id() + 1;
Set<int> to_select;
@@ -2983,7 +2993,7 @@ void VisualScriptEditor::_menu_option(int p_what) {
undo_redo->commit_action();
for (int i = 0; i < graph->get_child_count(); i++) {
- GraphNode *gn = graph->get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_child(i));
if (gn) {
int id = gn->get_name().operator String().to_int();
gn->set_selected(to_select.has(id));
@@ -3156,6 +3166,7 @@ void VisualScriptEditor::_bind_methods() {
ClassDB::bind_method("_button_resource_previewed", &VisualScriptEditor::_button_resource_previewed);
ClassDB::bind_method("_port_action_menu", &VisualScriptEditor::_port_action_menu);
ClassDB::bind_method("_selected_connect_node_method_or_setget", &VisualScriptEditor::_selected_connect_node_method_or_setget);
+ ClassDB::bind_method("_cancel_connect_node_method_or_setget", &VisualScriptEditor::_cancel_connect_node_method_or_setget);
ClassDB::bind_method("_expression_text_changed", &VisualScriptEditor::_expression_text_changed);
ClassDB::bind_method("get_drag_data_fw", &VisualScriptEditor::get_drag_data_fw);
@@ -3223,7 +3234,7 @@ VisualScriptEditor::VisualScriptEditor() {
members->connect("button_pressed", this, "_member_button");
members->connect("item_edited", this, "_member_edited");
members->connect("cell_selected", this, "_member_selected", varray(), CONNECT_DEFERRED);
- members->set_single_select_cell_editing_only_when_already_selected(true);
+ members->set_allow_reselect(true);
members->set_hide_folding(true);
members->set_drag_forwarding(this);
@@ -3268,10 +3279,9 @@ VisualScriptEditor::VisualScriptEditor() {
select_func_text->set_valign(Label::VALIGN_CENTER);
select_func_text->set_h_size_flags(SIZE_EXPAND_FILL);
add_child(select_func_text);
- graph->set_area_as_parent_rect();
hint_text = memnew(Label);
- hint_text->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, 100);
+ hint_text->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, -100);
hint_text->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, 0);
hint_text->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 0);
hint_text->set_align(Label::ALIGN_CENTER);
@@ -3354,6 +3364,7 @@ VisualScriptEditor::VisualScriptEditor() {
new_connect_node_select = memnew(PropertySelector);
add_child(new_connect_node_select);
new_connect_node_select->connect("selected", this, "_selected_connect_node_method_or_setget");
+ new_connect_node_select->get_cancel()->connect("pressed", this, "_cancel_connect_node_method_or_setget");
port_action_popup = memnew(PopupMenu);
add_child(port_action_popup);
@@ -3375,7 +3386,7 @@ VisualScriptEditor::~VisualScriptEditor() {
static ScriptEditorBase *create_editor(const Ref<Script> &p_script) {
- if (p_script->cast_to<VisualScript>()) {
+ if (Object::cast_to<VisualScript>(*p_script)) {
return memnew(VisualScriptEditor);
}
diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h
index fee4e27bd5..dd051ef8e4 100644
--- a/modules/visual_script/visual_script_editor.h
+++ b/modules/visual_script/visual_script_editor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -176,6 +176,7 @@ class VisualScriptEditor : public ScriptEditorBase {
int port_action_new_node;
void _port_action_menu(int p_option);
void _selected_connect_node_method_or_setget(const String &p_text);
+ void _cancel_connect_node_method_or_setget();
int error_line;
diff --git a/modules/visual_script/visual_script_expression.cpp b/modules/visual_script/visual_script_expression.cpp
index 78b70934c0..6bd052fe26 100644
--- a/modules/visual_script/visual_script_expression.cpp
+++ b/modules/visual_script/visual_script_expression.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -585,7 +585,6 @@ Error VisualScriptExpression::_get_token(Token &r_token) {
r_token.type = TK_BASIC_TYPE;
r_token.value = i;
return OK;
- break;
}
}
diff --git a/modules/visual_script/visual_script_expression.h b/modules/visual_script/visual_script_expression.h
index 4a9f59ebc3..2636e79842 100644
--- a/modules/visual_script/visual_script_expression.h
+++ b/modules/visual_script/visual_script_expression.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp
index 77f3111d94..59d9540239 100644
--- a/modules/visual_script/visual_script_flow_control.cpp
+++ b/modules/visual_script/visual_script_flow_control.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/visual_script/visual_script_flow_control.h b/modules/visual_script/visual_script_flow_control.h
index d27fd47f84..380eb76c45 100644
--- a/modules/visual_script/visual_script_flow_control.h
+++ b/modules/visual_script/visual_script_flow_control.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp
index 3c057cdbd5..5fcc5b0ad9 100644
--- a/modules/visual_script/visual_script_func_nodes.cpp
+++ b/modules/visual_script/visual_script_func_nodes.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -85,10 +85,7 @@ Node *VisualScriptFunctionCall::_get_base_node() const {
return NULL;
MainLoop *main_loop = OS::get_singleton()->get_main_loop();
- if (!main_loop)
- return NULL;
-
- SceneTree *scene_tree = main_loop->cast_to<SceneTree>();
+ SceneTree *scene_tree = Object::cast_to<SceneTree>(main_loop);
if (!scene_tree)
return NULL;
@@ -341,12 +338,12 @@ String VisualScriptFunctionCall::get_base_script() const {
return base_script;
}
-void VisualScriptFunctionCall::set_singleton(const StringName &p_path) {
+void VisualScriptFunctionCall::set_singleton(const StringName &p_type) {
- if (singleton == p_path)
+ if (singleton == p_type)
return;
- singleton = p_path;
+ singleton = p_type;
Object *obj = ProjectSettings::get_singleton()->get_singleton_object(singleton);
if (obj) {
base_type = obj->get_class();
@@ -747,10 +744,10 @@ void VisualScriptFunctionCall::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "validate"), "set_validate", "get_validate");
ADD_PROPERTY(PropertyInfo(Variant::INT, "rpc_call_mode", PROPERTY_HINT_ENUM, "Disabled,Reliable,Unreliable,ReliableToID,UnreliableToID"), "set_rpc_call_mode", "get_rpc_call_mode"); //when set, if loaded properly, will override argument count.
- BIND_CONSTANT(CALL_MODE_SELF);
- BIND_CONSTANT(CALL_MODE_NODE_PATH);
- BIND_CONSTANT(CALL_MODE_INSTANCE);
- BIND_CONSTANT(CALL_MODE_BASIC_TYPE);
+ BIND_ENUM_CONSTANT(CALL_MODE_SELF);
+ BIND_ENUM_CONSTANT(CALL_MODE_NODE_PATH);
+ BIND_ENUM_CONSTANT(CALL_MODE_INSTANCE);
+ BIND_ENUM_CONSTANT(CALL_MODE_BASIC_TYPE);
}
class VisualScriptNodeInstanceFunctionCall : public VisualScriptNodeInstance {
@@ -776,7 +773,7 @@ public:
if (!p_base)
return false;
- Node *node = p_base->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(p_base);
if (!node)
return false;
@@ -817,7 +814,7 @@ public:
} break;
case VisualScriptFunctionCall::CALL_MODE_NODE_PATH: {
- Node *node = instance->get_owner_ptr()->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(instance->get_owner_ptr());
if (!node) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Base object is not a Node!";
@@ -825,7 +822,7 @@ public:
}
Node *another = node->get_node(node_path);
- if (!node) {
+ if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!";
return 0;
@@ -961,10 +958,8 @@ Node *VisualScriptPropertySet::_get_base_node() const {
return NULL;
MainLoop *main_loop = OS::get_singleton()->get_main_loop();
- if (!main_loop)
- return NULL;
- SceneTree *scene_tree = main_loop->cast_to<SceneTree>();
+ SceneTree *scene_tree = Object::cast_to<SceneTree>(main_loop);
if (!scene_tree)
return NULL;
@@ -1159,12 +1154,10 @@ String VisualScriptPropertySet::get_base_script() const {
void VisualScriptPropertySet::_update_cache() {
- if (!OS::get_singleton()->get_main_loop())
- return;
- if (!OS::get_singleton()->get_main_loop()->cast_to<SceneTree>())
+ if (!Object::cast_to<SceneTree>(OS::get_singleton()->get_main_loop()))
return;
- if (!OS::get_singleton()->get_main_loop()->cast_to<SceneTree>()->is_editor_hint()) //only update cache if editor exists, it's pointless otherwise
+ if (!Engine::get_singleton()->is_editor_hint()) //only update cache if editor exists, it's pointless otherwise
return;
if (call_mode == CALL_MODE_BASIC_TYPE) {
@@ -1490,9 +1483,10 @@ void VisualScriptPropertySet::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::STRING, "property"), "set_property", "get_property");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "index"), "set_index", "get_index");
ADD_PROPERTY(PropertyInfo(Variant::INT, "assign_op", PROPERTY_HINT_ENUM, "Assign,Add,Sub,Mul,Div,Mod,ShiftLeft,ShiftRight,BitAnd,BitOr,Bitxor"), "set_assign_op", "get_assign_op");
- BIND_CONSTANT(CALL_MODE_SELF);
- BIND_CONSTANT(CALL_MODE_NODE_PATH);
- BIND_CONSTANT(CALL_MODE_INSTANCE);
+
+ BIND_ENUM_CONSTANT(CALL_MODE_SELF);
+ BIND_ENUM_CONSTANT(CALL_MODE_NODE_PATH);
+ BIND_ENUM_CONSTANT(CALL_MODE_INSTANCE);
}
class VisualScriptNodeInstancePropertySet : public VisualScriptNodeInstance {
@@ -1594,7 +1588,7 @@ public:
} break;
case VisualScriptPropertySet::CALL_MODE_NODE_PATH: {
- Node *node = instance->get_owner_ptr()->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(instance->get_owner_ptr());
if (!node) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Base object is not a Node!";
@@ -1602,7 +1596,7 @@ public:
}
Node *another = node->get_node(node_path);
- if (!node) {
+ if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!";
return 0;
@@ -1729,10 +1723,8 @@ Node *VisualScriptPropertyGet::_get_base_node() const {
return NULL;
MainLoop *main_loop = OS::get_singleton()->get_main_loop();
- if (!main_loop)
- return NULL;
- SceneTree *scene_tree = main_loop->cast_to<SceneTree>();
+ SceneTree *scene_tree = Object::cast_to<SceneTree>(main_loop);
if (!scene_tree)
return NULL;
@@ -2202,9 +2194,9 @@ void VisualScriptPropertyGet::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::STRING, "property"), "set_property", "get_property");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "index", PROPERTY_HINT_ENUM), "set_index", "get_index");
- BIND_CONSTANT(CALL_MODE_SELF);
- BIND_CONSTANT(CALL_MODE_NODE_PATH);
- BIND_CONSTANT(CALL_MODE_INSTANCE);
+ BIND_ENUM_CONSTANT(CALL_MODE_SELF);
+ BIND_ENUM_CONSTANT(CALL_MODE_NODE_PATH);
+ BIND_ENUM_CONSTANT(CALL_MODE_INSTANCE);
}
class VisualScriptNodeInstancePropertyGet : public VisualScriptNodeInstance {
@@ -2241,7 +2233,7 @@ public:
} break;
case VisualScriptPropertyGet::CALL_MODE_NODE_PATH: {
- Node *node = instance->get_owner_ptr()->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(instance->get_owner_ptr());
if (!node) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = RTR("Base object is not a Node!");
@@ -2249,7 +2241,7 @@ public:
}
Node *another = node->get_node(node_path);
- if (!node) {
+ if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = RTR("Path does not lead Node!");
return 0;
diff --git a/modules/visual_script/visual_script_func_nodes.h b/modules/visual_script/visual_script_func_nodes.h
index 7839748661..a9a0bd083f 100644
--- a/modules/visual_script/visual_script_func_nodes.h
+++ b/modules/visual_script/visual_script_func_nodes.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -70,7 +70,7 @@ private:
MethodInfo method_cache;
void _update_method_cache();
- void _set_argument_cache(const Dictionary &p_args);
+ void _set_argument_cache(const Dictionary &p_cache);
Dictionary _get_argument_cache() const;
protected:
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index 923e425997..1decc004ab 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -1208,6 +1208,7 @@ void VisualScriptPreload::set_preload(const Ref<Resource> &p_preload) {
preload = p_preload;
ports_changed_notify();
}
+
Ref<Resource> VisualScriptPreload::get_preload() const {
return preload;
@@ -2078,7 +2079,7 @@ public:
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Variant::CallError &r_error, String &r_error_str) {
- Node *node = instance->get_owner_ptr()->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(instance->get_owner_ptr());
if (!node) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Base object is not a Node!";
@@ -2086,7 +2087,7 @@ public:
}
Node *another = node->get_node(path);
- if (!node) {
+ if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!";
return 0;
@@ -2142,10 +2143,7 @@ VisualScriptSceneNode::TypeGuess VisualScriptSceneNode::guess_output_type(TypeGu
return tg;
MainLoop *main_loop = OS::get_singleton()->get_main_loop();
- if (!main_loop)
- return tg;
-
- SceneTree *scene_tree = main_loop->cast_to<SceneTree>();
+ SceneTree *scene_tree = Object::cast_to<SceneTree>(main_loop);
if (!scene_tree)
return tg;
@@ -2180,10 +2178,7 @@ void VisualScriptSceneNode::_validate_property(PropertyInfo &property) const {
return;
MainLoop *main_loop = OS::get_singleton()->get_main_loop();
- if (!main_loop)
- return;
-
- SceneTree *scene_tree = main_loop->cast_to<SceneTree>();
+ SceneTree *scene_tree = Object::cast_to<SceneTree>(main_loop);
if (!scene_tree)
return;
@@ -2273,7 +2268,7 @@ public:
virtual int step(const Variant **p_inputs, Variant **p_outputs, StartMode p_start_mode, Variant *p_working_mem, Variant::CallError &r_error, String &r_error_str) {
- Node *node = instance->get_owner_ptr()->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(instance->get_owner_ptr());
if (!node) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Base object is not a Node!";
@@ -2707,13 +2702,16 @@ void VisualScriptCustomNode::_bind_methods() {
BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_category"));
BIND_VMETHOD(MethodInfo(Variant::INT, "_get_working_memory_size"));
- BIND_VMETHOD(MethodInfo(Variant::NIL, "_step:Variant", PropertyInfo(Variant::ARRAY, "inputs"), PropertyInfo(Variant::ARRAY, "outputs"), PropertyInfo(Variant::INT, "start_mode"), PropertyInfo(Variant::ARRAY, "working_mem")));
+
+ MethodInfo stepmi(Variant::NIL, "_step", PropertyInfo(Variant::ARRAY, "inputs"), PropertyInfo(Variant::ARRAY, "outputs"), PropertyInfo(Variant::INT, "start_mode"), PropertyInfo(Variant::ARRAY, "working_mem"));
+ stepmi.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
+ BIND_VMETHOD(stepmi);
ClassDB::bind_method(D_METHOD("_script_changed"), &VisualScriptCustomNode::_script_changed);
- BIND_CONSTANT(START_MODE_BEGIN_SEQUENCE);
- BIND_CONSTANT(START_MODE_CONTINUE_SEQUENCE);
- BIND_CONSTANT(START_MODE_RESUME_YIELD);
+ BIND_ENUM_CONSTANT(START_MODE_BEGIN_SEQUENCE);
+ BIND_ENUM_CONSTANT(START_MODE_CONTINUE_SEQUENCE);
+ BIND_ENUM_CONSTANT(START_MODE_RESUME_YIELD);
BIND_CONSTANT(STEP_PUSH_STACK_BIT);
BIND_CONSTANT(STEP_GO_BACK_BIT);
@@ -2844,7 +2842,9 @@ VisualScriptNodeInstance *VisualScriptSubCall::instance(VisualScriptInstance *p_
void VisualScriptSubCall::_bind_methods() {
- BIND_VMETHOD(MethodInfo(Variant::NIL, "_subcall:Variant", PropertyInfo(Variant::NIL, "arguments:Variant")));
+ MethodInfo scmi(Variant::NIL, "_subcall", PropertyInfo(Variant::NIL, "arguments"));
+ scmi.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
+ BIND_VMETHOD(scmi);
}
VisualScriptSubCall::VisualScriptSubCall() {
diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h
index ff49417114..694fb96cfa 100644
--- a/modules/visual_script/visual_script_nodes.h
+++ b/modules/visual_script/visual_script_nodes.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -196,7 +196,7 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "data"; }
- void set_variable(StringName p_var);
+ void set_variable(StringName p_variable);
StringName get_variable() const;
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
@@ -230,7 +230,7 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "data"; }
- void set_variable(StringName p_var);
+ void set_variable(StringName p_variable);
StringName get_variable() const;
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
@@ -301,7 +301,7 @@ public:
virtual String get_text() const;
virtual String get_category() const { return "data"; }
- void set_preload(const Ref<Resource> &p_value);
+ void set_preload(const Ref<Resource> &p_preload);
Ref<Resource> get_preload() const;
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
@@ -727,6 +727,8 @@ public:
VisualScriptCustomNode();
};
+VARIANT_ENUM_CAST(VisualScriptCustomNode::StartMode);
+
class VisualScriptSubCall : public VisualScriptNode {
GDCLASS(VisualScriptSubCall, VisualScriptNode)
diff --git a/modules/visual_script/visual_script_yield_nodes.cpp b/modules/visual_script/visual_script_yield_nodes.cpp
index 2e111511b7..4b8e17421b 100644
--- a/modules/visual_script/visual_script_yield_nodes.cpp
+++ b/modules/visual_script/visual_script_yield_nodes.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -105,7 +105,7 @@ public:
} else {
//yield
- SceneTree *tree = OS::get_singleton()->get_main_loop()->cast_to<SceneTree>();
+ SceneTree *tree = Object::cast_to<SceneTree>(OS::get_singleton()->get_main_loop());
if (!tree) {
r_error_str = "Main Loop is not SceneTree";
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
@@ -189,9 +189,9 @@ void VisualScriptYield::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Frame,FixedFrame,Time", PROPERTY_USAGE_NOEDITOR), "set_yield_mode", "get_yield_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "wait_time"), "set_wait_time", "get_wait_time");
- BIND_CONSTANT(YIELD_FRAME);
- BIND_CONSTANT(YIELD_FIXED_FRAME);
- BIND_CONSTANT(YIELD_WAIT);
+ BIND_ENUM_CONSTANT(YIELD_FRAME);
+ BIND_ENUM_CONSTANT(YIELD_FIXED_FRAME);
+ BIND_ENUM_CONSTANT(YIELD_WAIT);
}
VisualScriptYield::VisualScriptYield() {
@@ -252,10 +252,7 @@ Node *VisualScriptYieldSignal::_get_base_node() const {
return NULL;
MainLoop *main_loop = OS::get_singleton()->get_main_loop();
- if (!main_loop)
- return NULL;
-
- SceneTree *scene_tree = main_loop->cast_to<SceneTree>();
+ SceneTree *scene_tree = Object::cast_to<SceneTree>(main_loop);
if (!scene_tree)
return NULL;
@@ -493,9 +490,9 @@ void VisualScriptYieldSignal::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "signal"), "set_signal", "get_signal");
- BIND_CONSTANT(CALL_MODE_SELF);
- BIND_CONSTANT(CALL_MODE_NODE_PATH);
- BIND_CONSTANT(CALL_MODE_INSTANCE);
+ BIND_ENUM_CONSTANT(CALL_MODE_SELF);
+ BIND_ENUM_CONSTANT(CALL_MODE_NODE_PATH);
+ BIND_ENUM_CONSTANT(CALL_MODE_INSTANCE);
}
class VisualScriptNodeInstanceYieldSignal : public VisualScriptNodeInstance {
@@ -530,7 +527,7 @@ public:
} break;
case VisualScriptYieldSignal::CALL_MODE_NODE_PATH: {
- Node *node = instance->get_owner_ptr()->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(instance->get_owner_ptr());
if (!node) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Base object is not a Node!";
@@ -538,7 +535,7 @@ public:
}
Node *another = node->get_node(node_path);
- if (!node) {
+ if (!another) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_METHOD;
r_error_str = "Path does not lead Node!";
return 0;
diff --git a/modules/visual_script/visual_script_yield_nodes.h b/modules/visual_script/visual_script_yield_nodes.h
index 638b7b5b41..d074962471 100644
--- a/modules/visual_script/visual_script_yield_nodes.h
+++ b/modules/visual_script/visual_script_yield_nodes.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.cpp b/modules/vorbis/audio_stream_ogg_vorbis.cpp
index 1b10637fdc..6389c286c2 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/vorbis/audio_stream_ogg_vorbis.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.h b/modules/vorbis/audio_stream_ogg_vorbis.h
index 519ceaaea1..03b3726b52 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.h
+++ b/modules/vorbis/audio_stream_ogg_vorbis.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/vorbis/register_types.cpp b/modules/vorbis/register_types.cpp
index d9865072b9..270a58e7fe 100644
--- a/modules/vorbis/register_types.cpp
+++ b/modules/vorbis/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/vorbis/register_types.h b/modules/vorbis/register_types.h
index e7cde7a66c..db317e9f6a 100644
--- a/modules/vorbis/register_types.h
+++ b/modules/vorbis/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/webm/register_types.cpp b/modules/webm/register_types.cpp
index c234f81097..892d1b8420 100644
--- a/modules/webm/register_types.cpp
+++ b/modules/webm/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/webm/register_types.h b/modules/webm/register_types.h
index cf412e601e..94ff7de739 100644
--- a/modules/webm/register_types.h
+++ b/modules/webm/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/webm/video_stream_webm.cpp b/modules/webm/video_stream_webm.cpp
index 72f10b4f45..26344877de 100644
--- a/modules/webm/video_stream_webm.cpp
+++ b/modules/webm/video_stream_webm.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/webm/video_stream_webm.h b/modules/webm/video_stream_webm.h
index b2e88347aa..a48a6c6b9a 100644
--- a/modules/webm/video_stream_webm.h
+++ b/modules/webm/video_stream_webm.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/webp/image_loader_webp.cpp b/modules/webp/image_loader_webp.cpp
index 87c2e811b3..8fe2db9e27 100644
--- a/modules/webp/image_loader_webp.cpp
+++ b/modules/webp/image_loader_webp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -115,7 +115,7 @@ static Ref<Image> _webp_lossy_unpack(const PoolVector<uint8_t> &p_buffer) {
return img;
}
-Error ImageLoaderWEBP::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear) {
+Error ImageLoaderWEBP::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
uint32_t size = f->get_len();
PoolVector<uint8_t> src_image;
diff --git a/modules/webp/image_loader_webp.h b/modules/webp/image_loader_webp.h
index 1ac2196a71..f7ef210458 100644
--- a/modules/webp/image_loader_webp.h
+++ b/modules/webp/image_loader_webp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,7 +38,7 @@
class ImageLoaderWEBP : public ImageFormatLoader {
public:
- virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear);
+ virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
ImageLoaderWEBP();
};
diff --git a/modules/webp/register_types.cpp b/modules/webp/register_types.cpp
index 6e29986740..95e5cd105d 100644
--- a/modules/webp/register_types.cpp
+++ b/modules/webp/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/webp/register_types.h b/modules/webp/register_types.h
index d0aa148079..7ec926c572 100644
--- a/modules/webp/register_types.h
+++ b/modules/webp/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/SCsub b/platform/android/SCsub
index b124a1a5a8..87e7ee4747 100644
--- a/platform/android/SCsub
+++ b/platform/android/SCsub
@@ -1,6 +1,7 @@
#!/usr/bin/env python
import shutil
+from compat import open_utf8
Import('env')
@@ -40,8 +41,8 @@ prog = None
abspath = env.Dir(".").abspath
-gradle_basein = open(abspath + "/build.gradle.template", "rb")
-gradle_baseout = open(abspath + "/java/build.gradle", "wb")
+gradle_basein = open_utf8(abspath + "/build.gradle.template", "r")
+gradle_baseout = open_utf8(abspath + "/java/build.gradle", "w")
gradle_text = gradle_basein.read()
@@ -124,8 +125,8 @@ gradle_baseout.write(gradle_text)
gradle_baseout.close()
-pp_basein = open(abspath + "/AndroidManifest.xml.template", "rb")
-pp_baseout = open(abspath + "/java/AndroidManifest.xml", "wb")
+pp_basein = open_utf8(abspath + "/AndroidManifest.xml.template", "r")
+pp_baseout = open_utf8(abspath + "/java/AndroidManifest.xml", "w")
manifest = pp_basein.read()
manifest = manifest.replace("$$ADD_APPLICATION_CHUNKS$$", env.android_manifest_chunk)
manifest = manifest.replace("$$ADD_PERMISSION_CHUNKS$$", env.android_permission_chunk)
@@ -146,7 +147,7 @@ elif env['android_arch'] == 'arm64v8':
elif env['android_arch'] == 'x86':
lib_arch_dir = 'x86'
else:
- print 'WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin'
+ print('WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin')
if lib_arch_dir != '':
if env['target'] == 'release':
diff --git a/platform/android/audio_driver_jandroid.cpp b/platform/android/audio_driver_jandroid.cpp
index d293f3ed30..4a3bdd877d 100644
--- a/platform/android/audio_driver_jandroid.cpp
+++ b/platform/android/audio_driver_jandroid.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -80,8 +80,7 @@ Error AudioDriverAndroid::init() {
int mix_rate = GLOBAL_DEF("audio/mix_rate", 44100);
int latency = GLOBAL_DEF("audio/output_latency", 25);
- latency = 50;
- unsigned int buffer_size = nearest_power_of_2(latency * mix_rate / 1000);
+ unsigned int buffer_size = next_power_of_2(latency * mix_rate / 1000);
if (OS::get_singleton()->is_stdout_verbose()) {
print_line("audio buffer size: " + itos(buffer_size));
}
diff --git a/platform/android/audio_driver_jandroid.h b/platform/android/audio_driver_jandroid.h
index e2bb5ede86..8135641a62 100644
--- a/platform/android/audio_driver_jandroid.h
+++ b/platform/android/audio_driver_jandroid.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -71,7 +71,7 @@ public:
virtual void set_pause(bool p_pause);
- static void setup(jobject act);
+ static void setup(jobject p_io);
static void thread_func(JNIEnv *env);
AudioDriverAndroid();
diff --git a/platform/android/audio_driver_opensl.cpp b/platform/android/audio_driver_opensl.cpp
index acd94d2bdd..e774f5bb7d 100644
--- a/platform/android/audio_driver_opensl.cpp
+++ b/platform/android/audio_driver_opensl.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,29 +75,10 @@ void AudioDriverOpenSL::_buffer_callback(
}
(*queueItf)->Enqueue(queueItf, ptr, 4 * buffer_size);
-
-#if 0
- SLresult res;
- CallbackCntxt *pCntxt = (CallbackCntxt*)pContext;
- if(pCntxt->pData < (pCntxt->pDataBase + pCntxt->size))
- {
- res = (*queueItf)->Enqueue(queueItf, (void*) pCntxt->pData,
- 2 * AUDIO_DATA_BUFFER_SIZE, SL_BOOLEAN_FALSE); /* Size given
- in bytes. */
- CheckErr(res);
- /* Increase data pointer by buffer size */
- pCntxt->pData += AUDIO_DATA_BUFFER_SIZE;
- }
- }
-#endif
}
void AudioDriverOpenSL::_buffer_callbacks(
SLAndroidSimpleBufferQueueItf queueItf,
- /*SLuint32 eventFlags,
- const void * pBuffer,
- SLuint32 bufferSize,
- SLuint32 dataUsed,*/
void *pContext) {
AudioDriverOpenSL *ad = (AudioDriverOpenSL *)pContext;
@@ -113,65 +94,6 @@ const char *AudioDriverOpenSL::get_name() const {
return "Android";
}
-#if 0
-int AudioDriverOpenSL::thread_func(SceSize args, void *argp) {
-
- AudioDriverOpenSL* ad = s_ad;
- sceAudioOutput2Reserve(AUDIO_OUTPUT_SAMPLE);
-
- int half=0;
- while(!ad->exit_thread) {
-
- int16_t *ptr = &ad->outbuff[AUDIO_OUTPUT_SAMPLE*2*half];
-
-
-
- if (!ad->active) {
-
- for(int i=0;i<AUDIO_OUTPUT_SAMPLE*2;i++) {
- ptr[i]=0;
- }
-
- } else {
-
- //printf("samples: %i\n",AUDIO_OUTPUT_SAMPLE);
- ad->lock();
-
- ad->audio_server_process(AUDIO_OUTPUT_SAMPLE,ad->outbuff_32);
-
- ad->unlock();
-
- const int32_t* src_buff=ad->outbuff_32;
-
- for(int i=0;i<AUDIO_OUTPUT_SAMPLE*2;i++) {
-
- ptr[i]=src_buff[i]>>16;
- }
- }
-
-
- /* Output 16-bit PCM STEREO data that is in pcmBuf without changing the volume */
- sceAudioOutput2OutputBlocking(
- SCE_AUDIO_VOLUME_0dB*3, //0db at 0x8000, that's obvious
- ptr
- );
-
- if (half)
- half=0;
- else
- half=1;
-
- }
-
- sceAudioOutput2Release();
-
- sceKernelExitThread(SCE_KERNEL_EXIT_SUCCESS);
- ad->thread_exited=true;
- return SCE_KERNEL_EXIT_SUCCESS;
-
-}
-
-#endif
Error AudioDriverOpenSL::init() {
SLresult
@@ -228,29 +150,12 @@ void AudioDriverOpenSL::start() {
SLboolean required[MAX_NUMBER_INTERFACES];
SLInterfaceID iidArray[MAX_NUMBER_INTERFACES];
-#if 0
-
- for (int i=0; i<MAX_NUMBER_INTERFACES; i++)
- {
- required[i] = SL_BOOLEAN_FALSE;
- iidArray[i] = SL_IID_NULL;
- }
- // Set arrays required[] and iidArray[] for VOLUME interface
- required[0] = SL_BOOLEAN_TRUE;
- iidArray[0] = SL_IID_VOLUME;
-
- // Create Output Mix object to be used by player
- res = (*EngineItf)->CreateOutputMix(EngineItf, &OutputMix, 1,
- iidArray, required);
-#else
-
{
const SLInterfaceID ids[1] = { SL_IID_ENVIRONMENTALREVERB };
const SLboolean req[1] = { SL_BOOLEAN_FALSE };
res = (*EngineItf)->CreateOutputMix(EngineItf, &OutputMix, 0, ids, req);
}
-#endif
ERR_FAIL_COND(res != SL_RESULT_SUCCESS);
// Realizing the Output Mix object in synchronous mode.
res = (*OutputMix)->Realize(OutputMix, SL_BOOLEAN_FALSE);
@@ -308,44 +213,18 @@ void AudioDriverOpenSL::start() {
/* Setup to receive buffer queue event callbacks */
res = (*bufferQueueItf)->RegisterCallback(bufferQueueItf, _buffer_callbacks, this);
ERR_FAIL_COND(res != SL_RESULT_SUCCESS);
-/* Before we start set volume to -3dB (-300mB) */
-#if 0
- res = (*OutputMix)->GetInterface(OutputMix, SL_IID_VOLUME,
- (void*)&volumeItf);
- ERR_FAIL_COND( res !=SL_RESULT_SUCCESS );
- /* Setup the data source structure for the buffer queue */
-
- res = (*volumeItf)->SetVolumeLevel(volumeItf, -300);
- ERR_FAIL_COND( res !=SL_RESULT_SUCCESS );
-#endif
+
last_free = 0;
-#if 1
+
//fill up buffers
for (int i = 0; i < BUFFER_COUNT; i++) {
/* Enqueue a few buffers to get the ball rolling */
res = (*bufferQueueItf)->Enqueue(bufferQueueItf, buffers[i], 4 * buffer_size); /* Size given in */
}
-#endif
res = (*playItf)->SetPlayState(playItf, SL_PLAYSTATE_PLAYING);
ERR_FAIL_COND(res != SL_RESULT_SUCCESS);
-#if 0
- res = (*bufferQueueItf)->GetState(bufferQueueItf, &state);
- ERR_FAIL_COND( res !=SL_RESULT_SUCCESS );
- while(state.count)
- {
- (*bufferQueueItf)->GetState(bufferQueueItf, &state);
- }
- /* Make sure player is stopped */
- res = (*playItf)->SetPlayState(playItf, SL_PLAYSTATE_STOPPED);
- CheckErr(res);
- /* Destroy the player */
- (*player)->Destroy(player);
- /* Destroy Output Mix object */
- (*OutputMix)->Destroy(OutputMix);
-#endif
-
active = true;
}
diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h
index f6270a3084..b505c5fe8a 100644
--- a/platform/android/audio_driver_opensl.h
+++ b/platform/android/audio_driver_opensl.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/detect.py b/platform/android/detect.py
index ad5bfb4949..65442bf6f8 100644
--- a/platform/android/detect.py
+++ b/platform/android/detect.py
@@ -14,7 +14,7 @@ def get_name():
def can_build():
- return (os.environ.has_key("ANDROID_NDK_ROOT"))
+ return ("ANDROID_NDK_ROOT" in os.environ)
def get_opts():
@@ -55,7 +55,7 @@ def configure(env):
import subprocess
def mySubProcess(cmdline, env):
- # print "SPAWNED : " + cmdline
+ # print("SPAWNED : " + cmdline)
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
@@ -63,9 +63,9 @@ def configure(env):
data, err = proc.communicate()
rv = proc.wait()
if rv:
- print "====="
- print err
- print "====="
+ print("=====")
+ print(err)
+ print("=====")
return rv
def mySpawn(sh, escape, cmd, args, env):
@@ -183,8 +183,8 @@ def configure(env):
## Compile flags
env.Append(CPPFLAGS=["-isystem", sysroot + "/usr/include"])
- env.Append(CPPFLAGS=string.split('-fpic -ffunction-sections -funwind-tables -fstack-protector-strong -fvisibility=hidden -fno-strict-aliasing'))
- env.Append(CPPFLAGS=string.split('-DNO_STATVFS -DGLES2_ENABLED'))
+ env.Append(CPPFLAGS='-fpic -ffunction-sections -funwind-tables -fstack-protector-strong -fvisibility=hidden -fno-strict-aliasing'.split())
+ env.Append(CPPFLAGS='-DNO_STATVFS -DGLES2_ENABLED'.split())
env['neon_enabled'] = False
if env['android_arch'] == 'x86':
@@ -194,11 +194,11 @@ def configure(env):
elif env["android_arch"] == "armv6":
target_opts = ['-target', 'armv6-none-linux-androideabi']
- env.Append(CPPFLAGS=string.split('-D__ARM_ARCH_6__ -march=armv6 -mfpu=vfp -mfloat-abi=softfp'))
+ env.Append(CPPFLAGS='-D__ARM_ARCH_6__ -march=armv6 -mfpu=vfp -mfloat-abi=softfp'.split())
elif env["android_arch"] == "armv7":
target_opts = ['-target', 'armv7-none-linux-androideabi']
- env.Append(CPPFLAGS=string.split('-D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -march=armv7-a -mfloat-abi=softfp'))
+ env.Append(CPPFLAGS='-D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -march=armv7-a -mfloat-abi=softfp'.split())
if env['android_neon'] == 'yes':
env['neon_enabled'] = True
env.Append(CPPFLAGS=['-mfpu=neon', '-D__ARM_NEON__'])
@@ -225,9 +225,9 @@ def configure(env):
env['LINKFLAGS'] = ['-shared', '--sysroot=' + sysroot, '-Wl,--warn-shared-textrel']
if env["android_arch"] == "armv7":
- env.Append(LINKFLAGS=string.split('-Wl,--fix-cortex-a8'))
- env.Append(LINKFLAGS=string.split('-Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now'))
- env.Append(LINKFLAGS=string.split('-Wl,-soname,libgodot_android.so -Wl,--gc-sections'))
+ env.Append(LINKFLAGS='-Wl,--fix-cortex-a8'.split())
+ env.Append(LINKFLAGS='-Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now'.split())
+ env.Append(LINKFLAGS='-Wl,-soname,libgodot_android.so -Wl,--gc-sections'.split())
if mt_link:
env.Append(LINKFLAGS=['-Wl,--threads'])
env.Append(LINKFLAGS=target_opts)
diff --git a/platform/android/dir_access_android.cpp b/platform/android/dir_access_android.cpp
index 67aa7750cd..9653a585b1 100644
--- a/platform/android/dir_access_android.cpp
+++ b/platform/android/dir_access_android.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/dir_access_android.h b/platform/android/dir_access_android.h
index 32986f524b..2f63befc32 100644
--- a/platform/android/dir_access_android.h
+++ b/platform/android/dir_access_android.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp
index 34f4afa331..26e4684056 100644
--- a/platform/android/dir_access_jandroid.cpp
+++ b/platform/android/dir_access_jandroid.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/dir_access_jandroid.h b/platform/android/dir_access_jandroid.h
index 0175595543..ad89be3581 100644
--- a/platform/android/dir_access_jandroid.h
+++ b/platform/android/dir_access_jandroid.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -79,7 +79,7 @@ public:
//virtual FileType get_file_type() const;
size_t get_space_left();
- static void setup(jobject io);
+ static void setup(jobject p_io);
DirAccessJAndroid();
~DirAccessJAndroid();
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 3c52834d92..8b3a64bbe6 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "export.h"
+
#include "editor/editor_export.h"
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
@@ -39,1865 +40,8 @@
#include "platform/android/run_icon.gen.h"
#include "project_settings.h"
#include "version.h"
-#include <string.h>
-#if 0
-
-static const char* android_perms[]={
-"ACCESS_CHECKIN_PROPERTIES",
-"ACCESS_COARSE_LOCATION",
-"ACCESS_FINE_LOCATION",
-"ACCESS_LOCATION_EXTRA_COMMANDS",
-"ACCESS_MOCK_LOCATION",
-"ACCESS_NETWORK_STATE",
-"ACCESS_SURFACE_FLINGER",
-"ACCESS_WIFI_STATE",
-"ACCOUNT_MANAGER",
-"ADD_VOICEMAIL",
-"AUTHENTICATE_ACCOUNTS",
-"BATTERY_STATS",
-"BIND_ACCESSIBILITY_SERVICE",
-"BIND_APPWIDGET",
-"BIND_DEVICE_ADMIN",
-"BIND_INPUT_METHOD",
-"BIND_NFC_SERVICE",
-"BIND_NOTIFICATION_LISTENER_SERVICE",
-"BIND_PRINT_SERVICE",
-"BIND_REMOTEVIEWS",
-"BIND_TEXT_SERVICE",
-"BIND_VPN_SERVICE",
-"BIND_WALLPAPER",
-"BLUETOOTH",
-"BLUETOOTH_ADMIN",
-"BLUETOOTH_PRIVILEGED",
-"BRICK",
-"BROADCAST_PACKAGE_REMOVED",
-"BROADCAST_SMS",
-"BROADCAST_STICKY",
-"BROADCAST_WAP_PUSH",
-"CALL_PHONE",
-"CALL_PRIVILEGED",
-"CAMERA",
-"CAPTURE_AUDIO_OUTPUT",
-"CAPTURE_SECURE_VIDEO_OUTPUT",
-"CAPTURE_VIDEO_OUTPUT",
-"CHANGE_COMPONENT_ENABLED_STATE",
-"CHANGE_CONFIGURATION",
-"CHANGE_NETWORK_STATE",
-"CHANGE_WIFI_MULTICAST_STATE",
-"CHANGE_WIFI_STATE",
-"CLEAR_APP_CACHE",
-"CLEAR_APP_USER_DATA",
-"CONTROL_LOCATION_UPDATES",
-"DELETE_CACHE_FILES",
-"DELETE_PACKAGES",
-"DEVICE_POWER",
-"DIAGNOSTIC",
-"DISABLE_KEYGUARD",
-"DUMP",
-"EXPAND_STATUS_BAR",
-"FACTORY_TEST",
-"FLASHLIGHT",
-"FORCE_BACK",
-"GET_ACCOUNTS",
-"GET_PACKAGE_SIZE",
-"GET_TASKS",
-"GET_TOP_ACTIVITY_INFO",
-"GLOBAL_SEARCH",
-"HARDWARE_TEST",
-"INJECT_EVENTS",
-"INSTALL_LOCATION_PROVIDER",
-"INSTALL_PACKAGES",
-"INSTALL_SHORTCUT",
-"INTERNAL_SYSTEM_WINDOW",
-"INTERNET",
-"KILL_BACKGROUND_PROCESSES",
-"LOCATION_HARDWARE",
-"MANAGE_ACCOUNTS",
-"MANAGE_APP_TOKENS",
-"MANAGE_DOCUMENTS",
-"MASTER_CLEAR",
-"MEDIA_CONTENT_CONTROL",
-"MODIFY_AUDIO_SETTINGS",
-"MODIFY_PHONE_STATE",
-"MOUNT_FORMAT_FILESYSTEMS",
-"MOUNT_UNMOUNT_FILESYSTEMS",
-"NFC",
-"PERSISTENT_ACTIVITY",
-"PROCESS_OUTGOING_CALLS",
-"READ_CALENDAR",
-"READ_CALL_LOG",
-"READ_CONTACTS",
-"READ_EXTERNAL_STORAGE",
-"READ_FRAME_BUFFER",
-"READ_HISTORY_BOOKMARKS",
-"READ_INPUT_STATE",
-"READ_LOGS",
-"READ_PHONE_STATE",
-"READ_PROFILE",
-"READ_SMS",
-"READ_SOCIAL_STREAM",
-"READ_SYNC_SETTINGS",
-"READ_SYNC_STATS",
-"READ_USER_DICTIONARY",
-"REBOOT",
-"RECEIVE_BOOT_COMPLETED",
-"RECEIVE_MMS",
-"RECEIVE_SMS",
-"RECEIVE_WAP_PUSH",
-"RECORD_AUDIO",
-"REORDER_TASKS",
-"RESTART_PACKAGES",
-"SEND_RESPOND_VIA_MESSAGE",
-"SEND_SMS",
-"SET_ACTIVITY_WATCHER",
-"SET_ALARM",
-"SET_ALWAYS_FINISH",
-"SET_ANIMATION_SCALE",
-"SET_DEBUG_APP",
-"SET_ORIENTATION",
-"SET_POINTER_SPEED",
-"SET_PREFERRED_APPLICATIONS",
-"SET_PROCESS_LIMIT",
-"SET_TIME",
-"SET_TIME_ZONE",
-"SET_WALLPAPER",
-"SET_WALLPAPER_HINTS",
-"SIGNAL_PERSISTENT_PROCESSES",
-"STATUS_BAR",
-"SUBSCRIBED_FEEDS_READ",
-"SUBSCRIBED_FEEDS_WRITE",
-"SYSTEM_ALERT_WINDOW",
-"TRANSMIT_IR",
-"UNINSTALL_SHORTCUT",
-"UPDATE_DEVICE_STATS",
-"USE_CREDENTIALS",
-"USE_SIP",
-"VIBRATE",
-"WAKE_LOCK",
-"WRITE_APN_SETTINGS",
-"WRITE_CALENDAR",
-"WRITE_CALL_LOG",
-"WRITE_CONTACTS",
-"WRITE_EXTERNAL_STORAGE",
-"WRITE_GSERVICES",
-"WRITE_HISTORY_BOOKMARKS",
-"WRITE_PROFILE",
-"WRITE_SECURE_SETTINGS",
-"WRITE_SETTINGS",
-"WRITE_SMS",
-"WRITE_SOCIAL_STREAM",
-"WRITE_SYNC_SETTINGS",
-"WRITE_USER_DICTIONARY",
-NULL};
-
-class EditorExportPlatformAndroid : public EditorExportPlatform {
-
- GDCLASS( EditorExportPlatformAndroid,EditorExportPlatform );
-
-
- enum {
- MAX_USER_PERMISSIONS=20,
- SCREEN_SMALL=0,
- SCREEN_NORMAL=1,
- SCREEN_LARGE=2,
- SCREEN_XLARGE=3,
- SCREEN_MAX=4
- };
-
- String custom_release_package;
- String custom_debug_package;
-
- int version_code;
- String version_name;
- String package;
- String name;
- String icon;
- String cmdline;
- bool _signed;
- bool apk_expansion;
- bool remove_prev;
- bool use_32_fb;
- bool immersive;
- bool export_arm;
- bool export_arm64;
- bool export_x86;
- String apk_expansion_salt;
- String apk_expansion_pkey;
- int orientation;
-
- String release_keystore;
- String release_password;
- String release_username;
-
- struct APKExportData {
-
- zipFile apk;
- EditorProgress *ep;
- };
-
- struct Device {
-
- String id;
- String name;
- String description;
- };
-
- Vector<Device> devices;
- bool devices_changed;
- Mutex *device_lock;
- Thread *device_thread;
- Ref<ImageTexture> logo;
-
- Set<String> perms;
- String user_perms[MAX_USER_PERMISSIONS];
- bool screen_support[SCREEN_MAX];
-
- volatile bool quit_request;
-
-
- static void _device_poll_thread(void *ud);
-
- String get_package_name();
-
- String get_project_name() const;
- void _fix_manifest(Vector<uint8_t>& p_manifest, bool p_give_internet);
- void _fix_resources(Vector<uint8_t>& p_manifest);
- static Error save_apk_file(void *p_userdata,const String& p_path, const Vector<uint8_t>& p_data,int p_file,int p_total);
- static bool _should_compress_asset(const String& p_path, const Vector<uint8_t>& p_data);
-
-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;
-
-public:
-
- virtual String get_name() const { return "Android"; }
- virtual ImageCompression get_image_compression() const { return IMAGE_COMPRESSION_ETC1; }
- virtual Ref<Texture> get_logo() const { return logo; }
-
-
- virtual bool poll_devices();
- virtual int get_device_count() const;
- virtual String get_device_name(int p_device) const;
- virtual String get_device_info(int p_device) const;
- virtual Error run(int p_device,int p_flags=0);
-
- virtual bool requires_password(bool p_debug) const { return !p_debug; }
- virtual String get_binary_extension() const { return "apk"; }
- virtual Error export_project(const String& p_path, bool p_debug, int p_flags=0);
-
- virtual bool can_export(String *r_error=NULL) const;
-
- EditorExportPlatformAndroid();
- ~EditorExportPlatformAndroid();
-};
-
-bool EditorExportPlatformAndroid::_set(const StringName& p_name, const Variant& p_value) {
-
- String n=p_name;
-
- if (n=="one_click_deploy/clear_previous_install")
- remove_prev=p_value;
- else if (n=="custom_package/debug")
- custom_debug_package=p_value;
- else if (n=="custom_package/release")
- custom_release_package=p_value;
- else if (n=="version/code")
- version_code=p_value;
- else if (n=="version/name")
- version_name=p_value;
- else if (n=="command_line/extra_args")
- cmdline=p_value;
- else if (n=="package/unique_name")
- package=p_value;
- else if (n=="package/name")
- name=p_value;
- else if (n=="package/icon")
- icon=p_value;
- else if (n=="package/signed")
- _signed=p_value;
- else if (n=="architecture/arm")
- export_arm=p_value;
- else if (n=="architecture/arm64")
- export_arm64=p_value;
- else if (n=="architecture/x86")
- export_x86=p_value;
- else if (n=="screen/use_32_bits_view")
- use_32_fb=p_value;
- else if (n=="screen/immersive_mode")
- immersive=p_value;
- else if (n=="screen/orientation")
- orientation=p_value;
- else if (n=="screen/support_small")
- screen_support[SCREEN_SMALL]=p_value;
- else if (n=="screen/support_normal")
- screen_support[SCREEN_NORMAL]=p_value;
- else if (n=="screen/support_large")
- screen_support[SCREEN_LARGE]=p_value;
- else if (n=="screen/support_xlarge")
- screen_support[SCREEN_XLARGE]=p_value;
- else if (n=="keystore/release")
- release_keystore=p_value;
- else if (n=="keystore/release_user")
- release_username=p_value;
- else if (n=="keystore/release_password")
- release_password=p_value;
- else if (n=="apk_expansion/enable")
- apk_expansion=p_value;
- else if (n=="apk_expansion/SALT")
- apk_expansion_salt=p_value;
- else if (n=="apk_expansion/public_key")
- apk_expansion_pkey=p_value;
- else if (n.begins_with("permissions/")) {
-
- String what = n.get_slicec('/',1).to_upper();
- bool state = p_value;
- if (state)
- perms.insert(what);
- else
- perms.erase(what);
- } else if (n.begins_with("user_permissions/")) {
-
- int which = n.get_slicec('/',1).to_int();
- ERR_FAIL_INDEX_V(which,MAX_USER_PERMISSIONS,false);
- user_perms[which]=p_value;
-
- } else
- return false;
-
- return true;
-}
-
-bool EditorExportPlatformAndroid::_get(const StringName& p_name,Variant &r_ret) const{
-
- String n=p_name;
- if (n=="one_click_deploy/clear_previous_install")
- r_ret=remove_prev;
- else if (n=="custom_package/debug")
- r_ret=custom_debug_package;
- else if (n=="custom_package/release")
- r_ret=custom_release_package;
- else if (n=="version/code")
- r_ret=version_code;
- else if (n=="version/name")
- r_ret=version_name;
- else if (n=="command_line/extra_args")
- r_ret=cmdline;
- else if (n=="package/unique_name")
- r_ret=package;
- else if (n=="package/name")
- r_ret=name;
- else if (n=="package/icon")
- r_ret=icon;
- else if (n=="package/signed")
- r_ret=_signed;
- else if (n=="architecture/arm")
- r_ret=export_arm;
- else if (n=="architecture/arm64")
- r_ret=export_arm64;
- else if (n=="architecture/x86")
- r_ret=export_x86;
- else if (n=="screen/use_32_bits_view")
- r_ret=use_32_fb;
- else if (n=="screen/immersive_mode")
- r_ret=immersive;
- else if (n=="screen/orientation")
- r_ret=orientation;
- else if (n=="screen/support_small")
- r_ret=screen_support[SCREEN_SMALL];
- else if (n=="screen/support_normal")
- r_ret=screen_support[SCREEN_NORMAL];
- else if (n=="screen/support_large")
- r_ret=screen_support[SCREEN_LARGE];
- else if (n=="screen/support_xlarge")
- r_ret=screen_support[SCREEN_XLARGE];
- else if (n=="keystore/release")
- r_ret=release_keystore;
- else if (n=="keystore/release_user")
- r_ret=release_username;
- else if (n=="keystore/release_password")
- r_ret=release_password;
- else if (n=="apk_expansion/enable")
- r_ret=apk_expansion;
- else if (n=="apk_expansion/SALT")
- r_ret=apk_expansion_salt;
- else if (n=="apk_expansion/public_key")
- r_ret=apk_expansion_pkey;
- else if (n.begins_with("permissions/")) {
-
- String what = n.get_slicec('/',1).to_upper();
- r_ret = perms.has(what);
- } else if (n.begins_with("user_permissions/")) {
-
- int which = n.get_slicec('/',1).to_int();
- ERR_FAIL_INDEX_V(which,MAX_USER_PERMISSIONS,false);
- r_ret=user_perms[which];
- } else
- return false;
-
- return true;
-}
-
-void EditorExportPlatformAndroid::_get_property_list( List<PropertyInfo> *p_list) const{
-
- p_list->push_back( PropertyInfo( Variant::BOOL, "one_click_deploy/clear_previous_install"));
- p_list->push_back( PropertyInfo( Variant::STRING, "custom_package/debug", PROPERTY_HINT_GLOBAL_FILE,"apk"));
- p_list->push_back( PropertyInfo( Variant::STRING, "custom_package/release", PROPERTY_HINT_GLOBAL_FILE,"apk"));
- p_list->push_back( PropertyInfo( Variant::STRING, "command_line/extra_args"));
- p_list->push_back( PropertyInfo( Variant::INT, "version/code", PROPERTY_HINT_RANGE,"1,65535,1"));
- p_list->push_back( PropertyInfo( Variant::STRING, "version/name") );
- p_list->push_back( PropertyInfo( Variant::STRING, "package/unique_name") );
- p_list->push_back( PropertyInfo( Variant::STRING, "package/name") );
- p_list->push_back( PropertyInfo( Variant::STRING, "package/icon",PROPERTY_HINT_FILE,"png") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "package/signed") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "architecture/arm") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "architecture/x86") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "screen/use_32_bits_view") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "screen/immersive_mode") );
- p_list->push_back( PropertyInfo( Variant::INT, "screen/orientation",PROPERTY_HINT_ENUM,"Landscape,Portrait") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "screen/support_small") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "screen/support_normal") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "screen/support_large") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "screen/support_xlarge") );
- p_list->push_back( PropertyInfo( Variant::STRING, "keystore/release",PROPERTY_HINT_GLOBAL_FILE,"keystore") );
- p_list->push_back( PropertyInfo( Variant::STRING, "keystore/release_user" ) );
- p_list->push_back( PropertyInfo( Variant::STRING, "keystore/release_password" ) );
- p_list->push_back( PropertyInfo( Variant::BOOL, "apk_expansion/enable" ) );
- p_list->push_back( PropertyInfo( Variant::STRING, "apk_expansion/SALT" ) );
- p_list->push_back( PropertyInfo( Variant::STRING, "apk_expansion/public_key",PROPERTY_HINT_MULTILINE_TEXT ) );
-
- const char **perms = android_perms;
- while(*perms) {
-
- p_list->push_back( PropertyInfo( Variant::BOOL, "permissions/"+String(*perms).to_lower()));
- perms++;
- }
-
- for(int i=0;i<MAX_USER_PERMISSIONS;i++) {
-
- p_list->push_back( PropertyInfo( Variant::STRING, "user_permissions/"+itos(i)));
- }
-
- //p_list->push_back( PropertyInfo( Variant::INT, "resources/pack_mode", PROPERTY_HINT_ENUM,"Copy,Single Exec.,Pack (.pck),Bundles (Optical)"));
-
-}
-
-
-static String _parse_string(const uint8_t *p_bytes,bool p_utf8) {
-
- uint32_t offset=0;
- uint32_t len = decode_uint16(&p_bytes[offset]);
-
- if (p_utf8) {
- //don't know how to read extended utf8, this will have to be for now
- len>>=8;
-
- }
- offset+=2;
- //printf("len %i, unicode: %i\n",len,int(p_utf8));
-
- if (p_utf8) {
-
- Vector<uint8_t> str8;
- str8.resize(len+1);
- for(uint32_t i=0;i<len;i++) {
- str8[i]=p_bytes[offset+i];
- }
- str8[len]=0;
- String str;
- str.parse_utf8((const char*)str8.ptr());
- return str;
- } else {
-
- String str;
- for(uint32_t i=0;i<len;i++) {
- CharType c = decode_uint16(&p_bytes[offset+i*2]);
- if (c==0)
- break;
- str += String::chr(c);
- }
- return str;
- }
-
-}
-
-void EditorExportPlatformAndroid::_fix_resources(Vector<uint8_t>& p_manifest) {
-
-
- const int UTF8_FLAG = 0x00000100;
- print_line("*******************GORRRGLE***********************");
-
- uint32_t header = decode_uint32(&p_manifest[0]);
- uint32_t filesize = decode_uint32(&p_manifest[4]);
- uint32_t string_block_len = decode_uint32(&p_manifest[16]);
- uint32_t string_count = decode_uint32(&p_manifest[20]);
- uint32_t string_flags = decode_uint32(&p_manifest[28]);
- const uint32_t string_table_begins = 40;
-
- Vector<String> string_table;
-
- //printf("stirng block len: %i\n",string_block_len);
- //printf("stirng count: %i\n",string_count);
- //printf("flags: %x\n",string_flags);
-
- for(uint32_t i=0;i<string_count;i++) {
-
- uint32_t offset = decode_uint32(&p_manifest[string_table_begins+i*4]);
- offset+=string_table_begins+string_count*4;
-
- String str = _parse_string(&p_manifest[offset],string_flags&UTF8_FLAG);
-
- if (str.begins_with("godot-project-name")) {
-
-
- if (str=="godot-project-name") {
- //project name
- str = get_project_name();
-
- } else {
-
- String lang = str.substr(str.find_last("-")+1,str.length()).replace("-","_");
- String prop = "application/config/name_"+lang;
- if (ProjectSettings::get_singleton()->has(prop)) {
- str = ProjectSettings::get_singleton()->get(prop);
- } else {
- str = get_project_name();
- }
- }
- }
-
- string_table.push_back(str);
-
- }
-
- //write a new string table, but use 16 bits
- Vector<uint8_t> ret;
- ret.resize(string_table_begins+string_table.size()*4);
-
- for(uint32_t i=0;i<string_table_begins;i++) {
-
- ret[i]=p_manifest[i];
- }
-
- int ofs=0;
- for(int i=0;i<string_table.size();i++) {
-
- encode_uint32(ofs,&ret[string_table_begins+i*4]);
- ofs+=string_table[i].length()*2+2+2;
- }
-
- ret.resize(ret.size()+ofs);
- uint8_t *chars=&ret[ret.size()-ofs];
- for(int i=0;i<string_table.size();i++) {
-
- String s = string_table[i];
- encode_uint16(s.length(),chars);
- chars+=2;
- for(int j=0;j<s.length();j++) {
- encode_uint16(s[j],chars);
- chars+=2;
- }
- encode_uint16(0,chars);
- chars+=2;
- }
-
- //pad
- while(ret.size()%4)
- ret.push_back(0);
-
- //change flags to not use utf8
- encode_uint32(string_flags&~0x100,&ret[28]);
- //change length
- encode_uint32(ret.size()-12,&ret[16]);
- //append the rest...
- int rest_from = 12+string_block_len;
- int rest_to = ret.size();
- int rest_len = (p_manifest.size() - rest_from);
- ret.resize(ret.size() + (p_manifest.size() - rest_from) );
- for(int i=0;i<rest_len;i++) {
- ret[rest_to+i]=p_manifest[rest_from+i];
- }
- //finally update the size
- encode_uint32(ret.size(),&ret[4]);
-
-
- p_manifest=ret;
- //printf("end\n");
-}
-
-String EditorExportPlatformAndroid::get_project_name() const {
-
- String aname;
- if (this->name!="") {
- aname=this->name;
- } else {
- aname = ProjectSettings::get_singleton()->get("application/config/name");
-
- }
-
- if (aname=="") {
- aname=_MKSTR(VERSION_NAME);
- }
-
- return aname;
-}
-
-
-void EditorExportPlatformAndroid::_fix_manifest(Vector<uint8_t>& p_manifest,bool p_give_internet) {
-
-
- const int CHUNK_AXML_FILE = 0x00080003;
- const int CHUNK_RESOURCEIDS = 0x00080180;
- const int CHUNK_STRINGS = 0x001C0001;
- const int CHUNK_XML_END_NAMESPACE = 0x00100101;
- const int CHUNK_XML_END_TAG = 0x00100103;
- const int CHUNK_XML_START_NAMESPACE = 0x00100100;
- const int CHUNK_XML_START_TAG = 0x00100102;
- const int CHUNK_XML_TEXT = 0x00100104;
- const int UTF8_FLAG = 0x00000100;
-
- Vector<String> string_table;
-
- uint32_t ofs=0;
-
-
- uint32_t header = decode_uint32(&p_manifest[ofs]);
- uint32_t filesize = decode_uint32(&p_manifest[ofs+4]);
- ofs+=8;
-
- //print_line("FILESIZE: "+itos(filesize)+" ACTUAL: "+itos(p_manifest.size()));
-
- uint32_t string_count;
- uint32_t styles_count;
- uint32_t string_flags;
- uint32_t string_data_offset;
-
- uint32_t styles_offset;
- uint32_t string_table_begins;
- uint32_t string_table_ends;
- Vector<uint8_t> stable_extra;
-
- while(ofs < (uint32_t)p_manifest.size()) {
-
- uint32_t chunk = decode_uint32(&p_manifest[ofs]);
- uint32_t size = decode_uint32(&p_manifest[ofs+4]);
-
-
- switch(chunk) {
-
- case CHUNK_STRINGS: {
-
-
- int iofs=ofs+8;
-
- string_count=decode_uint32(&p_manifest[iofs]);
- styles_count=decode_uint32(&p_manifest[iofs+4]);
- string_flags=decode_uint32(&p_manifest[iofs+8]);
- string_data_offset=decode_uint32(&p_manifest[iofs+12]);
- styles_offset=decode_uint32(&p_manifest[iofs+16]);
-/*
- printf("string count: %i\n",string_count);
- printf("flags: %i\n",string_flags);
- printf("sdata ofs: %i\n",string_data_offset);
- printf("styles ofs: %i\n",styles_offset);
-*/
- uint32_t st_offset=iofs+20;
- string_table.resize(string_count);
- uint32_t string_end=0;
-
- string_table_begins=st_offset;
-
-
- for(uint32_t i=0;i<string_count;i++) {
-
- uint32_t string_at = decode_uint32(&p_manifest[st_offset+i*4]);
- string_at+=st_offset+string_count*4;
-
- ERR_EXPLAIN("Unimplemented, can't read utf8 string table.");
- ERR_FAIL_COND(string_flags&UTF8_FLAG);
-
- if (string_flags&UTF8_FLAG) {
-
-
-
- } else {
- uint32_t len = decode_uint16(&p_manifest[string_at]);
- Vector<CharType> ucstring;
- ucstring.resize(len+1);
- for(uint32_t j=0;j<len;j++) {
- uint16_t c=decode_uint16(&p_manifest[string_at+2+2*j]);
- ucstring[j]=c;
- }
- string_end=MAX(string_at+2+2*len,string_end);
- ucstring[len]=0;
- string_table[i]=ucstring.ptr();
- }
-
-
- //print_line("String "+itos(i)+": "+string_table[i]);
- }
-
- for(uint32_t i=string_end;i<(ofs+size);i++) {
- stable_extra.push_back(p_manifest[i]);
- }
-
- //printf("stable extra: %i\n",int(stable_extra.size()));
- string_table_ends=ofs+size;
-
- //print_line("STABLE SIZE: "+itos(size)+" ACTUAL: "+itos(string_table_ends));
-
- } break;
- case CHUNK_XML_START_TAG: {
-
- int iofs=ofs+8;
- uint32_t line=decode_uint32(&p_manifest[iofs]);
- uint32_t nspace=decode_uint32(&p_manifest[iofs+8]);
- uint32_t name=decode_uint32(&p_manifest[iofs+12]);
- uint32_t check=decode_uint32(&p_manifest[iofs+16]);
-
- String tname=string_table[name];
-
- //printf("NSPACE: %i\n",nspace);
- //printf("NAME: %i (%s)\n",name,tname.utf8().get_data());
- //printf("CHECK: %x\n",check);
- uint32_t attrcount=decode_uint32(&p_manifest[iofs+20]);
- iofs+=28;
- //printf("ATTRCOUNT: %x\n",attrcount);
- for(uint32_t i=0;i<attrcount;i++) {
- uint32_t attr_nspace=decode_uint32(&p_manifest[iofs]);
- uint32_t attr_name=decode_uint32(&p_manifest[iofs+4]);
- uint32_t attr_value=decode_uint32(&p_manifest[iofs+8]);
- uint32_t attr_flags=decode_uint32(&p_manifest[iofs+12]);
- uint32_t attr_resid=decode_uint32(&p_manifest[iofs+16]);
-
-
- String value;
- if (attr_value!=0xFFFFFFFF)
- value=string_table[attr_value];
- else
- value="Res #"+itos(attr_resid);
- String attrname = string_table[attr_name];
- String nspace;
- if (attr_nspace!=0xFFFFFFFF)
- nspace=string_table[attr_nspace];
- else
- nspace="";
-
- //printf("ATTR %i NSPACE: %i\n",i,attr_nspace);
- //printf("ATTR %i NAME: %i (%s)\n",i,attr_name,attrname.utf8().get_data());
- //printf("ATTR %i VALUE: %i (%s)\n",i,attr_value,value.utf8().get_data());
- //printf("ATTR %i FLAGS: %x\n",i,attr_flags);
- //printf("ATTR %i RESID: %x\n",i,attr_resid);
-
- //replace project information
- if (tname=="manifest" && attrname=="package") {
-
- print_line("FOUND package");
- string_table[attr_value]=get_package_name();
- }
-
- //print_line("tname: "+tname);
- //print_line("nspace: "+nspace);
- //print_line("attrname: "+attrname);
- if (tname=="manifest" && /*nspace=="android" &&*/ attrname=="versionCode") {
-
- print_line("FOUND versionCode");
- encode_uint32(version_code,&p_manifest[iofs+16]);
- }
-
-
- if (tname=="manifest" && /*nspace=="android" &&*/ attrname=="versionName") {
-
- print_line("FOUND versionName");
- if (attr_value==0xFFFFFFFF) {
- WARN_PRINT("Version name in a resource, should be plaintext")
- } else
- string_table[attr_value]=version_name;
- }
-
- if (tname=="activity" && /*nspace=="android" &&*/ attrname=="screenOrientation") {
-
- encode_uint32(orientation==0?0:1,&p_manifest[iofs+16]);
- /*
- print_line("FOUND screen orientation");
- if (attr_value==0xFFFFFFFF) {
- WARN_PRINT("Version name in a resource, should be plaintext")
- } else {
- string_table[attr_value]=(orientation==0?"landscape":"portrait");
- }*/
- }
-
- if (tname=="uses-permission" && /*nspace=="android" &&*/ attrname=="name") {
-
- if (value.begins_with("godot.custom")) {
-
- int which = value.get_slice(".",2).to_int();
- if (which>=0 && which<MAX_USER_PERMISSIONS && user_perms[which].strip_edges()!="") {
-
- string_table[attr_value]=user_perms[which].strip_edges();
- }
-
- } else if (value.begins_with("godot.")) {
- String perm = value.get_slice(".",1);
-
- if (perms.has(perm) || (p_give_internet && perm=="INTERNET")) {
-
- print_line("PERM: "+perm);
- string_table[attr_value]="android.permission."+perm;
- }
-
- }
- }
-
- if (tname=="supports-screens" ) {
-
- if (attrname=="smallScreens") {
-
- encode_uint32(screen_support[SCREEN_SMALL]?0xFFFFFFFF:0,&p_manifest[iofs+16]);
-
- } else if (attrname=="normalScreens") {
-
- encode_uint32(screen_support[SCREEN_NORMAL]?0xFFFFFFFF:0,&p_manifest[iofs+16]);
-
- } else if (attrname=="largeScreens") {
-
- encode_uint32(screen_support[SCREEN_LARGE]?0xFFFFFFFF:0,&p_manifest[iofs+16]);
-
- } else if (attrname=="xlargeScreens") {
-
- encode_uint32(screen_support[SCREEN_XLARGE]?0xFFFFFFFF:0,&p_manifest[iofs+16]);
-
- }
- }
-
-
- iofs+=20;
- }
-
- } break;
- }
- //printf("chunk %x: size: %d\n",chunk,size);
-
- ofs+=size;
- }
-
- //printf("end\n");
-
- //create new andriodmanifest binary
-
- Vector<uint8_t> ret;
- ret.resize(string_table_begins+string_table.size()*4);
-
- for(uint32_t i=0;i<string_table_begins;i++) {
-
- ret[i]=p_manifest[i];
- }
-
- ofs=0;
- for(int i=0;i<string_table.size();i++) {
-
- encode_uint32(ofs,&ret[string_table_begins+i*4]);
- ofs+=string_table[i].length()*2+2+2;
- //print_line("ofs: "+itos(i)+": "+itos(ofs));
- }
- ret.resize(ret.size()+ofs);
- uint8_t *chars=&ret[ret.size()-ofs];
- for(int i=0;i<string_table.size();i++) {
-
- String s = string_table[i];
- //print_line("savint string :"+s);
- encode_uint16(s.length(),chars);
- chars+=2;
- for(int j=0;j<s.length();j++) { //include zero?
- encode_uint16(s[j],chars);
- chars+=2;
- }
- encode_uint16(0,chars);
- chars+=2;
-
- }
-
-
- for(int i=0;i<stable_extra.size();i++) {
- ret.push_back(stable_extra[i]);
- }
-
- while(ret.size()%4)
- ret.push_back(0);
-
-
- uint32_t new_stable_end=ret.size();
-
- uint32_t extra = (p_manifest.size()-string_table_ends);
- ret.resize(new_stable_end + extra);
- for(uint32_t i=0;i<extra;i++)
- ret[new_stable_end+i]=p_manifest[string_table_ends+i];
-
- while(ret.size()%4)
- ret.push_back(0);
- encode_uint32(ret.size(),&ret[4]); //update new file size
-
- encode_uint32(new_stable_end-8,&ret[12]); //update new string table size
-
- //print_line("file size: "+itos(ret.size()));
-
- p_manifest=ret;
-
-#if 0
- uint32_t header[9];
- for(int i=0;i<9;i++) {
- header[i]=decode_uint32(&p_manifest[i*4]);
- }
-
- //print_line("STO: "+itos(header[3]));
- uint32_t st_offset=9*4;
- //ERR_FAIL_COND(header[3]!=0x24)
- uint32_t string_count=header[4];
-
-
- string_table.resize(string_count);
-
- for(int i=0;i<string_count;i++) {
-
- uint32_t string_at = decode_uint32(&p_manifest[st_offset+i*4]);
- string_at+=st_offset+string_count*4;
- uint32_t len = decode_uint16(&p_manifest[string_at]);
- Vector<CharType> ucstring;
- ucstring.resize(len+1);
- for(int j=0;j<len;j++) {
- uint16_t c=decode_uint16(&p_manifest[string_at+2+2*j]);
- ucstring[j]=c;
- }
- ucstring[len]=0;
- string_table[i]=ucstring.ptr();
- }
-
-#endif
-
-}
-
-
-
-Error EditorExportPlatformAndroid::save_apk_file(void *p_userdata,const String& p_path, const Vector<uint8_t>& p_data,int p_file,int p_total) {
-
- APKExportData *ed=(APKExportData*)p_userdata;
- String dst_path=p_path;
- dst_path=dst_path.replace_first("res://","assets/");
-
- zipOpenNewFileInZip(ed->apk,
- dst_path.utf8().get_data(),
- NULL,
- NULL,
- 0,
- NULL,
- 0,
- NULL,
- _should_compress_asset(p_path,p_data) ? Z_DEFLATED : 0,
- Z_DEFAULT_COMPRESSION);
-
-
- zipWriteInFileInZip(ed->apk,p_data.ptr(),p_data.size());
- zipCloseFileInZip(ed->apk);
- ed->ep->step("File: "+p_path,3+p_file*100/p_total);
- return OK;
-
-}
-
-bool EditorExportPlatformAndroid::_should_compress_asset(const String& p_path, const Vector<uint8_t>& p_data) {
-
- /*
- * By not compressing files with little or not benefit in doing so,
- * a performance gain is expected at runtime. Moreover, if the APK is
- * zip-aligned, assets stored as they are can be efficiently read by
- * Android by memory-mapping them.
- */
-
- // -- Unconditional uncompress to mimic AAPT plus some other
-
- static const char* unconditional_compress_ext[] = {
- // From https://github.com/android/platform_frameworks_base/blob/master/tools/aapt/Package.cpp
- // These formats are already compressed, or don't compress well:
- ".jpg", ".jpeg", ".png", ".gif",
- ".wav", ".mp2", ".mp3", ".ogg", ".aac",
- ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",
- ".rtttl", ".imy", ".xmf", ".mp4", ".m4a",
- ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",
- ".amr", ".awb", ".wma", ".wmv",
- // Godot-specific:
- ".webp", // Same reasoning as .png
- ".cfb", // Don't let small config files slow-down startup
- // Trailer for easier processing
- NULL
- };
-
- for (const char** ext=unconditional_compress_ext; *ext; ++ext) {
- if (p_path.to_lower().ends_with(String(*ext))) {
- return false;
- }
- }
-
- // -- Compressed resource?
-
- if (p_data.size() >= 4 && p_data[0]=='R' && p_data[1]=='S' && p_data[2]=='C' && p_data[3]=='C') {
- // Already compressed
- return false;
- }
-
- // --- TODO: Decide on texture resources according to their image compression setting
-
- return true;
-}
-
-
-
-Error EditorExportPlatformAndroid::export_project(const String& p_path, bool p_debug, int p_flags) {
-
- String src_apk;
-
- EditorProgress ep("export","Exporting for Android",105);
-
- if (p_debug)
- src_apk=custom_debug_package;
- else
- src_apk=custom_release_package;
-
- if (src_apk=="") {
- String err;
- if (p_debug) {
- src_apk=find_export_template("android_debug.apk", &err);
- } else {
- src_apk=find_export_template("android_release.apk", &err);
- }
- if (src_apk=="") {
- EditorNode::add_io_error(err);
- return ERR_FILE_NOT_FOUND;
- }
- }
-
- FileAccess *src_f=NULL;
- zlib_filefunc_def io = zipio_create_io_from_file(&src_f);
-
-
-
- ep.step("Creating APK",0);
-
- unzFile pkg = unzOpen2(src_apk.utf8().get_data(), &io);
- if (!pkg) {
-
- EditorNode::add_io_error("Could not find template APK to export:\n"+src_apk);
- return ERR_FILE_NOT_FOUND;
- }
-
- ERR_FAIL_COND_V(!pkg, ERR_CANT_OPEN);
- int ret = unzGoToFirstFile(pkg);
-
- zlib_filefunc_def io2=io;
- FileAccess *dst_f=NULL;
- io2.opaque=&dst_f;
- String unaligned_path=EditorSettings::get_singleton()->get_settings_path()+"/tmp/tmpexport-unaligned.apk";
- zipFile unaligned_apk=zipOpen2(unaligned_path.utf8().get_data(),APPEND_STATUS_CREATE,NULL,&io2);
-
-
- while(ret==UNZ_OK) {
-
- //get filename
- unz_file_info info;
- char fname[16384];
- ret = unzGetCurrentFileInfo(pkg,&info,fname,16384,NULL,0,NULL,0);
-
- bool skip=false;
-
- String file=fname;
-
- Vector<uint8_t> data;
- data.resize(info.uncompressed_size);
-
- //read
- unzOpenCurrentFile(pkg);
- unzReadCurrentFile(pkg,data.ptr(),data.size());
- unzCloseCurrentFile(pkg);
-
- //write
-
- if (file=="AndroidManifest.xml") {
-
- _fix_manifest(data,p_flags&(EXPORT_DUMB_CLIENT|EXPORT_REMOTE_DEBUG));
- }
-
- if (file=="resources.arsc") {
-
- _fix_resources(data);
- }
-
- if (file=="res/drawable/icon.png") {
- bool found=false;
-
- if (this->icon!="" && this->icon.ends_with(".png")) {
-
- FileAccess *f = FileAccess::open(this->icon,FileAccess::READ);
- if (f) {
-
- data.resize(f->get_len());
- f->get_buffer(data.ptr(),data.size());
- memdelete(f);
- found=true;
- }
- }
-
- if (!found) {
-
- String appicon = ProjectSettings::get_singleton()->get("application/config/icon");
- if (appicon!="" && appicon.ends_with(".png")) {
- FileAccess*f = FileAccess::open(appicon,FileAccess::READ);
- if (f) {
- data.resize(f->get_len());
- f->get_buffer(data.ptr(),data.size());
- memdelete(f);
- }
- }
- }
- }
-
- if (file=="lib/x86/libgodot_android.so" && !export_x86) {
- skip=true;
- }
-
- if (file.match("lib/armeabi*/libgodot_android.so") && !export_arm) {
- skip=true;
- }
-
- if (file.match("lib/arm64*/libgodot_android.so") && !export_arm64) {
- skip = true;
- }
-
- if (file.begins_with("META-INF") && _signed) {
- skip=true;
- }
-
- print_line("ADDING: "+file);
-
- if (!skip) {
-
- // Respect decision on compression made by AAPT for the export template
- const bool uncompressed = info.compression_method == 0;
-
- zipOpenNewFileInZip(unaligned_apk,
- file.utf8().get_data(),
- NULL,
- NULL,
- 0,
- NULL,
- 0,
- NULL,
- uncompressed ? 0 : Z_DEFLATED,
- Z_DEFAULT_COMPRESSION);
-
- zipWriteInFileInZip(unaligned_apk,data.ptr(),data.size());
- zipCloseFileInZip(unaligned_apk);
- }
-
- ret = unzGoToNextFile(pkg);
- }
-
-
- ep.step("Adding Files..",1);
- Error err=OK;
- Vector<String> cl = cmdline.strip_edges().split(" ");
- for(int i=0;i<cl.size();i++) {
- if (cl[i].strip_edges().length()==0) {
- cl.remove(i);
- i--;
- }
- }
-
- gen_export_flags(cl,p_flags);
-
- if (p_flags&EXPORT_DUMB_CLIENT) {
-
- /*String host = EditorSettings::get_singleton()->get("filesystem/file_server/host");
- int port = EditorSettings::get_singleton()->get("filesystem/file_server/post");
- String passwd = EditorSettings::get_singleton()->get("filesystem/file_server/password");
- cl.push_back("-rfs");
- cl.push_back(host+":"+itos(port));
- if (passwd!="") {
- cl.push_back("-rfs_pass");
- cl.push_back(passwd);
- }*/
-
-
- } else {
- //all files
-
- if (apk_expansion) {
-
- String apkfname="main."+itos(version_code)+"."+get_package_name()+".obb";
- String fullpath=p_path.get_base_dir().plus_file(apkfname);
- FileAccess *pf = FileAccess::open(fullpath,FileAccess::WRITE);
- if (!pf) {
- EditorNode::add_io_error("Could not write expansion package file: "+apkfname);
- return OK;
- }
- err = save_pack(pf);
- memdelete(pf);
-
- cl.push_back("-use_apk_expansion");
- cl.push_back("-apk_expansion_md5");
- cl.push_back(FileAccess::get_md5(fullpath));
- cl.push_back("-apk_expansion_key");
- cl.push_back(apk_expansion_pkey.strip_edges());
-
- } else {
-
- APKExportData ed;
- ed.ep=&ep;
- ed.apk=unaligned_apk;
-
- err = export_project_files(save_apk_file,&ed,false);
- }
-
-
- }
-
- if (use_32_fb)
- cl.push_back("-use_depth_32");
-
- if (immersive)
- cl.push_back("-use_immersive");
-
- if (cl.size()) {
- //add comandline
- Vector<uint8_t> clf;
- clf.resize(4);
- encode_uint32(cl.size(),&clf[0]);
- for(int i=0;i<cl.size();i++) {
-
- CharString txt = cl[i].utf8();
- int base = clf.size();
- clf.resize(base+4+txt.length());
- encode_uint32(txt.length(),&clf[base]);
- copymem(&clf[base+4],txt.ptr(),txt.length());
- print_line(itos(i)+" param: "+cl[i]);
- }
-
- zipOpenNewFileInZip(unaligned_apk,
- "assets/_cl_",
- NULL,
- NULL,
- 0,
- NULL,
- 0,
- NULL,
- 0, // No compress (little size gain and potentially slower startup)
- Z_DEFAULT_COMPRESSION);
-
- zipWriteInFileInZip(unaligned_apk,clf.ptr(),clf.size());
- zipCloseFileInZip(unaligned_apk);
-
- }
-
- zipClose(unaligned_apk,NULL);
- unzClose(pkg);
-
- if (err) {
- return err;
- }
-
-
-
- if (_signed) {
-
-
- String jarsigner=EditorSettings::get_singleton()->get("export/android/jarsigner");
- if (!FileAccess::exists(jarsigner)) {
- EditorNode::add_io_error("'jarsigner' could not be found.\nPlease supply a path in the editor settings.\nResulting apk is unsigned.");
- return OK;
- }
-
- String keystore;
- String password;
- String user;
- if (p_debug) {
- keystore=EditorSettings::get_singleton()->get("export/android/debug_keystore");
- password=EditorSettings::get_singleton()->get("export/android/debug_keystore_pass");
- user=EditorSettings::get_singleton()->get("export/android/debug_keystore_user");
-
- ep.step("Signing Debug APK..",103);
-
- } else {
- keystore=release_keystore;
- password=release_password;
- user=release_username;
-
- ep.step("Signing Release APK..",103);
-
- }
-
- if (!FileAccess::exists(keystore)) {
- EditorNode::add_io_error("Could not find keystore, unable to export.");
- return ERR_FILE_CANT_OPEN;
- }
-
- List<String> args;
- args.push_back("-digestalg");
- args.push_back("SHA1");
- args.push_back("-sigalg");
- args.push_back("MD5withRSA");
- String tsa_url=EditorSettings::get_singleton()->get("export/android/timestamping_authority_url");
- if (tsa_url != "") {
- args.push_back("-tsa");
- args.push_back(tsa_url);
- }
- args.push_back("-verbose");
- args.push_back("-keystore");
- args.push_back(keystore);
- args.push_back("-storepass");
- args.push_back(password);
- args.push_back(unaligned_path);
- args.push_back(user);
- int retval;
- OS::get_singleton()->execute(jarsigner,args,true,NULL,NULL,&retval);
- if (retval) {
- EditorNode::add_io_error("'jarsigner' returned with error #"+itos(retval));
- return ERR_CANT_CREATE;
- }
-
- ep.step("Verifying APK..",104);
-
- args.clear();
- args.push_back("-verify");
- args.push_back(unaligned_path);
- args.push_back("-verbose");
-
- OS::get_singleton()->execute(jarsigner,args,true,NULL,NULL,&retval);
- if (retval) {
- EditorNode::add_io_error("'jarsigner' verification of APK failed. Make sure to use jarsigner from Java 6.");
- return ERR_CANT_CREATE;
- }
-
- }
-
-
-
- // Let's zip-align (must be done after signing)
-
- static const int ZIP_ALIGNMENT = 4;
-
- ep.step("Aligning APK..",105);
-
- unzFile tmp_unaligned = unzOpen2(unaligned_path.utf8().get_data(), &io);
- if (!tmp_unaligned) {
-
- EditorNode::add_io_error("Could not find temp unaligned APK.");
- return ERR_FILE_NOT_FOUND;
- }
-
- ERR_FAIL_COND_V(!tmp_unaligned, ERR_CANT_OPEN);
- ret = unzGoToFirstFile(tmp_unaligned);
-
- io2=io;
- dst_f=NULL;
- io2.opaque=&dst_f;
- zipFile final_apk=zipOpen2(p_path.utf8().get_data(),APPEND_STATUS_CREATE,NULL,&io2);
-
- // Take files from the unaligned APK and write them out to the aligned one
- // in raw mode, i.e. not uncompressing and recompressing, aligning them as needed,
- // following what is done in https://github.com/android/platform_build/blob/master/tools/zipalign/ZipAlign.cpp
- int bias = 0;
- while(ret==UNZ_OK) {
-
- unz_file_info info;
- memset(&info, 0, sizeof(info));
-
- char fname[16384];
- char extra[16384];
- ret = unzGetCurrentFileInfo(tmp_unaligned,&info,fname,16384,extra,16384-ZIP_ALIGNMENT,NULL,0);
-
- String file=fname;
-
- Vector<uint8_t> data;
- data.resize(info.compressed_size);
-
- // read
- int method, level;
- unzOpenCurrentFile2(tmp_unaligned, &method, &level, 1); // raw read
- long file_offset = unzGetCurrentFileZStreamPos64(tmp_unaligned);
- unzReadCurrentFile(tmp_unaligned,data.ptr(),data.size());
- unzCloseCurrentFile(tmp_unaligned);
-
- // align
- int padding = 0;
- if (!info.compression_method) {
- // Uncompressed file => Align
- long new_offset = file_offset + bias;
- padding = (ZIP_ALIGNMENT - (new_offset % ZIP_ALIGNMENT)) % ZIP_ALIGNMENT;
- }
-
- memset(extra + info.size_file_extra, 0, padding);
-
- // write
- zipOpenNewFileInZip2(final_apk,
- file.utf8().get_data(),
- NULL,
- extra,
- info.size_file_extra + padding,
- NULL,
- 0,
- NULL,
- method,
- level,
- 1); // raw write
- zipWriteInFileInZip(final_apk,data.ptr(),data.size());
- zipCloseFileInZipRaw(final_apk,info.uncompressed_size,info.crc);
-
- bias += padding;
-
- ret = unzGoToNextFile(tmp_unaligned);
- }
-
- zipClose(final_apk,NULL);
- unzClose(tmp_unaligned);
-
- if (err) {
- return err;
- }
-
- return OK;
-
-}
-
-
-bool EditorExportPlatformAndroid::poll_devices() {
-
- bool dc=devices_changed;
- devices_changed=false;
- return dc;
-}
-
-int EditorExportPlatformAndroid::get_device_count() const {
-
- device_lock->lock();
- int dc=devices.size();
- device_lock->unlock();
-
- return dc;
-
-}
-
-String EditorExportPlatformAndroid::get_device_name(int p_device) const {
-
- ERR_FAIL_INDEX_V(p_device,devices.size(),"");
- device_lock->lock();
- String s=devices[p_device].name;
- device_lock->unlock();
- return s;
-}
-
-String EditorExportPlatformAndroid::get_device_info(int p_device) const {
-
- ERR_FAIL_INDEX_V(p_device,devices.size(),"");
- device_lock->lock();
- String s=devices[p_device].description;
- device_lock->unlock();
- return s;
-}
-
-void EditorExportPlatformAndroid::_device_poll_thread(void *ud) {
-
- EditorExportPlatformAndroid *ea=(EditorExportPlatformAndroid *)ud;
-
-
- while(!ea->quit_request) {
-
- String adb=EditorSettings::get_singleton()->get("export/android/adb");
- if (FileAccess::exists(adb)) {
-
- String devices;
- List<String> args;
- args.push_back("devices");
- int ec;
- OS::get_singleton()->execute(adb,args,true,NULL,&devices,&ec);
- Vector<String> ds = devices.split("\n");
- Vector<String> ldevices;
- for(int i=1;i<ds.size();i++) {
-
- String d = ds[i];
- int dpos = d.find("device");
- if (dpos==-1)
- continue;
- d=d.substr(0,dpos).strip_edges();
- //print_line("found devuce: "+d);
- ldevices.push_back(d);
- }
-
- ea->device_lock->lock();
-
- bool different=false;
-
- if (devices.size()!=ldevices.size()) {
-
- different=true;
- } else {
-
- for(int i=0;i<ea->devices.size();i++) {
-
- if (ea->devices[i].id!=ldevices[i]) {
- different=true;
- break;
- }
- }
- }
-
- if (different) {
-
-
- Vector<Device> ndevices;
-
- for(int i=0;i<ldevices.size();i++) {
-
- Device d;
- d.id=ldevices[i];
- for(int j=0;j<ea->devices.size();j++) {
- if (ea->devices[j].id==ldevices[i]) {
- d.description=ea->devices[j].description;
- d.name=ea->devices[j].name;
- }
- }
-
- if (d.description=="") {
- //in the oven, request!
- args.clear();
- args.push_back("-s");
- args.push_back(d.id);
- args.push_back("shell");
- args.push_back("cat");
- args.push_back("/system/build.prop");
- int ec;
- String dp;
-
- OS::get_singleton()->execute(adb,args,true,NULL,&dp,&ec);
-
- Vector<String> props = dp.split("\n");
- String vendor;
- String device;
- d.description+"Device ID: "+d.id+"\n";
- for(int j=0;j<props.size();j++) {
-
- String p = props[j];
- if (p.begins_with("ro.product.model=")) {
- device=p.get_slice("=",1).strip_edges();
- } else if (p.begins_with("ro.product.brand=")) {
- vendor=p.get_slice("=",1).strip_edges().capitalize();
- } else if (p.begins_with("ro.build.display.id=")) {
- d.description+="Build: "+p.get_slice("=",1).strip_edges()+"\n";
- } else if (p.begins_with("ro.build.version.release=")) {
- d.description+="Release: "+p.get_slice("=",1).strip_edges()+"\n";
- } else if (p.begins_with("ro.product.cpu.abi=")) {
- d.description+="CPU: "+p.get_slice("=",1).strip_edges()+"\n";
- } else if (p.begins_with("ro.product.manufacturer=")) {
- d.description+="Manufacturer: "+p.get_slice("=",1).strip_edges()+"\n";
- } else if (p.begins_with("ro.board.platform=")) {
- d.description+="Chipset: "+p.get_slice("=",1).strip_edges()+"\n";
- } else if (p.begins_with("ro.opengles.version=")) {
- uint32_t opengl = p.get_slice("=",1).to_int();
- d.description+="OpenGL: "+itos(opengl>>16)+"."+itos((opengl>>8)&0xFF)+"."+itos((opengl)&0xFF)+"\n";
- }
- }
-
- d.name=vendor+" "+device;
- //print_line("name: "+d.name);
- //print_line("description: "+d.description);
-
- }
-
- ndevices.push_back(d);
-
- }
-
- ea->devices=ndevices;
- ea->devices_changed=true;
- }
-
- ea->device_lock->unlock();
- }
-
- uint64_t wait = 3000000;
- uint64_t time = OS::get_singleton()->get_ticks_usec();
- while(OS::get_singleton()->get_ticks_usec() - time < wait ) {
- OS::get_singleton()->delay_usec(1000);
- if (ea->quit_request)
- break;
- }
-
- }
-
- if (EditorSettings::get_singleton()->get("export/android/shutdown_adb_on_exit")) {
- String adb=EditorSettings::get_singleton()->get("export/android/adb");
- if (!FileAccess::exists(adb)) {
- return; //adb not configured
- }
-
- List<String> args;
- args.push_back("kill-server");
- OS::get_singleton()->execute(adb,args,true);
- };
-}
-
-Error EditorExportPlatformAndroid::run(int p_device, int p_flags) {
-
- ERR_FAIL_INDEX_V(p_device,devices.size(),ERR_INVALID_PARAMETER);
- device_lock->lock();
-
- EditorProgress ep("run","Running on "+devices[p_device].name,3);
-
- String adb=EditorSettings::get_singleton()->get("export/android/adb");
- if (adb=="") {
-
- EditorNode::add_io_error("ADB executable not configured in settings, can't run.");
- device_lock->unlock();
- return ERR_UNCONFIGURED;
- }
-
- //export_temp
- ep.step("Exporting APK",0);
-
-
- bool use_adb_over_usb = bool(EDITOR_DEF("export/android/use_remote_debug_over_adb",true));
-
- if (use_adb_over_usb) {
- p_flags|=EXPORT_REMOTE_DEBUG_LOCALHOST;
- }
-
- String export_to=EditorSettings::get_singleton()->get_settings_path()+"/tmp/tmpexport.apk";
- Error err = export_project(export_to,true,p_flags);
- if (err) {
- device_lock->unlock();
- return err;
- }
-
- List<String> args;
- int rv;
-
- if (remove_prev) {
- ep.step("Uninstalling..",1);
-
- print_line("Uninstalling previous version: "+devices[p_device].name);
-
- args.push_back("-s");
- args.push_back(devices[p_device].id);
- args.push_back("uninstall");
- args.push_back(get_package_name());
-
- err = OS::get_singleton()->execute(adb,args,true,NULL,NULL,&rv);
-#if 0
- if (err || rv!=0) {
- EditorNode::add_io_error("Could not install to device.");
- device_lock->unlock();
- return ERR_CANT_CREATE;
- }
-#endif
- }
-
- print_line("Installing into device (please wait..): "+devices[p_device].name);
- ep.step("Installing to Device (please wait..)..",2);
-
- args.clear();
- args.push_back("-s");
- args.push_back(devices[p_device].id);
- args.push_back("install");
- args.push_back("-r");
- args.push_back(export_to);
-
- err = OS::get_singleton()->execute(adb,args,true,NULL,NULL,&rv);
- if (err || rv!=0) {
- EditorNode::add_io_error("Could not install to device.");
- device_lock->unlock();
- return ERR_CANT_CREATE;
- }
-
- if (use_adb_over_usb) {
-
- args.clear();
- args.push_back("reverse");
- args.push_back("--remove-all");
- err = OS::get_singleton()->execute(adb,args,true,NULL,NULL,&rv);
-
- int port = (int)EditorSettings::get_singleton()->get("network/debug/remote_port");
- args.clear();
- args.push_back("reverse");
- args.push_back("tcp:"+itos(port));
- args.push_back("tcp:"+itos(port));
-
- err = OS::get_singleton()->execute(adb,args,true,NULL,NULL,&rv);
- print_line("Reverse result: "+itos(rv));
-
- int fs_port = EditorSettings::get_singleton()->get("filesystem/file_server/port");
-
- args.clear();
- args.push_back("reverse");
- args.push_back("tcp:"+itos(fs_port));
- args.push_back("tcp:"+itos(fs_port));
-
- err = OS::get_singleton()->execute(adb,args,true,NULL,NULL,&rv);
- print_line("Reverse result2: "+itos(rv));
-
- }
-
-
- ep.step("Running on Device..",3);
- args.clear();
- args.push_back("-s");
- args.push_back(devices[p_device].id);
- args.push_back("shell");
- args.push_back("am");
- args.push_back("start");
- args.push_back("--user 0");
- args.push_back("-a");
- args.push_back("android.intent.action.MAIN");
- args.push_back("-n");
- args.push_back(get_package_name()+"/org.godotengine.godot.Godot");
-
- err = OS::get_singleton()->execute(adb,args,true,NULL,NULL,&rv);
- if (err || rv!=0) {
- EditorNode::add_io_error("Could not execute ondevice.");
- device_lock->unlock();
- return ERR_CANT_CREATE;
- }
- device_lock->unlock();
- return OK;
-}
-
-String EditorExportPlatformAndroid::get_package_name() {
-
- String pname = package;
- String basename = ProjectSettings::get_singleton()->get("application/config/name");
- basename=basename.to_lower();
-
- String name;
- bool first=true;
- for(int i=0;i<basename.length();i++) {
- CharType c = basename[i];
- if (c>='0' && c<='9' && first) {
- continue;
- }
- if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9')) {
- name+=String::chr(c);
- first=false;
- }
- }
- if (name=="")
- name="noname";
-
- pname=pname.replace("$genname",name);
- return pname;
-
-}
-
-EditorExportPlatformAndroid::EditorExportPlatformAndroid() {
-
- version_code=1;
- version_name="1.0";
- package="org.godotengine.$genname";
- name="";
- _signed=true;
- apk_expansion=false;
- quit_request=false;
- orientation=0;
- remove_prev=true;
- use_32_fb=true;
- immersive=true;
-
- export_arm=true;
- export_arm64=false;
- export_x86=false;
-
-
- device_thread=Thread::create(_device_poll_thread,this);
- devices_changed=true;
-
- Image img( _android_logo );
- logo = Ref<ImageTexture>( memnew( ImageTexture ));
- logo->create_from_image(img);
-
- for(int i=0;i<4;i++)
- screen_support[i]=true;
-}
-
-bool EditorExportPlatformAndroid::can_export(String *r_error) const {
-
- bool valid=true;
- String adb=EditorSettings::get_singleton()->get("export/android/adb");
- String err;
-
- if (!FileAccess::exists(adb)) {
-
- valid=false;
- err+="ADB executable not configured in editor settings.\n";
- }
-
- String js = EditorSettings::get_singleton()->get("export/android/jarsigner");
-
- if (!FileAccess::exists(js)) {
-
- valid=false;
- err+="OpenJDK 6 jarsigner not configured in editor settings.\n";
- }
-
- String dk = EditorSettings::get_singleton()->get("export/android/debug_keystore");
-
- if (!FileAccess::exists(dk)) {
-
- valid=false;
- err+="Debug Keystore not configured in editor settings.\n";
- }
-
- if (!exists_export_template("android_debug.apk") || !exists_export_template("android_release.apk")) {
- valid=false;
- err+="No export templates found.\nDownload and install export templates.\n";
- }
-
- if (custom_debug_package!="" && !FileAccess::exists(custom_debug_package)) {
- valid=false;
- err+="Custom debug package not found.\n";
- }
-
- if (custom_release_package!="" && !FileAccess::exists(custom_release_package)) {
- valid=false;
- err+="Custom release package not found.\n";
- }
-
- if (apk_expansion) {
-
- /*
- if (apk_expansion_salt=="") {
- valid=false;
- err+="Invalid SALT for apk expansion.\n";
- }
- */
- if (apk_expansion_pkey=="") {
- valid=false;
- err+="Invalid public key for apk expansion.\n";
- }
- }
-
- if (r_error)
- *r_error=err;
-
- return valid;
-}
-
-
-EditorExportPlatformAndroid::~EditorExportPlatformAndroid() {
-
- quit_request=true;
- Thread::wait_to_finish(device_thread);
- memdelete(device_lock);
- memdelete(device_thread);
-}
-
-#endif
+#include <string.h>
static const char *android_perms[] = {
"ACCESS_CHECKIN_PROPERTIES",
@@ -2665,37 +809,6 @@ class EditorExportAndroid : public EditorExportPlatform {
//print_line("file size: "+itos(ret.size()));
p_manifest = ret;
-
-#if 0
- uint32_t header[9];
- for(int i=0;i<9;i++) {
- header[i]=decode_uint32(&p_manifest[i*4]);
- }
-
- //print_line("STO: "+itos(header[3]));
- uint32_t st_offset=9*4;
- //ERR_FAIL_COND(header[3]!=0x24)
- uint32_t string_count=header[4];
-
-
- string_table.resize(string_count);
-
- for(int i=0;i<string_count;i++) {
-
- uint32_t string_at = decode_uint32(&p_manifest[st_offset+i*4]);
- string_at+=st_offset+string_count*4;
- uint32_t len = decode_uint16(&p_manifest[string_at]);
- Vector<CharType> ucstring;
- ucstring.resize(len+1);
- for(int j=0;j<len;j++) {
- uint16_t c=decode_uint16(&p_manifest[string_at+2+2*j]);
- ucstring[j]=c;
- }
- ucstring[len]=0;
- string_table[i]=ucstring.ptr();
- }
-
-#endif
}
static String _parse_string(const uint8_t *p_bytes, bool p_utf8) {
@@ -2960,11 +1073,7 @@ public:
//export_temp
ep.step("Exporting APK", 0);
- bool use_adb_over_usb = bool(EDITOR_DEF("export/android/use_remote_debug_over_adb", true));
-
- if (use_adb_over_usb) {
- p_debug_flags |= DEBUG_FLAG_REMOTE_DEBUG_LOCALHOST;
- }
+ p_debug_flags |= DEBUG_FLAG_REMOTE_DEBUG_LOCALHOST;
String export_to = EditorSettings::get_singleton()->get_settings_path() + "/tmp/tmpexport.apk";
Error err = export_project(p_preset, true, export_to, p_debug_flags);
@@ -2991,13 +1100,6 @@ public:
args.push_back(get_package_name(package_name));
err = OS::get_singleton()->execute(adb, args, true, NULL, NULL, &rv);
-#if 0
- if (err || rv!=0) {
- EditorNode::add_io_error("Could not install to device.");
- device_lock->unlock();
- return ERR_CANT_CREATE;
- }
-#endif
}
print_line("Installing into device (please wait..): " + devices[p_device].name);
@@ -3017,14 +1119,14 @@ public:
return ERR_CANT_CREATE;
}
- if (use_adb_over_usb) {
+ if (p_debug_flags & DEBUG_FLAG_REMOTE_DEBUG) {
args.clear();
args.push_back("-s");
args.push_back(devices[p_device].id);
args.push_back("reverse");
args.push_back("--remove-all");
- err = OS::get_singleton()->execute(adb, args, true, NULL, NULL, &rv);
+ OS::get_singleton()->execute(adb, args, true, NULL, NULL, &rv);
int dbg_port = EditorSettings::get_singleton()->get("network/debug/remote_port");
args.clear();
@@ -3034,8 +1136,11 @@ public:
args.push_back("tcp:" + itos(dbg_port));
args.push_back("tcp:" + itos(dbg_port));
- err = OS::get_singleton()->execute(adb, args, true, NULL, NULL, &rv);
+ OS::get_singleton()->execute(adb, args, true, NULL, NULL, &rv);
print_line("Reverse result: " + itos(rv));
+ }
+
+ if (p_debug_flags & DEBUG_FLAG_DUMB_CLIENT) {
int fs_port = EditorSettings::get_singleton()->get("filesystem/file_server/port");
@@ -3188,7 +1293,7 @@ public:
bool export_arm = p_preset->get("architecture/arm");
bool export_arm64 = p_preset->get("architecture/arm64");
- bool use_32_fb = p_preset->get("screen/use_32_bits_view");
+ bool use_32_fb = p_preset->get("graphics/32_bits_framebuffer");
bool immersive = p_preset->get("screen/immersive_mode");
bool _signed = p_preset->get("package/signed");
@@ -3330,10 +1435,10 @@ public:
/*String host = EditorSettings::get_singleton()->get("filesystem/file_server/host");
int port = EditorSettings::get_singleton()->get("filesystem/file_server/post");
String passwd = EditorSettings::get_singleton()->get("filesystem/file_server/password");
- cl.push_back("-rfs");
+ cl.push_back("--remote-fs");
cl.push_back(host+":"+itos(port));
if (passwd!="") {
- cl.push_back("-rfs_pass");
+ cl.push_back("--remote-fs-password");
cl.push_back(passwd);
}*/
@@ -3350,10 +1455,10 @@ public:
return OK;
}
- cl.push_back("-use_apk_expansion");
- cl.push_back("-apk_expansion_md5");
+ cl.push_back("--use_apk_expansion");
+ cl.push_back("--apk_expansion_md5");
cl.push_back(FileAccess::get_md5(fullpath));
- cl.push_back("-apk_expansion_key");
+ cl.push_back("--apk_expansion_key");
cl.push_back(apk_expansion_pkey.strip_edges());
} else {
@@ -3367,10 +1472,10 @@ public:
}
if (use_32_fb)
- cl.push_back("-use_depth_32");
+ cl.push_back("--use_depth_32");
if (immersive)
- cl.push_back("-use_immersive");
+ cl.push_back("--use_immersive");
if (cl.size()) {
//add comandline
@@ -3618,7 +1723,6 @@ void register_android_exporter() {
EDITOR_DEF("export/android/force_system_user", false);
EDITOR_DEF("export/android/timestamping_authority_url", "");
- EDITOR_DEF("export/android/use_remote_debug_over_adb", false);
EDITOR_DEF("export/android/shutdown_adb_on_exit", true);
Ref<EditorExportAndroid> exporter = Ref<EditorExportAndroid>(memnew(EditorExportAndroid));
diff --git a/platform/android/export/export.h b/platform/android/export/export.h
index e3b0b4aab6..40ce129dcd 100644
--- a/platform/android/export/export.h
+++ b/platform/android/export/export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/file_access_android.cpp b/platform/android/file_access_android.cpp
index be19f056b0..f207b81b4b 100644
--- a/platform/android/file_access_android.cpp
+++ b/platform/android/file_access_android.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/file_access_android.h b/platform/android/file_access_android.h
index 0ee8cd7efe..c2ce2b0bfe 100644
--- a/platform/android/file_access_android.h
+++ b/platform/android/file_access_android.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/file_access_jandroid.cpp b/platform/android/file_access_jandroid.cpp
index e20ffd4f8a..ad855c790d 100644
--- a/platform/android/file_access_jandroid.cpp
+++ b/platform/android/file_access_jandroid.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/file_access_jandroid.h b/platform/android/file_access_jandroid.h
index 9bb471246a..8060312182 100644
--- a/platform/android/file_access_jandroid.h
+++ b/platform/android/file_access_jandroid.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -71,7 +71,7 @@ public:
virtual bool file_exists(const String &p_path); ///< return true if a file exists
- static void setup(jobject io);
+ static void setup(jobject p_io);
virtual uint64_t _get_modified_time(const String &p_file) { return 0; }
diff --git a/platform/android/globals/global_defaults.cpp b/platform/android/globals/global_defaults.cpp
index 6bdc6b337c..c73b578154 100644
--- a/platform/android/globals/global_defaults.cpp
+++ b/platform/android/globals/global_defaults.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/globals/global_defaults.h b/platform/android/globals/global_defaults.h
index d524b56af6..8c918414d3 100644
--- a/platform/android/globals/global_defaults.h
+++ b/platform/android/globals/global_defaults.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/godot_android.cpp b/platform/android/godot_android.cpp
index 71db03049a..8235683496 100644
--- a/platform/android/godot_android.cpp
+++ b/platform/android/godot_android.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -565,20 +565,6 @@ static void engine_handle_cmd(struct android_app *app, int32_t cmd) {
case APP_CMD_CONFIG_CHANGED:
case APP_CMD_WINDOW_RESIZED: {
-#if 0
-// android blows
- if (engine->display_active) {
-
- EGLint w,h;
- eglQuerySurface(engine->display, engine->surface, EGL_WIDTH, &w);
- eglQuerySurface(engine->display, engine->surface, EGL_HEIGHT, &h);
- engine->os->init_video_mode(w,h);
- //print_line("RESIZED VIDEO MODE: "+itos(w)+","+itos(h));
- engine_draw_frame(engine);
-
- }
-#else
-
if (engine->display_active) {
EGLint w, h;
@@ -594,17 +580,6 @@ static void engine_handle_cmd(struct android_app *app, int32_t cmd) {
engine_draw_frame(engine);
engine->animating = 1;
-/*
- EGLint w,h;
- eglQuerySurface(engine->display, engine->surface, EGL_WIDTH, &w);
- eglQuerySurface(engine->display, engine->surface, EGL_HEIGHT, &h);
- engine->os->init_video_mode(w,h);
- //print_line("RESIZED VIDEO MODE: "+itos(w)+","+itos(h));
-
- }*/
-
-#endif
-
} break;
case APP_CMD_INIT_WINDOW:
//The window is being shown, get it ready.
@@ -616,11 +591,8 @@ static void engine_handle_cmd(struct android_app *app, int32_t cmd) {
//do initialization here, when there's OpenGL! hackish but the only way
engine->os = new OS_Android(_gfx_init, engine);
- //char *args[]={"-test","gui",NULL};
__android_log_print(ANDROID_LOG_INFO, "godot", "pre asdasd setup...");
-#if 0
- Error err = Main::setup("apk",2,args);
-#else
+
Error err = Main::setup("apk", 0, NULL);
String modules = ProjectSettings::get_singleton()->get("android/modules");
@@ -670,8 +642,6 @@ static void engine_handle_cmd(struct android_app *app, int32_t cmd) {
}
}
-#endif
-
if (!Main::start())
return; //should exit instead and print the error
@@ -739,21 +709,21 @@ static void engine_handle_cmd(struct android_app *app, int32_t cmd) {
}
}
-void android_main(struct android_app *state) {
+void android_main(struct android_app *app) {
struct engine engine;
// Make sure glue isn't stripped.
app_dummy();
memset(&engine, 0, sizeof(engine));
- state->userData = &engine;
- state->onAppCmd = engine_handle_cmd;
- state->onInputEvent = engine_handle_input;
- engine.app = state;
+ 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 = state->activity->assetManager;
+ FileAccessAndroid::asset_manager = app->activity->assetManager;
// Prepare to monitor sensors
engine.sensorManager = ASensorManager_getInstance();
@@ -764,11 +734,11 @@ void android_main(struct android_app *state) {
engine.gyroscopeSensor = ASensorManager_getDefaultSensor(engine.sensorManager,
ASENSOR_TYPE_GYROSCOPE);
engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager,
- state->looper, LOOPER_ID_USER, NULL, NULL);
+ app->looper, LOOPER_ID_USER, NULL, NULL);
- ANativeActivity_setWindowFlags(state->activity, AWINDOW_FLAG_FULLSCREEN | AWINDOW_FLAG_KEEP_SCREEN_ON, 0);
+ ANativeActivity_setWindowFlags(app->activity, AWINDOW_FLAG_FULLSCREEN | AWINDOW_FLAG_KEEP_SCREEN_ON, 0);
- state->activity->vm->AttachCurrentThread(&engine.jni, NULL);
+ app->activity->vm->AttachCurrentThread(&engine.jni, NULL);
// loop waiting for stuff to do.
@@ -790,7 +760,7 @@ void android_main(struct android_app *state) {
if (source != NULL) {
// LOGI("process\n");
- source->process(state, source);
+ source->process(app, source);
} else {
nullmax--;
if (nullmax < 0)
@@ -824,17 +794,16 @@ void android_main(struct android_app *state) {
}
// Check if we are exiting.
- if (state->destroyRequested != 0) {
+ if (app->destroyRequested != 0) {
if (engine.os) {
engine.os->main_loop_request_quit();
}
- state->destroyRequested = 0;
+ app->destroyRequested = 0;
}
if (engine.requested_quit) {
engine_term_display(&engine);
exit(0);
- return;
}
// LOGI("end\n");
diff --git a/platform/android/java/src/org/godotengine/godot/Dictionary.java b/platform/android/java/src/org/godotengine/godot/Dictionary.java
index b9501e0858..ed91fedd85 100644
--- a/platform/android/java/src/org/godotengine/godot/Dictionary.java
+++ b/platform/android/java/src/org/godotengine/godot/Dictionary.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/Godot.java b/platform/android/java/src/org/godotengine/godot/Godot.java
index d620b2b9c4..eab0387f32 100644
--- a/platform/android/java/src/org/godotengine/godot/Godot.java
+++ b/platform/android/java/src/org/godotengine/godot/Godot.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -387,7 +387,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
new_cmdline = new String[ 2 ];
}
- new_cmdline[cll]="-main_pack";
+ new_cmdline[cll]="--main_pack";
new_cmdline[cll+1]=expansion_pack_path;
command_line=new_cmdline;
}
@@ -452,9 +452,9 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
for(int i=0;i<command_line.length;i++) {
boolean has_extra = i< command_line.length -1;
- if (command_line[i].equals("-use_depth_32")) {
+ if (command_line[i].equals("--use_depth_32")) {
use_32_bits=true;
- } else if (command_line[i].equals("-use_immersive")) {
+ } else if (command_line[i].equals("--use_immersive")) {
use_immersive=true;
if(Build.VERSION.SDK_INT >= 19.0){ // check if the application runs on an android 4.4+
window.getDecorView().setSystemUiVisibility(
@@ -467,12 +467,12 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
UiChangeListener();
}
- } else if (command_line[i].equals("-use_apk_expansion")) {
+ } else if (command_line[i].equals("--use_apk_expansion")) {
use_apk_expansion=true;
- } else if (has_extra && command_line[i].equals("-apk_expansion_md5")) {
+ } else if (has_extra && command_line[i].equals("--apk_expansion_md5")) {
main_pack_md5=command_line[i+1];
i++;
- } else if (has_extra && command_line[i].equals("-apk_expansion_key")) {
+ } else if (has_extra && command_line[i].equals("--apk_expansion_key")) {
main_pack_key=command_line[i+1];
SharedPreferences prefs = getSharedPreferences("app_data_keys", MODE_PRIVATE);
Editor editor = prefs.edit();
diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java
index 6cdc6be793..2c668dd586 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java
index 38d30c108c..97ba7826fb 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/GodotIO.java b/platform/android/java/src/org/godotengine/godot/GodotIO.java
index ecb623452c..989fd2b609 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotIO.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotIO.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/GodotLib.java b/platform/android/java/src/org/godotengine/godot/GodotLib.java
index 1ed04d9d27..b487c17f53 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotLib.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotLib.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -48,7 +48,7 @@ public class GodotLib {
public static native void initialize(Godot p_instance,boolean need_reload_hook,String[] p_cmdline,Object p_asset_manager);
public static native void resize(int width, int height,boolean reload);
public static native void newcontext(boolean p_32_bits);
- public static native void quit();
+ public static native void back();
public static native void step();
public static native void touch(int what,int pointer,int howmany, int[] arr);
public static native void accelerometer(float x, float y, float z);
diff --git a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java
index 3cb8fd3da8..a16c67523e 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/GodotView.java b/platform/android/java/src/org/godotengine/godot/GodotView.java
index c6c68c36b0..19fcf8e687 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotView.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotView.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -264,7 +264,7 @@ public class GodotView extends GLSurfaceView implements InputDeviceListener {
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
- GodotLib.quit();
+ GodotLib.back();
// press 'back' button should not terminate program
//normal handle 'back' event in game logic
return true;
diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java
index bf5239aa77..d8a3ac5591 100644
--- a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java
+++ b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java
index 1dbcb78ada..c2d03e4ecc 100644
--- a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java
+++ b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java
index c37821ffd9..8622f4ccff 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java
index 72126a8f64..0afe35510c 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java
index e223bbb8c0..7318ae2fc6 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java
index fa5564a3f4..69ac02e902 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java
index 6f308af360..b327265abb 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java
index 81352b0cf4..6ecea0106c 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java
index 9d40371b9b..d831e45694 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java
index 09f80df403..6e058c140c 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java
index 02a2fba854..2fd66553f6 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java
index 7881754fb2..c9532a5d01 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java
index b314fb721b..0711f30b8b 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java
index 41d26ba70f..ded11550bb 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp
index bd266c76bf..8606ea41a0 100644
--- a/platform/android/java_class_wrapper.cpp
+++ b/platform/android/java_class_wrapper.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -112,7 +112,7 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
Ref<Reference> ref = *p_args[i];
if (!ref.is_null()) {
- if (ref->cast_to<JavaObject>()) {
+ if (Object::cast_to<JavaObject>(ref.ptr())) {
Ref<JavaObject> jo = ref;
//could be faster
diff --git a/platform/android/java_class_wrapper.h b/platform/android/java_class_wrapper.h
index f990708bdf..1274b4bea9 100644
--- a/platform/android/java_class_wrapper.h
+++ b/platform/android/java_class_wrapper.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp
index 683e1cfb22..06abe9d751 100644
--- a/platform/android/java_glue.cpp
+++ b/platform/android/java_glue.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -844,7 +844,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv *en
} else {
//__android_log_print(ANDROID_LOG_INFO,"godot","cmdline arg %i is: %s\n",i,rawString);
- if (strcmp(rawString, "-main_pack") == 0)
+ if (strcmp(rawString, "--main_pack") == 0)
use_apk_expansion = true;
}
@@ -866,13 +866,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv *en
__android_log_print(ANDROID_LOG_INFO, "godot", "**SETUP");
-#if 0
- char *args[]={"-test","render",NULL};
- __android_log_print(ANDROID_LOG_INFO,"godot","pre asdasd setup...");
- Error err = Main::setup("apk",2,args,false);
-#else
Error err = Main::setup("apk", cmdlen, (char **)cmdline, false);
-#endif
if (err != OK) {
__android_log_print(ANDROID_LOG_INFO, "godot", "*****UNABLE TO SETUP");
@@ -1008,7 +1002,9 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, job
ProjectSettings::get_singleton()->add_singleton(ProjectSettings::Singleton("JavaClassWrapper", java_class_wrapper));
_initialize_java_modules();
- Main::setup2();
+ // Since Godot is initialized on the UI thread, _main_thread_id was set to that thread's id,
+ // but for Godot purposes, the main thread is the one running the game loop
+ Main::setup2(Thread::get_caller_id());
++step;
suspend_mutex->unlock();
input_mutex->unlock();
diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h
index f400f41e28..64970040f8 100644
--- a/platform/android/java_glue.h
+++ b/platform/android/java_glue.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,7 +40,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv *en
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_resize(JNIEnv *env, jobject obj, jint width, jint height, jboolean reload);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_newcontext(JNIEnv *env, jobject obj, bool p_32_bits);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, jobject obj);
-JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_quit(JNIEnv *env, jobject obj);
+JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_back(JNIEnv *env, jobject obj);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_touch(JNIEnv *env, jobject obj, jint ev, jint pointer, jint count, jintArray positions);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_key(JNIEnv *env, jobject obj, jint p_scancode, jint p_unicode_char, jboolean p_pressed);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_joybutton(JNIEnv *env, jobject obj, jint p_device, jint p_button, jboolean p_pressed);
@@ -56,8 +56,8 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusout(JNIEnv *env,
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_singleton(JNIEnv *env, jobject obj, jstring name, jobject p_object);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_method(JNIEnv *env, jobject obj, jstring sname, jstring name, jstring ret, jobjectArray args);
JNIEXPORT jstring JNICALL Java_org_godotengine_godot_GodotLib_getGlobal(JNIEnv *env, jobject obj, jstring path);
-JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_callobject(JNIEnv *env, jobject obj, jint ID, jstring method, jobjectArray params);
-JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv *env, jobject obj, jint ID, jstring method, jobjectArray params);
+JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_callobject(JNIEnv *env, jobject p_obj, jint ID, jstring method, jobjectArray params);
+JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_calldeferred(JNIEnv *env, jobject p_obj, jint ID, jstring method, jobjectArray params);
}
#endif
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index a027e78de9..1de2608b9e 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -146,7 +146,6 @@ void OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int
physics_server = memnew(PhysicsServerSW);
physics_server->init();
- //physics_2d_server = memnew( Physics2DServerSW );
physics_2d_server = Physics2DServerWrapMT::init_server<Physics2DServerSW>();
physics_2d_server->init();
@@ -160,43 +159,6 @@ void OS_Android::set_main_loop(MainLoop *p_main_loop) {
main_loop = p_main_loop;
input->set_main_loop(p_main_loop);
-#if 0
-
- print_line("preGS");
- FileAccess *f=memnew( FileAccessAndroid );
- print("made f %p\n",f);
- Error err = f->open("AndroidManifest.xml",FileAccess::READ);
- if (err) {
-
- print("************NO FILE!!\n");
- } else {
- print("************YES FILE!!\n");
- }
- f->close();
- print_line("end");
-
-
- AAssetDir* aad = AAssetManager_openDir(FileAccessAndroid::asset_manager,".");
-
- if (aad) {
-
- print_line("DIR OPEN OK");
-
- const char *fn= AAssetDir_getNextFileName(aad);
-
- while(fn) {
-
- print_line("FNAME: "+String(fn));
- fn= AAssetDir_getNextFileName(aad);
- }
-
- AAssetDir_close(aad);
- } else {
-
- print_line("DIR NO OPEN");
- }
-
-#endif
}
void OS_Android::delete_main_loop() {
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index 54d7e562e0..119c14bff3 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -110,11 +110,8 @@ private:
mutable String data_dir_cache;
-#if 0
- AudioDriverAndroid audio_driver_android;
-#else
+ //AudioDriverAndroid audio_driver_android;
AudioDriverOpenSL audio_driver_android;
-#endif
const char *gl_extensions;
diff --git a/platform/android/platform_config.h b/platform/android/platform_config.h
index 48bcadcc29..b1c3f027f3 100644
--- a/platform/android/platform_config.h
+++ b/platform/android/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/power_android.cpp b/platform/android/power_android.cpp
index bb5a1db250..98d4d810b9 100644
--- a/platform/android/power_android.cpp
+++ b/platform/android/power_android.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/power_android.h b/platform/android/power_android.h
index 328a4506a1..fc618c660d 100644
--- a/platform/android/power_android.h
+++ b/platform/android/power_android.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/android/thread_jandroid.cpp b/platform/android/thread_jandroid.cpp
index 924ae3fe43..79488197ea 100644
--- a/platform/android/thread_jandroid.cpp
+++ b/platform/android/thread_jandroid.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,9 +29,19 @@
/*************************************************************************/
#include "thread_jandroid.h"
+#include "core/safe_refcount.h"
#include "os/memory.h"
#include "script_language.h"
+static pthread_key_t _create_thread_id_key() {
+ pthread_key_t key;
+ pthread_key_create(&key, NULL);
+ return key;
+}
+
+pthread_key_t ThreadAndroid::thread_id_key = _create_thread_id_key();
+Thread::ID ThreadAndroid::next_thread_id = 0;
+
Thread::ID ThreadAndroid::get_id() const {
return id;
@@ -47,7 +57,8 @@ void *ThreadAndroid::thread_callback(void *userdata) {
ThreadAndroid *t = reinterpret_cast<ThreadAndroid *>(userdata);
setup_thread();
ScriptServer::thread_enter(); //scripts may need to attach a stack
- t->id = (ID)pthread_self();
+ t->id = atomic_increment(&next_thread_id);
+ pthread_setspecific(thread_id_key, (void *)t->id);
t->callback(t->user);
ScriptServer::thread_exit();
return NULL;
@@ -68,7 +79,7 @@ Thread *ThreadAndroid::create_func_jandroid(ThreadCreateCallback p_callback, voi
Thread::ID ThreadAndroid::get_thread_id_func_jandroid() {
- return (ID)pthread_self();
+ return (ID)pthread_getspecific(thread_id_key);
}
void ThreadAndroid::wait_to_finish_func_jandroid(Thread *p_thread) {
diff --git a/platform/android/thread_jandroid.h b/platform/android/thread_jandroid.h
index 5267329744..b854a83e23 100644
--- a/platform/android/thread_jandroid.h
+++ b/platform/android/thread_jandroid.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -41,6 +41,9 @@
class ThreadAndroid : public Thread {
+ static pthread_key_t thread_id_key;
+ static ID next_thread_id;
+
pthread_t pthread;
pthread_attr_t pthread_attr;
ThreadCreateCallback callback;
diff --git a/platform/haiku/audio_driver_media_kit.cpp b/platform/haiku/audio_driver_media_kit.cpp
index 93351e0799..4d8d580660 100644
--- a/platform/haiku/audio_driver_media_kit.cpp
+++ b/platform/haiku/audio_driver_media_kit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,7 +43,7 @@ Error AudioDriverMediaKit::init() {
channels = 2;
int latency = GLOBAL_DEF("audio/output_latency", 25);
- buffer_size = nearest_power_of_2(latency * mix_rate / 1000);
+ buffer_size = next_power_of_2(latency * mix_rate / 1000);
samples_in = memnew_arr(int32_t, buffer_size * channels);
media_raw_audio_format format;
diff --git a/platform/haiku/audio_driver_media_kit.h b/platform/haiku/audio_driver_media_kit.h
index 2cceb279e8..2f4752a973 100644
--- a/platform/haiku/audio_driver_media_kit.h
+++ b/platform/haiku/audio_driver_media_kit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/context_gl_haiku.cpp b/platform/haiku/context_gl_haiku.cpp
index eb5e60152f..2b943df5ba 100644
--- a/platform/haiku/context_gl_haiku.cpp
+++ b/platform/haiku/context_gl_haiku.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/context_gl_haiku.h b/platform/haiku/context_gl_haiku.h
index 074b4bf0d1..40daf43ab9 100644
--- a/platform/haiku/context_gl_haiku.h
+++ b/platform/haiku/context_gl_haiku.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/godot_haiku.cpp b/platform/haiku/godot_haiku.cpp
index 3a8206d9d5..ffc6e56cdd 100644
--- a/platform/haiku/godot_haiku.cpp
+++ b/platform/haiku/godot_haiku.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/haiku_application.cpp b/platform/haiku/haiku_application.cpp
index 1f0c9fdcbf..d23b9e27d8 100644
--- a/platform/haiku/haiku_application.cpp
+++ b/platform/haiku/haiku_application.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/haiku_application.h b/platform/haiku/haiku_application.h
index 6e690d4ab8..2162cae892 100644
--- a/platform/haiku/haiku_application.h
+++ b/platform/haiku/haiku_application.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/haiku_direct_window.cpp b/platform/haiku/haiku_direct_window.cpp
index 4a9f8c780d..572df493ff 100644
--- a/platform/haiku/haiku_direct_window.cpp
+++ b/platform/haiku/haiku_direct_window.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/haiku_direct_window.h b/platform/haiku/haiku_direct_window.h
index 3671c3c9cb..0f3e9de85b 100644
--- a/platform/haiku/haiku_direct_window.h
+++ b/platform/haiku/haiku_direct_window.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/haiku_gl_view.cpp b/platform/haiku/haiku_gl_view.cpp
index dd568f281e..d898bd1a5d 100644
--- a/platform/haiku/haiku_gl_view.cpp
+++ b/platform/haiku/haiku_gl_view.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/haiku_gl_view.h b/platform/haiku/haiku_gl_view.h
index 14e2889d6c..10facfe0c3 100644
--- a/platform/haiku/haiku_gl_view.h
+++ b/platform/haiku/haiku_gl_view.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/key_mapping_haiku.cpp b/platform/haiku/key_mapping_haiku.cpp
index 3db31fa3e4..074f03f471 100644
--- a/platform/haiku/key_mapping_haiku.cpp
+++ b/platform/haiku/key_mapping_haiku.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/key_mapping_haiku.h b/platform/haiku/key_mapping_haiku.h
index 8d09203737..943ba21e7c 100644
--- a/platform/haiku/key_mapping_haiku.h
+++ b/platform/haiku/key_mapping_haiku.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp
index e897d4c385..de2f79a0ac 100644
--- a/platform/haiku/os_haiku.cpp
+++ b/platform/haiku/os_haiku.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,16 +27,15 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include <Screen.h>
+#include "os_haiku.h"
-#include "drivers/gles2/rasterizer_gles2.h"
+#include "drivers/gles3/rasterizer_gles3.h"
+#include "main/main.h"
#include "servers/physics/physics_server_sw.h"
#include "servers/visual/visual_server_raster.h"
#include "servers/visual/visual_server_wrap_mt.h"
-//#include "servers/physics_2d/physics_2d_server_wrap_mt.h"
-#include "main/main.h"
-#include "os_haiku.h"
+#include <Screen.h>
OS_Haiku::OS_Haiku() {
#ifdef MEDIA_KIT_ENABLED
diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h
index 256c9eecf7..cb68f9303f 100644
--- a/platform/haiku/os_haiku.h
+++ b/platform/haiku/os_haiku.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -96,8 +96,8 @@ public:
virtual int get_screen_count() const;
virtual int get_current_screen() const;
virtual void set_current_screen(int p_screen);
- virtual Point2 get_screen_position(int p_screen = 0) const;
- virtual Size2 get_screen_size(int p_screen = 0) const;
+ virtual Point2 get_screen_position(int p_screen = -1) const;
+ virtual Size2 get_screen_size(int p_screen = -1) const;
virtual void set_window_title(const String &p_title);
virtual Size2 get_window_size() const;
virtual void set_window_size(const Size2 p_size);
diff --git a/platform/haiku/platform_config.h b/platform/haiku/platform_config.h
index e59b9bac80..27731a7b74 100644
--- a/platform/haiku/platform_config.h
+++ b/platform/haiku/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/power_haiku.cpp b/platform/haiku/power_haiku.cpp
index b0d01df982..449b43a621 100644
--- a/platform/haiku/power_haiku.cpp
+++ b/platform/haiku/power_haiku.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/haiku/power_haiku.h b/platform/haiku/power_haiku.h
index 711ad86a02..12513bdaef 100644
--- a/platform/haiku/power_haiku.h
+++ b/platform/haiku/power_haiku.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/app_delegate.h b/platform/iphone/app_delegate.h
index f357427144..4a1f52565a 100644
--- a/platform/iphone/app_delegate.h
+++ b/platform/iphone/app_delegate.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/app_delegate.mm b/platform/iphone/app_delegate.mm
index 362cfd1478..c7b65b476b 100644
--- a/platform/iphone/app_delegate.mm
+++ b/platform/iphone/app_delegate.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/audio_driver_iphone.cpp b/platform/iphone/audio_driver_iphone.cpp
index 57b6388016..dbc5bdb654 100644
--- a/platform/iphone/audio_driver_iphone.cpp
+++ b/platform/iphone/audio_driver_iphone.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -46,10 +46,8 @@ Error AudioDriverIphone::init() {
strdesc.mBytesPerPacket =
strdesc.mBytesPerFrame * strdesc.mFramesPerPacket;
- OSStatus result = noErr;
AURenderCallbackStruct callback;
AudioComponentDescription desc;
- AudioComponent comp = NULL;
const AudioUnitElement output_bus = 0;
const AudioUnitElement bus = output_bus;
const AudioUnitScope scope = kAudioUnitScope_Input;
@@ -57,10 +55,10 @@ Error AudioDriverIphone::init() {
zeromem(&desc, sizeof(desc));
desc.componentType = kAudioUnitType_Output;
desc.componentSubType = kAudioUnitSubType_RemoteIO; /* !!! FIXME: ? */
- comp = AudioComponentFindNext(NULL, &desc);
+ AudioComponent comp = AudioComponentFindNext(NULL, &desc);
desc.componentManufacturer = kAudioUnitManufacturer_Apple;
- result = AudioComponentInstanceNew(comp, &audio_unit);
+ OSStatus result = AudioComponentInstanceNew(comp, &audio_unit);
ERR_FAIL_COND_V(result != noErr, FAILED);
ERR_FAIL_COND_V(comp == NULL, FAILED);
diff --git a/platform/iphone/audio_driver_iphone.h b/platform/iphone/audio_driver_iphone.h
index c620e9068c..930ed168f7 100644
--- a/platform/iphone/audio_driver_iphone.h
+++ b/platform/iphone/audio_driver_iphone.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/detect.py b/platform/iphone/detect.py
index 1d802ff288..0b81422fa3 100644
--- a/platform/iphone/detect.py
+++ b/platform/iphone/detect.py
@@ -13,7 +13,7 @@ def get_name():
def can_build():
- if sys.platform == 'darwin' or os.environ.has_key("OSXCROSS_IOS"):
+ if sys.platform == 'darwin' or ("OSXCROSS_IOS" in os.environ):
return True
return False
@@ -83,11 +83,11 @@ def configure(env):
if (env["arch"] == "x86"):
env['IPHONEPLATFORM'] = 'iPhoneSimulator'
env['ENV']['MACOSX_DEPLOYMENT_TARGET'] = '10.6'
- env.Append(CCFLAGS=string.split('-arch i386 -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fblocks -fasm-blocks -D__IPHONE_OS_VERSION_MIN_REQUIRED=40100 -isysroot $IPHONESDK -mios-simulator-version-min=4.3 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"'))
+ env.Append(CCFLAGS='-arch i386 -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fblocks -fasm-blocks -D__IPHONE_OS_VERSION_MIN_REQUIRED=40100 -isysroot $IPHONESDK -mios-simulator-version-min=4.3 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"'.split())
elif (env["arch"] == "arm"):
- env.Append(CCFLAGS=string.split('-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'))
+ 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())
elif (env["arch"] == "arm64"):
- env.Append(CCFLAGS=string.split('-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'))
+ 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(CPPFLAGS=['-DNEED_LONG_INT'])
env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp
index 6ae2a0692d..8bb7f23ead 100644
--- a/platform/iphone/export/export.cpp
+++ b/platform/iphone/export/export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/export/export.h b/platform/iphone/export/export.h
index 6e9324aed7..1b96b8338a 100644
--- a/platform/iphone/export/export.h
+++ b/platform/iphone/export/export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/game_center.h b/platform/iphone/game_center.h
index cda6f78a1f..c0a7830fe9 100644
--- a/platform/iphone/game_center.h
+++ b/platform/iphone/game_center.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/game_center.mm b/platform/iphone/game_center.mm
index f9bc70b7c4..c05bdea005 100644
--- a/platform/iphone/game_center.mm
+++ b/platform/iphone/game_center.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/gl_view.h b/platform/iphone/gl_view.h
index 14e9a66a4a..a9fd8d5711 100644
--- a/platform/iphone/gl_view.h
+++ b/platform/iphone/gl_view.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/gl_view.mm b/platform/iphone/gl_view.mm
index f2778e8165..3e206c3a2c 100644
--- a/platform/iphone/gl_view.mm
+++ b/platform/iphone/gl_view.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/globals/global_defaults.cpp b/platform/iphone/globals/global_defaults.cpp
index aa4662302d..4bdc716d6e 100644
--- a/platform/iphone/globals/global_defaults.cpp
+++ b/platform/iphone/globals/global_defaults.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/globals/global_defaults.h b/platform/iphone/globals/global_defaults.h
index 6fe1027287..ee8ae833b9 100644
--- a/platform/iphone/globals/global_defaults.h
+++ b/platform/iphone/globals/global_defaults.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/godot_iphone.cpp b/platform/iphone/godot_iphone.cpp
index 4d34ebedf9..8c6d6d8da4 100644
--- a/platform/iphone/godot_iphone.cpp
+++ b/platform/iphone/godot_iphone.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/icloud.h b/platform/iphone/icloud.h
index 67d12a990a..7ab3e04bb8 100644
--- a/platform/iphone/icloud.h
+++ b/platform/iphone/icloud.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/icloud.mm b/platform/iphone/icloud.mm
index 94c3d2ef91..84458ed79f 100644
--- a/platform/iphone/icloud.mm
+++ b/platform/iphone/icloud.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/in_app_store.h b/platform/iphone/in_app_store.h
index 153c46bd7b..4c12f825c1 100644
--- a/platform/iphone/in_app_store.h
+++ b/platform/iphone/in_app_store.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/in_app_store.mm b/platform/iphone/in_app_store.mm
index 710df0f757..9efd4b9891 100644
--- a/platform/iphone/in_app_store.mm
+++ b/platform/iphone/in_app_store.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/ios.h b/platform/iphone/ios.h
index 2572d626d2..0c2e6b4aa6 100644
--- a/platform/iphone/ios.h
+++ b/platform/iphone/ios.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/ios.mm b/platform/iphone/ios.mm
index 6c95903241..add0949f94 100644
--- a/platform/iphone/ios.mm
+++ b/platform/iphone/ios.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/main.m b/platform/iphone/main.m
index 6757cc8146..0de5c3b41b 100644
--- a/platform/iphone/main.m
+++ b/platform/iphone/main.m
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp
index df497349ae..0e3eeed114 100644
--- a/platform/iphone/os_iphone.cpp
+++ b/platform/iphone/os_iphone.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/os_iphone.h b/platform/iphone/os_iphone.h
index cf2766bb33..475dceebf2 100644
--- a/platform/iphone/os_iphone.h
+++ b/platform/iphone/os_iphone.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -47,7 +47,6 @@
#include "servers/visual_server.h"
class AudioDriverIphone;
-// class RasterizerGLES2;
class OSIPhone : public OS_Unix {
@@ -67,9 +66,6 @@ private:
uint8_t supported_orientations;
- // Rasterizer *rasterizer;
- // RasterizerGLES2* rasterizer_gles22;
-
VisualServer *visual_server;
PhysicsServer *physics_server;
Physics2DServer *physics_2d_server;
diff --git a/platform/iphone/platform_config.h b/platform/iphone/platform_config.h
index 7e4b533254..54de66082e 100644
--- a/platform/iphone/platform_config.h
+++ b/platform/iphone/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/platform_refcount.h b/platform/iphone/platform_refcount.h
index c02e709ea1..8d04340793 100644
--- a/platform/iphone/platform_refcount.h
+++ b/platform/iphone/platform_refcount.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/power_iphone.cpp b/platform/iphone/power_iphone.cpp
index 5192f8e593..2811e62108 100644
--- a/platform/iphone/power_iphone.cpp
+++ b/platform/iphone/power_iphone.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/power_iphone.h b/platform/iphone/power_iphone.h
index 174ee6c63b..b4fb8d62dc 100644
--- a/platform/iphone/power_iphone.h
+++ b/platform/iphone/power_iphone.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/sem_iphone.cpp b/platform/iphone/sem_iphone.cpp
index 4614b201a4..623749f891 100644
--- a/platform/iphone/sem_iphone.cpp
+++ b/platform/iphone/sem_iphone.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/sem_iphone.h b/platform/iphone/sem_iphone.h
index 90db0fb74d..9ae201557f 100644
--- a/platform/iphone/sem_iphone.h
+++ b/platform/iphone/sem_iphone.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/view_controller.h b/platform/iphone/view_controller.h
index 57ed576c25..ed33e5fdf3 100644
--- a/platform/iphone/view_controller.h
+++ b/platform/iphone/view_controller.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/iphone/view_controller.mm b/platform/iphone/view_controller.mm
index 574598e1d3..23d60cc5d5 100644
--- a/platform/iphone/view_controller.mm
+++ b/platform/iphone/view_controller.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -42,7 +42,7 @@ int add_path(int p_argc, char **p_args) {
if (!str)
return p_argc;
- p_args[p_argc++] = "-path";
+ p_args[p_argc++] = "--path";
[str retain]; // memory leak lol (maybe make it static here and delete it in ViewController destructor? @todo
p_args[p_argc++] = (char *)[str cString];
p_args[p_argc] = NULL;
diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp
index 3e37ec293e..4c0e5fd966 100644
--- a/platform/javascript/audio_driver_javascript.cpp
+++ b/platform/javascript/audio_driver_javascript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h
index 7ccaff0f43..c5cebe800f 100644
--- a/platform/javascript/audio_driver_javascript.h
+++ b/platform/javascript/audio_driver_javascript.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/audio_server_javascript.cpp b/platform/javascript/audio_server_javascript.cpp
index f9b7890e12..ab9f66ce5b 100644
--- a/platform/javascript/audio_server_javascript.cpp
+++ b/platform/javascript/audio_server_javascript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "audio_server_javascript.h"
+
+// FIXME: Needs to be ported to the new AudioServer API in 3.0
#if 0
#include "emscripten.h"
diff --git a/platform/javascript/audio_server_javascript.h b/platform/javascript/audio_server_javascript.h
index 58c240f793..0773459f56 100644
--- a/platform/javascript/audio_server_javascript.h
+++ b/platform/javascript/audio_server_javascript.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,8 @@
/*************************************************************************/
#ifndef AUDIO_SERVER_JAVASCRIPT_H
#define AUDIO_SERVER_JAVASCRIPT_H
+
+// FIXME: Needs to be ported to the new AudioServer API in 3.0
#if 0
#include "servers/audio_server.h"
diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py
index 68c8d1eea5..5f066f1b15 100644
--- a/platform/javascript/detect.py
+++ b/platform/javascript/detect.py
@@ -13,7 +13,7 @@ def get_name():
def can_build():
- return (os.environ.has_key("EMSCRIPTEN_ROOT"))
+ return ("EMSCRIPTEN_ROOT" in os.environ)
def get_opts():
diff --git a/platform/javascript/dom_keys.h b/platform/javascript/dom_keys.h
index 4b8b764c45..d63f165382 100644
--- a/platform/javascript/dom_keys.h
+++ b/platform/javascript/dom_keys.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp
index b436d52363..5a161dd0ab 100644
--- a/platform/javascript/export/export.cpp
+++ b/platform/javascript/export/export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/export/export.h b/platform/javascript/export/export.h
index 910c4119f7..0cea0a213b 100644
--- a/platform/javascript/export/export.h
+++ b/platform/javascript/export/export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/javascript_eval.cpp b/platform/javascript/javascript_eval.cpp
index c9312e8d30..74f8d80a76 100644
--- a/platform/javascript/javascript_eval.cpp
+++ b/platform/javascript/javascript_eval.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/javascript_eval.h b/platform/javascript/javascript_eval.h
index 4a732cec76..ed7cf383da 100644
--- a/platform/javascript/javascript_eval.h
+++ b/platform/javascript/javascript_eval.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp
index 6b1d574496..4c948bf181 100644
--- a/platform/javascript/javascript_main.cpp
+++ b/platform/javascript/javascript_main.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index d339baf024..a0e5610591 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -687,8 +687,6 @@ OS::VideoMode OS_JavaScript::get_video_mode(int p_screen) const {
Size2 OS_JavaScript::get_screen_size(int p_screen) const {
- ERR_FAIL_COND_V(p_screen != 0, Size2());
-
EmscriptenFullscreenChangeEvent ev;
EMSCRIPTEN_RESULT result = emscripten_get_fullscreen_status(&ev);
ERR_FAIL_COND_V(result != EMSCRIPTEN_RESULT_SUCCESS, Size2());
diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h
index 13c500b3dc..f78a3f2768 100644
--- a/platform/javascript/os_javascript.h
+++ b/platform/javascript/os_javascript.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -124,7 +124,7 @@ public:
virtual VideoMode get_video_mode(int p_screen = 0) const;
virtual void get_fullscreen_mode_list(List<VideoMode> *p_list, int p_screen = 0) const;
- virtual Size2 get_screen_size(int p_screen = 0) const;
+ virtual Size2 get_screen_size(int p_screen = -1) const;
virtual void set_window_size(const Size2);
virtual Size2 get_window_size() const;
diff --git a/platform/javascript/platform_config.h b/platform/javascript/platform_config.h
index 48bcadcc29..b1c3f027f3 100644
--- a/platform/javascript/platform_config.h
+++ b/platform/javascript/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/power_javascript.cpp b/platform/javascript/power_javascript.cpp
index bd4502fc2a..3d54146595 100644
--- a/platform/javascript/power_javascript.cpp
+++ b/platform/javascript/power_javascript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/javascript/power_javascript.h b/platform/javascript/power_javascript.h
index c7b853ce11..834d765557 100644
--- a/platform/javascript/power_javascript.h
+++ b/platform/javascript/power_javascript.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/audio_driver_osx.cpp b/platform/osx/audio_driver_osx.cpp
index d7a91b1653..8c5a734f76 100644
--- a/platform/osx/audio_driver_osx.cpp
+++ b/platform/osx/audio_driver_osx.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,6 +30,10 @@
#ifdef OSX_ENABLED
#include "audio_driver_osx.h"
+#include "core/project_settings.h"
+#include "os/os.h"
+
+#define kOutputBus 0
static OSStatus outputDeviceAddressCB(AudioObjectID inObjectID, UInt32 inNumberAddresses, const AudioObjectPropertyAddress *inAddresses, void *__nullable inClientData) {
AudioDriverOSX *driver = (AudioDriverOSX *)inClientData;
@@ -40,42 +44,69 @@ static OSStatus outputDeviceAddressCB(AudioObjectID inObjectID, UInt32 inNumberA
}
Error AudioDriverOSX::initDevice() {
+ AudioComponentDescription desc;
+ zeromem(&desc, sizeof(desc));
+ desc.componentType = kAudioUnitType_Output;
+ desc.componentSubType = kAudioUnitSubType_HALOutput;
+ desc.componentManufacturer = kAudioUnitManufacturer_Apple;
+
+ AudioComponent comp = AudioComponentFindNext(NULL, &desc);
+ ERR_FAIL_COND_V(comp == NULL, FAILED);
+
+ OSStatus result = AudioComponentInstanceNew(comp, &audio_unit);
+ ERR_FAIL_COND_V(result != noErr, FAILED);
+
AudioStreamBasicDescription strdesc;
+
+ // TODO: Implement this
+ /*zeromem(&strdesc, sizeof(strdesc));
+ UInt32 size = sizeof(strdesc);
+ result = AudioUnitGetProperty(audio_unit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, kOutputBus, &strdesc, &size);
+ ERR_FAIL_COND_V(result != noErr, FAILED);
+
+ switch (strdesc.mChannelsPerFrame) {
+ case 2: // Stereo
+ case 6: // Surround 5.1
+ case 8: // Surround 7.1
+ channels = strdesc.mChannelsPerFrame;
+ break;
+
+ default:
+ // Unknown number of channels, default to stereo
+ channels = 2;
+ break;
+ }*/
+
+ mix_rate = GLOBAL_DEF("audio/mix_rate", 44100);
+
+ zeromem(&strdesc, sizeof(strdesc));
strdesc.mFormatID = kAudioFormatLinearPCM;
strdesc.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
strdesc.mChannelsPerFrame = channels;
- strdesc.mSampleRate = 44100;
+ strdesc.mSampleRate = mix_rate;
strdesc.mFramesPerPacket = 1;
strdesc.mBitsPerChannel = 16;
strdesc.mBytesPerFrame = strdesc.mBitsPerChannel * strdesc.mChannelsPerFrame / 8;
strdesc.mBytesPerPacket = strdesc.mBytesPerFrame * strdesc.mFramesPerPacket;
- OSStatus result;
- AURenderCallbackStruct callback;
- AudioComponentDescription desc;
- AudioComponent comp = NULL;
- const AudioUnitElement output_bus = 0;
- const AudioUnitElement bus = output_bus;
- const AudioUnitScope scope = kAudioUnitScope_Input;
-
- zeromem(&desc, sizeof(desc));
- desc.componentType = kAudioUnitType_Output;
- desc.componentSubType = kAudioUnitSubType_HALOutput;
- desc.componentManufacturer = kAudioUnitManufacturer_Apple;
+ result = AudioUnitSetProperty(audio_unit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, kOutputBus, &strdesc, sizeof(strdesc));
+ ERR_FAIL_COND_V(result != noErr, FAILED);
- comp = AudioComponentFindNext(NULL, &desc);
- ERR_FAIL_COND_V(comp == NULL, FAILED);
+ int latency = GLOBAL_DEF("audio/output_latency", 25);
+ unsigned int buffer_size = closest_power_of_2(latency * mix_rate / 1000);
- result = AudioComponentInstanceNew(comp, &audio_unit);
- ERR_FAIL_COND_V(result != noErr, FAILED);
+ if (OS::get_singleton()->is_stdout_verbose()) {
+ print_line("audio buffer size: " + itos(buffer_size) + " calculated latency: " + itos(buffer_size * 1000 / mix_rate));
+ }
- result = AudioUnitSetProperty(audio_unit, kAudioUnitProperty_StreamFormat, scope, bus, &strdesc, sizeof(strdesc));
- ERR_FAIL_COND_V(result != noErr, FAILED);
+ samples_in.resize(buffer_size);
+ buffer_frames = buffer_size / channels;
+ AURenderCallbackStruct callback;
zeromem(&callback, sizeof(AURenderCallbackStruct));
callback.inputProc = &AudioDriverOSX::output_callback;
callback.inputProcRefCon = this;
- result = AudioUnitSetProperty(audio_unit, kAudioUnitProperty_SetRenderCallback, scope, bus, &callback, sizeof(callback));
+ result = AudioUnitSetProperty(audio_unit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, kOutputBus, &callback, sizeof(callback));
ERR_FAIL_COND_V(result != noErr, FAILED);
result = AudioUnitInitialize(audio_unit);
@@ -114,15 +145,10 @@ Error AudioDriverOSX::init() {
result = AudioObjectAddPropertyListener(kAudioObjectSystemObject, &outputDeviceAddress, &outputDeviceAddressCB, this);
ERR_FAIL_COND_V(result != noErr, FAILED);
- const int samples = 1024;
- samples_in = memnew_arr(int32_t, samples); // whatever
- buffer_frames = samples / channels;
-
return initDevice();
};
Error AudioDriverOSX::reopen() {
- Error err;
bool restart = false;
lock();
@@ -131,7 +157,7 @@ Error AudioDriverOSX::reopen() {
restart = true;
}
- err = finishDevice();
+ Error err = finishDevice();
if (err != OK) {
ERR_PRINT("finishDevice failed");
unlock();
@@ -179,7 +205,7 @@ OSStatus AudioDriverOSX::output_callback(void *inRefCon,
while (frames_left) {
int frames = MIN(frames_left, ad->buffer_frames);
- ad->audio_server_process(frames, ad->samples_in);
+ ad->audio_server_process(frames, ad->samples_in.ptr());
for (int j = 0; j < frames * ad->channels; j++) {
@@ -232,29 +258,33 @@ bool AudioDriverOSX::try_lock() {
}
void AudioDriverOSX::finish() {
- OSStatus result;
-
finishDevice();
- result = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, &outputDeviceAddress, &outputDeviceAddressCB, this);
+ OSStatus result = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, &outputDeviceAddress, &outputDeviceAddressCB, this);
if (result != noErr) {
ERR_PRINT("AudioObjectRemovePropertyListener failed");
}
+ AURenderCallbackStruct callback;
+ zeromem(&callback, sizeof(AURenderCallbackStruct));
+ result = AudioUnitSetProperty(audio_unit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input, kOutputBus, &callback, sizeof(callback));
+ if (result != noErr) {
+ ERR_PRINT("AudioUnitSetProperty failed");
+ }
+
if (mutex) {
memdelete(mutex);
mutex = NULL;
}
-
- if (samples_in) {
- memdelete_arr(samples_in);
- samples_in = NULL;
- }
};
AudioDriverOSX::AudioDriverOSX() {
+ active = false;
mutex = NULL;
- samples_in = NULL;
+
+ mix_rate = 44100;
+ channels = 2;
+ samples_in.clear();
};
AudioDriverOSX::~AudioDriverOSX(){};
diff --git a/platform/osx/audio_driver_osx.h b/platform/osx/audio_driver_osx.h
index 287c9d6cbf..ac178b89f3 100644
--- a/platform/osx/audio_driver_osx.h
+++ b/platform/osx/audio_driver_osx.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -44,10 +44,12 @@ class AudioDriverOSX : public AudioDriver {
bool active;
Mutex *mutex;
+ int mix_rate;
int channels;
- int32_t *samples_in;
int buffer_frames;
+ Vector<int32_t> samples_in;
+
static OSStatus output_callback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
diff --git a/platform/osx/detect.py b/platform/osx/detect.py
index d9891dda61..d3ebdfe992 100644
--- a/platform/osx/detect.py
+++ b/platform/osx/detect.py
@@ -12,7 +12,7 @@ def get_name():
def can_build():
- if (sys.platform == "darwin" or os.environ.has_key("OSXCROSS_ROOT")):
+ if (sys.platform == "darwin" or ("OSXCROSS_ROOT" in os.environ)):
return True
return False
@@ -65,10 +65,14 @@ def configure(env):
else: # osxcross build
root = os.environ.get("OSXCROSS_ROOT", 0)
- if env["bits"] == "64":
+ if env["bits"] == "fat":
basecmd = root + "/target/bin/x86_64-apple-" + env["osxcross_sdk"] + "-"
- else:
+ env.Append(CCFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
+ env.Append(LINKFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
+ elif env["bits"] == "32":
basecmd = root + "/target/bin/i386-apple-" + env["osxcross_sdk"] + "-"
+ else: # 64-bit, default
+ basecmd = root + "/target/bin/x86_64-apple-" + env["osxcross_sdk"] + "-"
env['CC'] = basecmd + "cc"
env['CXX'] = basecmd + "c++"
diff --git a/platform/osx/dir_access_osx.h b/platform/osx/dir_access_osx.h
index 6dcff3898c..c988dfe425 100644
--- a/platform/osx/dir_access_osx.h
+++ b/platform/osx/dir_access_osx.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/dir_access_osx.mm b/platform/osx/dir_access_osx.mm
index 37ba0e6b19..6e8ceb5e19 100644
--- a/platform/osx/dir_access_osx.mm
+++ b/platform/osx/dir_access_osx.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp
index 03f424de8d..7f749030ec 100644
--- a/platform/osx/export/export.cpp
+++ b/platform/osx/export/export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/export/export.h b/platform/osx/export/export.h
index 50604f068f..bb87c8a6b7 100644
--- a/platform/osx/export/export.h
+++ b/platform/osx/export/export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/godot_main_osx.mm b/platform/osx/godot_main_osx.mm
index 0bf678f9b7..83d782cc2f 100644
--- a/platform/osx/godot_main_osx.mm
+++ b/platform/osx/godot_main_osx.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/joypad_osx.cpp b/platform/osx/joypad_osx.cpp
index 1a4b3a460e..ab323ad410 100644
--- a/platform/osx/joypad_osx.cpp
+++ b/platform/osx/joypad_osx.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -217,10 +217,9 @@ static void joypad_added_callback(void *ctx, IOReturn res, void *sender, IOHIDDe
}
static bool is_joypad(IOHIDDeviceRef p_device_ref) {
- CFTypeRef refCF = NULL;
int usage_page = 0;
int usage = 0;
- refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDPrimaryUsagePageKey));
+ CFTypeRef refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDPrimaryUsagePageKey));
if (refCF) {
CFNumberGetValue((CFNumberRef)refCF, kCFNumberSInt32Type, &usage_page);
}
@@ -289,13 +288,11 @@ static String _hex_str(uint8_t p_byte) {
bool JoypadOSX::configure_joypad(IOHIDDeviceRef p_device_ref, joypad *p_joy) {
- CFTypeRef refCF = NULL;
-
p_joy->device_ref = p_device_ref;
/* get device name */
String name;
char c_name[256];
- refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDProductKey));
+ CFTypeRef refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDProductKey));
if (!refCF) {
refCF = IOHIDDeviceGetProperty(p_device_ref, CFSTR(kIOHIDManufacturerKey));
}
@@ -334,8 +331,7 @@ bool JoypadOSX::configure_joypad(IOHIDDeviceRef p_device_ref, joypad *p_joy) {
input->joy_connection_changed(id, true, name, guid);
}
- CFArrayRef array = NULL;
- array = IOHIDDeviceCopyMatchingElements(p_device_ref, NULL, kIOHIDOptionsTypeNone);
+ CFArrayRef array = IOHIDDeviceCopyMatchingElements(p_device_ref, NULL, kIOHIDOptionsTypeNone);
if (array) {
p_joy->add_hid_elements(array);
CFRelease(array);
diff --git a/platform/osx/joypad_osx.h b/platform/osx/joypad_osx.h
index bfbc523cff..e271f4b947 100644
--- a/platform/osx/joypad_osx.h
+++ b/platform/osx/joypad_osx.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h
index 56e6802eeb..5bfed1ee50 100644
--- a/platform/osx/os_osx.h
+++ b/platform/osx/os_osx.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -187,9 +187,9 @@ public:
virtual int get_screen_count() const;
virtual int get_current_screen() const;
virtual void set_current_screen(int p_screen);
- virtual Point2 get_screen_position(int p_screen = 0) const;
- virtual Size2 get_screen_size(int p_screen = 0) const;
- virtual int get_screen_dpi(int p_screen = 0) const;
+ virtual Point2 get_screen_position(int p_screen = -1) const;
+ virtual Size2 get_screen_size(int p_screen = -1) const;
+ virtual int get_screen_dpi(int p_screen = -1) const;
virtual Point2 get_window_position() const;
virtual void set_window_position(const Point2 &p_position);
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index 6d8a6eca66..f1260bc088 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -137,6 +137,11 @@ static bool mouse_down_control = false;
//_GodotInputMonitorChange();
}
+- (void)showAbout:(id)sender {
+ if (OS_OSX::singleton->get_main_loop())
+ OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_ABOUT);
+}
+
@end
@interface GodotWindowDelegate : NSObject {
@@ -1428,6 +1433,10 @@ void OS_OSX::set_current_screen(int p_screen) {
};
Point2 OS_OSX::get_screen_position(int p_screen) const {
+ if (p_screen == -1) {
+ p_screen = get_current_screen();
+ }
+
NSArray *screenArray = [NSScreen screens];
if (p_screen < [screenArray count]) {
float displayScale = 1.0;
@@ -1444,6 +1453,10 @@ Point2 OS_OSX::get_screen_position(int p_screen) const {
}
int OS_OSX::get_screen_dpi(int p_screen) const {
+ if (p_screen == -1) {
+ p_screen = get_current_screen();
+ }
+
NSArray *screenArray = [NSScreen screens];
if (p_screen < [screenArray count]) {
float displayScale = 1.0;
@@ -1464,6 +1477,10 @@ int OS_OSX::get_screen_dpi(int p_screen) const {
}
Size2 OS_OSX::get_screen_size(int p_screen) const {
+ if (p_screen == -1) {
+ p_screen = get_current_screen();
+ }
+
NSArray *screenArray = [NSScreen screens];
if (p_screen < [screenArray count]) {
float displayScale = 1.0;
@@ -1514,9 +1531,14 @@ Point2 OS_OSX::get_window_position() const {
void OS_OSX::set_window_position(const Point2 &p_position) {
- Point2 size = p_position;
- size /= display_scale;
- [window_object setFrame:NSMakeRect(size.x, size.y, [window_object frame].size.width, [window_object frame].size.height) display:YES];
+ Size2 scr = get_screen_size();
+ NSPoint pos;
+
+ pos.x = p_position.x / display_scale;
+ // For OS X the y starts at the bottom
+ pos.y = (scr.height - p_position.y) / display_scale;
+
+ [window_object setFrameTopLeftPoint:pos];
_update_window();
};
@@ -1897,7 +1919,7 @@ OS_OSX::OS_OSX() {
// Setup Apple menu
NSMenu *apple_menu = [[NSMenu alloc] initWithTitle:@""];
title = [NSString stringWithFormat:NSLocalizedString(@"About %@", nil), nsappname];
- [apple_menu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""];
+ [apple_menu addItemWithTitle:title action:@selector(showAbout:) keyEquivalent:@""];
[apple_menu addItem:[NSMenuItem separatorItem]];
diff --git a/platform/osx/platform_config.h b/platform/osx/platform_config.h
index 487077e651..d2474fcfc7 100644
--- a/platform/osx/platform_config.h
+++ b/platform/osx/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/power_osx.cpp b/platform/osx/power_osx.cpp
index 2ef1a65ff1..24591e48b1 100644
--- a/platform/osx/power_osx.cpp
+++ b/platform/osx/power_osx.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/power_osx.h b/platform/osx/power_osx.h
index 6d984ec466..692c850d7c 100644
--- a/platform/osx/power_osx.h
+++ b/platform/osx/power_osx.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/sem_osx.cpp b/platform/osx/sem_osx.cpp
index b1eeccfec5..f75ac181bf 100644
--- a/platform/osx/sem_osx.cpp
+++ b/platform/osx/sem_osx.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/osx/sem_osx.h b/platform/osx/sem_osx.h
index 3025318c4b..2b408b00de 100644
--- a/platform/osx/sem_osx.h
+++ b/platform/osx/sem_osx.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/server/godot_server.cpp b/platform/server/godot_server.cpp
index ed0100ac93..2fd8c315de 100644
--- a/platform/server/godot_server.cpp
+++ b/platform/server/godot_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/server/os_server.cpp b/platform/server/os_server.cpp
index 89af785d29..44034e815d 100644
--- a/platform/server/os_server.cpp
+++ b/platform/server/os_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/server/os_server.h b/platform/server/os_server.h
index 7c29b1e232..f3db053be3 100644
--- a/platform/server/os_server.h
+++ b/platform/server/os_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/server/platform_config.h b/platform/server/platform_config.h
index 48bcadcc29..b1c3f027f3 100644
--- a/platform/server/platform_config.h
+++ b/platform/server/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/app.cpp b/platform/uwp/app.cpp
index c773c0b746..c565999d82 100644
--- a/platform/uwp/app.cpp
+++ b/platform/uwp/app.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -512,7 +512,7 @@ void App::UpdateWindowSize(Size size) {
char **App::get_command_line(unsigned int *out_argc) {
- static char *fail_cl[] = { "-path", "game", NULL };
+ static char *fail_cl[] = { "--path", "game", NULL };
*out_argc = 2;
FILE *f = _wfopen(L"__cl__.cl", L"rb");
diff --git a/platform/uwp/app.h b/platform/uwp/app.h
index 9cbe7669c9..e079fa9c9d 100644
--- a/platform/uwp/app.h
+++ b/platform/uwp/app.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/detect.py b/platform/uwp/detect.py
index 64dac93f1f..23929dd804 100644
--- a/platform/uwp/detect.py
+++ b/platform/uwp/detect.py
@@ -145,8 +145,8 @@ def configure(env):
env.Append(CPPFLAGS=['/AI', vc_base_path + 'lib/store/references'])
env.Append(CPPFLAGS=['/AI', vc_base_path + 'lib/x86/store/references'])
- env.Append(CCFLAGS=string.split('/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo'))
- env.Append(CXXFLAGS=string.split('/ZW /FS'))
+ env.Append(CCFLAGS='/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo'.split())
+ env.Append(CXXFLAGS='/ZW /FS'.split())
env.Append(CCFLAGS=['/AI', vc_base_path + '\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR'] + '\\References\\CommonConfiguration\\Neutral'])
## Link flags
diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp
index a1aa58a5e7..c129743507 100644
--- a/platform/uwp/export/export.cpp
+++ b/platform/uwp/export/export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -171,7 +171,7 @@ class AppxPackager {
}
Vector<uint8_t> make_file_header(FileMeta p_file_meta);
- void store_central_dir_header(const FileMeta p_file, bool p_do_hash = true);
+ void store_central_dir_header(const FileMeta &p_file, bool p_do_hash = true);
Vector<uint8_t> make_end_of_central_record();
String content_type(String p_extension);
@@ -329,7 +329,7 @@ Vector<uint8_t> AppxPackager::make_file_header(FileMeta p_file_meta) {
return buf;
}
-void AppxPackager::store_central_dir_header(const FileMeta p_file, bool p_do_hash) {
+void AppxPackager::store_central_dir_header(const FileMeta &p_file, bool p_do_hash) {
Vector<uint8_t> &buf = central_dir_data;
int offs = buf.size();
@@ -869,19 +869,19 @@ class EditorExportUWP : public EditorExportPlatform {
StreamTexture *image;
if (p_path.find("StoreLogo") != -1) {
- image = p_preset->get("images/store_logo").is_zero() ? NULL : ((Object *)p_preset->get("images/store_logo"))->cast_to<StreamTexture>();
+ image = p_preset->get("images/store_logo").is_zero() ? NULL : Object::cast_to<StreamTexture>(((Object *)p_preset->get("images/store_logo")));
} else if (p_path.find("Square44x44Logo") != -1) {
- image = p_preset->get("images/square44x44_logo").is_zero() ? NULL : ((Object *)p_preset->get("images/square44x44_logo"))->cast_to<StreamTexture>();
+ image = p_preset->get("images/square44x44_logo").is_zero() ? NULL : Object::cast_to<StreamTexture>(((Object *)p_preset->get("images/square44x44_logo")));
} else if (p_path.find("Square71x71Logo") != -1) {
- image = p_preset->get("images/square71x71_logo").is_zero() ? NULL : ((Object *)p_preset->get("images/square71x71_logo"))->cast_to<StreamTexture>();
+ image = p_preset->get("images/square71x71_logo").is_zero() ? NULL : Object::cast_to<StreamTexture>(((Object *)p_preset->get("images/square71x71_logo")));
} else if (p_path.find("Square150x150Logo") != -1) {
- image = p_preset->get("images/square150x150_logo").is_zero() ? NULL : ((Object *)p_preset->get("images/square150x150_logo"))->cast_to<StreamTexture>();
+ image = p_preset->get("images/square150x150_logo").is_zero() ? NULL : Object::cast_to<StreamTexture>(((Object *)p_preset->get("images/square150x150_logo")));
} else if (p_path.find("Square310x310Logo") != -1) {
- image = p_preset->get("images/square310x310_logo").is_zero() ? NULL : ((Object *)p_preset->get("images/square310x310_logo"))->cast_to<StreamTexture>();
+ image = p_preset->get("images/square310x310_logo").is_zero() ? NULL : Object::cast_to<StreamTexture>(((Object *)p_preset->get("images/square310x310_logo")));
} else if (p_path.find("Wide310x150Logo") != -1) {
- image = p_preset->get("images/wide310x150_logo").is_zero() ? NULL : ((Object *)p_preset->get("images/wide310x150_logo"))->cast_to<StreamTexture>();
+ image = p_preset->get("images/wide310x150_logo").is_zero() ? NULL : Object::cast_to<StreamTexture>(((Object *)p_preset->get("images/wide310x150_logo")));
} else if (p_path.find("SplashScreen") != -1) {
- image = p_preset->get("images/splash_screen").is_zero() ? NULL : ((Object *)p_preset->get("images/splash_screen"))->cast_to<StreamTexture>();
+ image = p_preset->get("images/splash_screen").is_zero() ? NULL : Object::cast_to<StreamTexture>(((Object *)p_preset->get("images/splash_screen")));
}
if (!image) return data;
@@ -1162,37 +1162,37 @@ public:
err += "\nInvalid background color.";
}
- if (!p_preset->get("images/store_logo").is_zero() && !_valid_image(((Object *)p_preset->get("images/store_logo"))->cast_to<StreamTexture>(), 50, 50)) {
+ if (!p_preset->get("images/store_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/store_logo"))), 50, 50)) {
valid = false;
err += "\nInvalid Store Logo image dimensions (should be 50x50).";
}
- if (!p_preset->get("images/square44x44_logo").is_zero() && !_valid_image(((Object *)p_preset->get("images/square44x44_logo"))->cast_to<StreamTexture>(), 44, 44)) {
+ if (!p_preset->get("images/square44x44_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square44x44_logo"))), 44, 44)) {
valid = false;
err += "\nInvalid square 44x44 logo image dimensions (should be 44x44).";
}
- if (!p_preset->get("images/square71x71_logo").is_zero() && !_valid_image(((Object *)p_preset->get("images/square71x71_logo"))->cast_to<StreamTexture>(), 71, 71)) {
+ if (!p_preset->get("images/square71x71_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square71x71_logo"))), 71, 71)) {
valid = false;
err += "\nInvalid square 71x71 logo image dimensions (should be 71x71).";
}
- if (!p_preset->get("images/square150x150_logo").is_zero() && !_valid_image(((Object *)p_preset->get("images/square150x150_logo"))->cast_to<StreamTexture>(), 150, 0)) {
+ if (!p_preset->get("images/square150x150_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square150x150_logo"))), 150, 0)) {
valid = false;
err += "\nInvalid square 150x150 logo image dimensions (should be 150x150).";
}
- if (!p_preset->get("images/square310x310_logo").is_zero() && !_valid_image(((Object *)p_preset->get("images/square310x310_logo"))->cast_to<StreamTexture>(), 310, 310)) {
+ if (!p_preset->get("images/square310x310_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/square310x310_logo"))), 310, 310)) {
valid = false;
err += "\nInvalid square 310x310 logo image dimensions (should be 310x310).";
}
- if (!p_preset->get("images/wide310x150_logo").is_zero() && !_valid_image(((Object *)p_preset->get("images/wide310x150_logo"))->cast_to<StreamTexture>(), 310, 150)) {
+ if (!p_preset->get("images/wide310x150_logo").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/wide310x150_logo"))), 310, 150)) {
valid = false;
err += "\nInvalid wide 310x150 logo image dimensions (should be 310x150).";
}
- if (!p_preset->get("images/splash_screen").is_zero() && !_valid_image(((Object *)p_preset->get("images/splash_screen"))->cast_to<StreamTexture>(), 620, 300)) {
+ if (!p_preset->get("images/splash_screen").is_zero() && !_valid_image((Object::cast_to<StreamTexture>((Object *)p_preset->get("images/splash_screen"))), 620, 300)) {
valid = false;
err += "\nInvalid splash screen image dimensions (should be 620x300).";
}
@@ -1330,7 +1330,7 @@ public:
}
if (!(p_flags & DEBUG_FLAG_DUMB_CLIENT)) {
- cl.push_back("-path");
+ cl.push_back("--path");
cl.push_back("game");
}
diff --git a/platform/uwp/export/export.h b/platform/uwp/export/export.h
index 81bd848241..558af38a70 100644
--- a/platform/uwp/export/export.h
+++ b/platform/uwp/export/export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/gl_context_egl.cpp b/platform/uwp/gl_context_egl.cpp
index 57c4c5d572..dd186c97d6 100644
--- a/platform/uwp/gl_context_egl.cpp
+++ b/platform/uwp/gl_context_egl.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/gl_context_egl.h b/platform/uwp/gl_context_egl.h
index 908b8dceec..1b24780b29 100644
--- a/platform/uwp/gl_context_egl.h
+++ b/platform/uwp/gl_context_egl.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/joypad_uwp.cpp b/platform/uwp/joypad_uwp.cpp
index f3d4eb99c8..0f84bd55a3 100644
--- a/platform/uwp/joypad_uwp.cpp
+++ b/platform/uwp/joypad_uwp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,7 +54,7 @@ void JoypadUWP::process_controllers() {
case ControllerType::GAMEPAD_CONTROLLER: {
- GamepadReading reading = ((Gamepad ^) joy.controller_reference)->GetCurrentReading();
+ GamepadReading reading = ((Gamepad ^)joy.controller_reference)->GetCurrentReading();
int button_mask = (int)GamepadButtons::Menu;
for (int j = 0; j < 14; j++) {
@@ -161,7 +161,7 @@ void JoypadUWP::joypad_vibration_start(int p_device, float p_weak_magnitude, flo
GamepadVibration vibration;
vibration.LeftMotor = p_strong_magnitude;
vibration.RightMotor = p_weak_magnitude;
- ((Gamepad ^) joy.controller_reference)->Vibration = vibration;
+ ((Gamepad ^)joy.controller_reference)->Vibration = vibration;
joy.ff_timestamp = p_timestamp;
joy.ff_end_timestamp = p_duration == 0 ? 0 : p_timestamp + (uint64_t)(p_duration * 1000000.0);
@@ -175,7 +175,7 @@ void JoypadUWP::joypad_vibration_stop(int p_device, uint64_t p_timestamp) {
GamepadVibration vibration;
vibration.LeftMotor = 0.0;
vibration.RightMotor = 0.0;
- ((Gamepad ^) joy.controller_reference)->Vibration = vibration;
+ ((Gamepad ^)joy.controller_reference)->Vibration = vibration;
joy.ff_timestamp = p_timestamp;
joy.vibrating = false;
diff --git a/platform/uwp/joypad_uwp.h b/platform/uwp/joypad_uwp.h
index c55e1e7ab7..4efec485fa 100644
--- a/platform/uwp/joypad_uwp.h
+++ b/platform/uwp/joypad_uwp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp
index fabb227bf5..3a8932aae2 100644
--- a/platform/uwp/os_uwp.cpp
+++ b/platform/uwp/os_uwp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h
index dfa21a0934..5f36396017 100644
--- a/platform/uwp/os_uwp.h
+++ b/platform/uwp/os_uwp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/platform_config.h b/platform/uwp/platform_config.h
index 77d2c9cadb..abe14f7578 100644
--- a/platform/uwp/platform_config.h
+++ b/platform/uwp/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/power_uwp.cpp b/platform/uwp/power_uwp.cpp
index ece07f84ad..07a726647d 100644
--- a/platform/uwp/power_uwp.cpp
+++ b/platform/uwp/power_uwp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/power_uwp.h b/platform/uwp/power_uwp.h
index c23d712980..9a9811a4f5 100644
--- a/platform/uwp/power_uwp.h
+++ b/platform/uwp/power_uwp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/thread_uwp.cpp b/platform/uwp/thread_uwp.cpp
index 0549a8ed47..7c8c2b204a 100644
--- a/platform/uwp/thread_uwp.cpp
+++ b/platform/uwp/thread_uwp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/uwp/thread_uwp.h b/platform/uwp/thread_uwp.h
index b8cccfb7c3..0446bd36ca 100644
--- a/platform/uwp/thread_uwp.h
+++ b/platform/uwp/thread_uwp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/context_gl_win.cpp b/platform/windows/context_gl_win.cpp
index f8aed0ccab..328b987f1f 100644
--- a/platform/windows/context_gl_win.cpp
+++ b/platform/windows/context_gl_win.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/context_gl_win.h b/platform/windows/context_gl_win.h
index b3cab7806d..912d4d0133 100644
--- a/platform/windows/context_gl_win.h
+++ b/platform/windows/context_gl_win.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/ctxgl_procaddr.cpp b/platform/windows/ctxgl_procaddr.cpp
index e01c3fc252..c0c900acca 100644
--- a/platform/windows/ctxgl_procaddr.cpp
+++ b/platform/windows/ctxgl_procaddr.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/ctxgl_procaddr.h b/platform/windows/ctxgl_procaddr.h
index ecef01aadf..61fa6d7fbd 100644
--- a/platform/windows/ctxgl_procaddr.h
+++ b/platform/windows/ctxgl_procaddr.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index 4d93b3f244..d239ccf7d2 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -14,69 +14,56 @@ def get_name():
def can_build():
if (os.name == "nt"):
- # building natively on windows!
- if (os.getenv("VCINSTALLDIR")):
+ # Building natively on Windows
+ if (os.getenv("VCINSTALLDIR")): # MSVC
return True
- else:
- print("\nMSVC not detected, attempting MinGW.")
- mingw32 = ""
- mingw64 = ""
- if (os.getenv("MINGW32_PREFIX")):
- mingw32 = os.getenv("MINGW32_PREFIX")
- if (os.getenv("MINGW64_PREFIX")):
- mingw64 = os.getenv("MINGW64_PREFIX")
-
- test = "gcc --version > NUL 2>&1"
- if os.system(test) != 0 and os.system(mingw32 + test) != 0 and os.system(mingw64 + test) != 0:
- print("- could not detect gcc.")
- print("Please, make sure a path to a MinGW /bin directory is accessible into the environment PATH.\n")
- return False
- else:
- print("- gcc detected.")
+ print("MSVC not detected (no VCINSTALLDIR environment variable), attempting MinGW.")
+ mingw32 = ""
+ mingw64 = ""
+ if (os.getenv("MINGW32_PREFIX")):
+ mingw32 = os.getenv("MINGW32_PREFIX")
+ if (os.getenv("MINGW64_PREFIX")):
+ mingw64 = os.getenv("MINGW64_PREFIX")
+
+ test = "gcc --version > NUL 2>&1"
+ if (os.system(test) == 0 or os.system(mingw32 + test) == 0 or os.system(mingw64 + test) == 0):
return True
if (os.name == "posix"):
-
- mingw = "i586-mingw32msvc-"
- mingw64 = "x86_64-w64-mingw32-"
+ # Cross-compiling with MinGW-w64 (old MinGW32 is not supported)
mingw32 = "i686-w64-mingw32-"
+ mingw64 = "x86_64-w64-mingw32-"
if (os.getenv("MINGW32_PREFIX")):
mingw32 = os.getenv("MINGW32_PREFIX")
- mingw = mingw32
if (os.getenv("MINGW64_PREFIX")):
mingw64 = os.getenv("MINGW64_PREFIX")
test = "gcc --version > /dev/null 2>&1"
- if (os.system(mingw + test) == 0 or os.system(mingw64 + test) == 0 or os.system(mingw32 + test) == 0):
+ if (os.system(mingw64 + test) == 0 or os.system(mingw32 + test) == 0):
return True
+ print("Could not detect MinGW. Ensure its binaries are in your PATH or that MINGW32_PREFIX or MINGW64_PREFIX are properly defined.")
return False
def get_opts():
- mingw = ""
mingw32 = ""
mingw64 = ""
if (os.name == "posix"):
- mingw = "i586-mingw32msvc-"
mingw32 = "i686-w64-mingw32-"
mingw64 = "x86_64-w64-mingw32-"
- if os.system(mingw32 + "gcc --version > /dev/null 2>&1") != 0:
- mingw32 = mingw
-
if (os.getenv("MINGW32_PREFIX")):
mingw32 = os.getenv("MINGW32_PREFIX")
- mingw = mingw32
if (os.getenv("MINGW64_PREFIX")):
mingw64 = os.getenv("MINGW64_PREFIX")
return [
- ('mingw_prefix', 'MinGW Prefix', mingw32),
- ('mingw_prefix_64', 'MinGW Prefix 64 bits', mingw64),
+ ('mingw_prefix_32', 'MinGW prefix (Win32)', mingw32),
+ ('mingw_prefix_64', 'MinGW prefix (Win64)', mingw64),
]
@@ -88,12 +75,10 @@ def get_flags():
def build_res_file(target, source, env):
- cmdbase = ""
if (env["bits"] == "32"):
- cmdbase = env['mingw_prefix']
+ cmdbase = env['mingw_prefix_32']
else:
cmdbase = env['mingw_prefix_64']
- CPPPATH = env['CPPPATH']
cmdbase = cmdbase + 'windres --include-dir . '
import subprocess
for x in range(len(source)):
@@ -111,8 +96,10 @@ def configure(env):
env.Append(CPPPATH=['#platform/windows'])
- # Targeted Windows version: Vista (and later)
- winver = "0x0600" # Windows Vista is the minimum target for windows builds
+ # Targeted Windows version: 7 (and later), minimum supported version
+ # XP support dropped after EOL due to missing API for IPv6 and other issues
+ # Vista support dropped after EOL due to GH-10243
+ winver = "0x0601"
if (os.name == "nt" and os.getenv("VCINSTALLDIR")): # MSVC
@@ -184,6 +171,7 @@ def configure(env):
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
env.Append(CCFLAGS=['/DOPENGL_ENABLED'])
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
+ env.Append(CCFLAGS=['/DWASAPI_ENABLED'])
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
env.Append(CCFLAGS=['/DWIN32'])
env.Append(CCFLAGS=['/DWINVER=%s' % winver, '/D_WIN32_WINNT=%s' % winver])
@@ -247,7 +235,7 @@ def configure(env):
env.Append(LINKFLAGS=['-static'])
env.Append(LINKFLAGS=['-static-libgcc'])
env.Append(LINKFLAGS=['-static-libstdc++'])
- mingw_prefix = env["mingw_prefix"]
+ mingw_prefix = env["mingw_prefix_32"]
else:
env.Append(LINKFLAGS=['-static'])
mingw_prefix = env["mingw_prefix_64"]
@@ -265,8 +253,9 @@ def configure(env):
env.Append(CCFLAGS=['-DWINDOWS_ENABLED', '-mwindows'])
env.Append(CCFLAGS=['-DOPENGL_ENABLED'])
env.Append(CCFLAGS=['-DRTAUDIO_ENABLED'])
+ env.Append(CCFLAGS=['-DWASAPI_ENABLED'])
env.Append(CCFLAGS=['-DWINVER=%s' % winver, '-D_WIN32_WINNT=%s' % winver])
- env.Append(LIBS=['mingw32', 'opengl32', 'dsound', 'ole32', 'd3d9', 'winmm', 'gdi32', 'iphlpapi', 'shlwapi', 'wsock32', 'ws2_32', 'kernel32', 'oleaut32', 'dinput8', 'dxguid'])
+ env.Append(LIBS=['mingw32', 'opengl32', 'dsound', 'ole32', 'd3d9', 'winmm', 'gdi32', 'iphlpapi', 'shlwapi', 'wsock32', 'ws2_32', 'kernel32', 'oleaut32', 'dinput8', 'dxguid', 'ksuser'])
env.Append(CPPFLAGS=['-DMINGW_ENABLED'])
diff --git a/platform/windows/export/export.cpp b/platform/windows/export/export.cpp
index 6cb33e2ff0..5301aa9e95 100644
--- a/platform/windows/export/export.cpp
+++ b/platform/windows/export/export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/export/export.h b/platform/windows/export/export.h
index ea9113c674..cc85339312 100644
--- a/platform/windows/export/export.h
+++ b/platform/windows/export/export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/godot_win.cpp b/platform/windows/godot_win.cpp
index df2d96e516..d2ac6ecb50 100644
--- a/platform/windows/godot_win.cpp
+++ b/platform/windows/godot_win.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -136,8 +136,13 @@ int widechar_main(int argc, wchar_t **argv) {
Error err = Main::setup(argv_utf8[0], argc - 1, &argv_utf8[1]);
- if (err != OK)
+ if (err != OK) {
+ for (int i = 0; i < argc; ++i) {
+ delete[] argv_utf8[i];
+ }
+ delete[] argv_utf8;
return 255;
+ }
if (Main::start())
os.run();
diff --git a/platform/windows/joypad.cpp b/platform/windows/joypad.cpp
index 7263e89c1a..cde72c98c9 100644
--- a/platform/windows/joypad.cpp
+++ b/platform/windows/joypad.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -235,13 +235,13 @@ void JoypadWindows::setup_joypad_object(const DIDEVICEOBJECTINSTANCE *ob, int p_
}
}
-BOOL CALLBACK JoypadWindows::enumCallback(const DIDEVICEINSTANCE *instance, void *pContext) {
+BOOL CALLBACK JoypadWindows::enumCallback(const DIDEVICEINSTANCE *p_instance, void *p_context) {
- JoypadWindows *self = (JoypadWindows *)pContext;
- if (self->is_xinput_device(&instance->guidProduct)) {
+ JoypadWindows *self = (JoypadWindows *)p_context;
+ if (self->is_xinput_device(&p_instance->guidProduct)) {
return DIENUM_CONTINUE;
}
- self->setup_dinput_joypad(instance);
+ self->setup_dinput_joypad(p_instance);
return DIENUM_CONTINUE;
}
diff --git a/platform/windows/joypad.h b/platform/windows/joypad.h
index 7cd791e78f..059c577bb6 100644
--- a/platform/windows/joypad.h
+++ b/platform/windows/joypad.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/key_mapping_win.cpp b/platform/windows/key_mapping_win.cpp
index 83e2af72b2..57f8e965de 100644
--- a/platform/windows/key_mapping_win.cpp
+++ b/platform/windows/key_mapping_win.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/key_mapping_win.h b/platform/windows/key_mapping_win.h
index af91676dff..139f047d17 100644
--- a/platform/windows/key_mapping_win.h
+++ b/platform/windows/key_mapping_win.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/lang_table.h b/platform/windows/lang_table.h
index 7cf2bb391b..d54894afce 100644
--- a/platform/windows/lang_table.h
+++ b/platform/windows/lang_table.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
index f72e5ef595..deb9c25576 100644
--- a/platform/windows/os_windows.cpp
+++ b/platform/windows/os_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -63,12 +63,11 @@ __attribute__((visibility("default"))) DWORD NvOptimusEnablement = 0x00000001;
#endif
}
-#ifndef WM_MOUSEHWHEEL
-#define WM_MOUSEHWHEEL 0x020e
+// Workaround mingw-w64 < 4.0 bug
+#ifndef WM_TOUCH
+#define WM_TOUCH 576
#endif
-//#define STDOUT_FILE
-
extern HINSTANCE godot_hinstance;
void RedirectIOToConsole() {
@@ -717,8 +716,7 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
} break;
case WM_DROPFILES: {
- HDROP hDropInfo = NULL;
- hDropInfo = (HDROP)wParam;
+ HDROP hDropInfo = (HDROP)wParam;
const int buffsize = 4096;
wchar_t buf[buffsize];
@@ -889,23 +887,6 @@ static int QueryDpiForMonitor(HMONITOR hmon, _MonitorDpiType dpiType = MDT_Defau
return (dpiX + dpiY) / 2;
}
-BOOL CALLBACK OS_Windows::MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
- OS_Windows *self = (OS_Windows *)OS::get_singleton();
- MonitorInfo minfo;
- minfo.hMonitor = hMonitor;
- minfo.hdcMonitor = hdcMonitor;
- minfo.rect.position.x = lprcMonitor->left;
- minfo.rect.position.y = lprcMonitor->top;
- minfo.rect.size.x = lprcMonitor->right - lprcMonitor->left;
- minfo.rect.size.y = lprcMonitor->bottom - lprcMonitor->top;
-
- minfo.dpi = QueryDpiForMonitor(hMonitor);
-
- self->monitor_info.push_back(minfo);
-
- return TRUE;
-}
-
void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
main_loop = NULL;
@@ -941,9 +922,6 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
return; // Return
}
- EnumDisplayMonitors(NULL, NULL, MonitorEnumProc, 0);
-
- print_line("DETECTED MONITORS: " + itos(monitor_info.size()));
pre_fs_valid = true;
if (video_mode.fullscreen) {
@@ -1217,8 +1195,6 @@ void OS_Windows::finalize() {
physics_2d_server->finish();
memdelete(physics_2d_server);
-
- monitor_info.clear();
}
void OS_Windows::finalize_core() {
@@ -1344,51 +1320,131 @@ OS::VideoMode OS_Windows::get_video_mode(int p_screen) const {
void OS_Windows::get_fullscreen_mode_list(List<VideoMode> *p_list, int p_screen) const {
}
+static BOOL CALLBACK _MonitorEnumProcCount(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
+
+ int *data = (int *)dwData;
+ (*data)++;
+ return TRUE;
+}
+
int OS_Windows::get_screen_count() const {
- return monitor_info.size();
+ int data = 0;
+ EnumDisplayMonitors(NULL, NULL, _MonitorEnumProcCount, (LPARAM)&data);
+ return data;
}
-int OS_Windows::get_current_screen() const {
- HMONITOR monitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
- for (int i = 0; i < monitor_info.size(); i++) {
- if (monitor_info[i].hMonitor == monitor)
- return i;
+typedef struct {
+ int count;
+ int screen;
+ HMONITOR monitor;
+} EnumScreenData;
+
+static BOOL CALLBACK _MonitorEnumProcScreen(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
+
+ EnumScreenData *data = (EnumScreenData *)dwData;
+ if (data->monitor == hMonitor) {
+ data->screen = data->count;
}
- return 0;
+ data->count++;
+ return TRUE;
}
-void OS_Windows::set_current_screen(int p_screen) {
- ERR_FAIL_INDEX(p_screen, monitor_info.size());
+int OS_Windows::get_current_screen() const {
+
+ EnumScreenData data = { 0, 0, MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST) };
+ EnumDisplayMonitors(NULL, NULL, _MonitorEnumProcScreen, (LPARAM)&data);
+ return data.screen;
+}
+
+void OS_Windows::set_current_screen(int p_screen) {
Vector2 ofs = get_window_position() - get_screen_position(get_current_screen());
set_window_position(ofs + get_screen_position(p_screen));
}
+typedef struct {
+ int count;
+ int screen;
+ Point2 pos;
+} EnumPosData;
+
+static BOOL CALLBACK _MonitorEnumProcPos(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
+
+ EnumPosData *data = (EnumPosData *)dwData;
+ if (data->count == data->screen) {
+ data->pos.x = lprcMonitor->left;
+ data->pos.y = lprcMonitor->top;
+ }
+
+ data->count++;
+ return TRUE;
+}
+
Point2 OS_Windows::get_screen_position(int p_screen) const {
- ERR_FAIL_INDEX_V(p_screen, monitor_info.size(), Point2());
- return Vector2(monitor_info[p_screen].rect.position);
+ EnumPosData data = { 0, p_screen == -1 ? get_current_screen() : p_screen, Point2() };
+ EnumDisplayMonitors(NULL, NULL, _MonitorEnumProcPos, (LPARAM)&data);
+ return data.pos;
+}
+
+typedef struct {
+ int count;
+ int screen;
+ Size2 size;
+} EnumSizeData;
+
+static BOOL CALLBACK _MonitorEnumProcSize(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
+
+ EnumSizeData *data = (EnumSizeData *)dwData;
+ if (data->count == data->screen) {
+ data->size.x = lprcMonitor->right - lprcMonitor->left;
+ data->size.y = lprcMonitor->bottom - lprcMonitor->top;
+ }
+
+ data->count++;
+ return TRUE;
}
+
Size2 OS_Windows::get_screen_size(int p_screen) const {
- ERR_FAIL_INDEX_V(p_screen, monitor_info.size(), Point2());
- return Vector2(monitor_info[p_screen].rect.size);
+ EnumSizeData data = { 0, p_screen == -1 ? get_current_screen() : p_screen, Size2() };
+ EnumDisplayMonitors(NULL, NULL, _MonitorEnumProcSize, (LPARAM)&data);
+ return data.size;
+}
+
+typedef struct {
+ int count;
+ int screen;
+ int dpi;
+} EnumDpiData;
+
+static BOOL CALLBACK _MonitorEnumProcDpi(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
+
+ EnumDpiData *data = (EnumDpiData *)dwData;
+ if (data->count == data->screen) {
+ data->dpi = QueryDpiForMonitor(hMonitor);
+ }
+
+ data->count++;
+ return TRUE;
}
int OS_Windows::get_screen_dpi(int p_screen) const {
- ERR_FAIL_INDEX_V(p_screen, monitor_info.size(), 72);
- UINT dpix, dpiy;
- return monitor_info[p_screen].dpi;
+ EnumDpiData data = { 0, p_screen == -1 ? get_current_screen() : p_screen, 72 };
+ EnumDisplayMonitors(NULL, NULL, _MonitorEnumProcDpi, (LPARAM)&data);
+ return data.dpi;
}
+
Point2 OS_Windows::get_window_position() const {
RECT r;
GetWindowRect(hWnd, &r);
return Point2(r.left, r.top);
}
+
void OS_Windows::set_window_position(const Point2 &p_position) {
if (video_mode.fullscreen) return;
@@ -1571,7 +1627,6 @@ Error OS_Windows::close_dynamic_library(void *p_library_handle) {
}
Error OS_Windows::get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional) {
- char *error;
p_symbol_handle = (void *)GetProcAddress((HMODULE)p_library_handle, p_name.utf8().get_data());
if (!p_symbol_handle) {
if (!p_optional) {
@@ -2304,6 +2359,9 @@ OS_Windows::OS_Windows(HINSTANCE _hInstance) {
#endif
user_proc = NULL;
+#ifdef WASAPI_ENABLED
+ AudioDriverManager::add_driver(&driver_wasapi);
+#endif
#ifdef RTAUDIO_ENABLED
AudioDriverManager::add_driver(&driver_rtaudio);
#endif
diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h
index beaf5d5e35..0c5965bf51 100644
--- a/platform/windows/os_windows.h
+++ b/platform/windows/os_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,6 +32,7 @@
#include "context_gl_win.h"
#include "drivers/rtaudio/audio_driver_rtaudio.h"
+#include "drivers/wasapi/audio_driver_wasapi.h"
#include "os/input.h"
#include "os/os.h"
#include "power_windows.h"
@@ -123,6 +124,9 @@ class OS_Windows : public OS {
PowerWindows *power_manager;
+#ifdef WASAPI_ENABLED
+ AudioDriverWASAPI driver_wasapi;
+#endif
#ifdef RTAUDIO_ENABLED
AudioDriverRtAudio driver_rtaudio;
#endif
@@ -164,22 +168,12 @@ protected:
};
Map<ProcessID, ProcessInfo> *process_map;
- struct MonitorInfo {
- HMONITOR hMonitor;
- HDC hdcMonitor;
- Rect2 rect;
- int dpi;
- };
-
bool pre_fs_valid;
RECT pre_fs_rect;
- Vector<MonitorInfo> monitor_info;
bool maximized;
bool minimized;
bool borderless;
- static BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData);
-
public:
LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
@@ -204,9 +198,9 @@ public:
virtual int get_screen_count() const;
virtual int get_current_screen() const;
virtual void set_current_screen(int p_screen);
- virtual Point2 get_screen_position(int p_screen = 0) const;
- virtual Size2 get_screen_size(int p_screen = 0) const;
- virtual int get_screen_dpi(int p_screen = 0) const;
+ virtual Point2 get_screen_position(int p_screen = -1) const;
+ virtual Size2 get_screen_size(int p_screen = -1) const;
+ virtual int get_screen_dpi(int p_screen = -1) const;
virtual Point2 get_window_position() const;
virtual void set_window_position(const Point2 &p_position);
diff --git a/platform/windows/packet_peer_udp_winsock.cpp b/platform/windows/packet_peer_udp_winsock.cpp
index f3b91c1b56..d414ec891e 100644
--- a/platform/windows/packet_peer_udp_winsock.cpp
+++ b/platform/windows/packet_peer_udp_winsock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -118,7 +118,7 @@ void PacketPeerUDPWinsock::_set_sock_blocking(bool p_blocking) {
};
}
-Error PacketPeerUDPWinsock::listen(int p_port, IP_Address p_bind_address, int p_recv_buffer_size) {
+Error PacketPeerUDPWinsock::listen(int p_port, const IP_Address &p_bind_address, int p_recv_buffer_size) {
ERR_FAIL_COND_V(sockfd != -1, ERR_ALREADY_IN_USE);
ERR_FAIL_COND_V(!p_bind_address.is_valid() && !p_bind_address.is_wildcard(), ERR_INVALID_PARAMETER);
diff --git a/platform/windows/packet_peer_udp_winsock.h b/platform/windows/packet_peer_udp_winsock.h
index ceb6df71aa..8a6951fd6e 100644
--- a/platform/windows/packet_peer_udp_winsock.h
+++ b/platform/windows/packet_peer_udp_winsock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -67,7 +67,7 @@ public:
virtual int get_max_packet_size() const;
- virtual Error listen(int p_port, IP_Address p_bind_address = IP_Address("*"), int p_recv_buffer_size = 65536);
+ virtual Error listen(int p_port, const IP_Address &p_bind_address = IP_Address("*"), int p_recv_buffer_size = 65536);
virtual void close();
virtual Error wait();
virtual bool is_listening() const;
diff --git a/platform/windows/platform_config.h b/platform/windows/platform_config.h
index a0fc65ca89..832504b9c5 100644
--- a/platform/windows/platform_config.h
+++ b/platform/windows/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/power_windows.cpp b/platform/windows/power_windows.cpp
index 428bc5dcc2..b37e189a3a 100644
--- a/platform/windows/power_windows.cpp
+++ b/platform/windows/power_windows.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/power_windows.h b/platform/windows/power_windows.h
index 164f1d7d95..9da9841f48 100644
--- a/platform/windows/power_windows.h
+++ b/platform/windows/power_windows.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/stream_peer_winsock.cpp b/platform/windows/stream_peer_winsock.cpp
index 18c5a40b80..a9d9cb9373 100644
--- a/platform/windows/stream_peer_winsock.cpp
+++ b/platform/windows/stream_peer_winsock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/stream_peer_winsock.h b/platform/windows/stream_peer_winsock.h
index aa60a6500b..26e2a3e4c9 100644
--- a/platform/windows/stream_peer_winsock.h
+++ b/platform/windows/stream_peer_winsock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/windows/tcp_server_winsock.cpp b/platform/windows/tcp_server_winsock.cpp
index 3292813d4e..de300befa7 100644
--- a/platform/windows/tcp_server_winsock.cpp
+++ b/platform/windows/tcp_server_winsock.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -63,7 +63,7 @@ void TCPServerWinsock::cleanup() {
};
};
-Error TCPServerWinsock::listen(uint16_t p_port, const IP_Address p_bind_address) {
+Error TCPServerWinsock::listen(uint16_t p_port, const IP_Address &p_bind_address) {
ERR_FAIL_COND_V(listen_sockfd != -1, ERR_ALREADY_IN_USE);
ERR_FAIL_COND_V(!p_bind_address.is_valid() && !p_bind_address.is_wildcard(), ERR_INVALID_PARAMETER);
diff --git a/platform/windows/tcp_server_winsock.h b/platform/windows/tcp_server_winsock.h
index 7e5d1e750e..a3e01098ed 100644
--- a/platform/windows/tcp_server_winsock.h
+++ b/platform/windows/tcp_server_winsock.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,7 +40,7 @@ class TCPServerWinsock : public TCP_Server {
static TCP_Server *_create();
public:
- virtual Error listen(uint16_t p_port, const IP_Address p_bind_address = IP_Address("*"));
+ virtual Error listen(uint16_t p_port, const IP_Address &p_bind_address = IP_Address("*"));
virtual bool is_connection_available() const;
virtual Ref<StreamPeerTCP> take_connection();
diff --git a/platform/x11/context_gl_x11.cpp b/platform/x11/context_gl_x11.cpp
index ddf17481b1..0cc9734119 100644
--- a/platform/x11/context_gl_x11.cpp
+++ b/platform/x11/context_gl_x11.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -83,13 +83,24 @@ static int ctxErrorHandler(Display *dpy, XErrorEvent *ev) {
return 0;
}
-Error ContextGL_X11::initialize() {
+static void set_class_hint(Display *p_display, Window p_window) {
+ XClassHint *classHint;
- GLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = NULL;
+ /* set the name and class hints for the window manager to use */
+ classHint = XAllocClassHint();
+ if (classHint) {
+ classHint->res_name = (char *)"Godot_Engine";
+ classHint->res_class = (char *)"Godot";
+ }
+ XSetClassHint(p_display, p_window, classHint);
+ XFree(classHint);
+}
+
+Error ContextGL_X11::initialize() {
//const char *extensions = glXQueryExtensionsString(x11_display, DefaultScreen(x11_display));
- glXCreateContextAttribsARB = (GLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress((const GLubyte *)"glXCreateContextAttribsARB");
+ GLXCREATECONTEXTATTRIBSARBPROC glXCreateContextAttribsARB = (GLXCREATECONTEXTATTRIBSARBPROC)glXGetProcAddress((const GLubyte *)"glXCreateContextAttribsARB");
ERR_FAIL_COND_V(!glXCreateContextAttribsARB, ERR_UNCONFIGURED);
@@ -127,6 +138,7 @@ Error ContextGL_X11::initialize() {
*/
x11_window = XCreateWindow(x11_display, RootWindow(x11_display, vi->screen), 0, 0, OS::get_singleton()->get_video_mode().width, OS::get_singleton()->get_video_mode().height, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel | CWColormap | CWEventMask, &swa);
ERR_FAIL_COND_V(!x11_window, ERR_UNCONFIGURED);
+ set_class_hint(x11_display, x11_window);
XMapWindow(x11_display, x11_window);
//};
diff --git a/platform/x11/context_gl_x11.h b/platform/x11/context_gl_x11.h
index acb3f38894..ba01b51d59 100644
--- a/platform/x11/context_gl_x11.h
+++ b/platform/x11/context_gl_x11.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/x11/detect.py b/platform/x11/detect.py
index 79778136ad..f355de0eb3 100644
--- a/platform/x11/detect.py
+++ b/platform/x11/detect.py
@@ -74,7 +74,9 @@ def configure(env):
## Build type
if (env["target"] == "release"):
- env.Prepend(CCFLAGS=['-Ofast'])
+ # -O3 -ffast-math is identical to -Ofast. We need to split it out so we can selectively disable
+ # -ffast-math in code for which it generates wrong results.
+ env.Prepend(CCFLAGS=['-O3', '-ffast-math'])
if (env["debug_release"] == "yes"):
env.Prepend(CCFLAGS=['-g2'])
diff --git a/platform/x11/export/export.cpp b/platform/x11/export/export.cpp
index c8d6220aed..59b1a44247 100644
--- a/platform/x11/export/export.cpp
+++ b/platform/x11/export/export.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "export.h"
+
#include "editor/editor_export.h"
#include "platform/x11/logo.gen.h"
#include "scene/resources/texture.h"
@@ -51,23 +52,4 @@ void register_x11_exporter() {
platform->set_os_name("X11");
EditorExport::get_singleton()->add_export_platform(platform);
-
-#if 0
- Image img(_x11_logo);
- Ref<ImageTexture> logo = memnew( ImageTexture );
- logo->create_from_image(img);
-
- {
- Ref<EditorExportPlatformPC> exporter = Ref<EditorExportPlatformPC>( memnew(EditorExportPlatformPC) );
- exporter->set_binary_extension("");
- exporter->set_release_binary32("linux_x11_32_release");
- exporter->set_debug_binary32("linux_x11_32_debug");
- exporter->set_release_binary64("linux_x11_64_release");
- exporter->set_debug_binary64("linux_x11_64_debug");
- exporter->set_name("Linux X11");
- exporter->set_logo(logo);
- EditorImportExport::get_singleton()->add_export_platform(exporter);
- }
-
-#endif
}
diff --git a/platform/x11/export/export.h b/platform/x11/export/export.h
index 755b73d2c9..b70633266f 100644
--- a/platform/x11/export/export.h
+++ b/platform/x11/export/export.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/x11/godot_x11.cpp b/platform/x11/godot_x11.cpp
index 6f418b213f..2e43613e5d 100644
--- a/platform/x11/godot_x11.cpp
+++ b/platform/x11/godot_x11.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -45,8 +45,10 @@ int main(int argc, char *argv[]) {
getcwd(cwd, PATH_MAX);
Error err = Main::setup(argv[0], argc - 1, &argv[1]);
- if (err != OK)
+ if (err != OK) {
+ free(cwd);
return 255;
+ }
if (Main::start())
os.run(); // it is actually the OS that decides how to run
diff --git a/platform/x11/joypad_linux.cpp b/platform/x11/joypad_linux.cpp
index 2502b2d51f..3453297716 100644
--- a/platform/x11/joypad_linux.cpp
+++ b/platform/x11/joypad_linux.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/x11/joypad_linux.h b/platform/x11/joypad_linux.h
index a0ac559b1c..b34d98b77a 100644
--- a/platform/x11/joypad_linux.h
+++ b/platform/x11/joypad_linux.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -80,22 +80,22 @@ private:
static void joy_thread_func(void *p_user);
- int get_joy_from_path(String path) const;
+ int get_joy_from_path(String p_path) const;
void setup_joypad_properties(int p_id);
void close_joypad(int p_id = -1);
#ifdef UDEV_ENABLED
- void enumerate_joypads(struct udev *_udev);
- void monitor_joypads(struct udev *_udev);
+ void enumerate_joypads(struct udev *p_udev);
+ void monitor_joypads(struct udev *p_udev);
#endif
void monitor_joypads();
void run_joypad_thread();
- void open_joypad(const char *path);
+ void open_joypad(const char *p_path);
void joypad_vibration_start(int p_id, float p_weak_magnitude, float p_strong_magnitude, float p_duration, uint64_t p_timestamp);
void joypad_vibration_stop(int p_id, uint64_t p_timestamp);
- InputDefault::JoyAxis axis_correct(const input_absinfo *abs, int value) const;
+ InputDefault::JoyAxis axis_correct(const input_absinfo *p_abs, int p_value) const;
};
#endif
diff --git a/platform/x11/key_mapping_x11.cpp b/platform/x11/key_mapping_x11.cpp
index 32a9806b22..95ac2fe6b6 100644
--- a/platform/x11/key_mapping_x11.cpp
+++ b/platform/x11/key_mapping_x11.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/x11/key_mapping_x11.h b/platform/x11/key_mapping_x11.h
index 41060c9303..7b11cb5ccc 100644
--- a/platform/x11/key_mapping_x11.h
+++ b/platform/x11/key_mapping_x11.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp
index ade3a0a0c5..2d33d25773 100644
--- a/platform/x11/os_x11.cpp
+++ b/platform/x11/os_x11.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -116,24 +116,22 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
/** XLIB INITIALIZATION **/
x11_display = XOpenDisplay(NULL);
+ char *modifiers = NULL;
Bool xkb_dar = False;
if (x11_display) {
XAutoRepeatOn(x11_display);
xkb_dar = XkbSetDetectableAutoRepeat(x11_display, True, NULL);
- }
-
- char *modifiers = NULL;
- // Try to support IME if detectable auto-repeat is supported
-
- if (xkb_dar == True) {
+ // Try to support IME if detectable auto-repeat is supported
+ if (xkb_dar == True) {
// Xutf8LookupString will be used later instead of XmbLookupString before
// the multibyte sequences can be converted to unicode string.
#ifdef X_HAVE_UTF8_STRING
- modifiers = XSetLocaleModifiers("");
+ modifiers = XSetLocaleModifiers("");
#endif
+ }
}
if (modifiers == NULL) {
@@ -141,8 +139,6 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
WARN_PRINT("IME is disabled");
}
modifiers = XSetLocaleModifiers("@im=none");
- }
- if (modifiers == NULL) {
WARN_PRINT("Error setting locale modifiers");
}
@@ -191,8 +187,7 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
::XIMStyles *xim_styles = NULL;
xim_style = 0L;
- char *imvalret = NULL;
- imvalret = XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL);
+ char *imvalret = XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL);
if (imvalret != NULL || xim_styles == NULL) {
fprintf(stderr, "Input method doesn't support any styles\n");
}
@@ -351,20 +346,9 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
XChangeWindowAttributes(x11_display, x11_window, CWEventMask, &new_attr);
- XClassHint *classHint;
-
/* set the titlebar name */
XStoreName(x11_display, x11_window, "Godot");
- /* set the name and class hints for the window manager to use */
- classHint = XAllocClassHint();
- if (classHint) {
- classHint->res_name = (char *)"Godot_Engine";
- classHint->res_class = (char *)"Godot";
- }
- XSetClassHint(x11_display, x11_window, classHint);
- XFree(classHint);
-
wm_delete = XInternAtom(x11_display, "WM_DELETE_WINDOW", true);
XSetWMProtocols(x11_display, x11_window, &wm_delete, 1);
@@ -550,6 +534,8 @@ void OS_X11::finalize() {
physics_2d_server->finish();
memdelete(physics_2d_server);
+ memdelete(power_manager);
+
if (xrandr_handle)
dlclose(xrandr_handle);
@@ -773,6 +759,10 @@ void OS_X11::set_current_screen(int p_screen) {
}
Point2 OS_X11::get_screen_position(int p_screen) const {
+ if (p_screen == -1) {
+ p_screen = get_current_screen();
+ }
+
// Using Xinerama Extension
int event_base, error_base;
const Bool ext_okay = XineramaQueryExtension(x11_display, &event_base, &error_base);
@@ -794,6 +784,10 @@ Point2 OS_X11::get_screen_position(int p_screen) const {
}
Size2 OS_X11::get_screen_size(int p_screen) const {
+ if (p_screen == -1) {
+ p_screen = get_current_screen();
+ }
+
// Using Xinerama Extension
int event_base, error_base;
const Bool ext_okay = XineramaQueryExtension(x11_display, &event_base, &error_base);
@@ -809,6 +803,9 @@ Size2 OS_X11::get_screen_size(int p_screen) const {
}
int OS_X11::get_screen_dpi(int p_screen) const {
+ if (p_screen == -1) {
+ p_screen = get_current_screen();
+ }
//invalid screen?
ERR_FAIL_INDEX_V(p_screen, get_screen_count(), 0);
@@ -1604,8 +1601,7 @@ void OS_X11::process_xevents() {
Point2i pos(event.xmotion.x, event.xmotion.y);
if (mouse_mode == MOUSE_MODE_CAPTURED) {
-#if 1
- //Vector2 c = Point2i(current_videomode.width/2,current_videomode.height/2);
+
if (pos == Point2i(current_videomode.width / 2, current_videomode.height / 2)) {
//this sucks, it's a hack, etc and is a little inaccurate, etc.
//but nothing I can do, X11 sucks.
@@ -1618,17 +1614,6 @@ void OS_X11::process_xevents() {
pos = last_mouse_pos + (pos - center);
center = new_center;
do_mouse_warp = window_has_focus; // warp the cursor if we're focused in
-#else
- //Dear X11, thanks for making my life miserable
-
- center.x = current_videomode.width / 2;
- center.y = current_videomode.height / 2;
- pos = last_mouse_pos + (pos - center);
- if (pos == last_mouse_pos)
- break;
- XWarpPointer(x11_display, None, x11_window,
- 0, 0, 0, 0, (int)center.x, (int)center.y);
-#endif
}
if (!last_mouse_pos_valid) {
@@ -2151,8 +2136,7 @@ bool OS_X11::is_vsync_enabled() const {
void OS_X11::set_context(int p_context) {
- XClassHint *classHint = NULL;
- classHint = XAllocClassHint();
+ XClassHint *classHint = XAllocClassHint();
if (classHint) {
if (p_context == CONTEXT_EDITOR)
diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h
index db70f8f84a..51240fa023 100644
--- a/platform/x11/os_x11.h
+++ b/platform/x11/os_x11.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -233,9 +233,9 @@ public:
virtual int get_screen_count() const;
virtual int get_current_screen() const;
virtual void set_current_screen(int p_screen);
- virtual Point2 get_screen_position(int p_screen = 0) const;
- virtual Size2 get_screen_size(int p_screen = 0) const;
- virtual int get_screen_dpi(int p_screen = 0) const;
+ virtual Point2 get_screen_position(int p_screen = -1) const;
+ virtual Size2 get_screen_size(int p_screen = -1) const;
+ virtual int get_screen_dpi(int p_screen = -1) const;
virtual Point2 get_window_position() const;
virtual void set_window_position(const Point2 &p_position);
virtual Size2 get_window_size() const;
diff --git a/platform/x11/platform_config.h b/platform/x11/platform_config.h
index 1a1de42b47..85af12372f 100644
--- a/platform/x11/platform_config.h
+++ b/platform/x11/platform_config.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/platform/x11/power_x11.cpp b/platform/x11/power_x11.cpp
index 8e69a2223f..32100354a6 100644
--- a/platform/x11/power_x11.cpp
+++ b/platform/x11/power_x11.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -58,6 +58,7 @@ Adapted from corresponding SDL 2.0 code.
#include <stdio.h>
#include <unistd.h>
+#include "core/error_macros.h"
#include <dirent.h>
#include <fcntl.h>
#include <sys/stat.h>
@@ -254,9 +255,9 @@ bool PowerX11::GetPowerInfo_Linux_proc_acpi() {
this->power_state = POWERSTATE_UNKNOWN;
dirp->change_dir(proc_acpi_battery_path);
- dirp->list_dir_begin();
+ Error err = dirp->list_dir_begin();
- if (dirp == NULL) {
+ if (err != OK) {
return false; /* can't use this interface. */
} else {
node = dirp->get_next();
@@ -268,8 +269,8 @@ bool PowerX11::GetPowerInfo_Linux_proc_acpi() {
}
dirp->change_dir(proc_acpi_ac_adapter_path);
- dirp->list_dir_begin();
- if (dirp == NULL) {
+ err = dirp->list_dir_begin();
+ if (err != OK) {
return false; /* can't use this interface. */
} else {
node = dirp->get_next();
@@ -438,9 +439,9 @@ bool PowerX11::GetPowerInfo_Linux_sys_class_power_supply(/*PowerState *state, in
DirAccess *dirp = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
dirp->change_dir(base);
- dirp->list_dir_begin();
+ Error err = dirp->list_dir_begin();
- if (!dirp) {
+ if (err != OK) {
return false;
}
diff --git a/platform/x11/power_x11.h b/platform/x11/power_x11.h
index 64ed5fe26a..e34223036d 100644
--- a/platform/x11/power_x11.h
+++ b/platform/x11/power_x11.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/animated_sprite.cpp b/scene/2d/animated_sprite.cpp
index 366c3a8bd8..26241df660 100644
--- a/scene/2d/animated_sprite.cpp
+++ b/scene/2d/animated_sprite.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/animated_sprite.h b/scene/2d/animated_sprite.h
index 80defac079..6c660d0381 100644
--- a/scene/2d/animated_sprite.h
+++ b/scene/2d/animated_sprite.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp
index 02a0509449..1124904963 100644
--- a/scene/2d/area_2d.cpp
+++ b/scene/2d/area_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -116,7 +116,7 @@ real_t Area2D::get_priority() const {
void Area2D::_body_enter_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = body_map.find(p_id);
@@ -134,7 +134,7 @@ void Area2D::_body_enter_tree(ObjectID p_id) {
void Area2D::_body_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = body_map.find(p_id);
ERR_FAIL_COND(!E);
@@ -153,7 +153,7 @@ void Area2D::_body_inout(int p_status, const RID &p_body, int p_instance, int p_
ObjectID objid = p_instance;
Object *obj = ObjectDB::get_instance(objid);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
Map<ObjectID, BodyState>::Element *E = body_map.find(objid);
@@ -217,7 +217,7 @@ void Area2D::_body_inout(int p_status, const RID &p_body, int p_instance, int p_
void Area2D::_area_enter_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, AreaState>::Element *E = area_map.find(p_id);
@@ -235,7 +235,7 @@ void Area2D::_area_enter_tree(ObjectID p_id) {
void Area2D::_area_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, AreaState>::Element *E = area_map.find(p_id);
ERR_FAIL_COND(!E);
@@ -254,7 +254,7 @@ void Area2D::_area_inout(int p_status, const RID &p_area, int p_instance, int p_
ObjectID objid = p_instance;
Object *obj = ObjectDB::get_instance(objid);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
Map<ObjectID, AreaState>::Element *E = area_map.find(objid);
@@ -330,7 +330,7 @@ void Area2D::_clear_monitoring() {
for (Map<ObjectID, BodyState>::Element *E = bmcopy.front(); E; E = E->next()) {
Object *obj = ObjectDB::get_instance(E->key());
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
if (!node) //node may have been deleted in previous frame or at other legiminate point
continue;
@@ -360,7 +360,7 @@ void Area2D::_clear_monitoring() {
for (Map<ObjectID, AreaState>::Element *E = bmcopy.front(); E; E = E->next()) {
Object *obj = ObjectDB::get_instance(E->key());
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
if (!node) //node may have been deleted in previous frame or at other legiminate point
continue;
diff --git a/scene/2d/area_2d.h b/scene/2d/area_2d.h
index 12d71f3911..c56cf651a1 100644
--- a/scene/2d/area_2d.h
+++ b/scene/2d/area_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp
index 1423a804ff..eb186a8e1f 100644
--- a/scene/2d/audio_stream_player_2d.cpp
+++ b/scene/2d/audio_stream_player_2d.cpp
@@ -1,7 +1,10 @@
#include "audio_stream_player_2d.h"
+
+#include "engine.h"
#include "scene/2d/area_2d.h"
#include "scene/main/viewport.h"
+
void AudioStreamPlayer2D::_mix_audio() {
if (!stream_playback.is_valid()) {
@@ -120,7 +123,7 @@ void AudioStreamPlayer2D::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
AudioServer::get_singleton()->add_callback(_mix_audios, this);
- if (autoplay && !get_tree()->is_editor_hint()) {
+ if (autoplay && !Engine::get_singleton()->is_editor_hint()) {
play();
}
}
@@ -154,10 +157,8 @@ void AudioStreamPlayer2D::_notification(int p_what) {
int areas = space_state->intersect_point(global_pos, sr, MAX_INTERSECT_AREAS, Set<RID>(), area_mask, Physics2DDirectSpaceState::TYPE_MASK_AREA);
for (int i = 0; i < areas; i++) {
- if (!sr[i].collider)
- continue;
- Area2D *area2d = sr[i].collider->cast_to<Area2D>();
+ Area2D *area2d = Object::cast_to<Area2D>(sr[i].collider);
if (!area2d)
continue;
@@ -223,6 +224,7 @@ void AudioStreamPlayer2D::_notification(int p_what) {
if (!active) {
set_fixed_process_internal(false);
_change_notify("playing"); //update property in editor
+ emit_signal("finished");
}
}
}
@@ -441,6 +443,9 @@ void AudioStreamPlayer2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "attenuation", PROPERTY_HINT_EXP_EASING), "set_attenuation", "get_attenuation");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
ADD_PROPERTY(PropertyInfo(Variant::INT, "area_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_area_mask", "get_area_mask");
+
+ ADD_SIGNAL(MethodInfo("finished"));
+
}
AudioStreamPlayer2D::AudioStreamPlayer2D() {
diff --git a/scene/2d/back_buffer_copy.cpp b/scene/2d/back_buffer_copy.cpp
index 748a527ca0..2858ddaad5 100644
--- a/scene/2d/back_buffer_copy.cpp
+++ b/scene/2d/back_buffer_copy.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -85,9 +85,9 @@ void BackBufferCopy::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "copy_mode", PROPERTY_HINT_ENUM, "Disabled,Rect,Viewport"), "set_copy_mode", "get_copy_mode");
ADD_PROPERTY(PropertyInfo(Variant::RECT2, "rect"), "set_rect", "get_rect");
- BIND_CONSTANT(COPY_MODE_DISABLED);
- BIND_CONSTANT(COPY_MODE_RECT);
- BIND_CONSTANT(COPY_MODE_VIEWPORT);
+ BIND_ENUM_CONSTANT(COPY_MODE_DISABLED);
+ BIND_ENUM_CONSTANT(COPY_MODE_RECT);
+ BIND_ENUM_CONSTANT(COPY_MODE_VIEWPORT);
}
BackBufferCopy::BackBufferCopy() {
diff --git a/scene/2d/back_buffer_copy.h b/scene/2d/back_buffer_copy.h
index 4080f50696..2424dd7b19 100644
--- a/scene/2d/back_buffer_copy.h
+++ b/scene/2d/back_buffer_copy.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp
index b11c1dd642..e39e6fc6da 100644
--- a/scene/2d/camera_2d.cpp
+++ b/scene/2d/camera_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,7 +38,7 @@ void Camera2D::_update_scroll() {
if (!is_inside_tree())
return;
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
update(); //will just be drawn
return;
}
@@ -85,7 +85,7 @@ Transform2D Camera2D::get_camera_transform() {
if (anchor_mode == ANCHOR_MODE_DRAG_CENTER) {
- if (h_drag_enabled && !get_tree()->is_editor_hint()) {
+ if (h_drag_enabled && !Engine::get_singleton()->is_editor_hint()) {
camera_pos.x = MIN(camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT]));
camera_pos.x = MAX(camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_LEFT]));
} else {
@@ -97,7 +97,7 @@ Transform2D Camera2D::get_camera_transform() {
}
}
- if (v_drag_enabled && !get_tree()->is_editor_hint()) {
+ if (v_drag_enabled && !Engine::get_singleton()->is_editor_hint()) {
camera_pos.y = MIN(camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM]));
camera_pos.y = MAX(camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_TOP]));
@@ -136,7 +136,7 @@ Transform2D Camera2D::get_camera_transform() {
camera_pos.y -= screen_rect.position.y - limit[MARGIN_TOP];
}
- if (smoothing_enabled && !get_tree()->is_editor_hint()) {
+ if (smoothing_enabled && !Engine::get_singleton()->is_editor_hint()) {
float c = smoothing * get_fixed_process_delta_time();
smoothed_camera_pos = ((camera_pos - smoothed_camera_pos) * c) + smoothed_camera_pos;
@@ -240,7 +240,7 @@ void Camera2D::_notification(int p_what) {
add_to_group(group_name);
add_to_group(canvas_group_name);
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
set_fixed_process(false);
}
@@ -262,7 +262,7 @@ void Camera2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
- if (!is_inside_tree() || !get_tree()->is_editor_hint())
+ if (!is_inside_tree() || !Engine::get_singleton()->is_editor_hint())
break;
if (screen_drawing_enabled) {
@@ -497,7 +497,7 @@ void Camera2D::align() {
void Camera2D::set_follow_smoothing(float p_speed) {
smoothing = p_speed;
- if (smoothing > 0 && !(is_inside_tree() && get_tree()->is_editor_hint()))
+ if (smoothing > 0 && !(is_inside_tree() && Engine::get_singleton()->is_editor_hint()))
set_fixed_process(true);
else
set_fixed_process(false);
@@ -552,11 +552,11 @@ float Camera2D::get_h_offset() const {
return h_ofs;
}
-void Camera2D::_set_old_smoothing(float p_val) {
+void Camera2D::_set_old_smoothing(float p_enable) {
//compatibility
- if (p_val > 0) {
+ if (p_enable > 0) {
smoothing_enabled = true;
- set_follow_smoothing(p_val);
+ set_follow_smoothing(p_enable);
}
}
@@ -577,7 +577,7 @@ void Camera2D::set_custom_viewport(Node *p_viewport) {
remove_from_group(canvas_group_name);
}
- custom_viewport = p_viewport->cast_to<Viewport>();
+ custom_viewport = Object::cast_to<Viewport>(p_viewport);
if (custom_viewport) {
custom_viewport_id = custom_viewport->get_instance_id();
@@ -735,8 +735,8 @@ void Camera2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_draw_limits"), "set_limit_drawing_enabled", "is_limit_drawing_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_draw_drag_margin"), "set_margin_drawing_enabled", "is_margin_drawing_enabled");
- BIND_CONSTANT(ANCHOR_MODE_DRAG_CENTER);
- BIND_CONSTANT(ANCHOR_MODE_FIXED_TOP_LEFT);
+ BIND_ENUM_CONSTANT(ANCHOR_MODE_DRAG_CENTER);
+ BIND_ENUM_CONSTANT(ANCHOR_MODE_FIXED_TOP_LEFT);
}
Camera2D::Camera2D() {
diff --git a/scene/2d/camera_2d.h b/scene/2d/camera_2d.h
index 8d9e76be85..dfcadf65a6 100644
--- a/scene/2d/camera_2d.h
+++ b/scene/2d/camera_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp
index 3d0b5047ae..4f00966e75 100644
--- a/scene/2d/canvas_item.cpp
+++ b/scene/2d/canvas_item.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -188,14 +188,15 @@ void CanvasItemMaterial::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "blend_mode", PROPERTY_HINT_ENUM, "Mix,Add,Sub,Mul,Premult Alpha"), "set_blend_mode", "get_blend_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "light_mode", PROPERTY_HINT_ENUM, "Normal,Unshaded,Light Only"), "set_light_mode", "get_light_mode");
- BIND_CONSTANT(BLEND_MODE_MIX);
- BIND_CONSTANT(BLEND_MODE_ADD);
- BIND_CONSTANT(BLEND_MODE_SUB);
- BIND_CONSTANT(BLEND_MODE_MUL);
- BIND_CONSTANT(BLEND_MODE_PREMULT_ALPHA);
- BIND_CONSTANT(LIGHT_MODE_NORMAL);
- BIND_CONSTANT(LIGHT_MODE_UNSHADED);
- BIND_CONSTANT(LIGHT_MODE_LIGHT_ONLY);
+ BIND_ENUM_CONSTANT(BLEND_MODE_MIX);
+ BIND_ENUM_CONSTANT(BLEND_MODE_ADD);
+ BIND_ENUM_CONSTANT(BLEND_MODE_SUB);
+ BIND_ENUM_CONSTANT(BLEND_MODE_MUL);
+ BIND_ENUM_CONSTANT(BLEND_MODE_PREMULT_ALPHA);
+
+ BIND_ENUM_CONSTANT(LIGHT_MODE_NORMAL);
+ BIND_ENUM_CONSTANT(LIGHT_MODE_UNSHADED);
+ BIND_ENUM_CONSTANT(LIGHT_MODE_LIGHT_ONLY);
}
CanvasItemMaterial::CanvasItemMaterial()
@@ -259,7 +260,7 @@ void CanvasItem::_propagate_visibility_changed(bool p_visible) {
for (int i = 0; i < get_child_count(); i++) {
- CanvasItem *c = get_child(i)->cast_to<CanvasItem>();
+ CanvasItem *c = Object::cast_to<CanvasItem>(get_child(i));
if (c && c->visible) //should the toplevels stop propagation? i think so but..
c->_propagate_visibility_changed(p_visible);
@@ -397,7 +398,7 @@ void CanvasItem::_toplevel_raise_self() {
void CanvasItem::_enter_canvas() {
- if ((!get_parent() || !get_parent()->cast_to<CanvasItem>()) || toplevel) {
+ if ((!Object::cast_to<CanvasItem>(get_parent())) || toplevel) {
Node *n = this;
@@ -405,7 +406,7 @@ void CanvasItem::_enter_canvas() {
while (n) {
- canvas_layer = n->cast_to<CanvasLayer>();
+ canvas_layer = Object::cast_to<CanvasLayer>(n);
if (canvas_layer) {
break;
}
@@ -459,7 +460,7 @@ void CanvasItem::_notification(int p_what) {
first_draw = true;
if (get_parent()) {
- CanvasItem *ci = get_parent()->cast_to<CanvasItem>();
+ CanvasItem *ci = Object::cast_to<CanvasItem>(get_parent());
if (ci)
C = ci->children_items.push_back(this);
}
@@ -487,7 +488,7 @@ void CanvasItem::_notification(int p_what) {
get_tree()->xform_change_list.remove(&xform_change);
_exit_canvas();
if (C) {
- get_parent()->cast_to<CanvasItem>()->children_items.erase(C);
+ Object::cast_to<CanvasItem>(get_parent())->children_items.erase(C);
C = NULL;
}
global_invalid = true;
@@ -564,11 +565,7 @@ CanvasItem *CanvasItem::get_parent_item() const {
if (toplevel)
return NULL;
- Node *parent = get_parent();
- if (!parent)
- return NULL;
-
- return parent->cast_to<CanvasItem>();
+ return Object::cast_to<CanvasItem>(get_parent());
}
void CanvasItem::set_self_modulate(const Color &p_self_modulate) {
@@ -734,7 +731,7 @@ void CanvasItem::draw_set_transform_matrix(const Transform2D &p_matrix) {
VisualServer::get_singleton()->canvas_item_add_set_transform(canvas_item, p_matrix);
}
-void CanvasItem::draw_polygon(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, Ref<Texture> p_texture, const Ref<Texture> &p_normal_map) {
+void CanvasItem::draw_polygon(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, Ref<Texture> p_texture, const Ref<Texture> &p_normal_map, bool p_antialiased) {
if (!drawing) {
ERR_EXPLAIN("Drawing is only allowed inside NOTIFICATION_DRAW, _draw() function or 'draw' signal.");
@@ -744,10 +741,10 @@ void CanvasItem::draw_polygon(const Vector<Point2> &p_points, const Vector<Color
RID rid = p_texture.is_valid() ? p_texture->get_rid() : RID();
RID rid_normal = p_normal_map.is_valid() ? p_normal_map->get_rid() : RID();
- VisualServer::get_singleton()->canvas_item_add_polygon(canvas_item, p_points, p_colors, p_uvs, rid, rid_normal);
+ VisualServer::get_singleton()->canvas_item_add_polygon(canvas_item, p_points, p_colors, p_uvs, rid, rid_normal, p_antialiased);
}
-void CanvasItem::draw_colored_polygon(const Vector<Point2> &p_points, const Color &p_color, const Vector<Point2> &p_uvs, Ref<Texture> p_texture, const Ref<Texture> &p_normal_map) {
+void CanvasItem::draw_colored_polygon(const Vector<Point2> &p_points, const Color &p_color, const Vector<Point2> &p_uvs, Ref<Texture> p_texture, const Ref<Texture> &p_normal_map, bool p_antialiased) {
if (!drawing) {
ERR_EXPLAIN("Drawing is only allowed inside NOTIFICATION_DRAW, _draw() function or 'draw' signal.");
@@ -759,7 +756,7 @@ void CanvasItem::draw_colored_polygon(const Vector<Point2> &p_points, const Colo
RID rid = p_texture.is_valid() ? p_texture->get_rid() : RID();
RID rid_normal = p_normal_map.is_valid() ? p_normal_map->get_rid() : RID();
- VisualServer::get_singleton()->canvas_item_add_polygon(canvas_item, p_points, colors, p_uvs, rid, rid_normal);
+ VisualServer::get_singleton()->canvas_item_add_polygon(canvas_item, p_points, colors, p_uvs, rid, rid_normal, p_antialiased);
}
void CanvasItem::draw_string(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, const Color &p_modulate, int p_clip_w) {
@@ -829,8 +826,8 @@ RID CanvasItem::get_canvas() const {
CanvasItem *CanvasItem::get_toplevel() const {
CanvasItem *ci = const_cast<CanvasItem *>(this);
- while (!ci->toplevel && ci->get_parent() && ci->get_parent()->cast_to<CanvasItem>()) {
- ci = ci->get_parent()->cast_to<CanvasItem>();
+ while (!ci->toplevel && Object::cast_to<CanvasItem>(ci->get_parent())) {
+ ci = Object::cast_to<CanvasItem>(ci->get_parent());
}
return ci;
@@ -985,8 +982,8 @@ void CanvasItem::_bind_methods() {
ClassDB::bind_method(D_METHOD("draw_texture_rect_region", "texture", "rect", "src_rect", "modulate", "transpose", "normal_map", "clip_uv"), &CanvasItem::draw_texture_rect_region, DEFVAL(Color(1, 1, 1)), DEFVAL(false), DEFVAL(Variant()), DEFVAL(true));
ClassDB::bind_method(D_METHOD("draw_style_box", "style_box", "rect"), &CanvasItem::draw_style_box);
ClassDB::bind_method(D_METHOD("draw_primitive", "points", "colors", "uvs", "texture", "width", "normal_map"), &CanvasItem::draw_primitive, DEFVAL(Variant()), DEFVAL(1.0), DEFVAL(Variant()));
- ClassDB::bind_method(D_METHOD("draw_polygon", "points", "colors", "uvs", "texture", "normal_map"), &CanvasItem::draw_polygon, DEFVAL(PoolVector2Array()), DEFVAL(Variant()), DEFVAL(Variant()));
- ClassDB::bind_method(D_METHOD("draw_colored_polygon", "points", "color", "uvs", "texture", "normal_map"), &CanvasItem::draw_colored_polygon, DEFVAL(PoolVector2Array()), DEFVAL(Variant()), DEFVAL(Variant()));
+ ClassDB::bind_method(D_METHOD("draw_polygon", "points", "colors", "uvs", "texture", "normal_map", "antialiased"), &CanvasItem::draw_polygon, DEFVAL(PoolVector2Array()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("draw_colored_polygon", "points", "color", "uvs", "texture", "normal_map", "antialiased"), &CanvasItem::draw_colored_polygon, DEFVAL(PoolVector2Array()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(false));
ClassDB::bind_method(D_METHOD("draw_string", "font", "pos", "text", "modulate", "clip_w"), &CanvasItem::draw_string, DEFVAL(Color(1, 1, 1)), DEFVAL(-1));
ClassDB::bind_method(D_METHOD("draw_char", "font", "pos", "char", "next", "modulate"), &CanvasItem::draw_char, DEFVAL(Color(1, 1, 1)));
@@ -1042,11 +1039,11 @@ void CanvasItem::_bind_methods() {
ADD_SIGNAL(MethodInfo("hide"));
ADD_SIGNAL(MethodInfo("item_rect_changed"));
- BIND_CONSTANT(BLEND_MODE_MIX);
- BIND_CONSTANT(BLEND_MODE_ADD);
- BIND_CONSTANT(BLEND_MODE_SUB);
- BIND_CONSTANT(BLEND_MODE_MUL);
- BIND_CONSTANT(BLEND_MODE_PREMULT_ALPHA);
+ BIND_ENUM_CONSTANT(BLEND_MODE_MIX);
+ BIND_ENUM_CONSTANT(BLEND_MODE_ADD);
+ BIND_ENUM_CONSTANT(BLEND_MODE_SUB);
+ BIND_ENUM_CONSTANT(BLEND_MODE_MUL);
+ BIND_ENUM_CONSTANT(BLEND_MODE_PREMULT_ALPHA);
BIND_CONSTANT(NOTIFICATION_DRAW);
BIND_CONSTANT(NOTIFICATION_VISIBILITY_CHANGED);
@@ -1061,8 +1058,8 @@ Transform2D CanvasItem::get_canvas_transform() const {
if (canvas_layer)
return canvas_layer->get_transform();
- else if (get_parent()->cast_to<CanvasItem>())
- return get_parent()->cast_to<CanvasItem>()->get_canvas_transform();
+ else if (Object::cast_to<CanvasItem>(get_parent()))
+ return Object::cast_to<CanvasItem>(get_parent())->get_canvas_transform();
else
return get_viewport()->get_canvas_transform();
}
@@ -1121,7 +1118,7 @@ Rect2 CanvasItem::get_item_and_children_rect() const {
Rect2 rect = get_item_rect();
for (int i = 0; i < get_child_count(); i++) {
- CanvasItem *c = get_child(i)->cast_to<CanvasItem>();
+ CanvasItem *c = Object::cast_to<CanvasItem>(get_child(i));
if (c) {
Rect2 sir = c->get_transform().xform(c->get_item_and_children_rect());
rect = rect.merge(sir);
diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h
index 933b135070..5a0a9c6e6a 100644
--- a/scene/2d/canvas_item.h
+++ b/scene/2d/canvas_item.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -251,8 +251,8 @@ public:
void draw_texture_rect_region(const Ref<Texture> &p_texture, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, const Ref<Texture> &p_normal_map = Ref<Texture>(), bool p_clip_uv = true);
void draw_style_box(const Ref<StyleBox> &p_style_box, const Rect2 &p_rect);
void draw_primitive(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, Ref<Texture> p_texture = Ref<Texture>(), float p_width = 1, const Ref<Texture> &p_normal_map = Ref<Texture>());
- void draw_polygon(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), Ref<Texture> p_texture = Ref<Texture>(), const Ref<Texture> &p_normal_map = Ref<Texture>());
- void draw_colored_polygon(const Vector<Point2> &p_points, const Color &p_color, const Vector<Point2> &p_uvs = Vector<Point2>(), Ref<Texture> p_texture = Ref<Texture>(), const Ref<Texture> &p_normal_map = Ref<Texture>());
+ void draw_polygon(const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), Ref<Texture> p_texture = Ref<Texture>(), const Ref<Texture> &p_normal_map = Ref<Texture>(), bool p_antialiased = false);
+ void draw_colored_polygon(const Vector<Point2> &p_points, const Color &p_color, const Vector<Point2> &p_uvs = Vector<Point2>(), Ref<Texture> p_texture = Ref<Texture>(), const Ref<Texture> &p_normal_map = Ref<Texture>(), bool p_antialiased = false);
void draw_string(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_text, const Color &p_modulate = Color(1, 1, 1), int p_clip_w = -1);
float draw_char(const Ref<Font> &p_font, const Point2 &p_pos, const String &p_char, const String &p_next = "", const Color &p_modulate = Color(1, 1, 1));
@@ -297,7 +297,7 @@ public:
virtual void set_use_parent_material(bool p_use_parent_material);
bool get_use_parent_material() const;
- Ref<InputEvent> make_input_local(const Ref<InputEvent> &pevent) const;
+ Ref<InputEvent> make_input_local(const Ref<InputEvent> &p_event) const;
Vector2 make_canvas_pos_local(const Vector2 &screen_point) const;
Vector2 get_global_mouse_position() const;
diff --git a/scene/2d/canvas_modulate.cpp b/scene/2d/canvas_modulate.cpp
index a132c5e18c..05831609fc 100644
--- a/scene/2d/canvas_modulate.cpp
+++ b/scene/2d/canvas_modulate.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/canvas_modulate.h b/scene/2d/canvas_modulate.h
index 37d9d47ba5..4195c1386c 100644
--- a/scene/2d/canvas_modulate.h
+++ b/scene/2d/canvas_modulate.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/collision_object_2d.cpp b/scene/2d/collision_object_2d.cpp
index d3bb5a8d4e..ce56b85a9e 100644
--- a/scene/2d/collision_object_2d.cpp
+++ b/scene/2d/collision_object_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/collision_object_2d.h b/scene/2d/collision_object_2d.h
index 36bf39ff4e..a828d8d8ea 100644
--- a/scene/2d/collision_object_2d.h
+++ b/scene/2d/collision_object_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp
index bd669eb4c8..e2764a6e8d 100644
--- a/scene/2d/collision_polygon_2d.cpp
+++ b/scene/2d/collision_polygon_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,6 +30,7 @@
#include "collision_polygon_2d.h"
#include "collision_object_2d.h"
+#include "engine.h"
#include "scene/resources/concave_polygon_shape_2d.h"
#include "scene/resources/convex_polygon_shape_2d.h"
@@ -78,11 +79,6 @@ void CollisionPolygon2D::_build_polygon() {
Vector<Vector<Vector2> > CollisionPolygon2D::_decompose_in_convex() {
Vector<Vector<Vector2> > decomp;
-#if 0
- //fast but imprecise triangulator, gave us problems
- decomp = Geometry::decompose_polygon(polygon);
-#else
-
List<TriangulatorPoly> in_poly, out_poly;
TriangulatorPoly inp;
@@ -115,8 +111,6 @@ Vector<Vector<Vector2> > CollisionPolygon2D::_decompose_in_convex() {
idx++;
}
-#endif
-
return decomp;
}
@@ -125,7 +119,7 @@ void CollisionPolygon2D::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_PARENTED: {
- parent = get_parent()->cast_to<CollisionObject2D>();
+ parent = Object::cast_to<CollisionObject2D>(get_parent());
if (parent) {
owner_id = parent->create_shape_owner(this);
_build_polygon();
@@ -134,7 +128,7 @@ void CollisionPolygon2D::_notification(int p_what) {
parent->shape_owner_set_one_way_collision(owner_id, one_way_collision);
}
- /*if (get_tree()->is_editor_hint()) {
+ /*if (Engine::get_singleton()->is_editor_hint()) {
//display above all else
set_z_as_relative(false);
set_z(VS::CANVAS_ITEM_Z_MAX - 1);
@@ -158,7 +152,7 @@ void CollisionPolygon2D::_notification(int p_what) {
case NOTIFICATION_DRAW: {
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
@@ -256,7 +250,7 @@ Rect2 CollisionPolygon2D::get_item_rect() const {
String CollisionPolygon2D::get_configuration_warning() const {
- if (!get_parent()->cast_to<CollisionObject2D>()) {
+ if (!Object::cast_to<CollisionObject2D>(get_parent())) {
return TTR("CollisionPolygon2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape.");
}
diff --git a/scene/2d/collision_polygon_2d.h b/scene/2d/collision_polygon_2d.h
index f0666ba9de..c9ec860e36 100644
--- a/scene/2d/collision_polygon_2d.h
+++ b/scene/2d/collision_polygon_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp
index ff4aa245ec..0758f4a9bf 100644
--- a/scene/2d/collision_shape_2d.cpp
+++ b/scene/2d/collision_shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,7 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "collision_shape_2d.h"
+
#include "collision_object_2d.h"
+#include "engine.h"
#include "scene/resources/capsule_shape_2d.h"
#include "scene/resources/circle_shape_2d.h"
#include "scene/resources/concave_polygon_shape_2d.h"
@@ -48,7 +50,7 @@ void CollisionShape2D::_notification(int p_what) {
case NOTIFICATION_PARENTED: {
- parent = get_parent()->cast_to<CollisionObject2D>();
+ parent = Object::cast_to<CollisionObject2D>(get_parent());
if (parent) {
owner_id = parent->create_shape_owner(this);
if (shape.is_valid()) {
@@ -59,7 +61,7 @@ void CollisionShape2D::_notification(int p_what) {
parent->shape_owner_set_one_way_collision(owner_id, one_way_collision);
}
- /*if (get_tree()->is_editor_hint()) {
+ /*if (Engine::get_singleton()->is_editor_hint()) {
//display above all else
set_z_as_relative(false);
set_z(VS::CANVAS_ITEM_Z_MAX - 1);
@@ -90,7 +92,7 @@ void CollisionShape2D::_notification(int p_what) {
} break;*/
case NOTIFICATION_DRAW: {
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
@@ -163,7 +165,7 @@ Rect2 CollisionShape2D::get_item_rect() const {
String CollisionShape2D::get_configuration_warning() const {
- if (!get_parent()->cast_to<CollisionObject2D>()) {
+ if (!Object::cast_to<CollisionObject2D>(get_parent())) {
return TTR("CollisionShape2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape.");
}
diff --git a/scene/2d/collision_shape_2d.h b/scene/2d/collision_shape_2d.h
index 1f2b96b91f..04203a75b4 100644
--- a/scene/2d/collision_shape_2d.h
+++ b/scene/2d/collision_shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp
index 1bb40a28b5..69bad1623f 100644
--- a/scene/2d/joints_2d.cpp
+++ b/scene/2d/joints_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "joints_2d.h"
+
+#include "engine.h"
#include "physics_body_2d.h"
#include "servers/physics_2d_server.h"
@@ -152,7 +154,7 @@ void PinJoint2D::_notification(int p_what) {
if (!is_inside_tree())
break;
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
@@ -170,8 +172,8 @@ RID PinJoint2D::_configure_joint() {
if (!node_a && !node_b)
return RID();
- PhysicsBody2D *body_a = node_a ? node_a->cast_to<PhysicsBody2D>() : (PhysicsBody2D *)NULL;
- PhysicsBody2D *body_b = node_b ? node_b->cast_to<PhysicsBody2D>() : (PhysicsBody2D *)NULL;
+ PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a);
+ PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b);
if (!body_a && !body_b)
return RID();
@@ -227,7 +229,7 @@ void GrooveJoint2D::_notification(int p_what) {
if (!is_inside_tree())
break;
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
@@ -247,8 +249,8 @@ RID GrooveJoint2D::_configure_joint() {
if (!node_a || !node_b)
return RID();
- PhysicsBody2D *body_a = node_a->cast_to<PhysicsBody2D>();
- PhysicsBody2D *body_b = node_b->cast_to<PhysicsBody2D>();
+ PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a);
+ PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b);
if (!body_a || !body_b)
return RID();
@@ -317,7 +319,7 @@ void DampedSpringJoint2D::_notification(int p_what) {
if (!is_inside_tree())
break;
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
break;
}
@@ -336,8 +338,8 @@ RID DampedSpringJoint2D::_configure_joint() {
if (!node_a || !node_b)
return RID();
- PhysicsBody2D *body_a = node_a->cast_to<PhysicsBody2D>();
- PhysicsBody2D *body_b = node_b->cast_to<PhysicsBody2D>();
+ PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a);
+ PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b);
if (!body_a || !body_b)
return RID();
diff --git a/scene/2d/joints_2d.h b/scene/2d/joints_2d.h
index b52b0f4670..685299abc6 100644
--- a/scene/2d/joints_2d.h
+++ b/scene/2d/joints_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -81,7 +81,7 @@ protected:
static void _bind_methods();
public:
- void set_softness(real_t p_stiffness);
+ void set_softness(real_t p_softness);
real_t get_softness() const;
PinJoint2D();
diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp
index ffe69fa93f..ab8277ecf3 100644
--- a/scene/2d/light_2d.cpp
+++ b/scene/2d/light_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "light_2d.h"
+
+#include "engine.h"
#include "servers/visual_server.h"
void Light2D::edit_set_pivot(const Point2 &p_pivot) {
@@ -70,7 +72,7 @@ void Light2D::_update_light_visibility() {
#ifdef TOOLS_ENABLED
if (editor_only) {
- if (!get_tree()->is_editor_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint()) {
editor_ok = false;
} else {
editor_ok = (get_tree()->get_edited_scene_root() && (this == get_tree()->get_edited_scene_root() || get_owner() == get_tree()->get_edited_scene_root()));
@@ -432,15 +434,15 @@ void Light2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shadow_enabled"), "set_shadow_enabled", "is_shadow_enabled");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "shadow_color"), "set_shadow_color", "get_shadow_color");
ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_buffer_size", PROPERTY_HINT_RANGE, "32,16384,1"), "set_shadow_buffer_size", "get_shadow_buffer_size");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "shadow_gradient_length", PROPERTY_HINT_RANGE, "1,4096,0.1"), "set_shadow_gradient_length", "get_shadow_gradient_length");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "shadow_gradient_length", PROPERTY_HINT_RANGE, "0,4096,0.1"), "set_shadow_gradient_length", "get_shadow_gradient_length");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "shadow_filter", PROPERTY_HINT_ENUM, "None,PCF3,PCF5,PCF9,PCF13"), "set_shadow_filter", "get_shadow_filter");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "shadow_filter_smooth", PROPERTY_HINT_RANGE, "0,64,0.1"), "set_shadow_smooth", "get_shadow_smooth");
ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_item_cull_mask", PROPERTY_HINT_LAYERS_2D_RENDER), "set_item_shadow_cull_mask", "get_item_shadow_cull_mask");
- BIND_CONSTANT(MODE_ADD);
- BIND_CONSTANT(MODE_SUB);
- BIND_CONSTANT(MODE_MIX);
- BIND_CONSTANT(MODE_MASK);
+ BIND_ENUM_CONSTANT(MODE_ADD);
+ BIND_ENUM_CONSTANT(MODE_SUB);
+ BIND_ENUM_CONSTANT(MODE_MIX);
+ BIND_ENUM_CONSTANT(MODE_MASK);
}
Light2D::Light2D() {
diff --git a/scene/2d/light_2d.h b/scene/2d/light_2d.h
index 90e55aeda4..66b0aa2299 100644
--- a/scene/2d/light_2d.h
+++ b/scene/2d/light_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/light_occluder_2d.cpp b/scene/2d/light_occluder_2d.cpp
index a1a8e7d9c4..92e0d8a2f6 100644
--- a/scene/2d/light_occluder_2d.cpp
+++ b/scene/2d/light_occluder_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,8 @@
/*************************************************************************/
#include "light_occluder_2d.h"
+#include "engine.h"
+
void OccluderPolygon2D::set_polygon(const PoolVector<Vector2> &p_polygon) {
polygon = p_polygon;
@@ -87,9 +89,9 @@ void OccluderPolygon2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "cull_mode", PROPERTY_HINT_ENUM, "Disabled,ClockWise,CounterClockWise"), "set_cull_mode", "get_cull_mode");
ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR2_ARRAY, "polygon"), "set_polygon", "get_polygon");
- BIND_CONSTANT(CULL_DISABLED);
- BIND_CONSTANT(CULL_CLOCKWISE);
- BIND_CONSTANT(CULL_COUNTER_CLOCKWISE);
+ BIND_ENUM_CONSTANT(CULL_DISABLED);
+ BIND_ENUM_CONSTANT(CULL_CLOCKWISE);
+ BIND_ENUM_CONSTANT(CULL_COUNTER_CLOCKWISE);
}
OccluderPolygon2D::OccluderPolygon2D() {
@@ -130,7 +132,7 @@ void LightOccluder2D::_notification(int p_what) {
if (p_what == NOTIFICATION_DRAW) {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
if (occluder_polygon.is_valid()) {
diff --git a/scene/2d/light_occluder_2d.h b/scene/2d/light_occluder_2d.h
index 30c30b1a47..cca7bfecd6 100644
--- a/scene/2d/light_occluder_2d.h
+++ b/scene/2d/light_occluder_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/line_2d.cpp b/scene/2d/line_2d.cpp
index 5438557d0b..c87a9a5b1e 100644
--- a/scene/2d/line_2d.cpp
+++ b/scene/2d/line_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -322,16 +322,16 @@ void Line2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "sharp_limit"), "set_sharp_limit", "get_sharp_limit");
ADD_PROPERTY(PropertyInfo(Variant::INT, "round_precision"), "set_round_precision", "get_round_precision");
- BIND_CONSTANT(LINE_JOINT_SHARP);
- BIND_CONSTANT(LINE_JOINT_BEVEL);
- BIND_CONSTANT(LINE_JOINT_ROUND);
+ BIND_ENUM_CONSTANT(LINE_JOINT_SHARP);
+ BIND_ENUM_CONSTANT(LINE_JOINT_BEVEL);
+ BIND_ENUM_CONSTANT(LINE_JOINT_ROUND);
- BIND_CONSTANT(LINE_CAP_NONE);
- BIND_CONSTANT(LINE_CAP_BOX);
- BIND_CONSTANT(LINE_CAP_ROUND);
+ BIND_ENUM_CONSTANT(LINE_CAP_NONE);
+ BIND_ENUM_CONSTANT(LINE_CAP_BOX);
+ BIND_ENUM_CONSTANT(LINE_CAP_ROUND);
- BIND_CONSTANT(LINE_TEXTURE_NONE);
- BIND_CONSTANT(LINE_TEXTURE_TILE);
+ BIND_ENUM_CONSTANT(LINE_TEXTURE_NONE);
+ BIND_ENUM_CONSTANT(LINE_TEXTURE_TILE);
ClassDB::bind_method(D_METHOD("_gradient_changed"), &Line2D::_gradient_changed);
}
diff --git a/scene/2d/line_2d.h b/scene/2d/line_2d.h
index e8ca5e6e7c..017ccf13ff 100644
--- a/scene/2d/line_2d.h
+++ b/scene/2d/line_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/line_builder.cpp b/scene/2d/line_builder.cpp
index 3c1410edbb..9eea5191b9 100644
--- a/scene/2d/line_builder.cpp
+++ b/scene/2d/line_builder.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/line_builder.h b/scene/2d/line_builder.h
index 0e1a2aaf50..227e0abd08 100644
--- a/scene/2d/line_builder.h
+++ b/scene/2d/line_builder.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/navigation2d.cpp b/scene/2d/navigation2d.cpp
index e579838903..fa488b6b23 100644
--- a/scene/2d/navigation2d.cpp
+++ b/scene/2d/navigation2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -236,42 +236,6 @@ void Navigation2D::navpoly_remove(int p_id) {
_navpoly_unlink(p_id);
navpoly_map.erase(p_id);
}
-#if 0
-void Navigation2D::_clip_path(Vector<Vector2>& path, Polygon *from_poly, const Vector2& p_to_point, Polygon* p_to_poly) {
-
- Vector2 from = path[path.size()-1];
-
- if (from.distance_to(p_to_point)<CMP_EPSILON)
- return;
- Plane cut_plane;
- cut_plane.normal = (from-p_to_point).cross(up);
- if (cut_plane.normal==Vector2())
- return;
- cut_plane.normal.normalize();
- cut_plane.d = cut_plane.normal.dot(from);
-
-
- while(from_poly!=p_to_poly) {
-
- int pe = from_poly->prev_edge;
- Vector2 a = _get_vertex(from_poly->edges[pe].point);
- Vector2 b = _get_vertex(from_poly->edges[(pe+1)%from_poly->edges.size()].point);
-
- from_poly=from_poly->edges[pe].C;
- ERR_FAIL_COND(!from_poly);
-
- if (a.distance_to(b)>CMP_EPSILON) {
-
- Vector2 inters;
- if (cut_plane.intersects_segment(a,b,&inters)) {
- if (inters.distance_to(p_to_point)>CMP_EPSILON && inters.distance_to(path[path.size()-1])>CMP_EPSILON) {
- path.push_back(inters);
- }
- }
- }
- }
-}
-#endif
Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vector2 &p_end, bool p_optimize) {
@@ -498,29 +462,7 @@ Vector<Vector2> Navigation2D::get_simple_path(const Vector2 &p_start, const Vect
open_list.erase(least_cost_poly);
}
-#if 0
-debug path
- {
- Polygon *p=end_poly;
- int idx=0;
-
- while(true) {
- int prev = p->prev_edge;
- int prev_n = (p->prev_edge+1)%p->edges.size();
- Vector2 point = (_get_vertex(p->edges[prev].point) + _get_vertex(p->edges[prev_n].point))*0.5;
- String points;
- for(int i=0;i<p->edges.size();i++) {
- if (i>0)
- points+=", ";
- points+=_get_vertex(p->edges[i].point);
- }
- //print_line("poly "+itos(idx++)+" - "+points);
- p = p->edges[prev].C;
- if (p==begin_poly)
- break;
- }
- }
-#endif
+
if (found_route) {
Vector<Vector2> path;
@@ -646,7 +588,8 @@ debug path
break;
}
- path.push_back(begin_point);
+ if (path[path.size() - 1].distance_to(begin_point) > CMP_EPSILON)
+ path.push_back(begin_point);
path.invert();
}
diff --git a/scene/2d/navigation2d.h b/scene/2d/navigation2d.h
index 54e89de9e2..e87b01f7c5 100644
--- a/scene/2d/navigation2d.h
+++ b/scene/2d/navigation2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -153,9 +153,7 @@ class Navigation2D : public Node2D {
float cell_size;
Map<int, NavMesh> navpoly_map;
int last_id;
-#if 0
- void _clip_path(Vector<Vector2>& path,Polygon *from_poly, const Vector2& p_to_point, Polygon* p_to_poly);
-#endif
+
protected:
static void _bind_methods();
diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp
index 779751c1c5..352ec3b300 100644
--- a/scene/2d/navigation_polygon.cpp
+++ b/scene/2d/navigation_polygon.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,6 +30,7 @@
#include "navigation_polygon.h"
#include "core_string_names.h"
+#include "engine.h"
#include "navigation2d.h"
#include "thirdparty/misc/triangulator.h"
@@ -297,7 +298,7 @@ void NavigationPolygonInstance::set_enabled(bool p_enabled) {
}
}
- if (get_tree()->is_editor_hint() || get_tree()->is_debugging_navigation_hint())
+ if (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_navigation_hint())
update();
//update_gizmo();
@@ -318,7 +319,7 @@ void NavigationPolygonInstance::_notification(int p_what) {
Node2D *c = this;
while (c) {
- navigation = c->cast_to<Navigation2D>();
+ navigation = Object::cast_to<Navigation2D>(c);
if (navigation) {
if (enabled && navpoly.is_valid()) {
@@ -328,7 +329,7 @@ void NavigationPolygonInstance::_notification(int p_what) {
break;
}
- c = c->get_parent()->cast_to<Node2D>();
+ c = Object::cast_to<Node2D>(get_parent());
}
} break;
@@ -352,7 +353,7 @@ void NavigationPolygonInstance::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
- if (is_inside_tree() && (get_tree()->is_editor_hint() || get_tree()->is_debugging_navigation_hint()) && navpoly.is_valid()) {
+ if (is_inside_tree() && (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_navigation_hint()) && navpoly.is_valid()) {
PoolVector<Vector2> verts = navpoly->get_vertices();
int vsize = verts.size();
@@ -432,7 +433,7 @@ Ref<NavigationPolygon> NavigationPolygonInstance::get_navigation_polygon() const
void NavigationPolygonInstance::_navpoly_changed() {
- if (is_inside_tree() && (get_tree()->is_editor_hint() || get_tree()->is_debugging_navigation_hint()))
+ if (is_inside_tree() && (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_navigation_hint()))
update();
}
@@ -447,11 +448,11 @@ String NavigationPolygonInstance::get_configuration_warning() const {
const Node2D *c = this;
while (c) {
- if (c->cast_to<Navigation2D>()) {
+ if (Object::cast_to<Navigation2D>(c)) {
return String();
}
- c = c->get_parent()->cast_to<Node2D>();
+ c = Object::cast_to<Node2D>(get_parent());
}
return TTR("NavigationPolygonInstance must be a child or grandchild to a Navigation2D node. It only provides navigation data.");
diff --git a/scene/2d/navigation_polygon.h b/scene/2d/navigation_polygon.h
index f6e6ed210a..5576a3abd2 100644
--- a/scene/2d/navigation_polygon.h
+++ b/scene/2d/navigation_polygon.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp
index 98d6a467b1..0c7685a858 100644
--- a/scene/2d/node_2d.cpp
+++ b/scene/2d/node_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -379,7 +379,7 @@ Transform2D Node2D::get_relative_transform_to_parent(const Node *p_parent) const
if (p_parent == this)
return Transform2D();
- Node2D *parent_2d = get_parent()->cast_to<Node2D>();
+ Node2D *parent_2d = Object::cast_to<Node2D>(get_parent());
ERR_FAIL_COND_V(!parent_2d, Transform2D());
if (p_parent == parent_2d)
diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h
index df9a05ff79..19aafc81ff 100644
--- a/scene/2d/node_2d.h
+++ b/scene/2d/node_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -49,7 +49,7 @@ class Node2D : public CanvasItem {
void _update_transform();
// Deprecated, should be removed in a future version.
- void _set_rotd(float p_angle);
+ void _set_rotd(float p_degrees);
float _get_rotd() const;
void _update_xform_values();
diff --git a/scene/2d/parallax_background.cpp b/scene/2d/parallax_background.cpp
index 433ab5ff8d..0ddcb7b51b 100644
--- a/scene/2d/parallax_background.cpp
+++ b/scene/2d/parallax_background.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -101,7 +101,7 @@ void ParallaxBackground::_update_scroll() {
for (int i = 0; i < get_child_count(); i++) {
- ParallaxLayer *l = get_child(i)->cast_to<ParallaxLayer>();
+ ParallaxLayer *l = Object::cast_to<ParallaxLayer>(get_child(i));
if (!l)
continue;
diff --git a/scene/2d/parallax_background.h b/scene/2d/parallax_background.h
index 99d8dd3811..0dad1daeab 100644
--- a/scene/2d/parallax_background.h
+++ b/scene/2d/parallax_background.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -60,7 +60,7 @@ public:
void set_scroll_offset(const Point2 &p_ofs);
Point2 get_scroll_offset() const;
- void set_scroll_scale(float p_ofs);
+ void set_scroll_scale(float p_scale);
float get_scroll_scale() const;
void set_scroll_base_offset(const Point2 &p_ofs);
diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp
index 0e83b9aaae..8fe651cb5f 100644
--- a/scene/2d/parallax_layer.cpp
+++ b/scene/2d/parallax_layer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,14 +28,16 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "parallax_layer.h"
+
+#include "engine.h"
#include "parallax_background.h"
void ParallaxLayer::set_motion_scale(const Size2 &p_scale) {
motion_scale = p_scale;
- ParallaxBackground *pb = get_parent()->cast_to<ParallaxBackground>();
- if (is_inside_tree() && pb) {
+ ParallaxBackground *pb = Object::cast_to<ParallaxBackground>(get_parent());
+ if (pb && is_inside_tree()) {
Vector2 ofs = pb->get_final_offset();
float scale = pb->get_scroll_scale();
set_base_offset_and_scale(ofs, scale);
@@ -51,8 +53,8 @@ void ParallaxLayer::set_motion_offset(const Size2 &p_offset) {
motion_offset = p_offset;
- ParallaxBackground *pb = get_parent()->cast_to<ParallaxBackground>();
- if (is_inside_tree() && pb) {
+ ParallaxBackground *pb = Object::cast_to<ParallaxBackground>(get_parent());
+ if (pb && is_inside_tree()) {
Vector2 ofs = pb->get_final_offset();
float scale = pb->get_scroll_scale();
set_base_offset_and_scale(ofs, scale);
@@ -66,10 +68,7 @@ Size2 ParallaxLayer::get_motion_offset() const {
void ParallaxLayer::_update_mirroring() {
- if (!get_parent())
- return;
-
- ParallaxBackground *pb = get_parent()->cast_to<ParallaxBackground>();
+ ParallaxBackground *pb = Object::cast_to<ParallaxBackground>(get_parent());
if (pb) {
RID c = pb->get_world_2d()->get_canvas();
@@ -111,7 +110,7 @@ void ParallaxLayer::set_base_offset_and_scale(const Point2 &p_offset, float p_sc
if (!is_inside_tree())
return;
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
return;
Point2 new_ofs = ((orig_offset + p_offset) * motion_scale) * p_scale + motion_offset;
@@ -131,7 +130,7 @@ void ParallaxLayer::set_base_offset_and_scale(const Point2 &p_offset, float p_sc
String ParallaxLayer::get_configuration_warning() const {
- if (!get_parent() || !get_parent()->cast_to<ParallaxBackground>()) {
+ if (!Object::cast_to<ParallaxBackground>(get_parent())) {
return TTR("ParallaxLayer node only works when set as child of a ParallaxBackground node.");
}
diff --git a/scene/2d/parallax_layer.h b/scene/2d/parallax_layer.h
index 85e70b0a51..95ca27c41a 100644
--- a/scene/2d/parallax_layer.h
+++ b/scene/2d/parallax_layer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -48,7 +48,7 @@ protected:
static void _bind_methods();
public:
- void set_motion_offset(const Size2 &p_scale);
+ void set_motion_offset(const Size2 &p_offset);
Size2 get_motion_offset() const;
void set_motion_scale(const Size2 &p_scale);
@@ -57,7 +57,7 @@ public:
void set_mirroring(const Size2 &p_mirroring);
Size2 get_mirroring() const;
- void set_base_offset_and_scale(const Point2 &p_offsetf, float p_scale);
+ void set_base_offset_and_scale(const Point2 &p_offset, float p_scale);
virtual String get_configuration_warning() const;
ParallaxLayer();
diff --git a/scene/2d/particles_2d.cpp b/scene/2d/particles_2d.cpp
index a2ec33f403..c146ac08c2 100644
--- a/scene/2d/particles_2d.cpp
+++ b/scene/2d/particles_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "particles_2d.h"
+#include "engine.h"
#include "scene/3d/particles.h"
#include "scene/scene_string_names.h"
@@ -295,7 +296,7 @@ void Particles2D::_notification(int p_what) {
VS::get_singleton()->canvas_item_add_particles(get_canvas_item(), particles, texture_rid, normal_rid, h_frames, v_frames);
#ifdef TOOLS_ENABLED
- if (get_tree()->is_editor_hint() && (this == get_tree()->get_edited_scene_root() || get_tree()->get_edited_scene_root()->is_a_parent_of(this))) {
+ if (Engine::get_singleton()->is_editor_hint() && (this == get_tree()->get_edited_scene_root() || get_tree()->get_edited_scene_root()->is_a_parent_of(this))) {
draw_rect(visibility_rect, Color(0, 0.7, 0.9, 0.4), false);
}
@@ -388,8 +389,8 @@ void Particles2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "h_frames", PROPERTY_HINT_RANGE, "1,1024,1"), "set_h_frames", "get_h_frames");
ADD_PROPERTY(PropertyInfo(Variant::INT, "v_frames", PROPERTY_HINT_RANGE, "1,1024,1"), "set_v_frames", "get_v_frames");
- BIND_CONSTANT(DRAW_ORDER_INDEX);
- BIND_CONSTANT(DRAW_ORDER_LIFETIME);
+ BIND_ENUM_CONSTANT(DRAW_ORDER_INDEX);
+ BIND_ENUM_CONSTANT(DRAW_ORDER_LIFETIME);
}
Particles2D::Particles2D() {
diff --git a/scene/2d/particles_2d.h b/scene/2d/particles_2d.h
index 23278ce746..6946f2a799 100644
--- a/scene/2d/particles_2d.h
+++ b/scene/2d/particles_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -80,7 +80,7 @@ public:
void set_emitting(bool p_emitting);
void set_amount(int p_amount);
void set_lifetime(float p_lifetime);
- void set_one_shot(bool p_enabled);
+ void set_one_shot(bool p_enable);
void set_pre_process_time(float p_time);
void set_explosiveness_ratio(float p_ratio);
void set_randomness_ratio(float p_ratio);
diff --git a/scene/2d/path_2d.cpp b/scene/2d/path_2d.cpp
index 6b30e97de8..1d7bd8fc2a 100644
--- a/scene/2d/path_2d.cpp
+++ b/scene/2d/path_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "path_2d.h"
+
+#include "engine.h"
#include "scene/scene_string_names.h"
void Path2D::_notification(int p_what) {
@@ -35,7 +37,7 @@ void Path2D::_notification(int p_what) {
if (p_what == NOTIFICATION_DRAW && curve.is_valid()) {
//draw the curve!!
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_navigation_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_navigation_hint()) {
return;
}
@@ -56,7 +58,7 @@ void Path2D::_notification(int p_what) {
void Path2D::_curve_changed() {
- if (is_inside_tree() && get_tree()->is_editor_hint())
+ if (is_inside_tree() && Engine::get_singleton()->is_editor_hint())
update();
}
@@ -135,13 +137,8 @@ void PathFollow2D::_notification(int p_what) {
case NOTIFICATION_ENTER_TREE: {
- Node *parent = get_parent();
- if (parent) {
-
- path = parent->cast_to<Path2D>();
- if (path) {
- _update_transform();
- }
+ if ((path = Object::cast_to<Path2D>(get_parent()))) {
+ _update_transform();
}
} break;
@@ -229,7 +226,7 @@ String PathFollow2D::get_configuration_warning() const {
if (!is_visible_in_tree() || !is_inside_tree())
return String();
- if (!get_parent() || !get_parent()->cast_to<Path2D>()) {
+ if (!Object::cast_to<Path2D>(get_parent())) {
return TTR("PathFollow2D only works when set as a child of a Path2D node.");
}
diff --git a/scene/2d/path_2d.h b/scene/2d/path_2d.h
index b2dae17735..88a0abdea9 100644
--- a/scene/2d/path_2d.h
+++ b/scene/2d/path_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -96,7 +96,7 @@ public:
void set_loop(bool p_loop);
bool has_loop() const;
- void set_rotate(bool p_enabled);
+ void set_rotate(bool p_rotate);
bool is_rotating() const;
void set_cubic_interpolation(bool p_enable);
diff --git a/scene/2d/path_texture.cpp b/scene/2d/path_texture.cpp
index e06c79dabd..13644f71cf 100644
--- a/scene/2d/path_texture.cpp
+++ b/scene/2d/path_texture.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/path_texture.h b/scene/2d/path_texture.h
index 163e914e4a..4639a6072b 100644
--- a/scene/2d/path_texture.h
+++ b/scene/2d/path_texture.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index 6ec1642138..b1eb2ba267 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "physics_body_2d.h"
+
+#include "engine.h"
#include "scene/scene_string_names.h"
void PhysicsBody2D::_notification(int p_what) {
@@ -141,7 +143,7 @@ PhysicsBody2D::PhysicsBody2D(Physics2DServer::BodyMode p_mode)
void PhysicsBody2D::add_collision_exception_with(Node *p_node) {
ERR_FAIL_NULL(p_node);
- PhysicsBody2D *physics_body = p_node->cast_to<PhysicsBody2D>();
+ PhysicsBody2D *physics_body = Object::cast_to<PhysicsBody2D>(p_node);
if (!physics_body) {
ERR_EXPLAIN("Collision exception only works between two objects of PhysicsBody type");
}
@@ -152,7 +154,7 @@ void PhysicsBody2D::add_collision_exception_with(Node *p_node) {
void PhysicsBody2D::remove_collision_exception_with(Node *p_node) {
ERR_FAIL_NULL(p_node);
- PhysicsBody2D *physics_body = p_node->cast_to<PhysicsBody2D>();
+ PhysicsBody2D *physics_body = Object::cast_to<PhysicsBody2D>(p_node);
if (!physics_body) {
ERR_EXPLAIN("Collision exception only works between two objects of PhysicsBody type");
}
@@ -180,29 +182,6 @@ real_t StaticBody2D::get_constant_angular_velocity() const {
return constant_angular_velocity;
}
-#if 0
-void StaticBody2D::_update_xform() {
-
- if (!pre_xform || !pending)
- return;
-
- setting=true;
-
-
- Transform2D new_xform = get_global_transform(); //obtain the new one
-
- set_block_transform_notify(true);
- Physics2DServer::get_singleton()->body_set_state(get_rid(),Physics2DServer::BODY_STATE_TRANSFORM,*pre_xform); //then simulate motion!
- set_global_transform(*pre_xform); //but restore state to previous one in both visual and physics
- set_block_transform_notify(false);
-
- Physics2DServer::get_singleton()->body_static_simulate_motion(get_rid(),new_xform); //then simulate motion!
-
- setting=false;
- pending=false;
-
-}
-#endif
void StaticBody2D::set_friction(real_t p_friction) {
@@ -260,7 +239,7 @@ StaticBody2D::~StaticBody2D() {
void RigidBody2D::_body_enter_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
@@ -283,7 +262,7 @@ void RigidBody2D::_body_enter_tree(ObjectID p_id) {
void RigidBody2D::_body_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
ERR_FAIL_COND(!E);
@@ -308,7 +287,7 @@ void RigidBody2D::_body_inout(int p_status, ObjectID p_instance, int p_body_shap
ObjectID objid = p_instance;
Object *obj = ObjectDB::get_instance(objid);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(objid);
@@ -391,7 +370,7 @@ void RigidBody2D::_direct_state_changed(Object *p_state) {
//eh.. fuck
#ifdef DEBUG_ENABLED
- state = p_state->cast_to<Physics2DDirectBodyState>();
+ state = Object::cast_to<Physics2DDirectBodyState>(p_state);
#else
state = (Physics2DDirectBodyState *)p_state; //trust it
#endif
@@ -802,13 +781,13 @@ void RigidBody2D::_notification(int p_what) {
#ifdef TOOLS_ENABLED
if (p_what == NOTIFICATION_ENTER_TREE) {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
set_notify_local_transform(true); //used for warnings and only in editor
}
}
if (p_what == NOTIFICATION_LOCAL_TRANSFORM_CHANGED) {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
update_configuration_warning();
}
}
@@ -904,7 +883,7 @@ void RigidBody2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_colliding_bodies"), &RigidBody2D::get_colliding_bodies);
- BIND_VMETHOD(MethodInfo("_integrate_forces", PropertyInfo(Variant::OBJECT, "state:Physics2DDirectBodyState")));
+ BIND_VMETHOD(MethodInfo("_integrate_forces", PropertyInfo(Variant::OBJECT, "state", PROPERTY_HINT_RESOURCE_TYPE, "Physics2DDirectBodyState")));
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Rigid,Static,Character,Kinematic"), "set_mode", "get_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass");
@@ -931,14 +910,14 @@ void RigidBody2D::_bind_methods() {
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body")));
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
- BIND_CONSTANT(MODE_STATIC);
- BIND_CONSTANT(MODE_KINEMATIC);
- BIND_CONSTANT(MODE_RIGID);
- BIND_CONSTANT(MODE_CHARACTER);
+ BIND_ENUM_CONSTANT(MODE_STATIC);
+ BIND_ENUM_CONSTANT(MODE_KINEMATIC);
+ BIND_ENUM_CONSTANT(MODE_RIGID);
+ BIND_ENUM_CONSTANT(MODE_CHARACTER);
- BIND_CONSTANT(CCD_MODE_DISABLED);
- BIND_CONSTANT(CCD_MODE_CAST_RAY);
- BIND_CONSTANT(CCD_MODE_CAST_SHAPE);
+ BIND_ENUM_CONSTANT(CCD_MODE_DISABLED);
+ BIND_ENUM_CONSTANT(CCD_MODE_CAST_RAY);
+ BIND_ENUM_CONSTANT(CCD_MODE_CAST_SHAPE);
}
RigidBody2D::RigidBody2D()
@@ -1169,12 +1148,10 @@ ObjectID KinematicBody2D::get_collision_collider_id(int p_collision) const {
Object *KinematicBody2D::get_collision_collider_shape(int p_collision) const {
ERR_FAIL_INDEX_V(p_collision, colliders.size(), NULL);
Object *collider = get_collision_collider(p_collision);
- if (collider) {
- CollisionObject2D *obj2d = collider->cast_to<CollisionObject2D>();
- if (obj2d) {
- uint32_t owner = shape_find_owner(colliders[p_collision].collider_shape);
- return obj2d->shape_owner_get_owner(owner);
- }
+ CollisionObject2D *obj2d = Object::cast_to<CollisionObject2D>(collider);
+ if (obj2d) {
+ uint32_t owner = shape_find_owner(colliders[p_collision].collider_shape);
+ return obj2d->shape_owner_get_owner(owner);
}
return NULL;
diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h
index 54bd263b15..1a4b0c0f5c 100644
--- a/scene/2d/physics_body_2d.h
+++ b/scene/2d/physics_body_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp
index 5c1c953a37..197c74352e 100644
--- a/scene/2d/polygon_2d.cpp
+++ b/scene/2d/polygon_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -143,9 +143,7 @@ void Polygon2D::_notification(int p_what) {
Transform2D texmat(tex_rot, tex_ofs);
texmat.scale(tex_scale);
- Size2 tex_size = Vector2(1, 1);
-
- tex_size = texture->get_size();
+ Size2 tex_size = texture->get_size();
uvs.resize(points.size());
if (points.size() == uv.size()) {
@@ -176,9 +174,10 @@ void Polygon2D::_notification(int p_what) {
}
}
- Vector<int> indices = Geometry::triangulate_polygon(points);
+ // Vector<int> indices = Geometry::triangulate_polygon(points);
+ // VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(), indices, points, colors, uvs, texture.is_valid() ? texture->get_rid() : RID());
- VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(), indices, points, colors, uvs, texture.is_valid() ? texture->get_rid() : RID());
+ VS::get_singleton()->canvas_item_add_polygon(get_canvas_item(), points, colors, uvs, texture.is_valid() ? texture->get_rid() : RID(), RID(), antialiased);
} break;
}
@@ -294,6 +293,16 @@ bool Polygon2D::get_invert() const {
return invert;
}
+void Polygon2D::set_antialiased(bool p_antialiased) {
+
+ antialiased = p_antialiased;
+ update();
+}
+bool Polygon2D::get_antialiased() const {
+
+ return antialiased;
+}
+
void Polygon2D::set_invert_border(float p_invert_border) {
invert_border = p_invert_border;
@@ -348,6 +357,9 @@ void Polygon2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_invert", "invert"), &Polygon2D::set_invert);
ClassDB::bind_method(D_METHOD("get_invert"), &Polygon2D::get_invert);
+ ClassDB::bind_method(D_METHOD("set_antialiased", "antialiased"), &Polygon2D::set_antialiased);
+ ClassDB::bind_method(D_METHOD("get_antialiased"), &Polygon2D::get_antialiased);
+
ClassDB::bind_method(D_METHOD("set_invert_border", "invert_border"), &Polygon2D::set_invert_border);
ClassDB::bind_method(D_METHOD("get_invert_border"), &Polygon2D::get_invert_border);
@@ -359,6 +371,7 @@ void Polygon2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
ADD_PROPERTY(PropertyInfo(Variant::POOL_COLOR_ARRAY, "vertex_colors"), "set_vertex_colors", "get_vertex_colors");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased"), "set_antialiased", "get_antialiased");
ADD_GROUP("Texture", "");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture");
ADD_GROUP("Texture", "texture_");
@@ -375,6 +388,7 @@ Polygon2D::Polygon2D() {
invert = 0;
invert_border = 100;
+ antialiased = false;
tex_rot = 0;
tex_tile = true;
tex_scale = Vector2(1, 1);
diff --git a/scene/2d/polygon_2d.h b/scene/2d/polygon_2d.h
index f2cc9452b9..20c3324a50 100644
--- a/scene/2d/polygon_2d.h
+++ b/scene/2d/polygon_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -47,6 +47,7 @@ class Polygon2D : public Node2D {
float tex_rot;
bool invert;
float invert_border;
+ bool antialiased;
Vector2 offset;
mutable bool rect_cache_dirty;
@@ -84,10 +85,13 @@ public:
void set_texture_scale(const Size2 &p_scale);
Size2 get_texture_scale() const;
- void set_invert(bool p_rot);
+ void set_invert(bool p_invert);
bool get_invert() const;
- void set_invert_border(float p_border);
+ void set_antialiased(bool p_antialiased);
+ bool get_antialiased() const;
+
+ void set_invert_border(float p_invert_border);
float get_invert_border() const;
void set_offset(const Vector2 &p_offset);
diff --git a/scene/2d/position_2d.cpp b/scene/2d/position_2d.cpp
index 74ad9c17e2..cde665d422 100644
--- a/scene/2d/position_2d.cpp
+++ b/scene/2d/position_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "position_2d.h"
+
+#include "engine.h"
#include "scene/resources/texture.h"
void Position2D::_draw_cross() {
@@ -52,7 +54,7 @@ void Position2D::_notification(int p_what) {
case NOTIFICATION_DRAW: {
if (!is_inside_tree())
break;
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
_draw_cross();
} break;
diff --git a/scene/2d/position_2d.h b/scene/2d/position_2d.h
index 67ff2c610d..af54fb919a 100644
--- a/scene/2d/position_2d.h
+++ b/scene/2d/position_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp
index cfb4059714..f90331c411 100644
--- a/scene/2d/ray_cast_2d.cpp
+++ b/scene/2d/ray_cast_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,14 +28,16 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "ray_cast_2d.h"
+
#include "collision_object_2d.h"
+#include "engine.h"
#include "physics_body_2d.h"
#include "servers/physics_2d_server.h"
void RayCast2D::set_cast_to(const Vector2 &p_point) {
cast_to = p_point;
- if (is_inside_tree() && (get_tree()->is_editor_hint() || get_tree()->is_debugging_collisions_hint()))
+ if (is_inside_tree() && (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_collisions_hint()))
update();
}
@@ -92,7 +94,7 @@ Vector2 RayCast2D::get_collision_normal() const {
void RayCast2D::set_enabled(bool p_enabled) {
enabled = p_enabled;
- if (is_inside_tree() && !get_tree()->is_editor_hint())
+ if (is_inside_tree() && !Engine::get_singleton()->is_editor_hint())
set_fixed_process(p_enabled);
if (!p_enabled)
collided = false;
@@ -113,11 +115,11 @@ void RayCast2D::set_exclude_parent_body(bool p_exclude_parent_body) {
if (!is_inside_tree())
return;
- if (get_parent()->cast_to<PhysicsBody2D>()) {
+ if (Object::cast_to<PhysicsBody2D>(get_parent())) {
if (exclude_parent_body)
- exclude.insert(get_parent()->cast_to<PhysicsBody2D>()->get_rid());
+ exclude.insert(Object::cast_to<PhysicsBody2D>(get_parent())->get_rid());
else
- exclude.erase(get_parent()->cast_to<PhysicsBody2D>()->get_rid());
+ exclude.erase(Object::cast_to<PhysicsBody2D>(get_parent())->get_rid());
}
}
@@ -132,16 +134,16 @@ void RayCast2D::_notification(int p_what) {
case NOTIFICATION_ENTER_TREE: {
- if (enabled && !get_tree()->is_editor_hint())
+ if (enabled && !Engine::get_singleton()->is_editor_hint())
set_fixed_process(true);
else
set_fixed_process(false);
- if (get_parent()->cast_to<PhysicsBody2D>()) {
+ if (Object::cast_to<PhysicsBody2D>(get_parent())) {
if (exclude_parent_body)
- exclude.insert(get_parent()->cast_to<PhysicsBody2D>()->get_rid());
+ exclude.insert(Object::cast_to<PhysicsBody2D>(get_parent())->get_rid());
else
- exclude.erase(get_parent()->cast_to<PhysicsBody2D>()->get_rid());
+ exclude.erase(Object::cast_to<PhysicsBody2D>(get_parent())->get_rid());
}
} break;
case NOTIFICATION_EXIT_TREE: {
@@ -153,7 +155,7 @@ void RayCast2D::_notification(int p_what) {
case NOTIFICATION_DRAW: {
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
break;
Transform2D xf;
xf.rotate(cast_to.angle());
@@ -225,7 +227,7 @@ void RayCast2D::add_exception_rid(const RID &p_rid) {
void RayCast2D::add_exception(const Object *p_object) {
ERR_FAIL_NULL(p_object);
- CollisionObject2D *co = ((Object *)p_object)->cast_to<CollisionObject2D>();
+ const CollisionObject2D *co = Object::cast_to<CollisionObject2D>(p_object);
if (!co)
return;
add_exception_rid(co->get_rid());
@@ -239,7 +241,7 @@ void RayCast2D::remove_exception_rid(const RID &p_rid) {
void RayCast2D::remove_exception(const Object *p_object) {
ERR_FAIL_NULL(p_object);
- CollisionObject2D *co = ((Object *)p_object)->cast_to<CollisionObject2D>();
+ const CollisionObject2D *co = Object::cast_to<CollisionObject2D>(p_object);
if (!co)
return;
remove_exception_rid(co->get_rid());
diff --git a/scene/2d/ray_cast_2d.h b/scene/2d/ray_cast_2d.h
index 244f4302ad..338de814d2 100644
--- a/scene/2d/ray_cast_2d.h
+++ b/scene/2d/ray_cast_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/remote_transform_2d.cpp b/scene/2d/remote_transform_2d.cpp
index cbd7ac06f5..c139573853 100644
--- a/scene/2d/remote_transform_2d.cpp
+++ b/scene/2d/remote_transform_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -51,11 +51,7 @@ void RemoteTransform2D::_update_remote() {
if (!cache)
return;
- Object *obj = ObjectDB::get_instance(cache);
- if (!obj)
- return;
-
- Node2D *n = obj->cast_to<Node2D>();
+ Node2D *n = Object::cast_to<Node2D>(ObjectDB::get_instance(cache));
if (!n)
return;
@@ -182,7 +178,7 @@ bool RemoteTransform2D::get_update_scale() const {
String RemoteTransform2D::get_configuration_warning() const {
- if (!has_node(remote_node) || !get_node(remote_node) || !get_node(remote_node)->cast_to<Node2D>()) {
+ if (!has_node(remote_node) || !Object::cast_to<Node2D>(get_node(remote_node))) {
return TTR("Path property must point to a valid Node2D node to work.");
}
diff --git a/scene/2d/remote_transform_2d.h b/scene/2d/remote_transform_2d.h
index d58ec14a95..30d5fd1e7c 100644
--- a/scene/2d/remote_transform_2d.h
+++ b/scene/2d/remote_transform_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/screen_button.cpp b/scene/2d/screen_button.cpp
index 37139b2b93..c9bf6675d2 100644
--- a/scene/2d/screen_button.cpp
+++ b/scene/2d/screen_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -112,7 +112,7 @@ void TouchScreenButton::_notification(int p_what) {
if (!is_inside_tree())
return;
- if (!get_tree()->is_editor_hint() && !OS::get_singleton()->has_touchscreen_ui_hint() && visibility == VISIBILITY_TOUCHSCREEN_ONLY)
+ if (!Engine::get_singleton()->is_editor_hint() && !OS::get_singleton()->has_touchscreen_ui_hint() && visibility == VISIBILITY_TOUCHSCREEN_ONLY)
return;
if (finger_pressed != -1) {
@@ -129,7 +129,7 @@ void TouchScreenButton::_notification(int p_what) {
if (!shape_visible)
return;
- if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
+ if (!Engine::get_singleton()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
return;
if (shape.is_valid()) {
Color draw_col = get_tree()->get_debug_collisions_color();
@@ -141,11 +141,11 @@ void TouchScreenButton::_notification(int p_what) {
} break;
case NOTIFICATION_ENTER_TREE: {
- if (!get_tree()->is_editor_hint() && !OS::get_singleton()->has_touchscreen_ui_hint() && visibility == VISIBILITY_TOUCHSCREEN_ONLY)
+ if (!Engine::get_singleton()->is_editor_hint() && !OS::get_singleton()->has_touchscreen_ui_hint() && visibility == VISIBILITY_TOUCHSCREEN_ONLY)
return;
update();
- if (!get_tree()->is_editor_hint())
+ if (!Engine::get_singleton()->is_editor_hint())
set_process_input(is_visible_in_tree());
} break;
@@ -154,7 +154,7 @@ void TouchScreenButton::_notification(int p_what) {
_release(true);
} break;
case NOTIFICATION_VISIBILITY_CHANGED: {
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
break;
if (is_visible_in_tree()) {
set_process_input(true);
@@ -196,11 +196,11 @@ void TouchScreenButton::_input(const Ref<InputEvent> &p_event) {
ERR_FAIL_COND(!is_visible_in_tree());
- const InputEventScreenTouch *st = p_event->cast_to<InputEventScreenTouch>();
+ const InputEventScreenTouch *st = Object::cast_to<InputEventScreenTouch>(*p_event);
if (passby_press) {
- const InputEventScreenDrag *sd = p_event->cast_to<InputEventScreenDrag>();
+ const InputEventScreenDrag *sd = Object::cast_to<InputEventScreenDrag>(*p_event);
if (st && !st->is_pressed() && finger_pressed == st->get_index()) {
diff --git a/scene/2d/screen_button.h b/scene/2d/screen_button.h
index 8923da2ae4..7647070b26 100644
--- a/scene/2d/screen_button.h
+++ b/scene/2d/screen_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -61,7 +61,7 @@ private:
VisibilityMode visibility;
- void _input(const Ref<InputEvent> &p_Event);
+ void _input(const Ref<InputEvent> &p_event);
bool _is_point_inside(const Point2 &p_point);
diff --git a/scene/2d/sprite.cpp b/scene/2d/sprite.cpp
index 2ec529a166..c53faab5f9 100644
--- a/scene/2d/sprite.cpp
+++ b/scene/2d/sprite.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -399,7 +399,7 @@ void ViewportSprite::_notification(int p_what) {
Node *n = get_node(viewport_path);
ERR_FAIL_COND(!n);
- Viewport *vp=n->cast_to<Viewport>();
+ Viewport *vp=Object::cast_to<Viewport>(n);
ERR_FAIL_COND(!vp);
Ref<RenderTargetTexture> rtt = vp->get_render_target_texture();
@@ -467,7 +467,7 @@ void ViewportSprite::set_viewport_path(const NodePath& p_viewport) {
Node *n = get_node(viewport_path);
ERR_FAIL_COND(!n);
- Viewport *vp=n->cast_to<Viewport>();
+ Viewport *vp=Object::cast_to<Viewport>(n);
ERR_FAIL_COND(!vp);
Ref<RenderTargetTexture> rtt = vp->get_render_target_texture();
@@ -544,13 +544,13 @@ Rect2 ViewportSprite::get_item_rect() const {
String ViewportSprite::get_configuration_warning() const {
- if (!has_node(viewport_path) || !get_node(viewport_path) || !get_node(viewport_path)->cast_to<Viewport>()) {
+ if (!has_node(viewport_path) || !Object::cast_to<Viewport>(get_node(viewport_path))) {
return TTR("Path property must point to a valid Viewport node to work. Such Viewport must be set to 'render target' mode.");
} else {
Node *n = get_node(viewport_path);
if (n) {
- Viewport *vp = n->cast_to<Viewport>();
+ Viewport *vp = Object::cast_to<Viewport>(n);
if (!vp->is_set_as_render_target()) {
return TTR("The Viewport set in the path property must be set as 'render target' in order for this sprite to work.");
diff --git a/scene/2d/sprite.h b/scene/2d/sprite.h
index d3f9a5f032..64d30325f2 100644
--- a/scene/2d/sprite.h
+++ b/scene/2d/sprite.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index 0ecf34ce8b..b1cc8c226a 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -50,12 +50,12 @@ void TileMap::_notification(int p_what) {
Node2D *c = this;
while (c) {
- navigation = c->cast_to<Navigation2D>();
+ navigation = Object::cast_to<Navigation2D>(c);
if (navigation) {
break;
}
- c = c->get_parent()->cast_to<Node2D>();
+ c = Object::cast_to<Node2D>(c->get_parent());
}
pending_update = true;
@@ -371,15 +371,13 @@ void TileMap::_update_dirty_quadrants() {
s = tex->get_size();
else {
s = r.size;
- r.position.x += fp_adjust;
- r.position.y += fp_adjust;
- r.size.x -= fp_adjust * 2.0;
- r.size.y -= fp_adjust * 2.0;
}
Rect2 rect;
rect.position = offset.floor();
rect.size = s;
+ rect.size.x += fp_adjust;
+ rect.size.y += fp_adjust;
if (rect.size.y > rect.size.x) {
if ((c.flip_h && (c.flip_v || c.transpose)) || (c.flip_v && !c.transpose))
@@ -1098,20 +1096,20 @@ Transform2D TileMap::get_custom_transform() const {
return custom_transform;
}
-Vector2 TileMap::_map_to_world(int x, int y, bool p_ignore_ofs) const {
+Vector2 TileMap::_map_to_world(int p_x, int p_y, bool p_ignore_ofs) const {
- Vector2 ret = get_cell_transform().xform(Vector2(x, y));
+ Vector2 ret = get_cell_transform().xform(Vector2(p_x, p_y));
if (!p_ignore_ofs) {
switch (half_offset) {
case HALF_OFFSET_X: {
- if (ABS(y) & 1) {
+ if (ABS(p_y) & 1) {
ret += get_cell_transform()[0] * 0.5;
}
} break;
case HALF_OFFSET_Y: {
- if (ABS(x) & 1) {
+ if (ABS(p_x) & 1) {
ret += get_cell_transform()[1] * 0.5;
}
} break;
@@ -1345,15 +1343,18 @@ void TileMap::_bind_methods() {
ADD_SIGNAL(MethodInfo("settings_changed"));
BIND_CONSTANT(INVALID_CELL);
- BIND_CONSTANT(MODE_SQUARE);
- BIND_CONSTANT(MODE_ISOMETRIC);
- BIND_CONSTANT(MODE_CUSTOM);
- BIND_CONSTANT(HALF_OFFSET_X);
- BIND_CONSTANT(HALF_OFFSET_Y);
- BIND_CONSTANT(HALF_OFFSET_DISABLED);
- BIND_CONSTANT(TILE_ORIGIN_TOP_LEFT);
- BIND_CONSTANT(TILE_ORIGIN_CENTER);
- BIND_CONSTANT(TILE_ORIGIN_BOTTOM_LEFT);
+
+ BIND_ENUM_CONSTANT(MODE_SQUARE);
+ BIND_ENUM_CONSTANT(MODE_ISOMETRIC);
+ BIND_ENUM_CONSTANT(MODE_CUSTOM);
+
+ BIND_ENUM_CONSTANT(HALF_OFFSET_X);
+ BIND_ENUM_CONSTANT(HALF_OFFSET_Y);
+ BIND_ENUM_CONSTANT(HALF_OFFSET_DISABLED);
+
+ BIND_ENUM_CONSTANT(TILE_ORIGIN_TOP_LEFT);
+ BIND_ENUM_CONSTANT(TILE_ORIGIN_CENTER);
+ BIND_ENUM_CONSTANT(TILE_ORIGIN_BOTTOM_LEFT);
}
TileMap::TileMap() {
diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h
index f96c14cd9e..c9d14e09d1 100644
--- a/scene/2d/tile_map.h
+++ b/scene/2d/tile_map.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/visibility_notifier_2d.cpp b/scene/2d/visibility_notifier_2d.cpp
index fb71b61d45..8fc8b65217 100644
--- a/scene/2d/visibility_notifier_2d.cpp
+++ b/scene/2d/visibility_notifier_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,20 +29,20 @@
/*************************************************************************/
#include "visibility_notifier_2d.h"
+#include "engine.h"
#include "particles_2d.h"
#include "scene/2d/animated_sprite.h"
#include "scene/2d/physics_body_2d.h"
#include "scene/animation/animation_player.h"
#include "scene/main/viewport.h"
#include "scene/scene_string_names.h"
-#include "scene/scene_string_names.h"
void VisibilityNotifier2D::_enter_viewport(Viewport *p_viewport) {
ERR_FAIL_COND(viewports.has(p_viewport));
viewports.insert(p_viewport);
- if (is_inside_tree() && get_tree()->is_editor_hint())
+ if (is_inside_tree() && Engine::get_singleton()->is_editor_hint())
return;
if (viewports.size() == 1) {
@@ -58,7 +58,7 @@ void VisibilityNotifier2D::_exit_viewport(Viewport *p_viewport) {
ERR_FAIL_COND(!viewports.has(p_viewport));
viewports.erase(p_viewport);
- if (is_inside_tree() && get_tree()->is_editor_hint())
+ if (is_inside_tree() && Engine::get_singleton()->is_editor_hint())
return;
emit_signal(SceneStringNames::get_singleton()->viewport_exited, p_viewport);
@@ -74,7 +74,7 @@ void VisibilityNotifier2D::set_rect(const Rect2 &p_rect) {
rect = p_rect;
if (is_inside_tree()) {
get_world_2d()->_update_notifier(this, get_global_transform().xform(rect));
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
update();
item_rect_changed();
}
@@ -108,7 +108,7 @@ void VisibilityNotifier2D::_notification(int p_what) {
} break;
case NOTIFICATION_DRAW: {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
draw_rect(rect, Color(1, 0.5, 1, 0.2));
}
@@ -184,7 +184,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
if (enabler[ENABLER_FREEZE_BODIES]) {
- RigidBody2D *rb2d = p_node->cast_to<RigidBody2D>();
+ RigidBody2D *rb2d = Object::cast_to<RigidBody2D>(p_node);
if (rb2d && ((rb2d->get_mode() == RigidBody2D::MODE_CHARACTER || (rb2d->get_mode() == RigidBody2D::MODE_RIGID && !rb2d->is_able_to_sleep())))) {
add = true;
@@ -194,7 +194,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
if (enabler[ENABLER_PAUSE_ANIMATIONS]) {
- AnimationPlayer *ap = p_node->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
if (ap) {
add = true;
}
@@ -202,7 +202,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
if (enabler[ENABLER_PAUSE_ANIMATED_SPRITES]) {
- AnimatedSprite *as = p_node->cast_to<AnimatedSprite>();
+ AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
if (as) {
add = true;
}
@@ -210,7 +210,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
if (enabler[ENABLER_PAUSE_PARTICLES]) {
- Particles2D *ps = p_node->cast_to<Particles2D>();
+ Particles2D *ps = Object::cast_to<Particles2D>(p_node);
if (ps) {
add = true;
}
@@ -236,7 +236,7 @@ void VisibilityEnabler2D::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
return;
Node *from = this;
@@ -254,7 +254,7 @@ void VisibilityEnabler2D::_notification(int p_what) {
if (p_what == NOTIFICATION_EXIT_TREE) {
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
return;
for (Map<Node *, Variant>::Element *E = nodes.front(); E; E = E->next()) {
@@ -273,7 +273,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
ERR_FAIL_COND(!nodes.has(p_node));
{
- RigidBody2D *rb = p_node->cast_to<RigidBody2D>();
+ RigidBody2D *rb = Object::cast_to<RigidBody2D>(p_node);
if (rb) {
rb->set_sleeping(!p_enabled);
@@ -281,7 +281,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
}
{
- AnimationPlayer *ap = p_node->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
if (ap) {
@@ -289,7 +289,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
}
}
{
- AnimatedSprite *as = p_node->cast_to<AnimatedSprite>();
+ AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
if (as) {
@@ -301,7 +301,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
}
{
- Particles2D *ps = p_node->cast_to<Particles2D>();
+ Particles2D *ps = Object::cast_to<Particles2D>(p_node);
if (ps) {
@@ -341,13 +341,13 @@ void VisibilityEnabler2D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "process_parent"), "set_enabler", "is_enabler_enabled", ENABLER_PARENT_PROCESS);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "fixed_process_parent"), "set_enabler", "is_enabler_enabled", ENABLER_PARENT_FIXED_PROCESS);
- BIND_CONSTANT(ENABLER_FREEZE_BODIES);
- BIND_CONSTANT(ENABLER_PAUSE_ANIMATIONS);
- BIND_CONSTANT(ENABLER_PAUSE_PARTICLES);
- BIND_CONSTANT(ENABLER_PAUSE_ANIMATED_SPRITES);
- BIND_CONSTANT(ENABLER_PARENT_PROCESS);
- BIND_CONSTANT(ENABLER_PARENT_FIXED_PROCESS);
- BIND_CONSTANT(ENABLER_MAX);
+ BIND_ENUM_CONSTANT(ENABLER_FREEZE_BODIES);
+ BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATIONS);
+ BIND_ENUM_CONSTANT(ENABLER_PAUSE_PARTICLES);
+ BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATED_SPRITES);
+ BIND_ENUM_CONSTANT(ENABLER_PARENT_PROCESS);
+ BIND_ENUM_CONSTANT(ENABLER_PARENT_FIXED_PROCESS);
+ BIND_ENUM_CONSTANT(ENABLER_MAX);
}
void VisibilityEnabler2D::set_enabler(Enabler p_enabler, bool p_enable) {
diff --git a/scene/2d/visibility_notifier_2d.h b/scene/2d/visibility_notifier_2d.h
index 38da69faef..ef0e1affd3 100644
--- a/scene/2d/visibility_notifier_2d.h
+++ b/scene/2d/visibility_notifier_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/y_sort.cpp b/scene/2d/y_sort.cpp
index f258b7e2e0..e0fb3f0645 100644
--- a/scene/2d/y_sort.cpp
+++ b/scene/2d/y_sort.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/2d/y_sort.h b/scene/2d/y_sort.h
index 3564cfc151..de7aa3a317 100644
--- a/scene/2d/y_sort.h
+++ b/scene/2d/y_sort.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp
index c64b807e43..217cb71230 100644
--- a/scene/3d/area.cpp
+++ b/scene/3d/area.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -115,7 +115,7 @@ real_t Area::get_priority() const {
void Area::_body_enter_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = body_map.find(p_id);
@@ -133,7 +133,7 @@ void Area::_body_enter_tree(ObjectID p_id) {
void Area::_body_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = body_map.find(p_id);
ERR_FAIL_COND(!E);
@@ -152,7 +152,7 @@ void Area::_body_inout(int p_status, const RID &p_body, int p_instance, int p_bo
ObjectID objid = p_instance;
Object *obj = ObjectDB::get_instance(objid);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
Map<ObjectID, BodyState>::Element *E = body_map.find(objid);
@@ -228,7 +228,7 @@ void Area::_clear_monitoring() {
for (Map<ObjectID, BodyState>::Element *E = bmcopy.front(); E; E = E->next()) {
Object *obj = ObjectDB::get_instance(E->key());
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
if (!node) //node may have been deleted in previous frame or at other legiminate point
continue;
@@ -258,7 +258,7 @@ void Area::_clear_monitoring() {
for (Map<ObjectID, AreaState>::Element *E = bmcopy.front(); E; E = E->next()) {
Object *obj = ObjectDB::get_instance(E->key());
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
if (!node) //node may have been deleted in previous frame or at other legiminate point
continue;
@@ -312,7 +312,7 @@ void Area::set_monitoring(bool p_enable) {
void Area::_area_enter_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, AreaState>::Element *E = area_map.find(p_id);
@@ -330,7 +330,7 @@ void Area::_area_enter_tree(ObjectID p_id) {
void Area::_area_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, AreaState>::Element *E = area_map.find(p_id);
ERR_FAIL_COND(!E);
@@ -349,7 +349,7 @@ void Area::_area_inout(int p_status, const RID &p_area, int p_instance, int p_ar
ObjectID objid = p_instance;
Object *obj = ObjectDB::get_instance(objid);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
Map<ObjectID, AreaState>::Element *E = area_map.find(objid);
diff --git a/scene/3d/area.h b/scene/3d/area.h
index 5df308fc47..7ea97d0a8c 100644
--- a/scene/3d/area.h
+++ b/scene/3d/area.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/arvr_nodes.cpp b/scene/3d/arvr_nodes.cpp
index 3c99f7fb3a..caf313190b 100644
--- a/scene/3d/arvr_nodes.cpp
+++ b/scene/3d/arvr_nodes.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,14 +40,14 @@ void ARVRCamera::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE: {
// need to find our ARVROrigin parent and let it know we're it's camera!
- ARVROrigin *origin = get_parent()->cast_to<ARVROrigin>();
+ ARVROrigin *origin = Object::cast_to<ARVROrigin>(get_parent());
if (origin != NULL) {
origin->set_tracked_camera(this);
}
}; break;
case NOTIFICATION_EXIT_TREE: {
// need to find our ARVROrigin parent and let it know we're no longer it's camera!
- ARVROrigin *origin = get_parent()->cast_to<ARVROrigin>();
+ ARVROrigin *origin = Object::cast_to<ARVROrigin>(get_parent());
if (origin != NULL) {
origin->clear_tracked_camera_if(this);
}
@@ -60,7 +60,7 @@ String ARVRCamera::get_configuration_warning() const {
return String();
// must be child node of ARVROrigin!
- ARVROrigin *origin = get_parent()->cast_to<ARVROrigin>();
+ ARVROrigin *origin = Object::cast_to<ARVROrigin>(get_parent());
if (origin == NULL) {
return TTR("ARVRCamera must have an ARVROrigin node as its parent");
};
@@ -209,7 +209,7 @@ String ARVRController::get_configuration_warning() const {
return String();
// must be child node of ARVROrigin!
- ARVROrigin *origin = get_parent()->cast_to<ARVROrigin>();
+ ARVROrigin *origin = Object::cast_to<ARVROrigin>(get_parent());
if (origin == NULL) {
return TTR("ARVRController must have an ARVROrigin node as its parent");
};
@@ -264,7 +264,7 @@ void ARVRAnchor::_notification(int p_what) {
// our basis is scaled to the size of the plane the anchor is tracking
// extract the size from our basis and reset the scale
size = transform.basis.get_scale() * world_scale;
- transform.basis.set_scale(Vector3(1.0, 1.0, 1.0));
+ transform.basis.orthonormalize();
// apply our reference frame and set our transform
set_transform(arvr_server->get_reference_frame() * transform);
@@ -321,7 +321,7 @@ String ARVRAnchor::get_configuration_warning() const {
return String();
// must be child node of ARVROrigin!
- ARVROrigin *origin = get_parent()->cast_to<ARVROrigin>();
+ ARVROrigin *origin = Object::cast_to<ARVROrigin>(get_parent());
if (origin == NULL) {
return TTR("ARVRAnchor must have an ARVROrigin node as its parent");
};
diff --git a/scene/3d/arvr_nodes.h b/scene/3d/arvr_nodes.h
index 936519126b..4c14be71b5 100644
--- a/scene/3d/arvr_nodes.h
+++ b/scene/3d/arvr_nodes.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp
index 6abc2caac8..6efdf25f0d 100644
--- a/scene/3d/audio_stream_player_3d.cpp
+++ b/scene/3d/audio_stream_player_3d.cpp
@@ -215,7 +215,7 @@ void AudioStreamPlayer3D::_notification(int p_what) {
velocity_tracker->reset(get_global_transform().origin);
AudioServer::get_singleton()->add_callback(_mix_audios, this);
- if (autoplay && !get_tree()->is_editor_hint()) {
+ if (autoplay && !Engine::get_singleton()->is_editor_hint()) {
play();
}
}
@@ -266,7 +266,7 @@ void AudioStreamPlayer3D::_notification(int p_what) {
if (!sr[i].collider)
continue;
- Area *tarea = sr[i].collider->cast_to<Area>();
+ Area *tarea = Object::cast_to<Area>(sr[i].collider);
if (!tarea)
continue;
@@ -533,6 +533,7 @@ void AudioStreamPlayer3D::_notification(int p_what) {
if (!active) {
set_fixed_process_internal(false);
_change_notify("playing"); //update property in editor
+ emit_signal("finished");
}
}
}
@@ -888,16 +889,18 @@ void AudioStreamPlayer3D::_bind_methods() {
ADD_GROUP("Doppler", "doppler_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "doppler_tracking", PROPERTY_HINT_ENUM, "Disabled,Idle,Fixed"), "set_doppler_tracking", "get_doppler_tracking");
- BIND_CONSTANT(ATTENUATION_INVERSE_DISTANCE);
- BIND_CONSTANT(ATTENUATION_INVERSE_SQUARE_DISTANCE);
- BIND_CONSTANT(ATTENUATION_LOGARITHMIC);
+ BIND_ENUM_CONSTANT(ATTENUATION_INVERSE_DISTANCE);
+ BIND_ENUM_CONSTANT(ATTENUATION_INVERSE_SQUARE_DISTANCE);
+ BIND_ENUM_CONSTANT(ATTENUATION_LOGARITHMIC);
- BIND_CONSTANT(OUT_OF_RANGE_MIX);
- BIND_CONSTANT(OUT_OF_RANGE_PAUSE);
+ BIND_ENUM_CONSTANT(OUT_OF_RANGE_MIX);
+ BIND_ENUM_CONSTANT(OUT_OF_RANGE_PAUSE);
- BIND_CONSTANT(DOPPLER_TRACKING_DISABLED);
- BIND_CONSTANT(DOPPLER_TRACKING_IDLE_STEP);
- BIND_CONSTANT(DOPPLER_TRACKING_FIXED_STEP);
+ BIND_ENUM_CONSTANT(DOPPLER_TRACKING_DISABLED);
+ BIND_ENUM_CONSTANT(DOPPLER_TRACKING_IDLE_STEP);
+ BIND_ENUM_CONSTANT(DOPPLER_TRACKING_FIXED_STEP);
+
+ ADD_SIGNAL(MethodInfo("finished"));
}
AudioStreamPlayer3D::AudioStreamPlayer3D() {
diff --git a/scene/3d/bone_attachment.cpp b/scene/3d/bone_attachment.cpp
index b55b788b54..e1a5329fb0 100644
--- a/scene/3d/bone_attachment.cpp
+++ b/scene/3d/bone_attachment.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -51,9 +51,7 @@ bool BoneAttachment::_set(const StringName &p_name, const Variant &p_value) {
}
void BoneAttachment::_get_property_list(List<PropertyInfo> *p_list) const {
- Skeleton *parent = NULL;
- if (get_parent())
- parent = get_parent()->cast_to<Skeleton>();
+ Skeleton *parent = Object::cast_to<Skeleton>(get_parent());
if (parent) {
@@ -73,8 +71,8 @@ void BoneAttachment::_get_property_list(List<PropertyInfo> *p_list) const {
void BoneAttachment::_check_bind() {
- if (get_parent() && get_parent()->cast_to<Skeleton>()) {
- Skeleton *sk = get_parent()->cast_to<Skeleton>();
+ if (Skeleton *sk = Object::cast_to<Skeleton>(get_parent())) {
+
int idx = sk->find_bone(bone_name);
if (idx != -1) {
sk->bind_child_node_to_bone(idx, this);
@@ -88,8 +86,8 @@ void BoneAttachment::_check_unbind() {
if (bound) {
- if (get_parent() && get_parent()->cast_to<Skeleton>()) {
- Skeleton *sk = get_parent()->cast_to<Skeleton>();
+ if (Skeleton *sk = Object::cast_to<Skeleton>(get_parent())) {
+
int idx = sk->find_bone(bone_name);
if (idx != -1) {
sk->unbind_child_node_from_bone(idx, this);
diff --git a/scene/3d/bone_attachment.h b/scene/3d/bone_attachment.h
index 65908d98a8..159d16157a 100644
--- a/scene/3d/bone_attachment.h
+++ b/scene/3d/bone_attachment.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp
index 3c5eb21d38..02a7845e0b 100644
--- a/scene/3d/camera.cpp
+++ b/scene/3d/camera.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -339,15 +339,8 @@ Vector3 Camera::project_local_ray_normal(const Point2 &p_pos) const {
ERR_FAIL_COND_V(!is_inside_tree(), Vector3());
}
-#if 0
- Size2 viewport_size = get_viewport()->get_visible_rect().size;
- Vector2 cpos = p_pos;
-#else
-
Size2 viewport_size = get_viewport()->get_camera_rect_size();
Vector2 cpos = get_viewport()->get_camera_coords(p_pos);
-#endif
-
Vector3 ray;
if (mode == PROJECTION_ORTHOGONAL) {
@@ -371,17 +364,9 @@ Vector3 Camera::project_ray_origin(const Point2 &p_pos) const {
ERR_FAIL_COND_V(!is_inside_tree(), Vector3());
}
-#if 0
- Size2 viewport_size = get_viewport()->get_visible_rect().size;
- Vector2 cpos = p_pos;
-#else
-
Size2 viewport_size = get_viewport()->get_camera_rect_size();
Vector2 cpos = get_viewport()->get_camera_coords(p_pos);
-#endif
-
ERR_FAIL_COND_V(viewport_size.y == 0, Vector3());
- //float aspect = viewport_size.x / viewport_size.y;
if (mode == PROJECTION_PERSPECTIVE) {
@@ -564,15 +549,15 @@ void Camera::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_doppler_tracking"), &Camera::get_doppler_tracking);
//ClassDB::bind_method(D_METHOD("_camera_make_current"),&Camera::_camera_make_current );
- BIND_CONSTANT(PROJECTION_PERSPECTIVE);
- BIND_CONSTANT(PROJECTION_ORTHOGONAL);
+ BIND_ENUM_CONSTANT(PROJECTION_PERSPECTIVE);
+ BIND_ENUM_CONSTANT(PROJECTION_ORTHOGONAL);
- BIND_CONSTANT(KEEP_WIDTH);
- BIND_CONSTANT(KEEP_HEIGHT);
+ BIND_ENUM_CONSTANT(KEEP_WIDTH);
+ BIND_ENUM_CONSTANT(KEEP_HEIGHT);
- BIND_CONSTANT(DOPPLER_TRACKING_DISABLED)
- BIND_CONSTANT(DOPPLER_TRACKING_IDLE_STEP)
- BIND_CONSTANT(DOPPLER_TRACKING_FIXED_STEP)
+ BIND_ENUM_CONSTANT(DOPPLER_TRACKING_DISABLED)
+ BIND_ENUM_CONSTANT(DOPPLER_TRACKING_IDLE_STEP)
+ BIND_ENUM_CONSTANT(DOPPLER_TRACKING_FIXED_STEP)
}
float Camera::get_fov() const {
diff --git a/scene/3d/camera.h b/scene/3d/camera.h
index 43975892b4..243a7b9b39 100644
--- a/scene/3d/camera.h
+++ b/scene/3d/camera.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -126,9 +126,9 @@ public:
virtual Transform get_camera_transform() const;
- Vector3 project_ray_normal(const Point2 &p_point) const;
- Vector3 project_ray_origin(const Point2 &p_point) const;
- Vector3 project_local_ray_normal(const Point2 &p_point) const;
+ Vector3 project_ray_normal(const Point2 &p_pos) const;
+ Vector3 project_ray_origin(const Point2 &p_pos) const;
+ Vector3 project_local_ray_normal(const Point2 &p_pos) const;
Point2 unproject_position(const Vector3 &p_pos) const;
bool is_position_behind(const Vector3 &p_pos) const;
Vector3 project_position(const Point2 &p_point) const;
diff --git a/scene/3d/character_camera.cpp b/scene/3d/character_camera.cpp
deleted file mode 100644
index 065e21fccd..0000000000
--- a/scene/3d/character_camera.cpp
+++ /dev/null
@@ -1,718 +0,0 @@
-/*************************************************************************/
-/* character_camera.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "character_camera.h"
-
-#include "physics_body.h"
-#if 0
-void CharacterCamera::_set(const String& p_name, const Variant& p_value) {
-
- if (p_name=="type")
- set_camera_type((CameraType)((int)(p_value)));
- else if (p_name=="orbit")
- set_orbit(p_value);
- else if (p_name=="height")
- set_height(p_value);
- else if (p_name=="inclination")
- set_inclination(p_value);
- else if (p_name=="max_orbit_x")
- set_max_orbit_x(p_value);
- else if (p_name=="min_orbit_x")
- set_min_orbit_x(p_value);
- else if (p_name=="max_distance")
- set_max_distance(p_value);
- else if (p_name=="min_distance")
- set_min_distance(p_value);
- else if (p_name=="distance")
- set_distance(p_value);
- else if (p_name=="clip")
- set_clip(p_value);
- else if (p_name=="autoturn")
- set_autoturn(p_value);
- else if (p_name=="autoturn_tolerance")
- set_autoturn_tolerance(p_value);
- else if (p_name=="autoturn_speed")
- set_autoturn_speed(p_value);
-
-}
-Variant CharacterCamera::_get(const String& p_name) const {
-
- if (p_name=="type")
- return get_camera_type();
- else if (p_name=="orbit")
- return get_orbit();
- else if (p_name=="height")
- return get_height();
- else if (p_name=="inclination")
- return get_inclination();
- else if (p_name=="max_orbit_x")
- return get_max_orbit_x();
- else if (p_name=="min_orbit_x")
- return get_min_orbit_x();
- else if (p_name=="max_distance")
- return get_max_distance();
- else if (p_name=="min_distance")
- return get_min_distance();
- else if (p_name=="distance")
- return get_distance();
- else if (p_name=="clip")
- return has_clip();
- else if (p_name=="autoturn")
- return has_autoturn();
- else if (p_name=="autoturn_tolerance")
- return get_autoturn_tolerance();
- else if (p_name=="autoturn_speed")
- return get_autoturn_speed();
-
- return Variant();
-}
-
-void CharacterCamera::_get_property_list( List<PropertyInfo> *p_list) const {
-
- p_list->push_back( PropertyInfo( Variant::INT, "type", PROPERTY_HINT_ENUM, "Fixed,Follow") );
- p_list->push_back( PropertyInfo( Variant::VECTOR2, "orbit" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "height", PROPERTY_HINT_RANGE,"-1024,1024,0.01" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "inclination", PROPERTY_HINT_RANGE,"-90,90,0.01" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "max_orbit_x", PROPERTY_HINT_RANGE,"-90,90,0.01" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "min_orbit_x", PROPERTY_HINT_RANGE,"-90,90,0.01" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "min_distance", PROPERTY_HINT_RANGE,"0,100,0.01" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "max_distance", PROPERTY_HINT_RANGE,"0,100,0.01" ) );
- p_list->push_back( PropertyInfo( Variant::REAL, "distance", PROPERTY_HINT_RANGE,"0.01,1024,0,01") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "clip") );
- p_list->push_back( PropertyInfo( Variant::BOOL, "autoturn") );
- p_list->push_back( PropertyInfo( Variant::REAL, "autoturn_tolerance", PROPERTY_HINT_RANGE,"1,90,0.01") );
- p_list->push_back( PropertyInfo( Variant::REAL, "autoturn_speed", PROPERTY_HINT_RANGE,"1,90,0.01") );
-
-
-}
-
-void CharacterCamera::_compute_camera() {
-
-
- // update the transform with the next proposed transform (camera is 1 logic frame delayed)
-
- /*
- float time = get_root_node()->get_frame_time();
- Vector3 oldp = accepted.get_origin();
- Vector3 newp = proposed.get_origin();
-
- float frame_dist = time *
- if (oldp.distance_to(newp) >
- */
-
- float time = get_root_node()->get_frame_time();
-
- if (true) {
-
- if (clip_ray[0].clipped && clip_ray[1].clipped && clip_ray[2].clipped) {
- //all have been clipped
- proposed.origin=clip_ray[1].clip_pos;
-
-
- } else {
-
- Vector3 rel=proposed.origin-target_pos;
-
- if (clip_ray[0].clipped && !clip_ray[2].clipped) {
-
- float distance = target_pos.distance_to(clip_ray[0].clip_pos);
- real_t amount = 1.0-(distance/clip_len);
- amount = CLAMP(amount,0,1);
-
-
- rel=Matrix3(Vector3(0,1,0)),
- rotate_orbit(Vector2(0,autoturn_speed*time*amount));
- }
- if (clip_ray[2].clipped && !clip_ray[0].clipped) {
-
- float distance = target_pos.distance_to(clip_ray[2].clip_pos);
- real_t amount = 1.0-(distance/clip_len);
- amount = CLAMP(amount,0,1);
-
- rotate_orbit(Vector2(0,-autoturn_speed*time*amount));
- }
-
- }
- }
-
-
- Transform final;
-
- static float pos_ratio = 0.9;
- static float rot_ratio = 10;
-
- Vector3 vec1 = accepted.origin;
- Vector3 vec2 = proposed.origin;
- final.origin = vec2.linear_interpolate(vec1, pos_ratio * time);
-
- Quat q1 = accepted.basis;
- Quat q2 = proposed.basis;
- final.basis = q1.slerp(q2, rot_ratio * time);
-
- accepted=final;
-
- _update_camera();
-
- // calculate the next proposed transform
-
-
- Vector3 new_pos;
- Vector3 character_pos = get_global_transform().origin;
- character_pos.y+=height; // height compensate
-
- if(type==CAMERA_FOLLOW) {
-
-
-
- /* calculate some variables */
-
- Vector3 rel = follow_pos - character_pos;
-
- float l = rel.length();
- Vector3 rel_n = (l > 0) ? (rel/l) : Vector3();
-#if 1
- float ang = Math::acos(rel_n.dot( Vector3(0,1,0) ));
-
- Vector3 tangent = rel_n;
- tangent.y=0; // get rid of y
- if (tangent.length_squared() < CMP_EPSILON2)
- tangent=Vector3(0,0,1); // use Z as tangent if rel is parallel to y
- else
- tangent.normalize();
-
- /* now start applying the rules */
-
- //clip distance
- if (l > max_distance)
- l=max_distance;
- if (l < min_distance)
- l=min_distance;
-
- //fix angle
-
- float ang_min = Math_PI * 0.5 + Math::deg2rad(min_orbit_x);
- float ang_max = Math_PI * 0.5 + Math::deg2rad(max_orbit_x);
-
- if (ang<ang_min)
- ang=ang_min;
- if (ang>ang_max)
- ang=ang_max;
-
- /* finally, rebuild the validated camera position */
-
- new_pos=Vector3(0,Math::cos(ang),0);
- new_pos+=tangent*Math::sin(ang);
- new_pos*=l;
- new_pos+=character_pos;
-#else
- if (l > max_distance)
- l=max_distance;
- if (l < min_distance)
- l=min_distance;
-
- new_pos = character_pos + rel_n * l;
-
-#endif
- follow_pos=new_pos;
-
- } else if (type==CAMERA_FIXED) {
-
-
- if (distance<min_distance)
- distance=min_distance;
- if (distance>max_distance)
- distance=max_distance;
-
- if (orbit.x<min_orbit_x)
- orbit.x=min_orbit_x;
- if (orbit.x>max_orbit_x)
- orbit.x=max_orbit_x;
-
- Matrix3 m;
- m.rotate(Vector3(0,1,0),-Math::deg2rad(orbit.y));
- m.rotate(Vector3(1,0,0),-Math::deg2rad(orbit.x));
-
- new_pos = (m.get_axis(2) * distance) + character_pos;
-
- if (use_lookat_target) {
-
- Transform t = get_global_transform();
- Vector3 y = t.basis.get_axis(1).normalized();
- Vector3 z = lookat_target - character_pos;
- z= (z - y * y.dot(z)).normalized();
- orbit.y = -Math::rad2deg(Math::atan2(z.x,z.z)) + 180;
-
- /*
- Transform t = get_global_transform();
- Vector3 y = t.basis.get_axis(1).normalized();
- Vector3 z = lookat_target - t.origin;
- z= (z - y * y.dot(z)).normalized();
- Vector3 x = z.cross(y).normalized();
- Transform t2;
- t2.basis.set_axis(0,x);
- t2.basis.set_axis(1,y);
- t2.basis.set_axis(2,z);
- t2.origin=t.origin;
-
- Vector3 local = t2.xform_inv(camera_pos);
-
- float ang = Math::atan2(local.x,local.y);
- */
-
- /*
-
- Vector3 vec1 = lookat_target - new_pos;
- vec1.normalize();
- Vector3 vec2 = character_pos - new_pos;
- vec2.normalize();
-
- float dot = vec1.dot(vec2);
- printf("dot %f\n", dot);
- if ( dot < 0.5) {
-
- rotate_orbit(Vector2(0, 90));
- };
- */
-
-
- };
- }
-
- Vector3 target;
- if (use_lookat_target) {
-
- target = lookat_target;
- } else {
- target = character_pos;
- };
-
- proposed.set_look_at(new_pos,target,Vector3(0,1,0));
- proposed = proposed * Transform(Matrix3(Vector3(1,0,0),Math::deg2rad(inclination)),Vector3()); //inclination
-
-
- Vector<RID> exclude;
- exclude.push_back(target_body);
-
-
-
- Vector3 rel = new_pos-target;
-
- for(int i=0;i<3;i++) {
-
- PhysicsServer::get_singleton()->query_intersection(clip_ray[i].query,get_world().get_space(),exclude);
- PhysicsServer::get_singleton()->query_intersection_segment(clip_ray[i].query,target,target+Matrix3(Vector3(0,1,0),Math::deg2rad(autoturn_tolerance*(i-1.0))).xform(rel));
- clip_ray[i].clipped=false;
- clip_ray[i].clip_pos=Vector3();
- }
- target_pos=target;
- clip_len=rel.length();
-
-
-
-}
-
-void CharacterCamera::set_use_lookat_target(bool p_use, const Vector3 &p_lookat) {
-
- use_lookat_target = p_use;
- lookat_target = p_lookat;
-};
-
-
-void CharacterCamera::_notification(int p_what) {
-
- switch(p_what) {
-
- case NOTIFICATION_PROCESS: {
-
-
- _compute_camera();
- } break;
-
- case NOTIFICATION_ENTER_SCENE: {
-
- if (type==CAMERA_FOLLOW) {
-
- set_orbit(orbit);
- set_distance(distance);
- }
-
- accepted=get_global_transform();
- proposed=accepted;
-
- target_body = RID();
-
- Node* parent = get_parent();
- while (parent) {
- PhysicsBody* p = parent->cast_to<PhysicsBody>();
- if (p) {
- target_body = p->get_body();
- break;
- };
- parent = parent->get_parent();
- };
-
- } break;
-
- case NOTIFICATION_TRANSFORM_CHANGED: {
-
- } break;
- case NOTIFICATION_EXIT_SCENE: {
-
- if (type==CAMERA_FOLLOW) {
- distance=get_distance();
- orbit=get_orbit();
-
- }
- } break;
-
- case NOTIFICATION_BECAME_CURRENT: {
-
- set_process(true);
- } break;
- case NOTIFICATION_LOST_CURRENT: {
-
- set_process(false);
- } break;
- }
-
-}
-
-
-void CharacterCamera::set_camera_type(CameraType p_camera_type) {
-
-
- if (p_camera_type==type)
- return;
-
- type=p_camera_type;
-
- // do conversions
-}
-
-CharacterCamera::CameraType CharacterCamera::get_camera_type() const {
-
- return type;
-
-}
-
-void CharacterCamera::set_orbit(const Vector2& p_orbit) {
-
- orbit=p_orbit;
-
- if(type == CAMERA_FOLLOW && is_inside_scene()) {
-
- Vector3 char_pos = get_global_transform().origin;
- char_pos.y+=height;
- float d = char_pos.distance_to(follow_pos);
-
- Matrix3 m;
- m.rotate(Vector3(0,1,0),-orbit.y);
- m.rotate(Vector3(1,0,0),-orbit.x);
-
- follow_pos=char_pos + m.get_axis(2) * d;
-
- }
-
-}
-void CharacterCamera::set_orbit_x(float p_x) {
-
- orbit.x=p_x;
- if(type == CAMERA_FOLLOW && is_inside_scene())
- set_orbit(Vector2( p_x, get_orbit().y ));
-}
-void CharacterCamera::set_orbit_y(float p_y) {
-
-
- orbit.y=p_y;
- if(type == CAMERA_FOLLOW && is_inside_scene())
- set_orbit(Vector2( get_orbit().x, p_y ));
-
-}
-Vector2 CharacterCamera::get_orbit() const {
-
-
- if (type == CAMERA_FOLLOW && is_inside_scene()) {
-
- Vector3 char_pos = get_global_transform().origin;
- char_pos.y+=height;
- Vector3 rel = (follow_pos - char_pos).normalized();
- Vector2 ret_orbit;
- ret_orbit.x = Math::acos( Vector3(0,1,0).dot( rel ) ) - Math_PI * 0.5;
- ret_orbit.y = Math::atan2(rel.x,rel.z);
- return ret_orbit;
- }
- return orbit;
-}
-
-void CharacterCamera::rotate_orbit(const Vector2& p_relative) {
-
- if (type == CAMERA_FOLLOW && is_inside_scene()) {
-
- Matrix3 m;
- m.rotate(Vector3(0,1,0),-Math::deg2rad(p_relative.y));
- m.rotate(Vector3(1,0,0),-Math::deg2rad(p_relative.x));
-
- Vector3 char_pos = get_global_transform().origin;
- char_pos.y+=height;
- Vector3 rel = (follow_pos - char_pos);
- rel = m.xform(rel);
- follow_pos=char_pos+rel;
-
- }
-
- orbit+=p_relative;
-}
-
-void CharacterCamera::set_height(float p_height) {
-
-
- height=p_height;
-}
-
-float CharacterCamera::get_height() const {
-
- return height;
-
-}
-
-void CharacterCamera::set_max_orbit_x(float p_max) {
-
- max_orbit_x=p_max;
-}
-
-float CharacterCamera::get_max_orbit_x() const {
-
- return max_orbit_x;
-}
-
-void CharacterCamera::set_min_orbit_x(float p_min) {
-
- min_orbit_x=p_min;
-}
-
-float CharacterCamera::get_min_orbit_x() const {
-
- return min_orbit_x;
-}
-
-float CharacterCamera::get_min_distance() const {
-
- return min_distance;
-}
-float CharacterCamera::get_max_distance() const {
-
- return max_distance;
-}
-
-void CharacterCamera::set_min_distance(float p_min) {
-
- min_distance=p_min;
-}
-
-void CharacterCamera::set_max_distance(float p_max) {
-
- max_distance = p_max;
-}
-
-
-void CharacterCamera::set_distance(float p_distance) {
-
- if (type == CAMERA_FOLLOW && is_inside_scene()) {
-
- Vector3 char_pos = get_global_transform().origin;
- char_pos.y+=height;
- Vector3 rel = (follow_pos - char_pos).normalized();
- rel*=p_distance;
- follow_pos=char_pos+rel;
-
- }
-
- distance=p_distance;
-}
-
-float CharacterCamera::get_distance() const {
-
- if (type == CAMERA_FOLLOW && is_inside_scene()) {
-
- Vector3 char_pos = get_global_transform().origin;
- char_pos.y+=height;
- return (follow_pos - char_pos).length();
-
- }
-
- return distance;
-}
-
-void CharacterCamera::set_clip(bool p_enabled) {
-
-
- clip=p_enabled;
-}
-
-bool CharacterCamera::has_clip() const {
-
- return clip;
-
-}
-
-
-void CharacterCamera::set_autoturn(bool p_enabled) {
-
-
- autoturn=p_enabled;
-}
-
-bool CharacterCamera::has_autoturn() const {
-
- return autoturn;
-
-}
-
-void CharacterCamera::set_autoturn_tolerance(float p_degrees) {
-
-
- autoturn_tolerance=p_degrees;
-}
-float CharacterCamera::get_autoturn_tolerance() const {
-
-
- return autoturn_tolerance;
-}
-
-void CharacterCamera::set_inclination(float p_degrees) {
-
-
- inclination=p_degrees;
-}
-float CharacterCamera::get_inclination() const {
-
-
- return inclination;
-}
-
-
-void CharacterCamera::set_autoturn_speed(float p_speed) {
-
-
- autoturn_speed=p_speed;
-}
-float CharacterCamera::get_autoturn_speed() const {
-
- return autoturn_speed;
-
-}
-
-
-
-
-
-void CharacterCamera::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("set_camera_type","type"),&CharacterCamera::set_camera_type);
- ClassDB::bind_method(D_METHOD("get_camera_type"),&CharacterCamera::get_camera_type);
- ClassDB::bind_method(D_METHOD("set_orbit","orbit"),&CharacterCamera::set_orbit);
- ClassDB::bind_method(D_METHOD("get_orbit"),&CharacterCamera::get_orbit);
- ClassDB::bind_method(D_METHOD("set_orbit_x","x"),&CharacterCamera::set_orbit_x);
- ClassDB::bind_method(D_METHOD("set_orbit_y","y"),&CharacterCamera::set_orbit_y);
- ClassDB::bind_method(D_METHOD("set_min_orbit_x","x"),&CharacterCamera::set_min_orbit_x);
- ClassDB::bind_method(D_METHOD("get_min_orbit_x"),&CharacterCamera::get_min_orbit_x);
- ClassDB::bind_method(D_METHOD("set_max_orbit_x","x"),&CharacterCamera::set_max_orbit_x);
- ClassDB::bind_method(D_METHOD("get_max_orbit_x"),&CharacterCamera::get_max_orbit_x);
- ClassDB::bind_method(D_METHOD("rotate_orbit"),&CharacterCamera::rotate_orbit);
- ClassDB::bind_method(D_METHOD("set_distance","distance"),&CharacterCamera::set_distance);
- ClassDB::bind_method(D_METHOD("get_distance"),&CharacterCamera::get_distance);
- ClassDB::bind_method(D_METHOD("set_clip","enable"),&CharacterCamera::set_clip);
- ClassDB::bind_method(D_METHOD("has_clip"),&CharacterCamera::has_clip);
- ClassDB::bind_method(D_METHOD("set_autoturn","enable"),&CharacterCamera::set_autoturn);
- ClassDB::bind_method(D_METHOD("has_autoturn"),&CharacterCamera::has_autoturn);
- ClassDB::bind_method(D_METHOD("set_autoturn_tolerance","degrees"),&CharacterCamera::set_autoturn_tolerance);
- ClassDB::bind_method(D_METHOD("get_autoturn_tolerance"),&CharacterCamera::get_autoturn_tolerance);
- ClassDB::bind_method(D_METHOD("set_autoturn_speed","speed"),&CharacterCamera::set_autoturn_speed);
- ClassDB::bind_method(D_METHOD("get_autoturn_speed"),&CharacterCamera::get_autoturn_speed);
- ClassDB::bind_method(D_METHOD("set_use_lookat_target","use","lookat"),&CharacterCamera::set_use_lookat_target, DEFVAL(Vector3()));
-
- ClassDB::bind_method(D_METHOD("_ray_collision"),&CharacterCamera::_ray_collision);
-
- BIND_CONSTANT( CAMERA_FIXED );
- BIND_CONSTANT( CAMERA_FOLLOW );
-}
-
-void CharacterCamera::_ray_collision(Vector3 p_point, Vector3 p_normal, int p_subindex, ObjectID p_against,int p_idx) {
-
-
- clip_ray[p_idx].clip_pos=p_point;
- clip_ray[p_idx].clipped=true;
-};
-
-Transform CharacterCamera::get_camera_transform() const {
-
- return accepted;
-}
-
-
-CharacterCamera::CharacterCamera() {
-
-
- type=CAMERA_FOLLOW;
- height=1;
-
- orbit=Vector2(0,0);
-
- distance=3;
- min_distance=2;
- max_distance=5;
-
- autoturn=false;
- autoturn_tolerance=15;
- autoturn_speed=20;
-
- min_orbit_x=-50;
- max_orbit_x=70;
- inclination=0;
-
- clip=false;
- use_lookat_target = false;
-
- for(int i=0;i<3;i++) {
- clip_ray[i].query=PhysicsServer::get_singleton()->query_create(this, "_ray_collision", i, true);
- clip_ray[i].clipped=false;
- }
-
-
-}
-
-CharacterCamera::~CharacterCamera() {
-
- for(int i=0;i<3;i++) {
- PhysicsServer::get_singleton()->free(clip_ray[i].query);
- }
-
-
-}
-#endif
diff --git a/scene/3d/character_camera.h b/scene/3d/character_camera.h
deleted file mode 100644
index c3a1c70d5e..0000000000
--- a/scene/3d/character_camera.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/*************************************************************************/
-/* character_camera.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 CHARACTER_CAMERA_H
-#define CHARACTER_CAMERA_H
-
-#include "scene/3d/camera.h"
-#if 0
-class CharacterCamera : public Camera {
-
- GDCLASS( CharacterCamera, Camera );
-public:
-
- enum CameraType {
- CAMERA_FIXED,
- CAMERA_FOLLOW
- };
-
-private:
-
-
- CameraType type;
-
- //used for follow
- Vector3 follow_pos;
- //used for fixed
- Vector2 orbit;
- float distance;
-
- float height;
-
- float min_distance;
- float max_distance;
-
- float max_orbit_x;
- float min_orbit_x;
-
- float inclination;
-
- bool clip;
- bool autoturn;
- float autoturn_tolerance;
- float autoturn_speed;
-
-
-
- struct ClipRay {
- RID query;
- bool clipped;
- Vector3 clip_pos;
- };
-
- ClipRay clip_ray[3];
- Vector3 target_pos;
- float clip_len;
-
-
- Transform accepted;
- Vector3 proposed_pos;
-
- bool use_lookat_target;
- Vector3 lookat_target;
-
- void _compute_camera();
-
- RID ray_query;
- RID left_turn_query;
- RID right_turn_query;
- RID target_body;
-
-protected:
-
- virtual void _request_camera_update() {} //ignore
-
- 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;
- void _notification(int p_what);
-
- static void _bind_methods();
-
- void _ray_collision(Vector3 p_point, Vector3 p_normal, int p_subindex, ObjectID p_against,int p_idx);
-
-public:
-
-
- void set_camera_type(CameraType p_camera_type);
- CameraType get_camera_type() const;
-
- void set_orbit(const Vector2& p_orbit);
- void set_orbit_x(float p_x);
- void set_orbit_y(float p_y);
- Vector2 get_orbit() const;
-
- void set_height(float p_height);
- float get_height() const;
-
- void set_inclination(float p_degrees);
- float get_inclination() const;
-
- void set_max_orbit_x(float p_max);
- float get_max_orbit_x() const;
-
- void set_min_orbit_x(float p_min);
- float get_min_orbit_x() const;
-
- void rotate_orbit(const Vector2& p_relative);
-
- void set_distance(float p_distance);
- float get_distance() const;
-
- float get_min_distance() const;
- float get_max_distance() const;
- void set_min_distance(float p_min);
- void set_max_distance(float p_max);
-
-
- void set_clip(bool p_enabled);
- bool has_clip() const;
-
- void set_autoturn(bool p_enabled);
- bool has_autoturn() const;
-
- void set_autoturn_tolerance(float p_degrees);
- float get_autoturn_tolerance() const;
-
- void set_autoturn_speed(float p_speed);
- float get_autoturn_speed() const;
-
- void set_use_lookat_target(bool p_use, const Vector3 &p_lookat = Vector3());
-
- virtual Transform get_camera_transform() const;
-
- CharacterCamera();
- ~CharacterCamera();
-};
-
-VARIANT_ENUM_CAST( CharacterCamera::CameraType );
-
-#endif
-#endif // CHARACTER_CAMERA_H
diff --git a/scene/3d/collision_object.cpp b/scene/3d/collision_object.cpp
index 1aba26673c..c121ef4566 100644
--- a/scene/3d/collision_object.cpp
+++ b/scene/3d/collision_object.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "collision_object.h"
+
#include "scene/scene_string_names.h"
#include "servers/physics_server.h"
diff --git a/scene/3d/collision_object.h b/scene/3d/collision_object.h
index 6c13e5d505..ac35de697c 100644
--- a/scene/3d/collision_object.h
+++ b/scene/3d/collision_object.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/collision_polygon.cpp b/scene/3d/collision_polygon.cpp
index 0c61c96d07..382cbb8f38 100644
--- a/scene/3d/collision_polygon.cpp
+++ b/scene/3d/collision_polygon.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -77,7 +77,7 @@ void CollisionPolygon::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_PARENTED: {
- parent = get_parent()->cast_to<CollisionObject>();
+ parent = Object::cast_to<CollisionObject>(get_parent());
if (parent) {
owner_id = parent->create_shape_owner(this);
_build_polygon();
@@ -147,7 +147,7 @@ bool CollisionPolygon::is_disabled() const {
String CollisionPolygon::get_configuration_warning() const {
- if (!get_parent()->cast_to<CollisionObject>()) {
+ if (!Object::cast_to<CollisionObject>(get_parent())) {
return TTR("CollisionPolygon only serves to provide a collision shape to a CollisionObject derived node. Please only use it as a child of Area, StaticBody, RigidBody, KinematicBody, etc. to give them a shape.");
}
diff --git a/scene/3d/collision_polygon.h b/scene/3d/collision_polygon.h
index beefae182c..dbed1d7154 100644
--- a/scene/3d/collision_polygon.h
+++ b/scene/3d/collision_polygon.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/collision_shape.cpp b/scene/3d/collision_shape.cpp
index 4fd215bd1a..4d4ed30d03 100644
--- a/scene/3d/collision_shape.cpp
+++ b/scene/3d/collision_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -50,9 +50,8 @@ void CollisionShape::make_convex_from_brothers() {
for (int i = 0; i < p->get_child_count(); i++) {
Node *n = p->get_child(i);
- if (n->cast_to<MeshInstance>()) {
+ if (MeshInstance *mi = Object::cast_to<MeshInstance>(n)) {
- MeshInstance *mi = n->cast_to<MeshInstance>();
Ref<Mesh> m = mi->get_mesh();
if (m.is_valid()) {
@@ -68,7 +67,7 @@ void CollisionShape::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_PARENTED: {
- parent = get_parent()->cast_to<CollisionObject>();
+ parent = Object::cast_to<CollisionObject>(get_parent());
if (parent) {
owner_id = parent->create_shape_owner(this);
if (shape.is_valid()) {
@@ -89,13 +88,6 @@ void CollisionShape::_notification(int p_what) {
parent->shape_owner_set_transform(owner_id, get_transform());
}
} break;
- case NOTIFICATION_EXIT_TREE: {
- if (parent) {
- parent->remove_shape_owner(owner_id);
- }
- owner_id = 0;
- parent = NULL;
- } break;
case NOTIFICATION_UNPARENTED: {
if (parent) {
parent->remove_shape_owner(owner_id);
@@ -113,7 +105,7 @@ void CollisionShape::resource_changed(RES res) {
String CollisionShape::get_configuration_warning() const {
- if (!get_parent()->cast_to<CollisionObject>()) {
+ if (!Object::cast_to<CollisionObject>(get_parent())) {
return TTR("CollisionShape only serves to provide a collision shape to a CollisionObject derived node. Please only use it as a child of Area, StaticBody, RigidBody, KinematicBody, etc. to give them a shape.");
}
diff --git a/scene/3d/collision_shape.h b/scene/3d/collision_shape.h
index 277e0dfa77..6d849f42af 100644
--- a/scene/3d/collision_shape.h
+++ b/scene/3d/collision_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/gi_probe.cpp b/scene/3d/gi_probe.cpp
index 2174f924ac..0232ce7653 100644
--- a/scene/3d/gi_probe.cpp
+++ b/scene/3d/gi_probe.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -1091,7 +1091,7 @@ void GIProbe::_plot_mesh(const Transform &p_xform, Ref<Mesh> &p_mesh, Baker *p_b
void GIProbe::_find_meshes(Node *p_at_node, Baker *p_baker) {
- MeshInstance *mi = p_at_node->cast_to<MeshInstance>();
+ MeshInstance *mi = Object::cast_to<MeshInstance>(p_at_node);
if (mi && mi->get_flag(GeometryInstance::FLAG_USE_BAKED_LIGHT)) {
Ref<Mesh> mesh = mi->get_mesh();
if (mesh.is_valid()) {
@@ -1113,9 +1113,8 @@ void GIProbe::_find_meshes(Node *p_at_node, Baker *p_baker) {
}
}
- if (p_at_node->cast_to<Spatial>()) {
+ if (Spatial *s = Object::cast_to<Spatial>(p_at_node)) {
- Spatial *s = p_at_node->cast_to<Spatial>();
Array meshes = p_at_node->call("get_meshes");
for (int i = 0; i < meshes.size(); i += 2) {
@@ -1488,10 +1487,10 @@ void GIProbe::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "compress"), "set_compress", "is_compressed");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "GIProbeData"), "set_probe_data", "get_probe_data");
- BIND_CONSTANT(SUBDIV_64);
- BIND_CONSTANT(SUBDIV_128);
- BIND_CONSTANT(SUBDIV_256);
- BIND_CONSTANT(SUBDIV_MAX);
+ BIND_ENUM_CONSTANT(SUBDIV_64);
+ BIND_ENUM_CONSTANT(SUBDIV_128);
+ BIND_ENUM_CONSTANT(SUBDIV_256);
+ BIND_ENUM_CONSTANT(SUBDIV_MAX);
}
GIProbe::GIProbe() {
diff --git a/scene/3d/gi_probe.h b/scene/3d/gi_probe.h
index 8346437ebd..5a06984a47 100644
--- a/scene/3d/gi_probe.h
+++ b/scene/3d/gi_probe.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/immediate_geometry.cpp b/scene/3d/immediate_geometry.cpp
index 060e088750..64d3f4fcab 100644
--- a/scene/3d/immediate_geometry.cpp
+++ b/scene/3d/immediate_geometry.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/immediate_geometry.h b/scene/3d/immediate_geometry.h
index 2eb4bf1e6b..b2bcb5af1a 100644
--- a/scene/3d/immediate_geometry.h
+++ b/scene/3d/immediate_geometry.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -52,8 +52,8 @@ public:
void set_normal(const Vector3 &p_normal);
void set_tangent(const Plane &p_tangent);
void set_color(const Color &p_color);
- void set_uv(const Vector2 &tex_uv);
- void set_uv2(const Vector2 &tex_uv);
+ void set_uv(const Vector2 &p_uv);
+ void set_uv2(const Vector2 &p_uv2);
void add_vertex(const Vector3 &p_vertex);
diff --git a/scene/3d/interpolated_camera.cpp b/scene/3d/interpolated_camera.cpp
index 36a6660bf9..157ae42571 100644
--- a/scene/3d/interpolated_camera.cpp
+++ b/scene/3d/interpolated_camera.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,12 +29,14 @@
/*************************************************************************/
#include "interpolated_camera.h"
+#include "engine.h"
+
void InterpolatedCamera::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE: {
- if (get_tree()->is_editor_hint() && enabled)
+ if (Engine::get_singleton()->is_editor_hint() && enabled)
set_fixed_process(false);
} break;
@@ -44,7 +46,7 @@ void InterpolatedCamera::_notification(int p_what) {
break;
if (has_node(target)) {
- Spatial *node = get_node(target)->cast_to<Spatial>();
+ Spatial *node = Object::cast_to<Spatial>(get_node(target));
if (!node)
break;
@@ -54,8 +56,8 @@ void InterpolatedCamera::_notification(int p_what) {
local_transform = local_transform.interpolate_with(target_xform, delta);
set_global_transform(local_transform);
- if (node->cast_to<Camera>()) {
- Camera *cam = node->cast_to<Camera>();
+ if (Camera *cam = Object::cast_to<Camera>(node)) {
+
if (cam->get_projection() == get_projection()) {
float new_near = Math::lerp(get_znear(), cam->get_znear(), delta);
@@ -81,7 +83,7 @@ void InterpolatedCamera::_notification(int p_what) {
void InterpolatedCamera::_set_target(const Object *p_target) {
ERR_FAIL_NULL(p_target);
- set_target(p_target->cast_to<Spatial>());
+ set_target(Object::cast_to<Spatial>(p_target));
}
void InterpolatedCamera::set_target(const Spatial *p_target) {
@@ -106,7 +108,7 @@ void InterpolatedCamera::set_interpolation_enabled(bool p_enable) {
return;
enabled = p_enable;
if (p_enable) {
- if (is_inside_tree() && get_tree()->is_editor_hint())
+ if (is_inside_tree() && Engine::get_singleton()->is_editor_hint())
return;
set_process(true);
} else
diff --git a/scene/3d/interpolated_camera.h b/scene/3d/interpolated_camera.h
index c302c32fc9..26e7278c99 100644
--- a/scene/3d/interpolated_camera.h
+++ b/scene/3d/interpolated_camera.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/light.cpp b/scene/3d/light.cpp
index 977f1f81a7..09b253b309 100644
--- a/scene/3d/light.cpp
+++ b/scene/3d/light.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "light.h"
+#include "engine.h"
#include "project_settings.h"
#include "scene/resources/surface_tool.h"
@@ -106,6 +107,16 @@ Color Light::get_shadow_color() const {
return shadow_color;
}
+void Light::set_shadow_reverse_cull_face(bool p_enable) {
+ reverse_cull = p_enable;
+ VS::get_singleton()->light_set_reverse_cull_face_mode(light, reverse_cull);
+}
+
+bool Light::get_shadow_reverse_cull_face() const {
+
+ return reverse_cull;
+}
+
Rect3 Light::get_aabb() const {
if (type == VisualServer::LIGHT_DIRECTIONAL) {
@@ -140,7 +151,7 @@ void Light::_update_visibility() {
#ifdef TOOLS_ENABLED
if (editor_only) {
- if (!get_tree()->is_editor_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint()) {
editor_ok = false;
} else {
editor_ok = (get_tree()->get_edited_scene_root() && (this == get_tree()->get_edited_scene_root() || get_owner() == get_tree()->get_edited_scene_root()));
@@ -202,6 +213,9 @@ void Light::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_color", "color"), &Light::set_color);
ClassDB::bind_method(D_METHOD("get_color"), &Light::get_color);
+ ClassDB::bind_method(D_METHOD("set_shadow_reverse_cull_face", "enable"), &Light::set_shadow_reverse_cull_face);
+ ClassDB::bind_method(D_METHOD("get_shadow_reverse_cull_face"), &Light::get_shadow_reverse_cull_face);
+
ClassDB::bind_method(D_METHOD("set_shadow_color", "shadow_color"), &Light::set_shadow_color);
ClassDB::bind_method(D_METHOD("get_shadow_color"), &Light::get_shadow_color);
@@ -217,25 +231,26 @@ void Light::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_bias", PROPERTY_HINT_RANGE, "-16,16,0.01"), "set_param", "get_param", PARAM_SHADOW_BIAS);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_contact", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_CONTACT_SHADOW_SIZE);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "shadow_max_distance", PROPERTY_HINT_RANGE, "0,65536,0.1"), "set_param", "get_param", PARAM_SHADOW_MAX_DISTANCE);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shadow_reverse_cull_face"), "set_shadow_reverse_cull_face", "get_shadow_reverse_cull_face");
ADD_GROUP("Editor", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_only"), "set_editor_only", "is_editor_only");
ADD_GROUP("", "");
- BIND_CONSTANT(PARAM_ENERGY);
- BIND_CONSTANT(PARAM_SPECULAR);
- BIND_CONSTANT(PARAM_RANGE);
- BIND_CONSTANT(PARAM_ATTENUATION);
- BIND_CONSTANT(PARAM_SPOT_ANGLE);
- BIND_CONSTANT(PARAM_SPOT_ATTENUATION);
- BIND_CONSTANT(PARAM_CONTACT_SHADOW_SIZE);
- BIND_CONSTANT(PARAM_SHADOW_MAX_DISTANCE);
- BIND_CONSTANT(PARAM_SHADOW_SPLIT_1_OFFSET);
- BIND_CONSTANT(PARAM_SHADOW_SPLIT_2_OFFSET);
- BIND_CONSTANT(PARAM_SHADOW_SPLIT_3_OFFSET);
- BIND_CONSTANT(PARAM_SHADOW_NORMAL_BIAS);
- BIND_CONSTANT(PARAM_SHADOW_BIAS);
+ BIND_ENUM_CONSTANT(PARAM_ENERGY);
+ BIND_ENUM_CONSTANT(PARAM_SPECULAR);
+ BIND_ENUM_CONSTANT(PARAM_RANGE);
+ BIND_ENUM_CONSTANT(PARAM_ATTENUATION);
+ BIND_ENUM_CONSTANT(PARAM_SPOT_ANGLE);
+ BIND_ENUM_CONSTANT(PARAM_SPOT_ATTENUATION);
+ BIND_ENUM_CONSTANT(PARAM_CONTACT_SHADOW_SIZE);
+ BIND_ENUM_CONSTANT(PARAM_SHADOW_MAX_DISTANCE);
+ BIND_ENUM_CONSTANT(PARAM_SHADOW_SPLIT_1_OFFSET);
+ BIND_ENUM_CONSTANT(PARAM_SHADOW_SPLIT_2_OFFSET);
+ BIND_ENUM_CONSTANT(PARAM_SHADOW_SPLIT_3_OFFSET);
+ BIND_ENUM_CONSTANT(PARAM_SHADOW_NORMAL_BIAS);
+ BIND_ENUM_CONSTANT(PARAM_SHADOW_BIAS);
- BIND_CONSTANT(PARAM_MAX);
+ BIND_ENUM_CONSTANT(PARAM_MAX);
}
Light::Light(VisualServer::LightType p_type) {
@@ -244,6 +259,8 @@ Light::Light(VisualServer::LightType p_type) {
light = VisualServer::get_singleton()->light_create(p_type);
VS::get_singleton()->instance_set_base(get_instance(), light);
+ reverse_cull = false;
+
editor_only = false;
set_color(Color(1, 1, 1, 1));
set_shadow(false);
@@ -317,18 +334,20 @@ void DirectionalLight::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_split_3", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_param", "get_param", PARAM_SHADOW_SPLIT_3_OFFSET);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "directional_shadow_blend_splits"), "set_blend_splits", "is_blend_splits_enabled");
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_normal_bias", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_param", "get_param", PARAM_SHADOW_NORMAL_BIAS);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "directional_shadow_bias_split_scale", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_param", "get_param", PARAM_SHADOW_BIAS_SPLIT_SCALE);
- BIND_CONSTANT(SHADOW_ORTHOGONAL);
- BIND_CONSTANT(SHADOW_PARALLEL_2_SPLITS);
- BIND_CONSTANT(SHADOW_PARALLEL_4_SPLITS);
+ BIND_ENUM_CONSTANT(SHADOW_ORTHOGONAL);
+ BIND_ENUM_CONSTANT(SHADOW_PARALLEL_2_SPLITS);
+ BIND_ENUM_CONSTANT(SHADOW_PARALLEL_4_SPLITS);
}
DirectionalLight::DirectionalLight()
: Light(VisualServer::LIGHT_DIRECTIONAL) {
- set_param(PARAM_SHADOW_NORMAL_BIAS, 0.2);
- set_param(PARAM_SHADOW_BIAS, 1.0);
+ set_param(PARAM_SHADOW_NORMAL_BIAS, 0.8);
+ set_param(PARAM_SHADOW_BIAS, 0.1);
set_param(PARAM_SHADOW_MAX_DISTANCE, 200);
+ set_param(PARAM_SHADOW_BIAS_SPLIT_SCALE, 0.25);
set_shadow_mode(SHADOW_PARALLEL_4_SPLITS);
blend_splits = false;
diff --git a/scene/3d/light.h b/scene/3d/light.h
index 22ff5c0763..5d589d33e5 100644
--- a/scene/3d/light.h
+++ b/scene/3d/light.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,8 +38,6 @@
@author Juan Linietsky <reduzio@gmail.com>
*/
-class BakedLight;
-
class Light : public VisualInstance {
GDCLASS(Light, VisualInstance);
@@ -60,6 +58,7 @@ public:
PARAM_SHADOW_SPLIT_3_OFFSET = VS::LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET,
PARAM_SHADOW_NORMAL_BIAS = VS::LIGHT_PARAM_SHADOW_NORMAL_BIAS,
PARAM_SHADOW_BIAS = VS::LIGHT_PARAM_SHADOW_BIAS,
+ PARAM_SHADOW_BIAS_SPLIT_SCALE = VS::LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE,
PARAM_MAX = VS::LIGHT_PARAM_MAX
};
@@ -69,6 +68,7 @@ private:
Color shadow_color;
bool shadow;
bool negative;
+ bool reverse_cull;
uint32_t cull_mask;
VS::LightType type;
bool editor_only;
@@ -110,6 +110,9 @@ public:
void set_shadow_color(const Color &p_shadow_color);
Color get_shadow_color() const;
+ void set_shadow_reverse_cull_face(bool p_enable);
+ bool get_shadow_reverse_cull_face() const;
+
virtual Rect3 get_aabb() const;
virtual PoolVector<Face3> get_faces(uint32_t p_usage_flags) const;
diff --git a/scene/3d/listener.cpp b/scene/3d/listener.cpp
index c7d3bac2f8..51cf9fb89b 100644
--- a/scene/3d/listener.cpp
+++ b/scene/3d/listener.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/listener.h b/scene/3d/listener.h
index b66fc7fc38..2c800443b4 100644
--- a/scene/3d/listener.h
+++ b/scene/3d/listener.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp
index da25afbf57..c8215971c4 100644
--- a/scene/3d/mesh_instance.cpp
+++ b/scene/3d/mesh_instance.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -148,7 +148,7 @@ void MeshInstance::_resolve_skeleton_path() {
if (skeleton_path.is_empty())
return;
- Skeleton *skeleton = get_node(skeleton_path) ? get_node(skeleton_path)->cast_to<Skeleton>() : NULL;
+ Skeleton *skeleton = Object::cast_to<Skeleton>(get_node(skeleton_path));
if (skeleton)
VisualServer::get_singleton()->instance_attach_skeleton(get_instance(), skeleton->get_skeleton());
}
@@ -202,13 +202,13 @@ Node *MeshInstance::create_trimesh_collision_node() {
void MeshInstance::create_trimesh_collision() {
- StaticBody *static_body = create_trimesh_collision_node()->cast_to<StaticBody>();
+ StaticBody *static_body = Object::cast_to<StaticBody>(create_trimesh_collision_node());
ERR_FAIL_COND(!static_body);
static_body->set_name(String(get_name()) + "_col");
add_child(static_body);
if (get_owner()) {
- CollisionShape *cshape = static_body->get_child(0)->cast_to<CollisionShape>();
+ CollisionShape *cshape = Object::cast_to<CollisionShape>(static_body->get_child(0));
static_body->set_owner(get_owner());
cshape->set_owner(get_owner());
}
@@ -232,13 +232,13 @@ Node *MeshInstance::create_convex_collision_node() {
void MeshInstance::create_convex_collision() {
- StaticBody *static_body = create_convex_collision_node()->cast_to<StaticBody>();
+ StaticBody *static_body = Object::cast_to<StaticBody>(create_convex_collision_node());
ERR_FAIL_COND(!static_body);
static_body->set_name(String(get_name()) + "_col");
add_child(static_body);
if (get_owner()) {
- CollisionShape *cshape = static_body->get_child(0)->cast_to<CollisionShape>();
+ CollisionShape *cshape = Object::cast_to<CollisionShape>(static_body->get_child(0));
static_body->set_owner(get_owner());
cshape->set_owner(get_owner());
}
diff --git a/scene/3d/mesh_instance.h b/scene/3d/mesh_instance.h
index 1bb2c97d10..8e8c12a592 100644
--- a/scene/3d/mesh_instance.h
+++ b/scene/3d/mesh_instance.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/multimesh_instance.cpp b/scene/3d/multimesh_instance.cpp
index b51953f27c..f90489f1f0 100644
--- a/scene/3d/multimesh_instance.cpp
+++ b/scene/3d/multimesh_instance.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/multimesh_instance.h b/scene/3d/multimesh_instance.h
index 7e14d567ac..cd0e7b463c 100644
--- a/scene/3d/multimesh_instance.h
+++ b/scene/3d/multimesh_instance.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/navigation.cpp b/scene/3d/navigation.cpp
index a1183326d7..d8c7a78648 100644
--- a/scene/3d/navigation.cpp
+++ b/scene/3d/navigation.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -584,7 +584,7 @@ Vector3 Navigation::get_closest_point_to_segment(const Vector3 &p_from, const Ve
}
if (closest_navmesh && closest_navmesh->owner) {
- //print_line("navmesh is: "+closest_navmesh->owner->cast_to<Node>()->get_name());
+ //print_line("navmesh is: "+Object::cast_to<Node>(closest_navmesh->owner)->get_name());
}
return closest_point;
diff --git a/scene/3d/navigation.h b/scene/3d/navigation.h
index 80699fce72..010d16dedd 100644
--- a/scene/3d/navigation.h
+++ b/scene/3d/navigation.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/navigation_mesh.cpp b/scene/3d/navigation_mesh.cpp
index 4c93bcfb5e..7a55f956e0 100644
--- a/scene/3d/navigation_mesh.cpp
+++ b/scene/3d/navigation_mesh.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -208,6 +208,8 @@ void NavigationMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_polygon", "idx"), &NavigationMesh::get_polygon);
ClassDB::bind_method(D_METHOD("clear_polygons"), &NavigationMesh::clear_polygons);
+ ClassDB::bind_method(D_METHOD("create_from_mesh", "mesh"), &NavigationMesh::create_from_mesh);
+
ClassDB::bind_method(D_METHOD("_set_polygons", "polygons"), &NavigationMesh::_set_polygons);
ClassDB::bind_method(D_METHOD("_get_polygons"), &NavigationMesh::_get_polygons);
@@ -245,7 +247,7 @@ void NavigationMeshInstance::set_enabled(bool p_enabled) {
}
if (debug_view) {
- MeshInstance *dm = debug_view->cast_to<MeshInstance>();
+ MeshInstance *dm = Object::cast_to<MeshInstance>(debug_view);
if (is_enabled()) {
dm->set_material_override(get_tree()->get_debug_navigation_material());
} else {
@@ -271,7 +273,7 @@ void NavigationMeshInstance::_notification(int p_what) {
Spatial *c = this;
while (c) {
- navigation = c->cast_to<Navigation>();
+ navigation = Object::cast_to<Navigation>(c);
if (navigation) {
if (enabled && navmesh.is_valid()) {
@@ -340,7 +342,7 @@ void NavigationMeshInstance::set_navigation_mesh(const Ref<NavigationMesh> &p_na
}
if (debug_view && navmesh.is_valid()) {
- debug_view->cast_to<MeshInstance>()->set_mesh(navmesh->get_debug_mesh());
+ Object::cast_to<MeshInstance>(debug_view)->set_mesh(navmesh->get_debug_mesh());
}
update_gizmo();
@@ -363,10 +365,10 @@ String NavigationMeshInstance::get_configuration_warning() const {
const Spatial *c = this;
while (c) {
- if (c->cast_to<Navigation>())
+ if (Object::cast_to<Navigation>(c))
return String();
- c = c->get_parent()->cast_to<Spatial>();
+ c = Object::cast_to<Spatial>(c->get_parent());
}
return TTR("NavigationMeshInstance must be a child or grandchild to a Navigation node. It only provides navigation data.");
diff --git a/scene/3d/navigation_mesh.h b/scene/3d/navigation_mesh.h
index e5a3dc7b43..36fe3ee34b 100644
--- a/scene/3d/navigation_mesh.h
+++ b/scene/3d/navigation_mesh.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/particles.cpp b/scene/3d/particles.cpp
index d83469da62..80c706898d 100644
--- a/scene/3d/particles.cpp
+++ b/scene/3d/particles.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -347,9 +347,10 @@ void Particles::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "draw_pass_" + itos(i + 1), PROPERTY_HINT_RESOURCE_TYPE, "Mesh"), "set_draw_pass_mesh", "get_draw_pass_mesh", i);
}
- BIND_CONSTANT(DRAW_ORDER_INDEX);
- BIND_CONSTANT(DRAW_ORDER_LIFETIME);
- BIND_CONSTANT(DRAW_ORDER_VIEW_DEPTH);
+ BIND_ENUM_CONSTANT(DRAW_ORDER_INDEX);
+ BIND_ENUM_CONSTANT(DRAW_ORDER_LIFETIME);
+ BIND_ENUM_CONSTANT(DRAW_ORDER_VIEW_DEPTH);
+
BIND_CONSTANT(MAX_DRAW_PASSES);
}
@@ -408,7 +409,7 @@ void ParticlesMaterial::init_shaders() {
shader_names->anim_speed = "anim_speed";
shader_names->anim_offset = "anim_offset";
- shader_names->initial_linear_velocity = "initial_linear_velocity_random";
+ shader_names->initial_linear_velocity_random = "initial_linear_velocity_random";
shader_names->initial_angle_random = "initial_angle_random";
shader_names->angular_velocity_random = "angular_velocity_random";
shader_names->orbit_velocity_random = "orbit_velocity_random";
@@ -755,18 +756,20 @@ void ParticlesMaterial::_update_shader() {
code += " pos.z=0.0; \n";
}
code += " //apply linear acceleration\n";
- code += " force+=normalize(VELOCITY) * (linear_accel+tex_linear_accel)*mix(1.0,rand_from_seed(alt_seed),linear_accel_random);\n";
+ code += " force+= length(VELOCITY) > 0.0 ? normalize(VELOCITY) * (linear_accel+tex_linear_accel)*mix(1.0,rand_from_seed(alt_seed),linear_accel_random) : vec3(0.0);\n";
code += " //apply radial acceleration\n";
code += " vec3 org = vec3(0.0);\n";
- code += " // if (!p_system->local_coordinates)\n";
- code += " //org=p_transform.origin;\n";
- code += " force+=normalize(pos-org) * (radial_accel+tex_radial_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random);\n";
+ code += " // if (!p_system->local_coordinates)\n";
+ code += " //org=p_transform.origin;\n";
+ code += " vec3 diff = pos-org;\n";
+ code += " force+=length(diff) > 0.0 ? normalize(diff) * (radial_accel+tex_radial_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random) : vec3(0.0);\n";
code += " //apply tangential acceleration;\n";
if (flags[FLAG_DISABLE_Z]) {
- code += " force+=vec3(normalize((pos-org).yx * vec2(-1.0,1.0)),0.0) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random));\n";
+ code += " force+=length(diff.yx) > 0.0 ? vec3(normalize(diff.yx * vec2(-1.0,1.0)),0.0) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random)) : vec3(0.0);\n";
} else {
- code += " force+=normalize(cross(normalize(pos-org),normalize(gravity))) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random));\n";
+ code += " vec3 crossDiff = cross(normalize(diff),normalize(gravity));\n";
+ code += " force+=length(crossDiff) > 0.0 ? normalize(crossDiff) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random)) : vec3(0.0);\n";
}
code += " //apply attractor forces\n";
code += " VELOCITY+=force * DELTA;\n";
@@ -1266,9 +1269,8 @@ int ParticlesMaterial::get_emission_point_count() const {
void ParticlesMaterial::set_trail_divisor(int p_divisor) {
- VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->trail_divisor, p_divisor);
trail_divisor = p_divisor;
- _change_notify();
+ VisualServer::get_singleton()->material_set_param(_get_material(), shader_names->trail_divisor, p_divisor);
}
int ParticlesMaterial::get_trail_divisor() const {
@@ -1486,29 +1488,29 @@ void ParticlesMaterial::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "anim_offset_curve", PROPERTY_HINT_RESOURCE_TYPE, "CurveTexture"), "set_param_texture", "get_param_texture", PARAM_ANIM_OFFSET);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "anim_loop"), "set_flag", "get_flag", FLAG_ANIM_LOOP);
- BIND_CONSTANT(PARAM_INITIAL_LINEAR_VELOCITY);
- BIND_CONSTANT(PARAM_ANGULAR_VELOCITY);
- BIND_CONSTANT(PARAM_ORBIT_VELOCITY);
- BIND_CONSTANT(PARAM_LINEAR_ACCEL);
- BIND_CONSTANT(PARAM_RADIAL_ACCEL);
- BIND_CONSTANT(PARAM_TANGENTIAL_ACCEL);
- BIND_CONSTANT(PARAM_DAMPING);
- BIND_CONSTANT(PARAM_ANGLE);
- BIND_CONSTANT(PARAM_SCALE);
- BIND_CONSTANT(PARAM_HUE_VARIATION);
- BIND_CONSTANT(PARAM_ANIM_SPEED);
- BIND_CONSTANT(PARAM_ANIM_OFFSET);
- BIND_CONSTANT(PARAM_MAX);
-
- BIND_CONSTANT(FLAG_ALIGN_Y_TO_VELOCITY);
- BIND_CONSTANT(FLAG_ROTATE_Y);
- BIND_CONSTANT(FLAG_MAX);
-
- BIND_CONSTANT(EMISSION_SHAPE_POINT);
- BIND_CONSTANT(EMISSION_SHAPE_SPHERE);
- BIND_CONSTANT(EMISSION_SHAPE_BOX);
- BIND_CONSTANT(EMISSION_SHAPE_POINTS);
- BIND_CONSTANT(EMISSION_SHAPE_DIRECTED_POINTS);
+ BIND_ENUM_CONSTANT(PARAM_INITIAL_LINEAR_VELOCITY);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_VELOCITY);
+ BIND_ENUM_CONSTANT(PARAM_ORBIT_VELOCITY);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_ACCEL);
+ BIND_ENUM_CONSTANT(PARAM_RADIAL_ACCEL);
+ BIND_ENUM_CONSTANT(PARAM_TANGENTIAL_ACCEL);
+ BIND_ENUM_CONSTANT(PARAM_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_ANGLE);
+ BIND_ENUM_CONSTANT(PARAM_SCALE);
+ BIND_ENUM_CONSTANT(PARAM_HUE_VARIATION);
+ BIND_ENUM_CONSTANT(PARAM_ANIM_SPEED);
+ BIND_ENUM_CONSTANT(PARAM_ANIM_OFFSET);
+ BIND_ENUM_CONSTANT(PARAM_MAX);
+
+ BIND_ENUM_CONSTANT(FLAG_ALIGN_Y_TO_VELOCITY);
+ BIND_ENUM_CONSTANT(FLAG_ROTATE_Y);
+ BIND_ENUM_CONSTANT(FLAG_MAX);
+
+ BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINT);
+ BIND_ENUM_CONSTANT(EMISSION_SHAPE_SPHERE);
+ BIND_ENUM_CONSTANT(EMISSION_SHAPE_BOX);
+ BIND_ENUM_CONSTANT(EMISSION_SHAPE_POINTS);
+ BIND_ENUM_CONSTANT(EMISSION_SHAPE_DIRECTED_POINTS);
}
ParticlesMaterial::ParticlesMaterial()
diff --git a/scene/3d/particles.h b/scene/3d/particles.h
index 31ca85a59a..2c109d6ec8 100644
--- a/scene/3d/particles.h
+++ b/scene/3d/particles.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -88,7 +88,7 @@ public:
void set_emitting(bool p_emitting);
void set_amount(int p_amount);
void set_lifetime(float p_lifetime);
- void set_one_shot(bool p_enabled);
+ void set_one_shot(bool p_one_shot);
void set_pre_process_time(float p_time);
void set_explosiveness_ratio(float p_ratio);
void set_randomness_ratio(float p_ratio);
diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp
index f8df21004e..ed4d88417c 100644
--- a/scene/3d/path.cpp
+++ b/scene/3d/path.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,32 +28,16 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "path.h"
+
+#include "engine.h"
#include "scene/scene_string_names.h"
void Path::_notification(int p_what) {
-#if 0
- if (p_what==NOTIFICATION_DRAW && curve.is_valid() && is_inside_scene() && get_scene()->is_editor_hint()) {
- //draw the curve!!
-
- for(int i=0;i<curve->get_point_count();i++) {
-
- Vector2 prev_p=curve->get_point_pos(i);
-
- for(int j=1;j<=8;j++) {
-
- real_t frac = j/8.0;
- Vector2 p = curve->interpolate(i,frac);
- draw_line(prev_p,p,Color(0.5,0.6,1.0,0.7),2);
- prev_p=p;
- }
- }
- }
-#endif
}
void Path::_curve_changed() {
- if (is_inside_tree() && get_tree()->is_editor_hint())
+ if (is_inside_tree() && Engine::get_singleton()->is_editor_hint())
update_gizmo();
}
@@ -172,8 +156,7 @@ void PathFollow::_notification(int p_what) {
Node *parent = get_parent();
if (parent) {
- path = parent->cast_to<Path>();
- if (path) {
+ if ((path = Object::cast_to<Path>(parent))) {
_update_transform();
}
}
@@ -281,10 +264,10 @@ 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);
- BIND_CONSTANT(ROTATION_NONE);
- BIND_CONSTANT(ROTATION_Y);
- BIND_CONSTANT(ROTATION_XY);
- BIND_CONSTANT(ROTATION_XYZ);
+ BIND_ENUM_CONSTANT(ROTATION_NONE);
+ BIND_ENUM_CONSTANT(ROTATION_Y);
+ BIND_ENUM_CONSTANT(ROTATION_XY);
+ BIND_ENUM_CONSTANT(ROTATION_XYZ);
}
void PathFollow::set_offset(float p_offset) {
diff --git a/scene/3d/path.h b/scene/3d/path.h
index eeae0668a7..0f9a169f72 100644
--- a/scene/3d/path.h
+++ b/scene/3d/path.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp
index dc8f72d77e..a0a393e8ed 100644
--- a/scene/3d/physics_body.cpp
+++ b/scene/3d/physics_body.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "physics_body.h"
+
+#include "engine.h"
#include "method_bind_ext.gen.inc"
#include "scene/scene_string_names.h"
@@ -114,7 +116,7 @@ bool PhysicsBody::get_collision_layer_bit(int p_bit) const {
void PhysicsBody::add_collision_exception_with(Node *p_node) {
ERR_FAIL_NULL(p_node);
- PhysicsBody *physics_body = p_node->cast_to<PhysicsBody>();
+ PhysicsBody *physics_body = Object::cast_to<PhysicsBody>(p_node);
if (!physics_body) {
ERR_EXPLAIN("Collision exception only works between two objects of PhysicsBody type");
}
@@ -125,7 +127,7 @@ void PhysicsBody::add_collision_exception_with(Node *p_node) {
void PhysicsBody::remove_collision_exception_with(Node *p_node) {
ERR_FAIL_NULL(p_node);
- PhysicsBody *physics_body = p_node->cast_to<PhysicsBody>();
+ PhysicsBody *physics_body = Object::cast_to<PhysicsBody>(p_node);
if (!physics_body) {
ERR_EXPLAIN("Collision exception only works between two objects of PhysicsBody type");
}
@@ -252,7 +254,7 @@ StaticBody::~StaticBody() {
void RigidBody::_body_enter_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
@@ -276,7 +278,7 @@ void RigidBody::_body_enter_tree(ObjectID p_id) {
void RigidBody::_body_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
ERR_FAIL_COND(!E);
@@ -301,7 +303,7 @@ void RigidBody::_body_inout(int p_status, ObjectID p_instance, int p_body_shape,
ObjectID objid = p_instance;
Object *obj = ObjectDB::get_instance(objid);
- Node *node = obj ? obj->cast_to<Node>() : NULL;
+ Node *node = Object::cast_to<Node>(obj);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(objid);
@@ -367,7 +369,7 @@ void RigidBody::_direct_state_changed(Object *p_state) {
//eh.. fuck
#ifdef DEBUG_ENABLED
- state = p_state->cast_to<PhysicsDirectBodyState>();
+ state = Object::cast_to<PhysicsDirectBodyState>(p_state);
#else
state = (PhysicsDirectBodyState *)p_state; //trust it
#endif
@@ -476,13 +478,13 @@ void RigidBody::_notification(int p_what) {
#ifdef TOOLS_ENABLED
if (p_what == NOTIFICATION_ENTER_TREE) {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
set_notify_local_transform(true); //used for warnings and only in editor
}
}
if (p_what == NOTIFICATION_LOCAL_TRANSFORM_CHANGED) {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
update_configuration_warning();
}
}
@@ -840,7 +842,7 @@ void RigidBody::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_colliding_bodies"), &RigidBody::get_colliding_bodies);
- BIND_VMETHOD(MethodInfo("_integrate_forces", PropertyInfo(Variant::OBJECT, "state:PhysicsDirectBodyState")));
+ BIND_VMETHOD(MethodInfo("_integrate_forces", PropertyInfo(Variant::OBJECT, "state", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsDirectBodyState")));
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Rigid,Static,Character,Kinematic"), "set_mode", "get_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass");
@@ -868,10 +870,10 @@ void RigidBody::_bind_methods() {
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body")));
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
- BIND_CONSTANT(MODE_STATIC);
- BIND_CONSTANT(MODE_KINEMATIC);
- BIND_CONSTANT(MODE_RIGID);
- BIND_CONSTANT(MODE_CHARACTER);
+ BIND_ENUM_CONSTANT(MODE_STATIC);
+ BIND_ENUM_CONSTANT(MODE_KINEMATIC);
+ BIND_ENUM_CONSTANT(MODE_RIGID);
+ BIND_ENUM_CONSTANT(MODE_CHARACTER);
}
RigidBody::RigidBody()
@@ -1103,7 +1105,7 @@ Object *KinematicBody::get_collision_collider_shape(int p_collision) const {
ERR_FAIL_INDEX_V(p_collision, colliders.size(), NULL);
Object *collider = get_collision_collider(p_collision);
if (collider) {
- CollisionObject *obj2d = collider->cast_to<CollisionObject>();
+ CollisionObject *obj2d = Object::cast_to<CollisionObject>(collider);
if (obj2d) {
uint32_t owner = shape_find_owner(colliders[p_collision].collider_shape);
return obj2d->shape_owner_get_owner(owner);
diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h
index 83811a1d93..23d752ad76 100644
--- a/scene/3d/physics_body.h
+++ b/scene/3d/physics_body.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/physics_joint.cpp b/scene/3d/physics_joint.cpp
index 61d496935b..aa127ab79f 100644
--- a/scene/3d/physics_joint.cpp
+++ b/scene/3d/physics_joint.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -55,8 +55,8 @@ void Joint::_update_joint(bool p_only_free) {
if (!node_a && !node_b)
return;
- PhysicsBody *body_a = node_a ? node_a->cast_to<PhysicsBody>() : (PhysicsBody *)NULL;
- PhysicsBody *body_b = node_b ? node_b->cast_to<PhysicsBody>() : (PhysicsBody *)NULL;
+ PhysicsBody *body_a = Object::cast_to<PhysicsBody>(node_a);
+ PhysicsBody *body_b = Object::cast_to<PhysicsBody>(node_b);
if (!body_a && !body_b)
return;
@@ -188,9 +188,9 @@ void PinJoint::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "params/damping", PROPERTY_HINT_RANGE, "0.01,8.0,0.01"), "set_param", "get_param", PARAM_DAMPING);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "params/impulse_clamp", PROPERTY_HINT_RANGE, "0.0,64.0,0.01"), "set_param", "get_param", PARAM_IMPULSE_CLAMP);
- BIND_CONSTANT(PARAM_BIAS);
- BIND_CONSTANT(PARAM_DAMPING);
- BIND_CONSTANT(PARAM_IMPULSE_CLAMP);
+ BIND_ENUM_CONSTANT(PARAM_BIAS);
+ BIND_ENUM_CONSTANT(PARAM_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_IMPULSE_CLAMP);
}
void PinJoint::set_param(Param p_param, float p_value) {
@@ -282,19 +282,19 @@ void HingeJoint::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "motor/target_velocity", PROPERTY_HINT_RANGE, "0.01,4096,0.01"), "set_param", "get_param", PARAM_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "motor/max_impulse", PROPERTY_HINT_RANGE, "0.01,1024,0.01"), "set_param", "get_param", PARAM_MOTOR_MAX_IMPULSE);
- BIND_CONSTANT(PARAM_BIAS);
- BIND_CONSTANT(PARAM_LIMIT_UPPER);
- BIND_CONSTANT(PARAM_LIMIT_LOWER);
- BIND_CONSTANT(PARAM_LIMIT_BIAS);
- BIND_CONSTANT(PARAM_LIMIT_SOFTNESS);
- BIND_CONSTANT(PARAM_LIMIT_RELAXATION);
- BIND_CONSTANT(PARAM_MOTOR_TARGET_VELOCITY);
- BIND_CONSTANT(PARAM_MOTOR_MAX_IMPULSE);
- BIND_CONSTANT(PARAM_MAX);
+ BIND_ENUM_CONSTANT(PARAM_BIAS);
+ BIND_ENUM_CONSTANT(PARAM_LIMIT_UPPER);
+ BIND_ENUM_CONSTANT(PARAM_LIMIT_LOWER);
+ BIND_ENUM_CONSTANT(PARAM_LIMIT_BIAS);
+ BIND_ENUM_CONSTANT(PARAM_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_LIMIT_RELAXATION);
+ BIND_ENUM_CONSTANT(PARAM_MOTOR_TARGET_VELOCITY);
+ BIND_ENUM_CONSTANT(PARAM_MOTOR_MAX_IMPULSE);
+ BIND_ENUM_CONSTANT(PARAM_MAX);
- BIND_CONSTANT(FLAG_USE_LIMIT);
- BIND_CONSTANT(FLAG_ENABLE_MOTOR);
- BIND_CONSTANT(FLAG_MAX);
+ BIND_ENUM_CONSTANT(FLAG_USE_LIMIT);
+ BIND_ENUM_CONSTANT(FLAG_ENABLE_MOTOR);
+ BIND_ENUM_CONSTANT(FLAG_MAX);
}
void HingeJoint::set_param(Param p_param, float p_value) {
@@ -428,31 +428,31 @@ void SliderJoint::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_ortho/restitution", PROPERTY_HINT_RANGE, "0.01,16.0,0.01"), "set_param", "get_param", PARAM_ANGULAR_ORTHOGONAL_RESTITUTION);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_ortho/damping", PROPERTY_HINT_RANGE, "0,16.0,0.01"), "set_param", "get_param", PARAM_ANGULAR_ORTHOGONAL_DAMPING);
- BIND_CONSTANT(PARAM_LINEAR_LIMIT_UPPER);
- BIND_CONSTANT(PARAM_LINEAR_LIMIT_LOWER);
- BIND_CONSTANT(PARAM_LINEAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(PARAM_LINEAR_LIMIT_RESTITUTION);
- BIND_CONSTANT(PARAM_LINEAR_LIMIT_DAMPING);
- BIND_CONSTANT(PARAM_LINEAR_MOTION_SOFTNESS);
- BIND_CONSTANT(PARAM_LINEAR_MOTION_RESTITUTION);
- BIND_CONSTANT(PARAM_LINEAR_MOTION_DAMPING);
- BIND_CONSTANT(PARAM_LINEAR_ORTHOGONAL_SOFTNESS);
- BIND_CONSTANT(PARAM_LINEAR_ORTHOGONAL_RESTITUTION);
- BIND_CONSTANT(PARAM_LINEAR_ORTHOGONAL_DAMPING);
-
- BIND_CONSTANT(PARAM_ANGULAR_LIMIT_UPPER);
- BIND_CONSTANT(PARAM_ANGULAR_LIMIT_LOWER);
- BIND_CONSTANT(PARAM_ANGULAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(PARAM_ANGULAR_LIMIT_RESTITUTION);
- BIND_CONSTANT(PARAM_ANGULAR_LIMIT_DAMPING);
- BIND_CONSTANT(PARAM_ANGULAR_MOTION_SOFTNESS);
- BIND_CONSTANT(PARAM_ANGULAR_MOTION_RESTITUTION);
- BIND_CONSTANT(PARAM_ANGULAR_MOTION_DAMPING);
- BIND_CONSTANT(PARAM_ANGULAR_ORTHOGONAL_SOFTNESS);
- BIND_CONSTANT(PARAM_ANGULAR_ORTHOGONAL_RESTITUTION);
- BIND_CONSTANT(PARAM_ANGULAR_ORTHOGONAL_DAMPING);
-
- BIND_CONSTANT(PARAM_MAX);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_LIMIT_UPPER);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_LIMIT_LOWER);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_LIMIT_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_LIMIT_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_MOTION_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_MOTION_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_MOTION_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_ORTHOGONAL_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_ORTHOGONAL_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_ORTHOGONAL_DAMPING);
+
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_LIMIT_UPPER);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_LIMIT_LOWER);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_LIMIT_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_LIMIT_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_MOTION_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_MOTION_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_MOTION_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_ORTHOGONAL_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_ORTHOGONAL_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_ORTHOGONAL_DAMPING);
+
+ BIND_ENUM_CONSTANT(PARAM_MAX);
}
void SliderJoint::set_param(Param p_param, float p_value) {
@@ -560,12 +560,12 @@ void ConeTwistJoint::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "softness", PROPERTY_HINT_RANGE, "0.01,16.0,0.01"), "set_param", "get_param", PARAM_SOFTNESS);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "relaxation", PROPERTY_HINT_RANGE, "0.01,16.0,0.01"), "set_param", "get_param", PARAM_RELAXATION);
- BIND_CONSTANT(PARAM_SWING_SPAN);
- BIND_CONSTANT(PARAM_TWIST_SPAN);
- BIND_CONSTANT(PARAM_BIAS);
- BIND_CONSTANT(PARAM_SOFTNESS);
- BIND_CONSTANT(PARAM_RELAXATION);
- BIND_CONSTANT(PARAM_MAX);
+ BIND_ENUM_CONSTANT(PARAM_SWING_SPAN);
+ BIND_ENUM_CONSTANT(PARAM_TWIST_SPAN);
+ BIND_ENUM_CONSTANT(PARAM_BIAS);
+ BIND_ENUM_CONSTANT(PARAM_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_RELAXATION);
+ BIND_ENUM_CONSTANT(PARAM_MAX);
}
void ConeTwistJoint::set_param(Param p_param, float p_value) {
@@ -773,26 +773,26 @@ void Generic6DOFJoint::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_z/target_velocity"), "set_param_z", "get_param_z", PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "angular_motor_z/force_limit"), "set_param_z", "get_param_z", PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
- BIND_CONSTANT(PARAM_LINEAR_LOWER_LIMIT);
- BIND_CONSTANT(PARAM_LINEAR_UPPER_LIMIT);
- BIND_CONSTANT(PARAM_LINEAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(PARAM_LINEAR_RESTITUTION);
- BIND_CONSTANT(PARAM_LINEAR_DAMPING);
- BIND_CONSTANT(PARAM_ANGULAR_LOWER_LIMIT);
- BIND_CONSTANT(PARAM_ANGULAR_UPPER_LIMIT);
- BIND_CONSTANT(PARAM_ANGULAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(PARAM_ANGULAR_DAMPING);
- BIND_CONSTANT(PARAM_ANGULAR_RESTITUTION);
- BIND_CONSTANT(PARAM_ANGULAR_FORCE_LIMIT);
- BIND_CONSTANT(PARAM_ANGULAR_ERP);
- BIND_CONSTANT(PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
- BIND_CONSTANT(PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
- BIND_CONSTANT(PARAM_MAX);
-
- BIND_CONSTANT(FLAG_ENABLE_LINEAR_LIMIT);
- BIND_CONSTANT(FLAG_ENABLE_ANGULAR_LIMIT);
- BIND_CONSTANT(FLAG_ENABLE_MOTOR);
- BIND_CONSTANT(FLAG_MAX);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_LOWER_LIMIT);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_UPPER_LIMIT);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_LINEAR_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_LOWER_LIMIT);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_UPPER_LIMIT);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_DAMPING);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_RESTITUTION);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_FORCE_LIMIT);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_ERP);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_MOTOR_TARGET_VELOCITY);
+ BIND_ENUM_CONSTANT(PARAM_ANGULAR_MOTOR_FORCE_LIMIT);
+ BIND_ENUM_CONSTANT(PARAM_MAX);
+
+ BIND_ENUM_CONSTANT(FLAG_ENABLE_LINEAR_LIMIT);
+ BIND_ENUM_CONSTANT(FLAG_ENABLE_ANGULAR_LIMIT);
+ BIND_ENUM_CONSTANT(FLAG_ENABLE_MOTOR);
+ BIND_ENUM_CONSTANT(FLAG_MAX);
}
void Generic6DOFJoint::set_param_x(Param p_param, float p_value) {
@@ -973,301 +973,3 @@ Generic6DOFJoint::Generic6DOFJoint() {
set_flag_z(FLAG_ENABLE_LINEAR_LIMIT, true);
set_flag_z(FLAG_ENABLE_MOTOR, false);
}
-
-#if 0
-
-void PhysicsJoint::_set(const String& p_name, const Variant& p_value) {
-
- if (p_name=="body_A")
- set_body_a(p_value);
- else if (p_name=="body_B")
- set_body_b(p_value);
- else if (p_name=="active")
- set_active(p_value);
- else if (p_name=="no_collision")
- set_disable_collision(p_value);
-}
-Variant PhysicsJoint::_get(const String& p_name) const {
-
- if (p_name=="body_A")
- return get_body_a();
- else if (p_name=="body_B")
- return get_body_b();
- else if (p_name=="active")
- return is_active();
- else if (p_name=="no_collision")
- return has_disable_collision();
-
- return Variant();
-}
-void PhysicsJoint::_get_property_list( List<PropertyInfo> *p_list) const {
-
-
- p_list->push_back( PropertyInfo( Variant::NODE_PATH, "body_A" ) );
- p_list->push_back( PropertyInfo( Variant::NODE_PATH, "body_B" ) );
- p_list->push_back( PropertyInfo( Variant::BOOL, "active" ) );
- p_list->push_back( PropertyInfo( Variant::BOOL, "no_collision" ) );
-}
-void PhysicsJoint::_notification(int p_what) {
-
-
- switch(p_what) {
-
- case NOTIFICATION_PARENT_CONFIGURED: {
-
- _connect();
- if (get_root_node()->get_editor() && !indicator.is_valid()) {
-
- indicator=VisualServer::get_singleton()->poly_create();
- RID mat=VisualServer::get_singleton()->fixed_material_create();
- VisualServer::get_singleton()->material_set_flag( mat, VisualServer::MATERIAL_FLAG_UNSHADED, true );
- VisualServer::get_singleton()->material_set_flag( mat, VisualServer::MATERIAL_FLAG_ONTOP, true );
- VisualServer::get_singleton()->material_set_flag( mat, VisualServer::MATERIAL_FLAG_WIREFRAME, true );
- VisualServer::get_singleton()->material_set_flag( mat, VisualServer::MATERIAL_FLAG_DOUBLE_SIDED, true );
- VisualServer::get_singleton()->material_set_line_width( mat, 3 );
-
- VisualServer::get_singleton()->poly_set_material(indicator,mat,true);
- _update_indicator();
-
- }
-
- if (indicator.is_valid()) {
-
- indicator_instance=VisualServer::get_singleton()->instance_create(indicator,get_world()->get_scenario());
- VisualServer::get_singleton()->instance_attach_object_instance_id( indicator_instance,get_instance_id() );
- }
- } break;
- case NOTIFICATION_TRANSFORM_CHANGED: {
-
- if (indicator_instance.is_valid()) {
-
- VisualServer::get_singleton()->instance_set_transform(indicator_instance,get_global_transform());
- }
- } break;
- case NOTIFICATION_EXIT_SCENE: {
-
- if (indicator_instance.is_valid()) {
-
- VisualServer::get_singleton()->free(indicator_instance);
- }
- _disconnect();
-
- } break;
-
- }
-}
-
-
-RID PhysicsJoint::_get_visual_instance_rid() const {
-
- return indicator_instance;
-
-}
-
-void PhysicsJoint::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("_get_visual_instance_rid"),&PhysicsJoint::_get_visual_instance_rid);
- ClassDB::bind_method(D_METHOD("set_body_a","path"),&PhysicsJoint::set_body_a);
- ClassDB::bind_method(D_METHOD("set_body_b"),&PhysicsJoint::set_body_b);
- ClassDB::bind_method(D_METHOD("get_body_a","path"),&PhysicsJoint::get_body_a);
- ClassDB::bind_method(D_METHOD("get_body_b"),&PhysicsJoint::get_body_b);
-
- ClassDB::bind_method(D_METHOD("set_active","active"),&PhysicsJoint::set_active);
- ClassDB::bind_method(D_METHOD("is_active"),&PhysicsJoint::is_active);
-
- ClassDB::bind_method(D_METHOD("set_disable_collision","disable"),&PhysicsJoint::set_disable_collision);
- ClassDB::bind_method(D_METHOD("has_disable_collision"),&PhysicsJoint::has_disable_collision);
-
-
- ClassDB::bind_method("reconnect",&PhysicsJoint::reconnect);
-
- ClassDB::bind_method(D_METHOD("get_rid"),&PhysicsJoint::get_rid);
-
-}
-
-void PhysicsJoint::set_body_a(const NodePath& p_path) {
-
- _disconnect();
- body_A=p_path;
- _connect();
- _change_notify("body_A");
-}
-void PhysicsJoint::set_body_b(const NodePath& p_path) {
-
- _disconnect();
- body_B=p_path;
- _connect();
- _change_notify("body_B");
-
-}
-NodePath PhysicsJoint::get_body_a() const {
-
- return body_A;
-}
-NodePath PhysicsJoint::get_body_b() const {
-
- return body_B;
-}
-
-void PhysicsJoint::set_active(bool p_active) {
-
- active=p_active;
- if (is_inside_scene()) {
- PhysicsServer::get_singleton()->joint_set_active(joint,active);
- }
- _change_notify("active");
-}
-
-void PhysicsJoint::set_disable_collision(bool p_active) {
-
- if (no_collision==p_active)
- return;
- _disconnect();
- no_collision=p_active;
- _connect();
-
- _change_notify("no_collision");
-}
-bool PhysicsJoint::has_disable_collision() const {
-
- return no_collision;
-}
-
-
-
-bool PhysicsJoint::is_active() const {
-
- return active;
-}
-
-void PhysicsJoint::_disconnect() {
-
- if (!is_inside_scene())
- return;
-
- if (joint.is_valid())
- PhysicsServer::get_singleton()->free(joint);
-
- joint=RID();
-
- Node *nA = get_node(body_A);
- Node *nB = get_node(body_B);
-
- PhysicsBody *A = nA?nA->cast_to<PhysicsBody>():NULL;
- PhysicsBody *B = nA?nB->cast_to<PhysicsBody>():NULL;
-
- if (!A ||!B)
- return;
-
- if (no_collision)
- PhysicsServer::get_singleton()->body_remove_collision_exception(A->get_body(),B->get_body());
-
-}
-void PhysicsJoint::_connect() {
-
- if (!is_inside_scene())
- return;
-
- ERR_FAIL_COND(joint.is_valid());
-
- Node *nA = get_node(body_A);
- Node *nB = get_node(body_B);
-
- PhysicsBody *A = nA?nA->cast_to<PhysicsBody>():NULL;
- PhysicsBody *B = nA?nB->cast_to<PhysicsBody>():NULL;
-
- if (!A && !B)
- return;
-
- if (B && !A)
- SWAP(B,A);
-
- joint = create(A,B);
-
- if (A<B)
- SWAP(A,B);
-
- if (no_collision)
- PhysicsServer::get_singleton()->body_add_collision_exception(A->get_body(),B->get_body());
-
-
-
-}
-
-void PhysicsJoint::reconnect() {
-
- _disconnect();
- _connect();
-
-}
-
-
-RID PhysicsJoint::get_rid() {
-
- return joint;
-}
-
-
-PhysicsJoint::PhysicsJoint() {
-
- active=true;
- no_collision=true;
-}
-
-
-PhysicsJoint::~PhysicsJoint() {
-
- if (indicator.is_valid()) {
-
- VisualServer::get_singleton()->free(indicator);
- }
-
-}
-
-/* PIN */
-
-void PhysicsJointPin::_update_indicator() {
-
-
- VisualServer::get_singleton()->poly_clear(indicator);
-
- Vector<Color> colors;
- colors.push_back( Color(0.3,0.9,0.2,0.7) );
- colors.push_back( Color(0.3,0.9,0.2,0.7) );
-
- Vector<Vector3> points;
- points.resize(2);
- points[0]=Vector3(Vector3(-0.2,0,0));
- points[1]=Vector3(Vector3(0.2,0,0));
- VisualServer::get_singleton()->poly_add_primitive(indicator,points,Vector<Vector3>(),colors,Vector<Vector3>());
-
- points[0]=Vector3(Vector3(0,-0.2,0));
- points[1]=Vector3(Vector3(0,0.2,0));
- VisualServer::get_singleton()->poly_add_primitive(indicator,points,Vector<Vector3>(),colors,Vector<Vector3>());
-
- points[0]=Vector3(Vector3(0,0,-0.2));
- points[1]=Vector3(Vector3(0,0,0.2));
- VisualServer::get_singleton()->poly_add_primitive(indicator,points,Vector<Vector3>(),colors,Vector<Vector3>());
-
-}
-
-RID PhysicsJointPin::create(PhysicsBody*A,PhysicsBody*B) {
-
- RID body_A = A->get_body();
- RID body_B = B?B->get_body():RID();
-
- ERR_FAIL_COND_V( !body_A.is_valid(), RID() );
-
- Vector3 pin_pos = get_global_transform().origin;
-
- if (body_B.is_valid())
- return PhysicsServer::get_singleton()->joint_create_double_pin_global(body_A,pin_pos,body_B,pin_pos);
- else
- return PhysicsServer::get_singleton()->joint_create_pin(body_A,A->get_global_transform().xform_inv(pin_pos),pin_pos);
-}
-
-PhysicsJointPin::PhysicsJointPin() {
-
-
-}
-#endif
diff --git a/scene/3d/physics_joint.h b/scene/3d/physics_joint.h
index b834aaf6d2..b94297da30 100644
--- a/scene/3d/physics_joint.h
+++ b/scene/3d/physics_joint.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -321,73 +321,4 @@ public:
VARIANT_ENUM_CAST(Generic6DOFJoint::Param);
VARIANT_ENUM_CAST(Generic6DOFJoint::Flag);
-#if 0
-class PhysicsJoint : public Spatial {
-
- GDCLASS(PhysicsJoint,Spatial);
- OBJ_CATEGORY("3D Physics Nodes");
-
- NodePath body_A;
- NodePath body_B;
- bool active;
- bool no_collision;
-
-
- RID indicator_instance;
-
- RID _get_visual_instance_rid() const;
-protected:
-
- RID joint;
- RID indicator;
-
- 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;
- void _notification(int p_what);
- static void _bind_methods();
-
- virtual RID create(PhysicsBody*A,PhysicsBody*B)=0;
- virtual void _update_indicator()=0;
-
- void _disconnect();
- void _connect();
-public:
-
- void set_body_a(const NodePath& p_path);
- void set_body_b(const NodePath& p_path);
- NodePath get_body_a() const;
- NodePath get_body_b() const;
-
- void set_active(bool p_active);
- bool is_active() const;
-
- void set_disable_collision(bool p_active);
- bool has_disable_collision() const;
-
- void reconnect();
-
- RID get_rid();
-
- PhysicsJoint();
- ~PhysicsJoint();
-};
-
-
-
-class PhysicsJointPin : public PhysicsJoint {
-
- GDCLASS( PhysicsJointPin, PhysicsJoint );
-
-protected:
-
- virtual void _update_indicator();
- virtual RID create(PhysicsBody*A,PhysicsBody*B);
-public:
-
-
- PhysicsJointPin();
-};
-
#endif // PHYSICS_JOINT_H
-#endif
diff --git a/scene/3d/portal.cpp b/scene/3d/portal.cpp
index d77dde1dd8..6c14f7dbc9 100644
--- a/scene/3d/portal.cpp
+++ b/scene/3d/portal.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,6 +32,8 @@
#include "scene/resources/surface_tool.h"
#include "servers/visual_server.h"
+// FIXME: This will be removed, kept as reference for new implementation
+#if 0
bool Portal::_set(const StringName &p_name, const Variant &p_value) {
if (p_name == "shape") {
@@ -226,3 +228,4 @@ Portal::~Portal() {
VisualServer::get_singleton()->free(portal);
}
+#endif
diff --git a/scene/3d/portal.h b/scene/3d/portal.h
index 7c25e4904b..6de3df8553 100644
--- a/scene/3d/portal.h
+++ b/scene/3d/portal.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -39,7 +39,8 @@
If a portal is placed next (very close to) a similar, opposing portal, they automatically connect,
otherwise, a portal connects to the parent room
*/
-
+//this will be redone and replaced by area portals, left for reference since a new class with this name will have to exist and want to reuse the gizmos
+#if 0
class Portal : public VisualInstance {
GDCLASS(Portal, VisualInstance);
@@ -85,3 +86,4 @@ public:
};
#endif
+#endif
diff --git a/scene/3d/position_3d.cpp b/scene/3d/position_3d.cpp
index 4e66ef13c0..d0df985ac4 100644
--- a/scene/3d/position_3d.cpp
+++ b/scene/3d/position_3d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/position_3d.h b/scene/3d/position_3d.h
index 0adde19342..8083c33196 100644
--- a/scene/3d/position_3d.h
+++ b/scene/3d/position_3d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/proximity_group.cpp b/scene/3d/proximity_group.cpp
index 5441904d81..2288d8b08b 100644
--- a/scene/3d/proximity_group.cpp
+++ b/scene/3d/proximity_group.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -116,9 +116,9 @@ void ProximityGroup::set_group_name(String p_group_name) {
group_name = p_group_name;
};
-void ProximityGroup::_notification(int what) {
+void ProximityGroup::_notification(int p_what) {
- switch (what) {
+ switch (p_what) {
case NOTIFICATION_EXIT_TREE:
++group_version;
diff --git a/scene/3d/proximity_group.h b/scene/3d/proximity_group.h
index fec3add41f..d003d2f525 100644
--- a/scene/3d/proximity_group.h
+++ b/scene/3d/proximity_group.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/ray_cast.cpp b/scene/3d/ray_cast.cpp
index 67e7fb0e12..72b7706b77 100644
--- a/scene/3d/ray_cast.cpp
+++ b/scene/3d/ray_cast.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,12 +30,14 @@
#include "ray_cast.h"
#include "collision_object.h"
+#include "engine.h"
#include "mesh_instance.h"
#include "servers/physics_server.h"
+
void RayCast::set_cast_to(const Vector3 &p_point) {
cast_to = p_point;
- if (is_inside_tree() && (get_tree()->is_editor_hint() || get_tree()->is_debugging_collisions_hint()))
+ if (is_inside_tree() && (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_collisions_hint()))
update_gizmo();
if (is_inside_tree() && get_tree()->is_debugging_collisions_hint())
_update_debug_shape();
@@ -94,7 +96,7 @@ Vector3 RayCast::get_collision_normal() const {
void RayCast::set_enabled(bool p_enabled) {
enabled = p_enabled;
- if (is_inside_tree() && !get_tree()->is_editor_hint())
+ if (is_inside_tree() && !Engine::get_singleton()->is_editor_hint())
set_fixed_process(p_enabled);
if (!p_enabled)
collided = false;
@@ -118,7 +120,7 @@ void RayCast::_notification(int p_what) {
case NOTIFICATION_ENTER_TREE: {
- if (enabled && !get_tree()->is_editor_hint()) {
+ if (enabled && !Engine::get_singleton()->is_editor_hint()) {
set_fixed_process(true);
if (get_tree()->is_debugging_collisions_hint())
@@ -194,7 +196,7 @@ void RayCast::add_exception_rid(const RID &p_rid) {
void RayCast::add_exception(const Object *p_object) {
ERR_FAIL_NULL(p_object);
- CollisionObject *co = ((Object *)p_object)->cast_to<CollisionObject>();
+ const CollisionObject *co = Object::cast_to<CollisionObject>(p_object);
if (!co)
return;
add_exception_rid(co->get_rid());
@@ -208,7 +210,7 @@ void RayCast::remove_exception_rid(const RID &p_rid) {
void RayCast::remove_exception(const Object *p_object) {
ERR_FAIL_NULL(p_object);
- CollisionObject *co = ((Object *)p_object)->cast_to<CollisionObject>();
+ const CollisionObject *co = Object::cast_to<CollisionObject>(p_object);
if (!co)
return;
remove_exception_rid(co->get_rid());
diff --git a/scene/3d/ray_cast.h b/scene/3d/ray_cast.h
index e9b34c4f75..fd566cd343 100644
--- a/scene/3d/ray_cast.h
+++ b/scene/3d/ray_cast.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/reflection_probe.cpp b/scene/3d/reflection_probe.cpp
index 0dc5b58e45..46b105cd21 100644
--- a/scene/3d/reflection_probe.cpp
+++ b/scene/3d/reflection_probe.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -252,8 +252,8 @@ void ReflectionProbe::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "interior_ambient_energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_interior_ambient_energy", "get_interior_ambient_energy");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "interior_ambient_contrib", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_interior_ambient_probe_contribution", "get_interior_ambient_probe_contribution");
- BIND_CONSTANT(UPDATE_ONCE);
- BIND_CONSTANT(UPDATE_ALWAYS);
+ BIND_ENUM_CONSTANT(UPDATE_ONCE);
+ BIND_ENUM_CONSTANT(UPDATE_ALWAYS);
}
ReflectionProbe::ReflectionProbe() {
diff --git a/scene/3d/reflection_probe.h b/scene/3d/reflection_probe.h
index d2a5facb5f..7c328a8f16 100644
--- a/scene/3d/reflection_probe.h
+++ b/scene/3d/reflection_probe.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/remote_transform.cpp b/scene/3d/remote_transform.cpp
index 492930ea9b..3d402fa5af 100644
--- a/scene/3d/remote_transform.cpp
+++ b/scene/3d/remote_transform.cpp
@@ -4,7 +4,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -51,11 +51,7 @@ void RemoteTransform::_update_remote() {
if (!cache)
return;
- Object *obj = ObjectDB::get_instance(cache);
- if (!obj)
- return;
-
- Spatial *n = obj->cast_to<Spatial>();
+ Spatial *n = Object::cast_to<Spatial>(ObjectDB::get_instance(cache));
if (!n)
return;
@@ -177,7 +173,7 @@ bool RemoteTransform::get_update_scale() const {
String RemoteTransform::get_configuration_warning() const {
- if (!has_node(remote_node) || !get_node(remote_node) || !get_node(remote_node)->cast_to<Spatial>()) {
+ if (!has_node(remote_node) || !Object::cast_to<Spatial>(get_node(remote_node))) {
return TTR("Path property must point to a valid Spatial node to work.");
}
diff --git a/scene/3d/remote_transform.h b/scene/3d/remote_transform.h
index c25b57966e..51a0bf35a3 100644
--- a/scene/3d/remote_transform.h
+++ b/scene/3d/remote_transform.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/room_instance.cpp b/scene/3d/room_instance.cpp
index c5ea6c54da..439b6bfdf8 100644
--- a/scene/3d/room_instance.cpp
+++ b/scene/3d/room_instance.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -31,6 +31,8 @@
#include "servers/visual_server.h"
+// FIXME: Will be removed, kept as reference for new implementation
+#if 0
#include "geometry.h"
#include "project_settings.h"
#include "scene/resources/surface_tool.h"
@@ -45,7 +47,7 @@ void Room::_notification(int p_what) {
while (parent_room) {
- Room *r = parent_room->cast_to<Room>();
+ Room *r = Object::cast_to<Room>(parent_room);
if (r) {
level = r->level + 1;
@@ -103,7 +105,7 @@ Ref<RoomBounds> Room::get_room() const {
void Room::_parse_node_faces(PoolVector<Face3> &all_faces, const Node *p_node) const {
- const VisualInstance *vi = p_node->cast_to<VisualInstance>();
+ const VisualInstance *vi = Object::cast_to<VisualInstance>(p_node);
if (vi) {
PoolVector<Face3> faces = vi->get_faces(FACES_ENCLOSING);
@@ -158,3 +160,4 @@ Room::Room() {
Room::~Room() {
}
+#endif
diff --git a/scene/3d/room_instance.h b/scene/3d/room_instance.h
index 4176da92e8..b9a64b6670 100644
--- a/scene/3d/room_instance.h
+++ b/scene/3d/room_instance.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -44,6 +44,9 @@
*/
+//this will be removed, left for reference
+#if 0
+
class Room : public VisualInstance {
GDCLASS(Room, VisualInstance);
@@ -77,5 +80,5 @@ public:
Room();
~Room();
};
-
+#endif
#endif // ROOM_INSTANCE_H
diff --git a/scene/3d/scenario_fx.cpp b/scene/3d/scenario_fx.cpp
index 0780ce22ff..8102b3f15c 100644
--- a/scene/3d/scenario_fx.cpp
+++ b/scene/3d/scenario_fx.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/scenario_fx.h b/scene/3d/scenario_fx.h
index d1e0a63130..acf6a18526 100644
--- a/scene/3d/scenario_fx.h
+++ b/scene/3d/scenario_fx.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/skeleton.cpp b/scene/3d/skeleton.cpp
index 0d91014314..d0e0937eca 100644
--- a/scene/3d/skeleton.cpp
+++ b/scene/3d/skeleton.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -82,9 +82,9 @@ bool Skeleton::_set(const StringName &p_path, const Variant &p_value) {
return true;
}
-bool Skeleton::_get(const StringName &p_name, Variant &r_ret) const {
+bool Skeleton::_get(const StringName &p_path, Variant &r_ret) const {
- String path = p_name;
+ String path = p_path;
if (!path.begins_with("bones/"))
return false;
@@ -111,7 +111,7 @@ bool Skeleton::_get(const StringName &p_name, Variant &r_ret) const {
Object *obj = ObjectDB::get_instance(E->get());
ERR_CONTINUE(!obj);
- Node *node = obj->cast_to<Node>();
+ Node *node = Object::cast_to<Node>(obj);
ERR_CONTINUE(!node);
NodePath path = get_path_to(node);
children.push_back(path);
@@ -245,7 +245,7 @@ void Skeleton::_notification(int p_what) {
Object *obj = ObjectDB::get_instance(E->get());
ERR_CONTINUE(!obj);
- Spatial *sp = obj->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(obj);
ERR_CONTINUE(!sp);
sp->set_transform(b.pose_global);
}
@@ -433,7 +433,7 @@ void Skeleton::get_bound_child_nodes_to_bone(int p_bone, List<Node *> *p_bound)
Object *obj = ObjectDB::get_instance(E->get());
ERR_CONTINUE(!obj);
- p_bound->push_back(obj->cast_to<Node>());
+ p_bound->push_back(Object::cast_to<Node>(obj));
}
}
diff --git a/scene/3d/skeleton.h b/scene/3d/skeleton.h
index dc0adbb337..fdc1100472 100644
--- a/scene/3d/skeleton.h
+++ b/scene/3d/skeleton.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -91,8 +91,8 @@ class Skeleton : public Spatial {
}
protected:
- bool _get(const StringName &p_name, Variant &r_ret) const;
- bool _set(const StringName &p_name, const Variant &p_value);
+ bool _get(const StringName &p_path, Variant &r_ret) const;
+ bool _set(const StringName &p_path, const Variant &p_value);
void _get_property_list(List<PropertyInfo> *p_list) const;
void _notification(int p_what);
static void _bind_methods();
@@ -113,7 +113,7 @@ public:
void set_bone_parent(int p_bone, int p_parent);
int get_bone_parent(int p_bone) const;
- void unparent_bone_and_rest(int p_idx);
+ void unparent_bone_and_rest(int p_bone);
void set_bone_disable_rest(int p_bone, bool p_disable);
bool is_bone_rest_disabled(int p_bone) const;
diff --git a/scene/3d/spatial.cpp b/scene/3d/spatial.cpp
index 848b08eb8f..7db3bb18bd 100644
--- a/scene/3d/spatial.cpp
+++ b/scene/3d/spatial.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "spatial.h"
+#include "engine.h"
#include "message_queue.h"
#include "scene/main/viewport.h"
#include "scene/scene_string_names.h"
@@ -127,14 +128,14 @@ void Spatial::_notification(int p_what) {
Node *p = get_parent();
if (p)
- data.parent = p->cast_to<Spatial>();
+ data.parent = Object::cast_to<Spatial>(p);
if (data.parent)
data.C = data.parent->data.children.push_back(this);
else
data.C = NULL;
- if (data.toplevel && !get_tree()->is_editor_hint()) {
+ if (data.toplevel && !Engine::get_singleton()->is_editor_hint()) {
if (data.parent) {
data.local_transform = data.parent->get_global_transform() * get_transform();
@@ -166,7 +167,7 @@ void Spatial::_notification(int p_what) {
data.viewport = NULL;
Node *parent = get_parent();
while (parent && !data.viewport) {
- data.viewport = parent->cast_to<Viewport>();
+ data.viewport = Object::cast_to<Viewport>(parent);
parent = parent->get_parent();
}
@@ -178,14 +179,19 @@ void Spatial::_notification(int p_what) {
get_script_instance()->call_multilevel(SceneStringNames::get_singleton()->_enter_world, NULL, 0);
}
#ifdef TOOLS_ENABLED
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
//get_scene()->call_group(SceneMainLoop::GROUP_CALL_REALTIME,SceneStringNames::get_singleton()->_spatial_editor_group,SceneStringNames::get_singleton()->_request_gizmo,this);
get_tree()->call_group_flags(0, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_request_gizmo, this);
if (!data.gizmo_disabled) {
- if (data.gizmo.is_valid())
+ if (data.gizmo.is_valid()) {
data.gizmo->create();
+ if (data.gizmo->can_draw()) {
+ data.gizmo->redraw();
+ }
+ data.gizmo->transform();
+ }
}
}
#endif
@@ -280,37 +286,6 @@ Transform Spatial::get_global_transform() const {
return data.global_transform;
}
-#if 0
-void Spatial::add_child_notify(Node *p_child) {
-/*
- Spatial *s=p_child->cast_to<Spatial>();
- if (!s)
- return;
-
- ERR_FAIL_COND(data.children_lock>0);
-
- s->data.dirty=DIRTY_GLOBAL; // don't allow global transform to be valid
- s->data.parent=this;
- data.children.push_back(s);
- s->data.C=data.children.back();
-*/
-}
-
-void Spatial::remove_child_notify(Node *p_child) {
-/*
- Spatial *s=p_child->cast_to<Spatial>();
- if (!s)
- return;
-
- ERR_FAIL_COND(data.children_lock>0);
-
- if (s->data.C)
- data.children.erase(s->data.C);
- s->data.parent=NULL;
- s->data.C=NULL;
-*/
-}
-#endif
Spatial *Spatial::get_parent_spatial() const {
@@ -448,7 +423,9 @@ void Spatial::set_gizmo(const Ref<SpatialGizmo> &p_gizmo) {
if (data.gizmo.is_valid() && is_inside_world()) {
data.gizmo->create();
- data.gizmo->redraw();
+ if (data.gizmo->can_draw()) {
+ data.gizmo->redraw();
+ }
data.gizmo->transform();
}
@@ -470,12 +447,16 @@ Ref<SpatialGizmo> Spatial::get_gizmo() const {
void Spatial::_update_gizmo() {
+ if (!is_inside_world())
+ return;
data.gizmo_dirty = false;
if (data.gizmo.is_valid()) {
- if (is_visible_in_tree())
- data.gizmo->redraw();
- else
- data.gizmo->clear();
+ if (data.gizmo->can_draw()) {
+ if (is_visible_in_tree())
+ data.gizmo->redraw();
+ else
+ data.gizmo->clear();
+ }
}
}
@@ -492,7 +473,7 @@ void Spatial::set_as_toplevel(bool p_enabled) {
if (data.toplevel == p_enabled)
return;
- if (is_inside_tree() && !get_tree()->is_editor_hint()) {
+ if (is_inside_tree() && !Engine::get_singleton()->is_editor_hint()) {
if (p_enabled)
set_transform(get_global_transform());
diff --git a/scene/3d/spatial.h b/scene/3d/spatial.h
index f22b19d3cc..3f205ea86b 100644
--- a/scene/3d/spatial.h
+++ b/scene/3d/spatial.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -47,6 +47,7 @@ public:
virtual void clear() = 0;
virtual void redraw() = 0;
virtual void free() = 0;
+ virtual bool can_draw() const = 0;
SpatialGizmo();
};
diff --git a/scene/3d/spatial_indexer.cpp b/scene/3d/spatial_indexer.cpp
deleted file mode 100644
index 7090c974a3..0000000000
--- a/scene/3d/spatial_indexer.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-/*************************************************************************/
-/* spatial_indexer.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "spatial_indexer.h"
-
-#if 0
-
-#include "camera.h"
-#include "proximity_area.h"
-#include "scene/scene_string_names.h"
-
-void SpatialIndexer::add_camera(Camera* p_camera) {
-
- cameras.insert(p_camera);
-}
-
-void SpatialIndexer::remove_camera(Camera* p_camera){
-
- for (Set<ProximityArea*>::Element *F=proximity_areas.front();F;F=F->next()) {
-
- ProximityArea *prox = F->get();
- TK<Camera> k;
- k.against=p_camera;
- k.area=prox;
- if (camera_pairs.has(k)) {
- camera_pairs.erase(k);
- prox->area_exit(ProximityArea::TRACK_CAMERAS,p_camera);
- }
- }
- cameras.erase(p_camera);
-
-}
-
-void SpatialIndexer::update_camera(Camera* p_camera) {
-
-
- _request_update();
-}
-
-void SpatialIndexer::_update_pairs() {
-
- // brute force interseciton code, no broadphase
- // will implement broadphase in the future
-
- for (Set<Camera*>::Element *E=cameras.front();E;E=E->next()) {
-
- Camera *cam = E->get();
- Vector<Plane> cplanes = cam->get_frustum();
-
- for (Set<ProximityArea*>::Element *F=proximity_areas.front();F;F=F->next()) {
-
- ProximityArea *prox = F->get();
-
- bool inters=false;
-
- if (prox->get_track_flag(ProximityArea::TRACK_CAMERAS)) {
-
- AABB aabb = prox->get_global_transform().xform(prox->get_aabb());
- if (aabb.intersects_convex_shape(cplanes.ptr(),cplanes.size()))
- inters=true;
- }
-
- TK<Camera> k;
- k.against=cam;
- k.area=prox;
-
- bool has = camera_pairs.has(k);
-
- if (inters==has)
- continue;
-
- if (inters) {
- camera_pairs.insert(k);
- prox->area_enter(ProximityArea::TRACK_CAMERAS,cam);
- } else {
-
- camera_pairs.erase(k);
- prox->area_exit(ProximityArea::TRACK_CAMERAS,cam);
- }
- }
-
- }
-
- pending_update=false;
-}
-
-void SpatialIndexer::_bind_methods() {
-
-
- ClassDB::bind_method(D_METHOD("_update_pairs"),&SpatialIndexer::_update_pairs);
-}
-
-
-void SpatialIndexer::add_proximity_area(ProximityArea* p_area) {
-
- proximity_areas.insert(p_area);
-
-}
-
-void SpatialIndexer::remove_proximity_area(ProximityArea* p_area) {
-
- for (Set<Camera*>::Element *E=cameras.front();E;E=E->next()) {
-
- Camera *cam = E->get();
- TK<Camera> k;
- k.against=cam;
- k.area=p_area;
- if (camera_pairs.has(k)) {
- camera_pairs.erase(k);
- p_area->area_exit(ProximityArea::TRACK_CAMERAS,cam);
- }
- }
- proximity_areas.erase(p_area);
-
-}
-
-void SpatialIndexer::_request_update() {
-
- if (pending_update)
- return;
- pending_update=true;
- call_deferred(SceneStringNames::get_singleton()->_update_pairs);
-
-}
-
-void SpatialIndexer::update_proximity_area_transform(ProximityArea* p_area) {
-
- _request_update();
-}
-
-void SpatialIndexer::update_proximity_area_flags(ProximityArea* p_area) {
-
- _request_update();
-}
-
-SpatialIndexer::SpatialIndexer() {
-
- pending_update=false;
-}
-#endif
diff --git a/scene/3d/spatial_indexer.h b/scene/3d/spatial_indexer.h
deleted file mode 100644
index c8bdf8950d..0000000000
--- a/scene/3d/spatial_indexer.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*************************************************************************/
-/* spatial_indexer.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 SPATIAL_INDEXER_H
-#define SPATIAL_INDEXER_H
-
-#include "scene/3d/spatial.h"
-#if 0
-
-class Camera;
-class ProximityArea;
-
-class SpatialIndexer : public Object {
-
- GDCLASS( SpatialIndexer, Object );
-
- template<class T>
- struct TK {
-
- T *against;
- ProximityArea *area;
- bool operator<(const TK<T>& p_k) const { return against==p_k.against ? area < p_k.area : against < p_k.against; }
- };
-
-
- Set<Camera*> cameras; //cameras
- Set<ProximityArea*> proximity_areas;
-
- Set<TK<Camera> > camera_pairs;
-
- bool pending_update;
- void _update_pairs();
- void _request_update();
-
-protected:
-
- static void _bind_methods();
-
-friend class ProximityArea;
-friend class Camera;
-
- void add_proximity_area(ProximityArea* p_area);
- void remove_proximity_area(ProximityArea* p_area);
- void update_proximity_area_transform(ProximityArea* p_area);
- void update_proximity_area_flags(ProximityArea* p_area);
-
- void add_camera(Camera* p_camera);
- void remove_camera(Camera* p_camera);
- void update_camera(Camera* p_camera);
-
-public:
-
-
- SpatialIndexer();
-
-};
-#endif
-#endif // SPATIAL_INDEXER_H
diff --git a/scene/3d/spatial_velocity_tracker.h b/scene/3d/spatial_velocity_tracker.h
index 65f3eaca93..b8237613a7 100644
--- a/scene/3d/spatial_velocity_tracker.h
+++ b/scene/3d/spatial_velocity_tracker.h
@@ -20,7 +20,7 @@ protected:
public:
void reset(const Vector3 &p_new_pos);
- void set_track_fixed_step(bool p_use_fixed_step);
+ void set_track_fixed_step(bool p_track_fixed_step);
bool is_tracking_fixed_step() const;
void update_position(const Vector3 &p_position);
Vector3 get_tracked_linear_velocity() const;
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index 978662f7dc..49a3205f21 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -70,13 +70,9 @@ void SpriteBase3D::_notification(int p_what) {
if (!pending_update)
_im_update();
- Node *parent = get_parent();
- if (parent) {
-
- parent_sprite = parent->cast_to<SpriteBase3D>();
- if (parent_sprite) {
- pI = parent_sprite->children.push_back(this);
- }
+ parent_sprite = Object::cast_to<SpriteBase3D>(get_parent());
+ if (parent_sprite) {
+ pI = parent_sprite->children.push_back(this);
}
}
@@ -276,14 +272,14 @@ void SpriteBase3D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "double_sided"), "set_draw_flag", "get_draw_flag", FLAG_DOUBLE_SIDED);
ADD_PROPERTY(PropertyInfo(Variant::INT, "alpha_cut", PROPERTY_HINT_ENUM, "Disabled,Discard,Opaque Pre-Pass"), "set_alpha_cut_mode", "get_alpha_cut_mode");
- BIND_CONSTANT(FLAG_TRANSPARENT);
- BIND_CONSTANT(FLAG_SHADED);
- BIND_CONSTANT(FLAG_DOUBLE_SIDED);
- BIND_CONSTANT(FLAG_MAX);
+ BIND_ENUM_CONSTANT(FLAG_TRANSPARENT);
+ BIND_ENUM_CONSTANT(FLAG_SHADED);
+ BIND_ENUM_CONSTANT(FLAG_DOUBLE_SIDED);
+ BIND_ENUM_CONSTANT(FLAG_MAX);
- BIND_CONSTANT(ALPHA_CUT_DISABLED);
- BIND_CONSTANT(ALPHA_CUT_DISCARD);
- BIND_CONSTANT(ALPHA_CUT_OPAQUE_PREPASS);
+ BIND_ENUM_CONSTANT(ALPHA_CUT_DISABLED);
+ BIND_ENUM_CONSTANT(ALPHA_CUT_DISCARD);
+ BIND_ENUM_CONSTANT(ALPHA_CUT_OPAQUE_PREPASS);
}
SpriteBase3D::SpriteBase3D() {
@@ -602,219 +598,6 @@ Sprite3D::Sprite3D() {
////////////////////////////////////////
-#if 0
-
-void AnimatedSprite3D::_draw() {
-
- RID immediate = get_immediate();
- VS::get_singleton()->immediate_clear(immediate);
-
- if (!frames.is_valid() || !frames->get_frame_count(animation) || frame<0 || frame>=frames->get_frame_count(animation)) {
- return;
- }
-
- Ref<Texture> texture = frames->get_frame(animation,frame);
- if (!texture.is_valid())
- return; //no texuture no life
- Vector2 tsize = texture->get_size();
- if (tsize.x==0 || tsize.y==0)
- return;
-
- Size2i s=tsize;
- Rect2i src_rect;
-
- src_rect.size=s;
-
- Point2i ofs=get_offset();
- if (is_centered())
- ofs-=s/2;
-
- Rect2i dst_rect(ofs,s);
-
-
- Rect2 final_rect;
- Rect2 final_src_rect;
- if (!texture->get_rect_region(dst_rect,src_rect,final_rect,final_src_rect))
- return;
-
-
- if (final_rect.size.x==0 || final_rect.size.y==0)
- return;
-
- Color color=_get_color_accum();
- color.a*=get_opacity();
-
- float pixel_size=get_pixel_size();
-
- Vector2 vertices[4]={
-
- (final_rect.pos+Vector2(0,final_rect.size.y)) * pixel_size,
- (final_rect.pos+final_rect.size) * pixel_size,
- (final_rect.pos+Vector2(final_rect.size.x,0)) * pixel_size,
- final_rect.pos * pixel_size,
-
-
- };
- Vector2 uvs[4]={
- final_src_rect.pos / tsize,
- (final_src_rect.pos+Vector2(final_src_rect.size.x,0)) / tsize,
- (final_src_rect.pos+final_src_rect.size) / tsize,
- (final_src_rect.pos+Vector2(0,final_src_rect.size.y)) / tsize,
- };
-
- if (is_flipped_h()) {
- SWAP(uvs[0],uvs[1]);
- SWAP(uvs[2],uvs[3]);
- }
- if (is_flipped_v()) {
-
- SWAP(uvs[0],uvs[3]);
- SWAP(uvs[1],uvs[2]);
- }
-
-
- Vector3 normal;
- int axis = get_axis();
- normal[axis]=1.0;
-
- RID mat = VS::get_singleton()->material_2d_get(get_draw_flag(FLAG_SHADED),get_draw_flag(FLAG_TRANSPARENT),get_alpha_cut_mode()==ALPHA_CUT_DISCARD,get_alpha_cut_mode()==ALPHA_CUT_OPAQUE_PREPASS);
- VS::get_singleton()->immediate_set_material(immediate,mat);
-
- VS::get_singleton()->immediate_begin(immediate,VS::PRIMITIVE_TRIANGLE_FAN,texture->get_rid());
-
- int x_axis = ((axis + 1) % 3);
- int y_axis = ((axis + 2) % 3);
-
- if (axis!=Vector3::AXIS_Z) {
- SWAP(x_axis,y_axis);
-
- for(int i=0;i<4;i++) {
- //uvs[i] = Vector2(1.0,1.0)-uvs[i];
- //SWAP(vertices[i].x,vertices[i].y);
- if (axis==Vector3::AXIS_Y) {
- vertices[i].y = - vertices[i].y;
- } else if (axis==Vector3::AXIS_X) {
- vertices[i].x = - vertices[i].x;
- }
- }
- }
-
- AABB aabb;
-
- for(int i=0;i<4;i++) {
- VS::get_singleton()->immediate_normal(immediate,normal);
- VS::get_singleton()->immediate_color(immediate,color);
- VS::get_singleton()->immediate_uv(immediate,uvs[i]);
-
- Vector3 vtx;
- vtx[x_axis]=vertices[i][0];
- vtx[y_axis]=vertices[i][1];
- VS::get_singleton()->immediate_vertex(immediate,vtx);
- if (i==0) {
- aabb.pos=vtx;
- aabb.size=Vector3();
- } else {
- aabb.expand_to(vtx);
- }
- }
- set_aabb(aabb);
- VS::get_singleton()->immediate_end(immediate);
-
-}
-
-void AnimatedSprite3D::_bind_methods(){
-
- ClassDB::bind_method(D_METHOD("set_sprite_frames","sprite_frames"),&AnimatedSprite3D::set_sprite_frames);
- ClassDB::bind_method(D_METHOD("get_sprite_frames"),&AnimatedSprite3D::get_sprite_frames);
- ClassDB::bind_method(D_METHOD("set_frame","frame"),&AnimatedSprite3D::set_frame);
- ClassDB::bind_method(D_METHOD("get_frame"),&AnimatedSprite3D::get_frame);
-
- ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "frames", PROPERTY_HINT_RESOURCE_TYPE,"SpriteFrames"), "set_sprite_frames","get_sprite_frames");
- ADD_PROPERTY( PropertyInfo( Variant::INT, "frame",PROPERTY_HINT_SPRITE_FRAME), "set_frame","get_frame");
-
- ADD_SIGNAL(MethodInfo("frame_changed"));
-
-}
-
-
-
-
-void AnimatedSprite3D::set_sprite_frames(const Ref<SpriteFrames>& p_sprite_frames) {
-
-
- if (frames==p_sprite_frames)
- return;
-
- if (frames.is_valid())
- frames->disconnect("changed",this,"_queue_update");
- frames=p_sprite_frames;
- if (frames.is_valid())
- frames->connect("changed",this,"_queue_update");
-
- if (!frames.is_valid() || frame >=frames->get_frame_count(animation)) {
- frame=0;
-
- }
- _queue_update();
-
-}
-
-Ref<SpriteFrames> AnimatedSprite3D::get_sprite_frames() const{
-
- return frames;
-}
-
-void AnimatedSprite3D::set_frame(int p_frame){
-
- if (frames.is_null())
- return;
-
- ERR_FAIL_INDEX(p_frame,frames->get_frame_count(animation));
-
- if (frame==p_frame)
- return;
-
- frame=p_frame;
- _queue_update();
- emit_signal(SceneStringNames::get_singleton()->frame_changed);
-
-}
-int AnimatedSprite3D::get_frame() const{
-
- return frame;
-}
-
-Rect2 AnimatedSprite3D::get_item_rect() const {
-
- if (!frames.is_valid() || !frames->get_frame_count(animation) || frame<0 || frame>=frames->get_frame_count(animation)) {
- return Rect2(0,0,1,1);
- }
-
- Ref<Texture> t = frames->get_frame(animation,frame);
- if (t.is_null())
- return Rect2(0,0,1,1);
- Size2i s = t->get_size();
-
- Point2i ofs=get_offset();
- if (is_centered())
- ofs-=s/2;
-
- if (s==Size2(0,0))
- s=Size2(1,1);
-
- return Rect2(ofs,s);
-}
-
-
-
-AnimatedSprite3D::AnimatedSprite3D() {
-
- animation="current";
- frame=0;
-}
-
-#endif
-
void AnimatedSprite3D::_draw() {
RID immediate = get_immediate();
@@ -1026,63 +809,6 @@ void AnimatedSprite3D::_notification(int p_what) {
timeout -= to_process;
}
} break;
-#if 0
- case NOTIFICATION_DRAW: {
-
- if (frames.is_null()) {
- print_line("no draw no faemos");
- return;
- }
-
- if (frame<0) {
- print_line("no draw frame <0");
- return;
- }
-
- if (!frames->has_animation(animation)) {
- print_line("no draw no anim: "+String(animation));
- return;
- }
-
-
-
- Ref<Texture> texture = frames->get_frame(animation,frame);
- if (texture.is_null()) {
- print_line("no draw texture is null");
- return;
- }
-
- //print_line("DECIDED TO DRAW");
-
- RID ci = get_canvas_item();
-
- /*
- texture->draw(ci,Point2());
- break;
- */
-
- Size2i s;
- s = texture->get_size();
- Point2 ofs=offset;
- if (centered)
- ofs-=s/2;
-
- if (OS::get_singleton()->get_use_pixel_snap()) {
- ofs=ofs.floor();
- }
- Rect2 dst_rect(ofs,s);
-
- if (hflip)
- dst_rect.size.x=-dst_rect.size.x;
- if (vflip)
- dst_rect.size.y=-dst_rect.size.y;
-
- //texture->draw_rect(ci,dst_rect,false,modulate);
- texture->draw_rect_region(ci,dst_rect,Rect2(Vector2(),texture->get_size()),modulate);
- //VisualServer::get_singleton()->canvas_item_add_texture_rect_region(ci,dst_rect,texture->get_rid(),src_rect,modulate);
-
- } break;
-#endif
}
}
diff --git a/scene/3d/sprite_3d.h b/scene/3d/sprite_3d.h
index b4600c00b8..1165392cb2 100644
--- a/scene/3d/sprite_3d.h
+++ b/scene/3d/sprite_3d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -119,7 +119,7 @@ public:
void set_pixel_size(float p_amount);
float get_pixel_size() const;
- void set_axis(Vector3::Axis p_amount);
+ void set_axis(Vector3::Axis p_axis);
Vector3::Axis get_axis() const;
void set_draw_flag(DrawFlags p_flag, bool p_enable);
@@ -181,37 +181,6 @@ public:
//~Sprite3D();
};
-#if 0
-class AnimatedSprite3D : public SpriteBase3D {
-
- GDCLASS(AnimatedSprite3D,SpriteBase3D);
- Ref<SpriteFrames> frames;
-
-
- StringName animation;
- int frame;
-
-protected:
- virtual void _draw();
- static void _bind_methods();
-public:
-
-
-
- void set_sprite_frames(const Ref<SpriteFrames>& p_sprite_frames);
- Ref<SpriteFrames> get_sprite_frames() const;
-
- void set_frame(int p_frame);
- int get_frame() const;
-
-
- virtual Rect2 get_item_rect() const;
-
- AnimatedSprite3D();
- //~AnimatedSprite3D();
-};
-#endif
-
class AnimatedSprite3D : public SpriteBase3D {
GDCLASS(AnimatedSprite3D, SpriteBase3D);
diff --git a/scene/3d/vehicle_body.cpp b/scene/3d/vehicle_body.cpp
index 8d927e529e..d6b3206fbf 100644
--- a/scene/3d/vehicle_body.cpp
+++ b/scene/3d/vehicle_body.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -81,9 +81,7 @@ void VehicleWheel::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
- if (!get_parent())
- return;
- VehicleBody *cb = get_parent()->cast_to<VehicleBody>();
+ VehicleBody *cb = Object::cast_to<VehicleBody>(get_parent());
if (!cb)
return;
body = cb;
@@ -96,9 +94,7 @@ void VehicleWheel::_notification(int p_what) {
}
if (p_what == NOTIFICATION_EXIT_TREE) {
- if (!get_parent())
- return;
- VehicleBody *cb = get_parent()->cast_to<VehicleBody>();
+ VehicleBody *cb = Object::cast_to<VehicleBody>(get_parent());
if (!cb)
return;
cb->wheels.erase(this);
@@ -416,7 +412,7 @@ real_t VehicleBody::_ray_cast(int p_idx, PhysicsDirectBodyState *s) {
wheel.m_raycastInfo.m_isInContact = true;
if (rr.collider)
- wheel.m_raycastInfo.m_groundObject = rr.collider->cast_to<PhysicsBody>();
+ wheel.m_raycastInfo.m_groundObject = Object::cast_to<PhysicsBody>(rr.collider);
real_t hitDistance = param * raylen;
wheel.m_raycastInfo.m_suspensionLength = hitDistance - wheel.m_wheelRadius;
@@ -559,6 +555,9 @@ void VehicleBody::_resolve_single_bilateral(PhysicsDirectBodyState *s, const Vec
b2invinertia,
b2invmass);
+ // FIXME: rel_vel assignment here is overwritten by the following assignment.
+ // What seemes to be intented in the next next assignment is: rel_vel = normal.dot(rel_vel);
+ // Investigate why.
real_t rel_vel = jac.getRelativeVelocity(
s->get_linear_velocity(),
s->get_transform().basis.transposed().xform(s->get_angular_velocity()),
@@ -801,7 +800,7 @@ void VehicleBody::_update_friction(PhysicsDirectBodyState *s) {
void VehicleBody::_direct_state_changed(Object *p_state) {
- PhysicsDirectBodyState *s = p_state->cast_to<PhysicsDirectBodyState>();
+ PhysicsDirectBodyState *s = Object::cast_to<PhysicsDirectBodyState>(p_state);
set_ignore_transform_notification(true);
set_global_transform(s->get_transform());
@@ -893,9 +892,9 @@ real_t VehicleBody::get_friction() const {
return friction;
}
-void VehicleBody::set_engine_force(float p_force) {
+void VehicleBody::set_engine_force(float p_engine_force) {
- engine_force = p_force;
+ engine_force = p_engine_force;
}
float VehicleBody::get_engine_force() const {
diff --git a/scene/3d/vehicle_body.h b/scene/3d/vehicle_body.h
index 7ed9bce730..d67209c58f 100644
--- a/scene/3d/vehicle_body.h
+++ b/scene/3d/vehicle_body.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -196,7 +196,7 @@ public:
void set_engine_force(float p_engine_force);
float get_engine_force() const;
- void set_brake(float p_force);
+ void set_brake(float p_brake);
float get_brake() const;
void set_steering(float p_steering);
diff --git a/scene/3d/visibility_notifier.cpp b/scene/3d/visibility_notifier.cpp
index cc81a4cb56..d3203bacec 100644
--- a/scene/3d/visibility_notifier.cpp
+++ b/scene/3d/visibility_notifier.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,11 +29,11 @@
/*************************************************************************/
#include "visibility_notifier.h"
+#include "engine.h"
#include "scene/3d/camera.h"
#include "scene/3d/physics_body.h"
#include "scene/animation/animation_player.h"
#include "scene/scene_string_names.h"
-#include "scene/scene_string_names.h"
void VisibilityNotifier::_enter_camera(Camera *p_camera) {
@@ -151,7 +151,7 @@ void VisibilityEnabler::_find_nodes(Node *p_node) {
if (enabler[ENABLER_FREEZE_BODIES]) {
- RigidBody *rb = p_node->cast_to<RigidBody>();
+ RigidBody *rb = Object::cast_to<RigidBody>(p_node);
if (rb && ((rb->get_mode() == RigidBody::MODE_CHARACTER || (rb->get_mode() == RigidBody::MODE_RIGID && !rb->is_able_to_sleep())))) {
add = true;
@@ -161,7 +161,7 @@ void VisibilityEnabler::_find_nodes(Node *p_node) {
if (enabler[ENABLER_PAUSE_ANIMATIONS]) {
- AnimationPlayer *ap = p_node->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
if (ap) {
add = true;
}
@@ -187,7 +187,7 @@ void VisibilityEnabler::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
return;
Node *from = this;
@@ -200,7 +200,7 @@ void VisibilityEnabler::_notification(int p_what) {
if (p_what == NOTIFICATION_EXIT_TREE) {
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
return;
for (Map<Node *, Variant>::Element *E = nodes.front(); E; E = E->next()) {
@@ -219,14 +219,14 @@ void VisibilityEnabler::_change_node_state(Node *p_node, bool p_enabled) {
ERR_FAIL_COND(!nodes.has(p_node));
{
- RigidBody *rb = p_node->cast_to<RigidBody>();
+ RigidBody *rb = Object::cast_to<RigidBody>(p_node);
if (rb)
rb->set_sleeping(!p_enabled);
}
{
- AnimationPlayer *ap = p_node->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
if (ap) {
@@ -252,9 +252,9 @@ void VisibilityEnabler::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "pause_animations"), "set_enabler", "is_enabler_enabled", ENABLER_PAUSE_ANIMATIONS);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "freeze_bodies"), "set_enabler", "is_enabler_enabled", ENABLER_FREEZE_BODIES);
- BIND_CONSTANT(ENABLER_FREEZE_BODIES);
- BIND_CONSTANT(ENABLER_PAUSE_ANIMATIONS);
- BIND_CONSTANT(ENABLER_MAX);
+ BIND_ENUM_CONSTANT(ENABLER_FREEZE_BODIES);
+ BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATIONS);
+ BIND_ENUM_CONSTANT(ENABLER_MAX);
}
void VisibilityEnabler::set_enabler(Enabler p_enabler, bool p_enable) {
diff --git a/scene/3d/visibility_notifier.h b/scene/3d/visibility_notifier.h
index 316b2c3575..0b83e0534e 100644
--- a/scene/3d/visibility_notifier.h
+++ b/scene/3d/visibility_notifier.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/3d/visual_instance.cpp b/scene/3d/visual_instance.cpp
index 1a294d016a..0464a82f65 100644
--- a/scene/3d/visual_instance.cpp
+++ b/scene/3d/visual_instance.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,7 +29,6 @@
/*************************************************************************/
#include "visual_instance.h"
-#include "room_instance.h"
#include "scene/scene_string_names.h"
#include "servers/visual_server.h"
#include "skeleton.h"
@@ -54,32 +53,9 @@ void VisualInstance::_notification(int p_what) {
case NOTIFICATION_ENTER_WORLD: {
- // CHECK ROOM
- Spatial *parent = get_parent_spatial();
- Room *room = NULL;
- bool is_geom = cast_to<GeometryInstance>();
-
- /* while(parent) {
-
- room = parent->cast_to<Room>();
- if (room)
- break;
-
- if (is_geom && parent->cast_to<BakedLightSampler>()) {
- VS::get_singleton()->instance_geometry_set_baked_light_sampler(get_instance(),parent->cast_to<BakedLightSampler>()->get_instance());
- break;
- }
-
- parent=parent->get_parent_spatial();
- }*/
-
- if (room) {
-
- VisualServer::get_singleton()->instance_set_room(instance, room->get_instance());
- }
// CHECK SKELETON => moving skeleton attaching logic to MeshInstance
/*
- Skeleton *skeleton=get_parent()?get_parent()->cast_to<Skeleton>():NULL;
+ Skeleton *skeleton=Object::cast_to<Skeleton>(get_parent());
if (skeleton)
VisualServer::get_singleton()->instance_attach_skeleton( instance, skeleton->get_skeleton() );
*/
@@ -96,7 +72,6 @@ void VisualInstance::_notification(int p_what) {
case NOTIFICATION_EXIT_WORLD: {
VisualServer::get_singleton()->instance_set_scenario(instance, RID());
- VisualServer::get_singleton()->instance_set_room(instance, RID());
VisualServer::get_singleton()->instance_attach_skeleton(instance, RID());
//VS::get_singleton()->instance_geometry_set_baked_light_sampler(instance, RID() );
@@ -231,14 +206,6 @@ void GeometryInstance::_notification(int p_what) {
void GeometryInstance::set_flag(Flags p_flag, bool p_value) {
ERR_FAIL_INDEX(p_flag, FLAG_MAX);
- if (p_flag == FLAG_CAST_SHADOW) {
- if (p_value == true) {
- set_cast_shadows_setting(SHADOW_CASTING_SETTING_ON);
- } else {
- set_cast_shadows_setting(SHADOW_CASTING_SETTING_OFF);
- }
- }
-
if (flags[p_flag] == p_value)
return;
@@ -252,14 +219,6 @@ bool GeometryInstance::get_flag(Flags p_flag) const {
ERR_FAIL_INDEX_V(p_flag, FLAG_MAX, false);
- if (p_flag == FLAG_CAST_SHADOW) {
- if (shadow_casting_setting == SHADOW_CASTING_SETTING_OFF) {
- return false;
- } else {
- return true;
- }
- }
-
return flags[p_flag];
}
@@ -319,7 +278,6 @@ void GeometryInstance::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material_override", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,SpatialMaterial"), "set_material_override", "get_material_override");
ADD_PROPERTY(PropertyInfo(Variant::INT, "cast_shadow", PROPERTY_HINT_ENUM, "Off,On,Double-Sided,Shadows Only"), "set_cast_shadows_setting", "get_cast_shadows_setting");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "extra_cull_margin", PROPERTY_HINT_RANGE, "0,16384,0"), "set_extra_cull_margin", "get_extra_cull_margin");
- ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "visible_in_all_rooms"), "set_flag", "get_flag", FLAG_VISIBLE_IN_ALL_ROOMS);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "use_in_baked_light"), "set_flag", "get_flag", FLAG_USE_BAKED_LIGHT);
ADD_GROUP("LOD", "lod_");
@@ -330,8 +288,6 @@ void GeometryInstance::_bind_methods() {
//ADD_SIGNAL( MethodInfo("visibility_changed"));
- BIND_CONSTANT(FLAG_CAST_SHADOW);
- BIND_CONSTANT(FLAG_VISIBLE_IN_ALL_ROOMS);
BIND_CONSTANT(FLAG_MAX);
BIND_CONSTANT(SHADOW_CASTING_SETTING_OFF);
@@ -350,8 +306,6 @@ GeometryInstance::GeometryInstance() {
flags[i] = false;
}
- flags[FLAG_CAST_SHADOW] = true;
-
shadow_casting_setting = SHADOW_CASTING_SETTING_ON;
extra_cull_margin = 0;
//VS::get_singleton()->instance_geometry_set_baked_light_texture_index(get_instance(),0);
diff --git a/scene/3d/visual_instance.h b/scene/3d/visual_instance.h
index 9318198e54..c405236d2c 100644
--- a/scene/3d/visual_instance.h
+++ b/scene/3d/visual_instance.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -76,16 +76,12 @@ public:
~VisualInstance();
};
-class BakedLight;
-
class GeometryInstance : public VisualInstance {
GDCLASS(GeometryInstance, VisualInstance);
public:
enum Flags {
- FLAG_CAST_SHADOW = VS::INSTANCE_FLAG_CAST_SHADOW,
- FLAG_VISIBLE_IN_ALL_ROOMS = VS::INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS,
FLAG_USE_BAKED_LIGHT = VS::INSTANCE_FLAG_USE_BAKED_LIGHT,
FLAG_MAX = VS::INSTANCE_FLAG_MAX,
};
diff --git a/scene/SCsub b/scene/SCsub
index df52e9c6cb..513adeffda 100644
--- a/scene/SCsub
+++ b/scene/SCsub
@@ -27,7 +27,6 @@ SConscript('2d/SCsub')
SConscript('animation/SCsub')
SConscript('audio/SCsub')
SConscript('resources/SCsub')
-SConscript('io/SCsub')
# Build it all as a library
diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp
index 31fee0e347..b35b2568d1 100644
--- a/scene/animation/animation_cache.cpp
+++ b/scene/animation/animation_cache.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -120,7 +120,7 @@ void AnimationCache::_update_cache() {
StringName property = np.get_property();
String ps = property;
- Spatial *sp = node->cast_to<Spatial>();
+ Spatial *sp = Object::cast_to<Spatial>(node);
if (!sp) {
@@ -131,7 +131,7 @@ void AnimationCache::_update_cache() {
if (ps != "") {
- Skeleton *sk = node->cast_to<Skeleton>();
+ Skeleton *sk = Object::cast_to<Skeleton>(node);
if (!sk) {
path_cache.push_back(Path());
diff --git a/scene/animation/animation_cache.h b/scene/animation/animation_cache.h
index 6687098d00..e593668df6 100644
--- a/scene/animation/animation_cache.h
+++ b/scene/animation/animation_cache.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index e2a0636466..be0b652276 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "animation_player.h"
+#include "engine.h"
#include "message_queue.h"
#include "scene/scene_string_names.h"
@@ -199,7 +200,7 @@ void AnimationPlayer::_notification(int p_what) {
} break;
case NOTIFICATION_READY: {
- if (!get_tree()->is_editor_hint() && animation_set.has(autoplay)) {
+ if (!Engine::get_singleton()->is_editor_hint() && animation_set.has(autoplay)) {
play(autoplay);
set_autoplay(""); //this line is the fix for autoplay issues with animatio
_animation_process(0);
@@ -250,9 +251,9 @@ void AnimationPlayer::_generate_node_caches(AnimationData *p_anim) {
uint32_t id = resource.is_valid() ? resource->get_instance_id() : child->get_instance_id();
int bone_idx = -1;
- if (a->track_get_path(i).get_property() && child->cast_to<Skeleton>()) {
+ if (a->track_get_path(i).get_property() && Object::cast_to<Skeleton>(child)) {
- bone_idx = child->cast_to<Skeleton>()->find_bone(a->track_get_path(i).get_property());
+ bone_idx = Object::cast_to<Skeleton>(child)->find_bone(a->track_get_path(i).get_property());
if (bone_idx == -1) {
continue;
@@ -279,14 +280,14 @@ void AnimationPlayer::_generate_node_caches(AnimationData *p_anim) {
p_anim->node_cache[i]->path = a->track_get_path(i);
p_anim->node_cache[i]->node = child;
p_anim->node_cache[i]->resource = resource;
- p_anim->node_cache[i]->node_2d = child->cast_to<Node2D>();
+ p_anim->node_cache[i]->node_2d = Object::cast_to<Node2D>(child);
if (a->track_get_type(i) == Animation::TYPE_TRANSFORM) {
// special cases and caches for transform tracks
// cache spatial
- p_anim->node_cache[i]->spatial = child->cast_to<Spatial>();
+ p_anim->node_cache[i]->spatial = Object::cast_to<Spatial>(child);
// cache skeleton
- p_anim->node_cache[i]->skeleton = child->cast_to<Skeleton>();
+ p_anim->node_cache[i]->skeleton = Object::cast_to<Skeleton>(child);
if (p_anim->node_cache[i]->skeleton) {
StringName bone_name = a->track_get_path(i).get_property();
@@ -344,7 +345,7 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, float
ERR_FAIL_COND(p_anim->node_cache.size() != p_anim->animation->get_track_count());
Animation *a = p_anim->animation.operator->();
- bool can_call = is_inside_tree() && !get_tree()->is_editor_hint();
+ bool can_call = is_inside_tree() && !Engine::get_singleton()->is_editor_hint();
for (int i = 0; i < a->get_track_count(); i++) {
@@ -607,16 +608,6 @@ void AnimationPlayer::_animation_update_transforms() {
ERR_CONTINUE(pa->accum_pass != accum_pass);
-#if 1
- /* switch(pa->special) {
-
-
- case SP_NONE: pa->object->set(pa->prop,pa->value_accum); break; //you are not speshul
- case SP_NODE2D_POS: static_cast<Node2D*>(pa->object)->set_position(pa->value_accum); break;
- case SP_NODE2D_ROT: static_cast<Node2D*>(pa->object)->set_rot(Math::deg2rad(pa->value_accum)); break;
- case SP_NODE2D_SCALE: static_cast<Node2D*>(pa->object)->set_scale(pa->value_accum); break;
- }*/
-
switch (pa->special) {
case SP_NONE: {
@@ -656,10 +647,6 @@ void AnimationPlayer::_animation_update_transforms() {
static_cast<Node2D *>(pa->object)->set_scale(pa->value_accum);
} break;
}
-#else
-
- pa->object->set(pa->prop, pa->value_accum);
-#endif
}
cache_update_prop_size = 0;
@@ -667,8 +654,6 @@ void AnimationPlayer::_animation_update_transforms() {
void AnimationPlayer::_animation_process(float p_delta) {
- //bool any_active=false;
-
if (playback.current.from) {
end_notify = false;
@@ -955,7 +940,7 @@ void AnimationPlayer::play(const StringName &p_name, float p_custom_blend, float
emit_signal(SceneStringNames::get_singleton()->animation_started, c.assigned);
- if (is_inside_tree() && get_tree()->is_editor_hint())
+ if (is_inside_tree() && Engine::get_singleton()->is_editor_hint())
return; // no next in this case
StringName next = animation_get_next(p_name);
@@ -1277,8 +1262,8 @@ void AnimationPlayer::_bind_methods() {
ADD_SIGNAL(MethodInfo("animation_changed", PropertyInfo(Variant::STRING, "old_name"), PropertyInfo(Variant::STRING, "new_name")));
ADD_SIGNAL(MethodInfo("animation_started", PropertyInfo(Variant::STRING, "name")));
- BIND_CONSTANT(ANIMATION_PROCESS_FIXED);
- BIND_CONSTANT(ANIMATION_PROCESS_IDLE);
+ BIND_ENUM_CONSTANT(ANIMATION_PROCESS_FIXED);
+ BIND_ENUM_CONSTANT(ANIMATION_PROCESS_IDLE);
}
AnimationPlayer::AnimationPlayer() {
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index 96fc70a3ad..c6e52145a8 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -271,7 +271,7 @@ public:
void set_speed_scale(float p_speed);
float get_speed_scale() const;
- void set_autoplay(const String &pname);
+ void set_autoplay(const String &p_name);
String get_autoplay() const;
void set_animation_process_mode(AnimationProcessMode p_mode);
diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp
index c12e97c4a5..e2330eb0d4 100644
--- a/scene/animation/animation_tree_player.cpp
+++ b/scene/animation/animation_tree_player.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -1487,8 +1487,8 @@ AnimationTreePlayer::Track *AnimationTreePlayer::_find_track(const NodePath &p_p
if (p_path.get_property()) {
- if (child->cast_to<Skeleton>())
- bone_idx = child->cast_to<Skeleton>()->find_bone(p_path.get_property());
+ if (Object::cast_to<Skeleton>(child))
+ bone_idx = Object::cast_to<Skeleton>(child)->find_bone(p_path.get_property());
if (bone_idx == -1)
property = p_path.get_property();
}
@@ -1503,8 +1503,8 @@ AnimationTreePlayer::Track *AnimationTreePlayer::_find_track(const NodePath &p_p
Track tr;
tr.id = id;
tr.object = resource.is_valid() ? (Object *)resource.ptr() : (Object *)child;
- tr.skeleton = child->cast_to<Skeleton>();
- tr.spatial = child->cast_to<Spatial>();
+ tr.skeleton = Object::cast_to<Skeleton>(child);
+ tr.spatial = Object::cast_to<Spatial>(child);
tr.bone_idx = bone_idx;
tr.property = property;
@@ -1644,7 +1644,7 @@ void AnimationTreePlayer::_update_sources() {
ERR_FAIL_COND(!m);
}
- AnimationPlayer *ap = m->cast_to<AnimationPlayer>();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(m);
if (!ap) {
@@ -1797,16 +1797,16 @@ void AnimationTreePlayer::_bind_methods() {
ADD_GROUP("Playback", "playback_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Fixed,Idle"), "set_animation_process_mode", "get_animation_process_mode");
- BIND_CONSTANT(NODE_OUTPUT);
- BIND_CONSTANT(NODE_ANIMATION);
- BIND_CONSTANT(NODE_ONESHOT);
- BIND_CONSTANT(NODE_MIX);
- BIND_CONSTANT(NODE_BLEND2);
- BIND_CONSTANT(NODE_BLEND3);
- BIND_CONSTANT(NODE_BLEND4);
- BIND_CONSTANT(NODE_TIMESCALE);
- BIND_CONSTANT(NODE_TIMESEEK);
- BIND_CONSTANT(NODE_TRANSITION);
+ BIND_ENUM_CONSTANT(NODE_OUTPUT);
+ BIND_ENUM_CONSTANT(NODE_ANIMATION);
+ BIND_ENUM_CONSTANT(NODE_ONESHOT);
+ BIND_ENUM_CONSTANT(NODE_MIX);
+ BIND_ENUM_CONSTANT(NODE_BLEND2);
+ BIND_ENUM_CONSTANT(NODE_BLEND3);
+ BIND_ENUM_CONSTANT(NODE_BLEND4);
+ BIND_ENUM_CONSTANT(NODE_TIMESCALE);
+ BIND_ENUM_CONSTANT(NODE_TIMESEEK);
+ BIND_ENUM_CONSTANT(NODE_TRANSITION);
}
AnimationTreePlayer::AnimationTreePlayer() {
diff --git a/scene/animation/animation_tree_player.h b/scene/animation/animation_tree_player.h
index 062b4e1eeb..71d7277118 100644
--- a/scene/animation/animation_tree_player.h
+++ b/scene/animation/animation_tree_player.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -312,7 +312,7 @@ private:
Map<StringName, NodeBase *> node_map;
// return time left to finish animation
- float _process_node(const StringName &p_node, AnimationNode **r_prev_anim, float p_step, bool p_seek = false, float p_fallback_weight = 1.0, HashMap<NodePath, float> *p_weights = NULL);
+ float _process_node(const StringName &p_node, AnimationNode **r_prev_anim, float p_time, bool p_seek = false, float p_fallback_weight = 1.0, HashMap<NodePath, float> *p_weights = NULL);
void _process_animation(float p_delta);
bool reset_request;
@@ -367,7 +367,7 @@ public:
float oneshot_node_get_autorestart_delay(const StringName &p_node) const;
float oneshot_node_get_autorestart_random_delay(const StringName &p_node) const;
- void oneshot_node_set_mix_mode(const StringName &p_node, bool p_enabled);
+ void oneshot_node_set_mix_mode(const StringName &p_node, bool p_mix);
bool oneshot_node_get_mix_mode(const StringName &p_node) const;
void oneshot_node_start(const StringName &p_node);
@@ -428,8 +428,8 @@ public:
void remove_node(const StringName &p_node);
Error connect_nodes(const StringName &p_src_node, const StringName &p_dst_node, int p_dst_input);
- bool are_nodes_connected(const StringName &p_src_node, const StringName &p_dst_node, int p_input) const;
- void disconnect_nodes(const StringName &p_src_node, int p_input);
+ bool are_nodes_connected(const StringName &p_src_node, const StringName &p_dst_node, int p_dst_input) const;
+ void disconnect_nodes(const StringName &p_node, int p_input);
void set_base_path(const NodePath &p_path);
NodePath get_base_path() const;
diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp
index 78d3357bb4..fb61c43d5c 100644
--- a/scene/animation/tween.cpp
+++ b/scene/animation/tween.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -224,25 +224,25 @@ void Tween::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Fixed,Idle"), "set_tween_process_mode", "get_tween_process_mode");
- BIND_CONSTANT(TWEEN_PROCESS_FIXED);
- BIND_CONSTANT(TWEEN_PROCESS_IDLE);
-
- BIND_CONSTANT(TRANS_LINEAR);
- BIND_CONSTANT(TRANS_SINE);
- BIND_CONSTANT(TRANS_QUINT);
- BIND_CONSTANT(TRANS_QUART);
- BIND_CONSTANT(TRANS_QUAD);
- BIND_CONSTANT(TRANS_EXPO);
- BIND_CONSTANT(TRANS_ELASTIC);
- BIND_CONSTANT(TRANS_CUBIC);
- BIND_CONSTANT(TRANS_CIRC);
- BIND_CONSTANT(TRANS_BOUNCE);
- BIND_CONSTANT(TRANS_BACK);
-
- BIND_CONSTANT(EASE_IN);
- BIND_CONSTANT(EASE_OUT);
- BIND_CONSTANT(EASE_IN_OUT);
- BIND_CONSTANT(EASE_OUT_IN);
+ BIND_ENUM_CONSTANT(TWEEN_PROCESS_FIXED);
+ BIND_ENUM_CONSTANT(TWEEN_PROCESS_IDLE);
+
+ BIND_ENUM_CONSTANT(TRANS_LINEAR);
+ BIND_ENUM_CONSTANT(TRANS_SINE);
+ BIND_ENUM_CONSTANT(TRANS_QUINT);
+ BIND_ENUM_CONSTANT(TRANS_QUART);
+ BIND_ENUM_CONSTANT(TRANS_QUAD);
+ BIND_ENUM_CONSTANT(TRANS_EXPO);
+ BIND_ENUM_CONSTANT(TRANS_ELASTIC);
+ BIND_ENUM_CONSTANT(TRANS_CUBIC);
+ BIND_ENUM_CONSTANT(TRANS_CIRC);
+ BIND_ENUM_CONSTANT(TRANS_BOUNCE);
+ BIND_ENUM_CONSTANT(TRANS_BACK);
+
+ BIND_ENUM_CONSTANT(EASE_IN);
+ BIND_ENUM_CONSTANT(EASE_OUT);
+ BIND_ENUM_CONSTANT(EASE_IN_OUT);
+ BIND_ENUM_CONSTANT(EASE_OUT_IN);
}
Variant &Tween::_get_initial_val(InterpolateData &p_data) {
@@ -560,12 +560,16 @@ void Tween::_tween_process(float p_delta) {
switch (data.type) {
case INTER_PROPERTY:
- case INTER_METHOD:
- break;
+ case INTER_METHOD: {
+ Variant result = _run_equation(data);
+ emit_signal("tween_step", object, data.key, data.elapsed, result);
+ _apply_tween_value(data, result);
+ if (data.finish)
+ _apply_tween_value(data, data.final_val);
+ } break;
+
case INTER_CALLBACK:
if (data.finish) {
-
- Variant::CallError error;
if (data.call_deferred) {
switch (data.args) {
@@ -588,8 +592,8 @@ void Tween::_tween_process(float p_delta) {
object->call_deferred(data.key, data.arg[0], data.arg[1], data.arg[2], data.arg[3], data.arg[4]);
break;
}
-
} else {
+ Variant::CallError error;
Variant *arg[5] = {
&data.arg[0],
&data.arg[1],
@@ -599,19 +603,11 @@ void Tween::_tween_process(float p_delta) {
};
object->call(data.key, (const Variant **)arg, data.args, error);
}
- if (!repeat)
- call_deferred("_remove", object, data.key, true);
}
- continue;
+ break;
}
- Variant result = _run_equation(data);
- emit_signal("tween_step", object, data.key, data.elapsed, result);
-
- _apply_tween_value(data, result);
-
if (data.finish) {
- _apply_tween_value(data, data.final_val);
emit_signal("tween_completed", object, data.key);
// not repeat mode, remove completed action
if (!repeat)
diff --git a/scene/animation/tween.h b/scene/animation/tween.h
index f89f3bdc44..929d63a7fc 100644
--- a/scene/animation/tween.h
+++ b/scene/animation/tween.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -132,7 +132,7 @@ private:
void _tween_process(float p_delta);
void _set_process(bool p_process, bool p_force = false);
- void _remove(Object *p_node, String p_key, bool first_only);
+ void _remove(Object *p_object, String p_key, bool first_only);
protected:
bool _set(const StringName &p_name, const Variant &p_value);
@@ -156,34 +156,34 @@ public:
float get_speed_scale() const;
bool start();
- bool reset(Object *p_node, String p_key);
+ bool reset(Object *p_object, String p_key);
bool reset_all();
- bool stop(Object *p_node, String p_key);
+ bool stop(Object *p_object, String p_key);
bool stop_all();
- bool resume(Object *p_node, String p_key);
+ bool resume(Object *p_object, String p_key);
bool resume_all();
- bool remove(Object *p_node, String p_key);
+ bool remove(Object *p_object, String p_key);
bool remove_all();
bool seek(real_t p_time);
real_t tell() const;
real_t get_runtime() const;
- bool interpolate_property(Object *p_node, String p_property, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
+ bool interpolate_property(Object *p_object, String p_property, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
- bool interpolate_method(Object *p_node, String p_method, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
+ bool interpolate_method(Object *p_object, String p_method, Variant p_initial_val, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
bool interpolate_callback(Object *p_object, real_t p_duration, String p_callback, VARIANT_ARG_DECLARE);
bool interpolate_deferred_callback(Object *p_object, real_t p_duration, String p_callback, VARIANT_ARG_DECLARE);
- bool follow_property(Object *p_node, String p_property, Variant p_initial_val, Object *p_target, String p_target_property, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
+ bool follow_property(Object *p_object, String p_property, Variant p_initial_val, Object *p_target, String p_target_property, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
- bool follow_method(Object *p_node, String p_method, Variant p_initial_val, Object *p_target, String p_target_method, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
+ bool follow_method(Object *p_object, String p_method, Variant p_initial_val, Object *p_target, String p_target_method, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
- bool targeting_property(Object *p_node, String p_property, Object *p_initial, String p_initial_property, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
+ bool targeting_property(Object *p_object, String p_property, Object *p_initial, String p_initial_property, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
- bool targeting_method(Object *p_node, String p_method, Object *p_initial, String p_initial_method, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
+ bool targeting_method(Object *p_object, String p_method, Object *p_initial, String p_initial_method, Variant p_final_val, real_t p_duration, TransitionType p_trans_type, EaseType p_ease_type, real_t p_delay = 0);
Tween();
~Tween();
diff --git a/scene/animation/tween_interpolaters.cpp b/scene/animation/tween_interpolaters.cpp
index 434f4df3e1..8f543a575a 100644
--- a/scene/animation/tween_interpolaters.cpp
+++ b/scene/animation/tween_interpolaters.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/audio/audio_player.cpp b/scene/audio/audio_player.cpp
index a8ddcbbb45..5d71f702df 100644
--- a/scene/audio/audio_player.cpp
+++ b/scene/audio/audio_player.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,8 @@
/*************************************************************************/
#include "audio_player.h"
+#include "engine.h"
+
void AudioStreamPlayer::_mix_audio() {
if (!stream_playback.is_valid()) {
@@ -100,11 +102,20 @@ void AudioStreamPlayer::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
AudioServer::get_singleton()->add_callback(_mix_audios, this);
- if (autoplay && !get_tree()->is_editor_hint()) {
+ if (autoplay && !Engine::get_singleton()->is_editor_hint()) {
play();
}
}
+ if (p_what == NOTIFICATION_INTERNAL_PROCESS) {
+
+ if (!active || (setseek < 0 && !stream_playback->is_playing())) {
+ active = false;
+ emit_signal("finished");
+ set_process_internal(false);
+ }
+ }
+
if (p_what == NOTIFICATION_EXIT_TREE) {
AudioServer::get_singleton()->remove_callback(_mix_audios, this);
@@ -156,6 +167,7 @@ void AudioStreamPlayer::play(float p_from_pos) {
mix_volume_db = volume_db; //reset volume ramp
setseek = p_from_pos;
active = true;
+ set_process_internal(true);
}
}
@@ -170,6 +182,7 @@ void AudioStreamPlayer::stop() {
if (stream_playback.is_valid()) {
active = false;
+ set_process_internal(false);
}
}
@@ -295,6 +308,8 @@ void AudioStreamPlayer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autoplay"), "set_autoplay", "is_autoplay_enabled");
ADD_PROPERTY(PropertyInfo(Variant::INT, "mix_target", PROPERTY_HINT_ENUM, "Stereo,Surround,Center"), "set_mix_target", "get_mix_target");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
+
+ ADD_SIGNAL(MethodInfo("finished"));
}
AudioStreamPlayer::AudioStreamPlayer() {
diff --git a/scene/audio/audio_player.h b/scene/audio/audio_player.h
index 8bd6844dec..4bfa84f766 100644
--- a/scene/audio/audio_player.h
+++ b/scene/audio/audio_player.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp
index 9c20decef0..8fd19e8655 100644
--- a/scene/gui/base_button.cpp
+++ b/scene/gui/base_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "base_button.h"
+
#include "os/keyboard.h"
#include "print_string.h"
#include "scene/main/viewport.h"
@@ -514,13 +515,13 @@ void BaseButton::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shortcut", PROPERTY_HINT_RESOURCE_TYPE, "ShortCut"), "set_shortcut", "get_shortcut");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "group", PROPERTY_HINT_RESOURCE_TYPE, "ButtonGroup"), "set_button_group", "get_button_group");
- BIND_CONSTANT(DRAW_NORMAL);
- BIND_CONSTANT(DRAW_PRESSED);
- BIND_CONSTANT(DRAW_HOVER);
- BIND_CONSTANT(DRAW_DISABLED);
+ BIND_ENUM_CONSTANT(DRAW_NORMAL);
+ BIND_ENUM_CONSTANT(DRAW_PRESSED);
+ BIND_ENUM_CONSTANT(DRAW_HOVER);
+ BIND_ENUM_CONSTANT(DRAW_DISABLED);
- BIND_CONSTANT(ACTION_MODE_BUTTON_PRESS);
- BIND_CONSTANT(ACTION_MODE_BUTTON_RELEASE);
+ BIND_ENUM_CONSTANT(ACTION_MODE_BUTTON_PRESS);
+ BIND_ENUM_CONSTANT(ACTION_MODE_BUTTON_RELEASE);
}
BaseButton::BaseButton() {
diff --git a/scene/gui/base_button.h b/scene/gui/base_button.h
index dfcf3b0f8a..0c08dc53a3 100644
--- a/scene/gui/base_button.h
+++ b/scene/gui/base_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp
index 16b2cfa083..739fd84b38 100644
--- a/scene/gui/box_container.cpp
+++ b/scene/gui/box_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,7 +54,7 @@ void BoxContainer::_resort() {
Map<Control *, _MinSizeCache> min_size_cache;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
if (c->is_set_as_toplevel())
@@ -106,7 +106,7 @@ void BoxContainer::_resort() {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
if (c->is_set_as_toplevel())
@@ -159,7 +159,7 @@ void BoxContainer::_resort() {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
if (c->is_set_as_toplevel())
@@ -211,7 +211,7 @@ Size2 BoxContainer::get_minimum_size() const {
bool first = true;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -295,9 +295,9 @@ void BoxContainer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_alignment"), &BoxContainer::get_alignment);
ClassDB::bind_method(D_METHOD("set_alignment", "alignment"), &BoxContainer::set_alignment);
- BIND_CONSTANT(ALIGN_BEGIN);
- BIND_CONSTANT(ALIGN_CENTER);
- BIND_CONSTANT(ALIGN_END);
+ BIND_ENUM_CONSTANT(ALIGN_BEGIN);
+ BIND_ENUM_CONSTANT(ALIGN_CENTER);
+ BIND_ENUM_CONSTANT(ALIGN_END);
ADD_PROPERTY(PropertyInfo(Variant::INT, "alignment", PROPERTY_HINT_ENUM, "Begin,Center,End"), "set_alignment", "get_alignment");
}
diff --git a/scene/gui/box_container.h b/scene/gui/box_container.h
index d544ff79d1..4d00a2011f 100644
--- a/scene/gui/box_container.h
+++ b/scene/gui/box_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp
index 9a0b3b3c89..1fa03f81f4 100644
--- a/scene/gui/button.cpp
+++ b/scene/gui/button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -59,7 +59,7 @@ void Button::_notification(int p_what) {
if (p_what == NOTIFICATION_TRANSLATION_CHANGED) {
- xl_text = XL_MESSAGE(text);
+ xl_text = tr(text);
minimum_size_changed();
update();
}
@@ -172,7 +172,7 @@ void Button::set_text(const String &p_text) {
if (text == p_text)
return;
text = p_text;
- xl_text = XL_MESSAGE(p_text);
+ xl_text = tr(p_text);
update();
_change_notify("text");
minimum_size_changed();
@@ -245,9 +245,9 @@ void Button::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_text_align"), &Button::get_text_align);
ClassDB::bind_method(D_METHOD("is_flat"), &Button::is_flat);
- BIND_CONSTANT(ALIGN_LEFT);
- BIND_CONSTANT(ALIGN_CENTER);
- BIND_CONSTANT(ALIGN_RIGHT);
+ BIND_ENUM_CONSTANT(ALIGN_LEFT);
+ BIND_ENUM_CONSTANT(ALIGN_CENTER);
+ BIND_ENUM_CONSTANT(ALIGN_RIGHT);
ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT_INTL), "set_text", "get_text");
ADD_PROPERTYNZ(PropertyInfo(Variant::OBJECT, "icon", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_button_icon", "get_button_icon");
diff --git a/scene/gui/button.h b/scene/gui/button.h
index 499e44c0e1..dd6e730b86 100644
--- a/scene/gui/button.h
+++ b/scene/gui/button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/button_group.cpp b/scene/gui/button_group.cpp
index e54e810d7d..336c88fe9d 100644
--- a/scene/gui/button_group.cpp
+++ b/scene/gui/button_group.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -56,7 +56,7 @@ void ButtonGroup::set_pressed_button(BaseButton *p_button) {
void ButtonGroup::_pressed(Object *p_button) {
ERR_FAIL_NULL(p_button);
- BaseButton *b=p_button->cast_to<BaseButton>();
+ BaseButton *b=Object::cast_to<BaseButton>(p_button);
ERR_FAIL_COND(!b);
for(Set<BaseButton*>::Element *E=buttons.front();E;E=E->next()) {
diff --git a/scene/gui/button_group.h b/scene/gui/button_group.h
index 93c3aaaeb3..6ebc0575d2 100644
--- a/scene/gui/button_group.h
+++ b/scene/gui/button_group.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/center_container.cpp b/scene/gui/center_container.cpp
index bdc811870d..8c9c9d8720 100644
--- a/scene/gui/center_container.cpp
+++ b/scene/gui/center_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -36,7 +36,7 @@ Size2 CenterContainer::get_minimum_size() const {
Size2 ms;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -69,7 +69,7 @@ void CenterContainer::_notification(int p_what) {
Size2 size = get_size();
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
diff --git a/scene/gui/center_container.h b/scene/gui/center_container.h
index 30b526e893..4397539046 100644
--- a/scene/gui/center_container.h
+++ b/scene/gui/center_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/check_box.cpp b/scene/gui/check_box.cpp
index b61d516599..21e2269141 100644
--- a/scene/gui/check_box.cpp
+++ b/scene/gui/check_box.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/check_box.h b/scene/gui/check_box.h
index ec8e097bae..4a1adb5f2f 100644
--- a/scene/gui/check_box.h
+++ b/scene/gui/check_box.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/check_button.cpp b/scene/gui/check_button.cpp
index 1c3d4df308..e68159e27f 100644
--- a/scene/gui/check_button.cpp
+++ b/scene/gui/check_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/check_button.h b/scene/gui/check_button.h
index 8634858cfe..af3b80fe04 100644
--- a/scene/gui/check_button.h
+++ b/scene/gui/check_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index dddd53dd95..704c00b1d6 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -56,11 +56,10 @@ void ColorPicker::_notification(int p_what) {
} break;
case NOTIFICATION_VISIBILITY_CHANGED: {
- if (get_parent()) {
- Popup *p = get_parent()->cast_to<Popup>();
- if (p)
- p->set_size(Size2(get_combined_minimum_size().width + get_constant("margin") * 2, get_combined_minimum_size().height + get_constant("margin") * 2));
- }
+
+ Popup *p = Object::cast_to<Popup>(get_parent());
+ if (p)
+ p->set_size(Size2(get_combined_minimum_size().width + get_constant("margin") * 2, get_combined_minimum_size().height + get_constant("margin") * 2));
} break;
case MainLoop::NOTIFICATION_WM_QUIT_REQUEST: {
@@ -204,7 +203,7 @@ void ColorPicker::_update_presets() {
}
void ColorPicker::_text_type_toggled() {
- if (!get_tree()->is_editor_hint())
+ if (!Engine::get_singleton()->is_editor_hint())
return;
text_is_constructor = !text_is_constructor;
if (text_is_constructor) {
@@ -314,9 +313,9 @@ void ColorPicker::_hsv_draw(int p_which, Control *c) {
}
}
-void ColorPicker::_uv_input(const Ref<InputEvent> &ev) {
+void ColorPicker::_uv_input(const Ref<InputEvent> &p_event) {
- Ref<InputEventMouseButton> bev = ev;
+ Ref<InputEventMouseButton> bev = p_event;
if (bev.is_valid()) {
if (bev->is_pressed() && bev->get_button_index() == BUTTON_LEFT) {
@@ -335,7 +334,7 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &ev) {
}
}
- Ref<InputEventMouseMotion> mev = ev;
+ Ref<InputEventMouseMotion> mev = p_event;
if (mev.is_valid()) {
if (!changing_color)
@@ -352,9 +351,9 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &ev) {
}
}
-void ColorPicker::_w_input(const Ref<InputEvent> &ev) {
+void ColorPicker::_w_input(const Ref<InputEvent> &p_event) {
- Ref<InputEventMouseButton> bev = ev;
+ Ref<InputEventMouseButton> bev = p_event;
if (bev.is_valid()) {
@@ -372,7 +371,7 @@ void ColorPicker::_w_input(const Ref<InputEvent> &ev) {
emit_signal("color_changed", color);
}
- Ref<InputEventMouseMotion> mev = ev;
+ Ref<InputEventMouseMotion> mev = p_event;
if (mev.is_valid()) {
@@ -388,9 +387,9 @@ void ColorPicker::_w_input(const Ref<InputEvent> &ev) {
}
}
-void ColorPicker::_preset_input(const Ref<InputEvent> &ev) {
+void ColorPicker::_preset_input(const Ref<InputEvent> &p_event) {
- Ref<InputEventMouseButton> bev = ev;
+ Ref<InputEventMouseButton> bev = p_event;
if (bev.is_valid()) {
@@ -407,7 +406,7 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &ev) {
emit_signal("color_changed", color);
}
- Ref<InputEventMouseMotion> mev = ev;
+ Ref<InputEventMouseMotion> mev = p_event;
if (mev.is_valid()) {
@@ -423,9 +422,9 @@ void ColorPicker::_preset_input(const Ref<InputEvent> &ev) {
}
}
-void ColorPicker::_screen_input(const Ref<InputEvent> &ev) {
+void ColorPicker::_screen_input(const Ref<InputEvent> &p_event) {
- Ref<InputEventMouseButton> bev = ev;
+ Ref<InputEventMouseButton> bev = p_event;
if (bev.is_valid()) {
@@ -435,7 +434,7 @@ void ColorPicker::_screen_input(const Ref<InputEvent> &ev) {
}
}
- Ref<InputEventMouseMotion> mev = ev;
+ Ref<InputEventMouseMotion> mev = p_event;
if (mev.is_valid()) {
Viewport *r = get_tree()->get_root();
diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h
index 1a79266409..7de67a707c 100644
--- a/scene/gui/color_picker.h
+++ b/scene/gui/color_picker.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -81,10 +81,10 @@ private:
void _sample_draw();
void _hsv_draw(int p_which, Control *c);
- void _uv_input(const Ref<InputEvent> &p_input);
- void _w_input(const Ref<InputEvent> &p_input);
- void _preset_input(const Ref<InputEvent> &p_input);
- void _screen_input(const Ref<InputEvent> &p_input);
+ void _uv_input(const Ref<InputEvent> &p_event);
+ void _w_input(const Ref<InputEvent> &p_event);
+ void _preset_input(const Ref<InputEvent> &p_event);
+ void _screen_input(const Ref<InputEvent> &p_event);
void _add_preset_pressed();
void _screen_pick_pressed();
diff --git a/scene/gui/color_rect.cpp b/scene/gui/color_rect.cpp
index 0641302b1c..6b5247648e 100644
--- a/scene/gui/color_rect.cpp
+++ b/scene/gui/color_rect.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/color_rect.h b/scene/gui/color_rect.h
index 65da3d9a7c..382648fddf 100644
--- a/scene/gui/color_rect.h
+++ b/scene/gui/color_rect.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/container.cpp b/scene/gui/container.cpp
index 4bbe15ed7e..ba5d92620b 100644
--- a/scene/gui/container.cpp
+++ b/scene/gui/container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,7 +43,7 @@ void Container::add_child_notify(Node *p_child) {
Control::add_child_notify(p_child);
- Control *control = p_child->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(p_child);
if (!control)
return;
@@ -57,7 +57,7 @@ void Container::move_child_notify(Node *p_child) {
Control::move_child_notify(p_child);
- if (!p_child->cast_to<Control>())
+ if (!Object::cast_to<Control>(p_child))
return;
queue_sort();
@@ -67,7 +67,7 @@ void Container::remove_child_notify(Node *p_child) {
Control::remove_child_notify(p_child);
- Control *control = p_child->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(p_child);
if (!control)
return;
diff --git a/scene/gui/container.h b/scene/gui/container.h
index bff24c6d55..60a7a9efcb 100644
--- a/scene/gui/container.h
+++ b/scene/gui/container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 01570e28c4..961fccc804 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -51,6 +51,12 @@ Variant Control::edit_get_state() const {
s["rect"] = get_rect();
s["rot"] = get_rotation();
s["scale"] = get_scale();
+ Array anchors;
+ anchors.push_back(get_anchor(MARGIN_LEFT));
+ anchors.push_back(get_anchor(MARGIN_TOP));
+ anchors.push_back(get_anchor(MARGIN_RIGHT));
+ anchors.push_back(get_anchor(MARGIN_BOTTOM));
+ s["anchors"] = anchors;
return s;
}
void Control::edit_set_state(const Variant &p_state) {
@@ -62,6 +68,11 @@ void Control::edit_set_state(const Variant &p_state) {
set_size(state.size);
set_rotation(s["rot"]);
set_scale(s["scale"]);
+ Array anchors = s["anchors"];
+ set_anchor(MARGIN_LEFT, anchors[0]);
+ set_anchor(MARGIN_TOP, anchors[1]);
+ set_anchor(MARGIN_RIGHT, anchors[2]);
+ set_anchor(MARGIN_BOTTOM, anchors[3]);
}
void Control::set_custom_minimum_size(const Size2 &p_custom) {
@@ -342,7 +353,7 @@ void Control::_resize(const Size2 &p_size) {
void Control::add_child_notify(Node *p_child) {
- Control *child_c = p_child->cast_to<Control>();
+ Control *child_c = Object::cast_to<Control>(p_child);
if (!child_c)
return;
@@ -353,7 +364,7 @@ void Control::add_child_notify(Node *p_child) {
void Control::remove_child_notify(Node *p_child) {
- Control *child_c = p_child->cast_to<Control>();
+ Control *child_c = Object::cast_to<Control>(p_child);
if (!child_c)
return;
@@ -387,7 +398,7 @@ void Control::_notification(int p_notification) {
case NOTIFICATION_ENTER_CANVAS: {
- data.parent = get_parent()->cast_to<Control>();
+ data.parent = Object::cast_to<Control>(get_parent());
if (is_set_as_toplevel()) {
data.SI = get_viewport()->_gui_add_subwindow_control(this);
@@ -410,13 +421,13 @@ void Control::_notification(int p_notification) {
if (!parent)
break;
- CanvasItem *ci = parent->cast_to<CanvasItem>();
+ CanvasItem *ci = Object::cast_to<CanvasItem>(parent);
if (ci && ci->is_set_as_toplevel()) {
subwindow = true;
break;
}
- parent_control = parent->cast_to<Control>();
+ parent_control = Object::cast_to<Control>(parent);
if (parent_control) {
break;
@@ -613,7 +624,7 @@ Variant Control::get_drag_data(const Point2 &p_point) {
if (data.drag_owner) {
Object *obj = ObjectDB::get_instance(data.drag_owner);
if (obj) {
- Control *c = obj->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(obj);
return c->call("get_drag_data_fw", p_point, this);
}
}
@@ -635,7 +646,7 @@ bool Control::can_drop_data(const Point2 &p_point, const Variant &p_data) const
if (data.drag_owner) {
Object *obj = ObjectDB::get_instance(data.drag_owner);
if (obj) {
- Control *c = obj->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(obj);
return c->call("can_drop_data_fw", p_point, p_data, this);
}
}
@@ -656,7 +667,7 @@ void Control::drop_data(const Point2 &p_point, const Variant &p_data) {
if (data.drag_owner) {
Object *obj = ObjectDB::get_instance(data.drag_owner);
if (obj) {
- Control *c = obj->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(obj);
c->call("drop_data_fw", p_point, p_data, this);
return;
}
@@ -738,7 +749,7 @@ Ref<Texture> Control::get_icon(const StringName &p_name, const StringName &p_typ
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -774,7 +785,7 @@ Ref<Shader> Control::get_shader(const StringName &p_name, const StringName &p_ty
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -810,7 +821,7 @@ Ref<StyleBox> Control::get_stylebox(const StringName &p_name, const StringName &
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -847,7 +858,7 @@ Ref<Font> Control::get_font(const StringName &p_name, const StringName &p_type)
if (theme_owner->data.theme->get_default_theme_font().is_valid())
return theme_owner->data.theme->get_default_theme_font();
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -881,7 +892,7 @@ Color Control::get_color(const StringName &p_name, const StringName &p_type) con
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -916,7 +927,7 @@ int Control::get_constant(const StringName &p_name, const StringName &p_type) co
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -1004,7 +1015,7 @@ bool Control::has_icon(const StringName &p_name, const StringName &p_type) const
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -1038,7 +1049,7 @@ bool Control::has_shader(const StringName &p_name, const StringName &p_type) con
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -1071,7 +1082,7 @@ bool Control::has_stylebox(const StringName &p_name, const StringName &p_type) c
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -1104,7 +1115,7 @@ bool Control::has_font(const StringName &p_name, const StringName &p_type) const
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -1138,7 +1149,7 @@ bool Control::has_color(const StringName &p_name, const StringName &p_type) cons
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -1172,7 +1183,7 @@ bool Control::has_constant(const StringName &p_name, const StringName &p_type) c
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
- Control *parent = theme_owner->get_parent() ? theme_owner->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
theme_owner = parent->data.theme_owner;
@@ -1212,21 +1223,7 @@ void Control::_size_changed() {
for (int i = 0; i < 4; i++) {
float area = parent_size[i & 1];
- switch (data.anchor[i]) {
-
- case ANCHOR_BEGIN: {
-
- margin_pos[i] = data.margin[i];
- } break;
- case ANCHOR_END: {
-
- margin_pos[i] = area - data.margin[i];
- } break;
- case ANCHOR_CENTER: {
-
- margin_pos[i] = (area / 2) - data.margin[i];
- } break;
- }
+ margin_pos[i] = data.margin[i] + (data.anchor[i] * area);
}
Point2 new_pos_cache = Point2(margin_pos[0], margin_pos[1]);
@@ -1299,61 +1296,40 @@ float Control::_get_range(int p_idx) const {
return to - from;
}
-float Control::_s2a(float p_val, AnchorType p_anchor, float p_range) const {
-
- switch (p_anchor) {
-
- case ANCHOR_BEGIN: {
- return p_val;
- } break;
- case ANCHOR_END: {
- return p_range - p_val;
- } break;
- case ANCHOR_CENTER: {
- return (p_range / 2) - p_val;
- } break;
- }
-
- return 0;
+float Control::_s2a(float p_val, float p_anchor, float p_range) const {
+ return p_val - (p_anchor * p_range);
}
-float Control::_a2s(float p_val, AnchorType p_anchor, float p_range) const {
-
- switch (p_anchor) {
-
- case ANCHOR_BEGIN: {
- return Math::floor(p_val);
- } break;
- case ANCHOR_END: {
- return Math::floor(p_range - p_val);
- } break;
- case ANCHOR_CENTER: {
- return Math::floor((p_range / 2) - p_val);
- } break;
- }
- return 0;
+float Control::_a2s(float p_val, float p_anchor, float p_range) const {
+ return Math::floor(p_val + (p_anchor * p_range));
}
-void Control::set_anchor(Margin p_margin, AnchorType p_anchor, bool p_keep_margin) {
+void Control::set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin, bool p_push_opposite_anchor) {
+ bool pushed = false;
+ data.anchor[p_margin] = CLAMP(p_anchor, 0.0, 1.0);
- if (!is_inside_tree()) {
+ if (((p_margin == MARGIN_LEFT || p_margin == MARGIN_TOP) && data.anchor[p_margin] > data.anchor[(p_margin + 2) % 4]) ||
+ ((p_margin == MARGIN_RIGHT || p_margin == MARGIN_BOTTOM) && data.anchor[p_margin] < data.anchor[(p_margin + 2) % 4])) {
+ if (p_push_opposite_anchor) {
+ data.anchor[(p_margin + 2) % 4] = data.anchor[p_margin];
+ pushed = true;
+ } else {
+ data.anchor[p_margin] = data.anchor[(p_margin + 2) % 4];
+ }
+ }
- data.anchor[p_margin] = p_anchor;
- } else if (!p_keep_margin) {
- float pr = _get_parent_range(p_margin);
- float s = _a2s(data.margin[p_margin], data.anchor[p_margin], pr);
- data.anchor[p_margin] = p_anchor;
- data.margin[p_margin] = _s2a(s, p_anchor, pr);
- } else {
- data.anchor[p_margin] = p_anchor;
- _size_changed();
+ if (is_inside_tree()) {
+ if (p_keep_margin) {
+ _size_changed();
+ }
}
+ update();
_change_notify();
}
-void Control::_set_anchor(Margin p_margin, AnchorType p_anchor) {
+void Control::_set_anchor(Margin p_margin, float p_anchor) {
#ifdef TOOLS_ENABLED
- if (is_inside_tree() && get_tree()->is_editor_hint()) {
+ if (is_inside_tree() && Engine::get_singleton()->is_editor_hint()) {
set_anchor(p_margin, p_anchor, EDITOR_DEF("editors/2d/keep_margins_when_changing_anchors", false));
} else {
set_anchor(p_margin, p_anchor, false);
@@ -1363,13 +1339,127 @@ void Control::_set_anchor(Margin p_margin, AnchorType p_anchor) {
#endif
}
-void Control::set_anchor_and_margin(Margin p_margin, AnchorType p_anchor, float p_pos) {
+void Control::set_anchor_and_margin(Margin p_margin, float p_anchor, float p_pos, bool p_push_opposite_anchor) {
- set_anchor(p_margin, p_anchor);
+ set_anchor(p_margin, p_anchor, false, p_push_opposite_anchor);
set_margin(p_margin, p_pos);
}
-Control::AnchorType Control::get_anchor(Margin p_margin) const {
+void Control::set_anchors_preset(LayoutPreset p_preset, bool p_keep_margin) {
+ //Left
+ switch (p_preset) {
+ case PRESET_TOP_LEFT:
+ case PRESET_BOTTOM_LEFT:
+ case PRESET_CENTER_LEFT:
+ case PRESET_TOP_WIDE:
+ case PRESET_BOTTOM_WIDE:
+ case PRESET_LEFT_WIDE:
+ case PRESET_HCENTER_WIDE:
+ case PRESET_WIDE:
+ set_anchor(MARGIN_LEFT, ANCHOR_BEGIN, p_keep_margin);
+ break;
+
+ case PRESET_CENTER_TOP:
+ case PRESET_CENTER_BOTTOM:
+ case PRESET_CENTER:
+ case PRESET_VCENTER_WIDE:
+ set_anchor(MARGIN_LEFT, 0.5, p_keep_margin);
+ break;
+
+ case PRESET_TOP_RIGHT:
+ case PRESET_BOTTOM_RIGHT:
+ case PRESET_CENTER_RIGHT:
+ case PRESET_RIGHT_WIDE:
+ set_anchor(MARGIN_LEFT, ANCHOR_END, p_keep_margin);
+ break;
+ }
+
+ // Top
+ switch (p_preset) {
+ case PRESET_TOP_LEFT:
+ case PRESET_TOP_RIGHT:
+ case PRESET_CENTER_TOP:
+ case PRESET_LEFT_WIDE:
+ case PRESET_RIGHT_WIDE:
+ case PRESET_TOP_WIDE:
+ case PRESET_VCENTER_WIDE:
+ case PRESET_WIDE:
+ set_anchor(MARGIN_TOP, ANCHOR_BEGIN, p_keep_margin);
+ break;
+
+ case PRESET_CENTER_LEFT:
+ case PRESET_CENTER_RIGHT:
+ case PRESET_CENTER:
+ case PRESET_HCENTER_WIDE:
+ set_anchor(MARGIN_TOP, 0.5, p_keep_margin);
+ break;
+
+ case PRESET_BOTTOM_LEFT:
+ case PRESET_BOTTOM_RIGHT:
+ case PRESET_CENTER_BOTTOM:
+ case PRESET_BOTTOM_WIDE:
+ set_anchor(MARGIN_TOP, ANCHOR_END, p_keep_margin);
+ break;
+ }
+
+ // Right
+ switch (p_preset) {
+ case PRESET_TOP_LEFT:
+ case PRESET_BOTTOM_LEFT:
+ case PRESET_CENTER_LEFT:
+ case PRESET_LEFT_WIDE:
+ set_anchor(MARGIN_RIGHT, ANCHOR_BEGIN, p_keep_margin);
+ break;
+
+ case PRESET_CENTER_TOP:
+ case PRESET_CENTER_BOTTOM:
+ case PRESET_CENTER:
+ case PRESET_VCENTER_WIDE:
+ set_anchor(MARGIN_RIGHT, 0.5, p_keep_margin);
+ break;
+
+ case PRESET_TOP_RIGHT:
+ case PRESET_BOTTOM_RIGHT:
+ case PRESET_CENTER_RIGHT:
+ case PRESET_TOP_WIDE:
+ case PRESET_RIGHT_WIDE:
+ case PRESET_BOTTOM_WIDE:
+ case PRESET_HCENTER_WIDE:
+ case PRESET_WIDE:
+ set_anchor(MARGIN_RIGHT, ANCHOR_END, p_keep_margin);
+ break;
+ }
+
+ // Bottom
+ switch (p_preset) {
+ case PRESET_TOP_LEFT:
+ case PRESET_TOP_RIGHT:
+ case PRESET_CENTER_TOP:
+ case PRESET_TOP_WIDE:
+ set_anchor(MARGIN_BOTTOM, ANCHOR_BEGIN, p_keep_margin);
+ break;
+
+ case PRESET_CENTER_LEFT:
+ case PRESET_CENTER_RIGHT:
+ case PRESET_CENTER:
+ case PRESET_HCENTER_WIDE:
+ set_anchor(MARGIN_BOTTOM, 0.5, p_keep_margin);
+ break;
+
+ case PRESET_BOTTOM_LEFT:
+ case PRESET_BOTTOM_RIGHT:
+ case PRESET_CENTER_BOTTOM:
+ case PRESET_LEFT_WIDE:
+ case PRESET_RIGHT_WIDE:
+ case PRESET_BOTTOM_WIDE:
+ case PRESET_VCENTER_WIDE:
+ case PRESET_WIDE:
+ set_anchor(MARGIN_BOTTOM, ANCHOR_END, p_keep_margin);
+ break;
+ }
+}
+
+float Control::get_anchor(Margin p_margin) const {
return data.anchor[p_margin];
}
@@ -1523,11 +1613,13 @@ Rect2 Control::get_item_rect() const {
void Control::set_area_as_parent_rect(int p_margin) {
data.anchor[MARGIN_LEFT] = ANCHOR_BEGIN;
+ data.margin[MARGIN_LEFT] = p_margin;
data.anchor[MARGIN_TOP] = ANCHOR_BEGIN;
+ data.margin[MARGIN_TOP] = p_margin;
data.anchor[MARGIN_RIGHT] = ANCHOR_END;
+ data.margin[MARGIN_RIGHT] = -p_margin;
data.anchor[MARGIN_BOTTOM] = ANCHOR_END;
- for (int i = 0; i < 4; i++)
- data.margin[i] = p_margin;
+ data.margin[MARGIN_BOTTOM] = -p_margin;
_size_changed();
}
@@ -1595,7 +1687,7 @@ static Control *_next_control(Control *p_from) {
if (p_from->is_set_as_toplevel())
return NULL; // can't go above
- Control *parent = p_from->get_parent() ? p_from->get_parent()->cast_to<Control>() : NULL;
+ Control *parent = Object::cast_to<Control>(p_from->get_parent());
if (!parent) {
@@ -1606,7 +1698,7 @@ static Control *_next_control(Control *p_from) {
ERR_FAIL_INDEX_V(next, parent->get_child_count(), NULL);
for (int i = (next + 1); i < parent->get_child_count(); i++) {
- Control *c = parent->get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(parent->get_child(i));
if (!c || !c->is_visible_in_tree() || c->is_set_as_toplevel())
continue;
@@ -1629,7 +1721,7 @@ Control *Control::find_next_valid_focus() const {
for (int i = 0; i < from->get_child_count(); i++) {
- Control *c = from->get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(from->get_child(i));
if (!c || !c->is_visible_in_tree() || c->is_set_as_toplevel()) {
continue;
}
@@ -1647,10 +1739,8 @@ Control *Control::find_next_valid_focus() const {
if (!next_child) { //nothing else.. go up and find either window or subwindow
next_child = const_cast<Control *>(this);
while (next_child && !next_child->is_set_as_toplevel()) {
- if (next_child->get_parent()) {
- next_child = next_child->get_parent()->cast_to<Control>();
- } else
- next_child = NULL;
+
+ next_child = cast_to<Control>(next_child->get_parent());
}
if (!next_child) {
@@ -1684,7 +1774,7 @@ static Control *_prev_control(Control *p_from) {
Control *child = NULL;
for (int i = p_from->get_child_count() - 1; i >= 0; i--) {
- Control *c = p_from->get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(p_from->get_child(i));
if (!c || !c->is_visible_in_tree() || c->is_set_as_toplevel())
continue;
@@ -1708,7 +1798,7 @@ Control *Control::find_prev_valid_focus() const {
Control *prev_child = NULL;
- if (from->is_set_as_toplevel() || !from->get_parent() || !from->get_parent()->cast_to<Control>()) {
+ if (from->is_set_as_toplevel() || !Object::cast_to<Control>(from->get_parent())) {
//find last of the childs
@@ -1718,7 +1808,7 @@ Control *Control::find_prev_valid_focus() const {
for (int i = (from->get_position_in_parent() - 1); i >= 0; i--) {
- Control *c = from->get_parent()->get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(from->get_parent()->get_child(i));
if (!c || !c->is_visible_in_tree() || c->is_set_as_toplevel()) {
continue;
@@ -1730,7 +1820,7 @@ Control *Control::find_prev_valid_focus() const {
if (!prev_child) {
- prev_child = from->get_parent()->cast_to<Control>();
+ prev_child = Object::cast_to<Control>(from->get_parent());
} else {
prev_child = _prev_control(prev_child);
@@ -1747,8 +1837,6 @@ Control *Control::find_prev_valid_focus() const {
}
return NULL;
-
- return NULL;
}
Control::FocusMode Control::get_focus_mode() const {
@@ -1822,14 +1910,14 @@ void Control::_modal_stack_remove() {
void Control::_propagate_theme_changed(CanvasItem *p_at, Control *p_owner, bool p_assign) {
- Control *c = p_at->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(p_at);
if (c && c != p_owner && c->data.theme.is_valid()) // has a theme, this can't be propagated
return;
for (int i = 0; i < p_at->get_child_count(); i++) {
- CanvasItem *child = p_at->get_child(i)->cast_to<CanvasItem>();
+ CanvasItem *child = Object::cast_to<CanvasItem>(p_at->get_child(i));
if (child) {
_propagate_theme_changed(child, p_owner, p_assign);
}
@@ -1865,7 +1953,7 @@ void Control::set_theme(const Ref<Theme> &p_theme) {
_propagate_theme_changed(this, this);
} else {
- Control *parent = get_parent() ? get_parent()->cast_to<Control>() : NULL;
+ Control *parent = cast_to<Control>(get_parent());
if (parent && parent->data.theme_owner) {
_propagate_theme_changed(this, parent->data.theme_owner);
} else {
@@ -1948,7 +2036,7 @@ Control *Control::_get_focus_neighbour(Margin p_margin, int p_count) {
Control *c = NULL;
Node *n = get_node(data.focus_neighbour[p_margin]);
if (n) {
- c = n->cast_to<Control>();
+ c = Object::cast_to<Control>(n);
if (!c) {
@@ -2005,7 +2093,7 @@ Control *Control::_get_focus_neighbour(Margin p_margin, int p_count) {
while (base) {
- Control *c = base->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(base);
if (c) {
if (c->data.SI)
break;
@@ -2025,10 +2113,10 @@ Control *Control::_get_focus_neighbour(Margin p_margin, int p_count) {
void Control::_window_find_focus_neighbour(const Vector2 &p_dir, Node *p_at, const Point2 *p_points, float p_min, float &r_closest_dist, Control **r_closest) {
- if (p_at->cast_to<Viewport>())
+ if (Object::cast_to<Viewport>(p_at))
return; //bye
- Control *c = p_at->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(p_at);
if (c && c != this && c->get_focus_mode() == FOCUS_ALL && c->is_visible_in_tree()) {
@@ -2078,7 +2166,7 @@ void Control::_window_find_focus_neighbour(const Vector2 &p_dir, Node *p_at, con
for (int i = 0; i < p_at->get_child_count(); i++) {
Node *child = p_at->get_child(i);
- Control *childc = child->cast_to<Control>();
+ Control *childc = Object::cast_to<Control>(child);
if (childc && childc->data.SI)
continue; //subwindow, ignore
_window_find_focus_neighbour(p_dir, p_at->get_child(i), p_points, p_min, r_closest_dist, r_closest);
@@ -2273,7 +2361,7 @@ Control *Control::get_root_parent_control() const {
while (ci) {
- const Control *c = ci->cast_to<Control>();
+ const Control *c = Object::cast_to<Control>(ci);
if (c) {
root = c;
@@ -2371,11 +2459,12 @@ void Control::_bind_methods() {
ClassDB::bind_method(D_METHOD("accept_event"), &Control::accept_event);
ClassDB::bind_method(D_METHOD("get_minimum_size"), &Control::get_minimum_size);
ClassDB::bind_method(D_METHOD("get_combined_minimum_size"), &Control::get_combined_minimum_size);
- ClassDB::bind_method(D_METHOD("set_anchor", "margin", "anchor_mode", "keep_margin"), &Control::set_anchor, DEFVAL(false));
- ClassDB::bind_method(D_METHOD("_set_anchor", "margin", "anchor_mode"), &Control::_set_anchor);
+ ClassDB::bind_method(D_METHOD("set_anchor", "margin", "anchor", "keep_margin", "push_opposite_anchor"), &Control::set_anchor, DEFVAL(false), DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("_set_anchor", "margin", "anchor"), &Control::_set_anchor);
+ ClassDB::bind_method(D_METHOD("set_anchors_preset", "preset", "keep_margin"), &Control::set_anchors_preset, DEFVAL(false));
ClassDB::bind_method(D_METHOD("get_anchor", "margin"), &Control::get_anchor);
ClassDB::bind_method(D_METHOD("set_margin", "margin", "offset"), &Control::set_margin);
- ClassDB::bind_method(D_METHOD("set_anchor_and_margin", "margin", "anchor_mode", "offset"), &Control::set_anchor_and_margin);
+ ClassDB::bind_method(D_METHOD("set_anchor_and_margin", "margin", "anchor", "offset", "push_opposite_anchor"), &Control::set_anchor_and_margin, DEFVAL(false));
ClassDB::bind_method(D_METHOD("set_begin", "pos"), &Control::set_begin);
ClassDB::bind_method(D_METHOD("set_end", "pos"), &Control::set_end);
ClassDB::bind_method(D_METHOD("set_position", "pos"), &Control::set_position);
@@ -2497,10 +2586,10 @@ void Control::_bind_methods() {
BIND_VMETHOD(MethodInfo("drop_data", PropertyInfo(Variant::VECTOR2, "pos"), PropertyInfo(Variant::NIL, "data")));
ADD_GROUP("Anchor", "anchor_");
- ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "anchor_left", PROPERTY_HINT_ENUM, "Begin,End,Center"), "_set_anchor", "get_anchor", MARGIN_LEFT);
- ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "anchor_top", PROPERTY_HINT_ENUM, "Begin,End,Center"), "_set_anchor", "get_anchor", MARGIN_TOP);
- ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "anchor_right", PROPERTY_HINT_ENUM, "Begin,End,Center"), "_set_anchor", "get_anchor", MARGIN_RIGHT);
- ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "anchor_bottom", PROPERTY_HINT_ENUM, "Begin,End,Center"), "_set_anchor", "get_anchor", MARGIN_BOTTOM);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "anchor_left", PROPERTY_HINT_RANGE, "0,1,0.01"), "_set_anchor", "get_anchor", MARGIN_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "anchor_top", PROPERTY_HINT_RANGE, "0,1,0.01"), "_set_anchor", "get_anchor", MARGIN_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "anchor_right", PROPERTY_HINT_RANGE, "0,1,0.01"), "_set_anchor", "get_anchor", MARGIN_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "anchor_bottom", PROPERTY_HINT_RANGE, "0,1,0.01"), "_set_anchor", "get_anchor", MARGIN_BOTTOM);
ADD_GROUP("Margin", "margin_");
ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "margin_left", PROPERTY_HINT_RANGE, "-4096,4096"), "set_margin", "get_margin", MARGIN_LEFT);
@@ -2541,12 +2630,9 @@ void Control::_bind_methods() {
ADD_PROPERTYNZ(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "Theme"), "set_theme", "get_theme");
ADD_GROUP("", "");
- BIND_CONSTANT(ANCHOR_BEGIN);
- BIND_CONSTANT(ANCHOR_END);
- BIND_CONSTANT(ANCHOR_CENTER);
- BIND_CONSTANT(FOCUS_NONE);
- BIND_CONSTANT(FOCUS_CLICK);
- BIND_CONSTANT(FOCUS_ALL);
+ BIND_ENUM_CONSTANT(FOCUS_NONE);
+ BIND_ENUM_CONSTANT(FOCUS_CLICK);
+ BIND_ENUM_CONSTANT(FOCUS_ALL);
BIND_CONSTANT(NOTIFICATION_RESIZED);
BIND_CONSTANT(NOTIFICATION_MOUSE_ENTER);
@@ -2556,36 +2642,56 @@ void Control::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_THEME_CHANGED);
BIND_CONSTANT(NOTIFICATION_MODAL_CLOSE);
- BIND_CONSTANT(CURSOR_ARROW);
- BIND_CONSTANT(CURSOR_IBEAM);
- BIND_CONSTANT(CURSOR_POINTING_HAND);
- BIND_CONSTANT(CURSOR_CROSS);
- BIND_CONSTANT(CURSOR_WAIT);
- BIND_CONSTANT(CURSOR_BUSY);
- BIND_CONSTANT(CURSOR_DRAG);
- BIND_CONSTANT(CURSOR_CAN_DROP);
- BIND_CONSTANT(CURSOR_FORBIDDEN);
- BIND_CONSTANT(CURSOR_VSIZE);
- BIND_CONSTANT(CURSOR_HSIZE);
- BIND_CONSTANT(CURSOR_BDIAGSIZE);
- BIND_CONSTANT(CURSOR_FDIAGSIZE);
- BIND_CONSTANT(CURSOR_MOVE);
- BIND_CONSTANT(CURSOR_VSPLIT);
- BIND_CONSTANT(CURSOR_HSPLIT);
- BIND_CONSTANT(CURSOR_HELP);
-
- BIND_CONSTANT(SIZE_EXPAND);
- BIND_CONSTANT(SIZE_FILL);
- BIND_CONSTANT(SIZE_EXPAND_FILL);
- BIND_CONSTANT(SIZE_SHRINK_CENTER);
- BIND_CONSTANT(SIZE_SHRINK_END);
-
- BIND_CONSTANT(MOUSE_FILTER_STOP);
- BIND_CONSTANT(MOUSE_FILTER_PASS);
- BIND_CONSTANT(MOUSE_FILTER_IGNORE);
-
- BIND_CONSTANT(GROW_DIRECTION_BEGIN);
- BIND_CONSTANT(GROW_DIRECTION_END);
+ BIND_ENUM_CONSTANT(CURSOR_ARROW);
+ BIND_ENUM_CONSTANT(CURSOR_IBEAM);
+ BIND_ENUM_CONSTANT(CURSOR_POINTING_HAND);
+ BIND_ENUM_CONSTANT(CURSOR_CROSS);
+ BIND_ENUM_CONSTANT(CURSOR_WAIT);
+ BIND_ENUM_CONSTANT(CURSOR_BUSY);
+ BIND_ENUM_CONSTANT(CURSOR_DRAG);
+ BIND_ENUM_CONSTANT(CURSOR_CAN_DROP);
+ BIND_ENUM_CONSTANT(CURSOR_FORBIDDEN);
+ BIND_ENUM_CONSTANT(CURSOR_VSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_HSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_BDIAGSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_FDIAGSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_MOVE);
+ BIND_ENUM_CONSTANT(CURSOR_VSPLIT);
+ BIND_ENUM_CONSTANT(CURSOR_HSPLIT);
+ BIND_ENUM_CONSTANT(CURSOR_HELP);
+
+ BIND_ENUM_CONSTANT(PRESET_TOP_LEFT);
+ BIND_ENUM_CONSTANT(PRESET_TOP_RIGHT);
+ BIND_ENUM_CONSTANT(PRESET_BOTTOM_LEFT);
+ BIND_ENUM_CONSTANT(PRESET_BOTTOM_RIGHT);
+ BIND_ENUM_CONSTANT(PRESET_CENTER_LEFT);
+ BIND_ENUM_CONSTANT(PRESET_CENTER_TOP);
+ BIND_ENUM_CONSTANT(PRESET_CENTER_RIGHT);
+ BIND_ENUM_CONSTANT(PRESET_CENTER_BOTTOM);
+ BIND_ENUM_CONSTANT(PRESET_CENTER);
+ BIND_ENUM_CONSTANT(PRESET_LEFT_WIDE);
+ BIND_ENUM_CONSTANT(PRESET_TOP_WIDE);
+ BIND_ENUM_CONSTANT(PRESET_RIGHT_WIDE);
+ BIND_ENUM_CONSTANT(PRESET_BOTTOM_WIDE);
+ BIND_ENUM_CONSTANT(PRESET_VCENTER_WIDE);
+ BIND_ENUM_CONSTANT(PRESET_HCENTER_WIDE);
+ BIND_ENUM_CONSTANT(PRESET_WIDE);
+
+ BIND_ENUM_CONSTANT(SIZE_EXPAND);
+ BIND_ENUM_CONSTANT(SIZE_FILL);
+ BIND_ENUM_CONSTANT(SIZE_EXPAND_FILL);
+ BIND_ENUM_CONSTANT(SIZE_SHRINK_CENTER);
+ BIND_ENUM_CONSTANT(SIZE_SHRINK_END);
+
+ BIND_ENUM_CONSTANT(MOUSE_FILTER_STOP);
+ BIND_ENUM_CONSTANT(MOUSE_FILTER_PASS);
+ BIND_ENUM_CONSTANT(MOUSE_FILTER_IGNORE);
+
+ BIND_ENUM_CONSTANT(GROW_DIRECTION_BEGIN);
+ BIND_ENUM_CONSTANT(GROW_DIRECTION_END);
+
+ BIND_ENUM_CONSTANT(ANCHOR_BEGIN);
+ BIND_ENUM_CONSTANT(ANCHOR_END);
ADD_SIGNAL(MethodInfo("resized"));
ADD_SIGNAL(MethodInfo("gui_input", PropertyInfo(Variant::OBJECT, "ev", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
@@ -2597,7 +2703,7 @@ void Control::_bind_methods() {
ADD_SIGNAL(MethodInfo("minimum_size_changed"));
ADD_SIGNAL(MethodInfo("modal_closed"));
- BIND_VMETHOD(MethodInfo("has_point:bool", PropertyInfo(Variant::VECTOR2, "point")));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "has_point", PropertyInfo(Variant::VECTOR2, "point")));
}
Control::Control() {
diff --git a/scene/gui/control.h b/scene/gui/control.h
index 86cf8f6dbd..da5c4d0908 100644
--- a/scene/gui/control.h
+++ b/scene/gui/control.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,7 +33,7 @@
#include "math_2d.h"
#include "rid.h"
#include "scene/2d/canvas_item.h"
-#include "scene/gui/input_action.h"
+#include "scene/gui/shortcut.h"
#include "scene/main/node.h"
#include "scene/main/timer.h"
#include "scene/resources/theme.h"
@@ -51,10 +51,10 @@ class Control : public CanvasItem {
OBJ_CATEGORY("GUI Nodes");
public:
- enum AnchorType {
- ANCHOR_BEGIN,
- ANCHOR_END,
- ANCHOR_CENTER,
+ enum Anchor {
+
+ ANCHOR_BEGIN = 0,
+ ANCHOR_END = 1
};
enum GrowDirection {
@@ -105,6 +105,25 @@ public:
CURSOR_MAX
};
+ enum LayoutPreset {
+ PRESET_TOP_LEFT,
+ PRESET_TOP_RIGHT,
+ PRESET_BOTTOM_LEFT,
+ PRESET_BOTTOM_RIGHT,
+ PRESET_CENTER_LEFT,
+ PRESET_CENTER_TOP,
+ PRESET_CENTER_RIGHT,
+ PRESET_CENTER_BOTTOM,
+ PRESET_CENTER,
+ PRESET_LEFT_WIDE,
+ PRESET_TOP_WIDE,
+ PRESET_RIGHT_WIDE,
+ PRESET_BOTTOM_WIDE,
+ PRESET_VCENTER_WIDE,
+ PRESET_HCENTER_WIDE,
+ PRESET_WIDE
+ };
+
private:
struct CComparator {
@@ -122,7 +141,7 @@ private:
Size2 size_cache;
float margin[4];
- AnchorType anchor[4];
+ float anchor[4];
FocusMode focus_mode;
GrowDirection h_grow;
GrowDirection v_grow;
@@ -182,12 +201,12 @@ private:
void _window_find_focus_neighbour(const Vector2 &p_dir, Node *p_at, const Point2 *p_points, float p_min, float &r_closest_dist, Control **r_closest);
Control *_get_focus_neighbour(Margin p_margin, int p_count = 0);
- void _set_anchor(Margin p_margin, AnchorType p_anchor);
+ void _set_anchor(Margin p_margin, float p_anchor);
float _get_parent_range(int p_idx) const;
float _get_range(int p_idx) const;
- float _s2a(float p_val, AnchorType p_anchor, float p_range) const;
- float _a2s(float p_val, AnchorType p_anchor, float p_range) const;
+ float _s2a(float p_val, float p_anchor, float p_range) const;
+ float _a2s(float p_val, float p_anchor, float p_range) const;
void _propagate_theme_changed(CanvasItem *p_at, Control *p_owner, bool p_assign = true);
void _theme_changed();
@@ -275,10 +294,11 @@ public:
/* POSITIONING */
- void set_anchor(Margin p_margin, AnchorType p_anchor, bool p_keep_margin = false);
- void set_anchor_and_margin(Margin p_margin, AnchorType p_anchor, float p_pos);
+ void set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin = false, bool p_push_opposite_anchor = true);
+ void set_anchor_and_margin(Margin p_margin, float p_anchor, float p_pos, bool p_push_opposite_anchor = true);
+ void set_anchors_preset(LayoutPreset p_preset, bool p_keep_margin = false);
- AnchorType get_anchor(Margin p_margin) const;
+ float get_anchor(Margin p_margin) const;
void set_margin(Margin p_margin, float p_value);
@@ -425,11 +445,12 @@ public:
~Control();
};
-VARIANT_ENUM_CAST(Control::AnchorType);
VARIANT_ENUM_CAST(Control::FocusMode);
VARIANT_ENUM_CAST(Control::SizeFlags);
VARIANT_ENUM_CAST(Control::CursorShape);
+VARIANT_ENUM_CAST(Control::LayoutPreset);
VARIANT_ENUM_CAST(Control::MouseFilter);
VARIANT_ENUM_CAST(Control::GrowDirection);
+VARIANT_ENUM_CAST(Control::Anchor);
#endif
diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp
index dedf44d407..140d002387 100644
--- a/scene/gui/dialogs.cpp
+++ b/scene/gui/dialogs.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -60,17 +60,17 @@ void WindowDialog::_fix_size() {
float right = 0;
// Check validity, because the theme could contain a different type of StyleBox
if (panel->get_class() == "StyleBoxTexture") {
- Ref<StyleBoxTexture> panel_texture = panel->cast_to<StyleBoxTexture>();
+ Ref<StyleBoxTexture> panel_texture = Object::cast_to<StyleBoxTexture>(*panel);
top = panel_texture->get_expand_margin_size(MARGIN_TOP);
left = panel_texture->get_expand_margin_size(MARGIN_LEFT);
bottom = panel_texture->get_expand_margin_size(MARGIN_BOTTOM);
right = panel_texture->get_expand_margin_size(MARGIN_RIGHT);
} else if (panel->get_class() == "StyleBoxFlat") {
- Ref<StyleBoxFlat> panel_flat = panel->cast_to<StyleBoxFlat>();
- top = panel_flat->_get_additional_border_size(MARGIN_TOP);
- left = panel_flat->_get_additional_border_size(MARGIN_LEFT);
- bottom = panel_flat->_get_additional_border_size(MARGIN_BOTTOM);
- right = panel_flat->_get_additional_border_size(MARGIN_RIGHT);
+ Ref<StyleBoxFlat> panel_flat = Object::cast_to<StyleBoxFlat>(*panel);
+ top = panel_flat->get_expand_margin_size(MARGIN_TOP);
+ left = panel_flat->get_expand_margin_size(MARGIN_LEFT);
+ bottom = panel_flat->get_expand_margin_size(MARGIN_BOTTOM);
+ right = panel_flat->get_expand_margin_size(MARGIN_RIGHT);
}
pos.x = MAX(left, MIN(pos.x, viewport_size.x - size.x - right));
@@ -215,7 +215,7 @@ void WindowDialog::_notification(int p_what) {
close_button->set_pressed_texture(get_icon("close", "WindowDialog"));
close_button->set_hover_texture(get_icon("close_highlight", "WindowDialog"));
close_button->set_anchor(MARGIN_LEFT, ANCHOR_END);
- close_button->set_begin(Point2(get_constant("close_h_ofs", "WindowDialog"), -get_constant("close_v_ofs", "WindowDialog")));
+ close_button->set_begin(Point2(-get_constant("close_h_ofs", "WindowDialog"), -get_constant("close_v_ofs", "WindowDialog")));
} break;
case NOTIFICATION_MOUSE_EXIT: {
@@ -227,11 +227,11 @@ void WindowDialog::_notification(int p_what) {
} break;
#ifdef TOOLS_ENABLED
case NOTIFICATION_POST_POPUP: {
- if (get_tree() && get_tree()->is_editor_hint() && EditorNode::get_singleton())
+ if (get_tree() && Engine::get_singleton()->is_editor_hint() && EditorNode::get_singleton())
EditorNode::get_singleton()->dim_editor(true);
} break;
case NOTIFICATION_POPUP_HIDE: {
- if (get_tree() && get_tree()->is_editor_hint() && EditorNode::get_singleton())
+ if (get_tree() && Engine::get_singleton()->is_editor_hint() && EditorNode::get_singleton())
EditorNode::get_singleton()->dim_editor(false);
} break;
#endif
@@ -271,7 +271,7 @@ int WindowDialog::_drag_hit_test(const Point2 &pos) const {
void WindowDialog::set_title(const String &p_title) {
- title = XL_MESSAGE(p_title);
+ title = tr(p_title);
update();
}
String WindowDialog::get_title() const {
@@ -424,7 +424,7 @@ void AcceptDialog::_update_child_rects() {
Vector2 csize(size.x - margin * 2, size.y - margin * 3 - hminsize.y - label_size.height);
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
@@ -448,7 +448,7 @@ Size2 AcceptDialog::get_minimum_size() const {
Size2 minsize = label->get_combined_minimum_size();
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
@@ -546,7 +546,7 @@ AcceptDialog::AcceptDialog() {
label->set_anchor(MARGIN_RIGHT, ANCHOR_END);
label->set_anchor(MARGIN_BOTTOM, ANCHOR_END);
label->set_begin(Point2(margin, margin));
- label->set_end(Point2(margin, button_margin + 10));
+ label->set_end(Point2(-margin, -button_margin - 10));
//label->set_autowrap(true);
add_child(label);
diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h
index 9d8f113caa..54cc290b05 100644
--- a/scene/gui/dialogs.h
+++ b/scene/gui/dialogs.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index 74255b38bf..990c0f3d96 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -464,7 +464,7 @@ void FileDialog::update_filters() {
String flt = filters[i].get_slice(";", 0).strip_edges();
String desc = filters[i].get_slice(";", 1).strip_edges();
if (desc.length())
- filter->add_item(String(XL_MESSAGE(desc)) + " ( " + flt + " )");
+ filter->add_item(String(tr(desc)) + " ( " + flt + " )");
else
filter->add_item("( " + flt + " )");
}
@@ -718,16 +718,15 @@ void FileDialog::_bind_methods() {
ADD_SIGNAL(MethodInfo("files_selected", PropertyInfo(Variant::POOL_STRING_ARRAY, "paths")));
ADD_SIGNAL(MethodInfo("dir_selected", PropertyInfo(Variant::STRING, "dir")));
- BIND_CONSTANT(MODE_OPEN_FILE);
- BIND_CONSTANT(MODE_OPEN_FILES);
- BIND_CONSTANT(MODE_OPEN_DIR);
- BIND_CONSTANT(MODE_OPEN_ANY);
+ BIND_ENUM_CONSTANT(MODE_OPEN_FILE);
+ BIND_ENUM_CONSTANT(MODE_OPEN_FILES);
+ BIND_ENUM_CONSTANT(MODE_OPEN_DIR);
+ BIND_ENUM_CONSTANT(MODE_OPEN_ANY);
+ BIND_ENUM_CONSTANT(MODE_SAVE_FILE);
- BIND_CONSTANT(MODE_SAVE_FILE);
-
- BIND_CONSTANT(ACCESS_RESOURCES);
- BIND_CONSTANT(ACCESS_USERDATA);
- BIND_CONSTANT(ACCESS_FILESYSTEM);
+ BIND_ENUM_CONSTANT(ACCESS_RESOURCES);
+ BIND_ENUM_CONSTANT(ACCESS_USERDATA);
+ BIND_ENUM_CONSTANT(ACCESS_FILESYSTEM);
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Open one,Open many,Open folder,Open any,Save"), "set_mode", "get_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "access", PROPERTY_HINT_ENUM, "Resources,User data,File system"), "set_access", "get_access");
diff --git a/scene/gui/file_dialog.h b/scene/gui/file_dialog.h
index 9873a677b2..34cecfe4d0 100644
--- a/scene/gui/file_dialog.h
+++ b/scene/gui/file_dialog.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/gradient_edit.cpp b/scene/gui/gradient_edit.cpp
index 22de28ea7f..c9ce5e2143 100644
--- a/scene/gui/gradient_edit.cpp
+++ b/scene/gui/gradient_edit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/gradient_edit.h b/scene/gui/gradient_edit.h
index 6c4ae6fd15..026e4f783b 100644
--- a/scene/gui/gradient_edit.h
+++ b/scene/gui/gradient_edit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index e85ef73f4e..5b00aab2ef 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "graph_edit.h"
+
#include "os/input.h"
#include "os/keyboard.h"
#include "scene/gui/box_container.h"
@@ -134,7 +135,7 @@ void GraphEdit::_update_scroll_offset() {
for (int i = 0; i < get_child_count(); i++) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -163,7 +164,7 @@ void GraphEdit::_update_scroll() {
Rect2 screen;
for (int i = 0; i < get_child_count(); i++) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -205,7 +206,7 @@ void GraphEdit::_update_scroll() {
void GraphEdit::_graph_node_raised(Node *p_gn) {
- GraphNode *gn = p_gn->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(p_gn);
ERR_FAIL_COND(!gn);
if (gn->is_comment()) {
move_child(gn, 0);
@@ -214,7 +215,7 @@ void GraphEdit::_graph_node_raised(Node *p_gn) {
}
int first_not_comment = 0;
for (int i = 0; i < get_child_count(); i++) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (gn && !gn->is_comment()) {
first_not_comment = i;
break;
@@ -228,7 +229,7 @@ void GraphEdit::_graph_node_raised(Node *p_gn) {
void GraphEdit::_graph_node_moved(Node *p_gn) {
- GraphNode *gn = p_gn->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(p_gn);
ERR_FAIL_COND(!gn);
top_layer->update();
update();
@@ -240,7 +241,7 @@ void GraphEdit::add_child_notify(Node *p_child) {
Control::add_child_notify(p_child);
top_layer->call_deferred("raise"); //top layer always on top!
- GraphNode *gn = p_child->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(p_child);
if (gn) {
gn->set_scale(Vector2(zoom, zoom));
gn->connect("offset_changed", this, "_graph_node_moved", varray(gn));
@@ -256,7 +257,7 @@ void GraphEdit::remove_child_notify(Node *p_child) {
Control::remove_child_notify(p_child);
top_layer->call_deferred("raise"); //top layer always on top!
- GraphNode *gn = p_child->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(p_child);
if (gn) {
gn->disconnect("offset_changed", this, "_graph_node_moved");
gn->disconnect("raise_request", this, "_graph_node_raised");
@@ -269,14 +270,14 @@ void GraphEdit::_notification(int p_what) {
Size2 hmin = h_scroll->get_combined_minimum_size();
Size2 vmin = v_scroll->get_combined_minimum_size();
- v_scroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, vmin.width);
+ v_scroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -vmin.width);
v_scroll->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 0);
v_scroll->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 0);
v_scroll->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, 0);
h_scroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 0);
h_scroll->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 0);
- h_scroll->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, hmin.height);
+ h_scroll->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, -hmin.height);
h_scroll->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, 0);
zoom_minus->set_icon(get_icon("minus"));
@@ -345,7 +346,7 @@ bool GraphEdit::_filter_input(const Point2 &p_point) {
float grab_r = port->get_width() * 0.5 * grab_r_extend;
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -379,7 +380,7 @@ void GraphEdit::_top_layer_input(const Ref<InputEvent> &p_ev) {
float grab_r = port->get_width() * 0.5 * grab_r_extend;
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -395,20 +396,20 @@ void GraphEdit::_top_layer_input(const Ref<InputEvent> &p_ev) {
if (E->get().from == gn->get_name() && E->get().from_port == j) {
Node *to = get_node(String(E->get().to));
- if (to && to->cast_to<GraphNode>()) {
+ if (Object::cast_to<GraphNode>(to)) {
connecting_from = E->get().to;
connecting_index = E->get().to_port;
connecting_out = false;
- connecting_type = to->cast_to<GraphNode>()->get_connection_input_type(E->get().to_port);
- connecting_color = to->cast_to<GraphNode>()->get_connection_input_color(E->get().to_port);
+ connecting_type = Object::cast_to<GraphNode>(to)->get_connection_input_type(E->get().to_port);
+ connecting_color = Object::cast_to<GraphNode>(to)->get_connection_input_color(E->get().to_port);
connecting_target = false;
connecting_to = pos;
just_disconected = true;
emit_signal("disconnection_request", E->get().from, E->get().from_port, E->get().to, E->get().to_port);
to = get_node(String(connecting_from)); //maybe it was erased
- if (to && to->cast_to<GraphNode>()) {
+ if (Object::cast_to<GraphNode>(to)) {
connecting = true;
}
return;
@@ -443,20 +444,20 @@ void GraphEdit::_top_layer_input(const Ref<InputEvent> &p_ev) {
if (E->get().to == gn->get_name() && E->get().to_port == j) {
Node *fr = get_node(String(E->get().from));
- if (fr && fr->cast_to<GraphNode>()) {
+ if (Object::cast_to<GraphNode>(fr)) {
connecting_from = E->get().from;
connecting_index = E->get().from_port;
connecting_out = true;
- connecting_type = fr->cast_to<GraphNode>()->get_connection_output_type(E->get().from_port);
- connecting_color = fr->cast_to<GraphNode>()->get_connection_output_color(E->get().from_port);
+ connecting_type = Object::cast_to<GraphNode>(fr)->get_connection_output_type(E->get().from_port);
+ connecting_color = Object::cast_to<GraphNode>(fr)->get_connection_output_color(E->get().from_port);
connecting_target = false;
connecting_to = pos;
just_disconected = true;
emit_signal("disconnection_request", E->get().from, E->get().from_port, E->get().to, E->get().to_port);
fr = get_node(String(connecting_from)); //maybe it was erased
- if (fr && fr->cast_to<GraphNode>()) {
+ if (Object::cast_to<GraphNode>(fr)) {
connecting = true;
}
return;
@@ -493,7 +494,7 @@ void GraphEdit::_top_layer_input(const Ref<InputEvent> &p_ev) {
float grab_r = port->get_width() * 0.5 * grab_r_extend;
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -593,8 +594,6 @@ void GraphEdit::_bake_segment2d(Vector<Vector2> &points, Vector<Color> &colors,
void GraphEdit::_draw_cos_line(CanvasItem *p_where, const Vector2 &p_from, const Vector2 &p_to, const Color &p_color, const Color &p_to_color) {
-#if 1
-
//cubic bezier code
float diff = p_to.x - p_from.x;
float cp_offset;
@@ -621,84 +620,53 @@ void GraphEdit::_draw_cos_line(CanvasItem *p_where, const Vector2 &p_from, const
colors.push_back(p_to_color);
p_where->draw_polyline_colors(points, colors, 2, true);
-
-#else
-
- static const int steps = 20;
-
- //old cosine code
- Rect2 r;
- r.pos = p_from;
- r.expand_to(p_to);
- Vector2 sign = Vector2((p_from.x < p_to.x) ? 1 : -1, (p_from.y < p_to.y) ? 1 : -1);
- bool flip = sign.x * sign.y < 0;
-
- Vector2 prev;
- for (int i = 0; i <= steps; i++) {
-
- float d = i / float(steps);
- float c = -Math::cos(d * Math_PI) * 0.5 + 0.5;
- if (flip)
- c = 1.0 - c;
- Vector2 p = r.pos + Vector2(d * r.size.width, c * r.size.height);
-
- if (i > 0) {
-
- p_where->draw_line(prev, p, p_color.linear_interpolate(p_to_color, d), 2);
- }
-
- prev = p;
- }
-#endif
}
void GraphEdit::_connections_layer_draw() {
- {
- //draw connections
- List<List<Connection>::Element *> to_erase;
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
-
- NodePath fromnp(E->get().from);
+ //draw connections
+ List<List<Connection>::Element *> to_erase;
+ for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- Node *from = get_node(fromnp);
- if (!from) {
- to_erase.push_back(E);
- continue;
- }
+ NodePath fromnp(E->get().from);
- GraphNode *gfrom = from->cast_to<GraphNode>();
+ Node *from = get_node(fromnp);
+ if (!from) {
+ to_erase.push_back(E);
+ continue;
+ }
- if (!gfrom) {
- to_erase.push_back(E);
- continue;
- }
+ GraphNode *gfrom = Object::cast_to<GraphNode>(from);
- NodePath tonp(E->get().to);
- Node *to = get_node(tonp);
- if (!to) {
- to_erase.push_back(E);
- continue;
- }
+ if (!gfrom) {
+ to_erase.push_back(E);
+ continue;
+ }
- GraphNode *gto = to->cast_to<GraphNode>();
+ NodePath tonp(E->get().to);
+ Node *to = get_node(tonp);
+ if (!to) {
+ to_erase.push_back(E);
+ continue;
+ }
- if (!gto) {
- to_erase.push_back(E);
- continue;
- }
+ GraphNode *gto = Object::cast_to<GraphNode>(to);
- Vector2 frompos = gfrom->get_connection_output_pos(E->get().from_port) + gfrom->get_offset() * zoom;
- Color color = gfrom->get_connection_output_color(E->get().from_port);
- Vector2 topos = gto->get_connection_input_pos(E->get().to_port) + gto->get_offset() * zoom;
- Color tocolor = gto->get_connection_input_color(E->get().to_port);
- _draw_cos_line(connections_layer, frompos, topos, color, tocolor);
+ if (!gto) {
+ to_erase.push_back(E);
+ continue;
}
- while (to_erase.size()) {
- connections.erase(to_erase.front()->get());
- to_erase.pop_front();
- }
+ Vector2 frompos = gfrom->get_connection_output_pos(E->get().from_port) + gfrom->get_offset() * zoom;
+ Color color = gfrom->get_connection_output_color(E->get().from_port);
+ Vector2 topos = gto->get_connection_input_pos(E->get().to_port) + gto->get_offset() * zoom;
+ Color tocolor = gto->get_connection_input_color(E->get().to_port);
+ _draw_cos_line(connections_layer, frompos, topos, color, tocolor);
+ }
+
+ while (to_erase.size()) {
+ connections.erase(to_erase.front()->get());
+ to_erase.pop_front();
}
}
@@ -710,7 +678,7 @@ void GraphEdit::_top_layer_draw() {
Node *fromn = get_node(connecting_from);
ERR_FAIL_COND(!fromn);
- GraphNode *from = fromn->cast_to<GraphNode>();
+ GraphNode *from = Object::cast_to<GraphNode>(fromn);
ERR_FAIL_COND(!from);
Vector2 pos;
if (connecting_out)
@@ -744,7 +712,7 @@ void GraphEdit::set_selected(Node *p_child) {
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -767,7 +735,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
//drag_accum+=Vector2(mm->get_relative().x,mm->get_relative().y);
drag_accum = get_local_mouse_pos() - drag_origin;
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (gn && gn->is_selected()) {
Vector2 pos = (gn->get_drag_from() * zoom + drag_accum) / zoom;
@@ -791,7 +759,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -816,7 +784,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
box_selecting = false;
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
@@ -837,7 +805,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
if (!just_selected && drag_accum == Vector2() && Input::get_singleton()->is_key_pressed(KEY_CONTROL)) {
//deselect current node
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (gn) {
Rect2 r = gn->get_rect();
@@ -853,7 +821,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
emit_signal("_begin_node_move");
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (gn && gn->is_selected())
gn->set_drag(false);
}
@@ -874,7 +842,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn_selected = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn_selected = Object::cast_to<GraphNode>(get_child(i));
if (gn_selected) {
if (gn_selected->is_resizing())
@@ -898,7 +866,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
just_selected = !gn->is_selected();
if (!gn->is_selected() && !Input::get_singleton()->is_key_pressed(KEY_CONTROL)) {
for (int i = 0; i < get_child_count(); i++) {
- GraphNode *o_gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *o_gn = Object::cast_to<GraphNode>(get_child(i));
if (o_gn)
o_gn->set_selected(o_gn == gn);
}
@@ -906,7 +874,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
gn->set_selected(true);
for (int i = 0; i < get_child_count(); i++) {
- GraphNode *o_gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *o_gn = Object::cast_to<GraphNode>(get_child(i));
if (!o_gn)
continue;
if (o_gn->is_selected())
@@ -926,7 +894,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
previus_selected.clear();
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn || !gn->is_selected())
continue;
@@ -937,7 +905,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
previus_selected.clear();
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn || !gn->is_selected())
continue;
@@ -948,7 +916,7 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
previus_selected.clear();
for (int i = get_child_count() - 1; i >= 0; i--) {
- GraphNode *gn = get_child(i)->cast_to<GraphNode>();
+ GraphNode *gn = Object::cast_to<GraphNode>(get_child(i));
if (!gn)
continue;
diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h
index e908829d5f..4656b50133 100644
--- a/scene/gui/graph_edit.h
+++ b/scene/gui/graph_edit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp
index b9062295b5..8730be0c06 100644
--- a/scene/gui/graph_node.cpp
+++ b/scene/gui/graph_node.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -96,7 +96,7 @@ void GraphNode::_get_property_list(List<PropertyInfo> *p_list) const {
int idx = 0;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || c->is_set_as_toplevel())
continue;
@@ -122,7 +122,7 @@ void GraphNode::_resort() {
Size2 minsize;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -144,7 +144,7 @@ void GraphNode::_resort() {
cache_y.clear();
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -375,7 +375,7 @@ Size2 GraphNode::get_minimum_size() const {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -462,7 +462,7 @@ void GraphNode::_connpos_update() {
int idx = 0;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -710,9 +710,9 @@ void GraphNode::_bind_methods() {
ADD_SIGNAL(MethodInfo("close_request"));
ADD_SIGNAL(MethodInfo("resize_request", PropertyInfo(Variant::VECTOR2, "new_minsize")));
- BIND_CONSTANT(OVERLAY_DISABLED);
- BIND_CONSTANT(OVERLAY_BREAKPOINT);
- BIND_CONSTANT(OVERLAY_POSITION);
+ BIND_ENUM_CONSTANT(OVERLAY_DISABLED);
+ BIND_ENUM_CONSTANT(OVERLAY_BREAKPOINT);
+ BIND_ENUM_CONSTANT(OVERLAY_POSITION);
}
GraphNode::GraphNode() {
diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h
index a7d9e8ddb0..416d711aab 100644
--- a/scene/gui/graph_node.h
+++ b/scene/gui/graph_node.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp
index 06a58d69b2..5dd5667f46 100644
--- a/scene/gui/grid_container.cpp
+++ b/scene/gui/grid_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -51,7 +51,7 @@ void GridContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
@@ -109,7 +109,7 @@ void GridContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
int row = idx / columns;
@@ -184,7 +184,7 @@ Size2 GridContainer::get_minimum_size() const {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
int row = idx / columns;
diff --git a/scene/gui/grid_container.h b/scene/gui/grid_container.h
index aaa6a295ff..45e26ed48e 100644
--- a/scene/gui/grid_container.h
+++ b/scene/gui/grid_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/input_action.cpp b/scene/gui/input_action.cpp
deleted file mode 100644
index c08059a049..0000000000
--- a/scene/gui/input_action.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/*************************************************************************/
-/* input_action.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "input_action.h"
-#include "os/keyboard.h"
-
-void ShortCut::set_shortcut(const Ref<InputEvent> &p_shortcut) {
-
- shortcut = p_shortcut;
- emit_changed();
-}
-
-Ref<InputEvent> ShortCut::get_shortcut() const {
-
- return shortcut;
-}
-
-bool ShortCut::is_shortcut(const Ref<InputEvent> &p_event) const {
-
- return shortcut.is_valid() && shortcut->shortcut_match(p_event);
-}
-
-String ShortCut::get_as_text() const {
-
- if (shortcut.is_valid())
- return shortcut->as_text();
- else
- return "None";
-#if 0
- switch (shortcut.type) {
-
- case Ref<InputEvent>::NONE: {
-
- return "None";
- } break;
- case Ref<InputEvent>::KEY: {
-
- String str;
- if (shortcut->get_shift())
- str += RTR("Shift+");
- if (shortcut->get_alt())
- str += RTR("Alt+");
- if (shortcut->get_control())
- str += RTR("Ctrl+");
- if (shortcut->get_metakey())
- str += RTR("Meta+");
-
- str += keycode_get_string(shortcut->get_scancode()).capitalize();
-
- return str;
- } break;
- case Ref<InputEvent>::JOYPAD_BUTTON: {
-
- String str = RTR("Device") + " " + itos(shortcut.device) + ", " + RTR("Button") + " " + itos(shortcut.joy_button->get_button_index());
- str += ".";
-
- return str;
- } break;
- case Ref<InputEvent>::MOUSE_BUTTON: {
-
- String str = RTR("Device") + " " + itos(shortcut.device) + ", ";
- switch (shortcut->get_button_index()) {
- case BUTTON_LEFT: str += RTR("Left Button."); break;
- case BUTTON_RIGHT: str += RTR("Right Button."); break;
- case BUTTON_MIDDLE: str += RTR("Middle Button."); break;
- case BUTTON_WHEEL_UP: str += RTR("Wheel Up."); break;
- case BUTTON_WHEEL_DOWN: str += RTR("Wheel Down."); break;
- default: str += RTR("Button") + " " + itos(shortcut->get_button_index()) + ".";
- }
-
- return str;
- } break;
- case Ref<InputEvent>::JOYPAD_MOTION: {
-
- int ax = shortcut.joy_motion.axis;
- String str = RTR("Device") + " " + itos(shortcut.device) + ", " + RTR("Axis") + " " + itos(ax) + ".";
-
- return str;
- } break;
- }
-
- return "";
-#endif
-}
-
-bool ShortCut::is_valid() const {
-
- return shortcut.is_valid();
-}
-
-void ShortCut::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("set_shortcut", "event"), &ShortCut::set_shortcut);
- ClassDB::bind_method(D_METHOD("get_shortcut"), &ShortCut::get_shortcut);
-
- ClassDB::bind_method(D_METHOD("is_valid"), &ShortCut::is_valid);
-
- ClassDB::bind_method(D_METHOD("is_shortcut", "event"), &ShortCut::is_shortcut);
- ClassDB::bind_method(D_METHOD("get_as_text"), &ShortCut::get_as_text);
-
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shortcut", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"), "set_shortcut", "get_shortcut");
-}
-
-ShortCut::ShortCut() {
-}
diff --git a/scene/gui/input_action.h b/scene/gui/input_action.h
deleted file mode 100644
index 6d13d8bd40..0000000000
--- a/scene/gui/input_action.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*************************************************************************/
-/* input_action.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 INPUTACTION_H
-#define INPUTACTION_H
-
-#include "os/input_event.h"
-#include "resource.h"
-
-class ShortCut : public Resource {
-
- GDCLASS(ShortCut, Resource);
-
- Ref<InputEvent> shortcut;
-
-protected:
- static void _bind_methods();
-
-public:
- void set_shortcut(const Ref<InputEvent> &p_shortcut);
- Ref<InputEvent> get_shortcut() const;
- bool is_shortcut(const Ref<InputEvent> &p_Event) const;
- bool is_valid() const;
-
- String get_as_text() const;
-
- ShortCut();
-};
-
-#endif // INPUTACTION_H
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp
index 484051f546..9bad871ef9 100644
--- a/scene/gui/item_list.cpp
+++ b/scene/gui/item_list.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -339,7 +339,7 @@ void ItemList::set_same_column_width(bool p_enable) {
update();
shape_changed = true;
}
-int ItemList::is_same_column_width() const {
+bool ItemList::is_same_column_width() const {
return same_column_width;
}
@@ -736,10 +736,10 @@ void ItemList::_notification(int p_what) {
Ref<StyleBox> bg = get_stylebox("bg");
int mw = scroll_bar->get_minimum_size().x;
- scroll_bar->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, mw + bg->get_margin(MARGIN_RIGHT));
- scroll_bar->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, bg->get_margin(MARGIN_RIGHT));
+ scroll_bar->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -mw + bg->get_margin(MARGIN_RIGHT));
+ scroll_bar->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, -bg->get_margin(MARGIN_RIGHT));
scroll_bar->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, bg->get_margin(MARGIN_TOP));
- scroll_bar->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, bg->get_margin(MARGIN_BOTTOM));
+ scroll_bar->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, -bg->get_margin(MARGIN_BOTTOM));
Size2 size = get_size();
@@ -1374,10 +1374,11 @@ void ItemList::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "icon_mode", PROPERTY_HINT_ENUM, "Top,Left"), "set_icon_mode", "get_icon_mode");
ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "icon_scale"), "set_icon_scale", "get_icon_scale");
- BIND_CONSTANT(ICON_MODE_TOP);
- BIND_CONSTANT(ICON_MODE_LEFT);
- BIND_CONSTANT(SELECT_SINGLE);
- BIND_CONSTANT(SELECT_MULTI);
+ BIND_ENUM_CONSTANT(ICON_MODE_TOP);
+ BIND_ENUM_CONSTANT(ICON_MODE_LEFT);
+
+ BIND_ENUM_CONSTANT(SELECT_SINGLE);
+ BIND_ENUM_CONSTANT(SELECT_MULTI);
ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "index")));
ADD_SIGNAL(MethodInfo("item_rmb_selected", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::VECTOR2, "atpos")));
diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h
index 137eff8885..8166975408 100644
--- a/scene/gui/item_list.h
+++ b/scene/gui/item_list.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -169,9 +169,9 @@ public:
int get_fixed_column_width() const;
void set_same_column_width(bool p_enable);
- int is_same_column_width() const;
+ bool is_same_column_width() const;
- void set_max_text_lines(int p_amount);
+ void set_max_text_lines(int p_lines);
int get_max_text_lines() const;
void set_max_columns(int p_amount);
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp
index 874156821e..5fe3dd0129 100644
--- a/scene/gui/label.cpp
+++ b/scene/gui/label.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -63,7 +63,7 @@ void Label::_notification(int p_what) {
if (p_what == NOTIFICATION_TRANSLATION_CHANGED) {
- String new_text = XL_MESSAGE(text);
+ String new_text = tr(text);
if (new_text == xl_text)
return; //nothing new
xl_text = new_text;
@@ -493,7 +493,10 @@ void Label::regenerate_word_cache() {
minsize.height = (font->get_height() * line_count) + (line_spacing * (line_count - 1));
}
- minimum_size_changed();
+ if (!autowrap || !clip) {
+ //helps speed up some labels that may change a lot, as no resizing is requested. Do not change.
+ minimum_size_changed();
+ }
word_cache_dirty = false;
}
@@ -526,7 +529,7 @@ void Label::set_text(const String &p_string) {
if (text == p_string)
return;
text = p_string;
- xl_text = XL_MESSAGE(p_string);
+ xl_text = tr(p_string);
word_cache_dirty = true;
if (percent_visible < 1)
visible_chars = get_total_character_count() * percent_visible;
@@ -641,15 +644,15 @@ void Label::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_max_lines_visible", "lines_visible"), &Label::set_max_lines_visible);
ClassDB::bind_method(D_METHOD("get_max_lines_visible"), &Label::get_max_lines_visible);
- BIND_CONSTANT(ALIGN_LEFT);
- BIND_CONSTANT(ALIGN_CENTER);
- BIND_CONSTANT(ALIGN_RIGHT);
- BIND_CONSTANT(ALIGN_FILL);
+ BIND_ENUM_CONSTANT(ALIGN_LEFT);
+ BIND_ENUM_CONSTANT(ALIGN_CENTER);
+ BIND_ENUM_CONSTANT(ALIGN_RIGHT);
+ BIND_ENUM_CONSTANT(ALIGN_FILL);
- BIND_CONSTANT(VALIGN_TOP);
- BIND_CONSTANT(VALIGN_CENTER);
- BIND_CONSTANT(VALIGN_BOTTOM);
- BIND_CONSTANT(VALIGN_FILL);
+ BIND_ENUM_CONSTANT(VALIGN_TOP);
+ BIND_ENUM_CONSTANT(VALIGN_CENTER);
+ BIND_ENUM_CONSTANT(VALIGN_BOTTOM);
+ BIND_ENUM_CONSTANT(VALIGN_FILL);
ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT, "", PROPERTY_USAGE_DEFAULT_INTL), "set_text", "get_text");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "align", PROPERTY_HINT_ENUM, "Left,Center,Right,Fill"), "set_align", "get_align");
diff --git a/scene/gui/label.h b/scene/gui/label.h
index dce68f4422..7c1905af7d 100644
--- a/scene/gui/label.h
+++ b/scene/gui/label.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index c1784fb7ba..66b4e6cec1 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -534,7 +534,7 @@ void LineEdit::_notification(int p_what) {
switch (p_what) {
#ifdef TOOLS_ENABLED
case NOTIFICATION_ENTER_TREE: {
- if (get_tree()->is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
cursor_set_blink_enabled(EDITOR_DEF("text_editor/cursor/caret_blink", false));
cursor_set_blink_speed(EDITOR_DEF("text_editor/cursor/caret_blink_speed", 0.65));
@@ -991,7 +991,7 @@ String LineEdit::get_text() const {
void LineEdit::set_placeholder(String p_text) {
- placeholder = XL_MESSAGE(p_text);
+ placeholder = tr(p_text);
update();
}
@@ -1352,18 +1352,18 @@ void LineEdit::_bind_methods() {
ADD_SIGNAL(MethodInfo("text_changed", PropertyInfo(Variant::STRING, "text")));
ADD_SIGNAL(MethodInfo("text_entered", PropertyInfo(Variant::STRING, "text")));
- BIND_CONSTANT(ALIGN_LEFT);
- BIND_CONSTANT(ALIGN_CENTER);
- BIND_CONSTANT(ALIGN_RIGHT);
- BIND_CONSTANT(ALIGN_FILL);
-
- BIND_CONSTANT(MENU_CUT);
- BIND_CONSTANT(MENU_COPY);
- BIND_CONSTANT(MENU_PASTE);
- BIND_CONSTANT(MENU_CLEAR);
- BIND_CONSTANT(MENU_SELECT_ALL);
- BIND_CONSTANT(MENU_UNDO);
- BIND_CONSTANT(MENU_MAX);
+ BIND_ENUM_CONSTANT(ALIGN_LEFT);
+ BIND_ENUM_CONSTANT(ALIGN_CENTER);
+ BIND_ENUM_CONSTANT(ALIGN_RIGHT);
+ BIND_ENUM_CONSTANT(ALIGN_FILL);
+
+ BIND_ENUM_CONSTANT(MENU_CUT);
+ BIND_ENUM_CONSTANT(MENU_COPY);
+ BIND_ENUM_CONSTANT(MENU_PASTE);
+ BIND_ENUM_CONSTANT(MENU_CLEAR);
+ BIND_ENUM_CONSTANT(MENU_SELECT_ALL);
+ BIND_ENUM_CONSTANT(MENU_UNDO);
+ BIND_ENUM_CONSTANT(MENU_MAX);
ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "text"), "set_text", "get_text");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "align", PROPERTY_HINT_ENUM, "Left,Center,Right,Fill"), "set_align", "get_align");
diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h
index 73c5a46937..52a4a29a33 100644
--- a/scene/gui/line_edit.h
+++ b/scene/gui/line_edit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -177,7 +177,7 @@ public:
virtual Size2 get_minimum_size() const;
- void set_expand_to_text_length(bool p_len);
+ void set_expand_to_text_length(bool p_enabled);
bool get_expand_to_text_length() const;
virtual bool is_text_field() const;
@@ -186,5 +186,6 @@ public:
};
VARIANT_ENUM_CAST(LineEdit::Align);
+VARIANT_ENUM_CAST(LineEdit::MenuItems);
#endif
diff --git a/scene/gui/link_button.cpp b/scene/gui/link_button.cpp
index 9cb67b75e2..9fe94fc464 100644
--- a/scene/gui/link_button.cpp
+++ b/scene/gui/link_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -130,9 +130,9 @@ void LinkButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_underline_mode", "underline_mode"), &LinkButton::set_underline_mode);
ClassDB::bind_method(D_METHOD("get_underline_mode"), &LinkButton::get_underline_mode);
- BIND_CONSTANT(UNDERLINE_MODE_ALWAYS);
- BIND_CONSTANT(UNDERLINE_MODE_ON_HOVER);
- BIND_CONSTANT(UNDERLINE_MODE_NEVER);
+ BIND_ENUM_CONSTANT(UNDERLINE_MODE_ALWAYS);
+ BIND_ENUM_CONSTANT(UNDERLINE_MODE_ON_HOVER);
+ BIND_ENUM_CONSTANT(UNDERLINE_MODE_NEVER);
ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "text"), "set_text", "get_text");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "underline", PROPERTY_HINT_ENUM, "Always,On Hover,Never"), "set_underline_mode", "get_underline_mode");
diff --git a/scene/gui/link_button.h b/scene/gui/link_button.h
index 98a3dc66f6..386eb452ae 100644
--- a/scene/gui/link_button.h
+++ b/scene/gui/link_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/margin_container.cpp b/scene/gui/margin_container.cpp
index 2bc9db529b..14991f5d44 100644
--- a/scene/gui/margin_container.cpp
+++ b/scene/gui/margin_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,7 +40,7 @@ Size2 MarginContainer::get_minimum_size() const {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -74,7 +74,7 @@ void MarginContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
diff --git a/scene/gui/margin_container.h b/scene/gui/margin_container.h
index 1cdb3a36cc..9703d9ebe0 100644
--- a/scene/gui/margin_container.h
+++ b/scene/gui/margin_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp
index 93284f2b6c..ac450616d6 100644
--- a/scene/gui/menu_button.cpp
+++ b/scene/gui/menu_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,7 +33,7 @@
void MenuButton::_unhandled_key_input(Ref<InputEvent> p_event) {
- if (p_event->is_pressed() && !p_event->is_echo() && (p_event->cast_to<InputEventKey>() || p_event->cast_to<InputEventJoypadButton>() || p_event->cast_to<InputEventAction>())) {
+ if (p_event->is_pressed() && !p_event->is_echo() && (Object::cast_to<InputEventKey>(p_event.ptr()) || Object::cast_to<InputEventJoypadButton>(p_event.ptr()) || Object::cast_to<InputEventAction>(*p_event))) {
if (!get_parent() || !is_visible_in_tree() || is_disabled())
return;
diff --git a/scene/gui/menu_button.h b/scene/gui/menu_button.h
index 6bb23452dd..c7f1d976ff 100644
--- a/scene/gui/menu_button.h
+++ b/scene/gui/menu_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp
index 25ac8d5259..b4d0799945 100644
--- a/scene/gui/option_button.cpp
+++ b/scene/gui/option_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -185,21 +185,21 @@ void OptionButton::clear() {
current = -1;
}
-void OptionButton::_select(int p_idx, bool p_emit) {
+void OptionButton::_select(int p_which, bool p_emit) {
- if (p_idx < 0)
+ if (p_which < 0)
return;
- if (p_idx == current)
+ if (p_which == current)
return;
- ERR_FAIL_INDEX(p_idx, popup->get_item_count());
+ ERR_FAIL_INDEX(p_which, popup->get_item_count());
for (int i = 0; i < popup->get_item_count(); i++) {
- popup->set_item_checked(i, i == p_idx);
+ popup->set_item_checked(i, i == p_which);
}
- current = p_idx;
+ current = p_which;
set_text(popup->get_item_text(current));
set_icon(popup->get_item_icon(current));
diff --git a/scene/gui/option_button.h b/scene/gui/option_button.h
index db921b8b97..a06c540678 100644
--- a/scene/gui/option_button.h
+++ b/scene/gui/option_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/panel.cpp b/scene/gui/panel.cpp
index f3c6142f9e..536b655f75 100644
--- a/scene/gui/panel.cpp
+++ b/scene/gui/panel.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/panel.h b/scene/gui/panel.h
index eac8f2d4e8..cc7ca47319 100644
--- a/scene/gui/panel.h
+++ b/scene/gui/panel.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/panel_container.cpp b/scene/gui/panel_container.cpp
index 86874f7cfd..a0c75d1330 100644
--- a/scene/gui/panel_container.cpp
+++ b/scene/gui/panel_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -41,7 +41,7 @@ Size2 PanelContainer::get_minimum_size() const {
Size2 ms;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
if (c->is_set_as_toplevel())
@@ -90,7 +90,7 @@ void PanelContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
if (c->is_set_as_toplevel())
diff --git a/scene/gui/panel_container.h b/scene/gui/panel_container.h
index f8f1fb6494..5d8f1ee64b 100644
--- a/scene/gui/panel_container.h
+++ b/scene/gui/panel_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/patch_9_rect.cpp b/scene/gui/patch_9_rect.cpp
index 249090830d..6b2deeb209 100644
--- a/scene/gui/patch_9_rect.cpp
+++ b/scene/gui/patch_9_rect.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -82,9 +82,9 @@ void NinePatchRect::_bind_methods() {
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "axis_stretch_horizontal", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_h_axis_stretch_mode", "get_h_axis_stretch_mode");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "axis_stretch_vertical", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_v_axis_stretch_mode", "get_v_axis_stretch_mode");
- BIND_CONSTANT(AXIS_STRETCH_MODE_STRETCH);
- BIND_CONSTANT(AXIS_STRETCH_MODE_TILE);
- BIND_CONSTANT(AXIS_STRETCH_MODE_TILE_FIT);
+ BIND_ENUM_CONSTANT(AXIS_STRETCH_MODE_STRETCH);
+ BIND_ENUM_CONSTANT(AXIS_STRETCH_MODE_TILE);
+ BIND_ENUM_CONSTANT(AXIS_STRETCH_MODE_TILE_FIT);
}
void NinePatchRect::set_texture(const Ref<Texture> &p_tex) {
diff --git a/scene/gui/patch_9_rect.h b/scene/gui/patch_9_rect.h
index 602a6d22bf..4cf93e4c05 100644
--- a/scene/gui/patch_9_rect.h
+++ b/scene/gui/patch_9_rect.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -67,7 +67,7 @@ public:
void set_region_rect(const Rect2 &p_region_rect);
Rect2 get_region_rect() const;
- void set_draw_center(bool p_enable);
+ void set_draw_center(bool p_draw);
bool get_draw_center() const;
void set_h_axis_stretch_mode(AxisStretchMode p_mode);
diff --git a/scene/gui/popup.cpp b/scene/gui/popup.cpp
index 8979e0f111..5a2a552943 100644
--- a/scene/gui/popup.cpp
+++ b/scene/gui/popup.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,8 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "popup.h"
+
+#include "engine.h"
#include "os/keyboard.h"
void Popup::_gui_input(Ref<InputEvent> p_event) {
@@ -48,7 +50,7 @@ void Popup::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
//small helper to make editing of these easier in editor
#ifdef TOOLS_ENABLED
- if (get_tree()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_a_parent_of(this)) {
+ if (Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_a_parent_of(this)) {
set_as_toplevel(false);
}
#endif
@@ -57,17 +59,10 @@ void Popup::_notification(int p_what) {
void Popup::_fix_size() {
-#if 0
- Point2 pos = get_position();
- Size2 size = get_size();
- Point2 window_size = window==this ? get_parent_area_size() :window->get_size();
-#else
-
Point2 pos = get_global_position();
Size2 size = get_size();
Point2 window_size = get_viewport_rect().size;
-#endif
if (pos.x + size.width > window_size.width)
pos.x = window_size.width - size.width;
if (pos.x < 0)
@@ -77,14 +72,8 @@ void Popup::_fix_size() {
pos.y = window_size.height - size.height;
if (pos.y < 0)
pos.y = 0;
-#if 0
- if (pos!=get_pos())
- set_position(pos);
-#else
if (pos != get_position())
set_global_position(pos);
-
-#endif
}
void Popup::set_as_minsize() {
@@ -93,7 +82,7 @@ void Popup::set_as_minsize() {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (!c->is_visible())
@@ -108,13 +97,10 @@ void Popup::set_as_minsize() {
float margin_begin = c->get_margin(m_beg);
float margin_end = c->get_margin(m_end);
- AnchorType anchor_begin = c->get_anchor(m_beg);
- AnchorType anchor_end = c->get_anchor(m_end);
+ float anchor_begin = c->get_anchor(m_beg);
+ float anchor_end = c->get_anchor(m_end);
- if (anchor_begin == ANCHOR_BEGIN)
- minsize[j] += margin_begin;
- if (anchor_end == ANCHOR_END)
- minsize[j] += margin_end;
+ minsize[j] += margin_begin * (ANCHOR_END - anchor_begin) + margin_end * anchor_end;
}
total_minsize.width = MAX(total_minsize.width, minsize.width);
@@ -130,7 +116,7 @@ void Popup::popup_centered_minsize(const Size2 &p_minsize) {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (!c->is_visible())
@@ -145,13 +131,10 @@ void Popup::popup_centered_minsize(const Size2 &p_minsize) {
float margin_begin = c->get_margin(m_beg);
float margin_end = c->get_margin(m_end);
- AnchorType anchor_begin = c->get_anchor(m_beg);
- AnchorType anchor_end = c->get_anchor(m_end);
+ float anchor_begin = c->get_anchor(m_beg);
+ float anchor_end = c->get_anchor(m_end);
- if (anchor_begin == ANCHOR_BEGIN)
- minsize[j] += margin_begin;
- if (anchor_end == ANCHOR_END)
- minsize[j] += margin_end;
+ minsize[j] += margin_begin * (ANCHOR_END - anchor_begin) + margin_end * anchor_end;
}
total_minsize.width = MAX(total_minsize.width, minsize.width);
@@ -209,15 +192,15 @@ void Popup::popup_centered_ratio(float p_screen_ratio) {
popped_up = true;
}
-void Popup::popup(const Rect2 &bounds) {
+void Popup::popup(const Rect2 &p_bounds) {
emit_signal("about_to_show");
show_modal(exclusive);
// Fit the popup into the optionally provided bounds.
- if (!bounds.has_no_area()) {
- set_position(bounds.position);
- set_size(bounds.size);
+ if (!p_bounds.has_no_area()) {
+ set_position(p_bounds.position);
+ set_size(p_bounds.size);
}
_fix_size();
@@ -253,6 +236,7 @@ void Popup::_bind_methods() {
ADD_SIGNAL(MethodInfo("popup_hide"));
ADD_GROUP("Popup", "popup_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "popup_exclusive"), "set_exclusive", "is_exclusive");
+
BIND_CONSTANT(NOTIFICATION_POST_POPUP);
BIND_CONSTANT(NOTIFICATION_POPUP_HIDE);
}
@@ -282,9 +266,10 @@ void PopupPanel::set_child_rect(Control *p_child) {
Ref<StyleBox> p = get_stylebox("panel");
p_child->set_area_as_parent_rect();
- for (int i = 0; i < 4; i++) {
- p_child->set_margin(Margin(i), p->get_margin(Margin(i)));
- }
+ p_child->set_margin(MARGIN_LEFT, p->get_margin(MARGIN_LEFT));
+ p_child->set_margin(MARGIN_RIGHT, -p->get_margin(MARGIN_RIGHT));
+ p_child->set_margin(MARGIN_TOP, p->get_margin(MARGIN_TOP));
+ p_child->set_margin(MARGIN_BOTTOM, -p->get_margin(MARGIN_BOTTOM));
}
void PopupPanel::_notification(int p_what) {
diff --git a/scene/gui/popup.h b/scene/gui/popup.h
index 0543ae1937..6739c580f2 100644
--- a/scene/gui/popup.h
+++ b/scene/gui/popup.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 46aa0e5054..f3711b86b6 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -168,7 +168,7 @@ void PopupMenu::_activate_submenu(int over) {
Node *n = get_node(items[over].submenu);
ERR_EXPLAIN("item subnode does not exist: " + items[over].submenu);
ERR_FAIL_COND(!n);
- Popup *pm = n->cast_to<Popup>();
+ Popup *pm = Object::cast_to<Popup>(n);
ERR_EXPLAIN("item subnode is not a Popup: " + items[over].submenu);
ERR_FAIL_COND(!pm);
if (pm->is_visible_in_tree())
@@ -187,7 +187,7 @@ void PopupMenu::_activate_submenu(int over) {
pm->set_position(pos);
pm->popup();
- PopupMenu *pum = pm->cast_to<PopupMenu>();
+ PopupMenu *pum = Object::cast_to<PopupMenu>(pm);
if (pum) {
pr.position -= pum->get_global_position();
@@ -395,7 +395,7 @@ void PopupMenu::_notification(int p_what) {
case NOTIFICATION_TRANSLATION_CHANGED: {
for (int i = 0; i < items.size(); i++) {
- items[i].xl_text = XL_MESSAGE(items[i].text);
+ items[i].xl_text = tr(items[i].text);
}
minimum_size_changed();
@@ -513,7 +513,7 @@ void PopupMenu::add_icon_item(const Ref<Texture> &p_icon, const String &p_label,
Item item;
item.icon = p_icon;
item.text = p_label;
- item.xl_text = XL_MESSAGE(p_label);
+ item.xl_text = tr(p_label);
item.accel = p_accel;
item.ID = p_ID;
items.push_back(item);
@@ -523,7 +523,7 @@ void PopupMenu::add_item(const String &p_label, int p_ID, uint32_t p_accel) {
Item item;
item.text = p_label;
- item.xl_text = XL_MESSAGE(p_label);
+ item.xl_text = tr(p_label);
item.accel = p_accel;
item.ID = p_ID;
items.push_back(item);
@@ -534,7 +534,7 @@ void PopupMenu::add_submenu_item(const String &p_label, const String &p_submenu,
Item item;
item.text = p_label;
- item.xl_text = XL_MESSAGE(p_label);
+ item.xl_text = tr(p_label);
item.ID = p_ID;
item.submenu = p_submenu;
items.push_back(item);
@@ -546,7 +546,7 @@ void PopupMenu::add_icon_check_item(const Ref<Texture> &p_icon, const String &p_
Item item;
item.icon = p_icon;
item.text = p_label;
- item.xl_text = XL_MESSAGE(p_label);
+ item.xl_text = tr(p_label);
item.accel = p_accel;
item.ID = p_ID;
item.checkable = true;
@@ -557,7 +557,7 @@ void PopupMenu::add_check_item(const String &p_label, int p_ID, uint32_t p_accel
Item item;
item.text = p_label;
- item.xl_text = XL_MESSAGE(p_label);
+ item.xl_text = tr(p_label);
item.accel = p_accel;
item.ID = p_ID;
item.checkable = true;
@@ -628,7 +628,7 @@ void PopupMenu::set_item_text(int p_idx, const String &p_text) {
ERR_FAIL_INDEX(p_idx, items.size());
items[p_idx].text = p_text;
- items[p_idx].xl_text = XL_MESSAGE(p_text);
+ items[p_idx].xl_text = tr(p_text);
update();
}
@@ -869,7 +869,7 @@ bool PopupMenu::activate_item_by_event(const Ref<InputEvent> &p_event, bool p_fo
if (!n)
continue;
- PopupMenu *pm = n->cast_to<PopupMenu>();
+ PopupMenu *pm = Object::cast_to<PopupMenu>(n);
if (!pm)
continue;
@@ -891,14 +891,14 @@ void PopupMenu::activate_item(int p_item) {
//hide all parent PopupMenue's
Node *next = get_parent();
- PopupMenu *pop = next->cast_to<PopupMenu>();
+ PopupMenu *pop = Object::cast_to<PopupMenu>(next);
while (pop) {
// We close all parents that are chained together,
// with hide_on_item_selection enabled
if ((items[p_item].checkable && hide_on_checkable_item_selection && pop->is_hide_on_checkable_item_selection()) || (!items[p_item].checkable && hide_on_item_selection && pop->is_hide_on_item_selection())) {
pop->hide();
next = next->get_parent();
- pop = next->cast_to<PopupMenu>();
+ pop = Object::cast_to<PopupMenu>(next);
} else {
// Break out of loop when the next parent has
// hide_on_item_selection disabled
diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h
index cbfe7873e6..c9e9c8e311 100644
--- a/scene/gui/popup_menu.h
+++ b/scene/gui/popup_menu.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -140,7 +140,7 @@ public:
uint32_t get_item_accelerator(int p_idx) const;
Variant get_item_metadata(int p_idx) const;
bool is_item_disabled(int p_idx) const;
- String get_item_submenu(int p_ID) const;
+ String get_item_submenu(int p_idx) const;
bool is_item_separator(int p_idx) const;
bool is_item_checkable(int p_idx) const;
String get_item_tooltip(int p_idx) const;
diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp
index 13d368d253..6953d03384 100644
--- a/scene/gui/progress_bar.cpp
+++ b/scene/gui/progress_bar.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/progress_bar.h b/scene/gui/progress_bar.h
index 1121a78aab..c5a9252123 100644
--- a/scene/gui/progress_bar.h
+++ b/scene/gui/progress_bar.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/range.cpp b/scene/gui/range.cpp
index 68afe8150a..1dbec6e5a1 100644
--- a/scene/gui/range.cpp
+++ b/scene/gui/range.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -170,7 +170,7 @@ double Range::get_as_ratio() const {
void Range::_share(Node *p_range) {
- Range *r = p_range->cast_to<Range>();
+ Range *r = Object::cast_to<Range>(p_range);
ERR_FAIL_COND(!r);
share(r);
}
diff --git a/scene/gui/range.h b/scene/gui/range.h
index fdcbbb09ee..daa8af824a 100644
--- a/scene/gui/range.h
+++ b/scene/gui/range.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/reference_rect.cpp b/scene/gui/reference_rect.cpp
index 400ff299a9..e2f4abe04a 100644
--- a/scene/gui/reference_rect.cpp
+++ b/scene/gui/reference_rect.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,13 +29,15 @@
/*************************************************************************/
#include "reference_rect.h"
+#include "engine.h"
+
void ReferenceRect::_notification(int p_what) {
if (p_what == NOTIFICATION_DRAW) {
if (!is_inside_tree())
return;
- if (get_tree()->is_editor_hint())
+ if (Engine::get_singleton()->is_editor_hint())
draw_style_box(get_stylebox("border"), Rect2(Point2(), get_size()));
}
}
diff --git a/scene/gui/reference_rect.h b/scene/gui/reference_rect.h
index b118425eb6..9b826a1145 100644
--- a/scene/gui/reference_rect.h
+++ b/scene/gui/reference_rect.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 0e4004c27b..a3f116c883 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -594,7 +594,7 @@ void RichTextLabel::_update_scroll() {
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);
+ vscroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -scroll_w);
_validate_line_caches(main);
} else {
@@ -1915,26 +1915,26 @@ void RichTextLabel::_bind_methods() {
ADD_SIGNAL(MethodInfo("meta_clicked", PropertyInfo(Variant::NIL, "meta")));
- BIND_CONSTANT(ALIGN_LEFT);
- BIND_CONSTANT(ALIGN_CENTER);
- BIND_CONSTANT(ALIGN_RIGHT);
- BIND_CONSTANT(ALIGN_FILL);
-
- BIND_CONSTANT(LIST_NUMBERS);
- BIND_CONSTANT(LIST_LETTERS);
- BIND_CONSTANT(LIST_DOTS);
-
- BIND_CONSTANT(ITEM_FRAME);
- BIND_CONSTANT(ITEM_TEXT);
- BIND_CONSTANT(ITEM_IMAGE);
- BIND_CONSTANT(ITEM_NEWLINE);
- BIND_CONSTANT(ITEM_FONT);
- BIND_CONSTANT(ITEM_COLOR);
- BIND_CONSTANT(ITEM_UNDERLINE);
- BIND_CONSTANT(ITEM_ALIGN);
- BIND_CONSTANT(ITEM_INDENT);
- BIND_CONSTANT(ITEM_LIST);
- BIND_CONSTANT(ITEM_META);
+ BIND_ENUM_CONSTANT(ALIGN_LEFT);
+ BIND_ENUM_CONSTANT(ALIGN_CENTER);
+ BIND_ENUM_CONSTANT(ALIGN_RIGHT);
+ BIND_ENUM_CONSTANT(ALIGN_FILL);
+
+ BIND_ENUM_CONSTANT(LIST_NUMBERS);
+ BIND_ENUM_CONSTANT(LIST_LETTERS);
+ BIND_ENUM_CONSTANT(LIST_DOTS);
+
+ BIND_ENUM_CONSTANT(ITEM_FRAME);
+ BIND_ENUM_CONSTANT(ITEM_TEXT);
+ BIND_ENUM_CONSTANT(ITEM_IMAGE);
+ BIND_ENUM_CONSTANT(ITEM_NEWLINE);
+ BIND_ENUM_CONSTANT(ITEM_FONT);
+ BIND_ENUM_CONSTANT(ITEM_COLOR);
+ BIND_ENUM_CONSTANT(ITEM_UNDERLINE);
+ BIND_ENUM_CONSTANT(ITEM_ALIGN);
+ BIND_ENUM_CONSTANT(ITEM_INDENT);
+ BIND_ENUM_CONSTANT(ITEM_LIST);
+ BIND_ENUM_CONSTANT(ITEM_META);
}
void RichTextLabel::set_visible_characters(int p_visible) {
diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h
index 409a8f6b3f..74bf180b5d 100644
--- a/scene/gui/rich_text_label.h
+++ b/scene/gui/rich_text_label.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -296,7 +296,7 @@ public:
void push_align(Align p_align);
void push_indent(int p_level);
void push_list(ListType p_list);
- void push_meta(const Variant &p_data);
+ void push_meta(const Variant &p_meta);
void push_table(int p_columns);
void set_table_column_expand(int p_column, bool p_expand, int p_ratio = 1);
int get_current_table_column() const;
diff --git a/scene/gui/scroll_bar.cpp b/scene/gui/scroll_bar.cpp
index bd66cd2745..16d1b320b7 100644
--- a/scene/gui/scroll_bar.cpp
+++ b/scene/gui/scroll_bar.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,9 +28,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "scroll_bar.h"
+
#include "os/keyboard.h"
#include "os/os.h"
#include "print_string.h"
+
bool ScrollBar::focus_by_default = false;
void ScrollBar::set_can_focus_by_default(bool p_can_focus) {
@@ -40,6 +42,11 @@ void ScrollBar::set_can_focus_by_default(bool p_can_focus) {
void ScrollBar::_gui_input(Ref<InputEvent> p_event) {
+ Ref<InputEventMouseMotion> m = p_event;
+ if (!m.is_valid() || drag.active) {
+ emit_signal("scrolling");
+ }
+
Ref<InputEventMouseButton> b = p_event;
if (b.is_valid()) {
@@ -98,7 +105,18 @@ void ScrollBar::_gui_input(Ref<InputEvent> p_event) {
if (ofs < grabber_ofs) {
- set_value(get_value() - get_page());
+ if (scrolling) {
+ target_scroll = target_scroll - get_page();
+ } else {
+ target_scroll = get_value() - get_page();
+ }
+
+ if (smooth_scroll_enabled) {
+ scrolling = true;
+ set_fixed_process(true);
+ } else {
+ set_value(target_scroll);
+ }
return;
}
@@ -111,8 +129,18 @@ void ScrollBar::_gui_input(Ref<InputEvent> p_event) {
drag.value_at_click = get_as_ratio();
update();
} else {
+ if (scrolling) {
+ target_scroll = target_scroll + get_page();
+ } else {
+ target_scroll = get_value() + get_page();
+ }
- set_value(get_value() + get_page());
+ if (smooth_scroll_enabled) {
+ scrolling = true;
+ set_fixed_process(true);
+ } else {
+ set_value(target_scroll);
+ }
}
} else {
@@ -122,8 +150,6 @@ void ScrollBar::_gui_input(Ref<InputEvent> p_event) {
}
}
- Ref<InputEventMouseMotion> m = p_event;
-
if (m.is_valid()) {
accept_event();
@@ -233,7 +259,14 @@ void ScrollBar::_notification(int p_what) {
Ref<Texture> decr = highlight == HIGHLIGHT_DECR ? get_icon("decrement_highlight") : get_icon("decrement");
Ref<Texture> incr = highlight == HIGHLIGHT_INCR ? get_icon("increment_highlight") : get_icon("increment");
Ref<StyleBox> bg = has_focus() ? get_stylebox("scroll_focus") : get_stylebox("scroll");
- Ref<StyleBox> grabber = (drag.active || highlight == HIGHLIGHT_RANGE) ? get_stylebox("grabber_highlight") : get_stylebox("grabber");
+
+ Ref<StyleBox> grabber;
+ if (drag.active)
+ grabber = get_stylebox("grabber_pressed");
+ else if (highlight == HIGHLIGHT_RANGE)
+ grabber = get_stylebox("grabber_highlight");
+ else
+ grabber = get_stylebox("grabber");
Point2 ofs;
@@ -284,7 +317,7 @@ void ScrollBar::_notification(int p_what) {
if (has_node(drag_slave_path)) {
Node *n = get_node(drag_slave_path);
- drag_slave = n->cast_to<Control>();
+ drag_slave = Object::cast_to<Control>(n);
}
if (drag_slave) {
@@ -304,7 +337,22 @@ void ScrollBar::_notification(int p_what) {
if (p_what == NOTIFICATION_FIXED_PROCESS) {
- if (drag_slave_touching) {
+ if (scrolling) {
+ if (get_value() != target_scroll) {
+ double target = target_scroll - get_value();
+ double dist = sqrt(target * target);
+ double vel = ((target / dist) * 500) * get_fixed_process_delta_time();
+
+ if (vel >= dist) {
+ set_value(target_scroll);
+ } else {
+ set_value(get_value() + vel);
+ }
+ } else {
+ scrolling = false;
+ set_fixed_process(false);
+ }
+ } else if (drag_slave_touching) {
if (drag_slave_touching_deaccel) {
@@ -617,7 +665,7 @@ void ScrollBar::set_drag_slave(const NodePath &p_path) {
if (has_node(p_path)) {
Node *n = get_node(p_path);
- drag_slave = n->cast_to<Control>();
+ drag_slave = Object::cast_to<Control>(n);
}
if (drag_slave) {
@@ -632,138 +680,14 @@ NodePath ScrollBar::get_drag_slave() const {
return drag_slave_path;
}
-#if 0
-
-void ScrollBar::mouse_button(const Point2& p_pos, int b->get_button_index(),bool b->is_pressed(),int p_modifier_mask) {
-
- // wheel!
-
- if (b->get_button_index()==BUTTON_WHEEL_UP && b->is_pressed()) {
-
- if (orientation==VERTICAL)
- set_val( get_val() - get_page() / 4.0 );
- else
- set_val( get_val() + get_page() / 4.0 );
-
- }
- if (b->get_button_index()==BUTTON_WHEEL_DOWN && b->is_pressed()) {
-
- if (orientation==HORIZONTAL)
- set_val( get_val() - get_page() / 4.0 );
- else
- set_val( get_val() + get_page() / 4.0 );
- }
-
- if (b->get_button_index()!=BUTTON_LEFT)
- return;
-
- if (b->is_pressed()) {
-
- int ofs = orientation==VERTICAL ? p_pos.y : p_pos.x ;
- int grabber_ofs = get_grabber_offset();
- int grabber_size = get_grabber_size();
-
- if ( ofs < grabber_ofs ) {
-
- set_val( get_val() - get_page() );
-
- } else if (ofs > grabber_ofs + grabber_size ) {
-
- set_val( get_val() + get_page() );
-
- } else {
-
-
- drag.active=true;
- drag.pos_at_click=get_click_pos(p_pos);
- drag.value_at_click=get_unit_value();
- }
-
-
- } else {
-
- drag.active=false;
- }
-
+void ScrollBar::set_smooth_scroll_enabled(bool p_enable) {
+ smooth_scroll_enabled = p_enable;
}
-void ScrollBar::mouse_motion(const Point2& p_pos, const Point2& p_rel, int b->get_button_index()_mask) {
-
- if (!drag.active)
- return;
-
- double value_ofs=drag.value_at_click+(get_click_pos(p_pos)-drag.pos_at_click);
-
-
- value_ofs=value_ofs*( get_max() - get_min() );
- if (value_ofs<get_min())
- value_ofs=get_min();
- if (value_ofs>(get_max()-get_page()))
- value_ofs=get_max()-get_page();
- if (get_val()==value_ofs)
- return; //don't bother if the value is the same
-
- set_val( value_ofs );
-
-}
-
-bool ScrollBar::key(unsigned long p_unicode, unsigned long p_scan_code,bool b->is_pressed(),bool p_repeat,int p_modifier_mask) {
-
- if (!b->is_pressed())
- return false;
-
- switch (p_scan_code) {
- case KEY_LEFT: {
-
- if (orientation!=HORIZONTAL)
- return false;
- set_val( get_val() - get_step() );
-
- } break;
- case KEY_RIGHT: {
-
- if (orientation!=HORIZONTAL)
- return false;
- set_val( get_val() + get_step() );
-
- } break;
- case KEY_UP: {
-
- if (orientation!=VERTICAL)
- return false;
-
- set_val( get_val() - get_step() );
-
-
- } break;
- case KEY_DOWN: {
-
- if (orientation!=VERTICAL)
- return false;
- set_val( get_val() + get_step() );
-
- } break;
- case KEY_HOME: {
-
- set_val( get_min() );
-
- } break;
- case KEY_END: {
-
- set_val( get_max() );
-
- } break;
-
- default:
- return false;
-
- }
-
- return true;
+bool ScrollBar::is_smooth_scroll_enabled() const {
+ return smooth_scroll_enabled;
}
-#endif
-
void ScrollBar::_bind_methods() {
ClassDB::bind_method(D_METHOD("_gui_input"), &ScrollBar::_gui_input);
@@ -772,6 +696,8 @@ void ScrollBar::_bind_methods() {
ClassDB::bind_method(D_METHOD("_drag_slave_input"), &ScrollBar::_drag_slave_input);
ClassDB::bind_method(D_METHOD("_drag_slave_exit"), &ScrollBar::_drag_slave_exit);
+ ADD_SIGNAL(MethodInfo("scrolling"));
+
ADD_PROPERTY(PropertyInfo(Variant::REAL, "custom_step", PROPERTY_HINT_RANGE, "-1,4096"), "set_custom_step", "get_custom_step");
}
@@ -788,6 +714,10 @@ ScrollBar::ScrollBar(Orientation p_orientation) {
drag_slave_touching = false;
drag_slave_touching_deaccel = false;
+ scrolling = false;
+ target_scroll = 0;
+ smooth_scroll_enabled = false;
+
if (focus_by_default)
set_focus_mode(FOCUS_ALL);
set_step(0);
diff --git a/scene/gui/scroll_bar.h b/scene/gui/scroll_bar.h
index 8310e12590..373483a8a0 100644
--- a/scene/gui/scroll_bar.h
+++ b/scene/gui/scroll_bar.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -83,6 +83,10 @@ class ScrollBar : public Range {
bool drag_slave_touching_deaccel;
bool click_handled;
+ bool scrolling;
+ double target_scroll;
+ bool smooth_scroll_enabled;
+
void _drag_slave_exit();
void _drag_slave_input(const Ref<InputEvent> &p_input);
@@ -100,6 +104,9 @@ public:
void set_drag_slave(const NodePath &p_path);
NodePath get_drag_slave() const;
+ void set_smooth_scroll_enabled(bool p_enable);
+ bool is_smooth_scroll_enabled() const;
+
virtual Size2 get_minimum_size() const;
ScrollBar(Orientation p_orientation = VERTICAL);
~ScrollBar();
diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp
index cc1a637d2b..e182e491d3 100644
--- a/scene/gui/scroll_container.cpp
+++ b/scene/gui/scroll_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -40,7 +40,7 @@ Size2 ScrollContainer::get_minimum_size() const {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -187,14 +187,14 @@ void ScrollContainer::_update_scrollbar_pos() {
Size2 hmin = h_scroll->get_combined_minimum_size();
Size2 vmin = v_scroll->get_combined_minimum_size();
- v_scroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, vmin.width);
+ v_scroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_END, -vmin.width);
v_scroll->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 0);
v_scroll->set_anchor_and_margin(MARGIN_TOP, ANCHOR_BEGIN, 0);
v_scroll->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, 0);
h_scroll->set_anchor_and_margin(MARGIN_LEFT, ANCHOR_BEGIN, 0);
h_scroll->set_anchor_and_margin(MARGIN_RIGHT, ANCHOR_END, 0);
- h_scroll->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, hmin.height);
+ h_scroll->set_anchor_and_margin(MARGIN_TOP, ANCHOR_END, -hmin.height);
h_scroll->set_anchor_and_margin(MARGIN_BOTTOM, ANCHOR_END, 0);
h_scroll->raise();
@@ -220,7 +220,7 @@ void ScrollContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
@@ -423,7 +423,7 @@ String ScrollContainer::get_configuration_warning() const {
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c)
continue;
if (c->is_set_as_toplevel())
diff --git a/scene/gui/scroll_container.h b/scene/gui/scroll_container.h
index e5df3e5e1c..9076be0d72 100644
--- a/scene/gui/scroll_container.h
+++ b/scene/gui/scroll_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/separator.cpp b/scene/gui/separator.cpp
index 3b00ab4605..3db234f7cc 100644
--- a/scene/gui/separator.cpp
+++ b/scene/gui/separator.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/separator.h b/scene/gui/separator.h
index 9a5fe2ac66..be2f1e8e77 100644
--- a/scene/gui/separator.h
+++ b/scene/gui/separator.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/shortcut.cpp b/scene/gui/shortcut.cpp
new file mode 100644
index 0000000000..f37410e77b
--- /dev/null
+++ b/scene/gui/shortcut.cpp
@@ -0,0 +1,77 @@
+/*************************************************************************/
+/* shortcut.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 "shortcut.h"
+
+#include "os/keyboard.h"
+
+void ShortCut::set_shortcut(const Ref<InputEvent> &p_shortcut) {
+
+ shortcut = p_shortcut;
+ emit_changed();
+}
+
+Ref<InputEvent> ShortCut::get_shortcut() const {
+
+ return shortcut;
+}
+
+bool ShortCut::is_shortcut(const Ref<InputEvent> &p_event) const {
+
+ return shortcut.is_valid() && shortcut->shortcut_match(p_event);
+}
+
+String ShortCut::get_as_text() const {
+
+ if (shortcut.is_valid())
+ return shortcut->as_text();
+ else
+ return "None";
+}
+
+bool ShortCut::is_valid() const {
+
+ return shortcut.is_valid();
+}
+
+void ShortCut::_bind_methods() {
+
+ ClassDB::bind_method(D_METHOD("set_shortcut", "event"), &ShortCut::set_shortcut);
+ ClassDB::bind_method(D_METHOD("get_shortcut"), &ShortCut::get_shortcut);
+
+ ClassDB::bind_method(D_METHOD("is_valid"), &ShortCut::is_valid);
+
+ ClassDB::bind_method(D_METHOD("is_shortcut", "event"), &ShortCut::is_shortcut);
+ ClassDB::bind_method(D_METHOD("get_as_text"), &ShortCut::get_as_text);
+
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shortcut", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"), "set_shortcut", "get_shortcut");
+}
+
+ShortCut::ShortCut() {
+}
diff --git a/scene/gui/shortcut.h b/scene/gui/shortcut.h
new file mode 100644
index 0000000000..8d85bb920f
--- /dev/null
+++ b/scene/gui/shortcut.h
@@ -0,0 +1,56 @@
+/*************************************************************************/
+/* shortcut.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 SHORTCUT_H
+#define SHORTCUT_H
+
+#include "os/input_event.h"
+#include "resource.h"
+
+class ShortCut : public Resource {
+
+ GDCLASS(ShortCut, Resource);
+
+ Ref<InputEvent> shortcut;
+
+protected:
+ static void _bind_methods();
+
+public:
+ void set_shortcut(const Ref<InputEvent> &p_shortcut);
+ Ref<InputEvent> get_shortcut() const;
+ bool is_shortcut(const Ref<InputEvent> &p_event) const;
+ bool is_valid() const;
+
+ String get_as_text() const;
+
+ ShortCut();
+};
+
+#endif // SHORTCUT_H
diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp
index 9ba17ce34f..4661f54526 100644
--- a/scene/gui/slider.cpp
+++ b/scene/gui/slider.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/slider.h b/scene/gui/slider.h
index f3cf3c6f48..a2334a69fc 100644
--- a/scene/gui/slider.h
+++ b/scene/gui/slider.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp
index c5b9df15b9..f462989f53 100644
--- a/scene/gui/spin_box.cpp
+++ b/scene/gui/spin_box.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -192,7 +192,7 @@ void SpinBox::_notification(int p_what) {
int w = updown->get_width();
if (w != last_w) {
- line_edit->set_margin(MARGIN_RIGHT, w);
+ line_edit->set_margin(MARGIN_RIGHT, -w);
last_w = w;
}
diff --git a/scene/gui/spin_box.h b/scene/gui/spin_box.h
index 683ed0c344..0c562bd744 100644
--- a/scene/gui/spin_box.h
+++ b/scene/gui/spin_box.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp
index e3dad08809..4420a936d2 100644
--- a/scene/gui/split_container.cpp
+++ b/scene/gui/split_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -44,7 +44,7 @@ Control *SplitContainer::_getch(int p_idx) const {
int idx = 0;
for (int i = 0; i < get_child_count(); i++) {
- Control *c = get_child(i)->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(get_child(i));
if (!c || !c->is_visible_in_tree())
continue;
if (c->is_set_as_toplevel())
@@ -410,9 +410,9 @@ void SplitContainer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collapsed"), "set_collapsed", "is_collapsed");
ADD_PROPERTY(PropertyInfo(Variant::INT, "dragger_visibility", PROPERTY_HINT_ENUM, "Visible,Hidden,Hidden & Collapsed"), "set_dragger_visibility", "get_dragger_visibility");
- BIND_CONSTANT(DRAGGER_VISIBLE);
- BIND_CONSTANT(DRAGGER_HIDDEN);
- BIND_CONSTANT(DRAGGER_HIDDEN_COLLAPSED);
+ BIND_ENUM_CONSTANT(DRAGGER_VISIBLE);
+ BIND_ENUM_CONSTANT(DRAGGER_HIDDEN);
+ BIND_ENUM_CONSTANT(DRAGGER_HIDDEN_COLLAPSED);
}
SplitContainer::SplitContainer(bool p_vertical) {
diff --git a/scene/gui/split_container.h b/scene/gui/split_container.h
index 87a210f24c..8ec21b5eaa 100644
--- a/scene/gui/split_container.h
+++ b/scene/gui/split_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp
index 4b8b180b0e..461ae3444b 100644
--- a/scene/gui/tab_container.cpp
+++ b/scene/gui/tab_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -230,8 +230,8 @@ void TabContainer::_notification(int p_what) {
tab_style->draw(canvas, tab_rect);
// Draw the tab contents.
- Control *control = tabs[i + first_tab_cache]->cast_to<Control>();
- String text = control->has_meta("_tab_name") ? String(XL_MESSAGE(String(control->get_meta("_tab_name")))) : String(control->get_name());
+ Control *control = Object::cast_to<Control>(tabs[i + first_tab_cache]);
+ String text = control->has_meta("_tab_name") ? String(tr(String(control->get_meta("_tab_name")))) : String(control->get_name());
int x_content = tab_rect.position.x + tab_style->get_margin(MARGIN_LEFT);
int top_margin = tab_style->get_margin(MARGIN_TOP);
@@ -293,13 +293,13 @@ void TabContainer::_notification(int p_what) {
}
int TabContainer::_get_tab_width(int p_index) const {
- Control *control = _get_tabs()[p_index]->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(_get_tabs()[p_index]);
if (!control || control->is_set_as_toplevel())
return 0;
// Get the width of the text displayed on the tab.
Ref<Font> font = get_font("font");
- String text = control->has_meta("_tab_name") ? String(XL_MESSAGE(String(control->get_meta("_tab_name")))) : String(control->get_name());
+ String text = control->has_meta("_tab_name") ? String(tr(String(control->get_meta("_tab_name")))) : String(control->get_name());
int width = font->get_string_size(text).width;
// Add space for a tab icon.
@@ -332,7 +332,7 @@ Vector<Control *> TabContainer::_get_tabs() const {
Vector<Control *> controls;
for (int i = 0; i < get_child_count(); i++) {
- Control *control = get_child(i)->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(get_child(i));
if (!control || control->is_toplevel_control())
continue;
@@ -350,7 +350,7 @@ void TabContainer::add_child_notify(Node *p_child) {
Control::add_child_notify(p_child);
- Control *c = p_child->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(p_child);
if (!c)
return;
if (c->is_set_as_toplevel())
@@ -371,8 +371,10 @@ void TabContainer::add_child_notify(Node *p_child) {
if (tabs_visible)
c->set_margin(MARGIN_TOP, _get_top_margin());
Ref<StyleBox> sb = get_stylebox("panel");
- for (int i = 0; i < 4; i++)
- c->set_margin(Margin(i), c->get_margin(Margin(i)) + sb->get_margin(Margin(i)));
+ c->set_margin(Margin(MARGIN_TOP), c->get_margin(Margin(MARGIN_TOP)) + sb->get_margin(Margin(MARGIN_TOP)));
+ c->set_margin(Margin(MARGIN_LEFT), c->get_margin(Margin(MARGIN_LEFT)) + sb->get_margin(Margin(MARGIN_LEFT)));
+ c->set_margin(Margin(MARGIN_RIGHT), c->get_margin(Margin(MARGIN_RIGHT)) - sb->get_margin(Margin(MARGIN_RIGHT)));
+ c->set_margin(Margin(MARGIN_BOTTOM), c->get_margin(Margin(MARGIN_BOTTOM)) - sb->get_margin(Margin(MARGIN_BOTTOM)));
update();
p_child->connect("renamed", this, "_child_renamed_callback");
@@ -402,8 +404,10 @@ void TabContainer::set_current_tab(int p_current) {
c->set_area_as_parent_rect();
if (tabs_visible)
c->set_margin(MARGIN_TOP, _get_top_margin());
- for (int i = 0; i < 4; i++)
- c->set_margin(Margin(i), c->get_margin(Margin(i)) + sb->get_margin(Margin(i)));
+ c->set_margin(Margin(MARGIN_TOP), c->get_margin(Margin(MARGIN_TOP)) + sb->get_margin(Margin(MARGIN_TOP)));
+ c->set_margin(Margin(MARGIN_LEFT), c->get_margin(Margin(MARGIN_LEFT)) + sb->get_margin(Margin(MARGIN_LEFT)));
+ c->set_margin(Margin(MARGIN_RIGHT), c->get_margin(Margin(MARGIN_RIGHT)) - sb->get_margin(Margin(MARGIN_RIGHT)));
+ c->set_margin(Margin(MARGIN_BOTTOM), c->get_margin(Margin(MARGIN_BOTTOM)) - sb->get_margin(Margin(MARGIN_BOTTOM)));
} else
c->hide();
@@ -544,11 +548,11 @@ Ref<Texture> TabContainer::get_tab_icon(int p_tab) const {
return Ref<Texture>();
}
-void TabContainer::set_tab_disabled(int p_tab, bool p_enabled) {
+void TabContainer::set_tab_disabled(int p_tab, bool p_disabled) {
Control *child = _get_tab(p_tab);
ERR_FAIL_COND(!child);
- child->set_meta("_tab_disabled", p_enabled);
+ child->set_meta("_tab_disabled", p_disabled);
update();
}
@@ -612,7 +616,7 @@ Size2 TabContainer::get_minimum_size() const {
void TabContainer::set_popup(Node *p_popup) {
ERR_FAIL_NULL(p_popup);
- popup = p_popup->cast_to<Popup>();
+ popup = Object::cast_to<Popup>(p_popup);
update();
}
diff --git a/scene/gui/tab_container.h b/scene/gui/tab_container.h
index 1105c6b298..be59a16b3f 100644
--- a/scene/gui/tab_container.h
+++ b/scene/gui/tab_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,7 +54,7 @@ private:
bool tabs_visible;
bool buttons_visible_cache;
TabAlign align;
- Control *_get_tab(int idx) const;
+ Control *_get_tab(int p_idx) const;
int _get_top_margin() const;
Popup *popup;
diff --git a/scene/gui/tabs.cpp b/scene/gui/tabs.cpp
index acffbbc499..085f6de6b8 100644
--- a/scene/gui/tabs.cpp
+++ b/scene/gui/tabs.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -815,15 +815,15 @@ void Tabs::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "current_tab", PROPERTY_HINT_RANGE, "-1,4096,1", PROPERTY_USAGE_EDITOR), "set_current_tab", "get_current_tab");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "tab_close_display_policy", PROPERTY_HINT_ENUM, "Show Never,Show Active Only,Show Always"), "set_tab_close_display_policy", "get_tab_close_display_policy");
- BIND_CONSTANT(ALIGN_LEFT);
- BIND_CONSTANT(ALIGN_CENTER);
- BIND_CONSTANT(ALIGN_RIGHT);
- BIND_CONSTANT(ALIGN_MAX);
+ BIND_ENUM_CONSTANT(ALIGN_LEFT);
+ BIND_ENUM_CONSTANT(ALIGN_CENTER);
+ BIND_ENUM_CONSTANT(ALIGN_RIGHT);
+ BIND_ENUM_CONSTANT(ALIGN_MAX);
- BIND_CONSTANT(CLOSE_BUTTON_SHOW_ACTIVE_ONLY);
- BIND_CONSTANT(CLOSE_BUTTON_SHOW_ALWAYS);
- BIND_CONSTANT(CLOSE_BUTTON_SHOW_NEVER);
- BIND_CONSTANT(CLOSE_BUTTON_MAX);
+ BIND_ENUM_CONSTANT(CLOSE_BUTTON_SHOW_ACTIVE_ONLY);
+ BIND_ENUM_CONSTANT(CLOSE_BUTTON_SHOW_ALWAYS);
+ BIND_ENUM_CONSTANT(CLOSE_BUTTON_SHOW_NEVER);
+ BIND_ENUM_CONSTANT(CLOSE_BUTTON_MAX);
}
Tabs::Tabs() {
diff --git a/scene/gui/tabs.h b/scene/gui/tabs.h
index 86ad128dcd..73fa40bbb8 100644
--- a/scene/gui/tabs.h
+++ b/scene/gui/tabs.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 7b0d14c1a9..7a9daea73e 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,13 +27,12 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-
#include "text_edit.h"
+
+#include "message_queue.h"
#include "os/input.h"
#include "os/keyboard.h"
#include "os/os.h"
-
-#include "message_queue.h"
#include "project_settings.h"
#include "scene/main/viewport.h"
@@ -215,8 +214,8 @@ void TextEdit::Text::_update_line_cache(int p_line) const {
const Map<int, TextEdit::Text::ColorRegionInfo> &TextEdit::Text::get_color_region_info(int p_line) {
- Map<int, ColorRegionInfo> *cri = NULL;
- ERR_FAIL_INDEX_V(p_line, text.size(), *cri); //enjoy your crash
+ static Map<int, ColorRegionInfo> cri;
+ ERR_FAIL_INDEX_V(p_line, text.size(), cri);
if (text[p_line].width_cache == -1) {
_update_line_cache(p_line);
@@ -338,6 +337,11 @@ void TextEdit::_update_scrollbars() {
v_scroll->show();
v_scroll->set_max(total_rows);
v_scroll->set_page(visible_rows);
+ if (smooth_scroll_enabled) {
+ v_scroll->set_step(0.25);
+ } else {
+ v_scroll->set_step(1);
+ }
if (fabs(v_scroll->get_value() - (double)cursor.line_ofs) >= 1) {
v_scroll->set_value(cursor.line_ofs);
@@ -420,6 +424,24 @@ void TextEdit::_notification(int p_what) {
draw_caret = false;
update();
} break;
+ case NOTIFICATION_FIXED_PROCESS: {
+ if (scrolling && v_scroll->get_value() != target_v_scroll) {
+ double target_y = target_v_scroll - v_scroll->get_value();
+ double dist = sqrt(target_y * target_y);
+ double vel = ((target_y / dist) * v_scroll_speed) * get_fixed_process_delta_time();
+
+ if (vel >= dist) {
+ v_scroll->set_value(target_v_scroll);
+ scrolling = false;
+ set_fixed_process(false);
+ } else {
+ v_scroll->set_value(v_scroll->get_value() + vel);
+ }
+ } else {
+ scrolling = false;
+ set_fixed_process(false);
+ }
+ } break;
case NOTIFICATION_DRAW: {
if ((!has_focus() && !menu->has_focus()) || !window_has_focus) {
@@ -436,7 +458,7 @@ void TextEdit::_notification(int p_what) {
int line_number_char_count = 0;
{
- int lc = text.size() + 1;
+ int lc = text.size();
cache.line_number_w = 0;
while (lc) {
cache.line_number_w += 1;
@@ -454,6 +476,7 @@ void TextEdit::_notification(int p_what) {
_update_scrollbars();
RID ci = get_canvas_item();
+ VisualServer::get_singleton()->canvas_item_set_clip(get_canvas_item(), true);
int xmargin_beg = cache.style_normal->get_margin(MARGIN_LEFT) + cache.line_number_w + cache.breakpoint_gutter_width;
int xmargin_end = cache.size.width - cache.style_normal->get_margin(MARGIN_RIGHT);
//let's do it easy for now:
@@ -463,7 +486,7 @@ void TextEdit::_notification(int p_what) {
int ascent = cache.font->get_ascent();
- int visible_rows = get_visible_rows();
+ int visible_rows = get_visible_rows() + 1;
int tab_w = cache.font->get_char_size(' ').width * indent_size;
@@ -674,7 +697,11 @@ void TextEdit::_notification(int p_what) {
int char_margin = xmargin_beg - cursor.x_ofs;
int char_ofs = 0;
- int ofs_y = i * get_row_height() + cache.line_spacing / 2;
+ int ofs_y = (i * get_row_height() + cache.line_spacing / 2);
+ if (smooth_scroll_enabled) {
+ ofs_y -= (v_scroll->get_value() - cursor.line_ofs) * get_row_height();
+ }
+
bool prev_is_char = false;
bool prev_is_number = false;
bool in_keyword = false;
@@ -1028,6 +1055,8 @@ void TextEdit::_notification(int p_what) {
if (cursor.column == j && cursor.line == line && block_caret && draw_caret && !insert_mode) {
color = cache.caret_background_color;
+ } else if (!syntax_coloring && block_caret) {
+ color = cache.font_color;
}
if (str[j] >= 32) {
@@ -1498,7 +1527,7 @@ void TextEdit::_get_mouse_pos(const Point2i &p_mouse, int &r_row, int &r_col) co
float rows = p_mouse.y;
rows -= cache.style_normal->get_margin(MARGIN_TOP);
rows /= get_row_height();
- int row = cursor.line_ofs + rows;
+ int row = cursor.line_ofs + (rows + (v_scroll->get_value() - cursor.line_ofs));
if (row < 0)
row = 0;
@@ -1564,10 +1593,43 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
if (mb->is_pressed()) {
if (mb->get_button_index() == BUTTON_WHEEL_UP && !mb->get_command()) {
- v_scroll->set_value(v_scroll->get_value() - (3 * mb->get_factor()));
+ if (scrolling) {
+ target_v_scroll = (target_v_scroll - (3 * mb->get_factor()));
+ } else {
+ target_v_scroll = (v_scroll->get_value() - (3 * mb->get_factor()));
+ }
+
+ if (smooth_scroll_enabled) {
+ if (target_v_scroll <= 0) {
+ target_v_scroll = 0;
+ }
+ scrolling = true;
+ set_fixed_process(true);
+ } else {
+ v_scroll->set_value(target_v_scroll);
+ }
}
if (mb->get_button_index() == BUTTON_WHEEL_DOWN && !mb->get_command()) {
- v_scroll->set_value(v_scroll->get_value() + (3 * mb->get_factor()));
+ if (scrolling) {
+ target_v_scroll = (target_v_scroll + (3 * mb->get_factor()));
+ } else {
+ target_v_scroll = (v_scroll->get_value() + (3 * mb->get_factor()));
+ }
+
+ if (smooth_scroll_enabled) {
+ int max_v_scroll = get_line_count() - 1;
+ if (!scroll_past_end_of_file_enabled) {
+ max_v_scroll -= get_visible_rows() - 1;
+ }
+
+ if (target_v_scroll > max_v_scroll) {
+ target_v_scroll = max_v_scroll;
+ }
+ scrolling = true;
+ set_fixed_process(true);
+ } else {
+ v_scroll->set_value(target_v_scroll);
+ }
}
if (mb->get_button_index() == BUTTON_WHEEL_LEFT) {
h_scroll->set_value(h_scroll->get_value() - (100 * mb->get_factor()));
@@ -2052,14 +2114,14 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
//keep indentation
int space_count = 0;
for (int i = 0; i < text[cursor.line].length(); i++) {
- if (text[cursor.line][i] == '\t') {
+ if (text[cursor.line][i] == '\t' && cursor.column > 0) {
if (indent_using_spaces) {
ins += space_indent;
} else {
ins += "\t";
}
space_count = 0;
- } else if (text[cursor.line][i] == ' ') {
+ } else if (text[cursor.line][i] == ' ' && cursor.column > 0) {
space_count++;
if (space_count == indent_size) {
@@ -2248,6 +2310,13 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
#endif
bool prev_char = false;
int cc = cursor.column;
+
+ if (cc == 0 && cursor.line > 0) {
+ cursor_set_line(cursor.line - 1);
+ cursor_set_column(text[cursor.line].length());
+ break;
+ }
+
while (cc > 0) {
bool ischar = _is_text_char(text[cursor.line][cc - 1]);
@@ -2305,6 +2374,13 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
#endif
bool prev_char = false;
int cc = cursor.column;
+
+ if (cc == text[cursor.line].length() && cursor.line < text.size() - 1) {
+ cursor_set_line(cursor.line + 1);
+ cursor_set_column(0);
+ break;
+ }
+
while (cc < text[cursor.line].length()) {
bool ischar = _is_text_char(text[cursor.line][cc]);
@@ -2659,6 +2735,15 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
else
undo();
} break;
+ case KEY_Y: {
+
+ if (!k->get_command()) {
+ scancode_handled = false;
+ break;
+ }
+
+ redo();
+ } break;
case KEY_V: {
if (readonly) {
break;
@@ -2803,6 +2888,8 @@ void TextEdit::_post_shift_selection() {
}
void TextEdit::_scroll_lines_up() {
+ scrolling = false;
+
// adjust the vertical scroll
if (get_v_scroll() > 0) {
set_v_scroll(get_v_scroll() - 1);
@@ -2815,6 +2902,8 @@ void TextEdit::_scroll_lines_up() {
}
void TextEdit::_scroll_lines_down() {
+ scrolling = false;
+
// calculate the maximum vertical scroll position
int max_v_scroll = get_line_count() - 1;
if (!scroll_past_end_of_file_enabled) {
@@ -2933,7 +3022,7 @@ void TextEdit::_base_remove_text(int p_from_line, int p_from_column, int p_to_li
}
}
-void TextEdit::_insert_text(int p_line, int p_char, const String &p_text, int *r_end_line, int *r_end_column) {
+void TextEdit::_insert_text(int p_line, int p_char, const String &p_text, int *r_end_line, int *r_end_char) {
if (!setting_text)
idle_detect->start();
@@ -2946,8 +3035,8 @@ void TextEdit::_insert_text(int p_line, int p_char, const String &p_text, int *r
_base_insert_text(p_line, p_char, p_text, retline, retchar);
if (r_end_line)
*r_end_line = retline;
- if (r_end_column)
- *r_end_column = retchar;
+ if (r_end_char)
+ *r_end_char = retchar;
if (!undo_enabled)
return;
@@ -3079,6 +3168,7 @@ int TextEdit::get_visible_rows() const {
return total;
}
void TextEdit::adjust_viewport_to_cursor() {
+ scrolling = false;
if (cursor.line_ofs > cursor.line)
cursor.line_ofs = cursor.line;
@@ -3095,10 +3185,15 @@ void TextEdit::adjust_viewport_to_cursor() {
visible_rows -= ((h_scroll->get_combined_minimum_size().height - 1) / get_row_height());
if (cursor.line >= (cursor.line_ofs + visible_rows))
- cursor.line_ofs = cursor.line - visible_rows + 1;
+ cursor.line_ofs = cursor.line - visible_rows;
if (cursor.line < cursor.line_ofs)
cursor.line_ofs = cursor.line;
+ if (cursor.line_ofs + visible_rows > text.size() && !scroll_past_end_of_file_enabled) {
+ cursor.line_ofs = text.size() - visible_rows;
+ v_scroll->set_value(text.size() - visible_rows);
+ }
+
int cursor_x = get_column_x_offset(cursor.column, text[cursor.line]);
if (cursor_x > (cursor.x_ofs + visible_width))
@@ -3118,6 +3213,7 @@ void TextEdit::adjust_viewport_to_cursor() {
}
void TextEdit::center_viewport_to_cursor() {
+ scrolling = false;
if (cursor.line_ofs > cursor.line)
cursor.line_ofs = cursor.line;
@@ -3236,6 +3332,10 @@ bool TextEdit::cursor_is_block_mode() const {
return block_caret;
}
+void TextEdit::_v_scroll_input() {
+ scrolling = false;
+}
+
void TextEdit::_scroll_moved(double p_to_val) {
if (updating_scrolls)
@@ -3566,10 +3666,10 @@ void TextEdit::cut() {
String clipboard = _base_get_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column);
OS::get_singleton()->set_clipboard(clipboard);
- cursor_set_line(selection.from_line);
+ _remove_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column);
+ cursor_set_line(selection.from_line); // set afterwards else it causes the view to be offset
cursor_set_column(selection.from_column);
- _remove_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column);
selection.active = false;
selection.selecting_mode = Selection::MODE_NONE;
update();
@@ -3579,9 +3679,6 @@ void TextEdit::cut() {
void TextEdit::copy() {
- if (!selection.active)
- return;
-
if (!selection.active) {
String clipboard = _base_get_text(cursor.line, 0, cursor.line, text[cursor.line].length());
OS::get_singleton()->set_clipboard(clipboard);
@@ -3821,11 +3918,9 @@ bool TextEdit::search(const String &p_key, uint32_t p_search_flags, int p_from_l
//search through the whole documment, but start by current line
- int line = -1;
+ int line = p_from_line;
int pos = -1;
- line = p_from_line;
-
for (int i = 0; i < text.size() + 1; i++) {
//backwards is broken...
//int idx=(p_search_flags&SEARCH_BACKWARDS)?(text.size()-i):i; //do backwards seearch
@@ -4178,6 +4273,23 @@ void TextEdit::set_h_scroll(int p_scroll) {
h_scroll->set_value(p_scroll);
}
+void TextEdit::set_smooth_scroll_enabled(bool p_enable) {
+ v_scroll->set_smooth_scroll_enabled(p_enable);
+ smooth_scroll_enabled = p_enable;
+}
+
+bool TextEdit::is_smooth_scroll_enabled() const {
+ return smooth_scroll_enabled;
+}
+
+void TextEdit::set_v_scroll_speed(float p_speed) {
+ v_scroll_speed = p_speed;
+}
+
+float TextEdit::get_v_scroll_speed() const {
+ return v_scroll_speed;
+}
+
void TextEdit::set_completion(bool p_enabled, const Vector<String> &p_prefixes) {
completion_prefixes.clear();
@@ -4220,6 +4332,7 @@ void TextEdit::_cancel_completion() {
return;
completion_active = false;
+ completion_forced = false;
update();
}
@@ -4287,13 +4400,19 @@ void TextEdit::_update_completion_candidates() {
}
}
- if (cursor.column > 0 && l[cursor.column - 1] == '(' && !pre_keyword && !completion_strings[0].begins_with("\"")) {
+ if (cursor.column > 0 && l[cursor.column - 1] == '(' && !pre_keyword && !completion_forced) {
cancel = true;
}
update();
- if (cancel || (!pre_keyword && s == "" && (cofs == 0 || !completion_prefixes.has(String::chr(l[cofs - 1]))))) {
+ bool prev_is_prefix = false;
+ if (cofs > 0 && completion_prefixes.has(String::chr(l[cofs - 1])))
+ prev_is_prefix = true;
+ if (cofs > 1 && l[cofs - 1] == ' ' && completion_prefixes.has(String::chr(l[cofs - 2]))) //check with one space before prefix, to allow indent
+ prev_is_prefix = true;
+
+ if (cancel || (!pre_keyword && s == "" && (cofs == 0 || !prev_is_prefix))) {
//none to complete, cancel
_cancel_completion();
return;
@@ -4351,18 +4470,6 @@ void TextEdit::_update_completion_candidates() {
// The top of the list is the best match
completion_current = completion_options[0];
-
-#if 0 // even there's only one option, user still get the chance to choose using it or not
- if (completion_options.size()==1) {
- //one option to complete, just complete it automagically
- _confirm_completion();
- //insert_text_at_cursor(completion_options[0].substr(s.length(),completion_options[0].length()-s.length()));
- _cancel_completion();
- return;
-
- }
-#endif
-
completion_enabled = true;
}
@@ -4382,6 +4489,8 @@ void TextEdit::query_code_comple() {
if (ofs > 0 && (inquote || _is_completable(l[ofs - 1]) || completion_prefixes.has(String::chr(l[ofs - 1]))))
emit_signal("request_completion");
+ else if (ofs > 1 && l[ofs - 1] == ' ' && completion_prefixes.has(String::chr(l[ofs - 2]))) //make it work with a space too, it's good enough
+ emit_signal("request_completion");
}
void TextEdit::set_code_hint(const String &p_hint) {
@@ -4393,12 +4502,13 @@ void TextEdit::set_code_hint(const String &p_hint) {
update();
}
-void TextEdit::code_complete(const Vector<String> &p_strings) {
+void TextEdit::code_complete(const Vector<String> &p_strings, bool p_forced) {
VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1);
raised_from_completion = true;
completion_strings = p_strings;
completion_active = true;
+ completion_forced = p_forced;
completion_current = "";
completion_index = 0;
_update_completion_candidates();
@@ -4617,10 +4727,11 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("_push_current_op"), &TextEdit::_push_current_op);
ClassDB::bind_method(D_METHOD("_click_selection_held"), &TextEdit::_click_selection_held);
ClassDB::bind_method(D_METHOD("_toggle_draw_caret"), &TextEdit::_toggle_draw_caret);
+ ClassDB::bind_method(D_METHOD("_v_scroll_input"), &TextEdit::_v_scroll_input);
- BIND_CONSTANT(SEARCH_MATCH_CASE);
- BIND_CONSTANT(SEARCH_WHOLE_WORDS);
- BIND_CONSTANT(SEARCH_BACKWARDS);
+ BIND_ENUM_CONSTANT(SEARCH_MATCH_CASE);
+ BIND_ENUM_CONSTANT(SEARCH_WHOLE_WORDS);
+ BIND_ENUM_CONSTANT(SEARCH_BACKWARDS);
/*
ClassDB::bind_method(D_METHOD("delete_char"),&TextEdit::delete_char);
@@ -4678,6 +4789,11 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_syntax_coloring", "enable"), &TextEdit::set_syntax_coloring);
ClassDB::bind_method(D_METHOD("is_syntax_coloring_enabled"), &TextEdit::is_syntax_coloring_enabled);
+ ClassDB::bind_method(D_METHOD("set_smooth_scroll_enable", "enable"), &TextEdit::set_smooth_scroll_enabled);
+ ClassDB::bind_method(D_METHOD("is_smooth_scroll_enabled"), &TextEdit::is_smooth_scroll_enabled);
+ ClassDB::bind_method(D_METHOD("set_v_scroll_speed", "speed"), &TextEdit::set_v_scroll_speed);
+ ClassDB::bind_method(D_METHOD("get_v_scroll_speed"), &TextEdit::get_v_scroll_speed);
+
ClassDB::bind_method(D_METHOD("add_keyword_color", "keyword", "color"), &TextEdit::add_keyword_color);
ClassDB::bind_method(D_METHOD("add_color_region", "begin_key", "end_key", "color", "line_only"), &TextEdit::add_color_region, DEFVAL(false));
ClassDB::bind_method(D_METHOD("clear_colors"), &TextEdit::clear_colors);
@@ -4687,6 +4803,8 @@ void TextEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "syntax_highlighting"), "set_syntax_coloring", "is_syntax_coloring_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_line_numbers"), "set_show_line_numbers", "is_show_line_numbers_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "highlight_all_occurrences"), "set_highlight_all_occurrences", "is_highlight_all_occurrences_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smooth_scrolling"), "set_smooth_scroll_enable", "is_smooth_scroll_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_scroll_speed"), "set_v_scroll_speed", "get_v_scroll_speed");
ADD_GROUP("Caret", "caret_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_block_mode"), "cursor_set_block_mode", "cursor_is_block_mode");
@@ -4699,13 +4817,13 @@ void TextEdit::_bind_methods() {
ADD_SIGNAL(MethodInfo("breakpoint_toggled", PropertyInfo(Variant::INT, "row")));
ADD_SIGNAL(MethodInfo("symbol_lookup", PropertyInfo(Variant::STRING, "symbol"), PropertyInfo(Variant::INT, "row"), PropertyInfo(Variant::INT, "column")));
- BIND_CONSTANT(MENU_CUT);
- BIND_CONSTANT(MENU_COPY);
- BIND_CONSTANT(MENU_PASTE);
- BIND_CONSTANT(MENU_CLEAR);
- BIND_CONSTANT(MENU_SELECT_ALL);
- BIND_CONSTANT(MENU_UNDO);
- BIND_CONSTANT(MENU_MAX);
+ BIND_ENUM_CONSTANT(MENU_CUT);
+ BIND_ENUM_CONSTANT(MENU_COPY);
+ BIND_ENUM_CONSTANT(MENU_PASTE);
+ BIND_ENUM_CONSTANT(MENU_CLEAR);
+ BIND_ENUM_CONSTANT(MENU_SELECT_ALL);
+ BIND_ENUM_CONSTANT(MENU_UNDO);
+ BIND_ENUM_CONSTANT(MENU_MAX);
GLOBAL_DEF("gui/timers/text_edit_idle_detect_sec", 3);
}
@@ -4747,6 +4865,8 @@ TextEdit::TextEdit() {
h_scroll->connect("value_changed", this, "_scroll_moved");
v_scroll->connect("value_changed", this, "_scroll_moved");
+ v_scroll->connect("scrolling", this, "_v_scroll_input");
+
cursor_changed_dirty = false;
text_changed_dirty = false;
@@ -4776,24 +4896,6 @@ TextEdit::TextEdit() {
click_select_held->set_wait_time(0.05);
click_select_held->connect("timeout", this, "_click_selection_held");
-#if 0
- syntax_coloring=true;
- keywords["void"]=Color(0.3,0.0,0.1);
- keywords["int"]=Color(0.3,0.0,0.1);
- keywords["function"]=Color(0.3,0.0,0.1);
- keywords["class"]=Color(0.3,0.0,0.1);
- keywords["extends"]=Color(0.3,0.0,0.1);
- keywords["constructor"]=Color(0.3,0.0,0.1);
- symbol_color=Color(0.1,0.0,0.3,1.0);
-
- color_regions.push_back(ColorRegion("/*","*/",Color(0.4,0.6,0,4)));
- color_regions.push_back(ColorRegion("//","",Color(0.6,0.6,0.4)));
- color_regions.push_back(ColorRegion("\"","\"",Color(0.4,0.7,0.7)));
- color_regions.push_back(ColorRegion("'","'",Color(0.4,0.8,0.8)));
- color_regions.push_back(ColorRegion("#","",Color(0.2,1.0,0.2)));
-
-#endif
-
current_op.type = TextOperation::TYPE_NONE;
undo_enabled = true;
undo_stack_pos = NULL;
@@ -4823,6 +4925,10 @@ TextEdit::TextEdit() {
insert_mode = false;
window_has_focus = true;
select_identifiers_enabled = false;
+ smooth_scroll_enabled = false;
+ scrolling = false;
+ target_v_scroll = 0;
+ v_scroll_speed = 80;
raised_from_completion = false;
diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h
index afb4b1c547..68ef559f46 100644
--- a/scene/gui/text_edit.h
+++ b/scene/gui/text_edit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -152,7 +152,7 @@ class TextEdit : public Control {
int get_line_width(int p_line) const;
int get_max_width() const;
const Map<int, ColorRegionInfo> &get_color_region_info(int p_line);
- void set(int p_line, const String &p_string);
+ void set(int p_line, const String &p_text);
void set_marked(int p_line, bool p_marked) { text[p_line].marked = p_marked; }
bool is_marked(int p_line) const { return text[p_line].marked; }
void set_breakpoint(int p_line, bool p_breakpoint) { text[p_line].breakpoint = p_breakpoint; }
@@ -205,6 +205,7 @@ class TextEdit : public Control {
Vector<String> completion_strings;
Vector<String> completion_options;
bool completion_active;
+ bool completion_forced;
String completion_current;
String completion_base;
int completion_index;
@@ -256,6 +257,11 @@ class TextEdit : public Control {
bool insert_mode;
bool select_identifiers_enabled;
+ bool smooth_scroll_enabled;
+ bool scrolling;
+ float target_v_scroll;
+ float v_scroll_speed;
+
bool raised_from_completion;
String highlighted_word;
@@ -288,12 +294,13 @@ class TextEdit : public Control {
int get_char_count();
- int get_char_pos_for(int p_px, String p_pos) const;
- int get_column_x_offset(int p_column, String p_pos);
+ int get_char_pos_for(int p_px, String p_str) const;
+ int get_column_x_offset(int p_char, String p_str);
void adjust_viewport_to_cursor();
void _scroll_moved(double);
void _update_scrollbars();
+ void _v_scroll_input();
void _click_selection_held();
void _pre_shift_selection();
@@ -320,7 +327,7 @@ class TextEdit : public Control {
/* super internal api, undo/redo builds on it */
- void _base_insert_text(int p_line, int p_column, const String &p_text, int &r_end_line, int &r_end_column);
+ void _base_insert_text(int p_line, int p_char, const String &p_text, int &r_end_line, int &r_end_column);
String _base_get_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column) const;
void _base_remove_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column);
@@ -339,10 +346,10 @@ class TextEdit : public Control {
protected:
virtual String get_tooltip(const Point2 &p_pos) const;
- void _insert_text(int p_line, int p_column, const String &p_text, int *r_end_line = NULL, int *r_end_char = NULL);
+ void _insert_text(int p_line, int p_char, const String &p_text, int *r_end_line = NULL, int *r_end_char = NULL);
void _remove_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column);
void _insert_text_at_cursor(const String &p_text);
- void _gui_input(const Ref<InputEvent> &p_input);
+ void _gui_input(const Ref<InputEvent> &p_gui_input);
void _notification(int p_what);
void _consume_pair_symbol(CharType ch);
@@ -487,6 +494,12 @@ public:
int get_h_scroll() const;
void set_h_scroll(int p_scroll);
+ void set_smooth_scroll_enabled(bool p_enable);
+ bool is_smooth_scroll_enabled() const;
+
+ void set_v_scroll_speed(float p_speed);
+ float get_v_scroll_speed() const;
+
uint32_t get_version() const;
uint32_t get_saved_version() const;
void tag_saved_version();
@@ -510,7 +523,7 @@ public:
void set_tooltip_request_func(Object *p_obj, const StringName &p_function, const Variant &p_udata);
void set_completion(bool p_enabled, const Vector<String> &p_prefixes);
- void code_complete(const Vector<String> &p_strings);
+ void code_complete(const Vector<String> &p_strings, bool p_forced = false);
void set_code_hint(const String &p_hint);
void query_code_comple();
@@ -528,4 +541,7 @@ public:
~TextEdit();
};
+VARIANT_ENUM_CAST(TextEdit::MenuItems);
+VARIANT_ENUM_CAST(TextEdit::SearchFlags);
+
#endif // TEXT_EDIT_H
diff --git a/scene/gui/texture_button.cpp b/scene/gui/texture_button.cpp
index 00849c4e5a..77bc876201 100644
--- a/scene/gui/texture_button.cpp
+++ b/scene/gui/texture_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -208,13 +208,13 @@ void TextureButton::_bind_methods() {
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "expand", PROPERTY_HINT_RESOURCE_TYPE, "bool"), "set_expand", "get_expand");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "stretch_mode", PROPERTY_HINT_ENUM, "Scale,Tile,Keep,Keep Centered,Keep Aspect,Keep Aspect Centered,Keep Aspect Covered"), "set_stretch_mode", "get_stretch_mode");
- BIND_CONSTANT(STRETCH_SCALE);
- BIND_CONSTANT(STRETCH_TILE);
- BIND_CONSTANT(STRETCH_KEEP);
- BIND_CONSTANT(STRETCH_KEEP_CENTERED);
- BIND_CONSTANT(STRETCH_KEEP_ASPECT);
- BIND_CONSTANT(STRETCH_KEEP_ASPECT_CENTERED);
- BIND_CONSTANT(STRETCH_KEEP_ASPECT_COVERED);
+ BIND_ENUM_CONSTANT(STRETCH_SCALE);
+ BIND_ENUM_CONSTANT(STRETCH_TILE);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_CENTERED);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_ASPECT);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_ASPECT_CENTERED);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_ASPECT_COVERED);
}
void TextureButton::set_normal_texture(const Ref<Texture> &p_normal) {
@@ -286,8 +286,8 @@ void TextureButton::set_expand(bool p_expand) {
update();
}
-void TextureButton::set_stretch_mode(StretchMode p_mode) {
- stretch_mode = p_mode;
+void TextureButton::set_stretch_mode(StretchMode p_stretch_mode) {
+ stretch_mode = p_stretch_mode;
update();
}
diff --git a/scene/gui/texture_button.h b/scene/gui/texture_button.h
index 9c31912a32..94f372decf 100644
--- a/scene/gui/texture_button.h
+++ b/scene/gui/texture_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -69,7 +69,7 @@ public:
void set_hover_texture(const Ref<Texture> &p_hover);
void set_disabled_texture(const Ref<Texture> &p_disabled);
void set_focused_texture(const Ref<Texture> &p_focused);
- void set_click_mask(const Ref<BitMap> &p_image);
+ void set_click_mask(const Ref<BitMap> &p_click_mask);
Ref<Texture> get_normal_texture() const;
Ref<Texture> get_pressed_texture() const;
@@ -81,7 +81,7 @@ public:
bool get_expand() const;
void set_expand(bool p_expand);
- void set_stretch_mode(StretchMode stretch_mode);
+ void set_stretch_mode(StretchMode p_stretch_mode);
StretchMode get_stretch_mode() const;
TextureButton();
diff --git a/scene/gui/texture_progress.cpp b/scene/gui/texture_progress.cpp
index 081c7ddb73..aad7c6b96b 100644
--- a/scene/gui/texture_progress.cpp
+++ b/scene/gui/texture_progress.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,8 @@
/*************************************************************************/
#include "texture_progress.h"
+#include "engine.h"
+
void TextureProgress::set_under_texture(const Ref<Texture> &p_texture) {
under = p_texture;
@@ -55,9 +57,33 @@ Ref<Texture> TextureProgress::get_over_texture() const {
return over;
}
+void TextureProgress::set_stretch_margin(Margin p_margin, int p_size) {
+ ERR_FAIL_INDEX(p_margin, 4);
+ stretch_margin[p_margin] = p_size;
+ update();
+ minimum_size_changed();
+}
+
+int TextureProgress::get_stretch_margin(Margin p_margin) const {
+ ERR_FAIL_INDEX_V(p_margin, 4, 0);
+ return stretch_margin[p_margin];
+}
+
+void TextureProgress::set_nine_patch_stretch(bool p_stretch) {
+ nine_patch_stretch = p_stretch;
+ update();
+ minimum_size_changed();
+}
+
+bool TextureProgress::get_nine_patch_stretch() const {
+ return nine_patch_stretch;
+}
+
Size2 TextureProgress::get_minimum_size() const {
- if (under.is_valid())
+ if (nine_patch_stretch)
+ return Size2(stretch_margin[MARGIN_LEFT] + stretch_margin[MARGIN_RIGHT], stretch_margin[MARGIN_TOP] + stretch_margin[MARGIN_BOTTOM]);
+ else if (under.is_valid())
return under->get_size();
else if (over.is_valid())
return over->get_size();
@@ -120,80 +146,165 @@ Point2 TextureProgress::get_relative_center() {
return p;
}
+void TextureProgress::draw_nine_patch_stretched(const Ref<Texture> &p_texture, FillMode p_mode, double p_ratio) {
+ Vector2 texture_size = p_texture->get_size();
+ Vector2 topleft = Vector2(stretch_margin[MARGIN_LEFT], stretch_margin[MARGIN_TOP]);
+ Vector2 bottomright = Vector2(stretch_margin[MARGIN_RIGHT], stretch_margin[MARGIN_BOTTOM]);
+
+ Rect2 src_rect = Rect2(Point2(), texture_size);
+ Rect2 dst_rect = Rect2(Point2(), get_size());
+
+ if (p_ratio < 1.0) {
+ // Drawing a partially-filled 9-patch is a little tricky -
+ // texture is divided by 3 sections toward fill direction,
+ // then middle section is streching while the other two aren't.
+
+ double width_total = 0.0;
+ double width_texture = 0.0;
+ double first_section_size = 0.0;
+ double last_section_size = 0.0;
+ switch (mode) {
+ case FILL_LEFT_TO_RIGHT:
+ case FILL_RIGHT_TO_LEFT: {
+ width_total = dst_rect.size.x;
+ width_texture = texture_size.x;
+ first_section_size = topleft.x;
+ last_section_size = bottomright.x;
+ } break;
+ case FILL_TOP_TO_BOTTOM:
+ case FILL_BOTTOM_TO_TOP: {
+ width_total = dst_rect.size.y;
+ width_texture = texture_size.y;
+ first_section_size = topleft.y;
+ last_section_size = bottomright.y;
+ } break;
+ }
+
+ double width_filled = width_total * p_ratio;
+ double middle_section_size = MAX(0.0, width_texture - first_section_size - last_section_size);
+
+ middle_section_size *= MIN(1.0, (MAX(0.0, width_filled - first_section_size) / MAX(1.0, width_total - first_section_size - last_section_size)));
+ last_section_size = MAX(0.0, last_section_size - (width_total - width_filled));
+ width_texture = MIN(width_texture, first_section_size + middle_section_size + last_section_size);
+
+ switch (mode) {
+ case FILL_LEFT_TO_RIGHT: {
+ src_rect.size.x = width_texture;
+ dst_rect.size.x = width_filled;
+ bottomright.x = last_section_size;
+ } break;
+ case FILL_RIGHT_TO_LEFT: {
+ src_rect.position.x += src_rect.size.x - width_texture;
+ src_rect.size.x = width_texture;
+ dst_rect.position.x += width_total - width_filled;
+ dst_rect.size.x = width_filled;
+ topleft.x = last_section_size;
+ } break;
+ case FILL_TOP_TO_BOTTOM: {
+ src_rect.size.y = width_texture;
+ dst_rect.size.y = width_filled;
+ bottomright.y = last_section_size;
+ } break;
+ case FILL_BOTTOM_TO_TOP: {
+ src_rect.position.y += src_rect.size.y - width_texture;
+ src_rect.size.y = width_texture;
+ dst_rect.position.y += width_total - width_filled;
+ dst_rect.size.y = width_filled;
+ topleft.y = last_section_size;
+ } break;
+ }
+ }
+
+ RID ci = get_canvas_item();
+ VS::get_singleton()->canvas_item_add_nine_patch(ci, dst_rect, src_rect, p_texture->get_rid(), topleft, bottomright);
+}
+
void TextureProgress::_notification(int p_what) {
const float corners[12] = { -0.125, -0.375, -0.625, -0.875, 0.125, 0.375, 0.625, 0.875, 1.125, 1.375, 1.625, 1.875 };
switch (p_what) {
case NOTIFICATION_DRAW: {
- if (under.is_valid())
- draw_texture(under, Point2());
- if (progress.is_valid()) {
- Size2 s = progress->get_size();
- switch (mode) {
- case FILL_LEFT_TO_RIGHT: {
- Rect2 region = Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y));
- draw_texture_rect_region(progress, region, region);
- } break;
- case FILL_RIGHT_TO_LEFT: {
- Rect2 region = Rect2(Point2(s.x - s.x * get_as_ratio(), 0), Size2(s.x * get_as_ratio(), s.y));
- draw_texture_rect_region(progress, region, region);
- } break;
- case FILL_TOP_TO_BOTTOM: {
- Rect2 region = Rect2(Point2(), Size2(s.x, s.y * get_as_ratio()));
- draw_texture_rect_region(progress, region, region);
- } break;
- case FILL_BOTTOM_TO_TOP: {
- Rect2 region = Rect2(Point2(0, s.y - s.y * get_as_ratio()), Size2(s.x, s.y * get_as_ratio()));
- draw_texture_rect_region(progress, region, region);
- } break;
- case FILL_CLOCKWISE:
- case FILL_COUNTER_CLOCKWISE: {
- float val = get_as_ratio() * rad_max_degrees / 360;
- if (val == 1) {
- Rect2 region = Rect2(Point2(), s);
+ if (nine_patch_stretch && (mode == FILL_LEFT_TO_RIGHT || mode == FILL_RIGHT_TO_LEFT || mode == FILL_TOP_TO_BOTTOM || mode == FILL_BOTTOM_TO_TOP)) {
+ if (under.is_valid()) {
+ draw_nine_patch_stretched(under, FILL_LEFT_TO_RIGHT, 1.0);
+ }
+ if (progress.is_valid()) {
+ draw_nine_patch_stretched(progress, mode, get_as_ratio());
+ }
+ if (over.is_valid()) {
+ draw_nine_patch_stretched(over, FILL_LEFT_TO_RIGHT, 1.0);
+ }
+ } else {
+ if (under.is_valid())
+ draw_texture(under, Point2());
+ if (progress.is_valid()) {
+ Size2 s = progress->get_size();
+ switch (mode) {
+ case FILL_LEFT_TO_RIGHT: {
+ Rect2 region = Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y));
+ draw_texture_rect_region(progress, region, region);
+ } break;
+ case FILL_RIGHT_TO_LEFT: {
+ Rect2 region = Rect2(Point2(s.x - s.x * get_as_ratio(), 0), Size2(s.x * get_as_ratio(), s.y));
draw_texture_rect_region(progress, region, region);
- } else if (val != 0) {
- Array pts;
- float direction = mode == FILL_CLOCKWISE ? 1 : -1;
- float start = rad_init_angle / 360;
- float end = start + direction * val;
- pts.append(start);
- pts.append(end);
- float from = MIN(start, end);
- float to = MAX(start, end);
- for (int i = 0; i < 12; i++)
- if (corners[i] > from && corners[i] < to)
- pts.append(corners[i]);
- pts.sort();
- Vector<Point2> uvs;
- Vector<Point2> points;
- uvs.push_back(get_relative_center());
- points.push_back(Point2(s.x * get_relative_center().x, s.y * get_relative_center().y));
- for (int i = 0; i < pts.size(); i++) {
- Point2 uv = unit_val_to_uv(pts[i]);
- if (uvs.find(uv) >= 0)
- continue;
- uvs.push_back(uv);
- points.push_back(Point2(uv.x * s.x, uv.y * s.y));
+ } break;
+ case FILL_TOP_TO_BOTTOM: {
+ Rect2 region = Rect2(Point2(), Size2(s.x, s.y * get_as_ratio()));
+ draw_texture_rect_region(progress, region, region);
+ } break;
+ case FILL_BOTTOM_TO_TOP: {
+ Rect2 region = Rect2(Point2(0, s.y - s.y * get_as_ratio()), Size2(s.x, s.y * get_as_ratio()));
+ draw_texture_rect_region(progress, region, region);
+ } break;
+ case FILL_CLOCKWISE:
+ case FILL_COUNTER_CLOCKWISE: {
+ float val = get_as_ratio() * rad_max_degrees / 360;
+ if (val == 1) {
+ Rect2 region = Rect2(Point2(), s);
+ draw_texture_rect_region(progress, region, region);
+ } else if (val != 0) {
+ Array pts;
+ float direction = mode == FILL_CLOCKWISE ? 1 : -1;
+ float start = rad_init_angle / 360;
+ float end = start + direction * val;
+ pts.append(start);
+ pts.append(end);
+ float from = MIN(start, end);
+ float to = MAX(start, end);
+ for (int i = 0; i < 12; i++)
+ if (corners[i] > from && corners[i] < to)
+ pts.append(corners[i]);
+ pts.sort();
+ Vector<Point2> uvs;
+ Vector<Point2> points;
+ uvs.push_back(get_relative_center());
+ points.push_back(Point2(s.x * get_relative_center().x, s.y * get_relative_center().y));
+ for (int i = 0; i < pts.size(); i++) {
+ Point2 uv = unit_val_to_uv(pts[i]);
+ if (uvs.find(uv) >= 0)
+ continue;
+ uvs.push_back(uv);
+ points.push_back(Point2(uv.x * s.x, uv.y * s.y));
+ }
+ draw_polygon(points, Vector<Color>(), uvs, progress);
}
- draw_polygon(points, Vector<Color>(), uvs, progress);
- }
- if (get_tree()->is_editor_hint()) {
- Point2 p = progress->get_size();
- p.x *= get_relative_center().x;
- p.y *= get_relative_center().y;
- p = p.floor();
- draw_line(p - Point2(8, 0), p + Point2(8, 0), Color(0.9, 0.5, 0.5), 2);
- draw_line(p - Point2(0, 8), p + Point2(0, 8), Color(0.9, 0.5, 0.5), 2);
- }
- } break;
- default:
- draw_texture_rect_region(progress, Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)), Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)));
+ if (Engine::get_singleton()->is_editor_hint()) {
+ Point2 p = progress->get_size();
+ p.x *= get_relative_center().x;
+ p.y *= get_relative_center().y;
+ p = p.floor();
+ draw_line(p - Point2(8, 0), p + Point2(8, 0), Color(0.9, 0.5, 0.5), 2);
+ draw_line(p - Point2(0, 8), p + Point2(0, 8), Color(0.9, 0.5, 0.5), 2);
+ }
+ } break;
+ default:
+ draw_texture_rect_region(progress, Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)), Rect2(Point2(), Size2(s.x * get_as_ratio(), s.y)));
+ }
}
+ if (over.is_valid())
+ draw_texture(over, Point2());
}
- if (over.is_valid())
- draw_texture(over, Point2());
} break;
}
@@ -263,6 +374,12 @@ void TextureProgress::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_fill_degrees", "mode"), &TextureProgress::set_fill_degrees);
ClassDB::bind_method(D_METHOD("get_fill_degrees"), &TextureProgress::get_fill_degrees);
+ ClassDB::bind_method(D_METHOD("set_stretch_margin", "margin", "value"), &TextureProgress::set_stretch_margin);
+ ClassDB::bind_method(D_METHOD("get_stretch_margin", "margin"), &TextureProgress::get_stretch_margin);
+
+ ClassDB::bind_method(D_METHOD("set_nine_patch_stretch", "stretch"), &TextureProgress::set_nine_patch_stretch);
+ ClassDB::bind_method(D_METHOD("get_nine_patch_stretch"), &TextureProgress::get_nine_patch_stretch);
+
ADD_GROUP("Textures", "texture_");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_under", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_under_texture", "get_under_texture");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_over", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_over_texture", "get_over_texture");
@@ -272,13 +389,19 @@ void TextureProgress::_bind_methods() {
ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "radial_initial_angle", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider"), "set_radial_initial_angle", "get_radial_initial_angle");
ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "radial_fill_degrees", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider"), "set_fill_degrees", "get_fill_degrees");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "radial_center_offset"), "set_radial_center_offset", "get_radial_center_offset");
-
- BIND_CONSTANT(FILL_LEFT_TO_RIGHT);
- BIND_CONSTANT(FILL_RIGHT_TO_LEFT);
- BIND_CONSTANT(FILL_TOP_TO_BOTTOM);
- BIND_CONSTANT(FILL_BOTTOM_TO_TOP);
- BIND_CONSTANT(FILL_CLOCKWISE);
- BIND_CONSTANT(FILL_COUNTER_CLOCKWISE);
+ ADD_GROUP("Stretch", "stretch_");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "nine_patch_stretch"), "set_nine_patch_stretch", "get_nine_patch_stretch");
+ ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "stretch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", MARGIN_LEFT);
+ ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "stretch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", MARGIN_TOP);
+ ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "stretch_margin_right", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", MARGIN_RIGHT);
+ ADD_PROPERTYINZ(PropertyInfo(Variant::INT, "stretch_margin_bottom", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", MARGIN_BOTTOM);
+
+ BIND_ENUM_CONSTANT(FILL_LEFT_TO_RIGHT);
+ BIND_ENUM_CONSTANT(FILL_RIGHT_TO_LEFT);
+ BIND_ENUM_CONSTANT(FILL_TOP_TO_BOTTOM);
+ BIND_ENUM_CONSTANT(FILL_BOTTOM_TO_TOP);
+ BIND_ENUM_CONSTANT(FILL_CLOCKWISE);
+ BIND_ENUM_CONSTANT(FILL_COUNTER_CLOCKWISE);
}
TextureProgress::TextureProgress() {
@@ -287,4 +410,10 @@ TextureProgress::TextureProgress() {
rad_center_off = Point2();
rad_max_degrees = 360;
set_mouse_filter(MOUSE_FILTER_PASS);
+
+ nine_patch_stretch = false;
+ stretch_margin[MARGIN_LEFT] = 0;
+ stretch_margin[MARGIN_RIGHT] = 0;
+ stretch_margin[MARGIN_BOTTOM] = 0;
+ stretch_margin[MARGIN_TOP] = 0;
}
diff --git a/scene/gui/texture_progress.h b/scene/gui/texture_progress.h
index c0c2779cf9..04096d35e3 100644
--- a/scene/gui/texture_progress.h
+++ b/scene/gui/texture_progress.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,6 +75,12 @@ public:
void set_over_texture(const Ref<Texture> &p_texture);
Ref<Texture> get_over_texture() const;
+ void set_stretch_margin(Margin p_margin, int p_size);
+ int get_stretch_margin(Margin p_margin) const;
+
+ void set_nine_patch_stretch(bool p_stretch);
+ bool get_nine_patch_stretch() const;
+
Size2 get_minimum_size() const;
TextureProgress();
@@ -84,9 +90,14 @@ private:
float rad_init_angle;
float rad_max_degrees;
Point2 rad_center_off;
+ bool nine_patch_stretch;
+ int stretch_margin[4];
Point2 unit_val_to_uv(float val);
Point2 get_relative_center();
+ void draw_nine_patch_stretched(const Ref<Texture> &p_texture, FillMode p_mode, double p_ratio);
};
+VARIANT_ENUM_CAST(TextureProgress::FillMode);
+
#endif // TEXTURE_PROGRESS_H
diff --git a/scene/gui/texture_rect.cpp b/scene/gui/texture_rect.cpp
index 92a3db6a74..38f90fe7b5 100644
--- a/scene/gui/texture_rect.cpp
+++ b/scene/gui/texture_rect.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -112,14 +112,14 @@ void TextureRect::_bind_methods() {
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "expand"), "set_expand", "has_expand");
ADD_PROPERTYNO(PropertyInfo(Variant::INT, "stretch_mode", PROPERTY_HINT_ENUM, "Scale On Expand (Compat),Scale,Tile,Keep,Keep Centered,Keep Aspect,Keep Aspect Centered,Keep Aspect Covered"), "set_stretch_mode", "get_stretch_mode");
- BIND_CONSTANT(STRETCH_SCALE_ON_EXPAND);
- BIND_CONSTANT(STRETCH_SCALE);
- BIND_CONSTANT(STRETCH_TILE);
- BIND_CONSTANT(STRETCH_KEEP);
- BIND_CONSTANT(STRETCH_KEEP_CENTERED);
- BIND_CONSTANT(STRETCH_KEEP_ASPECT);
- BIND_CONSTANT(STRETCH_KEEP_ASPECT_CENTERED);
- BIND_CONSTANT(STRETCH_KEEP_ASPECT_COVERED);
+ BIND_ENUM_CONSTANT(STRETCH_SCALE_ON_EXPAND);
+ BIND_ENUM_CONSTANT(STRETCH_SCALE);
+ BIND_ENUM_CONSTANT(STRETCH_TILE);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_CENTERED);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_ASPECT);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_ASPECT_CENTERED);
+ BIND_ENUM_CONSTANT(STRETCH_KEEP_ASPECT_COVERED);
}
void TextureRect::set_texture(const Ref<Texture> &p_tex) {
diff --git a/scene/gui/texture_rect.h b/scene/gui/texture_rect.h
index dcc6c3f9bd..8a2b715488 100644
--- a/scene/gui/texture_rect.h
+++ b/scene/gui/texture_rect.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/tool_button.cpp b/scene/gui/tool_button.cpp
index 5fc4b6ecf8..4dfa3d8f37 100644
--- a/scene/gui/tool_button.cpp
+++ b/scene/gui/tool_button.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/tool_button.h b/scene/gui/tool_button.h
index d243b5559f..4c5ea685de 100644
--- a/scene/gui/tool_button.h
+++ b/scene/gui/tool_button.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index fa499ff277..5e15bceb7d 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "tree.h"
+
#include "os/input.h"
#include "os/keyboard.h"
#include "os/os.h"
@@ -752,12 +753,12 @@ void TreeItem::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_disable_folding", "disable"), &TreeItem::set_disable_folding);
ClassDB::bind_method(D_METHOD("is_folding_disabled"), &TreeItem::is_folding_disabled);
- BIND_CONSTANT(CELL_MODE_STRING);
- BIND_CONSTANT(CELL_MODE_CHECK);
- BIND_CONSTANT(CELL_MODE_RANGE);
- BIND_CONSTANT(CELL_MODE_RANGE_EXPRESSION);
- BIND_CONSTANT(CELL_MODE_ICON);
- BIND_CONSTANT(CELL_MODE_CUSTOM);
+ BIND_ENUM_CONSTANT(CELL_MODE_STRING);
+ BIND_ENUM_CONSTANT(CELL_MODE_CHECK);
+ BIND_ENUM_CONSTANT(CELL_MODE_RANGE);
+ BIND_ENUM_CONSTANT(CELL_MODE_RANGE_EXPRESSION);
+ BIND_ENUM_CONSTANT(CELL_MODE_ICON);
+ BIND_ENUM_CONSTANT(CELL_MODE_CUSTOM);
}
void TreeItem::clear_children() {
@@ -990,41 +991,10 @@ void Tree::draw_item_rect(const TreeItem::Cell &p_cell, const Rect2i &p_rect, co
rect.size.x -= bmsize.x + cache.hseparation;
}
- /*
- if (p_tool)
- rect.size.x-=Math::floor(rect.size.y/2);
- */
-
rect.position.y += Math::floor((rect.size.y - font->get_height()) / 2.0) + font->get_ascent();
font->draw(ci, rect.position, text, p_color, rect.size.x);
}
-#if 0
-void Tree::draw_item_text(String p_text,const Ref<Texture>& p_icon,int p_icon_max_w,bool p_tool,Rect2i p_rect,const Color& p_color) {
-
- RID ci = get_canvas_item();
- if (!p_icon.is_null()) {
- Size2i bmsize = p_icon->get_size();
- if (p_icon_max_w>0 && bmsize.width > p_icon_max_w) {
- bmsize.height = bmsize.height * p_icon_max_w / bmsize.width;
- bmsize.width=p_icon_max_w;
- }
-
- draw_texture_rect(p_icon,Rect2(p_rect.pos + Size2i(0,Math::floor((p_rect.size.y-bmsize.y)/2)),bmsize));
- p_rect.pos.x+=bmsize.x+cache.hseparation;
- p_rect.size.x-=bmsize.x+cache.hseparation;
-
- }
-
- if (p_tool)
- p_rect.size.x-=Math::floor(p_rect.size.y/2);
-
- Ref<Font> font = cache.font;
-
- p_rect.pos.y+=Math::floor((p_rect.size.y-font->get_height())/2.0) +font->get_ascent();
- font->draw(ci,p_rect.pos,p_text,p_color,p_rect.size.x);
-}
-#endif
int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 &p_draw_size, TreeItem *p_item) {
if (p_pos.y - cache.offset.y > (p_draw_size.height))
@@ -1455,11 +1425,10 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c
if (select_mode == SELECT_ROW) {
- if (p_selected == p_current && !c.selected) {
+ if (p_selected == p_current && (!c.selected || allow_reselect)) {
c.selected = true;
selected_item = p_selected;
selected_col = 0;
- selected_item = p_selected;
if (!emitted_row) {
emit_signal("item_selected");
emitted_row = true;
@@ -1478,7 +1447,7 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c
if (!r_in_range && &selected_cell == &c) {
- if (!selected_cell.selected || force_select_on_already_selected) {
+ if (!selected_cell.selected || allow_reselect) {
selected_cell.selected = true;
@@ -1743,7 +1712,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool
/* editing */
- bool bring_up_editor = force_select_on_already_selected ? (c.selected && already_selected) : c.selected;
+ bool bring_up_editor = allow_reselect ? (c.selected && already_selected) : c.selected;
String editor_text = c.text;
switch (c.mode) {
@@ -2474,22 +2443,24 @@ void Tree::_gui_input(Ref<InputEvent> p_event) {
Point2 pos = b->get_position() - bg->get_offset();
cache.click_type = Cache::CLICK_NONE;
- if (show_column_titles && b->get_button_index() == BUTTON_LEFT) {
+ if (show_column_titles) {
pos.y -= _get_title_button_height();
if (pos.y < 0) {
- pos.x += cache.offset.x;
- int len = 0;
- for (int i = 0; i < columns.size(); i++) {
-
- len += get_column_width(i);
- if (pos.x < len) {
-
- cache.click_type = Cache::CLICK_TITLE;
- cache.click_index = i;
- //cache.click_id=;
- update();
- break;
+ if (b->get_button_index() == BUTTON_LEFT) {
+ pos.x += cache.offset.x;
+ int len = 0;
+ for (int i = 0; i < columns.size(); i++) {
+
+ len += get_column_width(i);
+ if (pos.x < len) {
+
+ cache.click_type = Cache::CLICK_TITLE;
+ cache.click_index = i;
+ //cache.click_id=;
+ update();
+ break;
+ }
}
}
break;
@@ -2869,8 +2840,8 @@ TreeItem *Tree::create_item(TreeItem *p_parent) {
TreeItem *ti = memnew(TreeItem(this));
- ti->cells.resize(columns.size());
ERR_FAIL_COND_V(!ti, NULL);
+ ti->cells.resize(columns.size());
if (p_parent) {
@@ -3557,16 +3528,6 @@ int Tree::get_drop_mode_flags() const {
return drop_mode_flags;
}
-void Tree::set_single_select_cell_editing_only_when_already_selected(bool p_enable) {
-
- force_select_on_already_selected = p_enable;
-}
-
-bool Tree::get_single_select_cell_editing_only_when_already_selected() const {
-
- return force_select_on_already_selected;
-}
-
void Tree::set_edit_checkbox_cell_only_when_checkbox_is_pressed(bool p_enable) {
force_edit_checkbox_only_on_checkbox = p_enable;
@@ -3587,6 +3548,15 @@ bool Tree::get_allow_rmb_select() const {
return allow_rmb_select;
}
+void Tree::set_allow_reselect(bool p_allow) {
+ allow_reselect = p_allow;
+}
+
+bool Tree::get_allow_reselect() const {
+
+ return allow_reselect;
+}
+
void Tree::_bind_methods() {
ClassDB::bind_method(D_METHOD("_range_click_timeout"), &Tree::_range_click_timeout);
@@ -3640,8 +3610,8 @@ void Tree::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_allow_rmb_select", "allow"), &Tree::set_allow_rmb_select);
ClassDB::bind_method(D_METHOD("get_allow_rmb_select"), &Tree::get_allow_rmb_select);
- ClassDB::bind_method(D_METHOD("set_single_select_cell_editing_only_when_already_selected", "enable"), &Tree::set_single_select_cell_editing_only_when_already_selected);
- ClassDB::bind_method(D_METHOD("get_single_select_cell_editing_only_when_already_selected"), &Tree::get_single_select_cell_editing_only_when_already_selected);
+ ClassDB::bind_method(D_METHOD("set_allow_reselect", "allow"), &Tree::set_allow_reselect);
+ ClassDB::bind_method(D_METHOD("get_allow_reselect"), &Tree::get_allow_reselect);
ADD_SIGNAL(MethodInfo("item_selected"));
ADD_SIGNAL(MethodInfo("cell_selected"));
@@ -3659,13 +3629,13 @@ void Tree::_bind_methods() {
ADD_SIGNAL(MethodInfo("item_activated"));
ADD_SIGNAL(MethodInfo("column_title_pressed", PropertyInfo(Variant::INT, "column")));
- BIND_CONSTANT(SELECT_SINGLE);
- BIND_CONSTANT(SELECT_ROW);
- BIND_CONSTANT(SELECT_MULTI);
+ BIND_ENUM_CONSTANT(SELECT_SINGLE);
+ BIND_ENUM_CONSTANT(SELECT_ROW);
+ BIND_ENUM_CONSTANT(SELECT_MULTI);
- BIND_CONSTANT(DROP_MODE_DISABLED);
- BIND_CONSTANT(DROP_MODE_ON_ITEM);
- BIND_CONSTANT(DROP_MODE_INBETWEEN);
+ BIND_ENUM_CONSTANT(DROP_MODE_DISABLED);
+ BIND_ENUM_CONSTANT(DROP_MODE_ON_ITEM);
+ BIND_ENUM_CONSTANT(DROP_MODE_INBETWEEN);
}
Tree::Tree() {
@@ -3751,7 +3721,6 @@ Tree::Tree() {
drop_mode_over = NULL;
drop_mode_section = 0;
single_select_defer = NULL;
- force_select_on_already_selected = false;
allow_rmb_select = false;
force_edit_checkbox_only_on_checkbox = false;
@@ -3760,6 +3729,8 @@ Tree::Tree() {
cache.hover_item = NULL;
cache.hover_cell = -1;
+
+ allow_reselect = false;
}
Tree::~Tree() {
diff --git a/scene/gui/tree.h b/scene/gui/tree.h
index d3715c3c43..1fb1eb2792 100644
--- a/scene/gui/tree.h
+++ b/scene/gui/tree.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -172,7 +172,9 @@ protected:
return d;
}
- void _remove_child(Object *p_child) { remove_child(p_child->cast_to<TreeItem>()); }
+ void _remove_child(Object *p_child) {
+ remove_child(Object::cast_to<TreeItem>(p_child));
+ }
public:
/* cell mode */
@@ -471,7 +473,7 @@ private:
TreeItem *_search_item_text(TreeItem *p_at, const String &p_find, int *r_col, bool p_selectable, bool p_backwards = false);
- TreeItem *_find_item_at_pos(TreeItem *p_current, const Point2 &p_pos, int &r_column, int &h, int &section) const;
+ TreeItem *_find_item_at_pos(TreeItem *p_item, const Point2 &p_pos, int &r_column, int &h, int &section) const;
/* float drag_speed;
float drag_accum;
@@ -490,7 +492,8 @@ private:
bool allow_rmb_select;
bool scrolling;
- bool force_select_on_already_selected;
+ bool allow_reselect;
+
bool force_edit_checkbox_only_on_checkbox;
bool hide_folding;
@@ -503,9 +506,17 @@ protected:
static void _bind_methods();
//bind helpers
- Object *_create_item(Object *p_parent) { return create_item(p_parent->cast_to<TreeItem>()); }
- TreeItem *_get_next_selected(Object *p_item) { return get_next_selected(p_item->cast_to<TreeItem>()); }
- Rect2 _get_item_rect(Object *p_item, int p_column) const { return get_item_rect(p_item->cast_to<TreeItem>(), p_column); }
+ Object *_create_item(Object *p_parent) {
+ return create_item(Object::cast_to<TreeItem>(p_parent));
+ }
+
+ TreeItem *_get_next_selected(Object *p_item) {
+ return get_next_selected(Object::cast_to<TreeItem>(p_item));
+ }
+
+ Rect2 _get_item_rect(Object *p_item, int p_column) const {
+ return get_item_rect(Object::cast_to<TreeItem>(p_item), p_column);
+ }
public:
virtual String get_tooltip(const Point2 &p_pos) const;
@@ -524,7 +535,7 @@ public:
void set_column_expand(int p_column, bool p_expand);
int get_column_width(int p_column) const;
- void set_hide_root(bool p_eanbled);
+ void set_hide_root(bool p_enabled);
TreeItem *get_next_selected(TreeItem *p_item);
TreeItem *get_selected() const;
int get_selected_column() const;
@@ -566,15 +577,15 @@ public:
void set_drop_mode_flags(int p_flags);
int get_drop_mode_flags() const;
- void set_single_select_cell_editing_only_when_already_selected(bool p_enable);
- bool get_single_select_cell_editing_only_when_already_selected() const;
-
void set_edit_checkbox_cell_only_when_checkbox_is_pressed(bool p_enable);
bool get_edit_checkbox_cell_only_when_checkbox_is_pressed() const;
void set_allow_rmb_select(bool p_allow);
bool get_allow_rmb_select() const;
+ void set_allow_reselect(bool p_allow);
+ bool get_allow_reselect() const;
+
void set_value_evaluator(ValueEvaluator *p_evaluator);
Tree();
@@ -582,4 +593,5 @@ public:
};
VARIANT_ENUM_CAST(Tree::SelectMode);
+VARIANT_ENUM_CAST(Tree::DropModeFlags);
#endif
diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp
index 9c018a4e7c..a92155cc4f 100644
--- a/scene/gui/video_player.cpp
+++ b/scene/gui/video_player.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,27 +28,9 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "video_player.h"
+
#include "os/os.h"
#include "servers/audio_server.h"
-/*
-
-int VideoPlayer::InternalStream::get_channel_count() const {
-
- return player->sp_get_channel_count();
-}
-void VideoPlayer::InternalStream::set_mix_rate(int p_rate){
-
- return player->sp_set_mix_rate(p_rate);
-}
-bool VideoPlayer::InternalStream::mix(int32_t *p_buffer,int p_frames){
-
- return player->sp_mix(p_buffer,p_frames);
-}
-void VideoPlayer::InternalStream::update(){
-
- player->sp_update();
-}
-*/
int VideoPlayer::sp_get_channel_count() const {
@@ -69,31 +51,6 @@ bool VideoPlayer::sp_mix(int32_t *p_buffer, int p_frames) {
return false;
}
-void VideoPlayer::sp_update() {
-#if 0
- _THREAD_SAFE_METHOD_
- //update is unused
- if (!paused && playback.is_valid()) {
-
- if (!playback->is_playing()) {
- //stream depleted data, but there's still audio in the ringbuffer
- //check that all this audio has been flushed before stopping the stream
- int to_mix = resampler.get_total() - resampler.get_todo();
- if (to_mix==0) {
- stop();
- return;
- }
-
- return;
- }
-
- int todo =resampler.get_todo();
- int wrote = playback->mix(resampler.get_write_buffer(),todo);
- resampler.write(wrote);
- }
-#endif
-}
-
int VideoPlayer::_audio_mix_callback(void *p_udata, const int16_t *p_data, int p_frames) {
VideoPlayer *vp = (VideoPlayer *)p_udata;
@@ -116,7 +73,7 @@ void VideoPlayer::_notification(int p_notification) {
case NOTIFICATION_ENTER_TREE: {
- if (stream.is_valid() && autoplay && !get_tree()->is_editor_hint()) {
+ if (stream.is_valid() && autoplay && !Engine::get_singleton()->is_editor_hint()) {
play();
}
} break;
@@ -399,7 +356,6 @@ VideoPlayer::VideoPlayer() {
paused = false;
autoplay = false;
expand = true;
- loops = false;
audio_track = 0;
diff --git a/scene/gui/video_player.h b/scene/gui/video_player.h
index 1d70718a6a..b78f3aabe7 100644
--- a/scene/gui/video_player.h
+++ b/scene/gui/video_player.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,23 +38,12 @@ class VideoPlayer : public Control {
GDCLASS(VideoPlayer, Control);
- /* struct InternalStream : public AudioServer::AudioStream {
- VideoPlayer *player;
- virtual int get_channel_count() const;
- virtual void set_mix_rate(int p_rate); //notify the stream of the mix rate
- virtual bool mix(int32_t *p_buffer,int p_frames);
- virtual void update();
- };
-*/
-
- // InternalStream internal_stream;
Ref<VideoStreamPlayback> playback;
Ref<VideoStream> stream;
int sp_get_channel_count() const;
void sp_set_mix_rate(int p_rate); //notify the stream of the mix rate
bool sp_mix(int32_t *p_buffer, int p_frames);
- void sp_update();
RID stream_rid;
@@ -105,7 +94,7 @@ public:
String get_stream_name() const;
float get_stream_pos() const;
- void set_autoplay(bool p_vol);
+ void set_autoplay(bool p_enable);
bool has_autoplay() const;
void set_audio_track(int p_track);
@@ -118,4 +107,4 @@ public:
~VideoPlayer();
};
-#endif
+#endif // VIDEO_PLAYER_H
diff --git a/scene/gui/viewport_container.cpp b/scene/gui/viewport_container.cpp
index dbc2699867..c321b873fd 100644
--- a/scene/gui/viewport_container.cpp
+++ b/scene/gui/viewport_container.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -38,7 +38,7 @@ Size2 ViewportContainer::get_minimum_size() const {
Size2 ms;
for (int i = 0; i < get_child_count(); i++) {
- Viewport *c = get_child(i)->cast_to<Viewport>();
+ Viewport *c = Object::cast_to<Viewport>(get_child(i));
if (!c)
continue;
@@ -71,7 +71,7 @@ void ViewportContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Viewport *c = get_child(i)->cast_to<Viewport>();
+ Viewport *c = Object::cast_to<Viewport>(get_child(i));
if (!c)
continue;
@@ -83,7 +83,7 @@ void ViewportContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Viewport *c = get_child(i)->cast_to<Viewport>();
+ Viewport *c = Object::cast_to<Viewport>(get_child(i));
if (!c)
continue;
@@ -98,7 +98,7 @@ void ViewportContainer::_notification(int p_what) {
for (int i = 0; i < get_child_count(); i++) {
- Viewport *c = get_child(i)->cast_to<Viewport>();
+ Viewport *c = Object::cast_to<Viewport>(get_child(i));
if (!c)
continue;
diff --git a/scene/gui/viewport_container.h b/scene/gui/viewport_container.h
index 27eb6ec81b..630523b5fb 100644
--- a/scene/gui/viewport_container.h
+++ b/scene/gui/viewport_container.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/io/SCsub b/scene/io/SCsub
deleted file mode 100644
index bf9125be7f..0000000000
--- a/scene/io/SCsub
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-env.add_source_files(env.scene_sources, "*.cpp")
-
-Export('env')
diff --git a/scene/io/resource_format_image.cpp b/scene/io/resource_format_image.cpp
deleted file mode 100644
index 04b6177c3c..0000000000
--- a/scene/io/resource_format_image.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*************************************************************************/
-/* resource_format_image.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#include "resource_format_image.h"
-
-#if 0
-#include "io/image_loader.h"
-#include "os/os.h"
-#include "project_settings.h"
-#include "scene/resources/texture.h"
-RES ResourceFormatLoaderImage::load(const String &p_path, const String& p_original_path, Error *r_error) {
-
- if (r_error)
- *r_error=ERR_CANT_OPEN;
-
- if (p_path.get_extension()=="cube") {
- // open as cubemap txture
-
- CubeMap* ptr = memnew(CubeMap);
- Ref<CubeMap> cubemap( ptr );
-
- Error err;
- FileAccess *f = FileAccess::open(p_path,FileAccess::READ,&err);
- if (err) {
-
- ERR_FAIL_COND_V( err, RES() );
- }
-
- String base_path=p_path.substr( 0, p_path.find_last("/")+1 );
-
- for(int i=0;i<6;i++) {
-
- String file = f->get_line().strip_edges();
- Image image;
-
- Error err = ImageLoader::load_image(base_path+file,&image);
-
-
- if (err) {
-
- memdelete(f);
- ERR_FAIL_COND_V( err, RES() );
- }
-
- if (i==0) {
-
- //cubemap->create(image.get_width(),image.get_height(),image.get_format(),Texture::FLAGS_DEFAULT|Texture::FLAG_CUBEMAP);
- }
-
- static const CubeMap::Side cube_side[6]= {
- CubeMap::SIDE_LEFT,
- CubeMap::SIDE_RIGHT,
- CubeMap::SIDE_BOTTOM,
- CubeMap::SIDE_TOP,
- CubeMap::SIDE_FRONT,
- CubeMap::SIDE_BACK
- };
-
- cubemap->set_side(cube_side[i],image);
- }
-
- memdelete(f);
-
- cubemap->set_name(p_path.get_file());
- if (r_error)
- *r_error=OK;
-
- return cubemap;
-
- } else {
- // simple image
-
- ImageTexture* ptr = memnew(ImageTexture);
- Ref<ImageTexture> texture( ptr );
-
- uint64_t begtime;
- double total;
-
- Image image;
-
- if (debug_load_times)
- begtime=OS::get_singleton()->get_ticks_usec();
-
-
- Error err = ImageLoader::load_image(p_path,&image);
-
- if (!err && debug_load_times) {
- double total=USEC_TO_SEC((OS::get_singleton()->get_ticks_usec()-begtime));
- print_line("IMAGE: "+itos(image.get_width())+"x"+itos(image.get_height()));
- print_line(" -load: "+rtos(total));
- }
-
-
- ERR_EXPLAIN("Failed loading image: "+p_path);
- ERR_FAIL_COND_V(err, RES());
- if (r_error)
- *r_error=ERR_FILE_CORRUPT;
-
-#ifdef DEBUG_ENABLED
-#ifdef TOOLS_ENABLED
-
- if (max_texture_size && (image.get_width() > max_texture_size || image.get_height() > max_texture_size)) {
-
-
- if (bool(ProjectSettings::get_singleton()->get("debug/image_loader/max_texture_size_alert"))) {
- OS::get_singleton()->alert("Texture is too large: '"+p_path+"', at "+itos(image.get_width())+"x"+itos(image.get_height())+". Max allowed size is: "+itos(max_texture_size)+"x"+itos(max_texture_size)+".","BAD ARTIST, NO COOKIE!");
- }
-
- ERR_EXPLAIN("Texture is too large: '"+p_path+"', at "+itos(image.get_width())+"x"+itos(image.get_height())+". Max allowed size is: "+itos(max_texture_size)+"x"+itos(max_texture_size)+".");
- ERR_FAIL_V(RES());
- }
-#endif
-#endif
-
-
- uint32_t flags=load_image_flags(p_path);
-
- if (debug_load_times)
- begtime=OS::get_singleton()->get_ticks_usec();
-
- //print_line("img: "+p_path+" flags: "+itos(flags));
- texture->create_from_image( image,flags );
- texture->set_name(p_path.get_file());
-
-
- if (debug_load_times) {
- total=USEC_TO_SEC(OS::get_singleton()->get_ticks_usec()-begtime);
- print_line(" -make texture: "+rtos(total));
- }
-
- if (r_error)
- *r_error=OK;
-
- return RES( texture );
- }
-
-
-}
-
-uint32_t ResourceFormatLoaderImage::load_image_flags(const String &p_path) {
-
-
- FileAccess *f2 = FileAccess::open(p_path+".flags",FileAccess::READ);
- Map<String,bool> flags_found;
- if (f2) {
-
- while(!f2->eof_reached()) {
- String l2 = f2->get_line();
- int eqpos = l2.find("=");
- if (eqpos!=-1) {
- String flag=l2.substr(0,eqpos).strip_edges();
- String val=l2.substr(eqpos+1,l2.length()).strip_edges().to_lower();
- flags_found[flag]=(val=="true" || val=="1")?true:false;
- }
- }
- memdelete(f2);
- }
-
-
- uint32_t flags=0;
-
- if (flags_found.has("filter")) {
- if (flags_found["filter"])
- flags|=Texture::FLAG_FILTER;
- } else if (bool(GLOBAL_DEF("rendering/image_loader/filter",true))) {
- flags|=Texture::FLAG_FILTER;
- }
-
-
- if (flags_found.has("gen_mipmaps")) {
- if (flags_found["gen_mipmaps"])
- flags|=Texture::FLAG_MIPMAPS;
- } else if (bool(GLOBAL_DEF("rendering/image_loader/gen_mipmaps",true))) {
- flags|=Texture::FLAG_MIPMAPS;
- }
-
- if (flags_found.has("repeat")) {
- if (flags_found["repeat"])
- flags|=Texture::FLAG_REPEAT;
- } else if (bool(GLOBAL_DEF("rendering/image_loader/repeat",true))) {
- flags|=Texture::FLAG_REPEAT;
- }
-
- if (flags_found.has("anisotropic")) {
- if (flags_found["anisotropic"])
- flags|=Texture::FLAG_ANISOTROPIC_FILTER;
- }
-
- if (flags_found.has("tolinear")) {
- if (flags_found["tolinear"])
- flags|=Texture::FLAG_CONVERT_TO_LINEAR;
- }
-
- if (flags_found.has("mirroredrepeat")) {
- if (flags_found["mirroredrepeat"])
- flags|=Texture::FLAG_MIRRORED_REPEAT;
- }
-
- return flags;
-}
-
-bool ResourceFormatLoaderImage::handles_type(const String& p_type) const {
-
- return ClassDB::is_parent_class(p_type,"Texture") || ClassDB::is_parent_class(p_type,"CubeMap");
-}
-
-void ResourceFormatLoaderImage::get_recognized_extensions(List<String> *p_extensions) const {
-
- ImageLoader::get_recognized_extensions(p_extensions);
- p_extensions->push_back("cube");
-}
-
-String ResourceFormatLoaderImage::get_resource_type(const String &p_path) const {
-
- String ext=p_path.get_extension().to_lower();
- if (ext=="cube")
- return "CubeMap";
-
- List<String> extensions;
- ImageLoader::get_recognized_extensions(&extensions);
-
- for(List<String>::Element *E=extensions.front();E;E=E->next()) {
- if (E->get()==ext)
- return "ImageTexture";
- }
- return "";
-}
-
-
-ResourceFormatLoaderImage::ResourceFormatLoaderImage() {
-
- max_texture_size = GLOBAL_DEF("debug/image_loader/max_texture_size",0);
- GLOBAL_DEF("debug/image_loader/max_texture_size_alert",false);
- debug_load_times=GLOBAL_DEF("debug/image_loader/image_load_times",false);
- GLOBAL_DEF("rendering/image_loader/filter",true);
- GLOBAL_DEF("rendering/image_loader/gen_mipmaps",true);
- GLOBAL_DEF("rendering/image_loader/repeat",false);
-
-}
-#endif
diff --git a/scene/io/resource_format_image.h b/scene/io/resource_format_image.h
deleted file mode 100644
index 2cf6315f17..0000000000
--- a/scene/io/resource_format_image.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*************************************************************************/
-/* resource_format_image.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef RESOURCE_FORMAT_IMAGE_H
-#define RESOURCE_FORMAT_IMAGE_H
-
-#if 0
-
-#include "io/resource_loader.h"
-#include "io/resource_saver.h"
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-class ResourceFormatLoaderImage : public ResourceFormatLoader {
-
- bool debug_load_times;
- int max_texture_size;
-public:
- virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL);
- static uint32_t load_image_flags(const String &p_path);
- 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;
-
- ResourceFormatLoaderImage();
-};
-
-#endif
-#endif
diff --git a/scene/io/resource_format_wav.cpp b/scene/io/resource_format_wav.cpp
deleted file mode 100644
index dabbb79de3..0000000000
--- a/scene/io/resource_format_wav.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-/*************************************************************************/
-/* resource_format_wav.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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. */
-/*************************************************************************/
-#if 0
-#include "resource_format_wav.h"
-#include "os/file_access.h"
-#include "scene/resources/sample.h"
-
-
-RES ResourceFormatLoaderWAV::load(const String &p_path, const String& p_original_path, Error *r_error) {
- if (r_error)
- *r_error=ERR_FILE_CANT_OPEN;
-
- Error err;
- FileAccess *file=FileAccess::open(p_path, FileAccess::READ,&err);
-
- ERR_FAIL_COND_V( err!=OK, RES() );
-
- if (r_error)
- *r_error=ERR_FILE_CORRUPT;
-
- /* CHECK RIFF */
- char riff[5];
- riff[4]=0;
- file->get_buffer((uint8_t*)&riff,4); //RIFF
-
- if (riff[0]!='R' || riff[1]!='I' || riff[2]!='F' || riff[3]!='F') {
-
- file->close();
- memdelete(file);
- ERR_FAIL_V( RES() );
- }
-
-
- /* GET FILESIZE */
- uint32_t filesize=file->get_32();
-
- /* CHECK WAVE */
-
- char wave[4];
-
- file->get_buffer((uint8_t*)&wave,4); //RIFF
-
- if (wave[0]!='W' || wave[1]!='A' || wave[2]!='V' || wave[3]!='E') {
-
-
- file->close();
- memdelete(file);
- ERR_EXPLAIN("Not a WAV file (no WAVE RIFF Header)")
- ERR_FAIL_V( RES() );
- }
-
- bool format_found=false;
- bool data_found=false;
- int format_bits=0;
- int format_channels=0;
- int format_freq=0;
- Sample::LoopFormat loop=Sample::LOOP_NONE;
- int loop_begin=0;
- int loop_end=0;
-
-
- Ref<Sample> sample( memnew( Sample ) );
-
-
- while (!file->eof_reached()) {
-
-
- /* chunk */
- char chunkID[4];
- file->get_buffer((uint8_t*)&chunkID,4); //RIFF
-
- /* chunk size */
- uint32_t chunksize=file->get_32();
- uint32_t file_pos=file->get_position(); //save file pos, so we can skip to next chunk safely
-
- if (file->eof_reached()) {
-
- //ERR_PRINT("EOF REACH");
- break;
- }
-
- if (chunkID[0]=='f' && chunkID[1]=='m' && chunkID[2]=='t' && chunkID[3]==' ' && !format_found) {
- /* IS FORMAT CHUNK */
-
- uint16_t compression_code=file->get_16();
-
-
- if (compression_code!=1) {
- ERR_PRINT("Format not supported for WAVE file (not PCM). Save WAVE files as uncompressed PCM instead.");
- break;
- }
-
- format_channels=file->get_16();
- if (format_channels!=1 && format_channels !=2) {
-
- ERR_PRINT("Format not supported for WAVE file (not stereo or mono)");
- break;
-
- }
-
- format_freq=file->get_32(); //sampling rate
-
- file->get_32(); // average bits/second (unused)
- file->get_16(); // block align (unused)
- format_bits=file->get_16(); // bits per sample
-
- if (format_bits%8) {
-
- ERR_PRINT("Strange number of bits in sample (not 8,16,24,32)");
- break;
- }
-
- /* Don't need anything else, continue */
- format_found=true;
- }
-
-
- if (chunkID[0]=='d' && chunkID[1]=='a' && chunkID[2]=='t' && chunkID[3]=='a' && !data_found) {
- /* IS FORMAT CHUNK */
- data_found=true;
-
- if (!format_found) {
- ERR_PRINT("'data' chunk before 'format' chunk found.");
- break;
-
- }
-
- int frames=chunksize;
-
- frames/=format_channels;
- frames/=(format_bits>>3);
-
- /*print_line("chunksize: "+itos(chunksize));
- print_line("channels: "+itos(format_channels));
- print_line("bits: "+itos(format_bits));
-*/
- sample->create(
- (format_bits==8) ? Sample::FORMAT_PCM8 : Sample::FORMAT_PCM16,
- (format_channels==2)?true:false,
- frames );
- sample->set_mix_rate( format_freq );
-
- int len=frames;
- if (format_channels==2)
- len*=2;
- if (format_bits>8)
- len*=2;
-
- PoolVector<uint8_t> data;
- data.resize(len);
- PoolVector<uint8_t>::Write dataw = data.write();
- void * data_ptr = dataw.ptr();
-
- for (int i=0;i<frames;i++) {
-
-
- for (int c=0;c<format_channels;c++) {
-
-
- if (format_bits==8) {
- // 8 bit samples are UNSIGNED
-
- uint8_t s = file->get_8();
- s-=128;
- int8_t *sp=(int8_t*)&s;
-
- int8_t *data_ptr8=&((int8_t*)data_ptr)[i*format_channels+c];
-
- *data_ptr8=*sp;
-
- } else {
- //16+ bits samples are SIGNED
- // if sample is > 16 bits, just read extra bytes
-
- uint32_t data=0;
- for (int b=0;b<(format_bits>>3);b++) {
-
- data|=((uint32_t)file->get_8())<<(b*8);
- }
- data<<=(32-format_bits);
-
-
- int32_t s=data;
-
- int16_t *data_ptr16=&((int16_t*)data_ptr)[i*format_channels+c];
-
- *data_ptr16=s>>16;
- }
- }
-
- }
-
- dataw=PoolVector<uint8_t>::Write();
-
- sample->set_data(data);
-
-
- if (file->eof_reached()) {
- file->close();
- memdelete(file);
- ERR_EXPLAIN("Premature end of file.");
- ERR_FAIL_V(RES());
- }
- }
-
- if (chunkID[0]=='s' && chunkID[1]=='m' && chunkID[2]=='p' && chunkID[3]=='l') {
- //loop point info!
-
- for(int i=0;i<10;i++)
- file->get_32(); // i wish to know why should i do this... no doc!
-
- loop=file->get_32()?Sample::LOOP_PING_PONG:Sample::LOOP_FORWARD;
- loop_begin=file->get_32();
- loop_end=file->get_32();
-
- }
- file->seek( file_pos+chunksize );
- }
-
- sample->set_loop_format(loop);
- sample->set_loop_begin(loop_begin);
- sample->set_loop_end(loop_end);
-
- file->close();
- memdelete(file);
-
- if (r_error)
- *r_error=OK;
-
-
- return sample;
-
-}
-void ResourceFormatLoaderWAV::get_recognized_extensions(List<String> *p_extensions) const {
-
- p_extensions->push_back("wav");
-}
-bool ResourceFormatLoaderWAV::handles_type(const String& p_type) const {
-
- return (p_type=="Sample");
-}
-
-String ResourceFormatLoaderWAV::get_resource_type(const String &p_path) const {
-
- if (p_path.get_extension().to_lower()=="wav")
- return "Sample";
- return "";
-}
-
-#endif
diff --git a/scene/io/resource_format_wav.h b/scene/io/resource_format_wav.h
deleted file mode 100644
index 9105689670..0000000000
--- a/scene/io/resource_format_wav.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************/
-/* resource_format_wav.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-#ifndef RESOURCE_FORMAT_WAV_H
-#define RESOURCE_FORMAT_WAV_H
-
-#if 0
-#include "io/resource_loader.h"
-
-class ResourceFormatLoaderWAV : 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
-#endif // RESOURCE_FORMAT_WAV_H
diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp
index 77407fdde7..ce8714e574 100644
--- a/scene/main/canvas_layer.cpp
+++ b/scene/main/canvas_layer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -201,7 +201,7 @@ void CanvasLayer::set_custom_viewport(Node *p_viewport) {
viewport = RID();
}
- custom_viewport = p_viewport->cast_to<Viewport>();
+ custom_viewport = Object::cast_to<Viewport>(p_viewport);
if (custom_viewport) {
custom_viewport_id = custom_viewport->get_instance_id();
diff --git a/scene/main/canvas_layer.h b/scene/main/canvas_layer.h
index 1be6f8be24..fbee87f487 100644
--- a/scene/main/canvas_layer.h
+++ b/scene/main/canvas_layer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -55,7 +55,7 @@ class CanvasLayer : public Node {
int sort_index;
// Deprecated, should be removed in a future version.
- void _set_rotationd(real_t p_rotation);
+ void _set_rotationd(real_t p_degrees);
real_t _get_rotationd() const;
void _update_xform();
diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp
index a9b2dba186..1e1e4f2d5f 100644
--- a/scene/main/http_request.cpp
+++ b/scene/main/http_request.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -547,19 +547,19 @@ void HTTPRequest::_bind_methods() {
ADD_SIGNAL(MethodInfo("request_completed", PropertyInfo(Variant::INT, "result"), PropertyInfo(Variant::INT, "response_code"), PropertyInfo(Variant::POOL_STRING_ARRAY, "headers"), PropertyInfo(Variant::POOL_BYTE_ARRAY, "body")));
- BIND_CONSTANT(RESULT_SUCCESS);
- //BIND_CONSTANT( RESULT_NO_BODY );
- BIND_CONSTANT(RESULT_CHUNKED_BODY_SIZE_MISMATCH);
- BIND_CONSTANT(RESULT_CANT_CONNECT);
- BIND_CONSTANT(RESULT_CANT_RESOLVE);
- BIND_CONSTANT(RESULT_CONNECTION_ERROR);
- BIND_CONSTANT(RESULT_SSL_HANDSHAKE_ERROR);
- BIND_CONSTANT(RESULT_NO_RESPONSE);
- BIND_CONSTANT(RESULT_BODY_SIZE_LIMIT_EXCEEDED);
- BIND_CONSTANT(RESULT_REQUEST_FAILED);
- BIND_CONSTANT(RESULT_DOWNLOAD_FILE_CANT_OPEN);
- BIND_CONSTANT(RESULT_DOWNLOAD_FILE_WRITE_ERROR);
- BIND_CONSTANT(RESULT_REDIRECT_LIMIT_REACHED);
+ BIND_ENUM_CONSTANT(RESULT_SUCCESS);
+ //BIND_ENUM_CONSTANT( RESULT_NO_BODY );
+ BIND_ENUM_CONSTANT(RESULT_CHUNKED_BODY_SIZE_MISMATCH);
+ BIND_ENUM_CONSTANT(RESULT_CANT_CONNECT);
+ BIND_ENUM_CONSTANT(RESULT_CANT_RESOLVE);
+ BIND_ENUM_CONSTANT(RESULT_CONNECTION_ERROR);
+ BIND_ENUM_CONSTANT(RESULT_SSL_HANDSHAKE_ERROR);
+ BIND_ENUM_CONSTANT(RESULT_NO_RESPONSE);
+ BIND_ENUM_CONSTANT(RESULT_BODY_SIZE_LIMIT_EXCEEDED);
+ BIND_ENUM_CONSTANT(RESULT_REQUEST_FAILED);
+ BIND_ENUM_CONSTANT(RESULT_DOWNLOAD_FILE_CANT_OPEN);
+ BIND_ENUM_CONSTANT(RESULT_DOWNLOAD_FILE_WRITE_ERROR);
+ BIND_ENUM_CONSTANT(RESULT_REDIRECT_LIMIT_REACHED);
}
HTTPRequest::HTTPRequest() {
diff --git a/scene/main/http_request.h b/scene/main/http_request.h
index 6099d4e9bf..790ff5f7ef 100644
--- a/scene/main/http_request.h
+++ b/scene/main/http_request.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -137,4 +137,6 @@ public:
~HTTPRequest();
};
+VARIANT_ENUM_CAST(HTTPRequest::Result);
+
#endif // HTTPREQUEST_H
diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp
index 5580ef486e..cbe30e05dd 100644
--- a/scene/main/instance_placeholder.cpp
+++ b/scene/main/instance_placeholder.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/main/instance_placeholder.h b/scene/main/instance_placeholder.h
index ec4520e1c8..375c87a035 100644
--- a/scene/main/instance_placeholder.h
+++ b/scene/main/instance_placeholder.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index 0d872d906e..c3d9d97c5a 100755
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "node.h"
+
#include "instance_placeholder.h"
#include "io/resource_loader.h"
#include "message_queue.h"
@@ -194,7 +195,7 @@ void Node::_propagate_enter_tree() {
data.depth = 1;
}
- data.viewport = cast_to<Viewport>();
+ data.viewport = Object::cast_to<Viewport>(this);
if (!data.viewport)
data.viewport = data.parent->data.viewport;
@@ -360,18 +361,6 @@ void Node::add_child_notify(Node *p_child) {
// to be used when not wanted
}
-/*
-void Node::remove_and_delete_child(Node *p_child) {
-
- ERR_FAIL_NULL( p_child );
- ERR_FAIL_COND( p_child->get_parent()!=this );
-
- remove_child(p_child);
- memdelete(p_child);
-
-}
-*/
-
void Node::remove_child_notify(Node *p_child) {
// to be used when not wanted
@@ -675,31 +664,6 @@ Variant Node::_rpc_unreliable_id_bind(const Variant **p_args, int p_argcount, Va
return Variant();
}
-#if 0
-Variant Node::_rpc_bind(const Variant** p_args, int p_argcount, Variant::CallError& r_error) {
-
- if (p_argcount<1) {
- r_error.error=Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
- r_error.argument=1;
- return Variant();
- }
-
- if (p_args[0]->get_type()!=Variant::STRING) {
- r_error.error=Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
- r_error.argument=0;
- r_error.expected=Variant::STRING;
- return Variant();
- }
-
- StringName method = *p_args[0];
-
- rpcp(method,&p_args[1],p_argcount-1);
-
- r_error.error=Variant::CallError::CALL_OK;
- return Variant();
-}
-
-#endif
void Node::rpcp(int p_peer_id, bool p_unreliable, const StringName &p_method, const Variant **p_arg, int p_argcount) {
ERR_FAIL_COND(!is_inside_tree());
@@ -1301,8 +1265,9 @@ String Node::_generate_serial_child_name(Node *p_child) {
}
}
+ int num_places = nums.length();
for (;;) {
- String attempt = (name + (num > 0 || explicit_zero ? nnsep + itos(num) : "")).strip_edges();
+ String attempt = (name + (num > 0 || explicit_zero ? nnsep + itos(num).pad_zeros(num_places) : "")).strip_edges();
bool found = false;
for (int i = 0; i < data.children.size(); i++) {
if (data.children[i] == p_child)
@@ -1352,20 +1317,24 @@ void Node::_add_child_nocheck(Node *p_child, const StringName &p_name) {
void Node::add_child(Node *p_child, bool p_legible_unique_name) {
ERR_FAIL_NULL(p_child);
- /* Fail if node has a parent */
+
if (p_child == this) {
- ERR_EXPLAIN("Can't add child " + p_child->get_name() + " to itself.")
+ ERR_EXPLAIN("Can't add child '" + p_child->get_name() + "' to itself.")
ERR_FAIL_COND(p_child == this); // adding to itself!
}
- ERR_EXPLAIN("Can't add child, already has a parent");
- ERR_FAIL_COND(p_child->data.parent);
+
+ /* Fail if node has a parent */
+ if (p_child->data.parent) {
+ ERR_EXPLAIN("Can't add child '" + p_child->get_name() + "' to '" + get_name() + "', already has a parent '" + p_child->data.parent->get_name() + "'.");
+ ERR_FAIL_COND(p_child->data.parent);
+ }
if (data.blocked > 0) {
- ERR_EXPLAIN("Parent node is busy setting up children, add_node() failed. Consider using call_deferred(\"add_child\",child) instead.");
+ ERR_EXPLAIN("Parent node is busy setting up children, add_node() failed. Consider using call_deferred(\"add_child\", child) instead.");
ERR_FAIL_COND(data.blocked > 0);
}
- ERR_EXPLAIN("Can't add child while a notification is happening");
+ ERR_EXPLAIN("Can't add child while a notification is happening.");
ERR_FAIL_COND(data.blocked > 0);
/* Validate name */
@@ -1380,7 +1349,7 @@ void Node::add_child_below_node(Node *p_node, Node *p_child, bool p_legible_uniq
if (is_a_parent_of(p_node)) {
move_child(p_child, p_node->get_position_in_parent() + 1);
} else {
- WARN_PRINTS("Cannot move under node " + p_node->get_name() + " as " + p_child->get_name() + " does not share a parent")
+ WARN_PRINTS("Cannot move under node " + p_node->get_name() + " as " + p_child->get_name() + " does not share a parent.")
}
}
@@ -1953,6 +1922,23 @@ void Node::propagate_notification(int p_notification) {
data.blocked--;
}
+void Node::propagate_call(const StringName &p_method, const Array &p_args, const bool p_parent_first) {
+
+ data.blocked++;
+
+ if (p_parent_first && has_method(p_method))
+ callv(p_method, p_args);
+
+ for (int i = 0; i < data.children.size(); i++) {
+ data.children[i]->propagate_call(p_method, p_args, p_parent_first);
+ }
+
+ if (!p_parent_first && has_method(p_method))
+ callv(p_method, p_args);
+
+ data.blocked--;
+}
+
void Node::_propagate_replace_owner(Node *p_owner, Node *p_by_owner) {
if (get_owner() == p_owner)
set_owner(p_by_owner);
@@ -2048,59 +2034,6 @@ HashMap<NodePath, int> Node::get_editable_instances() const {
return data.editable_instances;
}
-#if 0
-
-void Node::generate_instance_state() {
-
- List<PropertyInfo> properties;
- get_property_list(&properties);
-
- data.instance_state.clear();
-
- for( List<PropertyInfo>::Element *E=properties.front();E;E=E->next() ) {
-
- PropertyInfo &pi=E->get();
- if ((pi.usage&PROPERTY_USAGE_NO_INSTANCE_STATE) || !(pi.usage&PROPERTY_USAGE_EDITOR) || !(pi.usage&PROPERTY_USAGE_STORAGE))
- continue;
-
- data.instance_state[pi.name]=get(pi.name);
- }
-
- List<GroupInfo> groups;
- get_groups(&groups);
- for(List<GroupInfo>::Element *E=groups.front();E;E=E->next()) {
-
- if (!E->get().persistent)
- continue;
- data.instance_groups.push_back(E->get().name);
- }
-
- List<MethodInfo> signal_list;
-
- get_signal_list(&signal_list);
-
- for(List<MethodInfo>::Element *E=signal_list.front();E;E=E->next()) {
-
- StringName name = E->get().name;
- List<Connection> connections;
- get_signal_connection_list(name,&connections);
-
- for(List<Connection>::Element *F=connections.front();F;F=F->next()) {
-
- if (F->get().flags&CONNECT_PERSIST)
- data.instance_connections.push_back(F->get());
- }
-
- }
-}
-
-Dictionary Node::get_instance_state() const {
-
- return data.instance_state;
-}
-
-#endif
-
void Node::set_scene_instance_state(const Ref<SceneState> &p_state) {
data.instance_state = p_state;
@@ -2142,9 +2075,9 @@ Node *Node::_duplicate(int p_flags) const {
bool instanced = false;
- if (cast_to<InstancePlaceholder>()) {
+ if (Object::cast_to<InstancePlaceholder>(this)) {
- const InstancePlaceholder *ip = cast_to<const InstancePlaceholder>();
+ const InstancePlaceholder *ip = Object::cast_to<const InstancePlaceholder>(this);
InstancePlaceholder *nip = memnew(InstancePlaceholder);
nip->set_instance_path(ip->get_instance_path());
node = nip;
@@ -2162,7 +2095,7 @@ Node *Node::_duplicate(int p_flags) const {
Object *obj = ClassDB::instance(get_class());
ERR_FAIL_COND_V(!obj, NULL);
- node = obj->cast_to<Node>();
+ node = Object::cast_to<Node>(obj);
if (!node)
memdelete(obj);
ERR_FAIL_COND_V(!node, NULL);
@@ -2252,7 +2185,7 @@ void Node::_duplicate_and_reown(Node *p_new_parent, const Map<Node *, Node *> &p
print_line("could not duplicate: " + String(get_class()));
}
ERR_FAIL_COND(!obj);
- node = obj->cast_to<Node>();
+ node = Object::cast_to<Node>(obj);
if (!node)
memdelete(obj);
}
@@ -2308,7 +2241,7 @@ void Node::_duplicate_signals(const Node *p_original, Node *p_copy) const {
NodePath p = p_original->get_path_to(this);
Node *copy = p_copy->get_node(p);
- Node *target = E->get().target->cast_to<Node>();
+ Node *target = Object::cast_to<Node>(E->get().target);
if (!target) {
continue;
}
@@ -2337,7 +2270,7 @@ Node *Node::duplicate_and_reown(const Map<Node *, Node *> &p_reown_map) const {
print_line("could not duplicate: " + String(get_class()));
}
ERR_FAIL_COND_V(!obj, NULL);
- node = obj->cast_to<Node>();
+ node = Object::cast_to<Node>(obj);
if (!node)
memdelete(obj);
ERR_FAIL_COND_V(!node, NULL);
@@ -2592,7 +2525,7 @@ void Node::_set_tree(SceneTree *p_tree) {
static void _Node_debug_sn(Object *p_obj) {
- Node *n = p_obj->cast_to<Node>();
+ Node *n = Object::cast_to<Node>(p_obj);
if (!n)
return;
@@ -2730,7 +2663,6 @@ void Node::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_name"), &Node::get_name);
ClassDB::bind_method(D_METHOD("add_child", "node", "legible_unique_name"), &Node::add_child, DEFVAL(false));
ClassDB::bind_method(D_METHOD("remove_child", "node"), &Node::remove_child);
- //ClassDB::bind_method(D_METHOD("remove_and_delete_child","node"),&Node::remove_and_delete_child);
ClassDB::bind_method(D_METHOD("get_child_count"), &Node::get_child_count);
ClassDB::bind_method(D_METHOD("get_children"), &Node::_get_children);
ClassDB::bind_method(D_METHOD("get_child", "idx"), &Node::get_child);
@@ -2760,6 +2692,7 @@ void Node::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_filename", "filename"), &Node::set_filename);
ClassDB::bind_method(D_METHOD("get_filename"), &Node::get_filename);
ClassDB::bind_method(D_METHOD("propagate_notification", "what"), &Node::propagate_notification);
+ ClassDB::bind_method(D_METHOD("propagate_call", "method", "args", "parent_first"), &Node::propagate_call, DEFVAL(Array()), DEFVAL(false));
ClassDB::bind_method(D_METHOD("set_fixed_process", "enable"), &Node::set_fixed_process);
ClassDB::bind_method(D_METHOD("get_fixed_process_delta_time"), &Node::get_fixed_process_delta_time);
ClassDB::bind_method(D_METHOD("is_fixed_processing"), &Node::is_fixed_processing);
@@ -2841,7 +2774,6 @@ void Node::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_ENTER_TREE);
BIND_CONSTANT(NOTIFICATION_EXIT_TREE);
BIND_CONSTANT(NOTIFICATION_MOVED_IN_PARENT);
- //BIND_CONSTANT( NOTIFICATION_PARENT_DECONFIGURED );
BIND_CONSTANT(NOTIFICATION_READY);
BIND_CONSTANT(NOTIFICATION_FIXED_PROCESS);
BIND_CONSTANT(NOTIFICATION_PROCESS);
@@ -2857,20 +2789,20 @@ void Node::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_INTERNAL_PROCESS);
BIND_CONSTANT(NOTIFICATION_INTERNAL_FIXED_PROCESS);
- BIND_CONSTANT(RPC_MODE_DISABLED);
- BIND_CONSTANT(RPC_MODE_REMOTE);
- BIND_CONSTANT(RPC_MODE_SYNC);
- BIND_CONSTANT(RPC_MODE_MASTER);
- BIND_CONSTANT(RPC_MODE_SLAVE);
+ BIND_ENUM_CONSTANT(RPC_MODE_DISABLED);
+ BIND_ENUM_CONSTANT(RPC_MODE_REMOTE);
+ BIND_ENUM_CONSTANT(RPC_MODE_SYNC);
+ BIND_ENUM_CONSTANT(RPC_MODE_MASTER);
+ BIND_ENUM_CONSTANT(RPC_MODE_SLAVE);
- BIND_CONSTANT(PAUSE_MODE_INHERIT);
- BIND_CONSTANT(PAUSE_MODE_STOP);
- BIND_CONSTANT(PAUSE_MODE_PROCESS);
+ BIND_ENUM_CONSTANT(PAUSE_MODE_INHERIT);
+ BIND_ENUM_CONSTANT(PAUSE_MODE_STOP);
+ BIND_ENUM_CONSTANT(PAUSE_MODE_PROCESS);
- BIND_CONSTANT(DUPLICATE_SIGNALS);
- BIND_CONSTANT(DUPLICATE_GROUPS);
- BIND_CONSTANT(DUPLICATE_SCRIPTS);
- BIND_CONSTANT(DUPLICATE_USE_INSTANCING);
+ BIND_ENUM_CONSTANT(DUPLICATE_SIGNALS);
+ BIND_ENUM_CONSTANT(DUPLICATE_GROUPS);
+ BIND_ENUM_CONSTANT(DUPLICATE_SCRIPTS);
+ BIND_ENUM_CONSTANT(DUPLICATE_USE_INSTANCING);
ADD_SIGNAL(MethodInfo("renamed"));
ADD_SIGNAL(MethodInfo("tree_entered"));
diff --git a/scene/main/node.h b/scene/main/node.h
index 0447deccc1..12d6310062 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,8 +32,8 @@
#include "class_db.h"
#include "map.h"
-#include "object.h"
#include "node_path.h"
+#include "object.h"
#include "project_settings.h"
#include "scene/main/scene_tree.h"
#include "script_language.h"
@@ -192,7 +192,6 @@ protected:
virtual void add_child_notify(Node *p_child);
virtual void remove_child_notify(Node *p_child);
virtual void move_child_notify(Node *p_child);
- //void remove_and_delete_child(Node *p_child);
void _propagate_replace_owner(Node *p_owner, Node *p_by_owner);
@@ -212,7 +211,6 @@ public:
NOTIFICATION_EXIT_TREE = 11,
NOTIFICATION_MOVED_IN_PARENT = 12,
NOTIFICATION_READY = 13,
- //NOTIFICATION_PARENT_DECONFIGURED =15, - it's confusing, it's going away
NOTIFICATION_PAUSED = 14,
NOTIFICATION_UNPAUSED = 15,
NOTIFICATION_FIXED_PROCESS = 16,
@@ -298,19 +296,21 @@ public:
void propagate_notification(int p_notification);
+ void propagate_call(const StringName &p_method, const Array &p_args = Array(), const bool p_parent_first = false);
+
/* PROCESSING */
void set_fixed_process(bool p_process);
float get_fixed_process_delta_time() const;
bool is_fixed_processing() const;
- void set_process(bool p_process);
+ void set_process(bool p_idle_process);
float get_process_delta_time() const;
bool is_processing() const;
- void set_fixed_process_internal(bool p_process);
+ void set_fixed_process_internal(bool p_process_internal);
bool is_fixed_processing_internal() const;
- void set_process_internal(bool p_process);
+ void set_process_internal(bool p_idle_process_internal);
bool is_processing_internal() const;
void set_process_input(bool p_enable);
@@ -412,6 +412,8 @@ public:
~Node();
};
+VARIANT_ENUM_CAST(Node::DuplicateFlags);
+
typedef Set<Node *, Node::Comparator> NodeSet;
#endif
diff --git a/scene/main/resource_preloader.cpp b/scene/main/resource_preloader.cpp
index ae323ba021..35bb6ef7e8 100644
--- a/scene/main/resource_preloader.cpp
+++ b/scene/main/resource_preloader.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/main/resource_preloader.h b/scene/main/resource_preloader.h
index a54781dc81..40e900a492 100644
--- a/scene/main/resource_preloader.h
+++ b/scene/main/resource_preloader.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 067bcbff3e..65aeb23609 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,17 +29,15 @@
/*************************************************************************/
#include "scene_tree.h"
+#include "editor/editor_node.h"
+#include "io/marshalls.h"
+#include "io/resource_loader.h"
#include "message_queue.h"
#include "node.h"
#include "os/keyboard.h"
#include "os/os.h"
#include "print_string.h"
#include "project_settings.h"
-#include <stdio.h>
-//#include "servers/spatial_sound_2d_server.h"
-
-#include "io/marshalls.h"
-#include "io/resource_loader.h"
#include "scene/resources/material.h"
#include "scene/resources/mesh.h"
#include "scene/resources/packed_scene.h"
@@ -48,6 +46,8 @@
#include "servers/physics_server.h"
#include "viewport.h"
+#include <stdio.h>
+
void SceneTreeTimer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_time_left", "time"), &SceneTreeTimer::set_time_left);
@@ -382,7 +382,7 @@ bool SceneTree::is_input_handled() {
void SceneTree::input_event(const Ref<InputEvent> &p_event) {
- if (is_editor_hint() && (p_event->cast_to<InputEventJoypadButton>() || p_event->cast_to<InputEventJoypadMotion>()))
+ if (Engine::get_singleton()->is_editor_hint() && (Object::cast_to<InputEventJoypadButton>(p_event.ptr()) || Object::cast_to<InputEventJoypadMotion>(*p_event)))
return; //avoid joy input on editor
root_lock++;
@@ -392,86 +392,11 @@ void SceneTree::input_event(const Ref<InputEvent> &p_event) {
Ref<InputEvent> ev = p_event;
ev->set_id(++last_id); //this should work better
-#if 0
- switch(ev.type) {
-
- case InputEvent::MOUSE_BUTTON: {
-
- Matrix32 ai = root->get_final_transform().affine_inverse();
- Vector2 g = ai.xform(Vector2(ev.mouse_button.global_x,ev.mouse_button.global_y));
- Vector2 l = ai.xform(Vector2(ev->get_pos().x,ev->get_pos().y));
- ev->get_pos().x=l.x;
- ev->get_pos().y=l.y;
- ev.mouse_button.global_x=g.x;
- ev.mouse_button.global_y=g.y;
-
- } break;
- case InputEvent::MOUSE_MOTION: {
-
- Matrix32 ai = root->get_final_transform().affine_inverse();
- Vector2 g = ai.xform(Vector2(ev.mouse_motion.global_x,ev.mouse_motion.global_y));
- Vector2 l = ai.xform(Vector2(ev.mouse_motion.x,ev.mouse_motion.y));
- Vector2 r = ai.xform(Vector2(ev->get_relative().x,ev->get_relative().y));
- ev.mouse_motion.x=l.x;
- ev.mouse_motion.y=l.y;
- ev.mouse_motion.global_x=g.x;
- ev.mouse_motion.global_y=g.y;
- ev->get_relative().x=r.x;
- ev->get_relative().y=r.y;
-
- } break;
- case InputEvent::SCREEN_TOUCH: {
-
- Matrix32 ai = root->get_final_transform().affine_inverse();
- Vector2 t = ai.xform(Vector2(ev.screen_touch.x,ev.screen_touch.y));
- ev.screen_touch.x=t.x;
- ev.screen_touch.y=t.y;
-
- } break;
- case InputEvent::SCREEN_DRAG: {
-
- Matrix32 ai = root->get_final_transform().affine_inverse();
- Vector2 t = ai.xform(Vector2(ev.screen_drag.x,ev.screen_drag.y));
- Vector2 r = ai.xform(Vector2(ev.screen_drag.relative_x,ev.screen_drag.relative_y));
- Vector2 s = ai.xform(Vector2(ev.screen_drag.speed_x,ev.screen_drag.speed_y));
- ev.screen_drag.x=t.x;
- ev.screen_drag.y=t.y;
- ev.screen_drag.relative_x=r.x;
- ev.screen_drag.relative_y=r.y;
- ev.screen_drag.speed_x=s.x;
- ev.screen_drag.speed_y=s.y;
- } break;
- }
-
-#endif
MainLoop::input_event(ev);
-#if 0
- _call_input_pause("input","_input",ev);
-
- call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"_gui_input","_gui_input",p_event); //special one for GUI, as controls use their own process check
-
- //call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"input","_input",ev);
-
- /*
- if (ev.type==InputEvent::KEY && ev->is_pressed() && !ev->is_echo() && ev->get_scancode()==KEY_F12) {
-
- print_line("RAM: "+itos(Memory::get_static_mem_usage()));
- print_line("DRAM: "+itos(Memory::get_dynamic_mem_usage()));
- }
- if (ev.type==InputEvent::KEY && ev->is_pressed() && !ev->is_echo() && ev->get_scancode()==KEY_F11) {
-
- Memory::dump_static_mem_to_file("memdump.txt");
- }
- */
-
- //transform for the rest
-#else
call_group_flags(GROUP_CALL_REALTIME, "_viewports", "_vp_input", ev); //special one for GUI, as controls use their own process check
-#endif
-
if (ScriptDebugger::get_singleton() && ScriptDebugger::get_singleton()->is_remote()) {
//quit from game window using F8
Ref<InputEventKey> k = ev;
@@ -482,28 +407,16 @@ void SceneTree::input_event(const Ref<InputEvent> &p_event) {
_flush_ugc();
root_lock--;
- MessageQueue::get_singleton()->flush(); //small little hack
+ //MessageQueue::get_singleton()->flush(); //flushing here causes UI and other places slowness
root_lock++;
if (!input_handled) {
-
-#if 0
- _call_input_pause("unhandled_input","_unhandled_input",ev);
- //call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"unhandled_input","_unhandled_input",ev);
- if (!input_handled && ev.type==InputEvent::KEY) {
- _call_input_pause("unhandled_key_input","_unhandled_key_input",ev);
- //call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"unhandled_key_input","_unhandled_key_input",ev);
- }
-#else
-
call_group_flags(GROUP_CALL_REALTIME, "_viewports", "_vp_unhandled_input", ev); //special one for GUI, as controls use their own process check
-
-#endif
input_handled = true;
_flush_ugc();
root_lock--;
- MessageQueue::get_singleton()->flush(); //small little hack
+ //MessageQueue::get_singleton()->flush(); //flushing here causes UI and other places slowness
} else {
input_handled = true;
root_lock--;
@@ -616,7 +529,7 @@ bool SceneTree::idle(float p_time) {
#ifdef TOOLS_ENABLED
- if (is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
//simple hack to reload fallback environment if it changed from editor
String env_path = ProjectSettings::get_singleton()->get("rendering/environment/default_environment");
env_path = env_path.strip_edges(); //user may have added a space or two
@@ -691,7 +604,7 @@ void SceneTree::_notification(int p_notification) {
get_root()->propagate_notification(p_notification);
} break;
case NOTIFICATION_TRANSLATION_CHANGED: {
- if (!is_editor_hint()) {
+ if (!Engine::get_singleton()->is_editor_hint()) {
get_root()->propagate_notification(Node::NOTIFICATION_TRANSLATION_CHANGED);
}
} break;
@@ -701,6 +614,19 @@ void SceneTree::_notification(int p_notification) {
} break;
+ case NOTIFICATION_WM_ABOUT: {
+
+#ifdef TOOLS_ENABLED
+ if (EditorNode::get_singleton()) {
+ EditorNode::get_singleton()->show_about();
+ } else {
+#endif
+ get_root()->propagate_notification(p_notification);
+#ifdef TOOLS_ENABLED
+ }
+#endif
+ } break;
+
default:
break;
};
@@ -717,19 +643,10 @@ void SceneTree::set_quit_on_go_back(bool p_enable) {
}
#ifdef TOOLS_ENABLED
-void SceneTree::set_editor_hint(bool p_enabled) {
-
- editor_hint = p_enabled;
-}
bool SceneTree::is_node_being_edited(const Node *p_node) const {
- return editor_hint && edited_scene_root && edited_scene_root->is_a_parent_of(p_node);
-}
-
-bool SceneTree::is_editor_hint() const {
-
- return editor_hint;
+ return Engine::get_singleton()->is_editor_hint() && edited_scene_root && edited_scene_root->is_a_parent_of(p_node);
}
#endif
@@ -801,11 +718,11 @@ Ref<Material> SceneTree::get_debug_navigation_material() {
return navigation_material;
Ref<SpatialMaterial> line_material = Ref<SpatialMaterial>(memnew(SpatialMaterial));
- /* line_material->set_flag(Material::FLAG_UNSHADED, true);
- line_material->set_line_width(3.0);
- line_material->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA, true);
- line_material->set_fixed_flag(SpatialMaterial::FLAG_USE_COLOR_ARRAY, true);
- line_material->set_parameter(SpatialMaterial::PARAM_DIFFUSE,get_debug_navigation_color());*/
+ line_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ line_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ line_material->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ line_material->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ line_material->set_albedo(get_debug_navigation_color());
navigation_material = line_material;
@@ -818,11 +735,11 @@ Ref<Material> SceneTree::get_debug_navigation_disabled_material() {
return navigation_disabled_material;
Ref<SpatialMaterial> line_material = Ref<SpatialMaterial>(memnew(SpatialMaterial));
- /* line_material->set_flag(Material::FLAG_UNSHADED, true);
- line_material->set_line_width(3.0);
- line_material->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA, true);
- line_material->set_fixed_flag(SpatialMaterial::FLAG_USE_COLOR_ARRAY, true);
- line_material->set_parameter(SpatialMaterial::PARAM_DIFFUSE,get_debug_navigation_disabled_color());*/
+ line_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ line_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ line_material->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ line_material->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ line_material->set_albedo(get_debug_navigation_disabled_color());
navigation_disabled_material = line_material;
@@ -834,11 +751,11 @@ Ref<Material> SceneTree::get_debug_collision_material() {
return collision_material;
Ref<SpatialMaterial> line_material = Ref<SpatialMaterial>(memnew(SpatialMaterial));
- /*line_material->set_flag(Material::FLAG_UNSHADED, true);
- line_material->set_line_width(3.0);
- line_material->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA, true);
- line_material->set_fixed_flag(SpatialMaterial::FLAG_USE_COLOR_ARRAY, true);
- line_material->set_parameter(SpatialMaterial::PARAM_DIFFUSE,get_debug_collisions_color());*/
+ line_material->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ line_material->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ line_material->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ line_material->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ line_material->set_albedo(get_debug_collisions_color());
collision_material = line_material;
@@ -852,11 +769,12 @@ Ref<ArrayMesh> SceneTree::get_debug_contact_mesh() {
debug_contact_mesh = Ref<ArrayMesh>(memnew(ArrayMesh));
- Ref<SpatialMaterial> mat = memnew(SpatialMaterial);
- /*mat->set_flag(Material::FLAG_UNSHADED,true);
- mat->set_flag(Material::FLAG_DOUBLE_SIDED,true);
- mat->set_fixed_flag(SpatialMaterial::FLAG_USE_ALPHA,true);
- mat->set_parameter(SpatialMaterial::PARAM_DIFFUSE,get_debug_collision_contact_color());*/
+ Ref<SpatialMaterial> mat = Ref<SpatialMaterial>(memnew(SpatialMaterial));
+ mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
+ mat->set_feature(SpatialMaterial::FEATURE_TRANSPARENT, true);
+ mat->set_flag(SpatialMaterial::FLAG_SRGB_VERTEX_COLOR, true);
+ mat->set_flag(SpatialMaterial::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ mat->set_albedo(get_debug_collision_contact_color());
Vector3 diamond[6] = {
Vector3(-1, 0, 0),
@@ -1469,12 +1387,12 @@ void SceneTree::_live_edit_create_node_func(const NodePath &p_parent, const Stri
continue;
Node *n2 = n->get_node(p_parent);
- Object *o = ClassDB::instance(p_type);
- if (!o)
+ Node *no = Object::cast_to<Node>(ClassDB::instance(p_type));
+ if (!no) {
continue;
- Node *no = o->cast_to<Node>();
- no->set_name(p_name);
+ }
+ no->set_name(p_name);
n2->add_child(no);
}
}
@@ -1777,6 +1695,11 @@ Vector<int> SceneTree::get_network_connected_peers() const {
return ret;
}
+
+int SceneTree::get_rpc_sender_id() const {
+ return rpc_sender_id;
+}
+
void SceneTree::set_refuse_new_network_connections(bool p_refuse) {
ERR_FAIL_COND(!network_peer.is_valid());
network_peer->set_refuse_new_connections(p_refuse);
@@ -2171,7 +2094,9 @@ void SceneTree::_network_poll() {
ERR_PRINT("Error getting packet!");
}
+ rpc_sender_id = sender;
_network_process_packet(sender, packet, len);
+ rpc_sender_id = 0;
if (!network_peer.is_valid()) {
break; //it's also possible that a packet or RPC caused a disconnection, so also check here
@@ -2188,8 +2113,6 @@ void SceneTree::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_auto_accept_quit", "enabled"), &SceneTree::set_auto_accept_quit);
- ClassDB::bind_method(D_METHOD("set_editor_hint", "enable"), &SceneTree::set_editor_hint);
- ClassDB::bind_method(D_METHOD("is_editor_hint"), &SceneTree::is_editor_hint);
ClassDB::bind_method(D_METHOD("set_debug_collisions_hint", "enable"), &SceneTree::set_debug_collisions_hint);
ClassDB::bind_method(D_METHOD("is_debugging_collisions_hint"), &SceneTree::is_debugging_collisions_hint);
ClassDB::bind_method(D_METHOD("set_debug_navigation_hint", "enable"), &SceneTree::set_debug_navigation_hint);
@@ -2253,6 +2176,7 @@ void SceneTree::_bind_methods() {
ClassDB::bind_method(D_METHOD("has_network_peer"), &SceneTree::has_network_peer);
ClassDB::bind_method(D_METHOD("get_network_connected_peers"), &SceneTree::get_network_connected_peers);
ClassDB::bind_method(D_METHOD("get_network_unique_id"), &SceneTree::get_network_unique_id);
+ ClassDB::bind_method(D_METHOD("get_rpc_sender_id"), &SceneTree::get_rpc_sender_id);
ClassDB::bind_method(D_METHOD("set_refuse_new_network_connections", "refuse"), &SceneTree::set_refuse_new_network_connections);
ClassDB::bind_method(D_METHOD("is_refusing_new_network_connections"), &SceneTree::is_refusing_new_network_connections);
ClassDB::bind_method(D_METHOD("_network_peer_connected"), &SceneTree::_network_peer_connected);
@@ -2276,18 +2200,19 @@ void SceneTree::_bind_methods() {
ADD_SIGNAL(MethodInfo("connection_failed"));
ADD_SIGNAL(MethodInfo("server_disconnected"));
- BIND_CONSTANT(GROUP_CALL_DEFAULT);
- BIND_CONSTANT(GROUP_CALL_REVERSE);
- BIND_CONSTANT(GROUP_CALL_REALTIME);
- BIND_CONSTANT(GROUP_CALL_UNIQUE);
+ BIND_ENUM_CONSTANT(GROUP_CALL_DEFAULT);
+ BIND_ENUM_CONSTANT(GROUP_CALL_REVERSE);
+ BIND_ENUM_CONSTANT(GROUP_CALL_REALTIME);
+ BIND_ENUM_CONSTANT(GROUP_CALL_UNIQUE);
- BIND_CONSTANT(STRETCH_MODE_DISABLED);
- BIND_CONSTANT(STRETCH_MODE_2D);
- BIND_CONSTANT(STRETCH_MODE_VIEWPORT);
- BIND_CONSTANT(STRETCH_ASPECT_IGNORE);
- BIND_CONSTANT(STRETCH_ASPECT_KEEP);
- BIND_CONSTANT(STRETCH_ASPECT_KEEP_WIDTH);
- BIND_CONSTANT(STRETCH_ASPECT_KEEP_HEIGHT);
+ BIND_ENUM_CONSTANT(STRETCH_MODE_DISABLED);
+ BIND_ENUM_CONSTANT(STRETCH_MODE_2D);
+ BIND_ENUM_CONSTANT(STRETCH_MODE_VIEWPORT);
+
+ BIND_ENUM_CONSTANT(STRETCH_ASPECT_IGNORE);
+ BIND_ENUM_CONSTANT(STRETCH_ASPECT_KEEP);
+ BIND_ENUM_CONSTANT(STRETCH_ASPECT_KEEP_WIDTH);
+ BIND_ENUM_CONSTANT(STRETCH_ASPECT_KEEP_HEIGHT);
}
SceneTree *SceneTree::singleton = NULL;
@@ -2314,9 +2239,6 @@ SceneTree::SceneTree() {
accept_quit = true;
quit_on_go_back = true;
initialized = false;
-#ifdef TOOLS_ENABLED
- editor_hint = false;
-#endif
#ifdef DEBUG_ENABLED
debug_collisions_hint = false;
debug_navigation_hint = false;
@@ -2339,6 +2261,7 @@ SceneTree::SceneTree() {
call_lock = 0;
root_lock = 0;
node_count = 0;
+ rpc_sender_id = 0;
//create with mainloop
@@ -2386,7 +2309,7 @@ SceneTree::SceneTree() {
if (env.is_valid()) {
root->get_world()->set_fallback_environment(env);
} else {
- if (is_editor_hint()) {
+ if (Engine::get_singleton()->is_editor_hint()) {
//file was erased, clear the field.
ProjectSettings::get_singleton()->set("rendering/environment/default_environment", "");
} else {
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index 3543ebee90..594b806cef 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -111,9 +111,6 @@ private:
bool quit_on_go_back;
uint32_t last_id;
-#ifdef TOOLS_ENABLED
- bool editor_hint;
-#endif
#ifdef DEBUG_ENABLED
bool debug_collisions_hint;
bool debug_navigation_hint;
@@ -202,6 +199,8 @@ private:
void _connection_failed();
void _server_disconnected();
+ int rpc_sender_id;
+
//path sent caches
struct PathSentCache {
Map<int, bool> confirmed_peers;
@@ -363,14 +362,8 @@ public:
_FORCE_INLINE_ float get_idle_process_time() const { return idle_process_time; }
#ifdef TOOLS_ENABLED
- void set_editor_hint(bool p_enabled);
-
- bool is_editor_hint() const;
bool is_node_being_edited(const Node *p_node) const;
#else
- void set_editor_hint(bool p_enabled) {}
-
- bool is_editor_hint() const { return false; }
bool is_node_being_edited(const Node *p_node) const { return false; }
#endif
@@ -454,6 +447,7 @@ public:
bool has_network_peer() const;
int get_network_unique_id() const;
Vector<int> get_network_connected_peers() const;
+ int get_rpc_sender_id() const;
void set_refuse_new_network_connections(bool p_refuse);
bool is_refusing_new_network_connections() const;
@@ -465,5 +459,6 @@ public:
VARIANT_ENUM_CAST(SceneTree::StretchMode);
VARIANT_ENUM_CAST(SceneTree::StretchAspect);
+VARIANT_ENUM_CAST(SceneTree::CallGroupFlags);
#endif
diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp
index a61d1100e6..df7d609ac0 100755
--- a/scene/main/timer.cpp
+++ b/scene/main/timer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,6 +29,8 @@
/*************************************************************************/
#include "timer.h"
+#include "engine.h"
+
void Timer::_notification(int p_what) {
switch (p_what) {
@@ -37,7 +39,7 @@ void Timer::_notification(int p_what) {
if (autostart) {
#ifdef TOOLS_ENABLED
- if (get_tree()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root() == this || get_tree()->get_edited_scene_root()->is_a_parent_of(this)))
+ if (Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root() == this || get_tree()->get_edited_scene_root()->is_a_parent_of(this)))
break;
#endif
start();
@@ -202,8 +204,8 @@ void Timer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "one_shot"), "set_one_shot", "is_one_shot");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autostart"), "set_autostart", "has_autostart");
- BIND_CONSTANT(TIMER_PROCESS_FIXED);
- BIND_CONSTANT(TIMER_PROCESS_IDLE);
+ BIND_ENUM_CONSTANT(TIMER_PROCESS_FIXED);
+ BIND_ENUM_CONSTANT(TIMER_PROCESS_IDLE);
}
Timer::Timer() {
diff --git a/scene/main/timer.h b/scene/main/timer.h
index dd4711ec37..0cd92f12de 100755
--- a/scene/main/timer.h
+++ b/scene/main/timer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 4f27231050..02da926e50 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,28 +28,23 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "viewport.h"
+
#include "os/input.h"
#include "os/os.h"
-#include "scene/3d/spatial.h"
-#include "servers/physics_2d_server.h"
-//#include "scene/3d/camera.h"
-
+#include "project_settings.h"
+#include "scene/2d/collision_object_2d.h"
#include "scene/3d/camera.h"
#include "scene/3d/collision_object.h"
#include "scene/3d/listener.h"
-#include "scene/3d/spatial_indexer.h"
+#include "scene/3d/scenario_fx.h"
+#include "scene/3d/spatial.h"
#include "scene/gui/control.h"
-#include "scene/resources/mesh.h"
-
-#include "scene/2d/collision_object_2d.h"
-
#include "scene/gui/label.h"
#include "scene/gui/panel.h"
#include "scene/main/timer.h"
+#include "scene/resources/mesh.h"
#include "scene/scene_string_names.h"
-
-#include "project_settings.h"
-#include "scene/3d/scenario_fx.h"
+#include "servers/physics_2d_server.h"
void ViewportTexture::setup_local_to_scene() {
@@ -68,7 +63,7 @@ void ViewportTexture::setup_local_to_scene() {
ERR_EXPLAIN("ViewportTexture: Path to node is invalid");
ERR_FAIL_COND(!vpn);
- vp = vpn->cast_to<Viewport>();
+ vp = Object::cast_to<Viewport>(vpn);
ERR_EXPLAIN("ViewportTexture: Path to node does not point to a viewport");
ERR_FAIL_COND(!vp);
@@ -337,22 +332,18 @@ void Viewport::_test_new_mouseover(ObjectID new_collider) {
if (new_collider != physics_object_over) {
if (physics_object_over) {
- Object *obj = ObjectDB::get_instance(physics_object_over);
- if (obj) {
- CollisionObject *co = obj->cast_to<CollisionObject>();
- if (co) {
- co->_mouse_exit();
- }
+
+ CollisionObject *co = Object::cast_to<CollisionObject>(ObjectDB::get_instance(physics_object_over));
+ if (co) {
+ co->_mouse_exit();
}
}
if (new_collider) {
- Object *obj = ObjectDB::get_instance(new_collider);
- if (obj) {
- CollisionObject *co = obj->cast_to<CollisionObject>();
- if (co) {
- co->_mouse_enter();
- }
+
+ CollisionObject *co = Object::cast_to<CollisionObject>(ObjectDB::get_instance(new_collider));
+ if (co) {
+ co->_mouse_enter();
}
}
@@ -399,7 +390,7 @@ void Viewport::_notification(int p_what) {
contact_3d_debug_instance = VisualServer::get_singleton()->instance_create();
VisualServer::get_singleton()->instance_set_base(contact_3d_debug_instance, contact_3d_debug_multimesh);
VisualServer::get_singleton()->instance_set_scenario(contact_3d_debug_instance, find_world()->get_scenario());
- VisualServer::get_singleton()->instance_geometry_set_flag(contact_3d_debug_instance, VS::INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS, true);
+ //VisualServer::get_singleton()->instance_geometry_set_flag(contact_3d_debug_instance, VS::INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS, true);
}
VS::get_singleton()->viewport_set_active(viewport, true);
@@ -552,7 +543,7 @@ void Viewport::_notification(int p_what) {
for (int i = 0; i < rc; i++) {
if (res[i].collider_id && res[i].collider) {
- CollisionObject2D *co = res[i].collider->cast_to<CollisionObject2D>();
+ CollisionObject2D *co = Object::cast_to<CollisionObject2D>(res[i].collider);
if (co) {
Map<ObjectID, uint64_t>::Element *E = physics_2d_mouseover.find(res[i].collider_id);
@@ -575,7 +566,7 @@ void Viewport::_notification(int p_what) {
Object *o = ObjectDB::get_instance(E->key());
if (o) {
- CollisionObject2D *co = o->cast_to<CollisionObject2D>();
+ CollisionObject2D *co = Object::cast_to<CollisionObject2D>(o);
if (co) {
co->_mouse_exit();
}
@@ -595,19 +586,14 @@ void Viewport::_notification(int p_what) {
if (physics_object_capture != 0) {
- Object *obj = ObjectDB::get_instance(physics_object_capture);
- if (obj) {
- CollisionObject *co = obj->cast_to<CollisionObject>();
- if (co) {
- co->_input_event(camera, ev, Vector3(), Vector3(), 0);
- captured = true;
- if (mb.is_valid() && mb->get_button_index() == 1 && !mb->is_pressed()) {
- physics_object_capture = 0;
- }
-
- } else {
+ CollisionObject *co = Object::cast_to<CollisionObject>(ObjectDB::get_instance(physics_object_capture));
+ if (co) {
+ co->_input_event(camera, ev, Vector3(), Vector3(), 0);
+ captured = true;
+ if (mb.is_valid() && mb->get_button_index() == 1 && !mb->is_pressed()) {
physics_object_capture = 0;
}
+
} else {
physics_object_capture = 0;
}
@@ -640,18 +626,15 @@ void Viewport::_notification(int p_what) {
ObjectID new_collider = 0;
if (col) {
- if (result.collider) {
-
- CollisionObject *co = result.collider->cast_to<CollisionObject>();
- if (co) {
+ CollisionObject *co = Object::cast_to<CollisionObject>(result.collider);
+ if (co) {
- co->_input_event(camera, ev, result.position, result.normal, result.shape);
- last_object = co;
- last_id = result.collider_id;
- new_collider = last_id;
- if (co->get_capture_input_on_drag() && mb.is_valid() && mb->get_button_index() == 1 && mb->is_pressed()) {
- physics_object_capture = last_id;
- }
+ co->_input_event(camera, ev, result.position, result.normal, result.shape);
+ last_object = co;
+ last_id = result.collider_id;
+ new_collider = last_id;
+ if (co->get_capture_input_on_drag() && mb.is_valid() && mb->get_button_index() == 1 && mb->is_pressed()) {
+ physics_object_capture = last_id;
}
}
}
@@ -678,11 +661,9 @@ void Viewport::_notification(int p_what) {
bool col = space->intersect_ray(from, from + dir * 10000, result, Set<RID>(), 0xFFFFFFFF, 0xFFFFFFFF, true);
ObjectID new_collider = 0;
if (col) {
- if (result.collider) {
- CollisionObject *co = result.collider->cast_to<CollisionObject>();
- if (co) {
- new_collider = result.collider_id;
- }
+ CollisionObject *co = Object::cast_to<CollisionObject>(result.collider);
+ if (co) {
+ new_collider = result.collider_id;
}
}
@@ -750,7 +731,7 @@ Size2 Viewport::get_size() const {
void Viewport::_update_listener() {
/*
- if (is_inside_tree() && audio_listener && (camera || listener) && (!get_parent() || (get_parent()->cast_to<Control>() && get_parent()->cast_to<Control>()->is_visible_in_tree()))) {
+ if (is_inside_tree() && audio_listener && (camera || listener) && (!get_parent() || (Object::cast_to<Control>(get_parent()) && Object::cast_to<Control>(get_parent())->is_visible_in_tree()))) {
SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, find_world()->get_sound_space());
} else {
SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, RID());
@@ -761,7 +742,7 @@ void Viewport::_update_listener() {
void Viewport::_update_listener_2d() {
/*
- if (is_inside_tree() && audio_listener && (!get_parent() || (get_parent()->cast_to<Control>() && get_parent()->cast_to<Control>()->is_visible_in_tree())))
+ if (is_inside_tree() && audio_listener && (!get_parent() || (Object::cast_to<Control>(get_parent()) && Object::cast_to<Control>(get_parent())->is_visible_in_tree())))
SpatialSound2DServer::get_singleton()->listener_set_space(internal_listener_2d, find_world_2d()->get_sound_space());
else
SpatialSound2DServer::get_singleton()->listener_set_space(internal_listener_2d, RID());
@@ -1029,11 +1010,11 @@ void Viewport::_propagate_enter_world(Node *p_node) {
if (!p_node->is_inside_tree()) //may not have entered scene yet
return;
- if (p_node->cast_to<Spatial>() || p_node->cast_to<WorldEnvironment>()) {
+ if (Object::cast_to<Spatial>(p_node) || Object::cast_to<WorldEnvironment>(p_node)) {
p_node->notification(Spatial::NOTIFICATION_ENTER_WORLD);
} else {
- Viewport *v = p_node->cast_to<Viewport>();
+ Viewport *v = Object::cast_to<Viewport>(p_node);
if (v) {
if (v->world.is_valid())
@@ -1053,7 +1034,7 @@ void Viewport::_propagate_viewport_notification(Node *p_node, int p_what) {
p_node->notification(p_what);
for (int i = 0; i < p_node->get_child_count(); i++) {
Node *c = p_node->get_child(i);
- if (c->cast_to<Viewport>())
+ if (Object::cast_to<Viewport>(c))
continue;
_propagate_viewport_notification(c, p_what);
}
@@ -1066,11 +1047,11 @@ void Viewport::_propagate_exit_world(Node *p_node) {
if (!p_node->is_inside_tree()) //may have exited scene already
return;
- if (p_node->cast_to<Spatial>() || p_node->cast_to<WorldEnvironment>()) {
+ if (Object::cast_to<Spatial>(p_node) || Object::cast_to<WorldEnvironment>(p_node)) {
p_node->notification(Spatial::NOTIFICATION_EXIT_WORLD);
} else {
- Viewport *v = p_node->cast_to<Viewport>();
+ Viewport *v = Object::cast_to<Viewport>(p_node);
if (v) {
if (v->world.is_valid())
@@ -1194,44 +1175,7 @@ bool Viewport::is_size_override_stretch_enabled() const {
return size_override_stretch;
}
-#if 0
-void Viewport::set_as_render_target(bool p_enable){
-
-/* if (render_target==p_enable)
- return;
-
- render_target=p_enable;
-
- VS::get_singleton()->viewport_set_as_render_target(viewport,p_enable);
- if (is_inside_tree()) {
-
- if (p_enable)
- _vp_exit_tree();
- else
- _vp_enter_tree();
- }
-
- if (p_enable) {
-
- texture_rid = VS::get_singleton()->viewport_get_texture(viewport);
- } else {
-
- texture_rid=RID();
- }
-
- texture->set_flags(texture->flags);
- texture->emit_changed();
-
- update_configuration_warning();
- */
-}
-
-bool Viewport::is_set_as_render_target() const{
- return render_target;
-
-}
-#endif
void Viewport::set_update_mode(UpdateMode p_mode) {
update_mode = p_mode;
@@ -1241,7 +1185,6 @@ Viewport::UpdateMode Viewport::get_update_mode() const {
return update_mode;
}
-//RID get_texture() const;
Ref<ViewportTexture> Viewport::get_texture() const {
@@ -1354,7 +1297,7 @@ void Viewport::_vp_input(const Ref<InputEvent> &p_ev) {
return;
#ifdef TOOLS_ENABLED
- if (get_tree()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_a_parent_of(this)) {
+ if (Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_a_parent_of(this)) {
return;
}
#endif
@@ -1374,7 +1317,7 @@ void Viewport::_vp_unhandled_input(const Ref<InputEvent> &p_ev) {
if (disable_input)
return;
#ifdef TOOLS_ENABLED
- if (get_tree()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_a_parent_of(this)) {
+ if (Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_a_parent_of(this)) {
return;
}
#endif
@@ -1456,6 +1399,10 @@ void Viewport::_gui_show_tooltip() {
gui.tooltip_popup = NULL;
}
+ if (!gui.tooltip) {
+ return;
+ }
+
Control *rp = gui.tooltip->get_root_parent_control();
if (!rp)
return;
@@ -1473,8 +1420,8 @@ void Viewport::_gui_show_tooltip() {
gui.tooltip_label->set_anchor_and_margin(MARGIN_LEFT, Control::ANCHOR_BEGIN, ttp->get_margin(MARGIN_LEFT));
gui.tooltip_label->set_anchor_and_margin(MARGIN_TOP, Control::ANCHOR_BEGIN, ttp->get_margin(MARGIN_TOP));
- gui.tooltip_label->set_anchor_and_margin(MARGIN_RIGHT, Control::ANCHOR_END, ttp->get_margin(MARGIN_RIGHT));
- gui.tooltip_label->set_anchor_and_margin(MARGIN_BOTTOM, Control::ANCHOR_END, ttp->get_margin(MARGIN_BOTTOM));
+ gui.tooltip_label->set_anchor_and_margin(MARGIN_RIGHT, Control::ANCHOR_END, -ttp->get_margin(MARGIN_RIGHT));
+ gui.tooltip_label->set_anchor_and_margin(MARGIN_BOTTOM, Control::ANCHOR_END, -ttp->get_margin(MARGIN_BOTTOM));
gui.tooltip_label->set_text(tooltip);
Rect2 r(gui.tooltip_pos + Point2(10, 10), gui.tooltip_label->get_combined_minimum_size() + ttp->get_minimum_size());
Rect2 vr = gui.tooltip_label->get_viewport_rect();
@@ -1510,12 +1457,12 @@ void Viewport::_gui_call_input(Control *p_control, const Ref<InputEvent> &p_inpu
mb->get_button_index() == BUTTON_WHEEL_LEFT ||
mb->get_button_index() == BUTTON_WHEEL_RIGHT));
- bool ismouse = ev.is_valid() || p_input->cast_to<InputEventMouseMotion>() != NULL;
+ bool ismouse = ev.is_valid() || Object::cast_to<InputEventMouseMotion>(*p_input) != NULL;
CanvasItem *ci = p_control;
while (ci) {
- Control *control = ci->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(ci);
if (control) {
control->call_multilevel(SceneStringNames::get_singleton()->_gui_input, ev);
if (gui.key_event_accepted)
@@ -1588,10 +1535,10 @@ Control *Viewport::_gui_find_control(const Point2 &p_global) {
Control *Viewport::_gui_find_control_at_pos(CanvasItem *p_node, const Point2 &p_global, const Transform2D &p_xform, Transform2D &r_inv_xform) {
- if (p_node->cast_to<Viewport>())
+ if (Object::cast_to<Viewport>(p_node))
return NULL;
- Control *c = p_node->cast_to<Control>();
+ Control *c = Object::cast_to<Control>(p_node);
if (c) {
//print_line("at "+String(c->get_path())+" POS "+c->get_position()+" bt "+p_xform);
@@ -1616,7 +1563,7 @@ Control *Viewport::_gui_find_control_at_pos(CanvasItem *p_node, const Point2 &p_
if (p_node == gui.tooltip_popup)
continue;
- CanvasItem *ci = p_node->get_child(i)->cast_to<CanvasItem>();
+ CanvasItem *ci = Object::cast_to<CanvasItem>(p_node->get_child(i));
if (!ci || ci->is_set_as_toplevel())
continue;
@@ -1645,7 +1592,7 @@ bool Viewport::_gui_drop(Control *p_at_control, Point2 p_at_pos, bool p_just_che
CanvasItem *ci = p_at_control;
while (ci) {
- Control *control = ci->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(ci);
if (control) {
if (control->can_drop_data(p_at_pos, gui.drag_data)) {
@@ -1770,7 +1717,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
CanvasItem *ci = gui.mouse_focus;
while (ci) {
- Control *control = ci->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(ci);
if (control) {
if (control->get_focus_mode() != Control::FOCUS_NONE) {
if (control != gui.key_focus) {
@@ -1891,7 +1838,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
CanvasItem *ci = gui.mouse_focus;
while (ci) {
- Control *control = ci->cast_to<Control>();
+ Control *control = Object::cast_to<Control>(ci);
if (control) {
gui.drag_data = control->get_drag_data(control->get_global_transform_with_canvas().affine_inverse().xform(mpos) - gui.drag_accum);
@@ -2236,7 +2183,7 @@ void Viewport::_gui_remove_from_modal_stack(List<Control *>::Element *MI, Object
if (!next) { //top of stack
Object *pfo = ObjectDB::get_instance(p_prev_focus_owner);
- Control *pfoc = pfo->cast_to<Control>();
+ Control *pfoc = Object::cast_to<Control>(pfo);
if (!pfoc)
return;
@@ -2266,7 +2213,7 @@ void Viewport::_gui_force_drag(Control *p_base, const Variant &p_data, Control *
void Viewport::_gui_set_drag_preview(Control *p_base, Control *p_control) {
ERR_FAIL_NULL(p_control);
- ERR_FAIL_COND(!((Object *)p_control)->cast_to<Control>());
+ ERR_FAIL_COND(!Object::cast_to<Control>((Object *)p_control));
ERR_FAIL_COND(p_control->is_inside_tree());
ERR_FAIL_COND(p_control->get_parent() != NULL);
@@ -2441,14 +2388,18 @@ void Viewport::unhandled_input(const Ref<InputEvent> &p_event) {
get_tree()->_call_input_pause(unhandled_input_group, "_unhandled_input", p_event);
//call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"unhandled_input","_unhandled_input",ev);
- if (!get_tree()->input_handled && p_event->cast_to<InputEventKey>() != NULL) {
+ if (!get_tree()->input_handled && Object::cast_to<InputEventKey>(*p_event) != NULL) {
get_tree()->_call_input_pause(unhandled_key_input_group, "_unhandled_key_input", p_event);
//call_group(GROUP_CALL_REVERSE|GROUP_CALL_REALTIME|GROUP_CALL_MULIILEVEL,"unhandled_key_input","_unhandled_key_input",ev);
}
if (physics_object_picking && !get_tree()->input_handled) {
- if (Input::get_singleton()->get_mouse_mode() != Input::MOUSE_MODE_CAPTURED && (p_event->cast_to<InputEventMouseButton>() || p_event->cast_to<InputEventMouseMotion>() || p_event->cast_to<InputEventScreenDrag>() || p_event->cast_to<InputEventScreenTouch>())) {
+ if (Input::get_singleton()->get_mouse_mode() != Input::MOUSE_MODE_CAPTURED &&
+ (Object::cast_to<InputEventMouseButton>(*p_event) ||
+ Object::cast_to<InputEventMouseMotion>(*p_event) ||
+ Object::cast_to<InputEventScreenDrag>(*p_event) ||
+ Object::cast_to<InputEventScreenTouch>(*p_event))) {
physics_picking_events.push_back(p_event);
}
}
@@ -2563,7 +2514,7 @@ Control *Viewport::get_modal_stack_top() const {
String Viewport::get_configuration_warning() const {
- /*if (get_parent() && !get_parent()->cast_to<Control>() && !render_target) {
+ /*if (get_parent() && !Object::cast_to<Control>(get_parent()) && !render_target) {
return TTR("This viewport is not set as render target. If you intend for it to display its contents directly to the screen, make it a child of a Control so it can obtain a size. Otherwise, make it a RenderTarget and assign its internal texture to some node for display.");
}*/
@@ -2741,7 +2692,7 @@ void Viewport::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "arvr"), "set_use_arvr", "use_arvr");
- ADD_PROPERTY(PropertyInfo(Variant::RECT2, "size"), "set_size", "get_size");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size"), "set_size", "get_size");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "own_world"), "set_use_own_world", "is_using_own_world");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world", PROPERTY_HINT_RESOURCE_TYPE, "World"), "set_world", "get_world");
//ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"world_2d",PROPERTY_HINT_RESOURCE_TYPE,"World2D"), "set_world_2d", "get_world_2d") ;
@@ -2772,38 +2723,38 @@ void Viewport::_bind_methods() {
ADD_SIGNAL(MethodInfo("size_changed"));
- BIND_CONSTANT(UPDATE_DISABLED);
- BIND_CONSTANT(UPDATE_ONCE);
- BIND_CONSTANT(UPDATE_WHEN_VISIBLE);
- BIND_CONSTANT(UPDATE_ALWAYS);
-
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED);
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_1);
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_4);
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_16);
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_64);
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_256);
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_1024);
- BIND_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_MAX);
-
- BIND_CONSTANT(RENDER_INFO_OBJECTS_IN_FRAME);
- BIND_CONSTANT(RENDER_INFO_VERTICES_IN_FRAME);
- BIND_CONSTANT(RENDER_INFO_MATERIAL_CHANGES_IN_FRAME);
- BIND_CONSTANT(RENDER_INFO_SHADER_CHANGES_IN_FRAME);
- BIND_CONSTANT(RENDER_INFO_SURFACE_CHANGES_IN_FRAME);
- BIND_CONSTANT(RENDER_INFO_DRAW_CALLS_IN_FRAME);
- BIND_CONSTANT(RENDER_INFO_MAX);
-
- BIND_CONSTANT(DEBUG_DRAW_DISABLED);
- BIND_CONSTANT(DEBUG_DRAW_UNSHADED);
- BIND_CONSTANT(DEBUG_DRAW_OVERDRAW);
- BIND_CONSTANT(DEBUG_DRAW_WIREFRAME);
-
- BIND_CONSTANT(MSAA_DISABLED);
- BIND_CONSTANT(MSAA_2X);
- BIND_CONSTANT(MSAA_4X);
- BIND_CONSTANT(MSAA_8X);
- BIND_CONSTANT(MSAA_16X);
+ BIND_ENUM_CONSTANT(UPDATE_DISABLED);
+ BIND_ENUM_CONSTANT(UPDATE_ONCE);
+ BIND_ENUM_CONSTANT(UPDATE_WHEN_VISIBLE);
+ BIND_ENUM_CONSTANT(UPDATE_ALWAYS);
+
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED);
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_1);
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_4);
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_16);
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_64);
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_256);
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_1024);
+ BIND_ENUM_CONSTANT(SHADOW_ATLAS_QUADRANT_SUBDIV_MAX);
+
+ BIND_ENUM_CONSTANT(RENDER_INFO_OBJECTS_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_INFO_VERTICES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_INFO_MATERIAL_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_INFO_SHADER_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_INFO_SURFACE_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_INFO_DRAW_CALLS_IN_FRAME);
+ BIND_ENUM_CONSTANT(RENDER_INFO_MAX);
+
+ BIND_ENUM_CONSTANT(DEBUG_DRAW_DISABLED);
+ BIND_ENUM_CONSTANT(DEBUG_DRAW_UNSHADED);
+ BIND_ENUM_CONSTANT(DEBUG_DRAW_OVERDRAW);
+ BIND_ENUM_CONSTANT(DEBUG_DRAW_WIREFRAME);
+
+ BIND_ENUM_CONSTANT(MSAA_DISABLED);
+ BIND_ENUM_CONSTANT(MSAA_2X);
+ BIND_ENUM_CONSTANT(MSAA_4X);
+ BIND_ENUM_CONSTANT(MSAA_8X);
+ BIND_ENUM_CONSTANT(MSAA_16X);
}
Viewport::Viewport() {
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 83c989db54..f527fa4f5b 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index 3e6d80d314..e01f5e3cdf 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,21 +28,44 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "register_scene_types.h"
-#include "os/os.h"
-#include "project_settings.h"
-#include "scene/io/resource_format_image.h"
-#include "scene/io/resource_format_wav.h"
-
-//#include "scene/io/scene_format_script.h"
-#include "class_db.h"
-#include "resources/default_theme/default_theme.h"
+
+#include "core/class_db.h"
+#include "core/os/os.h"
+#include "core/project_settings.h"
+#include "scene/2d/animated_sprite.h"
+#include "scene/2d/area_2d.h"
+#include "scene/2d/audio_stream_player_2d.h"
+#include "scene/2d/back_buffer_copy.h"
+#include "scene/2d/camera_2d.h"
+#include "scene/2d/canvas_item.h"
+#include "scene/2d/canvas_modulate.h"
+#include "scene/2d/collision_polygon_2d.h"
+#include "scene/2d/collision_shape_2d.h"
+#include "scene/2d/joints_2d.h"
#include "scene/2d/light_2d.h"
#include "scene/2d/light_occluder_2d.h"
+#include "scene/2d/line_2d.h"
+#include "scene/2d/navigation2d.h"
+#include "scene/2d/parallax_background.h"
+#include "scene/2d/parallax_layer.h"
#include "scene/2d/particles_2d.h"
#include "scene/2d/path_2d.h"
+#include "scene/2d/physics_body_2d.h"
+#include "scene/2d/polygon_2d.h"
+#include "scene/2d/position_2d.h"
+#include "scene/2d/ray_cast_2d.h"
+#include "scene/2d/remote_transform_2d.h"
+#include "scene/2d/screen_button.h"
+#include "scene/2d/sprite.h"
+#include "scene/2d/tile_map.h"
+#include "scene/2d/visibility_notifier_2d.h"
+#include "scene/2d/y_sort.h"
+#include "scene/animation/animation_player.h"
+#include "scene/animation/animation_tree_player.h"
+#include "scene/animation/tween.h"
+#include "scene/audio/audio_player.h"
#include "scene/gui/box_container.h"
#include "scene/gui/button.h"
-
#include "scene/gui/button_group.h"
#include "scene/gui/center_container.h"
#include "scene/gui/check_box.h"
@@ -88,154 +111,85 @@
#include "scene/main/canvas_layer.h"
#include "scene/main/http_request.h"
#include "scene/main/instance_placeholder.h"
-#include "scene/main/viewport.h"
-#include "scene/resources/audio_stream_sample.h"
-#include "scene/resources/video_stream.h"
-
-#include "scene/2d/animated_sprite.h"
-#include "scene/2d/back_buffer_copy.h"
-#include "scene/2d/canvas_item.h"
-#include "scene/2d/polygon_2d.h"
-#include "scene/2d/sprite.h"
-
-#include "scene/2d/visibility_notifier_2d.h"
-
-#include "scene/2d/area_2d.h"
-#include "scene/2d/camera_2d.h"
-#include "scene/2d/collision_polygon_2d.h"
-#include "scene/2d/collision_shape_2d.h"
-#include "scene/2d/joints_2d.h"
-#include "scene/2d/parallax_background.h"
-#include "scene/2d/parallax_layer.h"
-#include "scene/2d/physics_body_2d.h"
-#include "scene/2d/ray_cast_2d.h"
-//#include "scene/2d/sound_player_2d.h"
-//#include "scene/2d/sample_player_2d.h"
-#include "scene/2d/audio_stream_player_2d.h"
-#include "scene/2d/canvas_modulate.h"
-#include "scene/2d/navigation2d.h"
-#include "scene/2d/remote_transform_2d.h"
-#include "scene/2d/screen_button.h"
-#include "scene/2d/y_sort.h"
-
-#include "scene/2d/position_2d.h"
-#include "scene/2d/tile_map.h"
-//#include "scene/2d/tile_map.h"
-#include "scene/2d/line_2d.h"
-
-#include "scene/resources/tile_set.h"
-
-#include "scene/animation/animation_player.h"
-#include "scene/animation/animation_tree_player.h"
-#include "scene/animation/tween.h"
#include "scene/main/resource_preloader.h"
#include "scene/main/scene_tree.h"
-#include "scene/resources/packed_scene.h"
-
-#include "scene/resources/mesh_data_tool.h"
-#include "scene/resources/surface_tool.h"
-
-#include "scene/resources/dynamic_font.h"
-#include "scene/resources/dynamic_font_stb.h"
-
#include "scene/main/timer.h"
-
-#include "scene/audio/audio_player.h"
-//#include "scene/audio/event_player.h"
-//#include "scene/audio/sound_room_params.h"
+#include "scene/main/viewport.h"
+#include "scene/resources/audio_stream_sample.h"
+#include "scene/resources/bit_mask.h"
#include "scene/resources/box_shape.h"
#include "scene/resources/capsule_shape.h"
-#include "scene/resources/concave_polygon_shape.h"
-#include "scene/resources/convex_polygon_shape.h"
-#include "scene/resources/plane_shape.h"
-#include "scene/resources/ray_shape.h"
-#include "scene/resources/sphere_shape.h"
-
#include "scene/resources/capsule_shape_2d.h"
#include "scene/resources/circle_shape_2d.h"
+#include "scene/resources/color_ramp.h"
+#include "scene/resources/concave_polygon_shape.h"
#include "scene/resources/concave_polygon_shape_2d.h"
+#include "scene/resources/convex_polygon_shape.h"
#include "scene/resources/convex_polygon_shape_2d.h"
+#include "scene/resources/default_theme/default_theme.h"
+#include "scene/resources/dynamic_font.h"
+#include "scene/resources/dynamic_font_stb.h"
+#include "scene/resources/material.h"
+#include "scene/resources/mesh.h"
+#include "scene/resources/mesh_data_tool.h"
+#include "scene/resources/mesh_library.h"
+#include "scene/resources/packed_scene.h"
+#include "scene/resources/plane_shape.h"
+#include "scene/resources/polygon_path_finder.h"
+#include "scene/resources/primitive_meshes.h"
+#include "scene/resources/ray_shape.h"
#include "scene/resources/rectangle_shape_2d.h"
+#include "scene/resources/scene_format_text.h"
#include "scene/resources/segment_shape_2d.h"
+#include "scene/resources/shader_graph.h"
#include "scene/resources/shape_line_2d.h"
-
-#include "scene/resources/mesh_library.h"
-
-#include "scene/resources/polygon_path_finder.h"
-
-//#include "scene/resources/sample.h"
-#include "scene/3d/audio_stream_player_3d.h"
-#include "scene/resources/material.h"
-#include "scene/resources/mesh.h"
-#include "scene/resources/room.h"
#include "scene/resources/sky_box.h"
+#include "scene/resources/sphere_shape.h"
+#include "scene/resources/surface_tool.h"
#include "scene/resources/texture.h"
-
-#include "scene/resources/primitive_meshes.h"
-
-#include "scene/resources/shader_graph.h"
-
+#include "scene/resources/tile_set.h"
+#include "scene/resources/video_stream.h"
#include "scene/resources/world.h"
#include "scene/resources/world_2d.h"
-
-//#include "scene/resources/sample_library.h"
-//#include "scene/resources/audio_stream.h"
-#include "scene/resources/bit_mask.h"
-#include "scene/resources/color_ramp.h"
-#include "scene/resources/gibberish_stream.h"
#include "scene/scene_string_names.h"
-#include "scene/3d/bone_attachment.h"
-#include "scene/3d/path.h"
-#include "scene/3d/remote_transform.h"
-#include "scene/3d/room_instance.h"
-#include "scene/3d/scenario_fx.h"
-#include "scene/3d/skeleton.h"
-#include "scene/3d/spatial.h"
-
-#include "scene/3d/visibility_notifier.h"
-
#ifndef _3D_DISABLED
-#include "scene/3d/camera.h"
-#include "scene/3d/listener.h"
-
+#include "scene/3d/area.h"
#include "scene/3d/arvr_nodes.h"
-
+#include "scene/3d/audio_stream_player_3d.h"
+#include "scene/3d/bone_attachment.h"
+#include "scene/3d/camera.h"
+#include "scene/3d/collision_polygon.h"
+#include "scene/3d/collision_shape.h"
#include "scene/3d/gi_probe.h"
+#include "scene/3d/immediate_geometry.h"
#include "scene/3d/interpolated_camera.h"
#include "scene/3d/light.h"
+#include "scene/3d/listener.h"
#include "scene/3d/mesh_instance.h"
+#include "scene/3d/multimesh_instance.h"
+#include "scene/3d/navigation.h"
+#include "scene/3d/navigation_mesh.h"
#include "scene/3d/particles.h"
+#include "scene/3d/path.h"
#include "scene/3d/physics_body.h"
+#include "scene/3d/physics_joint.h"
#include "scene/3d/portal.h"
#include "scene/3d/position_3d.h"
-#include "scene/3d/reflection_probe.h"
-#include "scene/resources/environment.h"
-
-#include "scene/3d/area.h"
-
-#include "scene/3d/collision_shape.h"
-#include "scene/3d/immediate_geometry.h"
-#include "scene/3d/multimesh_instance.h"
-#include "scene/3d/physics_joint.h"
+#include "scene/3d/proximity_group.h"
#include "scene/3d/ray_cast.h"
+#include "scene/3d/reflection_probe.h"
+#include "scene/3d/remote_transform.h"
+#include "scene/3d/room_instance.h"
+#include "scene/3d/scenario_fx.h"
+#include "scene/3d/skeleton.h"
+#include "scene/3d/spatial.h"
#include "scene/3d/sprite_3d.h"
#include "scene/3d/vehicle_body.h"
-//#include "scene/3d/spatial_sample_player.h"
-//#include "scene/3d/spatial_stream_player.h"
-#include "scene/3d/collision_polygon.h"
-#include "scene/3d/navigation.h"
-#include "scene/3d/navigation_mesh.h"
-#include "scene/3d/proximity_group.h"
+#include "scene/3d/visibility_notifier.h"
+#include "scene/resources/environment.h"
#endif
-#include "scene/resources/scene_format_text.h"
-
-//static ResourceFormatLoaderWAV *resource_loader_wav=NULL;
-
-#ifdef TOOLS_ENABLED
-
-#endif
static ResourceFormatLoaderTheme *resource_loader_theme = NULL;
static ResourceFormatSaverText *resource_saver_text = NULL;
@@ -245,8 +199,6 @@ static ResourceFormatLoaderDynamicFont *resource_loader_dynamic_font = NULL;
static ResourceFormatLoaderStreamTexture *resource_loader_stream_texture = NULL;
-//static SceneStringNames *string_names;
-
void register_scene_types() {
SceneStringNames::create();
@@ -255,20 +207,12 @@ void register_scene_types() {
Node::init_node_hrcr();
- //resource_loader_wav = memnew( ResourceFormatLoaderWAV );
- //ResourceLoader::add_resource_format_loader( resource_loader_wav );
resource_loader_dynamic_font = memnew(ResourceFormatLoaderDynamicFont);
ResourceLoader::add_resource_format_loader(resource_loader_dynamic_font);
resource_loader_stream_texture = memnew(ResourceFormatLoaderStreamTexture);
ResourceLoader::add_resource_format_loader(resource_loader_stream_texture);
-#ifdef TOOLS_ENABLED
-
-//scene first!
-
-#endif
-
resource_loader_theme = memnew(ResourceFormatLoaderTheme);
ResourceLoader::add_resource_format_loader(resource_loader_theme);
@@ -316,7 +260,6 @@ void register_scene_types() {
ClassDB::register_class<ShortCut>();
ClassDB::register_class<Control>();
- //ClassDB::register_type<EmptyControl>();
ClassDB::register_class<Button>();
ClassDB::register_class<Label>();
ClassDB::register_class<HScrollBar>();
@@ -424,7 +367,6 @@ void register_scene_types() {
ClassDB::register_class<GIProbe>();
ClassDB::register_class<GIProbeData>();
ClassDB::register_class<AnimationTreePlayer>();
- ClassDB::register_class<Portal>();
ClassDB::register_class<Particles>();
ClassDB::register_class<Position3D>();
ClassDB::register_class<NavigationMeshInstance>();
@@ -446,14 +388,12 @@ void register_scene_types() {
ClassDB::register_class<CollisionPolygon>();
ClassDB::register_class<RayCast>();
ClassDB::register_class<MultiMeshInstance>();
- ClassDB::register_class<Room>();
+
ClassDB::register_class<Curve3D>();
ClassDB::register_class<Path>();
ClassDB::register_class<PathFollow>();
ClassDB::register_class<VisibilityNotifier>();
ClassDB::register_class<VisibilityEnabler>();
- // ClassDB::register_class<BakedLight>();
- //ClassDB::register_type<BakedLightSampler>();
ClassDB::register_class<WorldEnvironment>();
ClassDB::register_class<RemoteTransform>();
@@ -464,8 +404,6 @@ void register_scene_types() {
ClassDB::register_class<ConeTwistJoint>();
ClassDB::register_class<Generic6DOFJoint>();
- //scenariofx
-
OS::get_singleton()->yield(); //may take time to init
#endif
@@ -545,8 +483,6 @@ void register_scene_types() {
SceneTree::add_idle_callback(ParticlesMaterial::flush_changes);
ParticlesMaterial::init_shaders();
- //ClassDB::register_type<ShaderMaterial>();
- ClassDB::register_class<RoomBounds>();
ClassDB::register_class<MultiMesh>();
ClassDB::register_class<MeshLibrary>();
@@ -562,7 +498,6 @@ void register_scene_types() {
ClassDB::register_class<SurfaceTool>();
ClassDB::register_class<MeshDataTool>();
- //ClassDB::register_type<BakedLight>();
OS::get_singleton()->yield(); //may take time to init
@@ -661,14 +596,8 @@ void unregister_scene_types() {
clear_default_theme();
- // memdelete( resource_loader_wav );
memdelete(resource_loader_dynamic_font);
memdelete(resource_loader_stream_texture);
-
-#ifdef TOOLS_ENABLED
-
-#endif
-
memdelete(resource_loader_theme);
if (resource_saver_text) {
diff --git a/scene/register_scene_types.h b/scene/register_scene_types.h
index dee0af9063..956b12a7cd 100644
--- a/scene/register_scene_types.h
+++ b/scene/register_scene_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp
index 459d3ffe41..1a2c8333ef 100644
--- a/scene/resources/animation.cpp
+++ b/scene/resources/animation.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "animation.h"
+
#include "geometry.h"
bool Animation::_set(const StringName &p_name, const Variant &p_value) {
@@ -83,44 +84,6 @@ bool Animation::_set(const StringName &p_name, const Variant &p_value) {
TransformTrack *tt = static_cast<TransformTrack *>(tracks[track]);
PoolVector<float> values = p_value;
int vcount = values.size();
-
-#if 0 // old compatibility hack
- if ((vcount%11) == 0) {
-
-
- PoolVector<float>::Read r = values.read();
-
- tt->transforms.resize(vcount/11);
-
-
- for(int i=0;i<(vcount/11);i++) {
-
-
- TKey<TransformKey> &tk=tt->transforms[i];
- const float *ofs=&r[i*11];
- tk.time=ofs[0];
-
- tk.value.loc.x=ofs[1];
- tk.value.loc.y=ofs[2];
- tk.value.loc.z=ofs[3];
-
- tk.value.rot.x=ofs[4];
- tk.value.rot.y=ofs[5];
- tk.value.rot.z=ofs[6];
- tk.value.rot.w=ofs[7];
-
- tk.value.scale.x=ofs[8];
- tk.value.scale.y=ofs[9];
- tk.value.scale.z=ofs[10];
-
-
- }
- return true;
-
-
-
- }
-#endif
ERR_FAIL_COND_V(vcount % 12, false); // shuld be multiple of 11
PoolVector<float>::Read r = values.read();
@@ -733,7 +696,7 @@ int Animation::track_find_key(int p_track, float p_time, bool p_exact) const {
return -1;
}
-void Animation::track_insert_key(int p_track, float p_time, const Variant &p_value, float p_transition) {
+void Animation::track_insert_key(int p_track, float p_time, const Variant &p_key, float p_transition) {
ERR_FAIL_INDEX(p_track, tracks.size());
Track *t = tracks[p_track];
@@ -742,7 +705,7 @@ void Animation::track_insert_key(int p_track, float p_time, const Variant &p_val
case TYPE_TRANSFORM: {
- Dictionary d = p_value;
+ Dictionary d = p_key;
Vector3 loc;
if (d.has("loc"))
loc = d["loc"];
@@ -766,7 +729,7 @@ void Animation::track_insert_key(int p_track, float p_time, const Variant &p_val
TKey<Variant> k;
k.time = p_time;
k.transition = p_transition;
- k.value = p_value;
+ k.value = p_key;
_insert(p_time, vt->values, k);
} break;
@@ -774,9 +737,9 @@ void Animation::track_insert_key(int p_track, float p_time, const Variant &p_val
MethodTrack *mt = static_cast<MethodTrack *>(t);
- ERR_FAIL_COND(p_value.get_type() != Variant::DICTIONARY);
+ ERR_FAIL_COND(p_key.get_type() != Variant::DICTIONARY);
- Dictionary d = p_value;
+ Dictionary d = p_key;
ERR_FAIL_COND(!d.has("method") || d["method"].get_type() != Variant::STRING);
ERR_FAIL_COND(!d.has("args") || !d["args"].is_array());
@@ -1676,17 +1639,17 @@ void Animation::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear"), &Animation::clear);
- BIND_CONSTANT(TYPE_VALUE);
- BIND_CONSTANT(TYPE_TRANSFORM);
- BIND_CONSTANT(TYPE_METHOD);
+ BIND_ENUM_CONSTANT(TYPE_VALUE);
+ BIND_ENUM_CONSTANT(TYPE_TRANSFORM);
+ BIND_ENUM_CONSTANT(TYPE_METHOD);
- BIND_CONSTANT(INTERPOLATION_NEAREST);
- BIND_CONSTANT(INTERPOLATION_LINEAR);
- BIND_CONSTANT(INTERPOLATION_CUBIC);
+ BIND_ENUM_CONSTANT(INTERPOLATION_NEAREST);
+ BIND_ENUM_CONSTANT(INTERPOLATION_LINEAR);
+ BIND_ENUM_CONSTANT(INTERPOLATION_CUBIC);
- BIND_CONSTANT(UPDATE_CONTINUOUS);
- BIND_CONSTANT(UPDATE_DISCRETE);
- BIND_CONSTANT(UPDATE_TRIGGER);
+ BIND_ENUM_CONSTANT(UPDATE_CONTINUOUS);
+ BIND_ENUM_CONSTANT(UPDATE_DISCRETE);
+ BIND_ENUM_CONSTANT(UPDATE_TRIGGER);
}
void Animation::clear() {
@@ -1871,7 +1834,7 @@ bool Animation::_transform_track_optimize_key(const TKey<TransformKey> &t0, cons
return erase;
}
-void Animation::_transform_track_optimize(int p_idx, float p_alowed_linear_err, float p_alowed_angular_err, float p_max_optimizable_angle) {
+void Animation::_transform_track_optimize(int p_idx, float p_allowed_linear_err, float p_allowed_angular_err, float p_max_optimizable_angle) {
ERR_FAIL_INDEX(p_idx, tracks.size());
ERR_FAIL_COND(tracks[p_idx]->type != TYPE_TRANSFORM);
@@ -1887,12 +1850,12 @@ void Animation::_transform_track_optimize(int p_idx, float p_alowed_linear_err,
TKey<TransformKey> &t1 = tt->transforms[i];
TKey<TransformKey> &t2 = tt->transforms[i + 1];
- bool erase = _transform_track_optimize_key(t0, t1, t2, p_alowed_linear_err, p_alowed_angular_err, p_max_optimizable_angle, norm);
+ bool erase = _transform_track_optimize_key(t0, t1, t2, p_allowed_linear_err, p_allowed_angular_err, p_max_optimizable_angle, norm);
if (erase && !prev_erased) {
norm = (t2.value.loc - t1.value.loc).normalized();
}
- if (prev_erased && !_transform_track_optimize_key(t0, first_erased, t2, p_alowed_linear_err, p_alowed_angular_err, p_max_optimizable_angle, norm)) {
+ if (prev_erased && !_transform_track_optimize_key(t0, first_erased, t2, p_allowed_linear_err, p_allowed_angular_err, p_max_optimizable_angle, norm)) {
//avoid error to go beyond first erased key
erase = false;
}
@@ -1914,12 +1877,12 @@ void Animation::_transform_track_optimize(int p_idx, float p_alowed_linear_err,
}
}
-void Animation::optimize(float p_allowed_linear_err, float p_allowed_angular_err, float p_angle_max) {
+void Animation::optimize(float p_allowed_linear_err, float p_allowed_angular_err, float p_max_optimizable_angle) {
for (int i = 0; i < tracks.size(); i++) {
if (tracks[i]->type == TYPE_TRANSFORM)
- _transform_track_optimize(i, p_allowed_linear_err, p_allowed_angular_err, p_angle_max);
+ _transform_track_optimize(i, p_allowed_linear_err, p_allowed_angular_err, p_max_optimizable_angle);
}
}
diff --git a/scene/resources/animation.h b/scene/resources/animation.h
index b363f2b666..e653f6b124 100644
--- a/scene/resources/animation.h
+++ b/scene/resources/animation.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -212,7 +212,7 @@ private:
}
bool _transform_track_optimize_key(const TKey<TransformKey> &t0, const TKey<TransformKey> &t1, const TKey<TransformKey> &t2, float p_alowed_linear_err, float p_alowed_angular_err, float p_max_optimizable_angle, const Vector3 &p_norm);
- void _transform_track_optimize(int p_idx, float p_allowed_err = 0.05, float p_alowed_angular_err = 0.01, float p_max_optimizable_angle = Math_PI * 0.125);
+ void _transform_track_optimize(int p_idx, float p_allowed_linear_err = 0.05, float p_allowed_angular_err = 0.01, float p_max_optimizable_angle = Math_PI * 0.125);
protected:
bool _set(const StringName &p_name, const Variant &p_value);
diff --git a/scene/resources/audio_stream_resampled.cpp b/scene/resources/audio_stream_resampled.cpp
deleted file mode 100644
index 1b1d6f8587..0000000000
--- a/scene/resources/audio_stream_resampled.cpp
+++ /dev/null
@@ -1,388 +0,0 @@
-/*************************************************************************/
-/* audio_stream_resampled.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "audio_stream_resampled.h"
-#include "project_settings.h"
-
-#if 0
-int AudioStreamResampled::get_channel_count() const {
-
- if (!rb)
- return 0;
-
- return channels;
-}
-
-
-template<int C>
-uint32_t AudioStreamResampled::_resample(int32_t *p_dest,int p_todo,int32_t p_increment) {
-
- uint32_t read=offset&MIX_FRAC_MASK;
-
- for (int i=0;i<p_todo;i++) {
-
- offset = (offset + p_increment)&(((1<<(rb_bits+MIX_FRAC_BITS))-1));
- read+=p_increment;
- uint32_t pos = offset >> MIX_FRAC_BITS;
- uint32_t frac = offset & MIX_FRAC_MASK;
-#ifndef FAST_AUDIO
- ERR_FAIL_COND_V(pos>=rb_len,0);
-#endif
- uint32_t pos_next = (pos+1)&rb_mask;
- //printf("rb pos %i\n",pos);
-
- // since this is a template with a known compile time value (C), conditionals go away when compiling.
- if (C==1) {
-
- int32_t v0 = rb[pos];
- int32_t v0n=rb[pos_next];
-#ifndef FAST_AUDIO
- v0+=(v0n-v0)*(int32_t)frac >> MIX_FRAC_BITS;
-#endif
- v0<<=16;
- p_dest[i]=v0;
-
- }
- if (C==2) {
-
- int32_t v0 = rb[(pos<<1)+0];
- int32_t v1 = rb[(pos<<1)+1];
- int32_t v0n=rb[(pos_next<<1)+0];
- int32_t v1n=rb[(pos_next<<1)+1];
-
-#ifndef FAST_AUDIO
- v0+=(v0n-v0)*(int32_t)frac >> MIX_FRAC_BITS;
- v1+=(v1n-v1)*(int32_t)frac >> MIX_FRAC_BITS;
-#endif
- v0<<=16;
- v1<<=16;
- p_dest[(i<<1)+0]=v0;
- p_dest[(i<<1)+1]=v1;
-
- }
-
- if (C==4) {
-
- int32_t v0 = rb[(pos<<2)+0];
- int32_t v1 = rb[(pos<<2)+1];
- int32_t v2 = rb[(pos<<2)+2];
- int32_t v3 = rb[(pos<<2)+3];
- int32_t v0n = rb[(pos_next<<2)+0];
- int32_t v1n=rb[(pos_next<<2)+1];
- int32_t v2n=rb[(pos_next<<2)+2];
- int32_t v3n=rb[(pos_next<<2)+3];
-
-#ifndef FAST_AUDIO
- v0+=(v0n-v0)*(int32_t)frac >> MIX_FRAC_BITS;
- v1+=(v1n-v1)*(int32_t)frac >> MIX_FRAC_BITS;
- v2+=(v2n-v2)*(int32_t)frac >> MIX_FRAC_BITS;
- v3+=(v3n-v3)*(int32_t)frac >> MIX_FRAC_BITS;
-#endif
- v0<<=16;
- v1<<=16;
- v2<<=16;
- v3<<=16;
- p_dest[(i<<2)+0]=v0;
- p_dest[(i<<2)+1]=v1;
- p_dest[(i<<2)+2]=v2;
- p_dest[(i<<2)+3]=v3;
-
- }
-
- if (C==6) {
-
- int32_t v0 = rb[(pos*6)+0];
- int32_t v1 = rb[(pos*6)+1];
- int32_t v2 = rb[(pos*6)+2];
- int32_t v3 = rb[(pos*6)+3];
- int32_t v4 = rb[(pos*6)+4];
- int32_t v5 = rb[(pos*6)+5];
- int32_t v0n = rb[(pos_next*6)+0];
- int32_t v1n=rb[(pos_next*6)+1];
- int32_t v2n=rb[(pos_next*6)+2];
- int32_t v3n=rb[(pos_next*6)+3];
- int32_t v4n=rb[(pos_next*6)+4];
- int32_t v5n=rb[(pos_next*6)+5];
-
-#ifndef FAST_AUDIO
- v0+=(v0n-v0)*(int32_t)frac >> MIX_FRAC_BITS;
- v1+=(v1n-v1)*(int32_t)frac >> MIX_FRAC_BITS;
- v2+=(v2n-v2)*(int32_t)frac >> MIX_FRAC_BITS;
- v3+=(v3n-v3)*(int32_t)frac >> MIX_FRAC_BITS;
- v4+=(v4n-v4)*(int32_t)frac >> MIX_FRAC_BITS;
- v5+=(v5n-v5)*(int32_t)frac >> MIX_FRAC_BITS;
-#endif
- v0<<=16;
- v1<<=16;
- v2<<=16;
- v3<<=16;
- v4<<=16;
- v5<<=16;
- p_dest[(i*6)+0]=v0;
- p_dest[(i*6)+1]=v1;
- p_dest[(i*6)+2]=v2;
- p_dest[(i*6)+3]=v3;
- p_dest[(i*6)+4]=v4;
- p_dest[(i*6)+5]=v5;
-
- }
-
-
- }
-
-
- return read>>MIX_FRAC_BITS;//rb_read_pos=offset>>MIX_FRAC_BITS;
-
-}
-
-
-bool AudioStreamResampled::mix(int32_t *p_dest, int p_frames) {
-
-
- if (!rb || !_can_mix())
- return false;
-
- int write_pos_cache=rb_write_pos;
-
- int32_t increment=(mix_rate*MIX_FRAC_LEN)/get_mix_rate();
-
- int rb_todo;
-
- if (write_pos_cache==rb_read_pos) {
- return false; //out of buffer
-
- } else if (rb_read_pos<write_pos_cache) {
-
- rb_todo=write_pos_cache-rb_read_pos; //-1?
- } else {
-
- rb_todo=(rb_len-rb_read_pos)+write_pos_cache; //-1?
- }
-
- int todo = MIN( ((int64_t(rb_todo)<<MIX_FRAC_BITS)/increment)+1, p_frames );
-#if 0
- if (int(mix_rate)==get_mix_rate()) {
-
-
- if (channels==6) {
-
- for(int i=0;i<p_frames;i++) {
-
- int from = ((rb_read_pos+i)&rb_mask)*6;
- int to = i*6;
-
- p_dest[from+0]=int32_t(rb[to+0])<<16;
- p_dest[from+1]=int32_t(rb[to+1])<<16;
- p_dest[from+2]=int32_t(rb[to+2])<<16;
- p_dest[from+3]=int32_t(rb[to+3])<<16;
- p_dest[from+4]=int32_t(rb[to+4])<<16;
- p_dest[from+5]=int32_t(rb[to+5])<<16;
- }
-
- } else {
- int len=p_frames*channels;
- int from=rb_read_pos*channels;
- int mask=0;
- switch(channels) {
- case 1: mask=rb_len-1; break;
- case 2: mask=(rb_len*2)-1; break;
- case 4: mask=(rb_len*4)-1; break;
- }
-
- for(int i=0;i<len;i++) {
-
- p_dest[i]=int32_t(rb[(from+i)&mask])<<16;
- }
- }
-
- rb_read_pos = (rb_read_pos+p_frames)&rb_mask;
- } else
-#endif
- {
-
- uint32_t read=0;
- switch(channels) {
- case 1: read=_resample<1>(p_dest,todo,increment); break;
- case 2: read=_resample<2>(p_dest,todo,increment); break;
- case 4: read=_resample<4>(p_dest,todo,increment); break;
- case 6: read=_resample<6>(p_dest,todo,increment); break;
- }
-#if 1
- //end of stream, fadeout
- int remaining = p_frames-todo;
- if (remaining && todo>0) {
-
- //print_line("fadeout");
- for(int c=0;c<channels;c++) {
-
- for(int i=0;i<todo;i++) {
-
- int32_t samp = p_dest[i*channels+c]>>8;
- uint32_t mul = (todo-i) * 256 /todo;
- //print_line("mul: "+itos(i)+" "+itos(mul));
- p_dest[i*channels+c]=samp*mul;
- }
-
- }
-
- }
-
-#else
- int remaining = p_frames-todo;
- if (remaining && todo>0) {
-
-
- for(int c=0;c<channels;c++) {
-
- int32_t from = p_dest[(todo-1)*channels+c]>>8;
-
- for(int i=0;i<remaining;i++) {
-
- uint32_t mul = (remaining-i) * 256 /remaining;
- p_dest[(todo+i)*channels+c]=from*mul;
- }
-
- }
-
- }
-#endif
-
- //zero out what remains there to avoid glitches
- for(int i=todo*channels;i<int(p_frames)*channels;i++) {
-
- p_dest[i]=0;
- }
-
- if (read>rb_todo)
- read=rb_todo;
-
- rb_read_pos = (rb_read_pos+read)&rb_mask;
-
-
-
-
- }
-
- return true;
-}
-
-
-Error AudioStreamResampled::_setup(int p_channels,int p_mix_rate,int p_minbuff_needed) {
-
- ERR_FAIL_COND_V(p_channels!=1 && p_channels!=2 && p_channels!=4 && p_channels!=6,ERR_INVALID_PARAMETER);
-
-
- float buffering_sec = int(GLOBAL_DEF("audio/stream_buffering_ms",500))/1000.0;
- int desired_rb_bits =nearest_shift(MAX(buffering_sec*p_mix_rate,p_minbuff_needed));
-
- bool recreate=!rb;
-
- if (rb && (uint32_t(desired_rb_bits)!=rb_bits || channels!=uint32_t(p_channels))) {
- //recreate
-
- memdelete_arr(rb);
- memdelete_arr(read_buf);
- recreate=true;
-
- }
-
- if (recreate) {
-
- channels=p_channels;
- rb_bits=desired_rb_bits;
- rb_len=(1<<rb_bits);
- rb_mask=rb_len-1;
- rb = memnew_arr( int16_t, rb_len * p_channels );
- read_buf = memnew_arr( int16_t, rb_len * p_channels );
-
- }
-
- mix_rate=p_mix_rate;
- offset=0;
- rb_read_pos=0;
- rb_write_pos=0;
-
- //avoid maybe strange noises upon load
- for (int i=0;i<(rb_len*channels);i++) {
-
- rb[i]=0;
- read_buf[i]=0;
- }
-
- return OK;
-
-}
-
-void AudioStreamResampled::_clear() {
-
- if (!rb)
- return;
-
- AudioServer::get_singleton()->lock();
- //should be stopped at this point but just in case
- if (rb) {
- memdelete_arr(rb);
- memdelete_arr(read_buf);
- }
- rb=NULL;
- offset=0;
- rb_read_pos=0;
- rb_write_pos=0;
- read_buf=NULL;
- AudioServer::get_singleton()->unlock();
-
-}
-
-AudioStreamResampled::AudioStreamResampled() {
-
- rb=NULL;
- offset=0;
- read_buf=NULL;
- rb_read_pos=0;
- rb_write_pos=0;
-
- rb_bits=0;
- rb_len=0;
- rb_mask=0;
- read_buff_len=0;
- channels=0;
- mix_rate=0;
-
-}
-
-AudioStreamResampled::~AudioStreamResampled() {
-
- if (rb) {
- memdelete_arr(rb);
- memdelete_arr(read_buf);
- }
-
-}
-
-#endif
diff --git a/scene/resources/audio_stream_resampled.h b/scene/resources/audio_stream_resampled.h
deleted file mode 100644
index 53fa3bd0b9..0000000000
--- a/scene/resources/audio_stream_resampled.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*************************************************************************/
-/* audio_stream_resampled.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 AUDIO_STREAM_RESAMPLED_H
-#define AUDIO_STREAM_RESAMPLED_H
-
-//#include "scene/resources/audio_stream.h"
-
-#if 0
-
-class AudioStreamResampled : public AudioStream {
- GDCLASS(AudioStreamResampled,AudioStream);
-
- uint32_t rb_bits;
- uint32_t rb_len;
- uint32_t rb_mask;
- uint32_t read_buff_len;
- uint32_t channels;
- uint32_t mix_rate;
-
- volatile int rb_read_pos;
- volatile int rb_write_pos;
-
- int32_t offset; //contains the fractional remainder of the resampler
- enum {
- MIX_FRAC_BITS=13,
- MIX_FRAC_LEN=(1<<MIX_FRAC_BITS),
- MIX_FRAC_MASK=MIX_FRAC_LEN-1,
- };
-
- int16_t *read_buf;
- int16_t *rb;
-
-
- template<int C>
- uint32_t _resample(int32_t *p_dest,int p_todo,int32_t p_increment);
-
-
-protected:
-
- _FORCE_INLINE_ int get_total() const {
-
- return rb_len;
- }
-
- _FORCE_INLINE_ int get_todo() const { //return amount of frames to mix
-
- int todo;
- int read_pos_cache=rb_read_pos;
-
- if (read_pos_cache==rb_write_pos) {
- todo=rb_len-1;
- } else if (read_pos_cache>rb_write_pos) {
-
- todo=read_pos_cache-rb_write_pos-1;
- } else {
-
- todo=(rb_len-rb_write_pos)+read_pos_cache-1;
- }
-
- return todo;
- }
-
- //Stream virtual funcs
- virtual int get_channel_count() const;
- virtual bool mix(int32_t *p_dest, int p_frames);
-
- _FORCE_INLINE_ void _flush() {
- rb_read_pos=0;
- rb_write_pos=0;
- }
-
- _FORCE_INLINE_ int16_t *get_write_buffer() { return read_buf; }
- _FORCE_INLINE_ void write(uint32_t p_frames) {
-
- ERR_FAIL_COND(p_frames >= rb_len);
-
- switch(channels) {
- case 1: {
-
- for(uint32_t i=0;i<p_frames;i++) {
-
- rb[ rb_write_pos ] = read_buf[i];
- rb_write_pos=(rb_write_pos+1)&rb_mask;
- }
- } break;
- case 2: {
-
- for(uint32_t i=0;i<p_frames;i++) {
-
- rb[ (rb_write_pos<<1)+0 ] = read_buf[(i<<1)+0];
- rb[ (rb_write_pos<<1)+1 ] = read_buf[(i<<1)+1];
- rb_write_pos=(rb_write_pos+1)&rb_mask;
- }
- } break;
- case 4: {
-
- for(uint32_t i=0;i<p_frames;i++) {
-
- rb[ (rb_write_pos<<2)+0 ] = read_buf[(i<<2)+0];
- rb[ (rb_write_pos<<2)+1 ] = read_buf[(i<<2)+1];
- rb[ (rb_write_pos<<2)+2 ] = read_buf[(i<<2)+2];
- rb[ (rb_write_pos<<2)+3 ] = read_buf[(i<<2)+3];
- rb_write_pos=(rb_write_pos+1)&rb_mask;
- }
- } break;
- case 6: {
-
- for(uint32_t i=0;i<p_frames;i++) {
-
- rb[ (rb_write_pos*6)+0 ] = read_buf[(i*6)+0];
- rb[ (rb_write_pos*6)+1 ] = read_buf[(i*6)+1];
- rb[ (rb_write_pos*6)+2 ] = read_buf[(i*6)+2];
- rb[ (rb_write_pos*6)+3 ] = read_buf[(i*6)+3];
- rb[ (rb_write_pos*6)+4 ] = read_buf[(i*6)+4];
- rb[ (rb_write_pos*6)+5 ] = read_buf[(i*6)+5];
- rb_write_pos=(rb_write_pos+1)&rb_mask;
- }
- } break;
-
-
- }
-
- }
-
- virtual bool _can_mix() const =0;
-
- _FORCE_INLINE_ bool _is_ready() const{
- return rb!=NULL;
- }
-
- Error _setup(int p_channels,int p_mix_rate,int p_minbuff_needed=-1);
- void _clear();
-
-public:
- AudioStreamResampled();
- ~AudioStreamResampled();
-};
-#endif
-#endif // AUDIO_STREAM_RESAMPLED_H
diff --git a/scene/resources/audio_stream_sample.cpp b/scene/resources/audio_stream_sample.cpp
index c8f6007e60..659322897a 100644
--- a/scene/resources/audio_stream_sample.cpp
+++ b/scene/resources/audio_stream_sample.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/audio_stream_sample.h b/scene/resources/audio_stream_sample.h
index 680f037f15..6cb255fedf 100644
--- a/scene/resources/audio_stream_sample.h
+++ b/scene/resources/audio_stream_sample.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/bit_mask.cpp b/scene/resources/bit_mask.cpp
index a473067937..be994e3b33 100644
--- a/scene/resources/bit_mask.cpp
+++ b/scene/resources/bit_mask.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/bit_mask.h b/scene/resources/bit_mask.h
index 5ab7a3134d..72090f2ebe 100644
--- a/scene/resources/bit_mask.h
+++ b/scene/resources/bit_mask.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/bounds.cpp b/scene/resources/bounds.cpp
index b088426013..ee1e750c82 100644
--- a/scene/resources/bounds.cpp
+++ b/scene/resources/bounds.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/bounds.h b/scene/resources/bounds.h
index 8c0d1dcf6e..3378101836 100644
--- a/scene/resources/bounds.h
+++ b/scene/resources/bounds.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/box_shape.cpp b/scene/resources/box_shape.cpp
index d5c25b718e..bbc85ce0f6 100644
--- a/scene/resources/box_shape.cpp
+++ b/scene/resources/box_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/box_shape.h b/scene/resources/box_shape.h
index fdf1e98020..8884c9b75a 100644
--- a/scene/resources/box_shape.h
+++ b/scene/resources/box_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/canvas.cpp b/scene/resources/canvas.cpp
index b6a909f3fa..f5bf0ad78e 100644
--- a/scene/resources/canvas.cpp
+++ b/scene/resources/canvas.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/canvas.h b/scene/resources/canvas.h
index 331a997914..b9977e11b9 100644
--- a/scene/resources/canvas.h
+++ b/scene/resources/canvas.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/capsule_shape.cpp b/scene/resources/capsule_shape.cpp
index 1fcc9da5b6..e11b98f82e 100644
--- a/scene/resources/capsule_shape.cpp
+++ b/scene/resources/capsule_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/capsule_shape.h b/scene/resources/capsule_shape.h
index 2864e7e23f..9b43823c83 100644
--- a/scene/resources/capsule_shape.h
+++ b/scene/resources/capsule_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/capsule_shape_2d.cpp b/scene/resources/capsule_shape_2d.cpp
index 20177692a1..56a09bc3bf 100644
--- a/scene/resources/capsule_shape_2d.cpp
+++ b/scene/resources/capsule_shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/capsule_shape_2d.h b/scene/resources/capsule_shape_2d.h
index 93e7d846a4..610f9a4cf9 100644
--- a/scene/resources/capsule_shape_2d.h
+++ b/scene/resources/capsule_shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/circle_shape_2d.cpp b/scene/resources/circle_shape_2d.cpp
index 1b7e09ddfb..ecfc98ea60 100644
--- a/scene/resources/circle_shape_2d.cpp
+++ b/scene/resources/circle_shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/circle_shape_2d.h b/scene/resources/circle_shape_2d.h
index a4a4601e66..3ba5ec949c 100644
--- a/scene/resources/circle_shape_2d.h
+++ b/scene/resources/circle_shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/color_ramp.cpp b/scene/resources/color_ramp.cpp
index 1825225abd..9f6150ae63 100644
--- a/scene/resources/color_ramp.cpp
+++ b/scene/resources/color_ramp.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -149,7 +149,7 @@ void Gradient::set_offset(int pos, const float offset) {
}
float Gradient::get_offset(int pos) const {
- if (points.size() > pos)
+ if (points.size() && points.size() > pos)
return points[pos].offset;
return 0; //TODO: Maybe throw some error instead?
}
@@ -164,7 +164,7 @@ void Gradient::set_color(int pos, const Color &color) {
}
Color Gradient::get_color(int pos) const {
- if (points.size() > pos)
+ if (points.size() && points.size() > pos)
return points[pos].color;
return Color(0, 0, 0, 1); //TODO: Maybe throw some error instead?
}
diff --git a/scene/resources/color_ramp.h b/scene/resources/color_ramp.h
index d7ec20b324..816152d51f 100644
--- a/scene/resources/color_ramp.h
+++ b/scene/resources/color_ramp.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -60,7 +60,7 @@ public:
void add_point(float p_offset, const Color &p_color);
void remove_point(int p_index);
- void set_points(Vector<Point> &points);
+ void set_points(Vector<Point> &p_points);
Vector<Point> &get_points();
void set_offset(int pos, const float offset);
@@ -69,10 +69,10 @@ public:
void set_color(int pos, const Color &color);
Color get_color(int pos) const;
- void set_offsets(const Vector<float> &offsets);
+ void set_offsets(const Vector<float> &p_offsets);
Vector<float> get_offsets() const;
- void set_colors(const Vector<Color> &colors);
+ void set_colors(const Vector<Color> &p_colors);
Vector<Color> get_colors() const;
_FORCE_INLINE_ Color get_color_at_offset(float p_offset) {
diff --git a/scene/resources/concave_polygon_shape.cpp b/scene/resources/concave_polygon_shape.cpp
index 47cc49c631..6ae4fde85e 100644
--- a/scene/resources/concave_polygon_shape.cpp
+++ b/scene/resources/concave_polygon_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/concave_polygon_shape.h b/scene/resources/concave_polygon_shape.h
index a8f9d50674..82e052fee7 100644
--- a/scene/resources/concave_polygon_shape.h
+++ b/scene/resources/concave_polygon_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/concave_polygon_shape_2d.cpp b/scene/resources/concave_polygon_shape_2d.cpp
index b8c931421e..7f4abf7ae0 100644
--- a/scene/resources/concave_polygon_shape_2d.cpp
+++ b/scene/resources/concave_polygon_shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/concave_polygon_shape_2d.h b/scene/resources/concave_polygon_shape_2d.h
index d4c102e0d6..e766e88a4b 100644
--- a/scene/resources/concave_polygon_shape_2d.h
+++ b/scene/resources/concave_polygon_shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/convex_polygon_shape.cpp b/scene/resources/convex_polygon_shape.cpp
index 10e92b43ae..bba52bd5ff 100644
--- a/scene/resources/convex_polygon_shape.cpp
+++ b/scene/resources/convex_polygon_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/convex_polygon_shape.h b/scene/resources/convex_polygon_shape.h
index 4340b0ef7c..e103f2d90c 100644
--- a/scene/resources/convex_polygon_shape.h
+++ b/scene/resources/convex_polygon_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/convex_polygon_shape_2d.cpp b/scene/resources/convex_polygon_shape_2d.cpp
index e13f7faf70..7588909d90 100644
--- a/scene/resources/convex_polygon_shape_2d.cpp
+++ b/scene/resources/convex_polygon_shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/convex_polygon_shape_2d.h b/scene/resources/convex_polygon_shape_2d.h
index ba4a5ae8aa..3354199e05 100644
--- a/scene/resources/convex_polygon_shape_2d.h
+++ b/scene/resources/convex_polygon_shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/curve.cpp b/scene/resources/curve.cpp
index fe0759fcba..7fbaa1f73c 100644
--- a/scene/resources/curve.cpp
+++ b/scene/resources/curve.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "curve.h"
+
#include "core_string_names.h"
template <class T>
@@ -42,344 +43,6 @@ static _FORCE_INLINE_ T _bezier_interp(real_t t, T start, T control_1, T control
return start * omt3 + control_1 * omt2 * t * 3.0 + control_2 * omt * t2 * 3.0 + end * t3;
}
-#if 0
-
-int Curve2D::get_point_count() const {
-
- return points.size();
-}
-void Curve2D::add_point(const Vector2& p_pos, const Vector2& p_in, const Vector2& p_out) {
-
- Point n;
- n.pos=p_pos;
- n.in=p_in;
- n.out=p_out;
- points.push_back(n);
- emit_signal(CoreStringNames::get_singleton()->changed);
-}
-void Curve2D::set_point_pos(int p_index, const Vector2& p_pos) {
-
- ERR_FAIL_INDEX(p_index,points.size());
-
- points[p_index].pos=p_pos;
- emit_signal(CoreStringNames::get_singleton()->changed);
-
-}
-Vector2 Curve2D::get_point_pos(int p_index) const {
-
- ERR_FAIL_INDEX_V(p_index,points.size(),Vector2());
- return points[p_index].pos;
-
-}
-
-
-void Curve2D::set_point_in(int p_index, const Vector2& p_in) {
-
- ERR_FAIL_INDEX(p_index,points.size());
-
- points[p_index].in=p_in;
- emit_signal(CoreStringNames::get_singleton()->changed);
-
-}
-Vector2 Curve2D::get_point_in(int p_index) const {
-
- ERR_FAIL_INDEX_V(p_index,points.size(),Vector2());
- return points[p_index].in;
-
-}
-
-void Curve2D::set_point_out(int p_index, const Vector2& p_out) {
-
- ERR_FAIL_INDEX(p_index,points.size());
-
- points[p_index].out=p_out;
- emit_signal(CoreStringNames::get_singleton()->changed);
-}
-
-Vector2 Curve2D::get_point_out(int p_index) const {
-
- ERR_FAIL_INDEX_V(p_index,points.size(),Vector2());
- return points[p_index].out;
-
-}
-
-
-void Curve2D::remove_point(int p_index) {
-
- ERR_FAIL_INDEX(p_index,points.size());
- points.remove(p_index);
- emit_signal(CoreStringNames::get_singleton()->changed);
-}
-
-Vector2 Curve2D::interpolate(int p_index, float p_offset) const {
-
- int pc = points.size();
- ERR_FAIL_COND_V(pc==0,Vector2());
-
- if (p_index >= pc-1)
- return points[pc-1].pos;
- else if (p_index<0)
- return points[0].pos;
-
- Vector2 p0 = points[p_index].pos;
- Vector2 p1 = p0+points[p_index].out;
- Vector2 p3 = points[p_index+1].pos;
- Vector2 p2 = p3+points[p_index+1].in;
-
- return _bezier_interp(p_offset,p0,p1,p2,p3);
-}
-
-Vector2 Curve2D::interpolatef(real_t p_findex) const {
-
-
- if (p_findex<0)
- p_findex=0;
- else if (p_findex>=points.size())
- p_findex=points.size();
-
- return interpolate((int)p_findex,Math::fmod(p_findex,1.0));
-
-}
-
-PoolVector<Point2> Curve2D::bake(int p_subdivs) const {
-
- int pc = points.size();
-
- PoolVector<Point2> ret;
- if (pc<2)
- return ret;
-
- ret.resize((pc-1)*p_subdivs+1);
-
- PoolVector<Point2>::Write w = ret.write();
- const Point *r = points.ptr();
-
- for(int i=0;i<pc;i++) {
-
- int ofs = pc*p_subdivs;
-
- int limit=(i==pc-1)?p_subdivs+1:p_subdivs;
-
- for(int j=0;j<limit;j++) {
-
- Vector2 p0 = r[i].pos;
- Vector2 p1 = p0+r[i].out;
- Vector2 p3 = r[i].pos;
- Vector2 p2 = p3+r[i].in;
- real_t t = j/(real_t)p_subdivs;
-
- w[ofs+j]=_bezier_interp(t,p0,p1,p2,p3);
-
- }
- }
-
- w = PoolVector<Point2>::Write();
-
- return ret;
-}
-
-void Curve2D::advance(real_t p_distance,int &r_index, real_t &r_pos) const {
-
- int pc = points.size();
- ERR_FAIL_COND(pc<2);
- if (r_index<0 || r_index>=(pc-1))
- return;
-
- Vector2 pos = interpolate(r_index,r_pos);
-
- float sign=p_distance<0 ? -1 : 1;
- p_distance=Math::abs(p_distance);
-
- real_t base = r_index+r_pos;
- real_t top = 0.1; //a tenth is in theory representative
- int iterations=32;
-
-
-
- for(int i=0;i<iterations;i++) {
-
-
- real_t o=base+top*sign;
- if (sign>0 && o >=pc) {
- top=pc-base;
- break;
- } else if (sign<0 && o <0) {
- top=-base;
- break;
- }
-
- Vector2 new_d = interpolatef(o);
-
- if (new_d.distance_to(pos) > p_distance)
- break;
- top*=2.0;
- }
-
-
- real_t bottom = 0.0;
- iterations=8;
- real_t final_offset;
-
-
- for(int i=0;i<iterations;i++) {
-
- real_t middle = (bottom+top)*0.5;
- real_t o=base+middle*sign;
- Vector2 new_d = interpolatef(o);
-
- if (new_d.distance_to(pos) > p_distance) {
- bottom=middle;
- } else {
- top=middle;
- }
- final_offset=o;
- }
-
- r_index=(int)final_offset;
- r_pos=Math::fmod(final_offset,1.0);
-
-}
-
-void Curve2D::get_approx_position_from_offset(real_t p_offset,int &r_index, real_t &r_pos,int p_subdivs) const {
-
- ERR_FAIL_COND(points.size()<2);
-
- real_t accum=0;
-
-
-
- for(int i=0;i<points.size();i++) {
-
- Vector2 prev_p=interpolate(i,0);
-
-
- for(int j=1;j<=p_subdivs;j++) {
-
- real_t frac = j/(real_t)p_subdivs;
- Vector2 p = interpolate(i,frac);
- real_t d = p.distance_to(prev_p);
-
- accum+=d;
- if (accum>p_offset) {
-
-
- r_index=j-1;
- if (d>0) {
- real_t mf = (p_offset-(accum-d)) / d;
- r_pos=frac-(1.0-mf);
- } else {
- r_pos=frac;
- }
-
- return;
- }
-
- prev_p=p;
- }
- }
-
- r_index=points.size()-1;
- r_pos=1.0;
-
-
-}
-
-void Curve2D::set_points_in(const Vector2Array& p_points) {
-
- points.resize(p_points.size());
- for (int i=0; i<p_points.size(); i++) {
-
- Point p = points[i];
- p.in = p_points[i];
- points[i] = p;
- };
-};
-
-void Curve2D::set_points_out(const Vector2Array& p_points) {
-
- points.resize(p_points.size());
- for (int i=0; i<p_points.size(); i++) {
-
- Point p = points[i];
- p.out = p_points[i];
- points[i] = p;
- };
-};
-
-void Curve2D::set_points_pos(const Vector2Array& p_points) {
-
- points.resize(p_points.size());
- for (int i=0; i<p_points.size(); i++) {
-
- Point p = points[i];
- p.pos = p_points[i];
- points[i] = p;
- };
-};
-
-Vector2Array Curve2D::get_points_in() const {
- Vector2Array ret;
- ret.resize(points.size());
- for (int i=0; i<points.size(); i++) {
- ret.set(i, points[i].in);
- };
- return ret;
-};
-
-Vector2Array Curve2D::get_points_out() const {
- Vector2Array ret;
- ret.resize(points.size());
- for (int i=0; i<points.size(); i++) {
- ret.set(i, points[i].out);
- };
- return ret;
-};
-
-Vector2Array Curve2D::get_points_pos() const {
- Vector2Array ret;
- ret.resize(points.size());
- for (int i=0; i<points.size(); i++) {
- ret.set(i, points[i].pos);
- };
- return ret;
-};
-
-
-void Curve2D::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("get_point_count"),&Curve2D::get_point_count);
- ClassDB::bind_method(D_METHOD("add_point","pos","in","out"),&Curve2D::add_point,DEFVAL(Vector2()),DEFVAL(Vector2()));
- ClassDB::bind_method(D_METHOD("set_point_pos","idx","pos"),&Curve2D::set_point_pos);
- ClassDB::bind_method(D_METHOD("get_point_pos","idx"),&Curve2D::get_point_pos);
- ClassDB::bind_method(D_METHOD("set_point_in","idx","pos"),&Curve2D::set_point_in);
- ClassDB::bind_method(D_METHOD("get_point_in","idx"),&Curve2D::get_point_in);
- ClassDB::bind_method(D_METHOD("set_point_out","idx","pos"),&Curve2D::set_point_out);
- ClassDB::bind_method(D_METHOD("get_point_out","idx"),&Curve2D::get_point_out);
- ClassDB::bind_method(D_METHOD("remove_point","idx"),&Curve2D::remove_point);
- ClassDB::bind_method(D_METHOD("interpolate","idx","t"),&Curve2D::interpolate);
- ClassDB::bind_method(D_METHOD("bake","subdivs"),&Curve2D::bake,DEFVAL(10));
-
-
- ClassDB::bind_method(D_METHOD("set_points_in"),&Curve2D::set_points_in);
- ClassDB::bind_method(D_METHOD("set_points_out"),&Curve2D::set_points_out);
- ClassDB::bind_method(D_METHOD("set_points_pos"),&Curve2D::set_points_pos);
-
- ClassDB::bind_method(D_METHOD("get_points_in"),&Curve2D::get_points_in);
- ClassDB::bind_method(D_METHOD("get_points_out"),&Curve2D::get_points_out);
- ClassDB::bind_method(D_METHOD("get_points_pos"),&Curve2D::get_points_pos);
-
- ADD_PROPERTY( PropertyInfo( Variant::VECTOR2_ARRAY, "points_in"), "set_points_in","get_points_in");
- ADD_PROPERTY( PropertyInfo( Variant::VECTOR2_ARRAY, "points_out"), "set_points_out","get_points_out");
- ADD_PROPERTY( PropertyInfo( Variant::VECTOR2_ARRAY, "points_pos"), "set_points_pos","get_points_pos");
-}
-
-
-Curve2D::Curve2D()
-{
-}
-
-#endif
-
const char *Curve::SIGNAL_RANGE_CHANGED = "range_changed";
Curve::Curve() {
diff --git a/scene/resources/curve.h b/scene/resources/curve.h
index 2815c12c4b..3071aee5de 100644
--- a/scene/resources/curve.h
+++ b/scene/resources/curve.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -31,56 +31,6 @@
#define CURVE_H
#include "resource.h"
-#if 0
-class Curve2D : public Resource {
-
- GDCLASS(Curve2D,Resource);
-
- struct Point {
-
- Vector2 in;
- Vector2 out;
- Vector2 pos;
- };
-
-
- Vector<Point> points;
-
-protected:
-
- static void _bind_methods();
-
- void set_points_in(const Vector2Array& p_points_in);
- void set_points_out(const Vector2Array& p_points_out);
- void set_points_pos(const Vector2Array& p_points_pos);
-
- Vector2Array get_points_in() const;
- Vector2Array get_points_out() const;
- Vector2Array get_points_pos() const;
-
-public:
-
-
- int get_point_count() const;
- void add_point(const Vector2& p_pos, const Vector2& p_in=Vector2(), const Vector2& p_out=Vector2());
- void set_point_pos(int p_index, const Vector2& p_pos);
- Vector2 get_point_pos(int p_index) const;
- void set_point_in(int p_index, const Vector2& p_in);
- Vector2 get_point_in(int p_index) const;
- void set_point_out(int p_index, const Vector2& p_out);
- Vector2 get_point_out(int p_index) const;
- void remove_point(int p_index);
-
- Vector2 interpolate(int p_index, float p_offset) const;
- Vector2 interpolatef(real_t p_findex) const;
- PoolVector<Point2> bake(int p_subdivs=10) const;
- void advance(real_t p_distance,int &r_index, real_t &r_pos) const;
- void get_approx_position_from_offset(real_t p_offset,int &r_index, real_t &r_pos,int p_subdivs=16) const;
-
- Curve2D();
-};
-
-#endif
// y(x) curve
class Curve : public Resource {
@@ -174,7 +124,7 @@ public:
void bake();
int get_bake_resolution() const { return _bake_resolution; }
- void set_bake_resolution(int p_interval);
+ void set_bake_resolution(int p_resolution);
real_t interpolate_baked(real_t offset);
protected:
@@ -242,7 +192,7 @@ public:
Vector2 interpolate(int p_index, float p_offset) const;
Vector2 interpolatef(real_t p_findex) const;
- void set_bake_interval(float p_distance);
+ void set_bake_interval(float p_tolerance);
float get_bake_interval() const;
float get_baked_length() const;
@@ -309,7 +259,7 @@ public:
Vector3 interpolate(int p_index, float p_offset) const;
Vector3 interpolatef(real_t p_findex) const;
- void set_bake_interval(float p_distance);
+ void set_bake_interval(float p_tolerance);
float get_bake_interval() const;
float get_baked_length() const;
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index 3e612c745f..08de33175a 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -203,7 +203,7 @@ static Ref<StyleBox> make_empty_stylebox(float p_margin_left = -1, float p_margi
return style;
}
-void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<Font> &large_font, Ref<Texture> &default_icon, Ref<StyleBox> &default_style, float p_scale) {
+void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const Ref<Font> &large_font, Ref<Texture> &default_icon, Ref<StyleBox> &default_style, float p_scale) {
scale = p_scale;
@@ -223,7 +223,7 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
// Panel
- t->set_stylebox("panel", "Panel", make_stylebox(panel_bg_png, 0, 0, 0, 0));
+ theme->set_stylebox("panel", "Panel", make_stylebox(panel_bg_png, 0, 0, 0, 0));
// Focus
@@ -240,63 +240,63 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
Ref<StyleBox> sb_button_disabled = sb_expand(make_stylebox(button_disabled_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2);
Ref<StyleBox> sb_button_focus = sb_expand(make_stylebox(button_focus_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2);
- t->set_stylebox("normal", "Button", sb_button_normal);
- t->set_stylebox("pressed", "Button", sb_button_pressed);
- t->set_stylebox("hover", "Button", sb_button_hover);
- t->set_stylebox("disabled", "Button", sb_button_disabled);
- t->set_stylebox("focus", "Button", sb_button_focus);
+ theme->set_stylebox("normal", "Button", sb_button_normal);
+ theme->set_stylebox("pressed", "Button", sb_button_pressed);
+ theme->set_stylebox("hover", "Button", sb_button_hover);
+ theme->set_stylebox("disabled", "Button", sb_button_disabled);
+ theme->set_stylebox("focus", "Button", sb_button_focus);
- t->set_font("font", "Button", default_font);
+ theme->set_font("font", "Button", default_font);
- t->set_color("font_color", "Button", control_font_color);
- t->set_color("font_color_pressed", "Button", control_font_color_pressed);
- t->set_color("font_color_hover", "Button", control_font_color_hover);
- t->set_color("font_color_disabled", "Button", control_font_color_disabled);
+ theme->set_color("font_color", "Button", control_font_color);
+ theme->set_color("font_color_pressed", "Button", control_font_color_pressed);
+ theme->set_color("font_color_hover", "Button", control_font_color_hover);
+ theme->set_color("font_color_disabled", "Button", control_font_color_disabled);
- t->set_constant("hseparation", "Button", 2 * scale);
+ theme->set_constant("hseparation", "Button", 2 * scale);
// LinkButton
- t->set_font("font", "LinkButton", default_font);
+ theme->set_font("font", "LinkButton", default_font);
- t->set_color("font_color", "LinkButton", control_font_color);
- t->set_color("font_color_pressed", "LinkButton", control_font_color_pressed);
- t->set_color("font_color_hover", "LinkButton", control_font_color_hover);
+ theme->set_color("font_color", "LinkButton", control_font_color);
+ theme->set_color("font_color_pressed", "LinkButton", control_font_color_pressed);
+ theme->set_color("font_color_hover", "LinkButton", control_font_color_hover);
- t->set_constant("underline_spacing", "LinkButton", 2 * scale);
+ theme->set_constant("underline_spacing", "LinkButton", 2 * scale);
// ColorPickerButton
- t->set_stylebox("normal", "ColorPickerButton", sb_button_normal);
- t->set_stylebox("pressed", "ColorPickerButton", sb_button_pressed);
- t->set_stylebox("hover", "ColorPickerButton", sb_button_hover);
- t->set_stylebox("disabled", "ColorPickerButton", sb_button_disabled);
- t->set_stylebox("focus", "ColorPickerButton", sb_button_focus);
+ theme->set_stylebox("normal", "ColorPickerButton", sb_button_normal);
+ theme->set_stylebox("pressed", "ColorPickerButton", sb_button_pressed);
+ theme->set_stylebox("hover", "ColorPickerButton", sb_button_hover);
+ theme->set_stylebox("disabled", "ColorPickerButton", sb_button_disabled);
+ theme->set_stylebox("focus", "ColorPickerButton", sb_button_focus);
- t->set_font("font", "ColorPickerButton", default_font);
+ theme->set_font("font", "ColorPickerButton", default_font);
- t->set_color("font_color", "ColorPickerButton", Color(1, 1, 1, 1));
- t->set_color("font_color_pressed", "ColorPickerButton", Color(0.8, 0.8, 0.8, 1));
- t->set_color("font_color_hover", "ColorPickerButton", Color(1, 1, 1, 1));
- t->set_color("font_color_disabled", "ColorPickerButton", Color(0.9, 0.9, 0.9, 0.3));
+ theme->set_color("font_color", "ColorPickerButton", Color(1, 1, 1, 1));
+ theme->set_color("font_color_pressed", "ColorPickerButton", Color(0.8, 0.8, 0.8, 1));
+ theme->set_color("font_color_hover", "ColorPickerButton", Color(1, 1, 1, 1));
+ theme->set_color("font_color_disabled", "ColorPickerButton", Color(0.9, 0.9, 0.9, 0.3));
- t->set_constant("hseparation", "ColorPickerButton", 2 * scale);
+ theme->set_constant("hseparation", "ColorPickerButton", 2 * scale);
// ToolButton
- t->set_stylebox("normal", "ToolButton", make_empty_stylebox(6, 4, 6, 4));
- t->set_stylebox("pressed", "ToolButton", make_stylebox(button_pressed_png, 4, 4, 4, 4, 6, 4, 6, 4));
- t->set_stylebox("hover", "ToolButton", make_stylebox(button_normal_png, 4, 4, 4, 4, 6, 4, 6, 4));
- t->set_stylebox("disabled", "ToolButton", make_empty_stylebox(6, 4, 6, 4));
- t->set_stylebox("focus", "ToolButton", focus);
- t->set_font("font", "ToolButton", default_font);
+ theme->set_stylebox("normal", "ToolButton", make_empty_stylebox(6, 4, 6, 4));
+ theme->set_stylebox("pressed", "ToolButton", make_stylebox(button_pressed_png, 4, 4, 4, 4, 6, 4, 6, 4));
+ theme->set_stylebox("hover", "ToolButton", make_stylebox(button_normal_png, 4, 4, 4, 4, 6, 4, 6, 4));
+ theme->set_stylebox("disabled", "ToolButton", make_empty_stylebox(6, 4, 6, 4));
+ theme->set_stylebox("focus", "ToolButton", focus);
+ theme->set_font("font", "ToolButton", default_font);
- t->set_color("font_color", "ToolButton", control_font_color);
- t->set_color("font_color_pressed", "ToolButton", control_font_color_pressed);
- t->set_color("font_color_hover", "ToolButton", control_font_color_hover);
- t->set_color("font_color_disabled", "ToolButton", Color(0.9, 0.95, 1, 0.3));
+ theme->set_color("font_color", "ToolButton", control_font_color);
+ theme->set_color("font_color_pressed", "ToolButton", control_font_color_pressed);
+ theme->set_color("font_color_hover", "ToolButton", control_font_color_hover);
+ theme->set_color("font_color_disabled", "ToolButton", Color(0.9, 0.95, 1, 0.3));
- t->set_constant("hseparation", "ToolButton", 3);
+ theme->set_constant("hseparation", "ToolButton", 3);
// OptionButton
@@ -306,44 +306,44 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
Ref<StyleBox> sb_optbutton_disabled = sb_expand(make_stylebox(option_button_disabled_png, 4, 4, 21, 4, 6, 2, 21, 2), 2, 2, 2, 2);
Ref<StyleBox> sb_optbutton_focus = sb_expand(make_stylebox(button_focus_png, 4, 4, 4, 4, 6, 2, 6, 2), 2, 2, 2, 2);
- t->set_stylebox("normal", "OptionButton", sb_optbutton_normal);
- t->set_stylebox("pressed", "OptionButton", sb_optbutton_pressed);
- t->set_stylebox("hover", "OptionButton", sb_optbutton_hover);
- t->set_stylebox("disabled", "OptionButton", sb_optbutton_disabled);
- t->set_stylebox("focus", "OptionButton", sb_button_focus);
+ theme->set_stylebox("normal", "OptionButton", sb_optbutton_normal);
+ theme->set_stylebox("pressed", "OptionButton", sb_optbutton_pressed);
+ theme->set_stylebox("hover", "OptionButton", sb_optbutton_hover);
+ theme->set_stylebox("disabled", "OptionButton", sb_optbutton_disabled);
+ theme->set_stylebox("focus", "OptionButton", sb_button_focus);
- t->set_icon("arrow", "OptionButton", make_icon(option_arrow_png));
+ theme->set_icon("arrow", "OptionButton", make_icon(option_arrow_png));
- t->set_font("font", "OptionButton", default_font);
+ theme->set_font("font", "OptionButton", default_font);
- t->set_color("font_color", "OptionButton", control_font_color);
- t->set_color("font_color_pressed", "OptionButton", control_font_color_pressed);
- t->set_color("font_color_hover", "OptionButton", control_font_color_hover);
- t->set_color("font_color_disabled", "OptionButton", control_font_color_disabled);
+ theme->set_color("font_color", "OptionButton", control_font_color);
+ theme->set_color("font_color_pressed", "OptionButton", control_font_color_pressed);
+ theme->set_color("font_color_hover", "OptionButton", control_font_color_hover);
+ theme->set_color("font_color_disabled", "OptionButton", control_font_color_disabled);
- t->set_constant("hseparation", "OptionButton", 2 * scale);
- t->set_constant("arrow_margin", "OptionButton", 2 * scale);
+ theme->set_constant("hseparation", "OptionButton", 2 * scale);
+ theme->set_constant("arrow_margin", "OptionButton", 2 * scale);
// MenuButton
- t->set_stylebox("normal", "MenuButton", sb_button_normal);
- t->set_stylebox("pressed", "MenuButton", sb_button_pressed);
- t->set_stylebox("hover", "MenuButton", sb_button_pressed);
- t->set_stylebox("disabled", "MenuButton", make_empty_stylebox(0, 0, 0, 0));
- t->set_stylebox("focus", "MenuButton", sb_button_focus);
+ theme->set_stylebox("normal", "MenuButton", sb_button_normal);
+ theme->set_stylebox("pressed", "MenuButton", sb_button_pressed);
+ theme->set_stylebox("hover", "MenuButton", sb_button_pressed);
+ theme->set_stylebox("disabled", "MenuButton", make_empty_stylebox(0, 0, 0, 0));
+ theme->set_stylebox("focus", "MenuButton", sb_button_focus);
- t->set_font("font", "MenuButton", default_font);
+ theme->set_font("font", "MenuButton", default_font);
- t->set_color("font_color", "MenuButton", control_font_color);
- t->set_color("font_color_pressed", "MenuButton", control_font_color_pressed);
- t->set_color("font_color_hover", "MenuButton", control_font_color_hover);
- t->set_color("font_color_disabled", "MenuButton", Color(1, 1, 1, 0.3));
+ theme->set_color("font_color", "MenuButton", control_font_color);
+ theme->set_color("font_color_pressed", "MenuButton", control_font_color_pressed);
+ theme->set_color("font_color_hover", "MenuButton", control_font_color_hover);
+ theme->set_color("font_color_disabled", "MenuButton", Color(1, 1, 1, 0.3));
- t->set_constant("hseparation", "MenuButton", 3 * scale);
+ theme->set_constant("hseparation", "MenuButton", 3 * scale);
// ButtonGroup
- t->set_stylebox("panel", "ButtonGroup", memnew(StyleBoxEmpty));
+ theme->set_stylebox("panel", "ButtonGroup", memnew(StyleBoxEmpty));
// CheckBox
@@ -358,26 +358,26 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
cbx_focus->set_default_margin(MARGIN_TOP, 4 * scale);
cbx_focus->set_default_margin(MARGIN_BOTTOM, 5 * scale);
- t->set_stylebox("normal", "CheckBox", cbx_empty);
- t->set_stylebox("pressed", "CheckBox", cbx_empty);
- t->set_stylebox("disabled", "CheckBox", cbx_empty);
- t->set_stylebox("hover", "CheckBox", cbx_empty);
- t->set_stylebox("focus", "CheckBox", cbx_focus);
+ theme->set_stylebox("normal", "CheckBox", cbx_empty);
+ theme->set_stylebox("pressed", "CheckBox", cbx_empty);
+ theme->set_stylebox("disabled", "CheckBox", cbx_empty);
+ theme->set_stylebox("hover", "CheckBox", cbx_empty);
+ theme->set_stylebox("focus", "CheckBox", cbx_focus);
- t->set_icon("checked", "CheckBox", make_icon(checked_png));
- t->set_icon("unchecked", "CheckBox", make_icon(unchecked_png));
- t->set_icon("radio_checked", "CheckBox", make_icon(radio_checked_png));
- t->set_icon("radio_unchecked", "CheckBox", make_icon(radio_unchecked_png));
+ theme->set_icon("checked", "CheckBox", make_icon(checked_png));
+ theme->set_icon("unchecked", "CheckBox", make_icon(unchecked_png));
+ theme->set_icon("radio_checked", "CheckBox", make_icon(radio_checked_png));
+ theme->set_icon("radio_unchecked", "CheckBox", make_icon(radio_unchecked_png));
- t->set_font("font", "CheckBox", default_font);
+ theme->set_font("font", "CheckBox", default_font);
- t->set_color("font_color", "CheckBox", control_font_color);
- t->set_color("font_color_pressed", "CheckBox", control_font_color_pressed);
- t->set_color("font_color_hover", "CheckBox", control_font_color_hover);
- t->set_color("font_color_disabled", "CheckBox", control_font_color_disabled);
+ theme->set_color("font_color", "CheckBox", control_font_color);
+ theme->set_color("font_color_pressed", "CheckBox", control_font_color_pressed);
+ theme->set_color("font_color_hover", "CheckBox", control_font_color_hover);
+ theme->set_color("font_color_disabled", "CheckBox", control_font_color_disabled);
- t->set_constant("hseparation", "CheckBox", 4 * scale);
- t->set_constant("check_vadjust", "CheckBox", 0 * scale);
+ theme->set_constant("hseparation", "CheckBox", 4 * scale);
+ theme->set_constant("check_vadjust", "CheckBox", 0 * scale);
// CheckButton
@@ -387,170 +387,172 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
cb_empty->set_default_margin(MARGIN_TOP, 4 * scale);
cb_empty->set_default_margin(MARGIN_BOTTOM, 4 * scale);
- t->set_stylebox("normal", "CheckButton", cb_empty);
- t->set_stylebox("pressed", "CheckButton", cb_empty);
- t->set_stylebox("disabled", "CheckButton", cb_empty);
- t->set_stylebox("hover", "CheckButton", cb_empty);
- t->set_stylebox("focus", "CheckButton", focus);
+ theme->set_stylebox("normal", "CheckButton", cb_empty);
+ theme->set_stylebox("pressed", "CheckButton", cb_empty);
+ theme->set_stylebox("disabled", "CheckButton", cb_empty);
+ theme->set_stylebox("hover", "CheckButton", cb_empty);
+ theme->set_stylebox("focus", "CheckButton", focus);
- t->set_icon("on", "CheckButton", make_icon(toggle_on_png));
- t->set_icon("off", "CheckButton", make_icon(toggle_off_png));
+ theme->set_icon("on", "CheckButton", make_icon(toggle_on_png));
+ theme->set_icon("off", "CheckButton", make_icon(toggle_off_png));
- t->set_font("font", "CheckButton", default_font);
+ theme->set_font("font", "CheckButton", default_font);
- t->set_color("font_color", "CheckButton", control_font_color);
- t->set_color("font_color_pressed", "CheckButton", control_font_color_pressed);
- t->set_color("font_color_hover", "CheckButton", control_font_color_hover);
- t->set_color("font_color_disabled", "CheckButton", control_font_color_disabled);
+ theme->set_color("font_color", "CheckButton", control_font_color);
+ theme->set_color("font_color_pressed", "CheckButton", control_font_color_pressed);
+ theme->set_color("font_color_hover", "CheckButton", control_font_color_hover);
+ theme->set_color("font_color_disabled", "CheckButton", control_font_color_disabled);
- t->set_constant("hseparation", "CheckButton", 4 * scale);
- t->set_constant("check_vadjust", "CheckButton", 0 * scale);
+ theme->set_constant("hseparation", "CheckButton", 4 * scale);
+ theme->set_constant("check_vadjust", "CheckButton", 0 * scale);
// Label
- t->set_font("font", "Label", default_font);
+ theme->set_font("font", "Label", default_font);
- t->set_color("font_color", "Label", Color(1, 1, 1));
- t->set_color("font_color_shadow", "Label", Color(0, 0, 0, 0));
+ theme->set_color("font_color", "Label", Color(1, 1, 1));
+ theme->set_color("font_color_shadow", "Label", Color(0, 0, 0, 0));
- t->set_constant("shadow_offset_x", "Label", 1 * scale);
- t->set_constant("shadow_offset_y", "Label", 1 * scale);
- t->set_constant("shadow_as_outline", "Label", 0 * scale);
- t->set_constant("line_spacing", "Label", 3 * scale);
+ theme->set_constant("shadow_offset_x", "Label", 1 * scale);
+ theme->set_constant("shadow_offset_y", "Label", 1 * scale);
+ theme->set_constant("shadow_as_outline", "Label", 0 * scale);
+ theme->set_constant("line_spacing", "Label", 3 * scale);
// LineEdit
- t->set_stylebox("normal", "LineEdit", make_stylebox(line_edit_png, 5, 5, 5, 5));
- t->set_stylebox("focus", "LineEdit", focus);
- t->set_stylebox("read_only", "LineEdit", make_stylebox(line_edit_disabled_png, 6, 6, 6, 6));
+ theme->set_stylebox("normal", "LineEdit", make_stylebox(line_edit_png, 5, 5, 5, 5));
+ theme->set_stylebox("focus", "LineEdit", focus);
+ theme->set_stylebox("read_only", "LineEdit", make_stylebox(line_edit_disabled_png, 6, 6, 6, 6));
- t->set_font("font", "LineEdit", default_font);
+ theme->set_font("font", "LineEdit", default_font);
- t->set_color("font_color", "LineEdit", control_font_color);
- t->set_color("font_color_selected", "LineEdit", Color(0, 0, 0));
- t->set_color("cursor_color", "LineEdit", control_font_color_hover);
- t->set_color("selection_color", "LineEdit", font_color_selection);
+ theme->set_color("font_color", "LineEdit", control_font_color);
+ theme->set_color("font_color_selected", "LineEdit", Color(0, 0, 0));
+ theme->set_color("cursor_color", "LineEdit", control_font_color_hover);
+ theme->set_color("selection_color", "LineEdit", font_color_selection);
- t->set_constant("minimum_spaces", "LineEdit", 12 * scale);
+ theme->set_constant("minimum_spaces", "LineEdit", 12 * scale);
// ProgressBar
- t->set_stylebox("bg", "ProgressBar", make_stylebox(progress_bar_png, 4, 4, 4, 4, 0, 0, 0, 0));
- t->set_stylebox("fg", "ProgressBar", make_stylebox(progress_fill_png, 6, 6, 6, 6, 2, 1, 2, 1));
+ theme->set_stylebox("bg", "ProgressBar", make_stylebox(progress_bar_png, 4, 4, 4, 4, 0, 0, 0, 0));
+ theme->set_stylebox("fg", "ProgressBar", make_stylebox(progress_fill_png, 6, 6, 6, 6, 2, 1, 2, 1));
- t->set_font("font", "ProgressBar", default_font);
+ theme->set_font("font", "ProgressBar", default_font);
- t->set_color("font_color", "ProgressBar", control_font_color_hover);
- t->set_color("font_color_shadow", "ProgressBar", Color(0, 0, 0));
+ theme->set_color("font_color", "ProgressBar", control_font_color_hover);
+ theme->set_color("font_color_shadow", "ProgressBar", Color(0, 0, 0));
// TextEdit
- t->set_stylebox("normal", "TextEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3));
- t->set_stylebox("focus", "TextEdit", focus);
- t->set_stylebox("completion", "TextEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3));
-
- t->set_icon("tab", "TextEdit", make_icon(tab_png));
-
- t->set_font("font", "TextEdit", default_font);
-
- t->set_color("background_color", "TextEdit", Color(0, 0, 0, 0));
- t->set_color("completion_background_color", "TextEdit", Color::html("2C2A32"));
- t->set_color("completion_selected_color", "TextEdit", Color::html("434244"));
- t->set_color("completion_existing_color", "TextEdit", Color::html("21dfdfdf"));
- t->set_color("completion_scroll_color", "TextEdit", control_font_color_pressed);
- t->set_color("completion_font_color", "TextEdit", Color::html("aaaaaa"));
- t->set_color("font_color", "TextEdit", control_font_color);
- t->set_color("font_color_selected", "TextEdit", Color(0, 0, 0));
- t->set_color("selection_color", "TextEdit", font_color_selection);
- t->set_color("mark_color", "TextEdit", Color(1.0, 0.4, 0.4, 0.4));
- t->set_color("breakpoint_color", "TextEdit", Color(0.8, 0.8, 0.4, 0.2));
- t->set_color("current_line_color", "TextEdit", Color(0.25, 0.25, 0.26, 0.8));
- t->set_color("caret_color", "TextEdit", control_font_color);
- t->set_color("caret_background_color", "TextEdit", Color::html("000000"));
- t->set_color("symbol_color", "TextEdit", control_font_color_hover);
- t->set_color("brace_mismatch_color", "TextEdit", Color(1, 0.2, 0.2));
- t->set_color("line_number_color", "TextEdit", Color::html("66aaaaaa"));
- t->set_color("function_color", "TextEdit", Color::html("66a2ce"));
- t->set_color("member_variable_color", "TextEdit", Color::html("e64e59"));
- t->set_color("number_color", "TextEdit", Color::html("EB9532"));
- t->set_color("word_highlighted_color", "TextEdit", Color(0.8, 0.9, 0.9, 0.15));
-
- t->set_constant("completion_lines", "TextEdit", 7);
- t->set_constant("completion_max_width", "TextEdit", 50);
- t->set_constant("completion_scroll_width", "TextEdit", 3);
- t->set_constant("line_spacing", "TextEdit", 4 * scale);
+ theme->set_stylebox("normal", "TextEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3));
+ theme->set_stylebox("focus", "TextEdit", focus);
+ theme->set_stylebox("completion", "TextEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3));
+
+ theme->set_icon("tab", "TextEdit", make_icon(tab_png));
+
+ theme->set_font("font", "TextEdit", default_font);
+
+ theme->set_color("background_color", "TextEdit", Color(0, 0, 0, 0));
+ theme->set_color("completion_background_color", "TextEdit", Color::html("2C2A32"));
+ theme->set_color("completion_selected_color", "TextEdit", Color::html("434244"));
+ theme->set_color("completion_existing_color", "TextEdit", Color::html("21dfdfdf"));
+ theme->set_color("completion_scroll_color", "TextEdit", control_font_color_pressed);
+ theme->set_color("completion_font_color", "TextEdit", Color::html("aaaaaa"));
+ theme->set_color("font_color", "TextEdit", control_font_color);
+ theme->set_color("font_color_selected", "TextEdit", Color(0, 0, 0));
+ theme->set_color("selection_color", "TextEdit", font_color_selection);
+ theme->set_color("mark_color", "TextEdit", Color(1.0, 0.4, 0.4, 0.4));
+ theme->set_color("breakpoint_color", "TextEdit", Color(0.8, 0.8, 0.4, 0.2));
+ theme->set_color("current_line_color", "TextEdit", Color(0.25, 0.25, 0.26, 0.8));
+ theme->set_color("caret_color", "TextEdit", control_font_color);
+ theme->set_color("caret_background_color", "TextEdit", Color::html("000000"));
+ theme->set_color("symbol_color", "TextEdit", control_font_color_hover);
+ theme->set_color("brace_mismatch_color", "TextEdit", Color(1, 0.2, 0.2));
+ theme->set_color("line_number_color", "TextEdit", Color::html("66aaaaaa"));
+ theme->set_color("function_color", "TextEdit", Color::html("66a2ce"));
+ theme->set_color("member_variable_color", "TextEdit", Color::html("e64e59"));
+ theme->set_color("number_color", "TextEdit", Color::html("EB9532"));
+ theme->set_color("word_highlighted_color", "TextEdit", Color(0.8, 0.9, 0.9, 0.15));
+
+ theme->set_constant("completion_lines", "TextEdit", 7);
+ theme->set_constant("completion_max_width", "TextEdit", 50);
+ theme->set_constant("completion_scroll_width", "TextEdit", 3);
+ theme->set_constant("line_spacing", "TextEdit", 4 * scale);
Ref<Texture> empty_icon = memnew(ImageTexture);
// HScrollBar
- t->set_stylebox("scroll", "HScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
- t->set_stylebox("scroll_focus", "HScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
- t->set_stylebox("grabber", "HScrollBar", make_stylebox(scroll_grabber_png, 5, 5, 5, 5, 2, 2, 2, 2));
- t->set_stylebox("grabber_highlight", "HScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("scroll", "HScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
+ theme->set_stylebox("scroll_focus", "HScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
+ theme->set_stylebox("grabber", "HScrollBar", make_stylebox(scroll_grabber_png, 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("grabber_highlight", "HScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("grabber_pressed", "HScrollBar", make_stylebox(scroll_grabber_pressed_png, 5, 5, 5, 5, 2, 2, 2, 2));
- t->set_icon("increment", "HScrollBar", empty_icon);
- t->set_icon("increment_highlight", "HScrollBar", empty_icon);
- t->set_icon("decrement", "HScrollBar", empty_icon);
- t->set_icon("decrement_highlight", "HScrollBar", empty_icon);
+ theme->set_icon("increment", "HScrollBar", empty_icon);
+ theme->set_icon("increment_highlight", "HScrollBar", empty_icon);
+ theme->set_icon("decrement", "HScrollBar", empty_icon);
+ theme->set_icon("decrement_highlight", "HScrollBar", empty_icon);
// VScrollBar
- t->set_stylebox("scroll", "VScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
- t->set_stylebox("scroll_focus", "VScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
- t->set_stylebox("grabber", "VScrollBar", make_stylebox(scroll_grabber_png, 5, 5, 5, 5, 2, 2, 2, 2));
- t->set_stylebox("grabber_highlight", "VScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("scroll", "VScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
+ theme->set_stylebox("scroll_focus", "VScrollBar", make_stylebox(scroll_bg_png, 5, 5, 5, 5, 0, 0, 0, 0));
+ theme->set_stylebox("grabber", "VScrollBar", make_stylebox(scroll_grabber_png, 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("grabber_highlight", "VScrollBar", make_stylebox(scroll_grabber_hl_png, 5, 5, 5, 5, 2, 2, 2, 2));
+ theme->set_stylebox("grabber_pressed", "VScrollBar", make_stylebox(scroll_grabber_pressed_png, 5, 5, 5, 5, 2, 2, 2, 2));
- t->set_icon("increment", "VScrollBar", empty_icon);
- t->set_icon("increment_highlight", "VScrollBar", empty_icon);
- t->set_icon("decrement", "VScrollBar", empty_icon);
- t->set_icon("decrement_highlight", "VScrollBar", empty_icon);
+ theme->set_icon("increment", "VScrollBar", empty_icon);
+ theme->set_icon("increment_highlight", "VScrollBar", empty_icon);
+ theme->set_icon("decrement", "VScrollBar", empty_icon);
+ theme->set_icon("decrement_highlight", "VScrollBar", empty_icon);
// HSlider
- t->set_stylebox("slider", "HSlider", make_stylebox(hslider_bg_png, 4, 4, 4, 4));
- t->set_stylebox("grabber_highlight", "HSlider", make_stylebox(hslider_grabber_hl_png, 6, 6, 6, 6));
- t->set_stylebox("grabber_disabled", "HSlider", make_stylebox(hslider_grabber_disabled_png, 6, 6, 6, 6));
- t->set_stylebox("focus", "HSlider", focus);
+ theme->set_stylebox("slider", "HSlider", make_stylebox(hslider_bg_png, 4, 4, 4, 4));
+ theme->set_stylebox("grabber_highlight", "HSlider", make_stylebox(hslider_grabber_hl_png, 6, 6, 6, 6));
+ theme->set_stylebox("grabber_disabled", "HSlider", make_stylebox(hslider_grabber_disabled_png, 6, 6, 6, 6));
+ theme->set_stylebox("focus", "HSlider", focus);
- t->set_icon("grabber", "HSlider", make_icon(hslider_grabber_png));
- t->set_icon("grabber_highlight", "HSlider", make_icon(hslider_grabber_hl_png));
- t->set_icon("grabber_disabled", "HSlider", make_icon(hslider_grabber_disabled_png));
- t->set_icon("tick", "HSlider", make_icon(hslider_tick_png));
+ theme->set_icon("grabber", "HSlider", make_icon(hslider_grabber_png));
+ theme->set_icon("grabber_highlight", "HSlider", make_icon(hslider_grabber_hl_png));
+ theme->set_icon("grabber_disabled", "HSlider", make_icon(hslider_grabber_disabled_png));
+ theme->set_icon("tick", "HSlider", make_icon(hslider_tick_png));
// VSlider
- t->set_stylebox("slider", "VSlider", make_stylebox(vslider_bg_png, 4, 4, 4, 4));
- t->set_stylebox("grabber_highlight", "VSlider", make_stylebox(vslider_grabber_hl_png, 6, 6, 6, 6));
- t->set_stylebox("grabber_disabled", "VSlider", make_stylebox(vslider_grabber_disabled_png, 6, 6, 6, 6));
- t->set_stylebox("focus", "HSlider", focus);
+ theme->set_stylebox("slider", "VSlider", make_stylebox(vslider_bg_png, 4, 4, 4, 4));
+ theme->set_stylebox("grabber_highlight", "VSlider", make_stylebox(vslider_grabber_hl_png, 6, 6, 6, 6));
+ theme->set_stylebox("grabber_disabled", "VSlider", make_stylebox(vslider_grabber_disabled_png, 6, 6, 6, 6));
+ theme->set_stylebox("focus", "HSlider", focus);
- t->set_icon("grabber", "VSlider", make_icon(vslider_grabber_png));
- t->set_icon("grabber_highlight", "VSlider", make_icon(vslider_grabber_hl_png));
- t->set_icon("grabber_disabled", "VSlider", make_icon(vslider_grabber_disabled_png));
- t->set_icon("tick", "VSlider", make_icon(vslider_tick_png));
+ theme->set_icon("grabber", "VSlider", make_icon(vslider_grabber_png));
+ theme->set_icon("grabber_highlight", "VSlider", make_icon(vslider_grabber_hl_png));
+ theme->set_icon("grabber_disabled", "VSlider", make_icon(vslider_grabber_disabled_png));
+ theme->set_icon("tick", "VSlider", make_icon(vslider_tick_png));
// SpinBox
- t->set_icon("updown", "SpinBox", make_icon(spinbox_updown_png));
+ theme->set_icon("updown", "SpinBox", make_icon(spinbox_updown_png));
// WindowDialog
- t->set_stylebox("panel", "WindowDialog", sb_expand(make_stylebox(popup_window_png, 10, 26, 10, 8), 8, 24, 8, 6));
- t->set_constant("scaleborder_size", "WindowDialog", 4 * scale);
+ theme->set_stylebox("panel", "WindowDialog", sb_expand(make_stylebox(popup_window_png, 10, 26, 10, 8), 8, 24, 8, 6));
+ theme->set_constant("scaleborder_size", "WindowDialog", 4 * scale);
- t->set_font("title_font", "WindowDialog", large_font);
- t->set_color("title_color", "WindowDialog", Color(0, 0, 0));
- t->set_constant("title_height", "WindowDialog", 20 * scale);
+ theme->set_font("title_font", "WindowDialog", large_font);
+ theme->set_color("title_color", "WindowDialog", Color(0, 0, 0));
+ theme->set_constant("title_height", "WindowDialog", 20 * scale);
- t->set_icon("close", "WindowDialog", make_icon(close_png));
- t->set_icon("close_highlight", "WindowDialog", make_icon(close_hl_png));
- t->set_constant("close_h_ofs", "WindowDialog", 18 * scale);
- t->set_constant("close_v_ofs", "WindowDialog", 18 * scale);
+ theme->set_icon("close", "WindowDialog", make_icon(close_png));
+ theme->set_icon("close_highlight", "WindowDialog", make_icon(close_hl_png));
+ theme->set_constant("close_h_ofs", "WindowDialog", 18 * scale);
+ theme->set_constant("close_v_ofs", "WindowDialog", 18 * scale);
// File Dialog
- t->set_icon("reload", "FileDialog", make_icon(icon_reload_png));
+ theme->set_icon("reload", "FileDialog", make_icon(icon_reload_png));
// Popup
@@ -561,28 +563,28 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
selected->set_expand_margin_size(Margin(i), 2 * scale);
}
- t->set_stylebox("panel", "PopupPanel", style_pp);
+ theme->set_stylebox("panel", "PopupPanel", style_pp);
// PopupMenu
- t->set_stylebox("panel", "PopupMenu", make_stylebox(popup_bg_png, 4, 4, 4, 4, 10, 10, 10, 10));
- t->set_stylebox("panel_disabled", "PopupMenu", make_stylebox(popup_bg_disabled_png, 4, 4, 4, 4));
- t->set_stylebox("hover", "PopupMenu", selected);
- t->set_stylebox("separator", "PopupMenu", make_stylebox(vseparator_png, 3, 3, 3, 3));
+ theme->set_stylebox("panel", "PopupMenu", make_stylebox(popup_bg_png, 4, 4, 4, 4, 10, 10, 10, 10));
+ theme->set_stylebox("panel_disabled", "PopupMenu", make_stylebox(popup_bg_disabled_png, 4, 4, 4, 4));
+ theme->set_stylebox("hover", "PopupMenu", selected);
+ theme->set_stylebox("separator", "PopupMenu", make_stylebox(vseparator_png, 3, 3, 3, 3));
- t->set_icon("checked", "PopupMenu", make_icon(checked_png));
- t->set_icon("unchecked", "PopupMenu", make_icon(unchecked_png));
- t->set_icon("submenu", "PopupMenu", make_icon(submenu_png));
+ theme->set_icon("checked", "PopupMenu", make_icon(checked_png));
+ theme->set_icon("unchecked", "PopupMenu", make_icon(unchecked_png));
+ theme->set_icon("submenu", "PopupMenu", make_icon(submenu_png));
- t->set_font("font", "PopupMenu", default_font);
+ theme->set_font("font", "PopupMenu", default_font);
- t->set_color("font_color", "PopupMenu", control_font_color);
- t->set_color("font_color_accel", "PopupMenu", Color(0.7, 0.7, 0.7, 0.8));
- t->set_color("font_color_disabled", "PopupMenu", Color(0.4, 0.4, 0.4, 0.8));
- t->set_color("font_color_hover", "PopupMenu", control_font_color);
+ theme->set_color("font_color", "PopupMenu", control_font_color);
+ theme->set_color("font_color_accel", "PopupMenu", Color(0.7, 0.7, 0.7, 0.8));
+ theme->set_color("font_color_disabled", "PopupMenu", Color(0.4, 0.4, 0.4, 0.8));
+ theme->set_color("font_color_hover", "PopupMenu", control_font_color);
- t->set_constant("hseparation", "PopupMenu", 4 * scale);
- t->set_constant("vseparation", "PopupMenu", 4 * scale);
+ theme->set_constant("hseparation", "PopupMenu", 4 * scale);
+ theme->set_constant("vseparation", "PopupMenu", 4 * scale);
// GraphNode
@@ -597,90 +599,90 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
//graphsb->set_expand_margin_size(MARGIN_LEFT,10);
//graphsb->set_expand_margin_size(MARGIN_RIGHT,10);
- t->set_stylebox("frame", "GraphNode", graphsb);
- t->set_stylebox("selectedframe", "GraphNode", graphsbselected);
- t->set_stylebox("defaultframe", "GraphNode", graphsbdefault);
- t->set_stylebox("defaultfocus", "GraphNode", graphsbdeffocus);
- t->set_stylebox("comment", "GraphNode", graphsbcomment);
- t->set_stylebox("commentfocus", "GraphNode", graphsbcommentselected);
- t->set_stylebox("breakpoint", "GraphNode", graph_bpoint);
- t->set_stylebox("position", "GraphNode", graph_position);
- t->set_constant("separation", "GraphNode", 1 * scale);
- t->set_icon("port", "GraphNode", make_icon(graph_port_png));
- t->set_icon("close", "GraphNode", make_icon(graph_node_close_png));
- t->set_icon("resizer", "GraphNode", make_icon(window_resizer_png));
- t->set_font("title_font", "GraphNode", default_font);
- t->set_color("title_color", "GraphNode", Color(0, 0, 0, 1));
- t->set_constant("title_offset", "GraphNode", 20 * scale);
- t->set_constant("close_offset", "GraphNode", 18 * scale);
- t->set_constant("port_offset", "GraphNode", 3 * scale);
+ theme->set_stylebox("frame", "GraphNode", graphsb);
+ theme->set_stylebox("selectedframe", "GraphNode", graphsbselected);
+ theme->set_stylebox("defaultframe", "GraphNode", graphsbdefault);
+ theme->set_stylebox("defaultfocus", "GraphNode", graphsbdeffocus);
+ theme->set_stylebox("comment", "GraphNode", graphsbcomment);
+ theme->set_stylebox("commentfocus", "GraphNode", graphsbcommentselected);
+ theme->set_stylebox("breakpoint", "GraphNode", graph_bpoint);
+ theme->set_stylebox("position", "GraphNode", graph_position);
+ theme->set_constant("separation", "GraphNode", 1 * scale);
+ theme->set_icon("port", "GraphNode", make_icon(graph_port_png));
+ theme->set_icon("close", "GraphNode", make_icon(graph_node_close_png));
+ theme->set_icon("resizer", "GraphNode", make_icon(window_resizer_png));
+ theme->set_font("title_font", "GraphNode", default_font);
+ theme->set_color("title_color", "GraphNode", Color(0, 0, 0, 1));
+ theme->set_constant("title_offset", "GraphNode", 20 * scale);
+ theme->set_constant("close_offset", "GraphNode", 18 * scale);
+ theme->set_constant("port_offset", "GraphNode", 3 * scale);
// Tree
Ref<StyleBoxTexture> tree_selected = make_stylebox(selection_png, 4, 4, 4, 4, 8, 0, 8, 0);
Ref<StyleBoxTexture> tree_selected_oof = make_stylebox(selection_oof_png, 4, 4, 4, 4, 8, 0, 8, 0);
- t->set_stylebox("bg", "Tree", make_stylebox(tree_bg_png, 4, 4, 4, 5));
- t->set_stylebox("bg_focus", "Tree", focus);
- t->set_stylebox("selected", "Tree", tree_selected_oof);
- t->set_stylebox("selected_focus", "Tree", tree_selected);
- t->set_stylebox("cursor", "Tree", focus);
- t->set_stylebox("cursor_unfocused", "Tree", focus);
- t->set_stylebox("button_pressed", "Tree", make_stylebox(button_pressed_png, 4, 4, 4, 4));
- t->set_stylebox("title_button_normal", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4));
- t->set_stylebox("title_button_pressed", "Tree", make_stylebox(tree_title_pressed_png, 4, 4, 4, 4));
- t->set_stylebox("title_button_hover", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4));
- t->set_stylebox("custom_button", "Tree", sb_button_normal);
- t->set_stylebox("custom_button_pressed", "Tree", sb_button_pressed);
- t->set_stylebox("custom_button_hover", "Tree", sb_button_hover);
-
- t->set_icon("checked", "Tree", make_icon(checked_png));
- t->set_icon("unchecked", "Tree", make_icon(unchecked_png));
- t->set_icon("updown", "Tree", make_icon(updown_png));
- t->set_icon("select_arrow", "Tree", make_icon(dropdown_png));
- t->set_icon("arrow", "Tree", make_icon(arrow_down_png));
- t->set_icon("arrow_collapsed", "Tree", make_icon(arrow_right_png));
-
- t->set_font("title_button_font", "Tree", default_font);
- t->set_font("font", "Tree", default_font);
-
- t->set_color("title_button_color", "Tree", control_font_color);
- t->set_color("font_color", "Tree", control_font_color_low);
- t->set_color("font_color_selected", "Tree", control_font_color_pressed);
- t->set_color("selection_color", "Tree", Color(0.1, 0.1, 1, 0.8));
- t->set_color("cursor_color", "Tree", Color(0, 0, 0));
- t->set_color("guide_color", "Tree", Color(0, 0, 0, 0.1));
- t->set_color("drop_position_color", "Tree", Color(1, 0.3, 0.2));
- t->set_color("relationship_line_color", "Tree", Color::html("464646"));
- t->set_color("custom_button_font_highlight", "Tree", control_font_color_hover);
-
- t->set_constant("hseparation", "Tree", 4 * scale);
- t->set_constant("vseparation", "Tree", 4 * scale);
- t->set_constant("guide_width", "Tree", 2 * scale);
- t->set_constant("item_margin", "Tree", 12 * scale);
- t->set_constant("button_margin", "Tree", 4 * scale);
- t->set_constant("draw_relationship_lines", "Tree", 0);
- t->set_constant("scroll_border", "Tree", 4);
- t->set_constant("scroll_speed", "Tree", 12);
+ theme->set_stylebox("bg", "Tree", make_stylebox(tree_bg_png, 4, 4, 4, 5));
+ theme->set_stylebox("bg_focus", "Tree", focus);
+ theme->set_stylebox("selected", "Tree", tree_selected_oof);
+ theme->set_stylebox("selected_focus", "Tree", tree_selected);
+ theme->set_stylebox("cursor", "Tree", focus);
+ theme->set_stylebox("cursor_unfocused", "Tree", focus);
+ theme->set_stylebox("button_pressed", "Tree", make_stylebox(button_pressed_png, 4, 4, 4, 4));
+ theme->set_stylebox("title_button_normal", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4));
+ theme->set_stylebox("title_button_pressed", "Tree", make_stylebox(tree_title_pressed_png, 4, 4, 4, 4));
+ theme->set_stylebox("title_button_hover", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4));
+ theme->set_stylebox("custom_button", "Tree", sb_button_normal);
+ theme->set_stylebox("custom_button_pressed", "Tree", sb_button_pressed);
+ theme->set_stylebox("custom_button_hover", "Tree", sb_button_hover);
+
+ theme->set_icon("checked", "Tree", make_icon(checked_png));
+ theme->set_icon("unchecked", "Tree", make_icon(unchecked_png));
+ theme->set_icon("updown", "Tree", make_icon(updown_png));
+ theme->set_icon("select_arrow", "Tree", make_icon(dropdown_png));
+ theme->set_icon("arrow", "Tree", make_icon(arrow_down_png));
+ theme->set_icon("arrow_collapsed", "Tree", make_icon(arrow_right_png));
+
+ theme->set_font("title_button_font", "Tree", default_font);
+ theme->set_font("font", "Tree", default_font);
+
+ theme->set_color("title_button_color", "Tree", control_font_color);
+ theme->set_color("font_color", "Tree", control_font_color_low);
+ theme->set_color("font_color_selected", "Tree", control_font_color_pressed);
+ theme->set_color("selection_color", "Tree", Color(0.1, 0.1, 1, 0.8));
+ theme->set_color("cursor_color", "Tree", Color(0, 0, 0));
+ theme->set_color("guide_color", "Tree", Color(0, 0, 0, 0.1));
+ theme->set_color("drop_position_color", "Tree", Color(1, 0.3, 0.2));
+ theme->set_color("relationship_line_color", "Tree", Color::html("464646"));
+ theme->set_color("custom_button_font_highlight", "Tree", control_font_color_hover);
+
+ theme->set_constant("hseparation", "Tree", 4 * scale);
+ theme->set_constant("vseparation", "Tree", 4 * scale);
+ theme->set_constant("guide_width", "Tree", 2 * scale);
+ theme->set_constant("item_margin", "Tree", 12 * scale);
+ theme->set_constant("button_margin", "Tree", 4 * scale);
+ theme->set_constant("draw_relationship_lines", "Tree", 0);
+ theme->set_constant("scroll_border", "Tree", 4);
+ theme->set_constant("scroll_speed", "Tree", 12);
// ItemList
Ref<StyleBoxTexture> item_selected = make_stylebox(selection_png, 4, 4, 4, 4, 8, 2, 8, 2);
Ref<StyleBoxTexture> item_selected_oof = make_stylebox(selection_oof_png, 4, 4, 4, 4, 8, 2, 8, 2);
- t->set_stylebox("bg", "ItemList", make_stylebox(tree_bg_png, 4, 4, 4, 5));
- t->set_stylebox("bg_focus", "ItemList", focus);
- t->set_constant("hseparation", "ItemList", 4);
- t->set_constant("vseparation", "ItemList", 2);
- t->set_constant("icon_margin", "ItemList", 4);
- t->set_constant("line_separation", "ItemList", 2 * scale);
- t->set_font("font", "ItemList", default_font);
- t->set_color("font_color", "ItemList", control_font_color_lower);
- t->set_color("font_color_selected", "ItemList", control_font_color_pressed);
- t->set_color("guide_color", "ItemList", Color(0, 0, 0, 0.1));
- t->set_stylebox("selected", "ItemList", item_selected_oof);
- t->set_stylebox("selected_focus", "ItemList", item_selected);
- t->set_stylebox("cursor", "ItemList", focus);
- t->set_stylebox("cursor_unfocused", "ItemList", focus);
+ theme->set_stylebox("bg", "ItemList", make_stylebox(tree_bg_png, 4, 4, 4, 5));
+ theme->set_stylebox("bg_focus", "ItemList", focus);
+ theme->set_constant("hseparation", "ItemList", 4);
+ theme->set_constant("vseparation", "ItemList", 2);
+ theme->set_constant("icon_margin", "ItemList", 4);
+ theme->set_constant("line_separation", "ItemList", 2 * scale);
+ theme->set_font("font", "ItemList", default_font);
+ theme->set_color("font_color", "ItemList", control_font_color_lower);
+ theme->set_color("font_color_selected", "ItemList", control_font_color_pressed);
+ theme->set_color("guide_color", "ItemList", Color(0, 0, 0, 0.1));
+ theme->set_stylebox("selected", "ItemList", item_selected_oof);
+ theme->set_stylebox("selected_focus", "ItemList", item_selected);
+ theme->set_stylebox("cursor", "ItemList", focus);
+ theme->set_stylebox("cursor_unfocused", "ItemList", focus);
// TabContainer
@@ -689,88 +691,88 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
tc_sb->set_expand_margin_size(MARGIN_TOP, 2 * scale);
tc_sb->set_default_margin(MARGIN_TOP, 8 * scale);
- t->set_stylebox("tab_fg", "TabContainer", sb_expand(make_stylebox(tab_current_png, 4, 4, 4, 1, 16, 4, 16, 4), 2, 2, 2, 2));
- t->set_stylebox("tab_bg", "TabContainer", sb_expand(make_stylebox(tab_behind_png, 5, 5, 5, 1, 16, 6, 16, 4), 3, 0, 3, 3));
- t->set_stylebox("panel", "TabContainer", tc_sb);
+ theme->set_stylebox("tab_fg", "TabContainer", sb_expand(make_stylebox(tab_current_png, 4, 4, 4, 1, 16, 4, 16, 4), 2, 2, 2, 2));
+ theme->set_stylebox("tab_bg", "TabContainer", sb_expand(make_stylebox(tab_behind_png, 5, 5, 5, 1, 16, 6, 16, 4), 3, 0, 3, 3));
+ theme->set_stylebox("panel", "TabContainer", tc_sb);
- t->set_icon("increment", "TabContainer", make_icon(scroll_button_right_png));
- t->set_icon("increment_highlight", "TabContainer", make_icon(scroll_button_right_hl_png));
- t->set_icon("decrement", "TabContainer", make_icon(scroll_button_left_png));
- t->set_icon("decrement_highlight", "TabContainer", make_icon(scroll_button_left_hl_png));
- t->set_icon("menu", "TabContainer", make_icon(tab_menu_png));
- t->set_icon("menu_highlight", "TabContainer", make_icon(tab_menu_hl_png));
+ theme->set_icon("increment", "TabContainer", make_icon(scroll_button_right_png));
+ theme->set_icon("increment_highlight", "TabContainer", make_icon(scroll_button_right_hl_png));
+ theme->set_icon("decrement", "TabContainer", make_icon(scroll_button_left_png));
+ theme->set_icon("decrement_highlight", "TabContainer", make_icon(scroll_button_left_hl_png));
+ theme->set_icon("menu", "TabContainer", make_icon(tab_menu_png));
+ theme->set_icon("menu_highlight", "TabContainer", make_icon(tab_menu_hl_png));
- t->set_font("font", "TabContainer", default_font);
+ theme->set_font("font", "TabContainer", default_font);
- t->set_color("font_color_fg", "TabContainer", control_font_color_hover);
- t->set_color("font_color_bg", "TabContainer", control_font_color_low);
- t->set_color("font_color_disabled", "TabContainer", control_font_color_disabled);
+ theme->set_color("font_color_fg", "TabContainer", control_font_color_hover);
+ theme->set_color("font_color_bg", "TabContainer", control_font_color_low);
+ theme->set_color("font_color_disabled", "TabContainer", control_font_color_disabled);
- t->set_constant("side_margin", "TabContainer", 8 * scale);
- t->set_constant("top_margin", "TabContainer", 24 * scale);
- t->set_constant("label_valign_fg", "TabContainer", 0 * scale);
- t->set_constant("label_valign_bg", "TabContainer", 2 * scale);
- t->set_constant("hseparation", "TabContainer", 4 * scale);
+ theme->set_constant("side_margin", "TabContainer", 8 * scale);
+ theme->set_constant("top_margin", "TabContainer", 24 * scale);
+ theme->set_constant("label_valign_fg", "TabContainer", 0 * scale);
+ theme->set_constant("label_valign_bg", "TabContainer", 2 * scale);
+ theme->set_constant("hseparation", "TabContainer", 4 * scale);
// Tabs
- t->set_stylebox("tab_fg", "Tabs", sb_expand(make_stylebox(tab_current_png, 4, 3, 4, 1, 16, 3, 16, 2), 2, 2, 2, 2));
- t->set_stylebox("tab_bg", "Tabs", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 5, 16, 2), 3, 3, 3, 3));
- t->set_stylebox("panel", "Tabs", tc_sb);
- t->set_stylebox("button_pressed", "Tabs", make_stylebox(button_pressed_png, 4, 4, 4, 4));
- t->set_stylebox("button", "Tabs", make_stylebox(button_normal_png, 4, 4, 4, 4));
+ theme->set_stylebox("tab_fg", "Tabs", sb_expand(make_stylebox(tab_current_png, 4, 3, 4, 1, 16, 3, 16, 2), 2, 2, 2, 2));
+ theme->set_stylebox("tab_bg", "Tabs", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 5, 16, 2), 3, 3, 3, 3));
+ theme->set_stylebox("panel", "Tabs", tc_sb);
+ theme->set_stylebox("button_pressed", "Tabs", make_stylebox(button_pressed_png, 4, 4, 4, 4));
+ theme->set_stylebox("button", "Tabs", make_stylebox(button_normal_png, 4, 4, 4, 4));
- t->set_icon("increment", "Tabs", make_icon(scroll_button_right_png));
- t->set_icon("increment_highlight", "Tabs", make_icon(scroll_button_right_hl_png));
- t->set_icon("decrement", "Tabs", make_icon(scroll_button_left_png));
- t->set_icon("decrement_highlight", "Tabs", make_icon(scroll_button_left_hl_png));
- t->set_icon("close", "Tabs", make_icon(tab_close_png));
+ theme->set_icon("increment", "Tabs", make_icon(scroll_button_right_png));
+ theme->set_icon("increment_highlight", "Tabs", make_icon(scroll_button_right_hl_png));
+ theme->set_icon("decrement", "Tabs", make_icon(scroll_button_left_png));
+ theme->set_icon("decrement_highlight", "Tabs", make_icon(scroll_button_left_hl_png));
+ theme->set_icon("close", "Tabs", make_icon(tab_close_png));
- t->set_font("font", "Tabs", default_font);
+ theme->set_font("font", "Tabs", default_font);
- t->set_color("font_color_fg", "Tabs", control_font_color_hover);
- t->set_color("font_color_bg", "Tabs", control_font_color_low);
- t->set_color("font_color_disabled", "Tabs", control_font_color_disabled);
+ theme->set_color("font_color_fg", "Tabs", control_font_color_hover);
+ theme->set_color("font_color_bg", "Tabs", control_font_color_low);
+ theme->set_color("font_color_disabled", "Tabs", control_font_color_disabled);
- t->set_constant("top_margin", "Tabs", 24 * scale);
- t->set_constant("label_valign_fg", "Tabs", 0 * scale);
- t->set_constant("label_valign_bg", "Tabs", 2 * scale);
- t->set_constant("hseparation", "Tabs", 4 * scale);
+ theme->set_constant("top_margin", "Tabs", 24 * scale);
+ theme->set_constant("label_valign_fg", "Tabs", 0 * scale);
+ theme->set_constant("label_valign_bg", "Tabs", 2 * scale);
+ theme->set_constant("hseparation", "Tabs", 4 * scale);
// Separators
- t->set_stylebox("separator", "HSeparator", make_stylebox(vseparator_png, 3, 3, 3, 3));
- t->set_stylebox("separator", "VSeparator", make_stylebox(hseparator_png, 3, 3, 3, 3));
+ theme->set_stylebox("separator", "HSeparator", make_stylebox(vseparator_png, 3, 3, 3, 3));
+ theme->set_stylebox("separator", "VSeparator", make_stylebox(hseparator_png, 3, 3, 3, 3));
- t->set_icon("close", "Icons", make_icon(icon_close_png));
- t->set_font("normal", "Fonts", default_font);
- t->set_font("large", "Fonts", large_font);
+ theme->set_icon("close", "Icons", make_icon(icon_close_png));
+ theme->set_font("normal", "Fonts", default_font);
+ theme->set_font("large", "Fonts", large_font);
- t->set_constant("separation", "HSeparator", 4 * scale);
- t->set_constant("separation", "VSeparator", 4 * scale);
+ theme->set_constant("separation", "HSeparator", 4 * scale);
+ theme->set_constant("separation", "VSeparator", 4 * scale);
// Dialogs
- t->set_constant("margin", "Dialogs", 8 * scale);
- t->set_constant("button_margin", "Dialogs", 32 * scale);
+ theme->set_constant("margin", "Dialogs", 8 * scale);
+ theme->set_constant("button_margin", "Dialogs", 32 * scale);
// FileDialog
- t->set_icon("folder", "FileDialog", make_icon(icon_folder_png));
- t->set_color("files_disabled", "FileDialog", Color(0, 0, 0, 0.7));
+ theme->set_icon("folder", "FileDialog", make_icon(icon_folder_png));
+ theme->set_color("files_disabled", "FileDialog", Color(0, 0, 0, 0.7));
// colorPicker
- t->set_constant("margin", "ColorPicker", 4 * scale);
- t->set_constant("sv_width", "ColorPicker", 256 * scale);
- t->set_constant("sv_height", "ColorPicker", 256 * scale);
- t->set_constant("h_width", "ColorPicker", 30 * scale);
- t->set_constant("label_width", "ColorPicker", 10 * scale);
+ theme->set_constant("margin", "ColorPicker", 4 * scale);
+ theme->set_constant("sv_width", "ColorPicker", 256 * scale);
+ theme->set_constant("sv_height", "ColorPicker", 256 * scale);
+ theme->set_constant("h_width", "ColorPicker", 30 * scale);
+ theme->set_constant("label_width", "ColorPicker", 10 * scale);
- t->set_icon("screen_picker", "ColorPicker", make_icon(icon_color_pick_png));
- t->set_icon("add_preset", "ColorPicker", make_icon(icon_add_png));
- t->set_icon("color_hue", "ColorPicker", make_icon(color_picker_hue_png));
- t->set_icon("color_sample", "ColorPicker", make_icon(color_picker_sample_png));
+ theme->set_icon("screen_picker", "ColorPicker", make_icon(icon_color_pick_png));
+ theme->set_icon("add_preset", "ColorPicker", make_icon(icon_add_png));
+ theme->set_icon("color_hue", "ColorPicker", make_icon(color_picker_hue_png));
+ theme->set_icon("color_sample", "ColorPicker", make_icon(color_picker_sample_png));
// TooltipPanel
@@ -778,111 +780,111 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
for (int i = 0; i < 4; i++)
style_tt->set_expand_margin_size((Margin)i, 4 * scale);
- t->set_stylebox("panel", "TooltipPanel", style_tt);
+ theme->set_stylebox("panel", "TooltipPanel", style_tt);
- t->set_font("font", "TooltipLabel", default_font);
+ theme->set_font("font", "TooltipLabel", default_font);
- t->set_color("font_color", "TooltipLabel", Color(0, 0, 0));
- t->set_color("font_color_shadow", "TooltipLabel", Color(0, 0, 0, 0.1));
+ theme->set_color("font_color", "TooltipLabel", Color(0, 0, 0));
+ theme->set_color("font_color_shadow", "TooltipLabel", Color(0, 0, 0, 0.1));
- t->set_constant("shadow_offset_x", "TooltipLabel", 1);
- t->set_constant("shadow_offset_y", "TooltipLabel", 1);
+ theme->set_constant("shadow_offset_x", "TooltipLabel", 1);
+ theme->set_constant("shadow_offset_y", "TooltipLabel", 1);
// RichTextLabel
- t->set_stylebox("focus", "RichTextLabel", focus);
+ theme->set_stylebox("focus", "RichTextLabel", focus);
- t->set_font("normal_font", "RichTextLabel", default_font);
- t->set_font("bold_font", "RichTextLabel", default_font);
- t->set_font("italics_font", "RichTextLabel", default_font);
- t->set_font("bold_italics_font", "RichTextLabel", default_font);
- t->set_font("mono_font", "RichTextLabel", default_font);
+ theme->set_font("normal_font", "RichTextLabel", default_font);
+ theme->set_font("bold_font", "RichTextLabel", default_font);
+ theme->set_font("italics_font", "RichTextLabel", default_font);
+ theme->set_font("bold_italics_font", "RichTextLabel", default_font);
+ theme->set_font("mono_font", "RichTextLabel", default_font);
- t->set_color("default_color", "RichTextLabel", control_font_color);
- t->set_color("font_color_selected", "RichTextLabel", font_color_selection);
- t->set_color("selection_color", "RichTextLabel", Color(0.1, 0.1, 1, 0.8));
+ theme->set_color("default_color", "RichTextLabel", control_font_color);
+ theme->set_color("font_color_selected", "RichTextLabel", font_color_selection);
+ theme->set_color("selection_color", "RichTextLabel", Color(0.1, 0.1, 1, 0.8));
- t->set_constant("line_separation", "RichTextLabel", 1 * scale);
- t->set_constant("table_hseparation", "RichTextLabel", 3 * scale);
- t->set_constant("table_vseparation", "RichTextLabel", 3 * scale);
+ theme->set_constant("line_separation", "RichTextLabel", 1 * scale);
+ theme->set_constant("table_hseparation", "RichTextLabel", 3 * scale);
+ theme->set_constant("table_vseparation", "RichTextLabel", 3 * scale);
// Containers
- t->set_stylebox("bg", "VSplitContainer", make_stylebox(vsplit_bg_png, 1, 1, 1, 1));
- t->set_stylebox("bg", "HSplitContainer", make_stylebox(hsplit_bg_png, 1, 1, 1, 1));
-
- t->set_icon("grabber", "VSplitContainer", make_icon(vsplitter_png));
- t->set_icon("grabber", "HSplitContainer", make_icon(hsplitter_png));
-
- t->set_constant("separation", "HBoxContainer", 4 * scale);
- t->set_constant("separation", "VBoxContainer", 4 * scale);
- t->set_constant("margin_left", "MarginContainer", 8 * scale);
- t->set_constant("margin_top", "MarginContainer", 0 * scale);
- t->set_constant("margin_right", "MarginContainer", 0 * scale);
- t->set_constant("margin_bottom", "MarginContainer", 0 * scale);
- t->set_constant("hseparation", "GridContainer", 4 * scale);
- t->set_constant("vseparation", "GridContainer", 4 * scale);
- t->set_constant("separation", "HSplitContainer", 12 * scale);
- t->set_constant("separation", "VSplitContainer", 12 * scale);
- t->set_constant("autohide", "HSplitContainer", 1 * scale);
- t->set_constant("autohide", "VSplitContainer", 1 * scale);
+ theme->set_stylebox("bg", "VSplitContainer", make_stylebox(vsplit_bg_png, 1, 1, 1, 1));
+ theme->set_stylebox("bg", "HSplitContainer", make_stylebox(hsplit_bg_png, 1, 1, 1, 1));
+
+ theme->set_icon("grabber", "VSplitContainer", make_icon(vsplitter_png));
+ theme->set_icon("grabber", "HSplitContainer", make_icon(hsplitter_png));
+
+ theme->set_constant("separation", "HBoxContainer", 4 * scale);
+ theme->set_constant("separation", "VBoxContainer", 4 * scale);
+ theme->set_constant("margin_left", "MarginContainer", 8 * scale);
+ theme->set_constant("margin_top", "MarginContainer", 0 * scale);
+ theme->set_constant("margin_right", "MarginContainer", 0 * scale);
+ theme->set_constant("margin_bottom", "MarginContainer", 0 * scale);
+ theme->set_constant("hseparation", "GridContainer", 4 * scale);
+ theme->set_constant("vseparation", "GridContainer", 4 * scale);
+ theme->set_constant("separation", "HSplitContainer", 12 * scale);
+ theme->set_constant("separation", "VSplitContainer", 12 * scale);
+ theme->set_constant("autohide", "HSplitContainer", 1 * scale);
+ theme->set_constant("autohide", "VSplitContainer", 1 * scale);
// HButtonArray
- t->set_stylebox("normal", "HButtonArray", sb_button_normal);
- t->set_stylebox("selected", "HButtonArray", sb_button_pressed);
- t->set_stylebox("hover", "HButtonArray", sb_button_hover);
+ theme->set_stylebox("normal", "HButtonArray", sb_button_normal);
+ theme->set_stylebox("selected", "HButtonArray", sb_button_pressed);
+ theme->set_stylebox("hover", "HButtonArray", sb_button_hover);
- t->set_font("font", "HButtonArray", default_font);
- t->set_font("font_selected", "HButtonArray", default_font);
+ theme->set_font("font", "HButtonArray", default_font);
+ theme->set_font("font_selected", "HButtonArray", default_font);
- t->set_color("font_color", "HButtonArray", control_font_color_low);
- t->set_color("font_color_selected", "HButtonArray", control_font_color_hover);
+ theme->set_color("font_color", "HButtonArray", control_font_color_low);
+ theme->set_color("font_color_selected", "HButtonArray", control_font_color_hover);
- t->set_constant("icon_separator", "HButtonArray", 2 * scale);
- t->set_constant("button_separator", "HButtonArray", 4 * scale);
+ theme->set_constant("icon_separator", "HButtonArray", 2 * scale);
+ theme->set_constant("button_separator", "HButtonArray", 4 * scale);
- t->set_stylebox("focus", "HButtonArray", focus);
+ theme->set_stylebox("focus", "HButtonArray", focus);
// VButtonArray
- t->set_stylebox("normal", "VButtonArray", sb_button_normal);
- t->set_stylebox("selected", "VButtonArray", sb_button_pressed);
- t->set_stylebox("hover", "VButtonArray", sb_button_hover);
+ theme->set_stylebox("normal", "VButtonArray", sb_button_normal);
+ theme->set_stylebox("selected", "VButtonArray", sb_button_pressed);
+ theme->set_stylebox("hover", "VButtonArray", sb_button_hover);
- t->set_font("font", "VButtonArray", default_font);
- t->set_font("font_selected", "VButtonArray", default_font);
+ theme->set_font("font", "VButtonArray", default_font);
+ theme->set_font("font_selected", "VButtonArray", default_font);
- t->set_color("font_color", "VButtonArray", control_font_color_low);
- t->set_color("font_color_selected", "VButtonArray", control_font_color_hover);
+ theme->set_color("font_color", "VButtonArray", control_font_color_low);
+ theme->set_color("font_color_selected", "VButtonArray", control_font_color_hover);
- t->set_constant("icon_separator", "VButtonArray", 2 * scale);
- t->set_constant("button_separator", "VButtonArray", 4 * scale);
+ theme->set_constant("icon_separator", "VButtonArray", 2 * scale);
+ theme->set_constant("button_separator", "VButtonArray", 4 * scale);
- t->set_stylebox("focus", "VButtonArray", focus);
+ theme->set_stylebox("focus", "VButtonArray", focus);
// ReferenceRect
Ref<StyleBoxTexture> ttnc = make_stylebox(full_panel_bg_png, 8, 8, 8, 8);
ttnc->set_draw_center(false);
- t->set_stylebox("border", "ReferenceRect", make_stylebox(reference_border_png, 4, 4, 4, 4));
- t->set_stylebox("panelnc", "Panel", ttnc);
- t->set_stylebox("panelf", "Panel", tc_sb);
+ theme->set_stylebox("border", "ReferenceRect", make_stylebox(reference_border_png, 4, 4, 4, 4));
+ theme->set_stylebox("panelnc", "Panel", ttnc);
+ theme->set_stylebox("panelf", "Panel", tc_sb);
Ref<StyleBoxTexture> sb_pc = make_stylebox(tab_container_bg_png, 4, 4, 4, 4, 7, 7, 7, 7);
- t->set_stylebox("panel", "PanelContainer", sb_pc);
-
- t->set_icon("minus", "GraphEdit", make_icon(icon_zoom_less_png));
- t->set_icon("reset", "GraphEdit", make_icon(icon_zoom_reset_png));
- t->set_icon("more", "GraphEdit", make_icon(icon_zoom_more_png));
- t->set_icon("snap", "GraphEdit", make_icon(icon_snap_png));
- t->set_stylebox("bg", "GraphEdit", make_stylebox(tree_bg_png, 4, 4, 4, 5));
- t->set_color("grid_minor", "GraphEdit", Color(1, 1, 1, 0.05));
- t->set_color("grid_major", "GraphEdit", Color(1, 1, 1, 0.2));
- t->set_constant("bezier_len_pos", "GraphEdit", 80 * scale);
- t->set_constant("bezier_len_neg", "GraphEdit", 160 * scale);
-
- t->set_icon("logo", "Icons", make_icon(logo_png));
+ theme->set_stylebox("panel", "PanelContainer", sb_pc);
+
+ theme->set_icon("minus", "GraphEdit", make_icon(icon_zoom_less_png));
+ theme->set_icon("reset", "GraphEdit", make_icon(icon_zoom_reset_png));
+ theme->set_icon("more", "GraphEdit", make_icon(icon_zoom_more_png));
+ theme->set_icon("snap", "GraphEdit", make_icon(icon_snap_png));
+ theme->set_stylebox("bg", "GraphEdit", make_stylebox(tree_bg_png, 4, 4, 4, 5));
+ theme->set_color("grid_minor", "GraphEdit", Color(1, 1, 1, 0.05));
+ theme->set_color("grid_major", "GraphEdit", Color(1, 1, 1, 0.2));
+ theme->set_constant("bezier_len_pos", "GraphEdit", 80 * scale);
+ theme->set_constant("bezier_len_neg", "GraphEdit", 160 * scale);
+
+ theme->set_icon("logo", "Icons", make_icon(logo_png));
// Theme
diff --git a/scene/resources/default_theme/default_theme.h b/scene/resources/default_theme/default_theme.h
index 6fd57b6f22..9032b71775 100644
--- a/scene/resources/default_theme/default_theme.h
+++ b/scene/resources/default_theme/default_theme.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/default_theme/scroll_grabber_pressed.png b/scene/resources/default_theme/scroll_grabber_pressed.png
new file mode 100644
index 0000000000..a46d242ddd
--- /dev/null
+++ b/scene/resources/default_theme/scroll_grabber_pressed.png
Binary files differ
diff --git a/scene/resources/default_theme/theme_data.h b/scene/resources/default_theme/theme_data.h
index 70a8ad12cb..bed4bdb760 100644
--- a/scene/resources/default_theme/theme_data.h
+++ b/scene/resources/default_theme/theme_data.h
@@ -334,6 +334,10 @@ static const unsigned char scroll_grabber_hl_png[] = {
0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x3, 0x0, 0x0, 0x0, 0x61, 0xab, 0xac, 0xd5, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x6c, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x97, 0xd0, 0xdf, 0x92, 0xcb, 0xdc, 0x84, 0xbb, 0xd4, 0x92, 0xca, 0xdc, 0x95, 0xd0, 0xdd, 0x83, 0xbb, 0xd3, 0x8b, 0xc8, 0xd7, 0x79, 0xb5, 0xcb, 0x78, 0xb4, 0xca, 0x73, 0xb0, 0xc7, 0x73, 0xb0, 0xc7, 0x7b, 0xc0, 0xcf, 0x79, 0xc5, 0xd1, 0x6b, 0xae, 0xc1, 0x75, 0xc6, 0xcf, 0x70, 0xbc, 0xca, 0x64, 0xa6, 0xbc, 0x71, 0xbc, 0xc9, 0x82, 0xba, 0xd4, 0x6a, 0xa2, 0xc6, 0x62, 0x9a, 0xc2, 0x61, 0x9a, 0xc1, 0x68, 0x9f, 0xc2, 0x5d, 0x92, 0xbb, 0x5c, 0x92, 0xb8, 0x58, 0x8d, 0xb6, 0x59, 0x8e, 0xb3, 0x56, 0x89, 0xb0, 0x5c, 0x91, 0xb2, 0x53, 0x84, 0xa9, 0x58, 0x8f, 0xae, 0x54, 0x83, 0xa4, 0x57, 0x8e, 0xad, 0x64, 0xa5, 0xba, 0xff, 0xff, 0xff, 0xbb, 0x65, 0x65, 0x27, 0x0, 0x0, 0x0, 0x13, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x25, 0xad, 0xf1, 0xad, 0x27, 0xef, 0xad, 0xf1, 0xf3, 0xf1, 0xf3, 0xad, 0x28, 0xef, 0x27, 0xad, 0xf2, 0xad, 0xcd, 0x8a, 0x27, 0xfe, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x23, 0x2a, 0x62, 0x6c, 0x3a, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x50, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0xc0, 0x7, 0x18, 0x99, 0x98, 0x85, 0x59, 0x18, 0x21, 0x6c, 0x56, 0x36, 0x11, 0x51, 0x31, 0x11, 0x36, 0x56, 0x30, 0x87, 0x5d, 0x5c, 0x2, 0x8, 0xc4, 0xd9, 0xc1, 0x1c, 0xe, 0x49, 0x29, 0x20, 0x90, 0xe4, 0x4, 0x73, 0xb8, 0xa4, 0x65, 0x80, 0x40, 0x9a, 0x1b, 0xcc, 0xe1, 0x91, 0x95, 0x3, 0x2, 0x59, 0x1e, 0x30, 0x87, 0x97, 0x4f, 0x5e, 0x41, 0x41, 0x91, 0x8f, 0x17, 0x62, 0x1c, 0xbf, 0x80, 0xa0, 0x92, 0x10, 0x3f, 0x5e, 0xdb, 0x1, 0x41, 0x87, 0x4, 0x7d, 0x15, 0xc4, 0xfd, 0x6a, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x0, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x57, 0x81, 0xe, 0x17, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
+static const unsigned char scroll_grabber_pressed_png[] = {
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0xc, 0x8, 0x6, 0x0, 0x0, 0x0, 0x56, 0x75, 0x5c, 0xe7, 0x0, 0x0, 0x0, 0x4, 0x73, 0x42, 0x49, 0x54, 0x8, 0x8, 0x8, 0x8, 0x7c, 0x8, 0x64, 0x88, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xd, 0xd7, 0x0, 0x0, 0xd, 0xd7, 0x1, 0x42, 0x28, 0x9b, 0x78, 0x0, 0x0, 0x0, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x0, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 0xee, 0x3c, 0x1a, 0x0, 0x0, 0x0, 0x66, 0x49, 0x44, 0x41, 0x54, 0x28, 0x91, 0xcd, 0x91, 0xb1, 0xa, 0xc0, 0x20, 0x10, 0x43, 0x63, 0x71, 0xbf, 0x5f, 0x12, 0x9c, 0xfd, 0x1a, 0x3f, 0xcd, 0xa9, 0x83, 0xe0, 0x2f, 0x65, 0x2f, 0x9c, 0x8b, 0x83, 0x47, 0xed, 0x60, 0xbb, 0x34, 0xdb, 0x3d, 0x12, 0x48, 0x38, 0xa7, 0xaa, 0xd8, 0xd1, 0xb1, 0xe5, 0x7e, 0x13, 0xf0, 0xf3, 0xd1, 0x5a, 0xf3, 0x24, 0x23, 0x80, 0x34, 0x50, 0x11, 0x91, 0x1a, 0x42, 0xb8, 0x96, 0x1, 0x92, 0x51, 0x55, 0xf3, 0x84, 0x32, 0x49, 0x0, 0x38, 0x9f, 0x2a, 0x25, 0xdc, 0x65, 0xd8, 0xe7, 0xd1, 0x65, 0xe1, 0x31, 0xcc, 0x6c, 0x10, 0x91, 0x3a, 0x3a, 0x9b, 0xd1, 0xb3, 0xc7, 0xfd, 0xef, 0x71, 0x1d, 0x42, 0xe6, 0x21, 0x43, 0xf5, 0x2b, 0xd8, 0x6c, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
+};
+
static const unsigned char selection_png[] = {
0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x10, 0x4, 0x3, 0x0, 0x0, 0x0, 0xed, 0xdd, 0xe2, 0x52, 0x0, 0x0, 0x0, 0x4, 0x67, 0x41, 0x4d, 0x41, 0x0, 0x0, 0xb1, 0x8f, 0xb, 0xfc, 0x61, 0x5, 0x0, 0x0, 0x0, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x0, 0x0, 0x7a, 0x26, 0x0, 0x0, 0x80, 0x84, 0x0, 0x0, 0xfa, 0x0, 0x0, 0x0, 0x80, 0xe8, 0x0, 0x0, 0x75, 0x30, 0x0, 0x0, 0xea, 0x60, 0x0, 0x0, 0x3a, 0x98, 0x0, 0x0, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x0, 0x0, 0x0, 0x2d, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd, 0xfb, 0xff, 0xfd, 0xf7, 0xff, 0xfd, 0xf7, 0xff, 0xfd, 0xf7, 0xff, 0xfd, 0xf6, 0xff, 0xf6, 0xf4, 0xff, 0x15, 0x15, 0x17, 0xff, 0x70, 0xc0, 0x21, 0x0, 0x0, 0x0, 0xe, 0x74, 0x52, 0x4e, 0x53, 0x6, 0xf, 0x16, 0x18, 0x2a, 0x3b, 0x40, 0x3c, 0x6, 0x3d, 0x44, 0x3e, 0x31, 0x25, 0x8, 0x3d, 0x16, 0xb4, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0xe, 0x6f, 0xbd, 0x30, 0x4f, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe0, 0x6, 0x16, 0x12, 0x2b, 0x5, 0x39, 0x1a, 0x32, 0x39, 0x0, 0x0, 0x0, 0x37, 0x49, 0x44, 0x41, 0x54, 0x8, 0xd7, 0x63, 0x60, 0x54, 0x36, 0x6, 0x2, 0x23, 0x1, 0x6, 0x91, 0xb0, 0x34, 0x20, 0x48, 0x75, 0x64, 0x50, 0xef, 0x5c, 0x5, 0x4, 0x33, 0x8a, 0x18, 0xcc, 0xf6, 0xdc, 0x5, 0x82, 0xd3, 0xc9, 0xc, 0x66, 0x6b, 0x41, 0x8c, 0x5b, 0x94, 0x33, 0x60, 0x6, 0xc2, 0xad, 0x80, 0x5b, 0xa, 0x73, 0x6, 0x0, 0x45, 0x34, 0x48, 0x41, 0xa3, 0xc5, 0x91, 0x23, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xc9, 0xad, 0xc8, 0x52, 0x0, 0x0, 0x0, 0x25, 0x74, 0x45, 0x58, 0x74, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x0, 0x32, 0x30, 0x31, 0x36, 0x2d, 0x30, 0x36, 0x2d, 0x32, 0x32, 0x54, 0x32, 0x30, 0x3a, 0x33, 0x39, 0x3a, 0x32, 0x36, 0x2b, 0x30, 0x32, 0x3a, 0x30, 0x30, 0xb8, 0xf0, 0x70, 0xee, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp
index 23bf6be68c..82739b58a0 100644
--- a/scene/resources/dynamic_font.cpp
+++ b/scene/resources/dynamic_font.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,10 +43,10 @@ bool DynamicFontData::CacheID::operator<(CacheID right) const {
return false;
}
-Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(CacheID p_id) {
+Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(CacheID p_cache_id) {
- if (size_cache.has(p_id)) {
- return Ref<DynamicFontAtSize>(size_cache[p_id]);
+ if (size_cache.has(p_cache_id)) {
+ return Ref<DynamicFontAtSize>(size_cache[p_cache_id]);
}
Ref<DynamicFontAtSize> dfas;
@@ -55,8 +55,8 @@ Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(CacheID p_id)
dfas->font = Ref<DynamicFontData>(this);
- size_cache[p_id] = dfas.ptr();
- dfas->id = p_id;
+ size_cache[p_cache_id] = dfas.ptr();
+ dfas->id = p_cache_id;
dfas->_load();
return dfas;
@@ -524,7 +524,7 @@ void DynamicFontAtSize::_update_char(CharType p_char) {
if (mh > texsize)
texsize = mh; //special case, adapt to it?
- texsize = nearest_power_of_2(texsize);
+ texsize = next_power_of_2(texsize);
texsize = MIN(texsize, 4096);
@@ -892,10 +892,10 @@ void DynamicFont::_bind_methods() {
ADD_GROUP("Font", "");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "font_data", PROPERTY_HINT_RESOURCE_TYPE, "DynamicFontData"), "set_font_data", "get_font_data");
- BIND_CONSTANT(SPACING_TOP);
- BIND_CONSTANT(SPACING_BOTTOM);
- BIND_CONSTANT(SPACING_CHAR);
- BIND_CONSTANT(SPACING_SPACE);
+ BIND_ENUM_CONSTANT(SPACING_TOP);
+ BIND_ENUM_CONSTANT(SPACING_BOTTOM);
+ BIND_ENUM_CONSTANT(SPACING_CHAR);
+ BIND_ENUM_CONSTANT(SPACING_SPACE);
}
DynamicFont::DynamicFont() {
diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h
index 7c94def5aa..52c3f30590 100644
--- a/scene/resources/dynamic_font.h
+++ b/scene/resources/dynamic_font.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -72,7 +72,7 @@ private:
friend class DynamicFont;
- Ref<DynamicFontAtSize> _get_dynamic_font_at_size(CacheID p_cache);
+ Ref<DynamicFontAtSize> _get_dynamic_font_at_size(CacheID p_cache_id);
protected:
static void _bind_methods();
@@ -236,6 +236,8 @@ public:
~DynamicFont();
};
+VARIANT_ENUM_CAST(DynamicFont::SpacingType);
+
/////////////
class ResourceFormatLoaderDynamicFont : public ResourceFormatLoader {
diff --git a/scene/resources/dynamic_font_stb.cpp b/scene/resources/dynamic_font_stb.cpp
index 8efad94b9a..91263fb125 100644
--- a/scene/resources/dynamic_font_stb.cpp
+++ b/scene/resources/dynamic_font_stb.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -289,7 +289,7 @@ void DynamicFontAtSize::_update_char(CharType p_char) {
if (mh > texsize)
texsize = mh; //special case, adapt to it?
- texsize = nearest_power_of_2(texsize);
+ texsize = next_power_of_2(texsize);
texsize = MIN(texsize, 4096);
diff --git a/scene/resources/dynamic_font_stb.h b/scene/resources/dynamic_font_stb.h
index a2c081a925..24d764e716 100644
--- a/scene/resources/dynamic_font_stb.h
+++ b/scene/resources/dynamic_font_stb.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index c121dae1f1..14225d945d 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -994,10 +994,10 @@ void Environment::_bind_methods() {
ADD_GROUP("SSAO", "ssao_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssao_enabled"), "set_ssao_enabled", "is_ssao_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_radius", PROPERTY_HINT_RANGE, "0.1,16,0.1"), "set_ssao_radius", "get_ssao_radius");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_intensity", PROPERTY_HINT_RANGE, "0.0,9,0.1"), "set_ssao_intensity", "get_ssao_intensity");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_radius2", PROPERTY_HINT_RANGE, "0.0,16,0.1"), "set_ssao_radius2", "get_ssao_radius2");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_intensity2", PROPERTY_HINT_RANGE, "0.0,9,0.1"), "set_ssao_intensity2", "get_ssao_intensity2");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_radius", PROPERTY_HINT_RANGE, "0.1,128,0.1"), "set_ssao_radius", "get_ssao_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_intensity", PROPERTY_HINT_RANGE, "0.0,128,0.1"), "set_ssao_intensity", "get_ssao_intensity");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_radius2", PROPERTY_HINT_RANGE, "0.0,128,0.1"), "set_ssao_radius2", "get_ssao_radius2");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_intensity2", PROPERTY_HINT_RANGE, "0.0,128,0.1"), "set_ssao_intensity2", "get_ssao_intensity2");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_bias", PROPERTY_HINT_RANGE, "0.001,8,0.001"), "set_ssao_bias", "get_ssao_bias");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_light_affect", PROPERTY_HINT_RANGE, "0.00,1,0.01"), "set_ssao_direct_light_affect", "get_ssao_direct_light_affect");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "ssao_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_ssao_color", "get_ssao_color");
@@ -1114,27 +1114,32 @@ void Environment::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "adjustment_saturation", PROPERTY_HINT_RANGE, "0.01,8,0.01"), "set_adjustment_saturation", "get_adjustment_saturation");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "adjustment_color_correction", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_adjustment_color_correction", "get_adjustment_color_correction");
- BIND_CONSTANT(BG_KEEP);
- BIND_CONSTANT(BG_CLEAR_COLOR);
- BIND_CONSTANT(BG_COLOR);
- BIND_CONSTANT(BG_SKY);
- BIND_CONSTANT(BG_CANVAS);
- BIND_CONSTANT(BG_MAX);
- BIND_CONSTANT(GLOW_BLEND_MODE_ADDITIVE);
- BIND_CONSTANT(GLOW_BLEND_MODE_SCREEN);
- BIND_CONSTANT(GLOW_BLEND_MODE_SOFTLIGHT);
- BIND_CONSTANT(GLOW_BLEND_MODE_REPLACE);
- BIND_CONSTANT(TONE_MAPPER_LINEAR);
- BIND_CONSTANT(TONE_MAPPER_REINHARDT);
- BIND_CONSTANT(TONE_MAPPER_FILMIC);
- BIND_CONSTANT(TONE_MAPPER_ACES);
- BIND_CONSTANT(DOF_BLUR_QUALITY_LOW);
- BIND_CONSTANT(DOF_BLUR_QUALITY_MEDIUM);
- BIND_CONSTANT(DOF_BLUR_QUALITY_HIGH);
+ BIND_ENUM_CONSTANT(BG_KEEP);
+ BIND_ENUM_CONSTANT(BG_CLEAR_COLOR);
+ BIND_ENUM_CONSTANT(BG_COLOR);
+ BIND_ENUM_CONSTANT(BG_SKY);
+ BIND_ENUM_CONSTANT(BG_CANVAS);
+ BIND_ENUM_CONSTANT(BG_MAX);
+
+ BIND_ENUM_CONSTANT(GLOW_BLEND_MODE_ADDITIVE);
+ BIND_ENUM_CONSTANT(GLOW_BLEND_MODE_SCREEN);
+ BIND_ENUM_CONSTANT(GLOW_BLEND_MODE_SOFTLIGHT);
+ BIND_ENUM_CONSTANT(GLOW_BLEND_MODE_REPLACE);
+
+ BIND_ENUM_CONSTANT(TONE_MAPPER_LINEAR);
+ BIND_ENUM_CONSTANT(TONE_MAPPER_REINHARDT);
+ BIND_ENUM_CONSTANT(TONE_MAPPER_FILMIC);
+ BIND_ENUM_CONSTANT(TONE_MAPPER_ACES);
+
+ BIND_ENUM_CONSTANT(DOF_BLUR_QUALITY_LOW);
+ BIND_ENUM_CONSTANT(DOF_BLUR_QUALITY_MEDIUM);
+ BIND_ENUM_CONSTANT(DOF_BLUR_QUALITY_HIGH);
}
Environment::Environment() {
+ environment = VS::get_singleton()->environment_create();
+
bg_mode = BG_CLEAR_COLOR;
bg_sky_scale = 1.0;
bg_energy = 1.0;
@@ -1160,8 +1165,6 @@ Environment::Environment() {
set_adjustment_enable(adjustment_enabled); //update
- environment = VS::get_singleton()->environment_create();
-
ssr_enabled = false;
ssr_max_steps = 64;
ssr_fade_in = 0.15;
diff --git a/scene/resources/environment.h b/scene/resources/environment.h
index a7c0e2a03d..6337981b95 100644
--- a/scene/resources/environment.h
+++ b/scene/resources/environment.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -224,10 +224,10 @@ public:
void set_ssr_max_steps(int p_steps);
int get_ssr_max_steps() const;
- void set_ssr_fade_in(float p_transition);
+ void set_ssr_fade_in(float p_fade_in);
float get_ssr_fade_in() const;
- void set_ssr_fade_out(float p_transition);
+ void set_ssr_fade_out(float p_fade_out);
float get_ssr_fade_out() const;
void set_ssr_depth_tolerance(float p_depth_tolerance);
diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp
index d1431176d6..d9ccd31f88 100644
--- a/scene/resources/font.cpp
+++ b/scene/resources/font.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -179,14 +179,14 @@ Vector<Variant> BitmapFont::_get_textures() const {
return rtextures;
}
-Error BitmapFont::create_from_fnt(const String &p_string) {
+Error BitmapFont::create_from_fnt(const String &p_file) {
//fnt format used by angelcode bmfont
//http://www.angelcode.com/products/bmfont/
- FileAccess *f = FileAccess::open(p_string, FileAccess::READ);
+ FileAccess *f = FileAccess::open(p_file, FileAccess::READ);
if (!f) {
- ERR_EXPLAIN("Can't open font: " + p_string);
+ ERR_EXPLAIN("Can't open font: " + p_file);
ERR_FAIL_V(ERR_FILE_NOT_FOUND);
}
@@ -255,7 +255,7 @@ Error BitmapFont::create_from_fnt(const String &p_string) {
if (keys.has("file")) {
String file = keys["file"];
- file = p_string.get_base_dir() + "/" + file;
+ file = p_file.get_base_dir() + "/" + file;
Ref<Texture> tex = ResourceLoader::load(file);
if (tex.is_null()) {
ERR_PRINT("Can't load font texture!");
diff --git a/scene/resources/font.h b/scene/resources/font.h
index a04ffbdd4b..3bb7aeac85 100644
--- a/scene/resources/font.h
+++ b/scene/resources/font.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/gibberish_stream.cpp b/scene/resources/gibberish_stream.cpp
deleted file mode 100644
index e2994f1419..0000000000
--- a/scene/resources/gibberish_stream.cpp
+++ /dev/null
@@ -1,337 +0,0 @@
-/*************************************************************************/
-/* gibberish_stream.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 "gibberish_stream.h"
-#include "servers/audio_server.h"
-
-//TODO: This class needs to be adapted to the new AudioStream API,
-// or dropped if nobody cares about fixing it :) (GH-3307)
-
-#if 0
-
-int AudioStreamGibberish::get_channel_count() const {
-
- return 1;
-}
-
-
-static float _get_vol_at_pos(int p_pos, int p_len, int p_x_fade) {
-
- if (p_pos < p_x_fade)
- return float(p_pos)/p_x_fade;
- else if (p_pos>(p_len-p_x_fade))
- return float(p_len-p_pos)/p_x_fade;
- else
- return 1.0;
-
-}
- int AudioStreamGibberish::randomize() {
-
- if (rand_idx==_rand_pool.size()) {
-
- for(int i=0;i<_rand_pool.size();i++) {
-
- SWAP(_rand_pool[i],_rand_pool[Math::rand()%_rand_pool.size()]);
- }
- rand_idx=0;
- }
-
- return _rand_pool[rand_idx++];
-}
-
-bool AudioStreamGibberish::mix(int32_t *p_buffer, int p_frames) {
-
- if (!active)
- return false;
-
- zeromem(p_buffer,p_frames*sizeof(int32_t));
-
- if (!paused && active_voices==0) {
-
- active_voices=1;
- playback[0].idx=randomize();
- playback[0].fp_pos=0;
- playback[0].scale=Math::random(1,1+pitch_random_scale);
- }
-
- for(int i=0;i<active_voices;i++) {
-
- RID s = _samples[playback[i].idx]->get_rid();
-
- uint64_t fp_pos=playback[i].fp_pos;
- const void *data = AudioServer::get_singleton()->sample_get_data_ptr(s);
- bool is16 = AudioServer::get_singleton()->sample_get_format(s)==AudioServer::SAMPLE_FORMAT_PCM16;
- int skip = AudioServer::get_singleton()->sample_is_stereo(s) ? 1: 0;
- uint64_t max = AudioServer::get_singleton()->sample_get_length(s) * uint64_t(FP_LEN);
- int mrate = AudioServer::get_singleton()->sample_get_mix_rate(s) * pitch_scale * playback[i].scale;
- uint64_t increment = uint64_t(mrate) * uint64_t(FP_LEN) / get_mix_rate();
-
-
- float vol_begin = _get_vol_at_pos(fp_pos>>FP_BITS,max>>FP_BITS,xfade_time*mrate);
- float vol_end = _get_vol_at_pos((fp_pos+p_frames*increment)>>FP_BITS,max>>FP_BITS,xfade_time*mrate);
-
- int32_t vol = CLAMP(int32_t(vol_begin * 65535),0,65535);
- int32_t vol_to = CLAMP(int32_t(vol_end * 65535),0,65535);
- int32_t vol_inc = (vol_to-vol)/p_frames;
-
- bool done=false;
-
- if (is16) {
-
- const int16_t *smp = (int16_t*)data;
- for(int i=0;i<p_frames;i++) {
-
- if (fp_pos >= max) {
- done=true;
- break;
- }
-
- int idx = (fp_pos>>FP_BITS)<<skip;
- p_buffer[i]+=int32_t(smp[idx])*vol;
- vol+=vol_inc;
-
- fp_pos+=increment;
- }
- } else {
-
- const int8_t *smp = (int8_t*)data;
- for(int i=0;i<p_frames;i++) {
-
- if (fp_pos >= max) {
- done=true;
- break;
- }
-
- int idx = (fp_pos>>FP_BITS)<<skip;
- p_buffer[i]+=(int32_t(smp[idx])<<8)*vol;
- vol+=vol_inc;
- fp_pos+=increment;
- }
-
- }
-
- playback[i].fp_pos=fp_pos;
- if (!paused && active_voices==1 && (vol_end < vol_begin || done)) {
- //xfade to something else i gues
- active_voices=2;
- playback[1].idx=randomize();
- playback[1].fp_pos=0;
- playback[1].scale=Math::random(1,1+pitch_random_scale);
- }
-
- if (done) {
-
- if (i==0 && active_voices==2) {
- playback[0]=playback[1];
- i--;
- }
- active_voices--;
-
- }
- }
-
- return true;
-}
-
-
-void AudioStreamGibberish::play() {
- if (active)
- stop();
-
-
- if (!phonemes.is_valid())
- return;
-
-
- List<StringName> slist;
- phonemes->get_sample_list(&slist);
- if (slist.size()==0)
- return;
-
- _samples.resize(slist.size());
- _rand_pool.resize(slist.size());
-
- int i=0;
- for(List<StringName>::Element *E=slist.front();E;E=E->next()) {
-
- _rand_pool[i]=i;
- _samples[i++]=phonemes->get_sample(E->get());
- }
-
- rand_idx=0;
- active_voices=0;
- active=true;
-}
-
-void AudioStreamGibberish::stop(){
-
- active=false;
-
-
-}
-
-bool AudioStreamGibberish::is_playing() const {
-
- return active;
-}
-
-
-void AudioStreamGibberish::set_paused(bool p_paused){
-
- paused=p_paused;
-}
-
-bool AudioStreamGibberish::is_paused(bool p_paused) const{
-
- return paused;
-}
-
-void AudioStreamGibberish::set_loop(bool p_enable){
-
-
-}
-
-bool AudioStreamGibberish::has_loop() const{
-
- return false;
-}
-
-
-float AudioStreamGibberish::get_length() const{
-
- return 0;
-}
-
-
-String AudioStreamGibberish::get_stream_name() const{
-
- return "Gibberish";
-}
-
-
-int AudioStreamGibberish::get_loop_count() const{
-
- return 0;
-}
-
-
-float AudioStreamGibberish::get_pos() const{
-
- return 0;
-}
-
-void AudioStreamGibberish::seek_pos(float p_time){
-
-
-}
-
-
-AudioStream::UpdateMode AudioStreamGibberish::get_update_mode() const{
-
- return AudioStream::UPDATE_NONE;
-}
-
-void AudioStreamGibberish::update(){
-
-
-}
-
-
-void AudioStreamGibberish::set_phonemes(const Ref<SampleLibrary>& p_phonemes) {
-
- phonemes=p_phonemes;
-
-}
-
-Ref<SampleLibrary> AudioStreamGibberish::get_phonemes() const {
-
- return phonemes;
-}
-
-void AudioStreamGibberish::set_xfade_time(float p_xfade) {
-
- xfade_time=p_xfade;
-}
-
-float AudioStreamGibberish::get_xfade_time() const {
-
- return xfade_time;
-}
-
-void AudioStreamGibberish::set_pitch_scale(float p_scale) {
-
- pitch_scale=p_scale;
-}
-
-float AudioStreamGibberish::get_pitch_scale() const {
-
- return pitch_scale;
-}
-
-void AudioStreamGibberish::set_pitch_random_scale(float p_random_scale) {
-
- pitch_random_scale=p_random_scale;
-}
-
-float AudioStreamGibberish::get_pitch_random_scale() const {
-
- return pitch_random_scale;
-}
-
-void AudioStreamGibberish::_bind_methods() {
-
- ClassDB::bind_method(D_METHOD("set_phonemes","phonemes"),&AudioStreamGibberish::set_phonemes);
- ClassDB::bind_method(D_METHOD("get_phonemes"),&AudioStreamGibberish::get_phonemes);
-
- ClassDB::bind_method(D_METHOD("set_pitch_scale","pitch_scale"),&AudioStreamGibberish::set_pitch_scale);
- ClassDB::bind_method(D_METHOD("get_pitch_scale"),&AudioStreamGibberish::get_pitch_scale);
-
- ClassDB::bind_method(D_METHOD("set_pitch_random_scale","pitch_random_scale"),&AudioStreamGibberish::set_pitch_random_scale);
- ClassDB::bind_method(D_METHOD("get_pitch_random_scale"),&AudioStreamGibberish::get_pitch_random_scale);
-
- ClassDB::bind_method(D_METHOD("set_xfade_time","sec"),&AudioStreamGibberish::set_xfade_time);
- ClassDB::bind_method(D_METHOD("get_xfade_time"),&AudioStreamGibberish::get_xfade_time);
-
- ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"phonemes",PROPERTY_HINT_RESOURCE_TYPE,"SampleLibrary"),"set_phonemes","get_phonemes");
- ADD_PROPERTY( PropertyInfo(Variant::REAL,"pitch_scale",PROPERTY_HINT_RANGE,"0.01,64,0.01"),"set_pitch_scale","get_pitch_scale");
- ADD_PROPERTY( PropertyInfo(Variant::REAL,"pitch_random_scale",PROPERTY_HINT_RANGE,"0,64,0.01"),"set_pitch_random_scale","get_pitch_random_scale");
- ADD_PROPERTY( PropertyInfo(Variant::REAL,"xfade_sec",PROPERTY_HINT_RANGE,"0.001,0.5,0.001"),"set_xfade_time","get_xfade_time");
-
-}
-
-AudioStreamGibberish::AudioStreamGibberish() {
-
- xfade_time=0.1;
- pitch_scale=1;
- pitch_random_scale=0;
- active=false;
- paused=false;
- active_voices=0;
-}
-#endif
diff --git a/scene/resources/gibberish_stream.h b/scene/resources/gibberish_stream.h
deleted file mode 100644
index ebe61382eb..0000000000
--- a/scene/resources/gibberish_stream.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*************************************************************************/
-/* gibberish_stream.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* http://www.godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2017 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 GIBBERISH_STREAM_H
-#define GIBBERISH_STREAM_H
-
-//TODO: This class needs to be adapted to the new AudioStream API,
-// or dropped if nobody cares about fixing it :) (GH-3307)
-
-#if 0
-#include "scene/resources/audio_stream.h"
-#include "scene/resources/sample_library.h"
-class AudioStreamGibberish : public AudioStream {
-
- GDCLASS( AudioStreamGibberish, AudioStream );
-
- enum {
-
- FP_BITS = 12,
- FP_LEN = (1<<12),
- };
- bool active;
- bool paused;
-
- float xfade_time;
- float pitch_scale;
- float pitch_random_scale;
- Vector<Ref<Sample> > _samples;
- Vector<int> _rand_pool;
- int rand_idx;
- _FORCE_INLINE_ int randomize();
-
- struct Playback {
-
- int idx;
- uint64_t fp_pos;
- float scale;
- };
-
- Playback playback[2];
- int active_voices;
-
- Ref<SampleLibrary> phonemes;
-protected:
-
- virtual int get_channel_count() const;
- virtual bool mix(int32_t *p_buffer, int p_frames);
-
- static void _bind_methods();
-
-public:
-
- void set_phonemes(const Ref<SampleLibrary>& p_phonemes);
- Ref<SampleLibrary> get_phonemes() const;
-
- virtual void play();
- virtual void stop();
- virtual bool is_playing() const;
-
- virtual void set_paused(bool p_paused);
- virtual bool is_paused(bool p_paused) const;
-
- virtual void set_loop(bool p_enable);
- virtual bool has_loop() const;
-
- virtual float get_length() const;
-
- virtual String get_stream_name() const;
-
- virtual int get_loop_count() const;
-
- virtual float get_pos() const;
- virtual void seek_pos(float p_time);
-
- virtual UpdateMode get_update_mode() const;
- virtual void update();
-
- void set_xfade_time(float p_xfade);
- float get_xfade_time() const;
-
- void set_pitch_scale(float p_scale);
- float get_pitch_scale() const;
-
- void set_pitch_random_scale(float p_random_scale);
- float get_pitch_random_scale() const;
-
- AudioStreamGibberish();
-};
-
-#endif
-
-#endif // GIBBERISH_STREAM_H
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp
index bc23a41ede..77563121df 100644
--- a/scene/resources/material.cpp
+++ b/scene/resources/material.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "material.h"
+
#include "scene/scene_string_names.h"
void Material::set_next_pass(const Ref<Material> &p_pass) {
@@ -1384,7 +1385,7 @@ static Plane _get_texture_mask(SpatialMaterial::TextureChannel p_channel) {
}
void SpatialMaterial::set_metallic_texture_channel(TextureChannel p_channel) {
-
+ ERR_FAIL_INDEX(p_channel, 5);
metallic_texture_channel = p_channel;
VS::get_singleton()->material_set_param(_get_material(), shader_names->metallic_texture_channel, _get_texture_mask(p_channel));
}
@@ -1395,6 +1396,7 @@ SpatialMaterial::TextureChannel SpatialMaterial::get_metallic_texture_channel()
void SpatialMaterial::set_roughness_texture_channel(TextureChannel p_channel) {
+ ERR_FAIL_INDEX(p_channel, 5);
roughness_texture_channel = p_channel;
VS::get_singleton()->material_set_param(_get_material(), shader_names->roughness_texture_channel, _get_texture_mask(p_channel));
}
@@ -1717,88 +1719,88 @@ void SpatialMaterial::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "uv2_triplanar"), "set_flag", "get_flag", FLAG_UV2_USE_TRIPLANAR);
ADD_PROPERTY(PropertyInfo(Variant::REAL, "uv2_triplanar_sharpness", PROPERTY_HINT_EXP_EASING), "set_uv2_triplanar_blend_sharpness", "get_uv2_triplanar_blend_sharpness");
- BIND_CONSTANT(TEXTURE_ALBEDO);
- BIND_CONSTANT(TEXTURE_METALLIC);
- BIND_CONSTANT(TEXTURE_ROUGHNESS);
- BIND_CONSTANT(TEXTURE_EMISSION);
- BIND_CONSTANT(TEXTURE_NORMAL);
- BIND_CONSTANT(TEXTURE_RIM);
- BIND_CONSTANT(TEXTURE_CLEARCOAT);
- BIND_CONSTANT(TEXTURE_FLOWMAP);
- BIND_CONSTANT(TEXTURE_AMBIENT_OCCLUSION);
- BIND_CONSTANT(TEXTURE_DEPTH);
- BIND_CONSTANT(TEXTURE_SUBSURFACE_SCATTERING);
- BIND_CONSTANT(TEXTURE_REFRACTION);
- BIND_CONSTANT(TEXTURE_DETAIL_MASK);
- BIND_CONSTANT(TEXTURE_DETAIL_ALBEDO);
- BIND_CONSTANT(TEXTURE_DETAIL_NORMAL);
- BIND_CONSTANT(TEXTURE_MAX);
-
- BIND_CONSTANT(DETAIL_UV_1);
- BIND_CONSTANT(DETAIL_UV_2);
-
- BIND_CONSTANT(FEATURE_TRANSPARENT);
- BIND_CONSTANT(FEATURE_EMISSION);
- BIND_CONSTANT(FEATURE_NORMAL_MAPPING);
- BIND_CONSTANT(FEATURE_RIM);
- BIND_CONSTANT(FEATURE_CLEARCOAT);
- BIND_CONSTANT(FEATURE_ANISOTROPY);
- BIND_CONSTANT(FEATURE_AMBIENT_OCCLUSION);
- BIND_CONSTANT(FEATURE_DEPTH_MAPPING);
- BIND_CONSTANT(FEATURE_SUBSURACE_SCATTERING);
- BIND_CONSTANT(FEATURE_REFRACTION);
- BIND_CONSTANT(FEATURE_DETAIL);
- BIND_CONSTANT(FEATURE_MAX);
-
- BIND_CONSTANT(BLEND_MODE_MIX);
- BIND_CONSTANT(BLEND_MODE_ADD);
- BIND_CONSTANT(BLEND_MODE_SUB);
- BIND_CONSTANT(BLEND_MODE_MUL);
-
- BIND_CONSTANT(DEPTH_DRAW_OPAQUE_ONLY);
- BIND_CONSTANT(DEPTH_DRAW_ALWAYS);
- BIND_CONSTANT(DEPTH_DRAW_DISABLED);
- BIND_CONSTANT(DEPTH_DRAW_ALPHA_OPAQUE_PREPASS);
-
- BIND_CONSTANT(CULL_BACK);
- BIND_CONSTANT(CULL_FRONT);
- BIND_CONSTANT(CULL_DISABLED);
-
- BIND_CONSTANT(FLAG_UNSHADED);
- BIND_CONSTANT(FLAG_USE_VERTEX_LIGHTING);
- BIND_CONSTANT(FLAG_ONTOP);
- BIND_CONSTANT(FLAG_ALBEDO_FROM_VERTEX_COLOR);
- BIND_CONSTANT(FLAG_SRGB_VERTEX_COLOR);
- BIND_CONSTANT(FLAG_USE_POINT_SIZE);
- BIND_CONSTANT(FLAG_FIXED_SIZE);
- BIND_CONSTANT(FLAG_UV1_USE_TRIPLANAR);
- BIND_CONSTANT(FLAG_UV2_USE_TRIPLANAR);
- BIND_CONSTANT(FLAG_AO_ON_UV2);
- BIND_CONSTANT(FLAG_USE_ALPHA_SCISSOR);
- BIND_CONSTANT(FLAG_MAX);
-
- BIND_CONSTANT(DIFFUSE_LAMBERT);
- BIND_CONSTANT(DIFFUSE_HALF_LAMBERT);
- BIND_CONSTANT(DIFFUSE_OREN_NAYAR);
- BIND_CONSTANT(DIFFUSE_BURLEY);
- BIND_CONSTANT(DIFFUSE_TOON);
-
- BIND_CONSTANT(SPECULAR_SCHLICK_GGX);
- BIND_CONSTANT(SPECULAR_BLINN);
- BIND_CONSTANT(SPECULAR_PHONG);
- BIND_CONSTANT(SPECULAR_TOON);
- BIND_CONSTANT(SPECULAR_DISABLED);
-
- BIND_CONSTANT(BILLBOARD_DISABLED);
- BIND_CONSTANT(BILLBOARD_ENABLED);
- BIND_CONSTANT(BILLBOARD_FIXED_Y);
- BIND_CONSTANT(BILLBOARD_PARTICLES);
-
- BIND_CONSTANT(TEXTURE_CHANNEL_RED);
- BIND_CONSTANT(TEXTURE_CHANNEL_GREEN);
- BIND_CONSTANT(TEXTURE_CHANNEL_BLUE);
- BIND_CONSTANT(TEXTURE_CHANNEL_ALPHA);
- BIND_CONSTANT(TEXTURE_CHANNEL_GRAYSCALE);
+ BIND_ENUM_CONSTANT(TEXTURE_ALBEDO);
+ BIND_ENUM_CONSTANT(TEXTURE_METALLIC);
+ BIND_ENUM_CONSTANT(TEXTURE_ROUGHNESS);
+ BIND_ENUM_CONSTANT(TEXTURE_EMISSION);
+ BIND_ENUM_CONSTANT(TEXTURE_NORMAL);
+ BIND_ENUM_CONSTANT(TEXTURE_RIM);
+ BIND_ENUM_CONSTANT(TEXTURE_CLEARCOAT);
+ BIND_ENUM_CONSTANT(TEXTURE_FLOWMAP);
+ BIND_ENUM_CONSTANT(TEXTURE_AMBIENT_OCCLUSION);
+ BIND_ENUM_CONSTANT(TEXTURE_DEPTH);
+ BIND_ENUM_CONSTANT(TEXTURE_SUBSURFACE_SCATTERING);
+ BIND_ENUM_CONSTANT(TEXTURE_REFRACTION);
+ BIND_ENUM_CONSTANT(TEXTURE_DETAIL_MASK);
+ BIND_ENUM_CONSTANT(TEXTURE_DETAIL_ALBEDO);
+ BIND_ENUM_CONSTANT(TEXTURE_DETAIL_NORMAL);
+ BIND_ENUM_CONSTANT(TEXTURE_MAX);
+
+ BIND_ENUM_CONSTANT(DETAIL_UV_1);
+ BIND_ENUM_CONSTANT(DETAIL_UV_2);
+
+ BIND_ENUM_CONSTANT(FEATURE_TRANSPARENT);
+ BIND_ENUM_CONSTANT(FEATURE_EMISSION);
+ BIND_ENUM_CONSTANT(FEATURE_NORMAL_MAPPING);
+ BIND_ENUM_CONSTANT(FEATURE_RIM);
+ BIND_ENUM_CONSTANT(FEATURE_CLEARCOAT);
+ BIND_ENUM_CONSTANT(FEATURE_ANISOTROPY);
+ BIND_ENUM_CONSTANT(FEATURE_AMBIENT_OCCLUSION);
+ BIND_ENUM_CONSTANT(FEATURE_DEPTH_MAPPING);
+ BIND_ENUM_CONSTANT(FEATURE_SUBSURACE_SCATTERING);
+ BIND_ENUM_CONSTANT(FEATURE_REFRACTION);
+ BIND_ENUM_CONSTANT(FEATURE_DETAIL);
+ BIND_ENUM_CONSTANT(FEATURE_MAX);
+
+ BIND_ENUM_CONSTANT(BLEND_MODE_MIX);
+ BIND_ENUM_CONSTANT(BLEND_MODE_ADD);
+ BIND_ENUM_CONSTANT(BLEND_MODE_SUB);
+ BIND_ENUM_CONSTANT(BLEND_MODE_MUL);
+
+ BIND_ENUM_CONSTANT(DEPTH_DRAW_OPAQUE_ONLY);
+ BIND_ENUM_CONSTANT(DEPTH_DRAW_ALWAYS);
+ BIND_ENUM_CONSTANT(DEPTH_DRAW_DISABLED);
+ BIND_ENUM_CONSTANT(DEPTH_DRAW_ALPHA_OPAQUE_PREPASS);
+
+ BIND_ENUM_CONSTANT(CULL_BACK);
+ BIND_ENUM_CONSTANT(CULL_FRONT);
+ BIND_ENUM_CONSTANT(CULL_DISABLED);
+
+ BIND_ENUM_CONSTANT(FLAG_UNSHADED);
+ BIND_ENUM_CONSTANT(FLAG_USE_VERTEX_LIGHTING);
+ BIND_ENUM_CONSTANT(FLAG_ONTOP);
+ BIND_ENUM_CONSTANT(FLAG_ALBEDO_FROM_VERTEX_COLOR);
+ BIND_ENUM_CONSTANT(FLAG_SRGB_VERTEX_COLOR);
+ BIND_ENUM_CONSTANT(FLAG_USE_POINT_SIZE);
+ BIND_ENUM_CONSTANT(FLAG_FIXED_SIZE);
+ BIND_ENUM_CONSTANT(FLAG_UV1_USE_TRIPLANAR);
+ BIND_ENUM_CONSTANT(FLAG_UV2_USE_TRIPLANAR);
+ BIND_ENUM_CONSTANT(FLAG_AO_ON_UV2);
+ BIND_ENUM_CONSTANT(FLAG_USE_ALPHA_SCISSOR);
+ BIND_ENUM_CONSTANT(FLAG_MAX);
+
+ BIND_ENUM_CONSTANT(DIFFUSE_LAMBERT);
+ BIND_ENUM_CONSTANT(DIFFUSE_HALF_LAMBERT);
+ BIND_ENUM_CONSTANT(DIFFUSE_OREN_NAYAR);
+ BIND_ENUM_CONSTANT(DIFFUSE_BURLEY);
+ BIND_ENUM_CONSTANT(DIFFUSE_TOON);
+
+ BIND_ENUM_CONSTANT(SPECULAR_SCHLICK_GGX);
+ BIND_ENUM_CONSTANT(SPECULAR_BLINN);
+ BIND_ENUM_CONSTANT(SPECULAR_PHONG);
+ BIND_ENUM_CONSTANT(SPECULAR_TOON);
+ BIND_ENUM_CONSTANT(SPECULAR_DISABLED);
+
+ BIND_ENUM_CONSTANT(BILLBOARD_DISABLED);
+ BIND_ENUM_CONSTANT(BILLBOARD_ENABLED);
+ BIND_ENUM_CONSTANT(BILLBOARD_FIXED_Y);
+ BIND_ENUM_CONSTANT(BILLBOARD_PARTICLES);
+
+ BIND_ENUM_CONSTANT(TEXTURE_CHANNEL_RED);
+ BIND_ENUM_CONSTANT(TEXTURE_CHANNEL_GREEN);
+ BIND_ENUM_CONSTANT(TEXTURE_CHANNEL_BLUE);
+ BIND_ENUM_CONSTANT(TEXTURE_CHANNEL_ALPHA);
+ BIND_ENUM_CONSTANT(TEXTURE_CHANNEL_GRAYSCALE);
}
SpatialMaterial::SpatialMaterial()
diff --git a/scene/resources/material.h b/scene/resources/material.h
index 25628e272a..b82e8d8cbd 100644
--- a/scene/resources/material.h
+++ b/scene/resources/material.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -431,7 +431,7 @@ public:
void set_depth_deep_parallax_max_layers(int p_layer);
int get_depth_deep_parallax_max_layers() const;
- void set_subsurface_scattering_strength(float p_strength);
+ void set_subsurface_scattering_strength(float p_subsurface_scattering_strength);
float get_subsurface_scattering_strength() const;
void set_refraction(float p_refraction);
diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp
index af30e75aed..aa7827a61a 100644
--- a/scene/resources/mesh.cpp
+++ b/scene/resources/mesh.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -415,13 +415,13 @@ Ref<Mesh> Mesh::create_outline(float p_margin) const {
void Mesh::_bind_methods() {
- BIND_CONSTANT(PRIMITIVE_POINTS);
- BIND_CONSTANT(PRIMITIVE_LINES);
- BIND_CONSTANT(PRIMITIVE_LINE_STRIP);
- BIND_CONSTANT(PRIMITIVE_LINE_LOOP);
- BIND_CONSTANT(PRIMITIVE_TRIANGLES);
- BIND_CONSTANT(PRIMITIVE_TRIANGLE_STRIP);
- BIND_CONSTANT(PRIMITIVE_TRIANGLE_FAN);
+ BIND_ENUM_CONSTANT(PRIMITIVE_POINTS);
+ BIND_ENUM_CONSTANT(PRIMITIVE_LINES);
+ BIND_ENUM_CONSTANT(PRIMITIVE_LINE_STRIP);
+ BIND_ENUM_CONSTANT(PRIMITIVE_LINE_LOOP);
+ BIND_ENUM_CONSTANT(PRIMITIVE_TRIANGLES);
+ BIND_ENUM_CONSTANT(PRIMITIVE_TRIANGLE_STRIP);
+ BIND_ENUM_CONSTANT(PRIMITIVE_TRIANGLE_FAN);
}
Mesh::Mesh() {
@@ -1026,25 +1026,26 @@ void ArrayMesh::_bind_methods() {
BIND_CONSTANT(NO_INDEX_ARRAY);
BIND_CONSTANT(ARRAY_WEIGHTS_SIZE);
- BIND_CONSTANT(ARRAY_VERTEX);
- BIND_CONSTANT(ARRAY_NORMAL);
- BIND_CONSTANT(ARRAY_TANGENT);
- BIND_CONSTANT(ARRAY_COLOR);
- BIND_CONSTANT(ARRAY_TEX_UV);
- BIND_CONSTANT(ARRAY_TEX_UV2);
- BIND_CONSTANT(ARRAY_BONES);
- BIND_CONSTANT(ARRAY_WEIGHTS);
- BIND_CONSTANT(ARRAY_INDEX);
-
- BIND_CONSTANT(ARRAY_FORMAT_VERTEX);
- BIND_CONSTANT(ARRAY_FORMAT_NORMAL);
- BIND_CONSTANT(ARRAY_FORMAT_TANGENT);
- BIND_CONSTANT(ARRAY_FORMAT_COLOR);
- BIND_CONSTANT(ARRAY_FORMAT_TEX_UV);
- BIND_CONSTANT(ARRAY_FORMAT_TEX_UV2);
- BIND_CONSTANT(ARRAY_FORMAT_BONES);
- BIND_CONSTANT(ARRAY_FORMAT_WEIGHTS);
- BIND_CONSTANT(ARRAY_FORMAT_INDEX);
+ BIND_ENUM_CONSTANT(ARRAY_VERTEX);
+ BIND_ENUM_CONSTANT(ARRAY_NORMAL);
+ BIND_ENUM_CONSTANT(ARRAY_TANGENT);
+ BIND_ENUM_CONSTANT(ARRAY_COLOR);
+ BIND_ENUM_CONSTANT(ARRAY_TEX_UV);
+ BIND_ENUM_CONSTANT(ARRAY_TEX_UV2);
+ BIND_ENUM_CONSTANT(ARRAY_BONES);
+ BIND_ENUM_CONSTANT(ARRAY_WEIGHTS);
+ BIND_ENUM_CONSTANT(ARRAY_INDEX);
+ BIND_ENUM_CONSTANT(ARRAY_MAX);
+
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_VERTEX);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_NORMAL);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_TANGENT);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_COLOR);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_TEX_UV);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_TEX_UV2);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_BONES);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_WEIGHTS);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_INDEX);
}
ArrayMesh::ArrayMesh() {
diff --git a/scene/resources/mesh.h b/scene/resources/mesh.h
index e40ef99237..53c6eb2d89 100644
--- a/scene/resources/mesh.h
+++ b/scene/resources/mesh.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -187,7 +187,7 @@ public:
int get_surface_count() const;
void surface_remove(int p_idx);
- void surface_set_custom_aabb(int p_surface, const Rect3 &p_aabb); //only recognized by driver
+ void surface_set_custom_aabb(int p_idx, const Rect3 &p_aabb); //only recognized by driver
int surface_get_array_len(int p_idx) const;
int surface_get_array_index_len(int p_idx) const;
@@ -218,6 +218,7 @@ public:
};
VARIANT_ENUM_CAST(Mesh::ArrayType);
+VARIANT_ENUM_CAST(Mesh::ArrayFormat);
VARIANT_ENUM_CAST(Mesh::PrimitiveType);
VARIANT_ENUM_CAST(Mesh::BlendShapeMode);
diff --git a/scene/resources/mesh_data_tool.cpp b/scene/resources/mesh_data_tool.cpp
index f1092a90cb..116ddc4ac6 100644
--- a/scene/resources/mesh_data_tool.cpp
+++ b/scene/resources/mesh_data_tool.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/mesh_data_tool.h b/scene/resources/mesh_data_tool.h
index ad771edbd1..119b49161b 100644
--- a/scene/resources/mesh_data_tool.h
+++ b/scene/resources/mesh_data_tool.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/mesh_library.cpp b/scene/resources/mesh_library.cpp
index 7d51a2617e..4e1ffd2ab3 100644
--- a/scene/resources/mesh_library.cpp
+++ b/scene/resources/mesh_library.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -43,9 +43,15 @@ bool MeshLibrary::_set(const StringName &p_name, const Variant &p_value) {
set_item_name(idx, p_value);
else if (what == "mesh")
set_item_mesh(idx, p_value);
- else if (what == "shape")
- set_item_shape(idx, p_value);
- else if (what == "preview")
+ else if (what == "shape") {
+ Vector<ShapeData> shapes;
+ ShapeData sd;
+ sd.shape = p_value;
+ shapes.push_back(sd);
+ set_item_shapes(idx, shapes);
+ } else if (what == "shapes") {
+ _set_item_shapes(idx, p_value);
+ } else if (what == "preview")
set_item_preview(idx, p_value);
else if (what == "navmesh")
set_item_navmesh(idx, p_value);
@@ -69,8 +75,8 @@ bool MeshLibrary::_get(const StringName &p_name, Variant &r_ret) const {
r_ret = get_item_name(idx);
else if (what == "mesh")
r_ret = get_item_mesh(idx);
- else if (what == "shape")
- r_ret = get_item_shape(idx);
+ else if (what == "shapes")
+ r_ret = _get_item_shapes(idx);
else if (what == "navmesh")
r_ret = get_item_navmesh(idx);
else if (what == "preview")
@@ -88,7 +94,7 @@ void MeshLibrary::_get_property_list(List<PropertyInfo> *p_list) const {
String name = "item/" + itos(E->key()) + "/";
p_list->push_back(PropertyInfo(Variant::STRING, name + "name"));
p_list->push_back(PropertyInfo(Variant::OBJECT, name + "mesh", PROPERTY_HINT_RESOURCE_TYPE, "Mesh"));
- p_list->push_back(PropertyInfo(Variant::OBJECT, name + "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape"));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, name + "shapes"));
p_list->push_back(PropertyInfo(Variant::OBJECT, name + "navmesh", PROPERTY_HINT_RESOURCE_TYPE, "NavigationMesh"));
p_list->push_back(PropertyInfo(Variant::OBJECT, name + "preview", PROPERTY_HINT_RESOURCE_TYPE, "Texture", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_EDITOR_HELPER));
}
@@ -118,10 +124,10 @@ void MeshLibrary::set_item_mesh(int p_item, const Ref<Mesh> &p_mesh) {
_change_notify();
}
-void MeshLibrary::set_item_shape(int p_item, const Ref<Shape> &p_shape) {
+void MeshLibrary::set_item_shapes(int p_item, const Vector<ShapeData> &p_shapes) {
ERR_FAIL_COND(!item_map.has(p_item));
- item_map[p_item].shape = p_shape;
+ item_map[p_item].shapes = p_shapes;
_change_notify();
notify_change_to_owners();
emit_changed();
@@ -156,10 +162,10 @@ Ref<Mesh> MeshLibrary::get_item_mesh(int p_item) const {
return item_map[p_item].mesh;
}
-Ref<Shape> MeshLibrary::get_item_shape(int p_item) const {
+Vector<MeshLibrary::ShapeData> MeshLibrary::get_item_shapes(int p_item) const {
- ERR_FAIL_COND_V(!item_map.has(p_item), Ref<Shape>());
- return item_map[p_item].shape;
+ ERR_FAIL_COND_V(!item_map.has(p_item), Vector<ShapeData>());
+ return item_map[p_item].shapes;
}
Ref<NavigationMesh> MeshLibrary::get_item_navmesh(int p_item) const {
@@ -226,17 +232,48 @@ int MeshLibrary::get_last_unused_item_id() const {
return item_map.back()->key() + 1;
}
+void MeshLibrary::_set_item_shapes(int p_item, const Array &p_shapes) {
+
+ ERR_FAIL_COND(p_shapes.size() & 1);
+ Vector<ShapeData> shapes;
+ for (int i = 0; i < p_shapes.size(); i += 2) {
+ ShapeData sd;
+ sd.shape = p_shapes[i + 0];
+ sd.local_transform = p_shapes[i + 1];
+
+ if (sd.shape.is_valid()) {
+ shapes.push_back(sd);
+ }
+ }
+
+ set_item_shapes(p_item, shapes);
+}
+
+Array MeshLibrary::_get_item_shapes(int p_item) const {
+
+ Vector<ShapeData> shapes = get_item_shapes(p_item);
+ Array ret;
+ for (int i = 0; i < shapes.size(); i++) {
+ ret.push_back(shapes[i].shape);
+ ret.push_back(shapes[i].local_transform);
+ }
+
+ return ret;
+}
+
void MeshLibrary::_bind_methods() {
ClassDB::bind_method(D_METHOD("create_item", "id"), &MeshLibrary::create_item);
ClassDB::bind_method(D_METHOD("set_item_name", "id", "name"), &MeshLibrary::set_item_name);
ClassDB::bind_method(D_METHOD("set_item_mesh", "id", "mesh"), &MeshLibrary::set_item_mesh);
ClassDB::bind_method(D_METHOD("set_item_navmesh", "id", "navmesh"), &MeshLibrary::set_item_navmesh);
- ClassDB::bind_method(D_METHOD("set_item_shape", "id", "shape"), &MeshLibrary::set_item_shape);
+ ClassDB::bind_method(D_METHOD("set_item_shapes", "id", "shapes"), &MeshLibrary::_set_item_shapes);
+ ClassDB::bind_method(D_METHOD("set_item_preview", "id", "texture"), &MeshLibrary::set_item_preview);
ClassDB::bind_method(D_METHOD("get_item_name", "id"), &MeshLibrary::get_item_name);
ClassDB::bind_method(D_METHOD("get_item_mesh", "id"), &MeshLibrary::get_item_mesh);
ClassDB::bind_method(D_METHOD("get_item_navmesh", "id"), &MeshLibrary::get_item_navmesh);
- ClassDB::bind_method(D_METHOD("get_item_shape", "id"), &MeshLibrary::get_item_shape);
+ ClassDB::bind_method(D_METHOD("get_item_shapes", "id"), &MeshLibrary::_get_item_shapes);
+ ClassDB::bind_method(D_METHOD("get_item_preview", "id"), &MeshLibrary::get_item_preview);
ClassDB::bind_method(D_METHOD("remove_item", "id"), &MeshLibrary::remove_item);
ClassDB::bind_method(D_METHOD("clear"), &MeshLibrary::clear);
ClassDB::bind_method(D_METHOD("get_item_list"), &MeshLibrary::get_item_list);
diff --git a/scene/resources/mesh_library.h b/scene/resources/mesh_library.h
index cc39110a99..99b6b48d61 100644
--- a/scene/resources/mesh_library.h
+++ b/scene/resources/mesh_library.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -41,16 +41,24 @@ class MeshLibrary : public Resource {
GDCLASS(MeshLibrary, Resource);
RES_BASE_EXTENSION("meshlib");
+public:
+ struct ShapeData {
+ Ref<Shape> shape;
+ Transform local_transform;
+ };
struct Item {
String name;
Ref<Mesh> mesh;
- Ref<Shape> shape;
+ Vector<ShapeData> shapes;
Ref<Texture> preview;
Ref<NavigationMesh> navmesh;
};
Map<int, Item> item_map;
+ void _set_item_shapes(int p_item, const Array &p_shapes);
+ Array _get_item_shapes(int p_item) const;
+
protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
@@ -63,12 +71,12 @@ public:
void set_item_name(int p_item, const String &p_name);
void set_item_mesh(int p_item, const Ref<Mesh> &p_mesh);
void set_item_navmesh(int p_item, const Ref<NavigationMesh> &p_navmesh);
- void set_item_shape(int p_item, const Ref<Shape> &p_shape);
+ void set_item_shapes(int p_item, const Vector<ShapeData> &p_shapes);
void set_item_preview(int p_item, const Ref<Texture> &p_preview);
String get_item_name(int p_item) const;
Ref<Mesh> get_item_mesh(int p_item) const;
Ref<NavigationMesh> get_item_navmesh(int p_item) const;
- Ref<Shape> get_item_shape(int p_item) const;
+ Vector<ShapeData> get_item_shapes(int p_item) const;
Ref<Texture> get_item_preview(int p_item) const;
void remove_item(int p_item);
diff --git a/scene/resources/multimesh.cpp b/scene/resources/multimesh.cpp
index 231e59cdb5..15f1e15542 100644
--- a/scene/resources/multimesh.cpp
+++ b/scene/resources/multimesh.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -213,11 +213,12 @@ void MultiMesh::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "transform_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_transform_array", "_get_transform_array");
ADD_PROPERTY(PropertyInfo(Variant::POOL_COLOR_ARRAY, "color_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_color_array", "_get_color_array");
- BIND_CONSTANT(TRANSFORM_2D);
- BIND_CONSTANT(TRANSFORM_3D);
- BIND_CONSTANT(COLOR_NONE);
- BIND_CONSTANT(COLOR_8BIT);
- BIND_CONSTANT(COLOR_FLOAT);
+ BIND_ENUM_CONSTANT(TRANSFORM_2D);
+ BIND_ENUM_CONSTANT(TRANSFORM_3D);
+
+ BIND_ENUM_CONSTANT(COLOR_NONE);
+ BIND_ENUM_CONSTANT(COLOR_8BIT);
+ BIND_ENUM_CONSTANT(COLOR_FLOAT);
}
MultiMesh::MultiMesh() {
diff --git a/scene/resources/multimesh.h b/scene/resources/multimesh.h
index 7d6a0ce44f..7ca66b0b46 100644
--- a/scene/resources/multimesh.h
+++ b/scene/resources/multimesh.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp
index ce1d6f311f..19fab5d587 100644
--- a/scene/resources/packed_scene.cpp
+++ b/scene/resources/packed_scene.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "packed_scene.h"
+
#include "core/core_string_names.h"
#include "io/resource_loader.h"
#include "project_settings.h"
@@ -35,6 +36,7 @@
#include "scene/3d/spatial.h"
#include "scene/gui/control.h"
#include "scene/main/instance_placeholder.h"
+
#define PACK_VERSION 2
bool SceneState::can_instance() const {
@@ -151,18 +153,18 @@ Node *SceneState::instance(GenEditState p_edit_state) const {
//print_line("created");
//node belongs to this scene and must be created
Object *obj = ClassDB::instance(snames[n.type]);
- if (!obj || !obj->cast_to<Node>()) {
+ if (!Object::cast_to<Node>(obj)) {
if (obj) {
memdelete(obj);
obj = NULL;
}
WARN_PRINT(String("Warning node of type " + snames[n.type].operator String() + " does not exist.").ascii().get_data());
if (n.parent >= 0 && n.parent < nc && ret_nodes[n.parent]) {
- if (ret_nodes[n.parent]->cast_to<Spatial>()) {
+ if (Object::cast_to<Spatial>(ret_nodes[n.parent])) {
obj = memnew(Spatial);
- } else if (ret_nodes[n.parent]->cast_to<Control>()) {
+ } else if (Object::cast_to<Control>(ret_nodes[n.parent])) {
obj = memnew(Control);
- } else if (ret_nodes[n.parent]->cast_to<Node2D>()) {
+ } else if (Object::cast_to<Node2D>(ret_nodes[n.parent])) {
obj = memnew(Node2D);
}
}
@@ -172,7 +174,7 @@ Node *SceneState::instance(GenEditState p_edit_state) const {
}
}
- node = obj->cast_to<Node>();
+ node = Object::cast_to<Node>(obj);
} else {
print_line("wtf class is disabled for: " + itos(n.type));
@@ -242,7 +244,8 @@ Node *SceneState::instance(GenEditState p_edit_state) const {
value = local_dupe;
}
- res->setup_local_to_scene();
+ //this here may reference nodes not iniialized so this line is commented and used after loading all nodes
+ //res->setup_local_to_scene();
}
//must make a copy, because this res is local to scene
}
@@ -293,6 +296,11 @@ Node *SceneState::instance(GenEditState p_edit_state) const {
}
}
+ for (Map<Ref<Resource>, Ref<Resource> >::Element *E = resources_local_to_scene.front(); E; E = E->next()) {
+
+ E->get()->setup_local_to_scene();
+ }
+
//do connections
int cc = connections.size();
@@ -445,60 +453,6 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
}
}
-#if 0
-
- Ref<SceneState> base_scene = p_node->get_scene_inherited_state(); //for inheritance
- Ref<SceneState> instance_state;
- int instance_state_node=-1;
-
- if (base_scene.is_valid() && (p_node==p_owner || p_node->get_owner()==p_owner)) {
- //scene inheritance in use, see if this node is actually inherited
- NodePath path = p_owner->get_path_to(p_node);
- instance_state_node = base_scene->find_node_by_path(path);
- if (instance_state_node>=0) {
- instance_state=base_scene;
- }
- }
-
- // check that this is a directly instanced scene from the scene being packed, if so
- // this information must be saved. Of course, if using scene instancing and this node
- // does belong to base scene, ignore.
-
- if (instance_state.is_null() && p_node!=p_owner && p_node->get_owner()==p_owner && p_node->get_filename()!="") {
-
- //instanced, only direct sub-scnes are supported of course
- Ref<PackedScene> instance = ResourceLoader::load(p_node->get_filename());
- if (!instance.is_valid()) {
- return ERR_CANT_OPEN;
- }
-
- nd.instance=_vm_get_variant(instance,variant_map);
-
- } else {
-
- nd.instance=-1;
- }
-
- // finally, if this does not belong to scene inheritance, check
- // if it belongs to scene instancing
-
- if (instance_state.is_null() && p_node!=p_owner) {
- //if not affected by scene inheritance, this may be
- if (p_node->get_owner()==p_owner && p_node->get_filename()!=String()) {
- instance_state=p_node->get_scene_instance_state();
- if (instance_state.is_valid()) {
- instance_state_node=instance_state->find_node_by_path(p_node->get_path_to(p_node));
- }
-
- } else if (p_node->get_owner()!=p_owner && p_owner->is_editable_instance(p_node->get_owner())) {
- instance_state=p_node->get_owner()->get_scene_instance_state();
- if (instance_state.is_valid()) {
- instance_state_node=instance_state->find_node_by_path(p_node->get_owner()->get_path_to(p_node));
- }
- }
- }
-#endif
-
// all setup, we then proceed to check all properties for the node
// and save the ones that are worth saving
@@ -635,27 +589,6 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
} else {
nd.owner = -1;
-#if 0
- // this is pointless, if this was instanced by something else,
- // the owner will already be set.
-
- if (node_map.has(p_node->get_owner())) {
- //maybe an existing saved node
- nd.owner=node_map[p_node->get_owner()];
- } else {
- //not saved, use nodepath map
- int sidx;
- if (nodepath_map.has(p_node->get_owner())) {
- sidx=nodepath_map[p_node->get_owner()];
- } else {
- sidx=nodepath_map.size();
- nodepath_map[p_node->get_owner()]=sidx;
- }
-
- nd.owner=FLAG_ID_IS_PATH|sidx;
-
- }
-#endif
}
// Save the right type. If this node was created by an instance
@@ -748,7 +681,7 @@ Error SceneState::_parse_connections(Node *p_owner, Node *p_node, Map<StringName
// only connections that originate or end into main saved scene are saved
// everything else is discarded
- Node *target = c.target->cast_to<Node>();
+ Node *target = Object::cast_to<Node>(c.target);
if (!target) {
continue;
@@ -1127,26 +1060,26 @@ bool SceneState::is_connection(int p_node, const StringName &p_signal, int p_to_
return false;
}
-void SceneState::set_bundled_scene(const Dictionary &d) {
+void SceneState::set_bundled_scene(const Dictionary &p_dictionary) {
- ERR_FAIL_COND(!d.has("names"));
- ERR_FAIL_COND(!d.has("variants"));
- ERR_FAIL_COND(!d.has("node_count"));
- ERR_FAIL_COND(!d.has("nodes"));
- ERR_FAIL_COND(!d.has("conn_count"));
- ERR_FAIL_COND(!d.has("conns"));
- //ERR_FAIL_COND( !d.has("path"));
+ ERR_FAIL_COND(!p_dictionary.has("names"));
+ ERR_FAIL_COND(!p_dictionary.has("variants"));
+ ERR_FAIL_COND(!p_dictionary.has("node_count"));
+ ERR_FAIL_COND(!p_dictionary.has("nodes"));
+ ERR_FAIL_COND(!p_dictionary.has("conn_count"));
+ ERR_FAIL_COND(!p_dictionary.has("conns"));
+ //ERR_FAIL_COND( !p_dictionary.has("path"));
int version = 1;
- if (d.has("version"))
- version = d["version"];
+ if (p_dictionary.has("version"))
+ version = p_dictionary["version"];
if (version > PACK_VERSION) {
ERR_EXPLAIN("Save format version too new!");
ERR_FAIL();
}
- PoolVector<String> snames = d["names"];
+ PoolVector<String> snames = p_dictionary["names"];
if (snames.size()) {
int namecount = snames.size();
@@ -1156,7 +1089,7 @@ void SceneState::set_bundled_scene(const Dictionary &d) {
names[i] = r[i];
}
- Array svariants = d["variants"];
+ Array svariants = p_dictionary["variants"];
if (svariants.size()) {
int varcount = svariants.size();
@@ -1170,10 +1103,10 @@ void SceneState::set_bundled_scene(const Dictionary &d) {
variants.clear();
}
- nodes.resize(d["node_count"]);
+ nodes.resize(p_dictionary["node_count"]);
int nc = nodes.size();
if (nc) {
- PoolVector<int> snodes = d["nodes"];
+ PoolVector<int> snodes = p_dictionary["nodes"];
PoolVector<int>::Read r = snodes.read();
int idx = 0;
for (int i = 0; i < nc; i++) {
@@ -1197,12 +1130,12 @@ void SceneState::set_bundled_scene(const Dictionary &d) {
}
}
- connections.resize(d["conn_count"]);
+ connections.resize(p_dictionary["conn_count"]);
int cc = connections.size();
if (cc) {
- PoolVector<int> sconns = d["conns"];
+ PoolVector<int> sconns = p_dictionary["conns"];
PoolVector<int>::Read r = sconns.read();
int idx = 0;
for (int i = 0; i < cc; i++) {
@@ -1222,8 +1155,8 @@ void SceneState::set_bundled_scene(const Dictionary &d) {
}
Array np;
- if (d.has("node_paths")) {
- np = d["node_paths"];
+ if (p_dictionary.has("node_paths")) {
+ np = p_dictionary["node_paths"];
}
node_paths.resize(np.size());
for (int i = 0; i < np.size(); i++) {
@@ -1231,12 +1164,12 @@ void SceneState::set_bundled_scene(const Dictionary &d) {
}
Array ei;
- if (d.has("editable_instances")) {
- ei = d["editable_instances"];
+ if (p_dictionary.has("editable_instances")) {
+ ei = p_dictionary["editable_instances"];
}
- if (d.has("base_scene")) {
- base_scene_idx = d["base_scene"];
+ if (p_dictionary.has("base_scene")) {
+ base_scene_idx = p_dictionary["base_scene"];
}
editable_instances.resize(ei.size());
@@ -1244,7 +1177,7 @@ void SceneState::set_bundled_scene(const Dictionary &d) {
editable_instances[i] = ei[i];
}
- //path=d["path"];
+ //path=p_dictionary["path"];
}
Dictionary SceneState::get_bundled_scene() const {
@@ -1683,9 +1616,9 @@ void SceneState::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_connection_flags", "idx"), &SceneState::get_connection_flags);
ClassDB::bind_method(D_METHOD("get_connection_binds", "idx"), &SceneState::get_connection_binds);
- BIND_CONSTANT(GEN_EDIT_STATE_DISABLED);
- BIND_CONSTANT(GEN_EDIT_STATE_INSTANCE);
- BIND_CONSTANT(GEN_EDIT_STATE_MAIN);
+ BIND_ENUM_CONSTANT(GEN_EDIT_STATE_DISABLED);
+ BIND_ENUM_CONSTANT(GEN_EDIT_STATE_INSTANCE);
+ BIND_ENUM_CONSTANT(GEN_EDIT_STATE_MAIN);
}
SceneState::SceneState() {
@@ -1696,9 +1629,9 @@ SceneState::SceneState() {
////////////////
-void PackedScene::_set_bundled_scene(const Dictionary &d) {
+void PackedScene::_set_bundled_scene(const Dictionary &p_scene) {
- state->set_bundled_scene(d);
+ state->set_bundled_scene(p_scene);
}
Dictionary PackedScene::_get_bundled_scene() const {
@@ -1786,9 +1719,9 @@ void PackedScene::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "_bundled"), "_set_bundled_scene", "_get_bundled_scene");
- BIND_CONSTANT(GEN_EDIT_STATE_DISABLED);
- BIND_CONSTANT(GEN_EDIT_STATE_INSTANCE);
- BIND_CONSTANT(GEN_EDIT_STATE_MAIN);
+ BIND_ENUM_CONSTANT(GEN_EDIT_STATE_DISABLED);
+ BIND_ENUM_CONSTANT(GEN_EDIT_STATE_INSTANCE);
+ BIND_ENUM_CONSTANT(GEN_EDIT_STATE_MAIN);
}
PackedScene::PackedScene() {
diff --git a/scene/resources/packed_scene.h b/scene/resources/packed_scene.h
index 2f18f5c263..20bfb19b1f 100644
--- a/scene/resources/packed_scene.h
+++ b/scene/resources/packed_scene.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/plane_shape.cpp b/scene/resources/plane_shape.cpp
index d3ad454afc..2b1e890a5d 100644
--- a/scene/resources/plane_shape.cpp
+++ b/scene/resources/plane_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/plane_shape.h b/scene/resources/plane_shape.h
index 2ed297a97e..1384b7521b 100644
--- a/scene/resources/plane_shape.h
+++ b/scene/resources/plane_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/polygon_path_finder.cpp b/scene/resources/polygon_path_finder.cpp
index 80b413630a..053369e8d8 100644
--- a/scene/resources/polygon_path_finder.cpp
+++ b/scene/resources/polygon_path_finder.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/polygon_path_finder.h b/scene/resources/polygon_path_finder.h
index 2d2fb1678e..9b760caa2e 100644
--- a/scene/resources/polygon_path_finder.h
+++ b/scene/resources/polygon_path_finder.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/primitive_meshes.cpp b/scene/resources/primitive_meshes.cpp
index 065e7a84dd..cfc1468533 100644
--- a/scene/resources/primitive_meshes.cpp
+++ b/scene/resources/primitive_meshes.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -618,8 +618,8 @@ Vector3 CubeMesh::get_size() const {
return size;
}
-void CubeMesh::set_subdivide_width(const int p_subdivide) {
- subdivide_w = p_subdivide > 0 ? p_subdivide : 0;
+void CubeMesh::set_subdivide_width(const int p_divisions) {
+ subdivide_w = p_divisions > 0 ? p_divisions : 0;
_request_update();
}
@@ -627,8 +627,8 @@ int CubeMesh::get_subdivide_width() const {
return subdivide_w;
}
-void CubeMesh::set_subdivide_height(const int p_subdivide) {
- subdivide_h = p_subdivide > 0 ? p_subdivide : 0;
+void CubeMesh::set_subdivide_height(const int p_divisions) {
+ subdivide_h = p_divisions > 0 ? p_divisions : 0;
_request_update();
}
@@ -636,8 +636,8 @@ int CubeMesh::get_subdivide_height() const {
return subdivide_h;
}
-void CubeMesh::set_subdivide_depth(const int p_subdivide) {
- subdivide_d = p_subdivide > 0 ? p_subdivide : 0;
+void CubeMesh::set_subdivide_depth(const int p_divisions) {
+ subdivide_d = p_divisions > 0 ? p_divisions : 0;
_request_update();
}
@@ -957,8 +957,8 @@ Size2 PlaneMesh::get_size() const {
return size;
}
-void PlaneMesh::set_subdivide_width(const int p_subdivide) {
- subdivide_w = p_subdivide > 0 ? p_subdivide : 0;
+void PlaneMesh::set_subdivide_width(const int p_divisions) {
+ subdivide_w = p_divisions > 0 ? p_divisions : 0;
_request_update();
}
@@ -966,8 +966,8 @@ int PlaneMesh::get_subdivide_width() const {
return subdivide_w;
}
-void PlaneMesh::set_subdivide_depth(const int p_subdivide) {
- subdivide_d = p_subdivide > 0 ? p_subdivide : 0;
+void PlaneMesh::set_subdivide_depth(const int p_divisions) {
+ subdivide_d = p_divisions > 0 ? p_divisions : 0;
_request_update();
}
@@ -1016,13 +1016,9 @@ void PrismMesh::_create_mesh_array(Array &p_arr) const {
for (j = 0; j <= (subdivide_h + 1); j++) {
float scale = (y - start_pos.y) / size.y;
float scaled_size_x = size.x * scale;
- float start_x = start_pos.x;
- float offset_front = 0.0;
- float offset_back = 0.0;
-
- start_x += (1.0 - scale) * size.x * left_to_right;
- offset_front += (1.0 - scale) * onethird * left_to_right;
- offset_back = (1.0 - scale) * onethird * (1.0 - left_to_right);
+ float start_x = start_pos.x + (1.0 - scale) * size.x * left_to_right;
+ float offset_front = (1.0 - scale) * onethird * left_to_right;
+ float offset_back = (1.0 - scale) * onethird * (1.0 - left_to_right);
x = 0.0;
for (i = 0; i <= (subdivide_w + 1); i++) {
diff --git a/scene/resources/primitive_meshes.h b/scene/resources/primitive_meshes.h
index bcd5d30dd3..34fb75a196 100644
--- a/scene/resources/primitive_meshes.h
+++ b/scene/resources/primitive_meshes.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/ray_shape.cpp b/scene/resources/ray_shape.cpp
index 3abb2a4fa1..ccce7660c6 100644
--- a/scene/resources/ray_shape.cpp
+++ b/scene/resources/ray_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/ray_shape.h b/scene/resources/ray_shape.h
index 5a17e9414e..06b68adbae 100644
--- a/scene/resources/ray_shape.h
+++ b/scene/resources/ray_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/rectangle_shape_2d.cpp b/scene/resources/rectangle_shape_2d.cpp
index bd9ec8cbc4..507dbce861 100644
--- a/scene/resources/rectangle_shape_2d.cpp
+++ b/scene/resources/rectangle_shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/rectangle_shape_2d.h b/scene/resources/rectangle_shape_2d.h
index 23db58ba07..81d9cb1f4a 100644
--- a/scene/resources/rectangle_shape_2d.h
+++ b/scene/resources/rectangle_shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/room.cpp b/scene/resources/room.cpp
index c89b7c72c7..487975dd4e 100644
--- a/scene/resources/room.cpp
+++ b/scene/resources/room.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -31,6 +31,8 @@
#include "servers/visual_server.h"
+// FIXME: Left for reference for reimplementation using Area
+#if 0
RID RoomBounds::get_rid() const {
return area;
@@ -64,3 +66,4 @@ RoomBounds::~RoomBounds() {
VisualServer::get_singleton()->free(area);
}
+#endif
diff --git a/scene/resources/room.h b/scene/resources/room.h
index 1bcdec5eb0..aadee858c2 100644
--- a/scene/resources/room.h
+++ b/scene/resources/room.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -36,6 +36,9 @@
@author Juan Linietsky <reduzio@gmail.com>
*/
+//left for reference but will be removed when portals are reimplemented using Area
+#if 0
+
class RoomBounds : public Resource {
GDCLASS(RoomBounds, Resource);
@@ -50,11 +53,12 @@ protected:
public:
virtual RID get_rid() const;
- void set_geometry_hint(const PoolVector<Face3> &geometry_hint);
+ void set_geometry_hint(const PoolVector<Face3> &p_geometry_hint);
PoolVector<Face3> get_geometry_hint() const;
RoomBounds();
~RoomBounds();
};
+#endif
#endif // ROOM_H
diff --git a/scene/resources/scene_format_text.cpp b/scene/resources/scene_format_text.cpp
index 03a862b744..fea5c11dec 100644
--- a/scene/resources/scene_format_text.cpp
+++ b/scene/resources/scene_format_text.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -239,7 +239,7 @@ Error ResourceInteractiveLoaderText::poll() {
return error;
}
- Resource *r = obj->cast_to<Resource>();
+ Resource *r = Object::cast_to<Resource>(obj);
if (!r) {
error_text += "Can't create sub resource of type, because not a resource: " + type;
@@ -305,7 +305,7 @@ Error ResourceInteractiveLoaderText::poll() {
return error;
}
- Resource *r = obj->cast_to<Resource>();
+ Resource *r = Object::cast_to<Resource>(obj);
if (!r) {
error_text += "Can't create sub resource of type, because not a resource: " + res_type;
@@ -621,9 +621,9 @@ ResourceInteractiveLoaderText::~ResourceInteractiveLoaderText() {
memdelete(f);
}
-void ResourceInteractiveLoaderText::get_dependencies(FileAccess *f, List<String> *p_dependencies, bool p_add_types) {
+void ResourceInteractiveLoaderText::get_dependencies(FileAccess *p_f, List<String> *p_dependencies, bool p_add_types) {
- open(f);
+ open(p_f);
ignore_resource_parsing = true;
ERR_FAIL_COND(error != OK);
diff --git a/scene/resources/scene_format_text.h b/scene/resources/scene_format_text.h
index 1ea6465c21..193bcf7112 100644
--- a/scene/resources/scene_format_text.h
+++ b/scene/resources/scene_format_text.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/segment_shape_2d.cpp b/scene/resources/segment_shape_2d.cpp
index 99062d693b..1171db5c02 100644
--- a/scene/resources/segment_shape_2d.cpp
+++ b/scene/resources/segment_shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/segment_shape_2d.h b/scene/resources/segment_shape_2d.h
index 22fc1ab6e3..eb9c228c83 100644
--- a/scene/resources/segment_shape_2d.h
+++ b/scene/resources/segment_shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp
index b72eb9fbef..ec41630258 100644
--- a/scene/resources/shader.cpp
+++ b/scene/resources/shader.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -137,9 +137,9 @@ void Shader::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::STRING, "code", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_code", "get_code");
- BIND_CONSTANT(MODE_SPATIAL);
- BIND_CONSTANT(MODE_CANVAS_ITEM);
- BIND_CONSTANT(MODE_PARTICLES);
+ BIND_ENUM_CONSTANT(MODE_SPATIAL);
+ BIND_ENUM_CONSTANT(MODE_CANVAS_ITEM);
+ BIND_ENUM_CONSTANT(MODE_PARTICLES);
}
Shader::Shader() {
diff --git a/scene/resources/shader.h b/scene/resources/shader.h
index 0e8e48d82e..5cc70629c7 100644
--- a/scene/resources/shader.h
+++ b/scene/resources/shader.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp
index f68aed6af9..2ca9a14562 100644
--- a/scene/resources/shader_graph.cpp
+++ b/scene/resources/shader_graph.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,8 +28,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "shader_graph.h"
+
#include "scene/scene_string_names.h"
+// FIXME: Needs to be ported to the new 3.0 shader API
#if 0
Array ShaderGraph::_get_node_list(ShaderType p_type) const {
@@ -272,204 +274,131 @@ void ShaderGraph::_bind_methods() {
//void get_connections(ShaderType p_which,List<Connection> *p_connections) const;
- BIND_CONSTANT( NODE_INPUT ); // all inputs (shader type dependent)
- BIND_CONSTANT( NODE_SCALAR_CONST ); //scalar constant
- BIND_CONSTANT( NODE_VEC_CONST ); //vec3 constant
- BIND_CONSTANT( NODE_RGB_CONST ); //rgb constant (shows a color picker instead)
- BIND_CONSTANT( NODE_XFORM_CONST ); // 4x4 matrix constant
- BIND_CONSTANT( NODE_TIME ); // time in seconds
- BIND_CONSTANT( NODE_SCREEN_TEX ); // screen texture sampler (takes UV) (only usable in fragment shader)
- BIND_CONSTANT( NODE_SCALAR_OP ); // scalar vs scalar op (mul ); add ); div ); etc)
- BIND_CONSTANT( NODE_VEC_OP ); // vec3 vs vec3 op (mul );ad );div );crossprod );etc)
- BIND_CONSTANT( NODE_VEC_SCALAR_OP ); // vec3 vs scalar op (mul ); add ); div ); etc)
- BIND_CONSTANT( NODE_RGB_OP ); // vec3 vs vec3 rgb op (with scalar amount) ); like brighten ); darken ); burn ); dodge ); multiply ); etc.
- BIND_CONSTANT( NODE_XFORM_MULT ); // mat4 x mat4
- BIND_CONSTANT( NODE_XFORM_VEC_MULT ); // mat4 x vec3 mult (with no-translation option)
- BIND_CONSTANT( NODE_XFORM_VEC_INV_MULT ); // mat4 x vec3 inverse mult (with no-translation option)
- BIND_CONSTANT( NODE_SCALAR_FUNC ); // scalar function (sin ); cos ); etc)
- BIND_CONSTANT( NODE_VEC_FUNC ); // vector function (normalize ); negate ); reciprocal ); rgb2hsv ); hsv2rgb ); etc ); etc)
- BIND_CONSTANT( NODE_VEC_LEN ); // vec3 length
- BIND_CONSTANT( NODE_DOT_PROD ); // vec3 . vec3 (dot product -> scalar output)
- BIND_CONSTANT( NODE_VEC_TO_SCALAR ); // 1 vec3 input ); 3 scalar outputs
- BIND_CONSTANT( NODE_SCALAR_TO_VEC ); // 3 scalar input ); 1 vec3 output
- BIND_CONSTANT( NODE_VEC_TO_XFORM ); // 3 vec input ); 1 xform output
- BIND_CONSTANT( NODE_XFORM_TO_VEC ); // 3 vec input ); 1 xform output
- BIND_CONSTANT( NODE_SCALAR_INTERP ); // scalar interpolation (with optional curve)
- BIND_CONSTANT( NODE_VEC_INTERP ); // vec3 interpolation (with optional curve)
- BIND_CONSTANT( NODE_COLOR_RAMP );
- BIND_CONSTANT( NODE_CURVE_MAP );
- BIND_CONSTANT( NODE_SCALAR_INPUT ); // scalar uniform (assignable in material)
- BIND_CONSTANT( NODE_VEC_INPUT ); // vec3 uniform (assignable in material)
- BIND_CONSTANT( NODE_RGB_INPUT ); // color uniform (assignable in material)
- BIND_CONSTANT( NODE_XFORM_INPUT ); // mat4 uniform (assignable in material)
- BIND_CONSTANT( NODE_TEXTURE_INPUT ); // texture input (assignable in material)
- BIND_CONSTANT( NODE_CUBEMAP_INPUT ); // cubemap input (assignable in material)
- BIND_CONSTANT( NODE_DEFAULT_TEXTURE );
- BIND_CONSTANT( NODE_OUTPUT ); // output (shader type dependent)
- BIND_CONSTANT( NODE_COMMENT ); // comment
- BIND_CONSTANT( NODE_TYPE_MAX );
-
- BIND_CONSTANT( SLOT_TYPE_SCALAR );
- BIND_CONSTANT( SLOT_TYPE_VEC );
- BIND_CONSTANT( SLOT_TYPE_XFORM );
- BIND_CONSTANT( SLOT_TYPE_TEXTURE );
- BIND_CONSTANT( SLOT_MAX );
-
- BIND_CONSTANT( SHADER_TYPE_VERTEX );
- BIND_CONSTANT( SHADER_TYPE_FRAGMENT );
- BIND_CONSTANT( SHADER_TYPE_LIGHT );
- BIND_CONSTANT( SHADER_TYPE_MAX );
-
-
- BIND_CONSTANT( SLOT_IN );
- BIND_CONSTANT( SLOT_OUT );
-
- BIND_CONSTANT( GRAPH_OK );
- BIND_CONSTANT( GRAPH_ERROR_CYCLIC );
- BIND_CONSTANT( GRAPH_ERROR_MISSING_CONNECTIONS );
-
- BIND_CONSTANT( SCALAR_OP_ADD );
- BIND_CONSTANT( SCALAR_OP_SUB );
- BIND_CONSTANT( SCALAR_OP_MUL );
- BIND_CONSTANT( SCALAR_OP_DIV );
- BIND_CONSTANT( SCALAR_OP_MOD );
- BIND_CONSTANT( SCALAR_OP_POW );
- BIND_CONSTANT( SCALAR_OP_MAX );
- BIND_CONSTANT( SCALAR_OP_MIN );
- BIND_CONSTANT( SCALAR_OP_ATAN2 );
- BIND_CONSTANT( SCALAR_MAX_OP );
-
- BIND_CONSTANT( VEC_OP_ADD );
- BIND_CONSTANT( VEC_OP_SUB );
- BIND_CONSTANT( VEC_OP_MUL );
- BIND_CONSTANT( VEC_OP_DIV );
- BIND_CONSTANT( VEC_OP_MOD );
- BIND_CONSTANT( VEC_OP_POW );
- BIND_CONSTANT( VEC_OP_MAX );
- BIND_CONSTANT( VEC_OP_MIN );
- BIND_CONSTANT( VEC_OP_CROSS );
- BIND_CONSTANT( VEC_MAX_OP );
-
- BIND_CONSTANT( VEC_SCALAR_OP_MUL );
- BIND_CONSTANT( VEC_SCALAR_OP_DIV );
- BIND_CONSTANT( VEC_SCALAR_OP_POW );
- BIND_CONSTANT( VEC_SCALAR_MAX_OP );
-
- BIND_CONSTANT( RGB_OP_SCREEN );
- BIND_CONSTANT( RGB_OP_DIFFERENCE );
- BIND_CONSTANT( RGB_OP_DARKEN );
- BIND_CONSTANT( RGB_OP_LIGHTEN );
- BIND_CONSTANT( RGB_OP_OVERLAY );
- BIND_CONSTANT( RGB_OP_DODGE );
- BIND_CONSTANT( RGB_OP_BURN );
- BIND_CONSTANT( RGB_OP_SOFT_LIGHT );
- BIND_CONSTANT( RGB_OP_HARD_LIGHT );
- BIND_CONSTANT( RGB_MAX_OP );
-
- BIND_CONSTANT( SCALAR_FUNC_SIN );
- BIND_CONSTANT( SCALAR_FUNC_COS );
- BIND_CONSTANT( SCALAR_FUNC_TAN );
- BIND_CONSTANT( SCALAR_FUNC_ASIN );
- BIND_CONSTANT( SCALAR_FUNC_ACOS );
- BIND_CONSTANT( SCALAR_FUNC_ATAN );
- BIND_CONSTANT( SCALAR_FUNC_SINH );
- BIND_CONSTANT( SCALAR_FUNC_COSH );
- BIND_CONSTANT( SCALAR_FUNC_TANH );
- BIND_CONSTANT( SCALAR_FUNC_LOG );
- BIND_CONSTANT( SCALAR_FUNC_EXP );
- BIND_CONSTANT( SCALAR_FUNC_SQRT );
- BIND_CONSTANT( SCALAR_FUNC_ABS );
- BIND_CONSTANT( SCALAR_FUNC_SIGN );
- BIND_CONSTANT( SCALAR_FUNC_FLOOR );
- BIND_CONSTANT( SCALAR_FUNC_ROUND );
- BIND_CONSTANT( SCALAR_FUNC_CEIL );
- BIND_CONSTANT( SCALAR_FUNC_FRAC );
- BIND_CONSTANT( SCALAR_FUNC_SATURATE );
- BIND_CONSTANT( SCALAR_FUNC_NEGATE );
- BIND_CONSTANT( SCALAR_MAX_FUNC );
-
- BIND_CONSTANT( VEC_FUNC_NORMALIZE );
- BIND_CONSTANT( VEC_FUNC_SATURATE );
- BIND_CONSTANT( VEC_FUNC_NEGATE );
- BIND_CONSTANT( VEC_FUNC_RECIPROCAL );
- BIND_CONSTANT( VEC_FUNC_RGB2HSV );
- BIND_CONSTANT( VEC_FUNC_HSV2RGB );
- BIND_CONSTANT( VEC_MAX_FUNC );
+ BIND_ENUM_CONSTANT( NODE_INPUT ); // all inputs (shader type dependent)
+ BIND_ENUM_CONSTANT( NODE_SCALAR_CONST ); //scalar constant
+ BIND_ENUM_CONSTANT( NODE_VEC_CONST ); //vec3 constant
+ BIND_ENUM_CONSTANT( NODE_RGB_CONST ); //rgb constant (shows a color picker instead)
+ BIND_ENUM_CONSTANT( NODE_XFORM_CONST ); // 4x4 matrix constant
+ BIND_ENUM_CONSTANT( NODE_TIME ); // time in seconds
+ BIND_ENUM_CONSTANT( NODE_SCREEN_TEX ); // screen texture sampler (takes UV) (only usable in fragment shader)
+ BIND_ENUM_CONSTANT( NODE_SCALAR_OP ); // scalar vs scalar op (mul ); add ); div ); etc)
+ BIND_ENUM_CONSTANT( NODE_VEC_OP ); // vec3 vs vec3 op (mul );ad );div );crossprod );etc)
+ BIND_ENUM_CONSTANT( NODE_VEC_SCALAR_OP ); // vec3 vs scalar op (mul ); add ); div ); etc)
+ BIND_ENUM_CONSTANT( NODE_RGB_OP ); // vec3 vs vec3 rgb op (with scalar amount) ); like brighten ); darken ); burn ); dodge ); multiply ); etc.
+ BIND_ENUM_CONSTANT( NODE_XFORM_MULT ); // mat4 x mat4
+ BIND_ENUM_CONSTANT( NODE_XFORM_VEC_MULT ); // mat4 x vec3 mult (with no-translation option)
+ BIND_ENUM_CONSTANT( NODE_XFORM_VEC_INV_MULT ); // mat4 x vec3 inverse mult (with no-translation option)
+ BIND_ENUM_CONSTANT( NODE_SCALAR_FUNC ); // scalar function (sin ); cos ); etc)
+ BIND_ENUM_CONSTANT( NODE_VEC_FUNC ); // vector function (normalize ); negate ); reciprocal ); rgb2hsv ); hsv2rgb ); etc ); etc)
+ BIND_ENUM_CONSTANT( NODE_VEC_LEN ); // vec3 length
+ BIND_ENUM_CONSTANT( NODE_DOT_PROD ); // vec3 . vec3 (dot product -> scalar output)
+ BIND_ENUM_CONSTANT( NODE_VEC_TO_SCALAR ); // 1 vec3 input ); 3 scalar outputs
+ BIND_ENUM_CONSTANT( NODE_SCALAR_TO_VEC ); // 3 scalar input ); 1 vec3 output
+ BIND_ENUM_CONSTANT( NODE_VEC_TO_XFORM ); // 3 vec input ); 1 xform output
+ BIND_ENUM_CONSTANT( NODE_XFORM_TO_VEC ); // 3 vec input ); 1 xform output
+ BIND_ENUM_CONSTANT( NODE_SCALAR_INTERP ); // scalar interpolation (with optional curve)
+ BIND_ENUM_CONSTANT( NODE_VEC_INTERP ); // vec3 interpolation (with optional curve)
+ BIND_ENUM_CONSTANT( NODE_COLOR_RAMP );
+ BIND_ENUM_CONSTANT( NODE_CURVE_MAP );
+ BIND_ENUM_CONSTANT( NODE_SCALAR_INPUT ); // scalar uniform (assignable in material)
+ BIND_ENUM_CONSTANT( NODE_VEC_INPUT ); // vec3 uniform (assignable in material)
+ BIND_ENUM_CONSTANT( NODE_RGB_INPUT ); // color uniform (assignable in material)
+ BIND_ENUM_CONSTANT( NODE_XFORM_INPUT ); // mat4 uniform (assignable in material)
+ BIND_ENUM_CONSTANT( NODE_TEXTURE_INPUT ); // texture input (assignable in material)
+ BIND_ENUM_CONSTANT( NODE_CUBEMAP_INPUT ); // cubemap input (assignable in material)
+ BIND_ENUM_CONSTANT( NODE_DEFAULT_TEXTURE );
+ BIND_ENUM_CONSTANT( NODE_OUTPUT ); // output (shader type dependent)
+ BIND_ENUM_CONSTANT( NODE_COMMENT ); // comment
+ BIND_ENUM_CONSTANT( NODE_TYPE_MAX );
+
+ BIND_ENUM_CONSTANT( SLOT_TYPE_SCALAR );
+ BIND_ENUM_CONSTANT( SLOT_TYPE_VEC );
+ BIND_ENUM_CONSTANT( SLOT_TYPE_XFORM );
+ BIND_ENUM_CONSTANT( SLOT_TYPE_TEXTURE );
+ BIND_ENUM_CONSTANT( SLOT_MAX );
+
+ BIND_ENUM_CONSTANT( SHADER_TYPE_VERTEX );
+ BIND_ENUM_CONSTANT( SHADER_TYPE_FRAGMENT );
+ BIND_ENUM_CONSTANT( SHADER_TYPE_LIGHT );
+ BIND_ENUM_CONSTANT( SHADER_TYPE_MAX );
+
+
+ BIND_ENUM_CONSTANT( SLOT_IN );
+ BIND_ENUM_CONSTANT( SLOT_OUT );
+
+ BIND_ENUM_CONSTANT( GRAPH_OK );
+ BIND_ENUM_CONSTANT( GRAPH_ERROR_CYCLIC );
+ BIND_ENUM_CONSTANT( GRAPH_ERROR_MISSING_CONNECTIONS );
+
+ BIND_ENUM_CONSTANT( SCALAR_OP_ADD );
+ BIND_ENUM_CONSTANT( SCALAR_OP_SUB );
+ BIND_ENUM_CONSTANT( SCALAR_OP_MUL );
+ BIND_ENUM_CONSTANT( SCALAR_OP_DIV );
+ BIND_ENUM_CONSTANT( SCALAR_OP_MOD );
+ BIND_ENUM_CONSTANT( SCALAR_OP_POW );
+ BIND_ENUM_CONSTANT( SCALAR_OP_MAX );
+ BIND_ENUM_CONSTANT( SCALAR_OP_MIN );
+ BIND_ENUM_CONSTANT( SCALAR_OP_ATAN2 );
+ BIND_ENUM_CONSTANT( SCALAR_MAX_OP );
+
+ BIND_ENUM_CONSTANT( VEC_OP_ADD );
+ BIND_ENUM_CONSTANT( VEC_OP_SUB );
+ BIND_ENUM_CONSTANT( VEC_OP_MUL );
+ BIND_ENUM_CONSTANT( VEC_OP_DIV );
+ BIND_ENUM_CONSTANT( VEC_OP_MOD );
+ BIND_ENUM_CONSTANT( VEC_OP_POW );
+ BIND_ENUM_CONSTANT( VEC_OP_MAX );
+ BIND_ENUM_CONSTANT( VEC_OP_MIN );
+ BIND_ENUM_CONSTANT( VEC_OP_CROSS );
+ BIND_ENUM_CONSTANT( VEC_MAX_OP );
+
+ BIND_ENUM_CONSTANT( VEC_SCALAR_OP_MUL );
+ BIND_ENUM_CONSTANT( VEC_SCALAR_OP_DIV );
+ BIND_ENUM_CONSTANT( VEC_SCALAR_OP_POW );
+ BIND_ENUM_CONSTANT( VEC_SCALAR_MAX_OP );
+
+ BIND_ENUM_CONSTANT( RGB_OP_SCREEN );
+ BIND_ENUM_CONSTANT( RGB_OP_DIFFERENCE );
+ BIND_ENUM_CONSTANT( RGB_OP_DARKEN );
+ BIND_ENUM_CONSTANT( RGB_OP_LIGHTEN );
+ BIND_ENUM_CONSTANT( RGB_OP_OVERLAY );
+ BIND_ENUM_CONSTANT( RGB_OP_DODGE );
+ BIND_ENUM_CONSTANT( RGB_OP_BURN );
+ BIND_ENUM_CONSTANT( RGB_OP_SOFT_LIGHT );
+ BIND_ENUM_CONSTANT( RGB_OP_HARD_LIGHT );
+ BIND_ENUM_CONSTANT( RGB_MAX_OP );
+
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_SIN );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_COS );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_TAN );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_ASIN );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_ACOS );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_ATAN );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_SINH );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_COSH );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_TANH );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_LOG );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_EXP );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_SQRT );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_ABS );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_SIGN );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_FLOOR );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_ROUND );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_CEIL );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_FRAC );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_SATURATE );
+ BIND_ENUM_CONSTANT( SCALAR_FUNC_NEGATE );
+ BIND_ENUM_CONSTANT( SCALAR_MAX_FUNC );
+
+ BIND_ENUM_CONSTANT( VEC_FUNC_NORMALIZE );
+ BIND_ENUM_CONSTANT( VEC_FUNC_SATURATE );
+ BIND_ENUM_CONSTANT( VEC_FUNC_NEGATE );
+ BIND_ENUM_CONSTANT( VEC_FUNC_RECIPROCAL );
+ BIND_ENUM_CONSTANT( VEC_FUNC_RGB2HSV );
+ BIND_ENUM_CONSTANT( VEC_FUNC_HSV2RGB );
+ BIND_ENUM_CONSTANT( VEC_MAX_FUNC );
ADD_SIGNAL(MethodInfo("updated"));
-
-#if 0
- ClassDB::bind_method(D_METHOD("node_add"),&ShaderGraph::node_add );
- ClassDB::bind_method(D_METHOD("node_remove"),&ShaderGraph::node_remove );
- ClassDB::bind_method(D_METHOD("node_set_param"),&ShaderGraph::node_set_param );
- ClassDB::bind_method(D_METHOD("node_set_pos"),&ShaderGraph::node_set_pos );
-
- ClassDB::bind_method(D_METHOD("node_get_pos"),&ShaderGraph::node_get_pos );
- ClassDB::bind_method(D_METHOD("node_get_param"),&ShaderGraph::node_get_param);
- ClassDB::bind_method(D_METHOD("node_get_type"),&ShaderGraph::node_get_type);
-
- ClassDB::bind_method(D_METHOD("connect"),&ShaderGraph::connect );
- ClassDB::bind_method(D_METHOD("disconnect"),&ShaderGraph::disconnect );
-
- ClassDB::bind_method(D_METHOD("get_connections"),&ShaderGraph::_get_connections_helper );
-
- ClassDB::bind_method(D_METHOD("clear"),&ShaderGraph::clear );
-
- BIND_CONSTANT( NODE_IN ); ///< param 0: name
- BIND_CONSTANT( NODE_OUT ); ///< param 0: name
- BIND_CONSTANT( NODE_CONSTANT ); ///< param 0: value
- BIND_CONSTANT( NODE_PARAMETER ); ///< param 0: name
- BIND_CONSTANT( NODE_ADD );
- BIND_CONSTANT( NODE_SUB );
- BIND_CONSTANT( NODE_MUL );
- BIND_CONSTANT( NODE_DIV );
- BIND_CONSTANT( NODE_MOD );
- BIND_CONSTANT( NODE_SIN );
- BIND_CONSTANT( NODE_COS );
- BIND_CONSTANT( NODE_TAN );
- BIND_CONSTANT( NODE_ARCSIN );
- BIND_CONSTANT( NODE_ARCCOS );
- BIND_CONSTANT( NODE_ARCTAN );
- BIND_CONSTANT( NODE_POW );
- BIND_CONSTANT( NODE_LOG );
- BIND_CONSTANT( NODE_MAX );
- BIND_CONSTANT( NODE_MIN );
- BIND_CONSTANT( NODE_COMPARE );
- BIND_CONSTANT( NODE_TEXTURE ); ///< param 0: texture
- BIND_CONSTANT( NODE_TIME ); ///< param 0: interval length
- BIND_CONSTANT( NODE_NOISE );
- BIND_CONSTANT( NODE_PASS );
- BIND_CONSTANT( NODE_VEC_IN ); ///< param 0: name
- BIND_CONSTANT( NODE_VEC_OUT ); ///< param 0: name
- BIND_CONSTANT( NODE_VEC_CONSTANT ); ///< param 0: value
- BIND_CONSTANT( NODE_VEC_PARAMETER ); ///< param 0: name
- BIND_CONSTANT( NODE_VEC_ADD );
- BIND_CONSTANT( NODE_VEC_SUB );
- BIND_CONSTANT( NODE_VEC_MUL );
- BIND_CONSTANT( NODE_VEC_DIV );
- BIND_CONSTANT( NODE_VEC_MOD );
- BIND_CONSTANT( NODE_VEC_CROSS );
- BIND_CONSTANT( NODE_VEC_DOT );
- BIND_CONSTANT( NODE_VEC_POW );
- BIND_CONSTANT( NODE_VEC_NORMALIZE );
- BIND_CONSTANT( NODE_VEC_TRANSFORM3 );
- BIND_CONSTANT( NODE_VEC_TRANSFORM4 );
- BIND_CONSTANT( NODE_VEC_COMPARE );
- BIND_CONSTANT( NODE_VEC_TEXTURE_2D );
- BIND_CONSTANT( NODE_VEC_TEXTURE_CUBE );
- BIND_CONSTANT( NODE_VEC_NOISE );
- BIND_CONSTANT( NODE_VEC_0 );
- BIND_CONSTANT( NODE_VEC_1 );
- BIND_CONSTANT( NODE_VEC_2 );
- BIND_CONSTANT( NODE_VEC_BUILD );
- BIND_CONSTANT( NODE_VEC_PASS );
- BIND_CONSTANT( NODE_COLOR_CONSTANT );
- BIND_CONSTANT( NODE_COLOR_PARAMETER );
- BIND_CONSTANT( NODE_TEXTURE_PARAMETER );
- BIND_CONSTANT( NODE_TEXTURE_2D_PARAMETER );
- BIND_CONSTANT( NODE_TEXTURE_CUBE_PARAMETER );
- BIND_CONSTANT( NODE_TYPE_MAX );
-#endif
}
diff --git a/scene/resources/shader_graph.h b/scene/resources/shader_graph.h
index 36578ce1f7..9a74b6c53a 100644
--- a/scene/resources/shader_graph.h
+++ b/scene/resources/shader_graph.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,6 +30,7 @@
#ifndef SHADER_GRAPH_H
#define SHADER_GRAPH_H
+// FIXME: Needs to be ported to the new 3.0 shader API
#if 0
#include "map.h"
#include "scene/resources/shader.h"
diff --git a/scene/resources/shape.cpp b/scene/resources/shape.cpp
index 6be88374e5..0046ff58a8 100644
--- a/scene/resources/shape.cpp
+++ b/scene/resources/shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -74,7 +74,7 @@ Ref<ArrayMesh> Shape::get_debug_mesh() {
arr.resize(Mesh::ARRAY_MAX);
arr[Mesh::ARRAY_VERTEX] = array;
- SceneTree *st = OS::get_singleton()->get_main_loop()->cast_to<SceneTree>();
+ SceneTree *st = Object::cast_to<SceneTree>(OS::get_singleton()->get_main_loop());
debug_mesh_cache->add_surface_from_arrays(Mesh::PRIMITIVE_LINES, arr);
diff --git a/scene/resources/shape.h b/scene/resources/shape.h
index c15638aeed..bc75e723e9 100644
--- a/scene/resources/shape.h
+++ b/scene/resources/shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/shape_2d.cpp b/scene/resources/shape_2d.cpp
index 818c749e8c..4423c78bbe 100644
--- a/scene/resources/shape_2d.cpp
+++ b/scene/resources/shape_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/shape_2d.h b/scene/resources/shape_2d.h
index a752b8dbe2..fffc7011f1 100644
--- a/scene/resources/shape_2d.h
+++ b/scene/resources/shape_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -47,10 +47,10 @@ public:
void set_custom_solver_bias(real_t p_bias);
real_t get_custom_solver_bias() const;
- bool collide_with_motion(const Transform2D &p_local_xform, const Vector2 &p_local_motion, const Ref<Shape2D> &p_shape, const Transform2D &p_shape_xform, const Vector2 &p_p_shape_motion);
+ bool collide_with_motion(const Transform2D &p_local_xform, const Vector2 &p_local_motion, const Ref<Shape2D> &p_shape, const Transform2D &p_shape_xform, const Vector2 &p_shape_motion);
bool collide(const Transform2D &p_local_xform, const Ref<Shape2D> &p_shape, const Transform2D &p_shape_xform);
- Variant collide_with_motion_and_get_contacts(const Transform2D &p_local_xform, const Vector2 &p_local_motion, const Ref<Shape2D> &p_shape, const Transform2D &p_shape_xform, const Vector2 &p_p_shape_motion);
+ Variant collide_with_motion_and_get_contacts(const Transform2D &p_local_xform, const Vector2 &p_local_motion, const Ref<Shape2D> &p_shape, const Transform2D &p_shape_xform, const Vector2 &p_shape_motion);
Variant collide_and_get_contacts(const Transform2D &p_local_xform, const Ref<Shape2D> &p_shape, const Transform2D &p_shape_xform);
virtual void draw(const RID &p_to_rid, const Color &p_color) {}
diff --git a/scene/resources/shape_line_2d.cpp b/scene/resources/shape_line_2d.cpp
index c38ae04eff..4dcc5ac981 100644
--- a/scene/resources/shape_line_2d.cpp
+++ b/scene/resources/shape_line_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/shape_line_2d.h b/scene/resources/shape_line_2d.h
index 3e59bbc687..68298b63be 100644
--- a/scene/resources/shape_line_2d.h
+++ b/scene/resources/shape_line_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/sky_box.cpp b/scene/resources/sky_box.cpp
index 5750960845..9af8c42110 100644
--- a/scene/resources/sky_box.cpp
+++ b/scene/resources/sky_box.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -49,14 +49,14 @@ void Sky::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "radiance_size", PROPERTY_HINT_ENUM, "32,64,128,256,512,1024,2048"), "set_radiance_size", "get_radiance_size");
- BIND_CONSTANT(RADIANCE_SIZE_32);
- BIND_CONSTANT(RADIANCE_SIZE_64);
- BIND_CONSTANT(RADIANCE_SIZE_128);
- BIND_CONSTANT(RADIANCE_SIZE_256);
- BIND_CONSTANT(RADIANCE_SIZE_512);
- BIND_CONSTANT(RADIANCE_SIZE_1024);
- BIND_CONSTANT(RADIANCE_SIZE_2048);
- BIND_CONSTANT(RADIANCE_SIZE_MAX);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_32);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_64);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_128);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_256);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_512);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_1024);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_2048);
+ BIND_ENUM_CONSTANT(RADIANCE_SIZE_MAX);
}
Sky::Sky() {
@@ -128,7 +128,7 @@ void ProceduralSky::_radiance_changed() {
VS::get_singleton()->sky_set_texture(sky, texture, size[get_radiance_size()]);
}
-void ProceduralSky::_update_sky() {
+Ref<Image> ProceduralSky::_generate_sky() {
update_queued = false;
@@ -215,9 +215,7 @@ void ProceduralSky::_update_sky() {
image.instance();
image->create(w, h, false, Image::FORMAT_RGBE9995, imgdata);
- VS::get_singleton()->texture_allocate(texture, w, h, Image::FORMAT_RGBE9995, VS::TEXTURE_FLAG_FILTER | VS::TEXTURE_FLAG_REPEAT);
- VS::get_singleton()->texture_set_data(texture, image);
- _radiance_changed();
+ return image;
}
void ProceduralSky::set_sky_top_color(const Color &p_sky_top) {
@@ -385,6 +383,33 @@ RID ProceduralSky::get_rid() const {
return sky;
}
+void ProceduralSky::_update_sky() {
+
+ bool use_thread = true;
+ if (first_time) {
+ use_thread = false;
+ first_time = false;
+ }
+#ifdef NO_THREADS
+ use_thread = false;
+#endif
+ if (use_thread) {
+
+ if (!sky_thread) {
+ sky_thread = Thread::create(_thread_function, this);
+ regen_queued = false;
+ } else {
+ regen_queued = true;
+ }
+
+ } else {
+ Ref<Image> image = _generate_sky();
+ VS::get_singleton()->texture_allocate(texture, image->get_width(), image->get_height(), Image::FORMAT_RGBE9995, VS::TEXTURE_FLAG_FILTER | VS::TEXTURE_FLAG_REPEAT);
+ VS::get_singleton()->texture_set_data(texture, image);
+ _radiance_changed();
+ }
+}
+
void ProceduralSky::_queue_update() {
if (update_queued)
@@ -394,6 +419,26 @@ void ProceduralSky::_queue_update() {
call_deferred("_update_sky");
}
+void ProceduralSky::_thread_done(const Ref<Image> &image) {
+
+ VS::get_singleton()->texture_allocate(texture, image->get_width(), image->get_height(), Image::FORMAT_RGBE9995, VS::TEXTURE_FLAG_FILTER | VS::TEXTURE_FLAG_REPEAT);
+ VS::get_singleton()->texture_set_data(texture, image);
+ _radiance_changed();
+ Thread::wait_to_finish(sky_thread);
+ memdelete(sky_thread);
+ sky_thread = NULL;
+ if (regen_queued) {
+ sky_thread = Thread::create(_thread_function, this);
+ regen_queued = false;
+ }
+}
+
+void ProceduralSky::_thread_function(void *p_ud) {
+
+ ProceduralSky *psky = (ProceduralSky *)p_ud;
+ psky->call_deferred("_thread_done", psky->_generate_sky());
+}
+
void ProceduralSky::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update_sky"), &ProceduralSky::_update_sky);
@@ -446,6 +491,8 @@ void ProceduralSky::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_texture_size", "size"), &ProceduralSky::set_texture_size);
ClassDB::bind_method(D_METHOD("get_texture_size"), &ProceduralSky::get_texture_size);
+ ClassDB::bind_method(D_METHOD("_thread_done", "image"), &ProceduralSky::_thread_done);
+
ADD_GROUP("Sky", "sky_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "sky_top_color"), "set_sky_top_color", "get_sky_top_color");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "sky_horizon_color"), "set_sky_horizon_color", "get_sky_horizon_color");
@@ -470,12 +517,12 @@ void ProceduralSky::_bind_methods() {
ADD_GROUP("Texture", "texture_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "texture_size", PROPERTY_HINT_ENUM, "256,512,1024,2048,4096"), "set_texture_size", "get_texture_size");
- BIND_CONSTANT(TEXTURE_SIZE_256);
- BIND_CONSTANT(TEXTURE_SIZE_512);
- BIND_CONSTANT(TEXTURE_SIZE_1024);
- BIND_CONSTANT(TEXTURE_SIZE_2048);
- BIND_CONSTANT(TEXTURE_SIZE_4096);
- BIND_CONSTANT(TEXTURE_SIZE_MAX);
+ BIND_ENUM_CONSTANT(TEXTURE_SIZE_256);
+ BIND_ENUM_CONSTANT(TEXTURE_SIZE_512);
+ BIND_ENUM_CONSTANT(TEXTURE_SIZE_1024);
+ BIND_ENUM_CONSTANT(TEXTURE_SIZE_2048);
+ BIND_ENUM_CONSTANT(TEXTURE_SIZE_4096);
+ BIND_ENUM_CONSTANT(TEXTURE_SIZE_MAX);
}
ProceduralSky::ProceduralSky() {
@@ -503,12 +550,20 @@ ProceduralSky::ProceduralSky() {
sun_energy = 16;
texture_size = TEXTURE_SIZE_1024;
+ sky_thread = NULL;
+ regen_queued = false;
+ first_time = true;
_queue_update();
}
ProceduralSky::~ProceduralSky() {
+ if (sky_thread) {
+ Thread::wait_to_finish(sky_thread);
+ memdelete(sky_thread);
+ sky_thread = NULL;
+ }
VS::get_singleton()->free(sky);
VS::get_singleton()->free(texture);
}
diff --git a/scene/resources/sky_box.h b/scene/resources/sky_box.h
index 8298d1b3c0..8934463b6f 100644
--- a/scene/resources/sky_box.h
+++ b/scene/resources/sky_box.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,8 +30,8 @@
#ifndef Sky_H
#define Sky_H
+#include "os/thread.h"
#include "scene/resources/texture.h"
-
class Sky : public Resource {
GDCLASS(Sky, Resource);
@@ -97,6 +97,7 @@ public:
};
private:
+ Thread *sky_thread;
Color sky_top_color;
Color sky_horizon_color;
float sky_curve;
@@ -121,12 +122,20 @@ private:
RID texture;
bool update_queued;
+ bool regen_queued;
+
+ bool first_time;
+
+ void _thread_done(const Ref<Image> &p_image);
+ static void _thread_function(void *p_ud);
protected:
static void _bind_methods();
virtual void _radiance_changed();
+ Ref<Image> _generate_sky();
void _update_sky();
+
void _queue_update();
public:
diff --git a/scene/resources/space_2d.cpp b/scene/resources/space_2d.cpp
index 2a618bb868..4177364de7 100644
--- a/scene/resources/space_2d.cpp
+++ b/scene/resources/space_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/space_2d.h b/scene/resources/space_2d.h
index 3e08612d99..8ba392f85d 100644
--- a/scene/resources/space_2d.h
+++ b/scene/resources/space_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/sphere_shape.cpp b/scene/resources/sphere_shape.cpp
index 960554562f..00203c2b4b 100644
--- a/scene/resources/sphere_shape.cpp
+++ b/scene/resources/sphere_shape.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/sphere_shape.h b/scene/resources/sphere_shape.h
index a3b5d2424b..43d7956246 100644
--- a/scene/resources/sphere_shape.h
+++ b/scene/resources/sphere_shape.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp
index bdb17c0ea5..f646e3667d 100644
--- a/scene/resources/style_box.cpp
+++ b/scene/resources/style_box.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "style_box.h"
+#include <limits.h>
bool StyleBox::test_mask(const Point2 &p_point, const Rect2 &p_rect) const {
@@ -161,7 +162,7 @@ void StyleBoxTexture::draw(RID p_canvas_item, const Rect2 &p_rect) const {
if (normal_map.is_valid())
normal_rid = normal_map->get_rid();
- VisualServer::get_singleton()->canvas_item_add_nine_patch(p_canvas_item, rect, src_rect, texture->get_rid(), Vector2(margin[MARGIN_LEFT], margin[MARGIN_TOP]), Vector2(margin[MARGIN_RIGHT], margin[MARGIN_BOTTOM]), VS::NINE_PATCH_STRETCH, VS::NINE_PATCH_STRETCH, draw_center, modulate, normal_rid);
+ VisualServer::get_singleton()->canvas_item_add_nine_patch(p_canvas_item, rect, src_rect, texture->get_rid(), Vector2(margin[MARGIN_LEFT], margin[MARGIN_TOP]), Vector2(margin[MARGIN_RIGHT], margin[MARGIN_BOTTOM]), VS::NinePatchAxisMode(axis_h), VS::NinePatchAxisMode(axis_v), draw_center, modulate, normal_rid);
}
void StyleBoxTexture::set_draw_center(bool p_draw) {
@@ -190,6 +191,22 @@ void StyleBoxTexture::set_expand_margin_size(Margin p_expand_margin, float p_siz
emit_changed();
}
+void StyleBoxTexture::set_expand_margin_size_individual(float p_left, float p_top, float p_right, float p_bottom) {
+ expand_margin[MARGIN_LEFT] = p_left;
+ expand_margin[MARGIN_TOP] = p_top;
+ expand_margin[MARGIN_RIGHT] = p_right;
+ expand_margin[MARGIN_BOTTOM] = p_bottom;
+ emit_changed();
+}
+
+void StyleBoxTexture::set_expand_margin_size_all(float p_expand_margin_size) {
+ for (int i = 0; i < 4; i++) {
+
+ expand_margin[i] = p_expand_margin_size;
+ }
+ emit_changed();
+}
+
float StyleBoxTexture::get_expand_margin_size(Margin p_expand_margin) const {
ERR_FAIL_INDEX_V(p_expand_margin, 4, 0);
@@ -210,6 +227,28 @@ Rect2 StyleBoxTexture::get_region_rect() const {
return region_rect;
}
+void StyleBoxTexture::set_h_axis_stretch_mode(AxisStretchMode p_mode) {
+
+ axis_h = p_mode;
+ emit_changed();
+}
+
+StyleBoxTexture::AxisStretchMode StyleBoxTexture::get_h_axis_stretch_mode() const {
+
+ return axis_h;
+}
+
+void StyleBoxTexture::set_v_axis_stretch_mode(AxisStretchMode p_mode) {
+
+ axis_v = p_mode;
+ emit_changed();
+}
+
+StyleBoxTexture::AxisStretchMode StyleBoxTexture::get_v_axis_stretch_mode() const {
+
+ return axis_v;
+}
+
void StyleBoxTexture::set_modulate(const Color &p_modulate) {
if (modulate == p_modulate)
return;
@@ -234,6 +273,8 @@ void StyleBoxTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_margin_size", "margin"), &StyleBoxTexture::get_margin_size);
ClassDB::bind_method(D_METHOD("set_expand_margin_size", "margin", "size"), &StyleBoxTexture::set_expand_margin_size);
+ ClassDB::bind_method(D_METHOD("set_expand_margin_all", "size"), &StyleBoxTexture::set_expand_margin_size_all);
+ ClassDB::bind_method(D_METHOD("set_expand_margin_individual", "size_left", "size_top", "size_right", "size_bottom"), &StyleBoxTexture::set_expand_margin_size_individual);
ClassDB::bind_method(D_METHOD("get_expand_margin_size", "margin"), &StyleBoxTexture::get_expand_margin_size);
ClassDB::bind_method(D_METHOD("set_region_rect", "region"), &StyleBoxTexture::set_region_rect);
@@ -245,6 +286,12 @@ void StyleBoxTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_modulate", "color"), &StyleBoxTexture::set_modulate);
ClassDB::bind_method(D_METHOD("get_modulate"), &StyleBoxTexture::get_modulate);
+ ClassDB::bind_method(D_METHOD("set_h_axis_stretch_mode", "mode"), &StyleBoxTexture::set_h_axis_stretch_mode);
+ ClassDB::bind_method(D_METHOD("get_h_axis_stretch_mode"), &StyleBoxTexture::get_h_axis_stretch_mode);
+
+ ClassDB::bind_method(D_METHOD("set_v_axis_stretch_mode", "mode"), &StyleBoxTexture::set_v_axis_stretch_mode);
+ ClassDB::bind_method(D_METHOD("get_v_axis_stretch_mode"), &StyleBoxTexture::get_v_axis_stretch_mode);
+
ADD_SIGNAL(MethodInfo("texture_changed"));
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture");
@@ -260,9 +307,16 @@ void StyleBoxTexture::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_RIGHT);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_TOP);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin_size", "get_expand_margin_size", MARGIN_BOTTOM);
+ ADD_GROUP("Axis Stretch", "axis_stretch_");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "axis_stretch_horizontal", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_h_axis_stretch_mode", "get_h_axis_stretch_mode");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "axis_stretch_vertical", PROPERTY_HINT_ENUM, "Stretch,Tile,Tile Fit"), "set_v_axis_stretch_mode", "get_v_axis_stretch_mode");
ADD_GROUP("Modulate", "modulate_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "modulate_color"), "set_modulate", "get_modulate");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_center"), "set_draw_center", "get_draw_center");
+
+ BIND_ENUM_CONSTANT(AXIS_STRETCH_MODE_STRETCH);
+ BIND_ENUM_CONSTANT(AXIS_STRETCH_MODE_TILE);
+ BIND_ENUM_CONSTANT(AXIS_STRETCH_MODE_TILE_FIT);
}
StyleBoxTexture::StyleBoxTexture() {
@@ -273,6 +327,9 @@ StyleBoxTexture::StyleBoxTexture() {
}
draw_center = true;
modulate = Color(1, 1, 1, 1);
+
+ axis_h = AXIS_STRETCH_MODE_STRETCH;
+ axis_v = AXIS_STRETCH_MODE_STRETCH;
}
StyleBoxTexture::~StyleBoxTexture() {
}
@@ -285,156 +342,528 @@ void StyleBoxFlat::set_bg_color(const Color &p_color) {
emit_changed();
}
-void StyleBoxFlat::set_light_color(const Color &p_color) {
+Color StyleBoxFlat::get_bg_color() const {
+
+ return bg_color;
+}
+
+void StyleBoxFlat::set_border_color_all(const Color &p_color) {
+ for (int i = 0; i < 4; i++) {
- light_color = p_color;
+ border_color.write()[i] = p_color;
+ }
emit_changed();
}
-void StyleBoxFlat::set_dark_color(const Color &p_color) {
+Color StyleBoxFlat::get_border_color_all() const {
+
+ return border_color[MARGIN_TOP];
+}
+void StyleBoxFlat::set_border_color(Margin p_border, const Color &p_color) {
- dark_color = p_color;
+ border_color.write()[p_border] = p_color;
emit_changed();
}
+Color StyleBoxFlat::get_border_color(Margin p_border) const {
-Color StyleBoxFlat::get_bg_color() const {
+ return border_color[p_border];
+}
- return bg_color;
+void StyleBoxFlat::set_border_width_all(int p_size) {
+ border_width[0] = p_size;
+ border_width[1] = p_size;
+ border_width[2] = p_size;
+ border_width[3] = p_size;
+ emit_changed();
}
-Color StyleBoxFlat::get_light_color() const {
+int StyleBoxFlat::get_border_width_min() const {
- return light_color;
+ return MIN(MIN(border_width[0], border_width[1]), MIN(border_width[2], border_width[3]));
}
-Color StyleBoxFlat::get_dark_color() const {
- return dark_color;
+void StyleBoxFlat::set_border_width(Margin p_margin, int p_width) {
+ border_width[p_margin] = p_width;
+ emit_changed();
}
-void StyleBoxFlat::set_border_size(int p_size) {
+int StyleBoxFlat::get_border_width(Margin p_margin) const {
+ return border_width[p_margin];
+}
- border_size = p_size;
+void StyleBoxFlat::set_border_blend(bool p_blend) {
+
+ blend_border = p_blend;
emit_changed();
}
-int StyleBoxFlat::get_border_size() const {
+bool StyleBoxFlat::get_border_blend() const {
- return border_size;
+ return blend_border;
}
-void StyleBoxFlat::_set_additional_border_size(Margin p_margin, int p_size) {
- additional_border_size[p_margin] = p_size;
+void StyleBoxFlat::set_corner_radius_all(int radius) {
+
+ for (int i = 0; i < 4; i++) {
+ corner_radius[i] = radius;
+ }
+
emit_changed();
}
+void StyleBoxFlat::set_corner_radius_individual(const int radius_top_left, const int radius_top_right, const int radius_botton_right, const int radius_bottom_left) {
+ corner_radius[0] = radius_top_left;
+ corner_radius[1] = radius_top_right;
+ corner_radius[2] = radius_botton_right;
+ corner_radius[3] = radius_bottom_left;
-int StyleBoxFlat::_get_additional_border_size(Margin p_margin) const {
- return additional_border_size[p_margin];
+ emit_changed();
+}
+int StyleBoxFlat::get_corner_radius_min() const {
+ int smallest = corner_radius[0];
+ for (int i = 1; i < 4; i++) {
+ if (smallest > corner_radius[i]) {
+ smallest = corner_radius[i];
+ }
+ }
+ return smallest;
}
-void StyleBoxFlat::set_border_blend(bool p_blend) {
+void StyleBoxFlat::set_corner_radius(const Corner p_corner, const int radius) {
- blend = p_blend;
+ corner_radius[p_corner] = radius;
emit_changed();
}
+int StyleBoxFlat::get_corner_radius(const Corner p_corner) const {
+ return corner_radius[p_corner];
+}
-bool StyleBoxFlat::get_border_blend() const {
+void StyleBoxFlat::set_expand_margin_size(Margin p_expand_margin, float p_size) {
- return blend;
+ expand_margin[p_expand_margin] = p_size;
+ emit_changed();
}
-void StyleBoxFlat::set_draw_center(bool p_draw) {
+void StyleBoxFlat::set_expand_margin_size_individual(float p_left, float p_top, float p_right, float p_bottom) {
+ expand_margin[MARGIN_LEFT] = p_left;
+ expand_margin[MARGIN_TOP] = p_top;
+ expand_margin[MARGIN_RIGHT] = p_right;
+ expand_margin[MARGIN_BOTTOM] = p_bottom;
+ emit_changed();
+}
- draw_center = p_draw;
+void StyleBoxFlat::set_expand_margin_size_all(float p_expand_margin_size) {
+ for (int i = 0; i < 4; i++) {
+
+ expand_margin[i] = p_expand_margin_size;
+ }
emit_changed();
}
-bool StyleBoxFlat::get_draw_center() const {
- return draw_center;
+float StyleBoxFlat::get_expand_margin_size(Margin p_expand_margin) const {
+
+ return expand_margin[p_expand_margin];
+}
+void StyleBoxFlat::set_filled(bool p_filled) {
+
+ filled = p_filled;
+ emit_changed();
+}
+bool StyleBoxFlat::is_filled() const {
+
+ return filled;
+}
+
+void StyleBoxFlat::set_shadow_color(const Color &p_color) {
+
+ shadow_color = p_color;
+ emit_changed();
+}
+Color StyleBoxFlat::get_shadow_color() const {
+
+ return shadow_color;
+}
+
+void StyleBoxFlat::set_shadow_size(const int &p_size) {
+
+ shadow_size = p_size;
+ emit_changed();
+}
+int StyleBoxFlat::get_shadow_size() const {
+
+ return shadow_size;
+}
+
+void StyleBoxFlat::set_anti_aliased(const bool &p_anti_aliased) {
+ anti_aliased = p_anti_aliased;
+ emit_changed();
+}
+bool StyleBoxFlat::is_anti_aliased() const {
+ return anti_aliased;
+}
+
+void StyleBoxFlat::set_aa_size(const int &p_aa_size) {
+ aa_size = CLAMP(p_aa_size, 1, 5);
+ emit_changed();
+}
+int StyleBoxFlat::get_aa_size() const {
+ return aa_size;
+}
+
+void StyleBoxFlat::set_corner_detail(const int &p_corner_detail) {
+ corner_detail = CLAMP(p_corner_detail, 1, 128);
+ emit_changed();
+}
+int StyleBoxFlat::get_corner_detail() const {
+ return corner_detail;
}
+
Size2 StyleBoxFlat::get_center_size() const {
return Size2();
}
-void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const {
+inline void set_inner_corner_radius(const Rect2 style_rect, const Rect2 inner_rect, const int corner_radius[4], int *inner_corner_radius) {
+ int border_left = inner_rect.position.x - style_rect.position.x;
+ int border_top = inner_rect.position.y - style_rect.position.y;
+ int border_right = style_rect.size.width - inner_rect.size.width - border_left;
+ int border_bottom = style_rect.size.height - inner_rect.size.height - border_top;
- VisualServer *vs = VisualServer::get_singleton();
- Rect2i r = p_rect;
+ int rad;
+ //tl
+ rad = MIN(border_top, border_left);
+ inner_corner_radius[0] = MAX(corner_radius[0] - rad, 0);
+
+ //tr
+ rad = MIN(border_top, border_bottom);
+ inner_corner_radius[1] = MAX(corner_radius[1] - rad, 0);
+
+ //br
+ rad = MIN(border_bottom, border_right);
+ inner_corner_radius[2] = MAX(corner_radius[2] - rad, 0);
+
+ //bl
+ rad = MIN(border_bottom, border_left);
+ inner_corner_radius[3] = MAX(corner_radius[3] - rad, 0);
+}
- for (int i = 0; i < border_size; i++) {
+inline void draw_ring(Vector<Vector2> &verts, Vector<int> &indices, Vector<Color> &colors, const Rect2 style_rect, const int corner_radius[4],
+ const Rect2 ring_rect, const int border_width[4], const Color inner_color[4], const Color outer_color[4], const int corner_detail) {
- Color color_upleft = light_color;
- Color color_downright = dark_color;
+ int vert_offset = verts.size();
+ if (!vert_offset) {
+ vert_offset = 0;
+ }
+ int adapted_corner_detail = (corner_radius[0] == 0 && corner_radius[1] == 0 && corner_radius[2] == 0 && corner_radius[3] == 0) ? 1 : corner_detail;
+ int rings = (border_width[0] == 0 && border_width[1] == 0 && border_width[2] == 0 && border_width[3] == 0) ? 1 : 2;
+ rings = 2;
+
+ int ring_corner_radius[4];
+ set_inner_corner_radius(style_rect, ring_rect, corner_radius, ring_corner_radius);
+
+ //corner radius center points
+ Vector<Point2> outer_points;
+ outer_points.push_back(ring_rect.position + Vector2(ring_corner_radius[0], ring_corner_radius[0])); //tl
+ outer_points.push_back(Point2(ring_rect.position.x + ring_rect.size.x - ring_corner_radius[1], ring_rect.position.y + ring_corner_radius[1])); //tr
+ outer_points.push_back(ring_rect.position + ring_rect.size - Vector2(ring_corner_radius[2], ring_corner_radius[2])); //br
+ outer_points.push_back(Point2(ring_rect.position.x + ring_corner_radius[3], ring_rect.position.y + ring_rect.size.y - ring_corner_radius[3])); //bl
+
+ Rect2 inner_rect;
+ inner_rect = ring_rect.grow_individual(-border_width[MARGIN_LEFT], -border_width[MARGIN_TOP], -border_width[MARGIN_RIGHT], -border_width[MARGIN_BOTTOM]);
+ int inner_corner_radius[4];
+
+ Vector<Point2> inner_points;
+ set_inner_corner_radius(style_rect, inner_rect, corner_radius, inner_corner_radius);
+ inner_points.push_back(inner_rect.position + Vector2(inner_corner_radius[0], inner_corner_radius[0])); //tl
+ inner_points.push_back(Point2(inner_rect.position.x + inner_rect.size.x - inner_corner_radius[1], inner_rect.position.y + inner_corner_radius[1])); //tr
+ inner_points.push_back(inner_rect.position + inner_rect.size - Vector2(inner_corner_radius[2], inner_corner_radius[2])); //br
+ inner_points.push_back(Point2(inner_rect.position.x + inner_corner_radius[3], inner_rect.position.y + inner_rect.size.y - inner_corner_radius[3])); //bl
+
+ //calculate the vert array
+ for (int corner_index = 0; corner_index < 4; corner_index++) {
+ for (int detail = 0; detail <= adapted_corner_detail; detail++) {
+ for (int inner_outer = (2 - rings); inner_outer < 2; inner_outer++) {
+ float radius;
+ Color color;
+ Point2 corner_point;
+ if (inner_outer == 0) {
+ radius = inner_corner_radius[corner_index];
+ color = *inner_color;
+ corner_point = inner_points[corner_index];
+ } else {
+ radius = ring_corner_radius[corner_index];
+ color = *outer_color;
+ corner_point = outer_points[corner_index];
+ }
+ float x = radius * (float)cos((double)corner_index * Math_PI / 2.0 + (double)detail / (double)adapted_corner_detail * Math_PI / 2.0 + Math_PI) + corner_point.x;
+ float y = radius * (float)sin((double)corner_index * Math_PI / 2.0 + (double)detail / (double)adapted_corner_detail * Math_PI / 2.0 + Math_PI) + corner_point.y;
+ verts.push_back(Vector2(x, y));
+ colors.push_back(color);
+ }
+ }
+ }
+
+ if (rings == 2) {
+ int vert_count = (adapted_corner_detail + 1) * 4 * rings;
+ //fill the indices and the colors for the border
+ for (int i = 0; i < vert_count; i++) {
+ //poly 1
+ indices.push_back(vert_offset + ((i + 0) % vert_count));
+ indices.push_back(vert_offset + ((i + 2) % vert_count));
+ indices.push_back(vert_offset + ((i + 1) % vert_count));
+ //poly 2
+ indices.push_back(vert_offset + ((i + 1) % vert_count));
+ indices.push_back(vert_offset + ((i + 2) % vert_count));
+ indices.push_back(vert_offset + ((i + 3) % vert_count));
+ }
+ }
+}
- if (blend) {
+inline void adapt_values(int p_index_a, int p_index_b, int *adapted_values, const int *p_values, const real_t p_width, const int p_max_a, const int p_max_b) {
+ if (p_values[p_index_a] + p_values[p_index_b] > p_width) {
+ float factor;
+ int newValue;
- color_upleft.r = (border_size - i) * color_upleft.r / border_size + i * bg_color.r / border_size;
- color_upleft.g = (border_size - i) * color_upleft.g / border_size + i * bg_color.g / border_size;
- color_upleft.b = (border_size - i) * color_upleft.b / border_size + i * bg_color.b / border_size;
+ factor = (float)p_width / (float)(p_values[p_index_a] + p_values[p_index_b]);
- color_downright.r = (border_size - i) * color_downright.r / border_size + i * bg_color.r / border_size;
- color_downright.g = (border_size - i) * color_downright.g / border_size + i * bg_color.g / border_size;
- color_downright.b = (border_size - i) * color_downright.b / border_size + i * bg_color.b / border_size;
+ newValue = (int)(p_values[p_index_a] * factor);
+ if (newValue < adapted_values[p_index_a]) {
+ adapted_values[p_index_a] = newValue;
+ }
+ newValue = (int)(p_values[p_index_b] * factor);
+ if (newValue < adapted_values[p_index_b]) {
+ adapted_values[p_index_b] = newValue;
}
+ } else {
+ adapted_values[p_index_a] = MIN(p_values[p_index_a], adapted_values[p_index_a]);
+ adapted_values[p_index_b] = MIN(p_values[p_index_b], adapted_values[p_index_b]);
+ }
+ adapted_values[p_index_a] = MIN(p_max_a, adapted_values[p_index_a]);
+ adapted_values[p_index_b] = MIN(p_max_b, adapted_values[p_index_b]);
+}
+void StyleBoxFlat::draw(RID p_canvas_item, const Rect2 &p_rect) const {
- vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r.position.x, r.position.y + r.size.y - 1), Size2(r.size.x, 1)), color_downright);
- vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r.position.x + r.size.x - 1, r.position.y), Size2(1, r.size.y)), color_downright);
+ //PREPARATIONS
- vs->canvas_item_add_rect(p_canvas_item, Rect2(r.position, Size2(r.size.x, 1)), color_upleft);
- vs->canvas_item_add_rect(p_canvas_item, Rect2(r.position, Size2(1, r.size.y)), color_upleft);
+ bool rounded_corners = (corner_radius[0] > 0) || (corner_radius[1] > 0) || (corner_radius[2] > 0) || (corner_radius[3] > 0);
+ bool aa_on = rounded_corners && anti_aliased;
- r.position.x++;
- r.position.y++;
- r.size.x -= 2;
- r.size.y -= 2;
+ Rect2 style_rect = p_rect.grow_individual(expand_margin[MARGIN_LEFT], expand_margin[MARGIN_TOP], expand_margin[MARGIN_RIGHT], expand_margin[MARGIN_BOTTOM]);
+ if (aa_on) {
+ style_rect = style_rect.grow(-((aa_size + 1) / 2));
}
- if (draw_center)
- vs->canvas_item_add_rect(p_canvas_item, Rect2(r.position, r.size), bg_color);
+ //adapt borders (prevent weired overlapping/glitchy drawings)
+ int width = style_rect.size.width;
+ int height = style_rect.size.height;
+ int adapted_border[4] = { INT_MAX, INT_MAX, INT_MAX, INT_MAX };
+ adapt_values(MARGIN_TOP, MARGIN_BOTTOM, adapted_border, border_width, height, height, height);
+ adapt_values(MARGIN_LEFT, MARGIN_RIGHT, adapted_border, border_width, width, width, width);
+
+ //adapt corners (prevent weired overlapping/glitchy drawings)
+ int adapted_corner[4] = { INT_MAX, INT_MAX, INT_MAX, INT_MAX };
+ adapt_values(CORNER_TOP_RIGHT, CORNER_BOTTOM_RIGHT, adapted_corner, corner_radius, height, height - adapted_border[MARGIN_BOTTOM], height - adapted_border[MARGIN_TOP]);
+ adapt_values(CORNER_TOP_LEFT, CORNER_BOTTOM_LEFT, adapted_corner, corner_radius, height, height - adapted_border[MARGIN_BOTTOM], height - adapted_border[MARGIN_TOP]);
+ adapt_values(CORNER_TOP_LEFT, CORNER_TOP_RIGHT, adapted_corner, corner_radius, width, width - adapted_border[MARGIN_RIGHT], width - adapted_border[MARGIN_LEFT]);
+ adapt_values(CORNER_BOTTOM_LEFT, CORNER_BOTTOM_RIGHT, adapted_corner, corner_radius, width, width - adapted_border[MARGIN_RIGHT], width - adapted_border[MARGIN_LEFT]);
+
+ Rect2 infill_rect = style_rect.grow_individual(-adapted_border[MARGIN_LEFT], -adapted_border[MARGIN_TOP], -adapted_border[MARGIN_RIGHT], -adapted_border[MARGIN_BOTTOM]);
+
+ Vector<Point2> verts;
+ Vector<int> indices;
+ Vector<Color> colors;
- Rect2i r_add = p_rect;
- vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.position.x - additional_border_size[MARGIN_LEFT], r_add.position.y - additional_border_size[MARGIN_TOP]), Size2(r_add.size.width + additional_border_size[MARGIN_LEFT] + additional_border_size[MARGIN_RIGHT], additional_border_size[MARGIN_TOP])), light_color);
- vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.position.x - additional_border_size[MARGIN_LEFT], r_add.position.y), Size2(additional_border_size[MARGIN_LEFT], r_add.size.height)), light_color);
- vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.position.x + r_add.size.width, r_add.position.y), Size2(additional_border_size[MARGIN_RIGHT], r_add.size.height)), dark_color);
- vs->canvas_item_add_rect(p_canvas_item, Rect2(Point2i(r_add.position.x - additional_border_size[MARGIN_LEFT], r_add.position.y + r_add.size.height), Size2(r_add.size.width + additional_border_size[MARGIN_LEFT] + additional_border_size[MARGIN_RIGHT], additional_border_size[MARGIN_BOTTOM])), dark_color);
+ //DRAWING
+ VisualServer *vs = VisualServer::get_singleton();
+
+ //DRAW SHADOW
+ if (shadow_size > 0) {
+ int shadow_width[4] = { shadow_size, shadow_size, shadow_size, shadow_size };
+ Color shadow_colors[4] = { shadow_color, shadow_color, shadow_color, shadow_color };
+ Color shadow_colors_transparent[4];
+ for (int i = 0; i < 4; i++) {
+ shadow_colors_transparent[i] = Color(shadow_color.r, shadow_color.g, shadow_color.b, 0);
+ }
+ draw_ring(verts, indices, colors, style_rect, adapted_corner,
+ style_rect.grow(shadow_size), shadow_width, shadow_colors, shadow_colors_transparent, corner_detail);
+ }
+
+ //DRAW border
+ Color bg_color_array[4] = { bg_color, bg_color, bg_color, bg_color };
+ const Color *inner_color = ((blend_border) ? bg_color_array : border_color.read().ptr());
+ draw_ring(verts, indices, colors, style_rect, adapted_corner,
+ style_rect, adapted_border, inner_color, border_color.read().ptr(), corner_detail);
+
+ //DRAW INFILL
+ if (filled) {
+ int temp_vert_offset = verts.size();
+ int no_border[4] = { 0, 0, 0, 0 };
+ draw_ring(verts, indices, colors, style_rect, adapted_corner,
+ infill_rect, no_border, &bg_color, &bg_color, corner_detail);
+ int added_vert_count = verts.size() - temp_vert_offset;
+ //fill the indices and the colors for the center
+ for (int index = 0; index <= added_vert_count / 2; index += 2) {
+ int i = index;
+ //poly 1
+ indices.push_back(temp_vert_offset + i);
+ indices.push_back(temp_vert_offset + added_vert_count - 4 - i);
+ indices.push_back(temp_vert_offset + i + 2);
+ //poly 1
+ indices.push_back(temp_vert_offset + i);
+ indices.push_back(temp_vert_offset + added_vert_count - 2 - i);
+ indices.push_back(temp_vert_offset + added_vert_count - 4 - i);
+ }
+ }
+
+ if (aa_on) {
+
+ //HELPER ARRAYS
+ Color border_color_alpha[4];
+ for (int i = 0; i < 4; i++) {
+ Color c = border_color.read().ptr()[i];
+ border_color_alpha[i] = Color(c.r, c.g, c.b, 0);
+ }
+ Color alpha_bg = Color(bg_color.r, bg_color.g, bg_color.b, 0);
+ Color bg_color_array_alpha[4] = { alpha_bg, alpha_bg, alpha_bg, alpha_bg };
+
+ int aa_border_width[4] = { aa_size, aa_size, aa_size, aa_size };
+
+ if (filled) {
+ if (!blend_border) {
+ //INFILL AA
+ draw_ring(verts, indices, colors, style_rect, adapted_corner,
+ infill_rect.grow(aa_size), aa_border_width, bg_color_array, bg_color_array_alpha, corner_detail);
+ }
+ } else if (!(border_width[0] == 0 && border_width[1] == 0 && border_width[2] == 0 && border_width[3] == 0)) {
+ //DRAW INNER BORDER AA
+ draw_ring(verts, indices, colors, style_rect, adapted_corner,
+ infill_rect, aa_border_width, border_color_alpha, border_color.read().ptr(), corner_detail);
+ }
+ //DRAW OUTER BORDER AA
+ if (!(border_width[0] == 0 && border_width[1] == 0 && border_width[2] == 0 && border_width[3] == 0)) {
+ draw_ring(verts, indices, colors, style_rect, adapted_corner,
+ style_rect.grow(aa_size), aa_border_width, border_color.read().ptr(), border_color_alpha, corner_detail);
+ }
+ }
+
+ vs->canvas_item_add_triangle_array(p_canvas_item, indices, verts, colors);
}
float StyleBoxFlat::get_style_margin(Margin p_margin) const {
-
- return border_size;
+ return border_width[p_margin];
}
void StyleBoxFlat::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_bg_color", "color"), &StyleBoxFlat::set_bg_color);
ClassDB::bind_method(D_METHOD("get_bg_color"), &StyleBoxFlat::get_bg_color);
- ClassDB::bind_method(D_METHOD("set_light_color", "color"), &StyleBoxFlat::set_light_color);
- ClassDB::bind_method(D_METHOD("get_light_color"), &StyleBoxFlat::get_light_color);
- ClassDB::bind_method(D_METHOD("set_dark_color", "color"), &StyleBoxFlat::set_dark_color);
- ClassDB::bind_method(D_METHOD("get_dark_color"), &StyleBoxFlat::get_dark_color);
- ClassDB::bind_method(D_METHOD("set_border_size", "size"), &StyleBoxFlat::set_border_size);
- ClassDB::bind_method(D_METHOD("get_border_size"), &StyleBoxFlat::get_border_size);
+
+ ClassDB::bind_method(D_METHOD("set_border_color", "color"), &StyleBoxFlat::set_border_color_all);
+ ClassDB::bind_method(D_METHOD("get_border_color"), &StyleBoxFlat::get_border_color_all);
+
+ ClassDB::bind_method(D_METHOD("set_border_width_all", "width"), &StyleBoxFlat::set_border_width_all);
+ ClassDB::bind_method(D_METHOD("get_border_width_min"), &StyleBoxFlat::get_border_width_min);
+
+ ClassDB::bind_method(D_METHOD("set_border_width", "margin", "width"), &StyleBoxFlat::set_border_width);
+ ClassDB::bind_method(D_METHOD("get_border_width", "margin"), &StyleBoxFlat::get_border_width);
+
ClassDB::bind_method(D_METHOD("set_border_blend", "blend"), &StyleBoxFlat::set_border_blend);
ClassDB::bind_method(D_METHOD("get_border_blend"), &StyleBoxFlat::get_border_blend);
- ClassDB::bind_method(D_METHOD("set_draw_center", "size"), &StyleBoxFlat::set_draw_center);
- ClassDB::bind_method(D_METHOD("get_draw_center"), &StyleBoxFlat::get_draw_center);
+
+ ClassDB::bind_method(D_METHOD("set_corner_radius_individual", "radius_top_left", "radius_top_right", "radius_botton_right", "radius_bottom_left"), &StyleBoxFlat::set_corner_radius_individual);
+ ClassDB::bind_method(D_METHOD("set_corner_radius_all", "radius"), &StyleBoxFlat::set_corner_radius_all);
+
+ ClassDB::bind_method(D_METHOD("set_corner_radius", "corner", "radius"), &StyleBoxFlat::set_corner_radius);
+ ClassDB::bind_method(D_METHOD("get_corner_radius", "corner"), &StyleBoxFlat::get_corner_radius);
+
+ ClassDB::bind_method(D_METHOD("set_expand_margin", "margin", "size"), &StyleBoxFlat::set_expand_margin_size);
+ ClassDB::bind_method(D_METHOD("set_expand_margin_all", "size"), &StyleBoxFlat::set_expand_margin_size_all);
+ ClassDB::bind_method(D_METHOD("set_expand_margin_individual", "size_left", "size_top", "size_right", "size_bottom"), &StyleBoxFlat::set_expand_margin_size_individual);
+ ClassDB::bind_method(D_METHOD("get_expand_margin", "margin"), &StyleBoxFlat::get_expand_margin_size);
+
+ ClassDB::bind_method(D_METHOD("set_filled", "filled"), &StyleBoxFlat::set_filled);
+ ClassDB::bind_method(D_METHOD("is_filled"), &StyleBoxFlat::is_filled);
+
+ ClassDB::bind_method(D_METHOD("set_shadow_color", "color"), &StyleBoxFlat::set_shadow_color);
+ ClassDB::bind_method(D_METHOD("get_shadow_color"), &StyleBoxFlat::get_shadow_color);
+
+ ClassDB::bind_method(D_METHOD("set_shadow_size", "size"), &StyleBoxFlat::set_shadow_size);
+ ClassDB::bind_method(D_METHOD("get_shadow_size"), &StyleBoxFlat::get_shadow_size);
+
+ ClassDB::bind_method(D_METHOD("set_anti_aliased", "anti_aliased"), &StyleBoxFlat::set_anti_aliased);
+ ClassDB::bind_method(D_METHOD("is_anti_aliased"), &StyleBoxFlat::is_anti_aliased);
+
+ ClassDB::bind_method(D_METHOD("set_aa_size", "size"), &StyleBoxFlat::set_aa_size);
+ ClassDB::bind_method(D_METHOD("get_aa_size"), &StyleBoxFlat::get_aa_size);
+
+ ClassDB::bind_method(D_METHOD("set_corner_detail", "detail"), &StyleBoxFlat::set_corner_detail);
+ ClassDB::bind_method(D_METHOD("get_corner_detail"), &StyleBoxFlat::get_corner_detail);
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "bg_color"), "set_bg_color", "get_bg_color");
- ADD_PROPERTY(PropertyInfo(Variant::COLOR, "light_color"), "set_light_color", "get_light_color");
- ADD_PROPERTY(PropertyInfo(Variant::COLOR, "dark_color"), "set_dark_color", "get_dark_color");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "border_size", PROPERTY_HINT_RANGE, "0,4096"), "set_border_size", "get_border_size");
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "filled"), "set_filled", "is_filled");
+
+ ADD_GROUP("Border Width", "border_width_");
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_left", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", MARGIN_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_top", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", MARGIN_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_right", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", MARGIN_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "border_width_bottom", PROPERTY_HINT_RANGE, "0,1024,1"), "set_border_width", "get_border_width", MARGIN_BOTTOM);
+
+ ADD_GROUP("Border", "border_");
+ ADD_PROPERTY(PropertyInfo(Variant::COLOR, "border_color"), "set_border_color", "get_border_color");
+
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "border_blend"), "set_border_blend", "get_border_blend");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_bg"), "set_draw_center", "get_draw_center");
+
+ ADD_GROUP("Corner Radius", "corner_radius_");
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_top_left", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_TOP_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_top_right", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_TOP_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_right", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "corner_radius_bottom_left", PROPERTY_HINT_RANGE, "0,1024,1"), "set_corner_radius", "get_corner_radius", CORNER_BOTTOM_LEFT);
+
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "corner_detail", PROPERTY_HINT_RANGE, "1,128,1"), "set_corner_detail", "get_corner_detail");
+
+ ADD_GROUP("Expand Margin", "expand_margin_");
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_left", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", MARGIN_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_right", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", MARGIN_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_top", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", MARGIN_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::REAL, "expand_margin_bottom", PROPERTY_HINT_RANGE, "0,2048,1"), "set_expand_margin", "get_expand_margin", MARGIN_BOTTOM);
+
+ ADD_GROUP("Shadow", "shadow_");
+ ADD_PROPERTY(PropertyInfo(Variant::COLOR, "shadow_color"), "set_shadow_color", "get_shadow_color");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "shadow_size"), "set_shadow_size", "get_shadow_size");
+
+ ADD_GROUP("Anti Aliasing", "anti_aliasing_");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "anti_aliasing"), "set_anti_aliased", "is_anti_aliased");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "anti_aliasing_size", PROPERTY_HINT_RANGE, "1,5,1"), "set_aa_size", "get_aa_size");
}
StyleBoxFlat::StyleBoxFlat() {
bg_color = Color(0.6, 0.6, 0.6);
- light_color = Color(0.8, 0.8, 0.8);
- dark_color = Color(0.8, 0.8, 0.8);
- draw_center = true;
- blend = true;
- border_size = 0;
- additional_border_size[0] = 0;
- additional_border_size[1] = 0;
- additional_border_size[2] = 0;
- additional_border_size[3] = 0;
+ shadow_color = Color(0, 0, 0, 0.6);
+
+ border_color.append(Color(0.8, 0.8, 0.8));
+ border_color.append(Color(0.8, 0.8, 0.8));
+ border_color.append(Color(0.8, 0.8, 0.8));
+ border_color.append(Color(0.8, 0.8, 0.8));
+
+ blend_border = false;
+ filled = true;
+ anti_aliased = true;
+
+ shadow_size = 0;
+ corner_detail = 8;
+ aa_size = 1;
+
+ border_width[0] = 0;
+ border_width[1] = 0;
+ border_width[2] = 0;
+ border_width[3] = 0;
+
+ expand_margin[0] = 0;
+ expand_margin[1] = 0;
+ expand_margin[2] = 0;
+ expand_margin[3] = 0;
+
+ corner_radius[0] = 0;
+ corner_radius[1] = 0;
+ corner_radius[2] = 0;
+ corner_radius[3] = 0;
}
StyleBoxFlat::~StyleBoxFlat() {
}
diff --git a/scene/resources/style_box.h b/scene/resources/style_box.h
index 64ce3528aa..db41333b7e 100644
--- a/scene/resources/style_box.h
+++ b/scene/resources/style_box.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -77,6 +77,14 @@ class StyleBoxTexture : public StyleBox {
GDCLASS(StyleBoxTexture, StyleBox);
+public:
+ enum AxisStretchMode {
+ AXIS_STRETCH_MODE_STRETCH,
+ AXIS_STRETCH_MODE_TILE,
+ AXIS_STRETCH_MODE_TILE_FIT,
+ };
+
+private:
float expand_margin[4];
float margin[4];
Rect2 region_rect;
@@ -84,6 +92,8 @@ class StyleBoxTexture : public StyleBox {
Ref<Texture> normal_map;
bool draw_center;
Color modulate;
+ AxisStretchMode axis_h;
+ AxisStretchMode axis_v;
protected:
virtual float get_style_margin(Margin p_margin) const;
@@ -91,6 +101,8 @@ protected:
public:
void set_expand_margin_size(Margin p_expand_margin, float p_size);
+ void set_expand_margin_size_all(float p_expand_margin_size);
+ void set_expand_margin_size_individual(float p_left, float p_top, float p_right, float p_bottom);
float get_expand_margin_size(Margin p_expand_margin) const;
void set_margin_size(Margin p_margin, float p_size);
@@ -109,6 +121,12 @@ public:
bool get_draw_center() const;
virtual Size2 get_center_size() const;
+ void set_h_axis_stretch_mode(AxisStretchMode p_mode);
+ AxisStretchMode get_h_axis_stretch_mode() const;
+
+ void set_v_axis_stretch_mode(AxisStretchMode p_mode);
+ AxisStretchMode get_v_axis_stretch_mode() const;
+
void set_modulate(const Color &p_modulate);
Color get_modulate() const;
@@ -118,44 +136,90 @@ public:
~StyleBoxTexture();
};
+VARIANT_ENUM_CAST(StyleBoxTexture::AxisStretchMode)
+
class StyleBoxFlat : public StyleBox {
GDCLASS(StyleBoxFlat, StyleBox);
Color bg_color;
- Color light_color;
- Color dark_color;
+ Color shadow_color;
+ PoolVector<Color> border_color;
- int border_size;
- int additional_border_size[4];
+ int border_width[4];
+ int expand_margin[4];
+ int corner_radius[4];
- bool draw_center;
- bool blend;
+ bool filled;
+ bool blend_border;
+ bool anti_aliased;
+
+ int corner_detail;
+ int shadow_size;
+ int aa_size;
protected:
virtual float get_style_margin(Margin p_margin) const;
static void _bind_methods();
public:
+ //Color
void set_bg_color(const Color &p_color);
- void set_light_color(const Color &p_color);
- void set_dark_color(const Color &p_color);
-
Color get_bg_color() const;
- Color get_light_color() const;
- Color get_dark_color() const;
- void set_border_size(int p_size);
- int get_border_size() const;
+ //Border Color
+ void set_border_color_all(const Color &p_color);
+ Color get_border_color_all() const;
+ void set_border_color(Margin p_border, const Color &p_color);
+ Color get_border_color(Margin p_border) const;
+
+ //BORDER
+ //width
+ void set_border_width_all(int p_size);
+ int get_border_width_min() const;
- void _set_additional_border_size(Margin p_margin, int p_size);
- int _get_additional_border_size(Margin p_margin) const;
+ void set_border_width(Margin p_margin, int p_size);
+ int get_border_width(Margin p_margin) const;
+ //blend
void set_border_blend(bool p_blend);
bool get_border_blend() const;
- void set_draw_center(bool p_draw);
- bool get_draw_center() const;
+ //CORNER
+ void set_corner_radius_all(int radius);
+ void set_corner_radius_individual(const int radius_top_left, const int radius_top_right, const int radius_botton_right, const int radius_bottom_left);
+ int get_corner_radius_min() const;
+
+ void set_corner_radius(Corner p_corner, const int radius);
+ int get_corner_radius(Corner p_corner) const;
+
+ void set_corner_detail(const int &p_corner_detail);
+ int get_corner_detail() const;
+
+ //EXPANDS
+ void set_expand_margin_size(Margin p_expand_margin, float p_size);
+ void set_expand_margin_size_all(float p_expand_margin_size);
+ void set_expand_margin_size_individual(float p_left, float p_top, float p_right, float p_bottom);
+ float get_expand_margin_size(Margin p_expand_margin) const;
+
+ //FILLED
+ void set_filled(bool p_draw);
+ bool is_filled() const;
+
+ //SHADOW
+ void set_shadow_color(const Color &p_color);
+ Color get_shadow_color() const;
+
+ void set_shadow_size(const int &p_size);
+ int get_shadow_size() const;
+
+ //ANTI_ALIASING
+ void set_anti_aliased(const bool &p_anit_aliasing);
+ bool is_anti_aliased() const;
+ //tempAA
+ void set_aa_size(const int &p_aa_size);
+ int get_aa_size() const;
+
virtual Size2 get_center_size() const;
virtual void draw(RID p_canvas_item, const Rect2 &p_rect) const;
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp
index a3c683f857..bf89e704bc 100644
--- a/scene/resources/surface_tool.cpp
+++ b/scene/resources/surface_tool.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,36 +33,36 @@
#define _VERTEX_SNAP 0.0001
#define EQ_VERTEX_DIST 0.00001
-bool SurfaceTool::Vertex::operator==(const Vertex &p_b) const {
+bool SurfaceTool::Vertex::operator==(const Vertex &p_vertex) const {
- if (vertex != p_b.vertex)
+ if (vertex != p_vertex.vertex)
return false;
- if (uv != p_b.uv)
+ if (uv != p_vertex.uv)
return false;
- if (uv2 != p_b.uv2)
+ if (uv2 != p_vertex.uv2)
return false;
- if (normal != p_b.normal)
+ if (normal != p_vertex.normal)
return false;
- if (binormal != p_b.binormal)
+ if (binormal != p_vertex.binormal)
return false;
- if (color != p_b.color)
+ if (color != p_vertex.color)
return false;
- if (bones.size() != p_b.bones.size())
+ if (bones.size() != p_vertex.bones.size())
return false;
for (int i = 0; i < bones.size(); i++) {
- if (bones[i] != p_b.bones[i])
+ if (bones[i] != p_vertex.bones[i])
return false;
}
for (int i = 0; i < weights.size(); i++) {
- if (weights[i] != p_b.weights[i])
+ if (weights[i] != p_vertex.weights[i])
return false;
}
@@ -691,6 +691,17 @@ void SurfaceTool::mikktGetTexCoord(const SMikkTSpaceContext *pContext, float fvT
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);
@@ -715,8 +726,8 @@ void SurfaceTool::generate_tangents() {
mkif.m_getNumVerticesOfFace = mikktGetNumVerticesOfFace;
mkif.m_getPosition = mikktGetPosition;
mkif.m_getTexCoord = mikktGetTexCoord;
- mkif.m_setTSpaceBasic = mikktSetTSpaceBasic;
- mkif.m_setTSpace = NULL;
+ mkif.m_setTSpace = mikktSetTSpaceDefault;
+ mkif.m_setTSpaceBasic = NULL;
SMikkTSpaceContext msc;
msc.m_pInterface = &mkif;
diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h
index d02e170b02..cdaac643de 100644
--- a/scene/resources/surface_tool.h
+++ b/scene/resources/surface_tool.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -90,6 +90,8 @@ private:
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);
protected:
static void _bind_methods();
@@ -102,8 +104,8 @@ public:
void add_normal(const Vector3 &p_normal);
void add_tangent(const Plane &p_tangent);
void add_uv(const Vector2 &p_uv);
- void add_uv2(const Vector2 &p_uv);
- void add_bones(const Vector<int> &p_indices);
+ void add_uv2(const Vector2 &p_uv2);
+ void add_bones(const Vector<int> &p_bones);
void add_weights(const Vector<float> &p_weights);
void add_smooth_group(bool p_smooth);
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index 9a251c029d..9751d6e711 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -75,14 +75,14 @@ void Texture::_bind_methods() {
ClassDB::bind_method(D_METHOD("draw_rect_region", "canvas_item", "rect", "src_rect", "modulate", "transpose", "normal_map", "clip_uv"), &Texture::draw_rect_region, DEFVAL(Color(1, 1, 1)), DEFVAL(false), DEFVAL(Variant()), DEFVAL(true));
ClassDB::bind_method(D_METHOD("get_data"), &Texture::get_data);
- BIND_CONSTANT(FLAG_MIPMAPS);
- BIND_CONSTANT(FLAG_REPEAT);
- BIND_CONSTANT(FLAG_FILTER);
- BIND_CONSTANT(FLAG_VIDEO_SURFACE);
- BIND_CONSTANT(FLAGS_DEFAULT);
- BIND_CONSTANT(FLAG_ANISOTROPIC_FILTER);
- BIND_CONSTANT(FLAG_CONVERT_TO_LINEAR);
- BIND_CONSTANT(FLAG_MIRRORED_REPEAT);
+ BIND_ENUM_CONSTANT(FLAG_MIPMAPS);
+ BIND_ENUM_CONSTANT(FLAG_REPEAT);
+ BIND_ENUM_CONSTANT(FLAG_FILTER);
+ BIND_ENUM_CONSTANT(FLAG_VIDEO_SURFACE);
+ BIND_ENUM_CONSTANT(FLAGS_DEFAULT);
+ BIND_ENUM_CONSTANT(FLAG_ANISOTROPIC_FILTER);
+ BIND_ENUM_CONSTANT(FLAG_CONVERT_TO_LINEAR);
+ BIND_ENUM_CONSTANT(FLAG_MIRRORED_REPEAT);
}
Texture::Texture() {
@@ -362,9 +362,9 @@ void ImageTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_size_override", "size"), &ImageTexture::set_size_override);
ClassDB::bind_method(D_METHOD("_reload_hook", "rid"), &ImageTexture::_reload_hook);
- BIND_CONSTANT(STORAGE_RAW);
- BIND_CONSTANT(STORAGE_COMPRESS_LOSSY);
- BIND_CONSTANT(STORAGE_COMPRESS_LOSSLESS);
+ BIND_ENUM_CONSTANT(STORAGE_RAW);
+ BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSY);
+ BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSLESS);
}
ImageTexture::ImageTexture() {
@@ -1335,19 +1335,21 @@ void CubeMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_lossy_storage_quality", "quality"), &CubeMap::set_lossy_storage_quality);
ClassDB::bind_method(D_METHOD("get_lossy_storage_quality"), &CubeMap::get_lossy_storage_quality);
- BIND_CONSTANT(STORAGE_RAW);
- BIND_CONSTANT(STORAGE_COMPRESS_LOSSY);
- BIND_CONSTANT(STORAGE_COMPRESS_LOSSLESS);
- BIND_CONSTANT(SIDE_LEFT);
- BIND_CONSTANT(SIDE_RIGHT);
- BIND_CONSTANT(SIDE_BOTTOM);
- BIND_CONSTANT(SIDE_TOP);
- BIND_CONSTANT(SIDE_FRONT);
- BIND_CONSTANT(SIDE_BACK);
- BIND_CONSTANT(FLAG_MIPMAPS);
- BIND_CONSTANT(FLAG_REPEAT);
- BIND_CONSTANT(FLAG_FILTER);
- BIND_CONSTANT(FLAGS_DEFAULT);
+ BIND_ENUM_CONSTANT(STORAGE_RAW);
+ BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSY);
+ BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSLESS);
+
+ BIND_ENUM_CONSTANT(SIDE_LEFT);
+ BIND_ENUM_CONSTANT(SIDE_RIGHT);
+ BIND_ENUM_CONSTANT(SIDE_BOTTOM);
+ BIND_ENUM_CONSTANT(SIDE_TOP);
+ BIND_ENUM_CONSTANT(SIDE_FRONT);
+ BIND_ENUM_CONSTANT(SIDE_BACK);
+
+ BIND_ENUM_CONSTANT(FLAG_MIPMAPS);
+ BIND_ENUM_CONSTANT(FLAG_REPEAT);
+ BIND_ENUM_CONSTANT(FLAG_FILTER);
+ BIND_ENUM_CONSTANT(FLAGS_DEFAULT);
}
CubeMap::CubeMap() {
@@ -1366,13 +1368,14 @@ CubeMap::~CubeMap() {
VisualServer::get_singleton()->free(cubemap);
}
-/* BIND_CONSTANT( FLAG_CUBEMAP );
- BIND_CONSTANT( CUBEMAP_LEFT );
- BIND_CONSTANT( CUBEMAP_RIGHT );
- BIND_CONSTANT( CUBEMAP_BOTTOM );
- BIND_CONSTANT( CUBEMAP_TOP );
- BIND_CONSTANT( CUBEMAP_FRONT );
- BIND_CONSTANT( CUBEMAP_BACK );
+/* BIND_ENUM(CubeMapSize);
+ BIND_ENUM_CONSTANT( FLAG_CUBEMAP );
+ BIND_ENUM_CONSTANT( CUBEMAP_LEFT );
+ BIND_ENUM_CONSTANT( CUBEMAP_RIGHT );
+ BIND_ENUM_CONSTANT( CUBEMAP_BOTTOM );
+ BIND_ENUM_CONSTANT( CUBEMAP_TOP );
+ BIND_ENUM_CONSTANT( CUBEMAP_FRONT );
+ BIND_ENUM_CONSTANT( CUBEMAP_BACK );
*/
///////////////////////////
diff --git a/scene/resources/texture.h b/scene/resources/texture.h
index 6c20c71af0..207436e4a7 100644
--- a/scene/resources/texture.h
+++ b/scene/resources/texture.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 1d5aed0444..e2e29b037b 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -883,7 +883,7 @@ RES ResourceFormatLoaderTheme::load(const String &p_path, const String &p_origin
ERR_FAIL_V(RES());
}
- sbflat->set_border_size(params[0].to_int());
+ sbflat->set_border_width_all(params[0].to_int());
if (!params[0].is_valid_integer()) {
@@ -929,8 +929,8 @@ RES ResourceFormatLoaderTheme::load(const String &p_path, const String &p_origin
dark = Color::html(params[3]);
}
- sbflat->set_dark_color(dark);
- sbflat->set_light_color(bright);
+ sbflat->set_border_color_all(bright);
+ // sbflat->set_dark_color(dark);
sbflat->set_bg_color(normal);
if (params.size() == ccodes + 5) {
@@ -1030,14 +1030,13 @@ RES ResourceFormatLoaderTheme::load(const String &p_path, const String &p_origin
ERR_FAIL_V(RES());
}
- if (res->cast_to<StyleBox>()) {
-
+ if (Object::cast_to<StyleBox>(*res)) {
theme->set_stylebox(item, control, res);
- } else if (res->cast_to<Font>()) {
+ } else if (Object::cast_to<Font>(*res)) {
theme->set_font(item, control, res);
- } else if (res->cast_to<Font>()) {
+ } else if (Object::cast_to<Font>(*res)) {
theme->set_font(item, control, res);
- } else if (res->cast_to<Texture>()) {
+ } else if (Object::cast_to<Texture>(*res)) {
theme->set_icon(item, control, res);
} else {
memdelete(f);
diff --git a/scene/resources/theme.h b/scene/resources/theme.h
index 1dfea7f421..5b375d5585 100644
--- a/scene/resources/theme.h
+++ b/scene/resources/theme.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -143,8 +143,8 @@ public:
static void set_default(const Ref<Theme> &p_default);
static void set_default_icon(const Ref<Texture> &p_icon);
- static void set_default_style(const Ref<StyleBox> &p_default_style);
- static void set_default_font(const Ref<Font> &p_default_font);
+ static void set_default_style(const Ref<StyleBox> &p_style);
+ static void set_default_font(const Ref<Font> &p_font);
void set_default_theme_font(const Ref<Font> &p_default_font);
Ref<Font> get_default_theme_font() const;
@@ -159,7 +159,7 @@ public:
Ref<Shader> get_shader(const StringName &p_name, const StringName &p_type) const;
bool has_shader(const StringName &p_name, const StringName &p_type) const;
void clear_shader(const StringName &p_name, const StringName &p_type);
- void get_shader_list(const StringName &p_name, List<StringName> *p_list) const;
+ void get_shader_list(const StringName &p_type, List<StringName> *p_list) const;
void set_stylebox(const StringName &p_name, const StringName &p_type, const Ref<StyleBox> &p_style);
Ref<StyleBox> get_stylebox(const StringName &p_name, const StringName &p_type) const;
diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp
index 44fe676ddc..50e8c28c22 100644
--- a/scene/resources/tile_set.cpp
+++ b/scene/resources/tile_set.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h
index 99c506390c..fe782ff987 100644
--- a/scene/resources/tile_set.h
+++ b/scene/resources/tile_set.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -105,7 +105,7 @@ public:
void tile_set_shape(int p_id, int p_shape_id, const Ref<Shape2D> &p_shape);
Ref<Shape2D> tile_get_shape(int p_id, int p_shape_id) const;
- void tile_set_shape_transform(int p_id, int p_shape_id, const Transform2D &p_transform);
+ void tile_set_shape_transform(int p_id, int p_shape_id, const Transform2D &p_offset);
Transform2D tile_get_shape_transform(int p_id, int p_shape_id) const;
void tile_set_shape_one_way(int p_id, int p_shape_id, bool p_one_way);
@@ -121,7 +121,7 @@ public:
void tile_set_material(int p_id, const Ref<ShaderMaterial> &p_material);
Ref<ShaderMaterial> tile_get_material(int p_id) const;
- void tile_set_modulate(int p_id, const Color &p_color);
+ void tile_set_modulate(int p_id, const Color &p_modulate);
Color tile_get_modulate(int p_id) const;
void tile_set_occluder_offset(int p_id, const Vector2 &p_offset);
diff --git a/scene/resources/video_stream.cpp b/scene/resources/video_stream.cpp
index 1b0e34b8db..2298e2ca9f 100644
--- a/scene/resources/video_stream.cpp
+++ b/scene/resources/video_stream.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/video_stream.h b/scene/resources/video_stream.h
index 544973f581..e08be02a07 100644
--- a/scene/resources/video_stream.h
+++ b/scene/resources/video_stream.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,7 +30,6 @@
#ifndef VIDEO_STREAM_H
#define VIDEO_STREAM_H
-#include "audio_stream_resampled.h"
#include "scene/resources/texture.h"
class VideoStreamPlayback : public Resource {
diff --git a/scene/resources/world.cpp b/scene/resources/world.cpp
index b0d14125a0..af159975ca 100644
--- a/scene/resources/world.cpp
+++ b/scene/resources/world.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,10 +28,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "world.h"
+
#include "camera_matrix.h"
#include "octree.h"
#include "scene/3d/camera.h"
-#include "scene/3d/spatial_indexer.h"
#include "scene/3d/visibility_notifier.h"
#include "scene/scene_string_names.h"
diff --git a/scene/resources/world.h b/scene/resources/world.h
index 158086974c..767d1b5b6e 100644
--- a/scene/resources/world.h
+++ b/scene/resources/world.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp
index 2f43f903ba..a644793bd8 100644
--- a/scene/resources/world_2d.cpp
+++ b/scene/resources/world_2d.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/resources/world_2d.h b/scene/resources/world_2d.h
index f968b08a15..63d32473e0 100644
--- a/scene/resources/world_2d.h
+++ b/scene/resources/world_2d.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/scene_string_names.cpp b/scene/scene_string_names.cpp
index f247e7cde8..6b7168a529 100644
--- a/scene/scene_string_names.cpp
+++ b/scene/scene_string_names.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/scene/scene_string_names.h b/scene/scene_string_names.h
index 0b70cd36ff..8676b8436e 100644
--- a/scene/scene_string_names.h
+++ b/scene/scene_string_names.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/arvr/arvr_interface.cpp b/servers/arvr/arvr_interface.cpp
index 81eb011932..0705df17b1 100644
--- a/servers/arvr/arvr_interface.cpp
+++ b/servers/arvr/arvr_interface.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -51,9 +51,9 @@ void ARVRInterface::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "primary"), "set_is_primary", "is_primary");
- BIND_CONSTANT(EYE_MONO);
- BIND_CONSTANT(EYE_LEFT);
- BIND_CONSTANT(EYE_RIGHT);
+ BIND_ENUM_CONSTANT(EYE_MONO);
+ BIND_ENUM_CONSTANT(EYE_LEFT);
+ BIND_ENUM_CONSTANT(EYE_RIGHT);
};
StringName ARVRInterface::get_name() const {
diff --git a/servers/arvr/arvr_interface.h b/servers/arvr/arvr_interface.h
index e405499fbb..d4fb383bbc 100644
--- a/servers/arvr/arvr_interface.h
+++ b/servers/arvr/arvr_interface.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/arvr/arvr_positional_tracker.cpp b/servers/arvr/arvr_positional_tracker.cpp
index 9f3d01267b..539bac6703 100644
--- a/servers/arvr/arvr_positional_tracker.cpp
+++ b/servers/arvr/arvr_positional_tracker.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/arvr/arvr_positional_tracker.h b/servers/arvr/arvr_positional_tracker.h
index dba203b73c..f91f862ba3 100644
--- a/servers/arvr/arvr_positional_tracker.h
+++ b/servers/arvr/arvr_positional_tracker.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/arvr_server.cpp b/servers/arvr_server.cpp
index 6398d87007..bac24f6438 100644
--- a/servers/arvr_server.cpp
+++ b/servers/arvr_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -58,12 +58,12 @@ void ARVRServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_interface"), &ARVRServer::add_interface);
ClassDB::bind_method(D_METHOD("remove_interface"), &ARVRServer::remove_interface);
- BIND_CONSTANT(TRACKER_CONTROLLER);
- BIND_CONSTANT(TRACKER_BASESTATION);
- BIND_CONSTANT(TRACKER_ANCHOR);
- BIND_CONSTANT(TRACKER_UNKNOWN);
- BIND_CONSTANT(TRACKER_ANY_KNOWN);
- BIND_CONSTANT(TRACKER_ANY);
+ BIND_ENUM_CONSTANT(TRACKER_CONTROLLER);
+ BIND_ENUM_CONSTANT(TRACKER_BASESTATION);
+ BIND_ENUM_CONSTANT(TRACKER_ANCHOR);
+ BIND_ENUM_CONSTANT(TRACKER_UNKNOWN);
+ BIND_ENUM_CONSTANT(TRACKER_ANY_KNOWN);
+ BIND_ENUM_CONSTANT(TRACKER_ANY);
ADD_SIGNAL(MethodInfo("interface_added", PropertyInfo(Variant::STRING, "name")));
ADD_SIGNAL(MethodInfo("interface_removed", PropertyInfo(Variant::STRING, "name")));
diff --git a/servers/arvr_server.h b/servers/arvr_server.h
index fd7c5470c3..2645637ad5 100644
--- a/servers/arvr_server.h
+++ b/servers/arvr_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -88,7 +88,7 @@ protected:
public:
static ARVRServer *get_singleton();
- /*
+ /*
World scale allows you to specify a scale factor that is applied to all positioning vectors in our VR world in essence scaling up, or scaling down the world.
For stereoscopic rendering specifically this is very important to give an accurate sense of scale.
Add controllers into the mix and an accurate mapping of real world movement to percieved virtual movement becomes very important.
@@ -107,18 +107,18 @@ public:
actions be it straffing, teleporting, etc. Movement of the player by moving through the physical space is always tracked
in relation to this point.
- Note that the ARVROrigin spatial node in your scene automatically updates this property and it should be used instead of
+ Note that the ARVROrigin spatial node in your scene automatically updates this property and it should be used instead of
direct access to this property and it therefor is not available in GDScript
Note: this should not be used in AR and should be ignored by an AR based interface as it would throw what you're looking at in the real world
and in the virtual world out of sync
*/
Transform get_world_origin() const;
- void set_world_origin(const Transform p_origin);
+ void set_world_origin(const Transform p_world_origin);
/*
Requesting a reference frame results in a matrix being calculated that ensures the HMD is positioned to 0,0,0 facing 0,0,-1 (need to verify this direction)
- in the virtual world.
+ in the virtual world.
Note: this should not be used in AR and should be ignored by an AR based interface as it would throw what you're looking at in the real world
and in the virtual world out of sync
@@ -127,7 +127,7 @@ public:
void request_reference_frame(bool p_ignore_tilt, bool p_keep_height);
/*
- Interfaces are objects that 'glue' Godot to an AR or VR SDK such as the Oculus SDK, OpenVR, OpenHMD, etc.
+ Interfaces are objects that 'glue' Godot to an AR or VR SDK such as the Oculus SDK, OpenVR, OpenHMD, etc.
*/
void add_interface(const Ref<ARVRInterface> &p_interface);
void remove_interface(const Ref<ARVRInterface> &p_interface);
@@ -144,10 +144,10 @@ public:
void clear_primary_interface_if(const Ref<ARVRInterface> &p_primary_interface); /* this is automatically called if an interface destructs */
/*
- Our trackers are objects that expose the orientation and position of physical devices such as controller, anchor points, etc.
+ Our trackers are objects that expose the orientation and position of physical devices such as controller, anchor points, etc.
They are created and managed by our active AR/VR interfaces.
- Note that for trackers that
+ Note that for trackers that
*/
int get_free_tracker_id_for_type(TrackerType p_tracker_type);
void add_tracker(ARVRPositionalTracker *p_tracker);
diff --git a/servers/audio/audio_driver_dummy.cpp b/servers/audio/audio_driver_dummy.cpp
index 0f15b43b41..992fece85f 100644
--- a/servers/audio/audio_driver_dummy.cpp
+++ b/servers/audio/audio_driver_dummy.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -45,7 +45,7 @@ Error AudioDriverDummy::init() {
channels = 2;
int latency = GLOBAL_DEF("audio/output_latency", 25);
- buffer_size = nearest_power_of_2(latency * mix_rate / 1000);
+ buffer_size = next_power_of_2(latency * mix_rate / 1000);
samples_in = memnew_arr(int32_t, buffer_size * channels);
diff --git a/servers/audio/audio_driver_dummy.h b/servers/audio/audio_driver_dummy.h
index eadac44c5a..b3fea59389 100644
--- a/servers/audio/audio_driver_dummy.h
+++ b/servers/audio/audio_driver_dummy.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/audio_effect.cpp b/servers/audio/audio_effect.cpp
index edb79adb60..2a9f991d3f 100644
--- a/servers/audio/audio_effect.cpp
+++ b/servers/audio/audio_effect.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/audio_effect.h b/servers/audio/audio_effect.h
index 570b2025b1..3dbeb402eb 100644
--- a/servers/audio/audio_effect.h
+++ b/servers/audio/audio_effect.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/audio_filter_sw.cpp b/servers/audio/audio_filter_sw.cpp
index 4bf1cebf12..477bc59b73 100644
--- a/servers/audio/audio_filter_sw.cpp
+++ b/servers/audio/audio_filter_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/audio_filter_sw.h b/servers/audio/audio_filter_sw.h
index f5a07c4c8f..1c01e5f8da 100644
--- a/servers/audio/audio_filter_sw.h
+++ b/servers/audio/audio_filter_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -97,24 +97,24 @@ public:
/* inline methods */
-void AudioFilterSW::Processor::process_one(float &p_val) {
+void AudioFilterSW::Processor::process_one(float &p_sample) {
- float pre = p_val;
- p_val = (p_val * coeffs.b0 + hb1 * coeffs.b1 + hb2 * coeffs.b2 + ha1 * coeffs.a1 + ha2 * coeffs.a2);
+ float pre = p_sample;
+ p_sample = (p_sample * coeffs.b0 + hb1 * coeffs.b1 + hb2 * coeffs.b2 + ha1 * coeffs.a1 + ha2 * coeffs.a2);
ha2 = ha1;
hb2 = hb1;
hb1 = pre;
- ha1 = p_val;
+ ha1 = p_sample;
}
-void AudioFilterSW::Processor::process_one_interp(float &p_val) {
+void AudioFilterSW::Processor::process_one_interp(float &p_sample) {
- float pre = p_val;
- p_val = (p_val * coeffs.b0 + hb1 * coeffs.b1 + hb2 * coeffs.b2 + ha1 * coeffs.a1 + ha2 * coeffs.a2);
+ float pre = p_sample;
+ p_sample = (p_sample * coeffs.b0 + hb1 * coeffs.b1 + hb2 * coeffs.b2 + ha1 * coeffs.a1 + ha2 * coeffs.a2);
ha2 = ha1;
hb2 = hb1;
hb1 = pre;
- ha1 = p_val;
+ ha1 = p_sample;
coeffs.b0 += incr_coeffs.b0;
coeffs.b1 += incr_coeffs.b1;
diff --git a/servers/audio/audio_rb_resampler.cpp b/servers/audio/audio_rb_resampler.cpp
index a5d0a53be6..2f160fd7cd 100644
--- a/servers/audio/audio_rb_resampler.cpp
+++ b/servers/audio/audio_rb_resampler.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -173,44 +173,7 @@ bool AudioRBResampler::mix(int32_t *p_dest, int p_frames) {
}
int todo = MIN(((int64_t(rb_todo) << MIX_FRAC_BITS) / increment) + 1, p_frames);
-#if 0
- if (int(src_mix_rate)==target_mix_rate) {
-
- if (channels==6) {
-
- for(int i=0;i<p_frames;i++) {
-
- int from = ((rb_read_pos+i)&rb_mask)*6;
- int to = i*6;
-
- p_dest[from+0]=int32_t(rb[to+0])<<16;
- p_dest[from+1]=int32_t(rb[to+1])<<16;
- p_dest[from+2]=int32_t(rb[to+2])<<16;
- p_dest[from+3]=int32_t(rb[to+3])<<16;
- p_dest[from+4]=int32_t(rb[to+4])<<16;
- p_dest[from+5]=int32_t(rb[to+5])<<16;
- }
-
- } else {
- int len=p_frames*channels;
- int from=rb_read_pos*channels;
- int mask=0;
- switch(channels) {
- case 1: mask=rb_len-1; break;
- case 2: mask=(rb_len*2)-1; break;
- case 4: mask=(rb_len*4)-1; break;
- }
-
- for(int i=0;i<len;i++) {
-
- p_dest[i]=int32_t(rb[(from+i)&mask])<<16;
- }
- }
-
- rb_read_pos = (rb_read_pos+p_frames)&rb_mask;
- } else
-#endif
{
uint32_t read = 0;
@@ -220,7 +183,7 @@ bool AudioRBResampler::mix(int32_t *p_dest, int p_frames) {
case 4: read = _resample<4>(p_dest, todo, increment); break;
case 6: read = _resample<6>(p_dest, todo, increment); break;
}
-#if 1
+
//end of stream, fadeout
int remaining = p_frames - todo;
if (remaining && todo > 0) {
@@ -238,23 +201,6 @@ bool AudioRBResampler::mix(int32_t *p_dest, int p_frames) {
}
}
-#else
- int remaining = p_frames - todo;
- if (remaining && todo > 0) {
-
- for (int c = 0; c < channels; c++) {
-
- int32_t from = p_dest[(todo - 1) * channels + c] >> 8;
-
- for (int i = 0; i < remaining; i++) {
-
- uint32_t mul = (remaining - i) * 256 / remaining;
- p_dest[(todo + i) * channels + c] = from * mul;
- }
- }
- }
-#endif
-
//zero out what remains there to avoid glitches
for (int i = todo * channels; i < int(p_frames) * channels; i++) {
diff --git a/servers/audio/audio_rb_resampler.h b/servers/audio/audio_rb_resampler.h
index a906f1bb20..bc1f924ab5 100644
--- a/servers/audio/audio_rb_resampler.h
+++ b/servers/audio/audio_rb_resampler.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp
index aa498cccad..dd4240f028 100644
--- a/servers/audio/audio_stream.cpp
+++ b/servers/audio/audio_stream.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/audio_stream.h b/servers/audio/audio_stream.h
index a35826be21..c7cb63ef2c 100644
--- a/servers/audio/audio_stream.h
+++ b/servers/audio/audio_stream.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -74,7 +74,7 @@ protected:
virtual float get_stream_sampling_rate() = 0;
public:
- virtual void mix(AudioFrame *p_bufer, float p_rate_scale, int p_frames);
+ virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames);
AudioStreamPlaybackResampled() { mix_offset = 0; }
};
@@ -104,7 +104,7 @@ protected:
static void _bind_methods();
public:
- void set_audio_stream(const Ref<AudioStream> &audio_stream);
+ void set_audio_stream(const Ref<AudioStream> &p_audio_stream);
Ref<AudioStream> get_audio_stream() const;
void set_random_pitch(float p_pitch);
diff --git a/servers/audio/effects/audio_effect_amplify.cpp b/servers/audio/effects/audio_effect_amplify.cpp
index 91d1e84182..58da99ab85 100644
--- a/servers/audio/effects/audio_effect_amplify.cpp
+++ b/servers/audio/effects/audio_effect_amplify.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_amplify.h b/servers/audio/effects/audio_effect_amplify.h
index bba9e352b2..a4c2cbc2fd 100644
--- a/servers/audio/effects/audio_effect_amplify.h
+++ b/servers/audio/effects/audio_effect_amplify.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_chorus.cpp b/servers/audio/effects/audio_effect_chorus.cpp
index 8fb7ef2cd0..4075bc3e63 100644
--- a/servers/audio/effects/audio_effect_chorus.cpp
+++ b/servers/audio/effects/audio_effect_chorus.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_chorus.h b/servers/audio/effects/audio_effect_chorus.h
index 5db335e288..47065c4dd5 100644
--- a/servers/audio/effects/audio_effect_chorus.h
+++ b/servers/audio/effects/audio_effect_chorus.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_compressor.cpp b/servers/audio/effects/audio_effect_compressor.cpp
index 491e6ecc81..420f279da0 100644
--- a/servers/audio/effects/audio_effect_compressor.cpp
+++ b/servers/audio/effects/audio_effect_compressor.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_compressor.h b/servers/audio/effects/audio_effect_compressor.h
index 550302056c..5c76fb902a 100644
--- a/servers/audio/effects/audio_effect_compressor.h
+++ b/servers/audio/effects/audio_effect_compressor.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_delay.cpp b/servers/audio/effects/audio_effect_delay.cpp
index de301fba6f..b8a8603546 100644
--- a/servers/audio/effects/audio_effect_delay.cpp
+++ b/servers/audio/effects/audio_effect_delay.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_delay.h b/servers/audio/effects/audio_effect_delay.h
index 9d80c752d3..50a32c94f6 100644
--- a/servers/audio/effects/audio_effect_delay.h
+++ b/servers/audio/effects/audio_effect_delay.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_distortion.cpp b/servers/audio/effects/audio_effect_distortion.cpp
index 87cf520e19..f2bcabc3cb 100644
--- a/servers/audio/effects/audio_effect_distortion.cpp
+++ b/servers/audio/effects/audio_effect_distortion.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_distortion.h b/servers/audio/effects/audio_effect_distortion.h
index 2f84bd4dc7..7c04b4f98e 100644
--- a/servers/audio/effects/audio_effect_distortion.h
+++ b/servers/audio/effects/audio_effect_distortion.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -71,16 +71,16 @@ public:
void set_mode(Mode p_mode);
Mode get_mode() const;
- void set_pre_gain(float pre_gain);
+ void set_pre_gain(float p_pre_gain);
float get_pre_gain() const;
- void set_keep_hf_hz(float keep_hf_hz);
+ void set_keep_hf_hz(float p_keep_hf_hz);
float get_keep_hf_hz() const;
- void set_drive(float drive);
+ void set_drive(float p_drive);
float get_drive() const;
- void set_post_gain(float post_gain);
+ void set_post_gain(float p_post_gain);
float get_post_gain() const;
AudioEffectDistortion();
diff --git a/servers/audio/effects/audio_effect_eq.cpp b/servers/audio/effects/audio_effect_eq.cpp
index 87f793f95e..15905e3e0e 100644
--- a/servers/audio/effects/audio_effect_eq.cpp
+++ b/servers/audio/effects/audio_effect_eq.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_eq.h b/servers/audio/effects/audio_effect_eq.h
index 62041fe4f7..440f46c0c2 100644
--- a/servers/audio/effects/audio_effect_eq.h
+++ b/servers/audio/effects/audio_effect_eq.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_filter.cpp b/servers/audio/effects/audio_effect_filter.cpp
index bcf1cc5756..64a9db51a5 100644
--- a/servers/audio/effects/audio_effect_filter.cpp
+++ b/servers/audio/effects/audio_effect_filter.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_filter.h b/servers/audio/effects/audio_effect_filter.h
index 51932cdbf5..903977cb97 100644
--- a/servers/audio/effects/audio_effect_filter.h
+++ b/servers/audio/effects/audio_effect_filter.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_limiter.cpp b/servers/audio/effects/audio_effect_limiter.cpp
index 9f39db0440..391e5db639 100644
--- a/servers/audio/effects/audio_effect_limiter.cpp
+++ b/servers/audio/effects/audio_effect_limiter.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_limiter.h b/servers/audio/effects/audio_effect_limiter.h
index e15ffe5b34..5fc54a2dd3 100644
--- a/servers/audio/effects/audio_effect_limiter.h
+++ b/servers/audio/effects/audio_effect_limiter.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_panner.cpp b/servers/audio/effects/audio_effect_panner.cpp
index a6103f580a..8b268ef9f7 100644
--- a/servers/audio/effects/audio_effect_panner.cpp
+++ b/servers/audio/effects/audio_effect_panner.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_panner.h b/servers/audio/effects/audio_effect_panner.h
index 4b41fecc45..4739373485 100644
--- a/servers/audio/effects/audio_effect_panner.h
+++ b/servers/audio/effects/audio_effect_panner.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,7 +54,7 @@ protected:
public:
Ref<AudioEffectInstance> instance();
- void set_pan(float p_volume);
+ void set_pan(float p_cpanume);
float get_pan() const;
AudioEffectPanner();
diff --git a/servers/audio/effects/audio_effect_phaser.cpp b/servers/audio/effects/audio_effect_phaser.cpp
index 9af344d876..fe362ef831 100644
--- a/servers/audio/effects/audio_effect_phaser.cpp
+++ b/servers/audio/effects/audio_effect_phaser.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_phaser.h b/servers/audio/effects/audio_effect_phaser.h
index c587ca8239..d77b44e738 100644
--- a/servers/audio/effects/audio_effect_phaser.h
+++ b/servers/audio/effects/audio_effect_phaser.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_pitch_shift.cpp b/servers/audio/effects/audio_effect_pitch_shift.cpp
index 1889934f29..ec70e7b902 100644
--- a/servers/audio/effects/audio_effect_pitch_shift.cpp
+++ b/servers/audio/effects/audio_effect_pitch_shift.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_pitch_shift.h b/servers/audio/effects/audio_effect_pitch_shift.h
index 08c8c59cc7..10a72465dc 100644
--- a/servers/audio/effects/audio_effect_pitch_shift.h
+++ b/servers/audio/effects/audio_effect_pitch_shift.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_reverb.cpp b/servers/audio/effects/audio_effect_reverb.cpp
index 7049204645..f5225bec96 100644
--- a/servers/audio/effects/audio_effect_reverb.cpp
+++ b/servers/audio/effects/audio_effect_reverb.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_reverb.h b/servers/audio/effects/audio_effect_reverb.h
index d8f13da8b7..795d38d3d5 100644
--- a/servers/audio/effects/audio_effect_reverb.h
+++ b/servers/audio/effects/audio_effect_reverb.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_stereo_enhance.cpp b/servers/audio/effects/audio_effect_stereo_enhance.cpp
index ebd48c0546..1ee393f533 100644
--- a/servers/audio/effects/audio_effect_stereo_enhance.cpp
+++ b/servers/audio/effects/audio_effect_stereo_enhance.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/audio_effect_stereo_enhance.h b/servers/audio/effects/audio_effect_stereo_enhance.h
index bad55614c6..f187fe50b3 100644
--- a/servers/audio/effects/audio_effect_stereo_enhance.h
+++ b/servers/audio/effects/audio_effect_stereo_enhance.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/eq.cpp b/servers/audio/effects/eq.cpp
index 4dd5eb0ebe..05630e61ae 100644
--- a/servers/audio/effects/eq.cpp
+++ b/servers/audio/effects/eq.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/eq.h b/servers/audio/effects/eq.h
index 90d19e6e91..97dd4615d1 100644
--- a/servers/audio/effects/eq.h
+++ b/servers/audio/effects/eq.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/reverb.cpp b/servers/audio/effects/reverb.cpp
index 7bc8c5cac3..8e745f979a 100644
--- a/servers/audio/effects/reverb.cpp
+++ b/servers/audio/effects/reverb.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/effects/reverb.h b/servers/audio/effects/reverb.h
index d4ddb3902a..2fa21d68d5 100644
--- a/servers/audio/effects/reverb.h
+++ b/servers/audio/effects/reverb.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/reverb_sw.cpp b/servers/audio/reverb_sw.cpp
index 45fd7fd7de..96d2ad848b 100644
--- a/servers/audio/reverb_sw.cpp
+++ b/servers/audio/reverb_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/reverb_sw.h b/servers/audio/reverb_sw.h
index f912734e65..b91beea039 100644
--- a/servers/audio/reverb_sw.h
+++ b/servers/audio/reverb_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio/voice_rb_sw.h b/servers/audio/voice_rb_sw.h
index a4a5ec3ddd..6d9eb73860 100644
--- a/servers/audio/voice_rb_sw.h
+++ b/servers/audio/voice_rb_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index 3547f86eb3..c0343399c3 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -159,6 +159,8 @@ void AudioServer::_driver_process(int p_frames, int32_t *p_buffer) {
void AudioServer::_mix_step() {
+ bool solo_mode = false;
+
for (int i = 0; i < buses.size(); i++) {
Bus *bus = buses[i];
bus->index_cache = i; //might be moved around by editor, so..
@@ -166,6 +168,33 @@ void AudioServer::_mix_step() {
bus->channels[k].used = false;
}
+
+ if (bus->solo) {
+ //solo chain
+ solo_mode = true;
+ bus->soloed = true;
+ do {
+
+ if (bus != buses[0]) {
+ //everything has a send save for master bus
+ if (!bus_map.has(bus->send)) {
+ bus = buses[0]; //send to master
+ } else {
+ bus = bus_map[bus->send];
+ if (bus->index_cache >= bus->index_cache) { //invalid, send to master
+ bus = buses[0];
+ }
+ }
+
+ bus->soloed = true;
+ } else {
+ bus = NULL;
+ }
+
+ } while (bus);
+ } else {
+ bus->soloed = false;
+ }
}
//make callbacks for mixing the audio
@@ -192,24 +221,26 @@ void AudioServer::_mix_step() {
}
//process effects
- for (int j = 0; j < bus->effects.size(); j++) {
+ if (!bus->bypass) {
+ for (int j = 0; j < bus->effects.size(); j++) {
- if (!bus->effects[j].enabled)
- continue;
+ if (!bus->effects[j].enabled)
+ continue;
- for (int k = 0; k < bus->channels.size(); k++) {
+ for (int k = 0; k < bus->channels.size(); k++) {
- if (!bus->channels[k].active)
- continue;
- bus->channels[k].effect_instances[j]->process(bus->channels[k].buffer.ptr(), temp_buffer[k].ptr(), buffer_size);
- }
+ if (!bus->channels[k].active)
+ continue;
+ bus->channels[k].effect_instances[j]->process(bus->channels[k].buffer.ptr(), temp_buffer[k].ptr(), buffer_size);
+ }
- //swap buffers, so internal buffer always has the right data
- for (int k = 0; k < bus->channels.size(); k++) {
+ //swap buffers, so internal buffer always has the right data
+ for (int k = 0; k < bus->channels.size(); k++) {
- if (!buses[i]->channels[k].active)
- continue;
- SWAP(bus->channels[k].buffer, temp_buffer[k]);
+ if (!buses[i]->channels[k].active)
+ continue;
+ SWAP(bus->channels[k].buffer, temp_buffer[k]);
+ }
}
}
@@ -237,7 +268,24 @@ void AudioServer::_mix_step() {
AudioFrame *buf = bus->channels[k].buffer.ptr();
AudioFrame peak = AudioFrame(0, 0);
+
+ float volume = Math::db2linear(bus->volume_db);
+
+ if (solo_mode) {
+ if (!bus->soloed) {
+ volume = 0.0;
+ }
+ } else {
+ if (bus->mute) {
+ volume = 0.0;
+ }
+ }
+
+ //apply volume and compute peak
for (uint32_t j = 0; j < buffer_size; j++) {
+
+ buf[j] *= volume;
+
float l = ABS(buf[j].l);
if (l > peak.l) {
peak.l = l;
@@ -606,8 +654,8 @@ void AudioServer::_update_bus_effects(int p_bus) {
buses[p_bus]->channels[i].effect_instances.resize(buses[p_bus]->effects.size());
for (int j = 0; j < buses[p_bus]->effects.size(); j++) {
Ref<AudioEffectInstance> fx = buses[p_bus]->effects[j].effect->instance();
- if (fx->cast_to<AudioEffectCompressorInstance>()) {
- fx->cast_to<AudioEffectCompressorInstance>()->set_current_channel(i);
+ if (Object::cast_to<AudioEffectCompressorInstance>(*fx)) {
+ Object::cast_to<AudioEffectCompressorInstance>(*fx)->set_current_channel(i);
}
buses[p_bus]->channels[i].effect_instances[j] = fx;
}
diff --git a/servers/audio_server.h b/servers/audio_server.h
index caa07891f7..05e92ceaf0 100644
--- a/servers/audio_server.h
+++ b/servers/audio_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -125,6 +125,8 @@ private:
bool mute;
bool bypass;
+ bool soloed;
+
//Each channel is a stereo pair.
struct Channel {
bool used;
diff --git a/servers/physics/area_pair_sw.cpp b/servers/physics/area_pair_sw.cpp
index 5c418c473f..3e8d148f08 100644
--- a/servers/physics/area_pair_sw.cpp
+++ b/servers/physics/area_pair_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/area_pair_sw.h b/servers/physics/area_pair_sw.h
index 75df6043ea..483f63284b 100644
--- a/servers/physics/area_pair_sw.h
+++ b/servers/physics/area_pair_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/area_sw.cpp b/servers/physics/area_sw.cpp
index a310ed3411..387230a478 100644
--- a/servers/physics/area_sw.cpp
+++ b/servers/physics/area_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/area_sw.h b/servers/physics/area_sw.h
index 3dae1db13f..455c0b5c8b 100644
--- a/servers/physics/area_sw.h
+++ b/servers/physics/area_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/body_pair_sw.cpp b/servers/physics/body_pair_sw.cpp
index 9ada1fbc50..a289b4b0ca 100644
--- a/servers/physics/body_pair_sw.cpp
+++ b/servers/physics/body_pair_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "body_pair_sw.h"
+
#include "collision_solver_sw.h"
#include "os/os.h"
#include "space_sw.h"
@@ -296,17 +297,7 @@ bool BodyPairSW::setup(real_t p_step) {
c.rA = global_A - A->get_center_of_mass();
c.rB = global_B - B->get_center_of_mass() - offset_B;
-// contact query reporting...
-#if 0
- if (A->get_body_type() == PhysicsServer::BODY_CHARACTER)
- static_cast<CharacterBodySW*>(A)->report_character_contact( global_A, global_B, B );
- if (B->get_body_type() == PhysicsServer::BODY_CHARACTER)
- static_cast<CharacterBodySW*>(B)->report_character_contact( global_B, global_A, A );
- if (A->has_contact_query())
- A->report_contact( global_A, global_B, B );
- if (B->has_contact_query())
- B->report_contact( global_B, global_A, A );
-#endif
+ // contact query reporting...
if (A->can_report_contacts()) {
Vector3 crA = A->get_angular_velocity().cross(c.rA) + A->get_linear_velocity();
@@ -327,18 +318,7 @@ bool BodyPairSW::setup(real_t p_step) {
kNormal += c.normal.dot(inertia_A.cross(c.rA)) + c.normal.dot(inertia_B.cross(c.rB));
c.mass_normal = 1.0f / kNormal;
-#if 1
c.bias = -bias * inv_dt * MIN(0.0f, -depth + max_penetration);
-
-#else
- if (depth > max_penetration) {
- c.bias = (depth - max_penetration) * (1.0 / (p_step * (1.0 / RELAXATION_TIMESTEPS)));
- } else {
- real_t approach = -0.1 * (depth - max_penetration) / (CMP_EPSILON + max_penetration);
- approach = CLAMP(approach, CMP_EPSILON, 1.0);
- c.bias = approach * (depth - max_penetration) * (1.0 / p_step);
- }
-#endif
c.depth = depth;
Vector3 j_vec = c.normal * c.acc_normal_impulse + c.acc_tangent_impulse;
diff --git a/servers/physics/body_pair_sw.h b/servers/physics/body_pair_sw.h
index cb16849399..f09c977950 100644
--- a/servers/physics/body_pair_sw.h
+++ b/servers/physics/body_pair_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp
index e065fae2be..46a5192e52 100644
--- a/servers/physics/body_sw.cpp
+++ b/servers/physics/body_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/body_sw.h b/servers/physics/body_sw.h
index 512b868570..7e8d31f8eb 100644
--- a/servers/physics/body_sw.h
+++ b/servers/physics/body_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/broad_phase_basic.cpp b/servers/physics/broad_phase_basic.cpp
index 679b9a31fc..959718a252 100644
--- a/servers/physics/broad_phase_basic.cpp
+++ b/servers/physics/broad_phase_basic.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,17 +30,14 @@
#include "broad_phase_basic.h"
#include "list.h"
#include "print_string.h"
-BroadPhaseSW::ID BroadPhaseBasic::create(CollisionObjectSW *p_object_, int p_subindex) {
+BroadPhaseSW::ID BroadPhaseBasic::create(CollisionObjectSW *p_object, int p_subindex) {
- if (p_object_ == NULL) {
-
- ERR_FAIL_COND_V(p_object_ == NULL, 0);
- }
+ ERR_FAIL_COND_V(p_object == NULL, NULL);
current++;
Element e;
- e.owner = p_object_;
+ e.owner = p_object;
e._static = false;
e.subindex = p_subindex;
@@ -169,10 +166,10 @@ void BroadPhaseBasic::set_pair_callback(PairCallback p_pair_callback, void *p_us
pair_userdata = p_userdata;
pair_callback = p_pair_callback;
}
-void BroadPhaseBasic::set_unpair_callback(UnpairCallback p_pair_callback, void *p_userdata) {
+void BroadPhaseBasic::set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) {
unpair_userdata = p_userdata;
- unpair_callback = p_pair_callback;
+ unpair_callback = p_unpair_callback;
}
void BroadPhaseBasic::update() {
diff --git a/servers/physics/broad_phase_basic.h b/servers/physics/broad_phase_basic.h
index 8dabf72f11..51a24f4678 100644
--- a/servers/physics/broad_phase_basic.h
+++ b/servers/physics/broad_phase_basic.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/broad_phase_octree.cpp b/servers/physics/broad_phase_octree.cpp
index 2439fbeae9..e7111d9580 100644
--- a/servers/physics/broad_phase_octree.cpp
+++ b/servers/physics/broad_phase_octree.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -78,7 +78,7 @@ int BroadPhaseOctree::cull_segment(const Vector3 &p_from, const Vector3 &p_to, C
int BroadPhaseOctree::cull_aabb(const Rect3 &p_aabb, CollisionObjectSW **p_results, int p_max_results, int *p_result_indices) {
- return octree.cull_AABB(p_aabb, p_results, p_max_results, p_result_indices);
+ return octree.cull_aabb(p_aabb, p_results, p_max_results, p_result_indices);
}
void *BroadPhaseOctree::_pair_callback(void *self, OctreeElementID p_A, CollisionObjectSW *p_object_A, int subindex_A, OctreeElementID p_B, CollisionObjectSW *p_object_B, int subindex_B) {
@@ -124,6 +124,5 @@ BroadPhaseOctree::BroadPhaseOctree() {
octree.set_unpair_callback(_unpair_callback, this);
pair_callback = NULL;
pair_userdata = NULL;
- pair_callback = NULL;
unpair_userdata = NULL;
}
diff --git a/servers/physics/broad_phase_octree.h b/servers/physics/broad_phase_octree.h
index 88d72a2bd8..d28f2da13f 100644
--- a/servers/physics/broad_phase_octree.h
+++ b/servers/physics/broad_phase_octree.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -47,7 +47,7 @@ class BroadPhaseOctree : public BroadPhaseSW {
public:
// 0 is an invalid ID
- virtual ID create(CollisionObjectSW *p_object_, int p_subindex = 0);
+ virtual ID create(CollisionObjectSW *p_object, int p_subindex = 0);
virtual void move(ID p_id, const Rect3 &p_aabb);
virtual void set_static(ID p_id, bool p_static);
virtual void remove(ID p_id);
diff --git a/servers/physics/broad_phase_sw.cpp b/servers/physics/broad_phase_sw.cpp
index c3d42d4c2f..3e5b7e72c6 100644
--- a/servers/physics/broad_phase_sw.cpp
+++ b/servers/physics/broad_phase_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/broad_phase_sw.h b/servers/physics/broad_phase_sw.h
index 5564cf5077..2b5ed629fe 100644
--- a/servers/physics/broad_phase_sw.h
+++ b/servers/physics/broad_phase_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/collision_object_sw.cpp b/servers/physics/collision_object_sw.cpp
index d673088304..ab716a8f6e 100644
--- a/servers/physics/collision_object_sw.cpp
+++ b/servers/physics/collision_object_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/collision_object_sw.h b/servers/physics/collision_object_sw.h
index a56253e33d..dc988aae86 100644
--- a/servers/physics/collision_object_sw.h
+++ b/servers/physics/collision_object_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -98,7 +98,7 @@ protected:
void _set_static(bool p_static);
virtual void _shapes_changed() = 0;
- void _set_space(SpaceSW *space);
+ void _set_space(SpaceSW *p_space);
bool ray_pickable;
diff --git a/servers/physics/collision_solver_sat.cpp b/servers/physics/collision_solver_sat.cpp
index 128f78e46e..a044df7f31 100644
--- a/servers/physics/collision_solver_sat.cpp
+++ b/servers/physics/collision_solver_sat.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/collision_solver_sat.h b/servers/physics/collision_solver_sat.h
index d5fae7798a..efe9bc87ac 100644
--- a/servers/physics/collision_solver_sat.h
+++ b/servers/physics/collision_solver_sat.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/collision_solver_sw.cpp b/servers/physics/collision_solver_sw.cpp
index 32a42bcaf4..c7f66cb7fc 100644
--- a/servers/physics/collision_solver_sw.cpp
+++ b/servers/physics/collision_solver_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/collision_solver_sw.h b/servers/physics/collision_solver_sw.h
index 5a4e864eb5..1e38b1b54e 100644
--- a/servers/physics/collision_solver_sw.h
+++ b/servers/physics/collision_solver_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/constraint_sw.h b/servers/physics/constraint_sw.h
index d9f153a6a6..047513f635 100644
--- a/servers/physics/constraint_sw.h
+++ b/servers/physics/constraint_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/gjk_epa.cpp b/servers/physics/gjk_epa.cpp
index ab2a9b507a..6cea5b003d 100644
--- a/servers/physics/gjk_epa.cpp
+++ b/servers/physics/gjk_epa.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/gjk_epa.h b/servers/physics/gjk_epa.h
index 316b991477..6d8539d365 100644
--- a/servers/physics/gjk_epa.h
+++ b/servers/physics/gjk_epa.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints/cone_twist_joint_sw.cpp b/servers/physics/joints/cone_twist_joint_sw.cpp
index 51bc27ea7d..3c900d4fbe 100644
--- a/servers/physics/joints/cone_twist_joint_sw.cpp
+++ b/servers/physics/joints/cone_twist_joint_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -110,7 +110,7 @@ ConeTwistJointSW::ConeTwistJointSW(BodySW *rbA, BodySW *rbB, const Transform &rb
m_appliedImpulse = 0;
}
-bool ConeTwistJointSW::setup(real_t p_step) {
+bool ConeTwistJointSW::setup(real_t p_timestep) {
m_appliedImpulse = real_t(0.);
//set bias, sign, clear accumulator
@@ -237,7 +237,7 @@ bool ConeTwistJointSW::setup(real_t p_step) {
return true;
}
-void ConeTwistJointSW::solve(real_t timeStep) {
+void ConeTwistJointSW::solve(real_t p_timestep) {
Vector3 pivotAInW = A->get_transform().xform(m_rbAFrame.origin);
Vector3 pivotBInW = B->get_transform().xform(m_rbBFrame.origin);
@@ -261,7 +261,7 @@ void ConeTwistJointSW::solve(real_t timeStep) {
rel_vel = normal.dot(vel);
//positional error (zeroth order error)
real_t depth = -(pivotAInW - pivotBInW).dot(normal); //this is the error projected on the normal
- real_t impulse = depth * tau / timeStep * jacDiagABInv - rel_vel * jacDiagABInv;
+ real_t impulse = depth * tau / p_timestep * jacDiagABInv - rel_vel * jacDiagABInv;
m_appliedImpulse += impulse;
Vector3 impulse_vector = normal * impulse;
A->apply_impulse(pivotAInW - A->get_transform().origin, impulse_vector);
@@ -276,7 +276,7 @@ void ConeTwistJointSW::solve(real_t timeStep) {
// solve swing limit
if (m_solveSwingLimit) {
- real_t amplitude = ((angVelB - angVelA).dot(m_swingAxis) * m_relaxationFactor * m_relaxationFactor + m_swingCorrection * (real_t(1.) / timeStep) * m_biasFactor);
+ real_t amplitude = ((angVelB - angVelA).dot(m_swingAxis) * m_relaxationFactor * m_relaxationFactor + m_swingCorrection * (real_t(1.) / p_timestep) * m_biasFactor);
real_t impulseMag = amplitude * m_kSwing;
// Clamp the accumulated impulse
@@ -292,7 +292,7 @@ void ConeTwistJointSW::solve(real_t timeStep) {
// solve twist limit
if (m_solveTwistLimit) {
- real_t amplitude = ((angVelB - angVelA).dot(m_twistAxis) * m_relaxationFactor * m_relaxationFactor + m_twistCorrection * (real_t(1.) / timeStep) * m_biasFactor);
+ real_t amplitude = ((angVelB - angVelA).dot(m_twistAxis) * m_relaxationFactor * m_relaxationFactor + m_twistCorrection * (real_t(1.) / p_timestep) * m_biasFactor);
real_t impulseMag = amplitude * m_kTwist;
// Clamp the accumulated impulse
diff --git a/servers/physics/joints/cone_twist_joint_sw.h b/servers/physics/joints/cone_twist_joint_sw.h
index 65d26d0ca7..0c722463be 100644
--- a/servers/physics/joints/cone_twist_joint_sw.h
+++ b/servers/physics/joints/cone_twist_joint_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -104,8 +104,8 @@ public:
public:
virtual PhysicsServer::JointType get_type() const { return PhysicsServer::JOINT_CONE_TWIST; }
- virtual bool setup(real_t p_step);
- virtual void solve(real_t p_step);
+ virtual bool setup(real_t p_timestep);
+ virtual void solve(real_t p_timestep);
ConeTwistJointSW(BodySW *rbA, BodySW *rbB, const Transform &rbAFrame, const Transform &rbBFrame);
diff --git a/servers/physics/joints/generic_6dof_joint_sw.cpp b/servers/physics/joints/generic_6dof_joint_sw.cpp
index e4349bda9a..70cc549e2d 100644
--- a/servers/physics/joints/generic_6dof_joint_sw.cpp
+++ b/servers/physics/joints/generic_6dof_joint_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -298,7 +298,7 @@ bool Generic6DOFJointSW::testAngularLimitMotor(int axis_index) {
return m_angularLimits[axis_index].needApplyTorques();
}
-bool Generic6DOFJointSW::setup(real_t p_step) {
+bool Generic6DOFJointSW::setup(real_t p_timestep) {
// Clear accumulated impulses for the next simulation step
m_linearLimits.m_accumulatedImpulse = Vector3(real_t(0.), real_t(0.), real_t(0.));
@@ -347,8 +347,8 @@ bool Generic6DOFJointSW::setup(real_t p_step) {
return true;
}
-void Generic6DOFJointSW::solve(real_t timeStep) {
- m_timeStep = timeStep;
+void Generic6DOFJointSW::solve(real_t p_timestep) {
+ m_timeStep = p_timestep;
//calculateTransforms();
diff --git a/servers/physics/joints/generic_6dof_joint_sw.h b/servers/physics/joints/generic_6dof_joint_sw.h
index 4af0c93876..f6af0b1d6f 100644
--- a/servers/physics/joints/generic_6dof_joint_sw.h
+++ b/servers/physics/joints/generic_6dof_joint_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -264,8 +264,8 @@ public:
virtual PhysicsServer::JointType get_type() const { return PhysicsServer::JOINT_6DOF; }
- virtual bool setup(real_t p_step);
- virtual void solve(real_t p_step);
+ virtual bool setup(real_t p_timestep);
+ virtual void solve(real_t p_timestep);
//! Calcs global transform of the offsets
/*!
diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp
index 3938427cea..fe20a55b60 100644
--- a/servers/physics/joints/hinge_joint_sw.cpp
+++ b/servers/physics/joints/hinge_joint_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints/hinge_joint_sw.h b/servers/physics/joints/hinge_joint_sw.h
index 5ebf0cb165..8e0f9a4da0 100644
--- a/servers/physics/joints/hinge_joint_sw.h
+++ b/servers/physics/joints/hinge_joint_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints/jacobian_entry_sw.h b/servers/physics/joints/jacobian_entry_sw.h
index 537a9a8f3d..79ce0e6157 100644
--- a/servers/physics/joints/jacobian_entry_sw.h
+++ b/servers/physics/joints/jacobian_entry_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints/pin_joint_sw.cpp b/servers/physics/joints/pin_joint_sw.cpp
index 0792ffeecd..779e086858 100644
--- a/servers/physics/joints/pin_joint_sw.cpp
+++ b/servers/physics/joints/pin_joint_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints/pin_joint_sw.h b/servers/physics/joints/pin_joint_sw.h
index 1d580b6c21..670c1ab61f 100644
--- a/servers/physics/joints/pin_joint_sw.h
+++ b/servers/physics/joints/pin_joint_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints/slider_joint_sw.cpp b/servers/physics/joints/slider_joint_sw.cpp
index 947f46e960..66585f2605 100644
--- a/servers/physics/joints/slider_joint_sw.cpp
+++ b/servers/physics/joints/slider_joint_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints/slider_joint_sw.h b/servers/physics/joints/slider_joint_sw.h
index 7818ee2a5c..5079c65707 100644
--- a/servers/physics/joints/slider_joint_sw.h
+++ b/servers/physics/joints/slider_joint_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/joints_sw.h b/servers/physics/joints_sw.h
index b25939d523..b15ae08049 100644
--- a/servers/physics/joints_sw.h
+++ b/servers/physics/joints_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp
index 151fc44476..8d6f7b3fd8 100644
--- a/servers/physics/physics_server_sw.cpp
+++ b/servers/physics/physics_server_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "physics_server_sw.h"
+
#include "broad_phase_basic.h"
#include "broad_phase_octree.h"
#include "joints/cone_twist_joint_sw.h"
@@ -1206,117 +1207,6 @@ bool PhysicsServerSW::generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis p_a
return generic_6dof_joint->get_flag(p_axis, p_flag);
}
-#if 0
-void PhysicsServerSW::joint_set_param(RID p_joint, JointParam p_param, real_t p_value) {
-
- JointSW *joint = joint_owner.get(p_joint);
- ERR_FAIL_COND(!joint);
-
- switch(p_param) {
- case JOINT_PARAM_BIAS: joint->set_bias(p_value); break;
- case JOINT_PARAM_MAX_BIAS: joint->set_max_bias(p_value); break;
- case JOINT_PARAM_MAX_FORCE: joint->set_max_force(p_value); break;
- }
-
-
-}
-
-real_t PhysicsServerSW::joint_get_param(RID p_joint,JointParam p_param) const {
-
- const JointSW *joint = joint_owner.get(p_joint);
- ERR_FAIL_COND_V(!joint,-1);
-
- switch(p_param) {
- case JOINT_PARAM_BIAS: return joint->get_bias(); break;
- case JOINT_PARAM_MAX_BIAS: return joint->get_max_bias(); break;
- case JOINT_PARAM_MAX_FORCE: return joint->get_max_force(); break;
- }
-
- return 0;
-}
-
-
-RID PhysicsServerSW::pin_joint_create(const Vector3& p_pos,RID p_body_a,RID p_body_b) {
-
- BodySW *A=body_owner.get(p_body_a);
- ERR_FAIL_COND_V(!A,RID());
- BodySW *B=NULL;
- if (body_owner.owns(p_body_b)) {
- B=body_owner.get(p_body_b);
- ERR_FAIL_COND_V(!B,RID());
- }
-
- JointSW *joint = memnew( PinJointSW(p_pos,A,B) );
- RID self = joint_owner.make_rid(joint);
- joint->set_self(self);
-
- return self;
-}
-
-RID PhysicsServerSW::groove_joint_create(const Vector3& p_a_groove1,const Vector3& p_a_groove2, const Vector3& p_b_anchor, RID p_body_a,RID p_body_b) {
-
-
- BodySW *A=body_owner.get(p_body_a);
- ERR_FAIL_COND_V(!A,RID());
-
- BodySW *B=body_owner.get(p_body_b);
- ERR_FAIL_COND_V(!B,RID());
-
- JointSW *joint = memnew( GrooveJointSW(p_a_groove1,p_a_groove2,p_b_anchor,A,B) );
- RID self = joint_owner.make_rid(joint);
- joint->set_self(self);
- return self;
-
-
-}
-
-RID PhysicsServerSW::damped_spring_joint_create(const Vector3& p_anchor_a,const Vector3& p_anchor_b,RID p_body_a,RID p_body_b) {
-
- BodySW *A=body_owner.get(p_body_a);
- ERR_FAIL_COND_V(!A,RID());
-
- BodySW *B=body_owner.get(p_body_b);
- ERR_FAIL_COND_V(!B,RID());
-
- JointSW *joint = memnew( DampedSpringJointSW(p_anchor_a,p_anchor_b,A,B) );
- RID self = joint_owner.make_rid(joint);
- joint->set_self(self);
- return self;
-
-}
-
-void PhysicsServerSW::damped_string_joint_set_param(RID p_joint, DampedStringParam p_param, real_t p_value) {
-
-
- JointSW *j = joint_owner.get(p_joint);
- ERR_FAIL_COND(!j);
- ERR_FAIL_COND(j->get_type()!=JOINT_DAMPED_SPRING);
-
- DampedSpringJointSW *dsj = static_cast<DampedSpringJointSW*>(j);
- dsj->set_param(p_param,p_value);
-}
-
-real_t PhysicsServerSW::damped_string_joint_get_param(RID p_joint, DampedStringParam p_param) const {
-
- JointSW *j = joint_owner.get(p_joint);
- ERR_FAIL_COND_V(!j,0);
- ERR_FAIL_COND_V(j->get_type()!=JOINT_DAMPED_SPRING,0);
-
- DampedSpringJointSW *dsj = static_cast<DampedSpringJointSW*>(j);
- return dsj->get_param(p_param);
-}
-
-PhysicsServer::JointType PhysicsServerSW::joint_get_type(RID p_joint) const {
-
-
- JointSW *joint = joint_owner.get(p_joint);
- ERR_FAIL_COND_V(!joint,JOINT_PIN);
-
- return joint->get_type();
-}
-
-#endif
-
void PhysicsServerSW::free(RID p_rid) {
if (shape_owner.owns(p_rid)) {
diff --git a/servers/physics/physics_server_sw.h b/servers/physics/physics_server_sw.h
index bae2839b71..2e1fa7065a 100644
--- a/servers/physics/physics_server_sw.h
+++ b/servers/physics/physics_server_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -127,7 +127,7 @@ public:
virtual void area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value);
virtual void area_set_transform(RID p_area, const Transform &p_transform);
- virtual Variant area_get_param(RID p_parea, AreaParameter p_param) const;
+ virtual Variant area_get_param(RID p_area, AreaParameter p_param) const;
virtual Transform area_get_transform(RID p_area) const;
virtual void area_set_ray_pickable(RID p_area, bool p_enable);
@@ -264,18 +264,6 @@ public:
virtual void joint_set_solver_priority(RID p_joint, int p_priority);
virtual int joint_get_solver_priority(RID p_joint) const;
-#if 0
- virtual void joint_set_param(RID p_joint, JointParam p_param, real_t p_value);
- virtual real_t joint_get_param(RID p_joint,JointParam p_param) const;
-
- virtual RID pin_joint_create(const Vector3& p_pos,RID p_body_a,RID p_body_b=RID());
- virtual RID groove_joint_create(const Vector3& p_a_groove1,const Vector3& p_a_groove2, const Vector3& p_b_anchor, RID p_body_a,RID p_body_b);
- virtual RID damped_spring_joint_create(const Vector3& p_anchor_a,const Vector3& p_anchor_b,RID p_body_a,RID p_body_b=RID());
- virtual void damped_string_joint_set_param(RID p_joint, DampedStringParam p_param, real_t p_value);
- virtual real_t damped_string_joint_get_param(RID p_joint, DampedStringParam p_param) const;
-
- virtual JointType joint_get_type(RID p_joint) const;
-#endif
/* MISC */
virtual void free(RID p_rid);
diff --git a/servers/physics/shape_sw.cpp b/servers/physics/shape_sw.cpp
index b4004c8c94..f02ff03fcf 100644
--- a/servers/physics/shape_sw.cpp
+++ b/servers/physics/shape_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,9 +28,11 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "shape_sw.h"
+
#include "geometry.h"
#include "quick_hull.h"
#include "sort.h"
+
#define _POINT_SNAP 0.001953125
#define _EDGE_IS_VALID_SUPPORT_THRESHOLD 0.0002
#define _FACE_IS_VALID_SUPPORT_THRESHOLD 0.9998
@@ -1473,119 +1475,6 @@ void ConcavePolygonShapeSW::_setup(PoolVector<Vector3> p_faces) {
PoolVector<Vector3>::Read r = p_faces.read();
const Vector3 *facesr = r.ptr();
-#if 0
- Map<Vector3,int> point_map;
- List<Face> face_list;
-
-
- for(int i=0;i<src_face_count;i++) {
-
- Face3 faceaux;
-
- for(int j=0;j<3;j++) {
-
- faceaux.vertex[j]=facesr[i*3+j].snapped(_POINT_SNAP);
- //faceaux.vertex[j]=facesr[i*3+j];//facesr[i*3+j].snapped(_POINT_SNAP);
- }
-
- ERR_CONTINUE( faceaux.is_degenerate() );
-
- Face face;
-
- for(int j=0;j<3;j++) {
-
-
- Map<Vector3,int>::Element *E=point_map.find(faceaux.vertex[j]);
- if (E) {
-
- face.indices[j]=E->value();
- } else {
-
- face.indices[j]=point_map.size();
- point_map.insert(faceaux.vertex[j],point_map.size());
-
- }
- }
-
- face_list.push_back(face);
- }
-
- vertices.resize( point_map.size() );
-
- PoolVector<Vector3>::Write vw = vertices.write();
- Vector3 *verticesw=vw.ptr();
-
- AABB _aabb;
-
- for( Map<Vector3,int>::Element *E=point_map.front();E;E=E->next()) {
-
- if (E==point_map.front()) {
- _aabb.pos=E->key();
- } else {
-
- _aabb.expand_to(E->key());
- }
- verticesw[E->value()]=E->key();
- }
-
- point_map.clear(); // not needed anymore
-
- faces.resize(face_list.size());
- PoolVector<Face>::Write w = faces.write();
- Face *facesw=w.ptr();
-
- int fc=0;
-
- for( List<Face>::Element *E=face_list.front();E;E=E->next()) {
-
- facesw[fc++]=E->get();
- }
-
- face_list.clear();
-
-
- PoolVector<_VolumeSW_BVH_Element> bvh_array;
- bvh_array.resize( fc );
-
- PoolVector<_VolumeSW_BVH_Element>::Write bvhw = bvh_array.write();
- _VolumeSW_BVH_Element *bvh_arrayw=bvhw.ptr();
-
-
- for(int i=0;i<fc;i++) {
-
- AABB face_aabb;
- face_aabb.pos=verticesw[facesw[i].indices[0]];
- face_aabb.expand_to( verticesw[facesw[i].indices[1]] );
- face_aabb.expand_to( verticesw[facesw[i].indices[2]] );
-
- bvh_arrayw[i].face_index=i;
- bvh_arrayw[i].aabb=face_aabb;
- bvh_arrayw[i].center=face_aabb.pos+face_aabb.size*0.5;
-
- }
-
- w=PoolVector<Face>::Write();
- vw=PoolVector<Vector3>::Write();
-
-
- int count=0;
- _VolumeSW_BVH *bvh_tree=_volume_sw_build_bvh(bvh_arrayw,fc,count);
-
- ERR_FAIL_COND(count==0);
-
- bvhw=PoolVector<_VolumeSW_BVH_Element>::Write();
-
- bvh.resize( count+1 );
-
- PoolVector<BVH>::Write bvhw2 = bvh.write();
- BVH*bvh_arrayw2=bvhw2.ptr();
-
- int idx=0;
- _fill_bvh(bvh_tree,bvh_arrayw2,idx);
-
- set_aabb(_aabb);
-
-#else
PoolVector<_VolumeSW_BVH_Element> bvh_array;
bvh_array.resize(src_face_count);
@@ -1638,8 +1527,6 @@ void ConcavePolygonShapeSW::_setup(PoolVector<Vector3> p_faces) {
_fill_bvh(bvh_tree, bvh_arrayw2, idx);
configure(_aabb); // this type of shape has no margin
-
-#endif
}
void ConcavePolygonShapeSW::set_data(const Variant &p_data) {
diff --git a/servers/physics/shape_sw.h b/servers/physics/shape_sw.h
index aa1975b655..151b84c054 100644
--- a/servers/physics/shape_sw.h
+++ b/servers/physics/shape_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -385,7 +385,7 @@ public:
virtual void project_range(const Vector3 &p_normal, const Transform &p_transform, real_t &r_min, real_t &r_max) const;
virtual Vector3 get_support(const Vector3 &p_normal) const;
- virtual bool intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_result, Vector3 &r_normal) const;
+ virtual bool intersect_segment(const Vector3 &p_begin, const Vector3 &p_end, Vector3 &r_point, Vector3 &r_normal) const;
virtual bool intersect_point(const Vector3 &p_point) const;
virtual Vector3 get_closest_point_to(const Vector3 &p_point) const;
diff --git a/servers/physics/space_sw.cpp b/servers/physics/space_sw.cpp
index 094cfa4656..17e2df6c9e 100644
--- a/servers/physics/space_sw.cpp
+++ b/servers/physics/space_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "space_sw.h"
+
#include "collision_solver_sw.h"
#include "physics_server_sw.h"
#include "project_settings.h"
@@ -267,20 +268,13 @@ bool PhysicsDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transform
continue;
}
-//test initial overlap
-#if 0
- if (CollisionSolverSW::solve_static(shape,p_xform,col_obj->get_shape(shape_idx),col_obj_xform,NULL,NULL,&sep_axis)) {
- print_line("failed initial cast (collision at beginning)");
- return false;
- }
-#else
+ //test initial overlap
sep_axis = p_motion.normalized();
if (!CollisionSolverSW::solve_distance(shape, p_xform, col_obj->get_shape(shape_idx), col_obj_xform, point_A, point_B, aabb, &sep_axis)) {
//print_line("failed motion cast (no collision)");
return false;
}
-#endif
//just do kinematic solving
real_t low = 0;
@@ -474,8 +468,7 @@ bool PhysicsDirectSpaceStateSW::rest_info(RID p_shape, const Transform &p_shape_
Vector3 PhysicsDirectSpaceStateSW::get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const {
- CollisionObjectSW *obj = NULL;
- obj = PhysicsServerSW::singleton->area_owner.getornull(p_object);
+ CollisionObjectSW *obj = PhysicsServerSW::singleton->area_owner.getornull(p_object);
if (!obj) {
obj = PhysicsServerSW::singleton->body_owner.getornull(p_object);
}
@@ -598,11 +591,8 @@ bool SpaceSW::test_body_motion(BodySW *p_body, const Transform &p_from, const Ve
cbk.amount = 0;
cbk.ptr = sr;
- CollisionSolverSW::CallbackResult cbkres = NULL;
-
- PhysicsServerSW::CollCbkData *cbkptr = NULL;
- cbkptr = &cbk;
- cbkres = PhysicsServerSW::_shape_col_cbk;
+ PhysicsServerSW::CollCbkData *cbkptr = &cbk;
+ CollisionSolverSW::CallbackResult cbkres = PhysicsServerSW::_shape_col_cbk;
bool collided = false;
@@ -635,21 +625,6 @@ bool SpaceSW::test_body_motion(BodySW *p_body, const Transform &p_from, const Ve
Vector3 a = sr[i * 2 + 0];
Vector3 b = sr[i * 2 + 1];
-
-#if 0
- Vector3 rel = b-a;
- real_t d = rel.length();
- if (d==0)
- continue;
-
- Vector3 n = rel/d;
- real_t traveled = n.dot(recover_motion);
- a+=n*traveled;
-
- real_t d = a.distance_to(b);
- if (d<margin)
- continue;
-#endif
recover_motion += (b - a) * 0.4;
}
diff --git a/servers/physics/space_sw.h b/servers/physics/space_sw.h
index dc7799d992..56f4d2f10d 100644
--- a/servers/physics/space_sw.h
+++ b/servers/physics/space_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/step_sw.cpp b/servers/physics/step_sw.cpp
index 5b5f5201db..79a55e0af1 100644
--- a/servers/physics/step_sw.cpp
+++ b/servers/physics/step_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics/step_sw.h b/servers/physics/step_sw.h
index 893bcfa6ad..56acd8ac37 100644
--- a/servers/physics/step_sw.h
+++ b/servers/physics/step_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/area_2d_sw.cpp b/servers/physics_2d/area_2d_sw.cpp
index fc5167c720..6c0bc2c186 100644
--- a/servers/physics_2d/area_2d_sw.cpp
+++ b/servers/physics_2d/area_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/area_2d_sw.h b/servers/physics_2d/area_2d_sw.h
index 6d74a4b0f6..622729bfe8 100644
--- a/servers/physics_2d/area_2d_sw.h
+++ b/servers/physics_2d/area_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/area_pair_2d_sw.cpp b/servers/physics_2d/area_pair_2d_sw.cpp
index 184db944da..9b43305a61 100644
--- a/servers/physics_2d/area_pair_2d_sw.cpp
+++ b/servers/physics_2d/area_pair_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/area_pair_2d_sw.h b/servers/physics_2d/area_pair_2d_sw.h
index 05954424f8..4a046c5f55 100644
--- a/servers/physics_2d/area_pair_2d_sw.h
+++ b/servers/physics_2d/area_pair_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp
index 91b5646ef5..eb5fb5a729 100644
--- a/servers/physics_2d/body_2d_sw.cpp
+++ b/servers/physics_2d/body_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/body_2d_sw.h b/servers/physics_2d/body_2d_sw.h
index 412f2f51cd..0ffad62f45 100644
--- a/servers/physics_2d/body_2d_sw.h
+++ b/servers/physics_2d/body_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/body_pair_2d_sw.cpp b/servers/physics_2d/body_pair_2d_sw.cpp
index 484d4503d0..828b90e5d0 100644
--- a/servers/physics_2d/body_pair_2d_sw.cpp
+++ b/servers/physics_2d/body_pair_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/body_pair_2d_sw.h b/servers/physics_2d/body_pair_2d_sw.h
index 4d2b3b31f9..4817ea72f6 100644
--- a/servers/physics_2d/body_pair_2d_sw.h
+++ b/servers/physics_2d/body_pair_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/broad_phase_2d_basic.cpp b/servers/physics_2d/broad_phase_2d_basic.cpp
index a0bcd37fbc..e15f47a946 100644
--- a/servers/physics_2d/broad_phase_2d_basic.cpp
+++ b/servers/physics_2d/broad_phase_2d_basic.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -124,10 +124,10 @@ void BroadPhase2DBasic::set_pair_callback(PairCallback p_pair_callback, void *p_
pair_userdata = p_userdata;
pair_callback = p_pair_callback;
}
-void BroadPhase2DBasic::set_unpair_callback(UnpairCallback p_pair_callback, void *p_userdata) {
+void BroadPhase2DBasic::set_unpair_callback(UnpairCallback p_unpair_callback, void *p_userdata) {
unpair_userdata = p_userdata;
- unpair_callback = p_pair_callback;
+ unpair_callback = p_unpair_callback;
}
void BroadPhase2DBasic::update() {
diff --git a/servers/physics_2d/broad_phase_2d_basic.h b/servers/physics_2d/broad_phase_2d_basic.h
index edd788266a..1e9a4280db 100644
--- a/servers/physics_2d/broad_phase_2d_basic.h
+++ b/servers/physics_2d/broad_phase_2d_basic.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.cpp b/servers/physics_2d/broad_phase_2d_hash_grid.cpp
index 0330bfa9f3..6c800a4b49 100644
--- a/servers/physics_2d/broad_phase_2d_hash_grid.cpp
+++ b/servers/physics_2d/broad_phase_2d_hash_grid.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.h b/servers/physics_2d/broad_phase_2d_hash_grid.h
index 2234557857..8da72c5fe0 100644
--- a/servers/physics_2d/broad_phase_2d_hash_grid.h
+++ b/servers/physics_2d/broad_phase_2d_hash_grid.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -167,7 +167,7 @@ class BroadPhase2DHashGrid : public BroadPhase2DSW {
void _check_motion(Element *p_elem);
public:
- virtual ID create(CollisionObject2DSW *p_object_, int p_subindex = 0);
+ virtual ID create(CollisionObject2DSW *p_object, int p_subindex = 0);
virtual void move(ID p_id, const Rect2 &p_aabb);
virtual void set_static(ID p_id, bool p_static);
virtual void remove(ID p_id);
diff --git a/servers/physics_2d/broad_phase_2d_sw.cpp b/servers/physics_2d/broad_phase_2d_sw.cpp
index a412f76567..d3840d570e 100644
--- a/servers/physics_2d/broad_phase_2d_sw.cpp
+++ b/servers/physics_2d/broad_phase_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/broad_phase_2d_sw.h b/servers/physics_2d/broad_phase_2d_sw.h
index 0309cbe730..7e7fc7d1da 100644
--- a/servers/physics_2d/broad_phase_2d_sw.h
+++ b/servers/physics_2d/broad_phase_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/collision_object_2d_sw.cpp b/servers/physics_2d/collision_object_2d_sw.cpp
index 8f13f1130a..b68fa14f4b 100644
--- a/servers/physics_2d/collision_object_2d_sw.cpp
+++ b/servers/physics_2d/collision_object_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/collision_object_2d_sw.h
index 5e29132e8d..db1270633f 100644
--- a/servers/physics_2d/collision_object_2d_sw.h
+++ b/servers/physics_2d/collision_object_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -90,7 +90,7 @@ protected:
void _set_static(bool p_static);
virtual void _shapes_changed() = 0;
- void _set_space(Space2DSW *space);
+ void _set_space(Space2DSW *p_space);
CollisionObject2DSW(Type p_type);
diff --git a/servers/physics_2d/collision_solver_2d_sat.cpp b/servers/physics_2d/collision_solver_2d_sat.cpp
index a5a6cd7eac..bf8478d0b1 100644
--- a/servers/physics_2d/collision_solver_2d_sat.cpp
+++ b/servers/physics_2d/collision_solver_2d_sat.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "collision_solver_2d_sat.h"
+
#include "geometry.h"
struct _CollectorCallback2D {
@@ -89,124 +90,6 @@ _FORCE_INLINE_ static void _generate_contacts_edge_edge(const Vector2 *p_points_
ERR_FAIL_COND(p_point_count_B != 2); // circle is actually a 4x3 matrix
#endif
-#if 0
- Vector2 rel_A=p_points_A[1]-p_points_A[0];
- Vector2 rel_B=p_points_B[1]-p_points_B[0];
-
- Vector2 t = p_collector->normal.tangent();
-
- print_line("tangent: "+t);
-
- real_t dA[2]={t.dot(p_points_A[0]),t.dot(p_points_A[1])};
- Vector2 pA[2]={p_points_A[0],p_points_A[1]};
-
- if (dA[0]>dA[1]) {
- SWAP(dA[0],dA[1]);
- SWAP(pA[0],pA[1]);
- }
-
- real_t dB[2]={t.dot(p_points_B[0]),t.dot(p_points_B[1])};
- Vector2 pB[2]={p_points_B[0],p_points_B[1]};
- if (dB[0]>dB[1]) {
- SWAP(dB[0],dB[1]);
- SWAP(pB[0],pB[1]);
- }
-
-
- if (dA[0]<dB[0]) {
-
- Vector2 n = (p_points_A[1]-p_points_A[0]).normalized().tangent();
- real_t d = n.dot(p_points_A[1]);
-
- if (dA[1]>dB[1]) {
- //A contains B
- for(int i=0;i<2;i++) {
-
- Vector2 b = p_points_B[i];
- Vector2 a = n.plane_project(d,b);
- if (p_collector->normal.dot(a) > p_collector->normal.dot(b)-CMP_EPSILON)
- continue;
- p_collector->call(a,b);
-
- }
- } else {
-
- // B0,A1 containment
-
- Vector2 n_B = (p_points_B[1]-p_points_B[0]).normalized().tangent();
- real_t d_B = n_B.dot(p_points_B[1]);
-
- // first, B on A
-
- {
- Vector2 b = p_points_B[0];
- Vector2 a = n.plane_project(d,b);
- if (p_collector->normal.dot(a) < p_collector->normal.dot(b)-CMP_EPSILON)
- p_collector->call(a,b);
- }
-
- // second, A on B
-
- {
- Vector2 a = p_points_A[1];
- Vector2 b = n_B.plane_project(d_B,a);
- if (p_collector->normal.dot(a) < p_collector->normal.dot(b)-CMP_EPSILON)
- p_collector->call(a,b);
- }
-
-
-
- }
-
-
- } else {
-
- Vector2 n = (p_points_B[1]-p_points_B[0]).normalized().tangent();
- real_t d = n.dot(p_points_B[1]);
-
- if (dB[1]>dA[1]) {
- //B contains A
- for(int i=0;i<2;i++) {
-
- Vector2 a = p_points_A[i];
- Vector2 b = n.plane_project(d,a);
- if (p_collector->normal.dot(a) > p_collector->normal.dot(b)-CMP_EPSILON)
- continue;
- p_collector->call(a,b);
- }
- } else {
-
- // A0,B1 containment
- Vector2 n_A = (p_points_A[1]-p_points_A[0]).normalized().tangent();
- real_t d_A = n_A.dot(p_points_A[1]);
-
- // first A on B
-
- {
- Vector2 a = p_points_A[0];
- Vector2 b = n.plane_project(d,a);
- if (p_collector->normal.dot(a) < p_collector->normal.dot(b)-CMP_EPSILON)
- p_collector->call(a,b);
-
- }
-
- //second, B on A
-
- {
-
- Vector2 b = p_points_B[1];
- Vector2 a = n_A.plane_project(d_A,b);
- if (p_collector->normal.dot(a) < p_collector->normal.dot(b)-CMP_EPSILON)
- p_collector->call(a,b);
- }
-
- }
- }
-
-#endif
-
-#if 1
-
Vector2 n = p_collector->normal;
Vector2 t = n.tangent();
real_t dA = n.dot(p_points_A[0]);
@@ -246,38 +129,6 @@ _FORCE_INLINE_ static void _generate_contacts_edge_edge(const Vector2 *p_points_
p_collector->call(a, b);
}
}
-
-#elif 0
- Vector2 axis = rel_A.normalized(); //make an axis
- Vector2 axis_B = rel_B.normalized();
- if (axis.dot(axis_B) < 0)
- axis_B = -axis_B;
- axis = (axis + axis_B) * 0.5;
- Vector2 base_A = p_points_A[0] - axis * axis.dot(p_points_A[0]);
- Vector2 base_B = p_points_B[0] - axis * axis.dot(p_points_B[0]);
-
- //sort all 4 points in axis
- real_t dvec[4] = { axis.dot(p_points_A[0]), axis.dot(p_points_A[1]), axis.dot(p_points_B[0]), axis.dot(p_points_B[1]) };
-
- //todo , find max/min and then use 2 central points
- SortArray<real_t> sa;
- sa.sort(dvec, 4);
-
- //use the middle ones as contacts
- for (int i = 1; i <= 2; i++) {
-
- Vector2 a = base_A + axis * dvec[i];
- Vector2 b = base_B + axis * dvec[i];
- if (p_collector->normal.dot(a) > p_collector->normal.dot(b) - 0.01) {
- print_line("fail a: " + a);
- print_line("fail b: " + b);
- continue;
- }
- print_line("res a: " + a);
- print_line("res b: " + b);
- p_collector->call(a, b);
- }
-#endif
}
static void _generate_contacts_from_supports(const Vector2 *p_points_A, int p_point_count_A, const Vector2 *p_points_B, int p_point_count_B, _CollectorCallback2D *p_collector) {
@@ -504,37 +355,11 @@ public:
}
}
- /*
-
-
- print_line("**************************");
- printf("CBK: %p\n",callback->userdata);
- print_line("type A: "+itos(shape_A->get_type()));
- print_line("type B: "+itos(shape_B->get_type()));
- print_line("xform A: "+*transform_A);
- print_line("xform B: "+*transform_B);
- print_line("normal: "+best_axis);
- print_line("depth: "+rtos(best_depth));
- print_line("index: "+itos(best_axis_index));
-
- for(int i=0;i<support_count_A;i++) {
-
- print_line("A-"+itos(i)+": "+supports_A[i]);
- }
-
- for(int i=0;i<support_count_B;i++) {
-
- print_line("B-"+itos(i)+": "+supports_B[i]);
- }
-//*/
-
callback->normal = best_axis;
_generate_contacts_from_supports(supports_A, support_count_A, supports_B, support_count_B, callback);
if (callback && callback->sep_axis && *callback->sep_axis != Vector2())
*callback->sep_axis = Vector2(); //invalidate previous axis (no test)
- //CollisionSolver2DSW::CallbackResult cbk=NULL;
- //cbk(Vector2(),Vector2(),NULL);
}
_FORCE_INLINE_ SeparatorAxisTest2D(const ShapeA *p_shape_A, const Transform2D &p_transform_a, const ShapeB *p_shape_B, const Transform2D &p_transform_b, _CollectorCallback2D *p_collector, const Vector2 &p_motion_A = Vector2(), const Vector2 &p_motion_B = Vector2(), real_t p_margin_A = 0, real_t p_margin_B = 0) {
@@ -558,9 +383,6 @@ public:
};
/****** SAT TESTS *******/
-/****** SAT TESTS *******/
-/****** SAT TESTS *******/
-/****** SAT TESTS *******/
#define TEST_POINT(m_a, m_b) \
((!separator.test_axis(((m_a) - (m_b)).normalized())) || \
@@ -582,11 +404,6 @@ static void _collision_segment_segment(const Shape2DSW *p_a, const Transform2D &
return;
//this collision is kind of pointless
- /*
- if (!separator.test_previous_axis())
- return;
- */
-
if (!separator.test_cast())
return;
diff --git a/servers/physics_2d/collision_solver_2d_sat.h b/servers/physics_2d/collision_solver_2d_sat.h
index 2a075e2a30..520083c5fa 100644
--- a/servers/physics_2d/collision_solver_2d_sat.h
+++ b/servers/physics_2d/collision_solver_2d_sat.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/collision_solver_2d_sw.cpp b/servers/physics_2d/collision_solver_2d_sw.cpp
index b482f826c2..d66b917bcd 100644
--- a/servers/physics_2d/collision_solver_2d_sw.cpp
+++ b/servers/physics_2d/collision_solver_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/collision_solver_2d_sw.h b/servers/physics_2d/collision_solver_2d_sw.h
index aefd4d315d..9f3d348e91 100644
--- a/servers/physics_2d/collision_solver_2d_sw.h
+++ b/servers/physics_2d/collision_solver_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/constraint_2d_sw.h b/servers/physics_2d/constraint_2d_sw.h
index 7ff28b0cf4..252d0ee9b4 100644
--- a/servers/physics_2d/constraint_2d_sw.h
+++ b/servers/physics_2d/constraint_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/joints_2d_sw.cpp b/servers/physics_2d/joints_2d_sw.cpp
index 449765621e..897e145a3e 100644
--- a/servers/physics_2d/joints_2d_sw.cpp
+++ b/servers/physics_2d/joints_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "joints_2d_sw.h"
+
#include "space_2d_sw.h"
//based on chipmunk joint constraints
@@ -87,127 +88,12 @@ normal_relative_velocity(Body2DSW *a, Body2DSW *b, Vector2 rA, Vector2 rB, Vecto
return relative_velocity(a, b, rA, rB).dot(n);
}
-#if 0
-
-bool PinJoint2DSW::setup(real_t p_step) {
-
- Space2DSW *space = A->get_space();
- ERR_FAIL_COND_V(!space,false;)
- rA = A->get_transform().basis_xform(anchor_A);
- rB = B?B->get_transform().basis_xform(anchor_B):anchor_B;
-
- Vector2 gA = A->get_transform().get_origin();
- Vector2 gB = B?B->get_transform().get_origin():Vector2();
-
- Vector2 delta = gB - gA;
- delta = (delta+rB) -rA;
-
- real_t jdist = delta.length();
- correct=false;
- if (jdist==0)
- return false; // do not correct
-
- correct=true;
-
- n = delta / jdist;
-
- // calculate mass normal
- mass_normal = 1.0f/k_scalar(A, B, rA, rB, n);
-
- // calculate bias velocity
- //real_t maxBias = joint->constraint.maxBias;
- bias = -(get_bias()==0?space->get_constraint_bias():get_bias())*(1.0/p_step)*(jdist-dist);
- bias = CLAMP(bias, -get_max_bias(), +get_max_bias());
-
- // compute max impulse
- jn_max = get_max_force() * p_step;
-
- // apply accumulated impulse
- Vector2 j = n * jn_acc;
- A->apply_impulse(rA,-j);
- if (B)
- B->apply_impulse(rB,j);
-
- print_line("setup");
- return true;
-}
-
-
-
-void PinJoint2DSW::solve(real_t p_step){
-
- if (!correct)
- return;
-
- Vector2 ln = n;
-
- // compute relative velocity
- real_t vrn = normal_relative_velocity(A,B, rA, rB, ln);
-
- // compute normal impulse
- real_t jn = (bias - vrn)*mass_normal;
- real_t jnOld = jn_acc;
- jn_acc = CLAMP(jnOld + jn,-jn_max,jn_max); //cpfclamp(jnOld + jn, -joint->jnMax, joint->jnMax);
- jn = jn_acc - jnOld;
- print_line("jn_acc: "+rtos(jn_acc));
- Vector2 j = jn*ln;
-
- A->apply_impulse(rA,-j);
- if (B)
- B->apply_impulse(rB,j);
-
-}
-
-
-PinJoint2DSW::PinJoint2DSW(const Vector2& p_pos,Body2DSW* p_body_a,Body2DSW* p_body_b) : Joint2DSW(_arr,p_body_b?2:1) {
-
- A=p_body_a;
- B=p_body_b;
- anchor_A = p_body_a->get_inv_transform().xform(p_pos);
- anchor_B = p_body_b?p_body_b->get_inv_transform().xform(p_pos):p_pos;
-
- jn_acc=0;
- dist=0;
-
- p_body_a->add_constraint(this,0);
- if (p_body_b)
- p_body_b->add_constraint(this,1);
-
-}
-
-PinJoint2DSW::~PinJoint2DSW() {
-
- if (A)
- A->remove_constraint(this);
- if (B)
- B->remove_constraint(this);
-
-}
-
-#else
-
bool PinJoint2DSW::setup(real_t p_step) {
Space2DSW *space = A->get_space();
ERR_FAIL_COND_V(!space, false;)
rA = A->get_transform().basis_xform(anchor_A);
rB = B ? B->get_transform().basis_xform(anchor_B) : anchor_B;
-#if 0
- Vector2 gA = rA+A->get_transform().get_origin();
- Vector2 gB = B?rB+B->get_transform().get_origin():rB;
-
- VectorB delta = gB - gA;
-
- real_t jdist = delta.length();
- correct=false;
- if (jdist==0)
- return false; // do not correct
-#endif
-
- // deltaV = deltaV0 + K * impulse
- // invM = [(1/m1 + 1/m2) * eye(2) - skew(rA) * invI1 * skew(rA) - skew(rB) * invI2 * skew(rB)]
- // = [1/m1+1/m2 0 ] + invI1 * [rA.y*rA.y -rA.x*rA.y] + invI2 * [rA.y*rA.y -rA.x*rA.y]
- // [ 0 1/m1+1/m2] [-rA.x*rA.y rA.x*rA.x] [-rA.x*rA.y rA.x*rA.x]
real_t B_inv_mass = B ? B->get_inv_mass() : 0.0;
@@ -315,8 +201,6 @@ PinJoint2DSW::~PinJoint2DSW() {
B->remove_constraint(this);
}
-#endif
-
//////////////////////////////////////////////
//////////////////////////////////////////////
//////////////////////////////////////////////
@@ -408,8 +292,10 @@ bool GrooveJoint2DSW::setup(real_t p_step) {
//joint->bias = cpvclamp(cpvmult(delta, -joint->constraint.biasCoef*dt_inv), joint->constraint.maxBias);
Vector2 delta = (B->get_transform().get_origin() + rB) - (A->get_transform().get_origin() + rA);
- real_t _b = get_bias();
- _b = 0.001;
+
+ // FIXME: We used to do this assignment and then override it with 0.001 right after. Investigate why.
+ //real_t _b = get_bias();
+ real_t _b = 0.001;
gbias = (delta * -(_b == 0 ? space->get_constraint_bias() : _b) * (1.0 / p_step)).clamped(get_max_bias());
// apply accumulated impulse
diff --git a/servers/physics_2d/joints_2d_sw.h b/servers/physics_2d/joints_2d_sw.h
index 548a8b778f..11cb41d9d1 100644
--- a/servers/physics_2d/joints_2d_sw.h
+++ b/servers/physics_2d/joints_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -56,46 +56,6 @@ public:
max_force = max_bias = 3.40282e+38;
};
};
-#if 0
-
-class PinJoint2DSW : public Joint2DSW {
-
- union {
- struct {
- Body2DSW *A;
- Body2DSW *B;
- };
-
- Body2DSW *_arr[2];
- };
-
- Vector2 anchor_A;
- Vector2 anchor_B;
- real_t dist;
- real_t jn_acc;
- real_t jn_max;
- real_t max_distance;
- real_t mass_normal;
- real_t bias;
-
- Vector2 rA,rB;
- Vector2 n; //normal
- bool correct;
-
-
-public:
-
- virtual Physics2DServer::JointType get_type() const { return Physics2DServer::JOINT_PIN; }
-
- virtual bool setup(real_t p_step);
- virtual void solve(real_t p_step);
-
-
- PinJoint2DSW(const Vector2& p_pos,Body2DSW* p_body_a,Body2DSW* p_body_b=NULL);
- ~PinJoint2DSW();
-};
-
-#else
class PinJoint2DSW : public Joint2DSW {
@@ -129,7 +89,6 @@ public:
~PinJoint2DSW();
};
-#endif
class GrooveJoint2DSW : public Joint2DSW {
union {
diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp
index c698d614b8..006c5fd7b5 100644
--- a/servers/physics_2d/physics_2d_server_sw.cpp
+++ b/servers/physics_2d/physics_2d_server_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -722,11 +722,11 @@ uint32_t Physics2DServerSW::body_get_object_instance_id(RID p_body) const {
return body->get_instance_id();
};
-void Physics2DServerSW::body_set_collision_layer(RID p_body, uint32_t p_flags) {
+void Physics2DServerSW::body_set_collision_layer(RID p_body, uint32_t p_layer) {
Body2DSW *body = body_owner.get(p_body);
ERR_FAIL_COND(!body);
- body->set_collision_layer(p_flags);
+ body->set_collision_layer(p_layer);
};
uint32_t Physics2DServerSW::body_get_collision_layer(RID p_body) const {
@@ -737,11 +737,11 @@ uint32_t Physics2DServerSW::body_get_collision_layer(RID p_body) const {
return body->get_collision_layer();
};
-void Physics2DServerSW::body_set_collision_mask(RID p_body, uint32_t p_flags) {
+void Physics2DServerSW::body_set_collision_mask(RID p_body, uint32_t p_mask) {
Body2DSW *body = body_owner.get(p_body);
ERR_FAIL_COND(!body);
- body->set_collision_mask(p_flags);
+ body->set_collision_mask(p_mask);
};
uint32_t Physics2DServerSW::body_get_collision_mask(RID p_body) const {
diff --git a/servers/physics_2d/physics_2d_server_sw.h b/servers/physics_2d/physics_2d_server_sw.h
index 830ba91c98..7d3c589fa9 100644
--- a/servers/physics_2d/physics_2d_server_sw.h
+++ b/servers/physics_2d/physics_2d_server_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -134,7 +134,7 @@ public:
virtual void area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value);
virtual void area_set_transform(RID p_area, const Transform2D &p_transform);
- virtual Variant area_get_param(RID p_parea, AreaParameter p_param) const;
+ virtual Variant area_get_param(RID p_area, AreaParameter p_param) const;
virtual Transform2D area_get_transform(RID p_area) const;
virtual void area_set_monitorable(RID p_area, bool p_monitorable);
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask);
@@ -169,8 +169,8 @@ public:
virtual void body_remove_shape(RID p_body, int p_shape_idx);
virtual void body_clear_shapes(RID p_body);
- virtual void body_set_shape_disabled(RID p_body, int p_shape, bool p_disabled);
- virtual void body_set_shape_as_one_way_collision(RID p_body, int p_shape, bool p_enabled);
+ virtual void body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled);
+ virtual void body_set_shape_as_one_way_collision(RID p_body, int p_shape_idx, bool p_enable);
virtual void body_attach_object_instance_id(RID p_body, uint32_t p_ID);
virtual uint32_t body_get_object_instance_id(RID p_body) const;
@@ -182,7 +182,7 @@ public:
virtual uint32_t body_get_collision_layer(RID p_body) const;
virtual void body_set_collision_mask(RID p_body, uint32_t p_mask);
- virtual uint32_t body_get_collision_mask(RID p_) const;
+ virtual uint32_t body_get_collision_mask(RID p_body) const;
virtual void body_set_param(RID p_body, BodyParameter p_param, real_t p_value);
virtual real_t body_get_param(RID p_body, BodyParameter p_param) const;
diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.cpp b/servers/physics_2d/physics_2d_server_wrap_mt.cpp
index 8d19153268..a4e6abfd45 100644
--- a/servers/physics_2d/physics_2d_server_wrap_mt.cpp
+++ b/servers/physics_2d/physics_2d_server_wrap_mt.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.h b/servers/physics_2d/physics_2d_server_wrap_mt.h
index 8058709c06..189419e8e4 100644
--- a/servers/physics_2d/physics_2d_server_wrap_mt.h
+++ b/servers/physics_2d/physics_2d_server_wrap_mt.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/shape_2d_sw.cpp b/servers/physics_2d/shape_2d_sw.cpp
index e153ee985c..20d0d38b17 100644
--- a/servers/physics_2d/shape_2d_sw.cpp
+++ b/servers/physics_2d/shape_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "shape_2d_sw.h"
+
#include "geometry.h"
#include "sort.h"
diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/shape_2d_sw.h
index a75a4338e7..0128f7ee70 100644
--- a/servers/physics_2d/shape_2d_sw.h
+++ b/servers/physics_2d/shape_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp
index a17d1f6a12..9b2e586993 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/space_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "space_2d_sw.h"
+
#include "collision_solver_2d_sw.h"
#include "physics_2d_server_sw.h"
@@ -532,11 +533,8 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const Transform2D &p_from, co
cbk.amount = 0;
cbk.ptr = sr;
- CollisionSolver2DSW::CallbackResult cbkres = NULL;
-
- Physics2DServerSW::CollCbkData *cbkptr = NULL;
- cbkptr = &cbk;
- cbkres = Physics2DServerSW::_shape_col_cbk;
+ Physics2DServerSW::CollCbkData *cbkptr = &cbk;
+ CollisionSolver2DSW::CallbackResult cbkres = Physics2DServerSW::_shape_col_cbk;
bool collided = false;
@@ -578,21 +576,6 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const Transform2D &p_from, co
Vector2 a = sr[i * 2 + 0];
Vector2 b = sr[i * 2 + 1];
-
-#if 0
- Vector2 rel = b-a;
- real_t d = rel.length();
- if (d==0)
- continue;
-
- Vector2 n = rel/d;
- real_t traveled = n.dot(recover_motion);
- a+=n*traveled;
-
- real_t d = a.distance_to(b);
- if (d<margin)
- continue;
-#endif
recover_motion += (b - a) * 0.4;
}
@@ -678,25 +661,21 @@ bool Space2DSW::test_body_motion(Body2DSW *p_body, const Transform2D &p_from, co
}
}
- if (col_obj->get_type() == CollisionObject2DSW::TYPE_BODY) {
+ if (col_obj->is_shape_set_as_one_way_collision(j)) {
- const Body2DSW *body = static_cast<const Body2DSW *>(col_obj);
- if (col_obj->is_shape_set_as_one_way_collision(j)) {
+ Vector2 cd[2];
+ Physics2DServerSW::CollCbkData cbk;
+ cbk.max = 1;
+ cbk.amount = 0;
+ cbk.ptr = cd;
+ cbk.valid_dir = body_shape_xform.get_axis(1).normalized();
+ ;
+ cbk.valid_depth = 10e20;
- Vector2 cd[2];
- Physics2DServerSW::CollCbkData cbk;
- cbk.max = 1;
- cbk.amount = 0;
- cbk.ptr = cd;
- cbk.valid_dir = body_shape_xform.get_axis(1).normalized();
- ;
- cbk.valid_depth = 10e20;
-
- Vector2 sep = mnormal; //important optimization for this to work fast enough
- bool collided = CollisionSolver2DSW::solve(body_shape, body_shape_xform, p_motion * (hi + contact_max_allowed_penetration), col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), Physics2DServerSW::_shape_col_cbk, &cbk, &sep, 0);
- if (!collided || cbk.amount == 0) {
- continue;
- }
+ Vector2 sep = mnormal; //important optimization for this to work fast enough
+ bool collided = CollisionSolver2DSW::solve(body_shape, body_shape_xform, p_motion * (hi + contact_max_allowed_penetration), col_obj->get_shape(shape_idx), col_obj_xform, Vector2(), Physics2DServerSW::_shape_col_cbk, &cbk, &sep, 0);
+ if (!collided || cbk.amount == 0) {
+ continue;
}
}
diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h
index 4bd81c054f..ed6136e372 100644
--- a/servers/physics_2d/space_2d_sw.h
+++ b/servers/physics_2d/space_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/step_2d_sw.cpp b/servers/physics_2d/step_2d_sw.cpp
index f43fef4eef..8d6adf004d 100644
--- a/servers/physics_2d/step_2d_sw.cpp
+++ b/servers/physics_2d/step_2d_sw.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d/step_2d_sw.h b/servers/physics_2d/step_2d_sw.h
index bdcb34f3ae..41227d8e9a 100644
--- a/servers/physics_2d/step_2d_sw.h
+++ b/servers/physics_2d/step_2d_sw.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp
index 7b0e5ab445..06966e2452 100644
--- a/servers/physics_2d_server.cpp
+++ b/servers/physics_2d_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -245,11 +245,11 @@ Dictionary Physics2DDirectSpaceState::_intersect_ray(const Vector2 &p_from, cons
return d;
}
-Array Physics2DDirectSpaceState::_intersect_shape(const Ref<Physics2DShapeQueryParameters> &psq, int p_max_results) {
+Array Physics2DDirectSpaceState::_intersect_shape(const Ref<Physics2DShapeQueryParameters> &p_shape_query, int p_max_results) {
Vector<ShapeResult> sr;
sr.resize(p_max_results);
- int rc = intersect_shape(psq->shape, psq->transform, psq->motion, psq->margin, sr.ptr(), sr.size(), psq->exclude, psq->collision_layer, psq->object_type_mask);
+ int rc = intersect_shape(p_shape_query->shape, p_shape_query->transform, p_shape_query->motion, p_shape_query->margin, sr.ptr(), sr.size(), p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
Array ret;
ret.resize(rc);
for (int i = 0; i < rc; i++) {
@@ -266,10 +266,10 @@ Array Physics2DDirectSpaceState::_intersect_shape(const Ref<Physics2DShapeQueryP
return ret;
}
-Array Physics2DDirectSpaceState::_cast_motion(const Ref<Physics2DShapeQueryParameters> &psq) {
+Array Physics2DDirectSpaceState::_cast_motion(const Ref<Physics2DShapeQueryParameters> &p_shape_query) {
float closest_safe, closest_unsafe;
- bool res = cast_motion(psq->shape, psq->transform, psq->motion, psq->margin, closest_safe, closest_unsafe, psq->exclude, psq->collision_layer, psq->object_type_mask);
+ bool res = cast_motion(p_shape_query->shape, p_shape_query->transform, p_shape_query->motion, p_shape_query->margin, closest_safe, closest_unsafe, p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
if (!res)
return Array();
Array ret;
@@ -307,12 +307,12 @@ Array Physics2DDirectSpaceState::_intersect_point(const Vector2 &p_point, int p_
return r;
}
-Array Physics2DDirectSpaceState::_collide_shape(const Ref<Physics2DShapeQueryParameters> &psq, int p_max_results) {
+Array Physics2DDirectSpaceState::_collide_shape(const Ref<Physics2DShapeQueryParameters> &p_shape_query, int p_max_results) {
Vector<Vector2> ret;
ret.resize(p_max_results * 2);
int rc = 0;
- bool res = collide_shape(psq->shape, psq->transform, psq->motion, psq->margin, ret.ptr(), p_max_results, rc, psq->exclude, psq->collision_layer, psq->object_type_mask);
+ bool res = collide_shape(p_shape_query->shape, p_shape_query->transform, p_shape_query->motion, p_shape_query->margin, ret.ptr(), p_max_results, rc, p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
if (!res)
return Array();
Array r;
@@ -321,11 +321,11 @@ Array Physics2DDirectSpaceState::_collide_shape(const Ref<Physics2DShapeQueryPar
r[i] = ret[i];
return r;
}
-Dictionary Physics2DDirectSpaceState::_get_rest_info(const Ref<Physics2DShapeQueryParameters> &psq) {
+Dictionary Physics2DDirectSpaceState::_get_rest_info(const Ref<Physics2DShapeQueryParameters> &p_shape_query) {
ShapeRestInfo sri;
- bool res = rest_info(psq->shape, psq->transform, psq->motion, psq->margin, &sri, psq->exclude, psq->collision_layer, psq->object_type_mask);
+ bool res = rest_info(p_shape_query->shape, p_shape_query->transform, p_shape_query->motion, p_shape_query->margin, &sri, p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
Dictionary r;
if (!res)
return r;
@@ -354,12 +354,12 @@ void Physics2DDirectSpaceState::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_rest_info", "shape"), &Physics2DDirectSpaceState::_get_rest_info);
//ClassDB::bind_method(D_METHOD("cast_motion","shape","xform","motion","exclude","umask"),&Physics2DDirectSpaceState::_intersect_shape,DEFVAL(Array()),DEFVAL(0));
- BIND_CONSTANT(TYPE_MASK_STATIC_BODY);
- BIND_CONSTANT(TYPE_MASK_KINEMATIC_BODY);
- BIND_CONSTANT(TYPE_MASK_RIGID_BODY);
- BIND_CONSTANT(TYPE_MASK_CHARACTER_BODY);
- BIND_CONSTANT(TYPE_MASK_AREA);
- BIND_CONSTANT(TYPE_MASK_COLLISION);
+ BIND_ENUM_CONSTANT(TYPE_MASK_STATIC_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_KINEMATIC_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_RIGID_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_CHARACTER_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_AREA);
+ BIND_ENUM_CONSTANT(TYPE_MASK_COLLISION);
}
int Physics2DShapeQueryResult::get_result_count() const {
@@ -604,79 +604,79 @@ void Physics2DServer::_bind_methods() {
//ClassDB::bind_method(D_METHOD("sync"),&Physics2DServer::sync);
//ClassDB::bind_method(D_METHOD("flush_queries"),&Physics2DServer::flush_queries);
- BIND_CONSTANT(SPACE_PARAM_CONTACT_RECYCLE_RADIUS);
- BIND_CONSTANT(SPACE_PARAM_CONTACT_MAX_SEPARATION);
- BIND_CONSTANT(SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION);
- BIND_CONSTANT(SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD);
- BIND_CONSTANT(SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD);
- BIND_CONSTANT(SPACE_PARAM_BODY_TIME_TO_SLEEP);
- BIND_CONSTANT(SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS);
-
- BIND_CONSTANT(SHAPE_LINE);
- BIND_CONSTANT(SHAPE_SEGMENT);
- BIND_CONSTANT(SHAPE_CIRCLE);
- BIND_CONSTANT(SHAPE_RECTANGLE);
- BIND_CONSTANT(SHAPE_CAPSULE);
- BIND_CONSTANT(SHAPE_CONVEX_POLYGON);
- BIND_CONSTANT(SHAPE_CONCAVE_POLYGON);
- BIND_CONSTANT(SHAPE_CUSTOM);
-
- BIND_CONSTANT(AREA_PARAM_GRAVITY);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_VECTOR);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_IS_POINT);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_DISTANCE_SCALE);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_POINT_ATTENUATION);
- BIND_CONSTANT(AREA_PARAM_LINEAR_DAMP);
- BIND_CONSTANT(AREA_PARAM_ANGULAR_DAMP);
- BIND_CONSTANT(AREA_PARAM_PRIORITY);
-
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_DISABLED);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE_REPLACE);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE_COMBINE);
-
- BIND_CONSTANT(BODY_MODE_STATIC);
- BIND_CONSTANT(BODY_MODE_KINEMATIC);
- BIND_CONSTANT(BODY_MODE_RIGID);
- BIND_CONSTANT(BODY_MODE_CHARACTER);
-
- BIND_CONSTANT(BODY_PARAM_BOUNCE);
- BIND_CONSTANT(BODY_PARAM_FRICTION);
- BIND_CONSTANT(BODY_PARAM_MASS);
- BIND_CONSTANT(BODY_PARAM_INERTIA);
- BIND_CONSTANT(BODY_PARAM_GRAVITY_SCALE);
- BIND_CONSTANT(BODY_PARAM_LINEAR_DAMP);
- BIND_CONSTANT(BODY_PARAM_ANGULAR_DAMP);
- BIND_CONSTANT(BODY_PARAM_MAX);
-
- BIND_CONSTANT(BODY_STATE_TRANSFORM);
- BIND_CONSTANT(BODY_STATE_LINEAR_VELOCITY);
- BIND_CONSTANT(BODY_STATE_ANGULAR_VELOCITY);
- BIND_CONSTANT(BODY_STATE_SLEEPING);
- BIND_CONSTANT(BODY_STATE_CAN_SLEEP);
-
- BIND_CONSTANT(JOINT_PIN);
- BIND_CONSTANT(JOINT_GROOVE);
- BIND_CONSTANT(JOINT_DAMPED_SPRING);
-
- BIND_CONSTANT(DAMPED_STRING_REST_LENGTH);
- BIND_CONSTANT(DAMPED_STRING_STIFFNESS);
- BIND_CONSTANT(DAMPED_STRING_DAMPING);
-
- BIND_CONSTANT(CCD_MODE_DISABLED);
- BIND_CONSTANT(CCD_MODE_CAST_RAY);
- BIND_CONSTANT(CCD_MODE_CAST_SHAPE);
-
- //BIND_CONSTANT( TYPE_BODY );
- //BIND_CONSTANT( TYPE_AREA );
-
- BIND_CONSTANT(AREA_BODY_ADDED);
- BIND_CONSTANT(AREA_BODY_REMOVED);
-
- BIND_CONSTANT(INFO_ACTIVE_OBJECTS);
- BIND_CONSTANT(INFO_COLLISION_PAIRS);
- BIND_CONSTANT(INFO_ISLAND_COUNT);
+ BIND_ENUM_CONSTANT(SPACE_PARAM_CONTACT_RECYCLE_RADIUS);
+ BIND_ENUM_CONSTANT(SPACE_PARAM_CONTACT_MAX_SEPARATION);
+ BIND_ENUM_CONSTANT(SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION);
+ BIND_ENUM_CONSTANT(SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD);
+ BIND_ENUM_CONSTANT(SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD);
+ BIND_ENUM_CONSTANT(SPACE_PARAM_BODY_TIME_TO_SLEEP);
+ BIND_ENUM_CONSTANT(SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS);
+
+ BIND_ENUM_CONSTANT(SHAPE_LINE);
+ BIND_ENUM_CONSTANT(SHAPE_SEGMENT);
+ BIND_ENUM_CONSTANT(SHAPE_CIRCLE);
+ BIND_ENUM_CONSTANT(SHAPE_RECTANGLE);
+ BIND_ENUM_CONSTANT(SHAPE_CAPSULE);
+ BIND_ENUM_CONSTANT(SHAPE_CONVEX_POLYGON);
+ BIND_ENUM_CONSTANT(SHAPE_CONCAVE_POLYGON);
+ BIND_ENUM_CONSTANT(SHAPE_CUSTOM);
+
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_VECTOR);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_IS_POINT);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_DISTANCE_SCALE);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_POINT_ATTENUATION);
+ BIND_ENUM_CONSTANT(AREA_PARAM_LINEAR_DAMP);
+ BIND_ENUM_CONSTANT(AREA_PARAM_ANGULAR_DAMP);
+ BIND_ENUM_CONSTANT(AREA_PARAM_PRIORITY);
+
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_DISABLED);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE_REPLACE);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE_COMBINE);
+
+ BIND_ENUM_CONSTANT(BODY_MODE_STATIC);
+ BIND_ENUM_CONSTANT(BODY_MODE_KINEMATIC);
+ BIND_ENUM_CONSTANT(BODY_MODE_RIGID);
+ BIND_ENUM_CONSTANT(BODY_MODE_CHARACTER);
+
+ BIND_ENUM_CONSTANT(BODY_PARAM_BOUNCE);
+ BIND_ENUM_CONSTANT(BODY_PARAM_FRICTION);
+ BIND_ENUM_CONSTANT(BODY_PARAM_MASS);
+ BIND_ENUM_CONSTANT(BODY_PARAM_INERTIA);
+ BIND_ENUM_CONSTANT(BODY_PARAM_GRAVITY_SCALE);
+ BIND_ENUM_CONSTANT(BODY_PARAM_LINEAR_DAMP);
+ BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP);
+ BIND_ENUM_CONSTANT(BODY_PARAM_MAX);
+
+ BIND_ENUM_CONSTANT(BODY_STATE_TRANSFORM);
+ BIND_ENUM_CONSTANT(BODY_STATE_LINEAR_VELOCITY);
+ BIND_ENUM_CONSTANT(BODY_STATE_ANGULAR_VELOCITY);
+ BIND_ENUM_CONSTANT(BODY_STATE_SLEEPING);
+ BIND_ENUM_CONSTANT(BODY_STATE_CAN_SLEEP);
+
+ BIND_ENUM_CONSTANT(JOINT_PIN);
+ BIND_ENUM_CONSTANT(JOINT_GROOVE);
+ BIND_ENUM_CONSTANT(JOINT_DAMPED_SPRING);
+
+ BIND_ENUM_CONSTANT(DAMPED_STRING_REST_LENGTH);
+ BIND_ENUM_CONSTANT(DAMPED_STRING_STIFFNESS);
+ BIND_ENUM_CONSTANT(DAMPED_STRING_DAMPING);
+
+ BIND_ENUM_CONSTANT(CCD_MODE_DISABLED);
+ BIND_ENUM_CONSTANT(CCD_MODE_CAST_RAY);
+ BIND_ENUM_CONSTANT(CCD_MODE_CAST_SHAPE);
+
+ //BIND_ENUM_CONSTANT( TYPE_BODY );
+ //BIND_ENUM_CONSTANT( TYPE_AREA );
+
+ BIND_ENUM_CONSTANT(AREA_BODY_ADDED);
+ BIND_ENUM_CONSTANT(AREA_BODY_REMOVED);
+
+ BIND_ENUM_CONSTANT(INFO_ACTIVE_OBJECTS);
+ BIND_ENUM_CONSTANT(INFO_COLLISION_PAIRS);
+ BIND_ENUM_CONSTANT(INFO_ISLAND_COUNT);
}
Physics2DServer::Physics2DServer() {
diff --git a/servers/physics_2d_server.h b/servers/physics_2d_server.h
index f3acd8df18..cd6a20e6b8 100644
--- a/servers/physics_2d_server.h
+++ b/servers/physics_2d_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -201,6 +201,8 @@ public:
Physics2DDirectSpaceState();
};
+VARIANT_ENUM_CAST(Physics2DDirectSpaceState::ObjectTypeMask);
+
class Physics2DShapeQueryResult : public Reference {
GDCLASS(Physics2DShapeQueryResult, Reference);
diff --git a/servers/physics_server.cpp b/servers/physics_server.cpp
index fbf104c6ac..5097e0a5d2 100644
--- a/servers/physics_server.cpp
+++ b/servers/physics_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -270,11 +270,11 @@ Dictionary PhysicsDirectSpaceState::_intersect_ray(const Vector3 &p_from, const
return d;
}
-Array PhysicsDirectSpaceState::_intersect_shape(const Ref<PhysicsShapeQueryParameters> &psq, int p_max_results) {
+Array PhysicsDirectSpaceState::_intersect_shape(const Ref<PhysicsShapeQueryParameters> &p_shape_query, int p_max_results) {
Vector<ShapeResult> sr;
sr.resize(p_max_results);
- int rc = intersect_shape(psq->shape, psq->transform, psq->margin, sr.ptr(), sr.size(), psq->exclude, psq->collision_layer, psq->object_type_mask);
+ int rc = intersect_shape(p_shape_query->shape, p_shape_query->transform, p_shape_query->margin, sr.ptr(), sr.size(), p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
Array ret;
ret.resize(rc);
for (int i = 0; i < rc; i++) {
@@ -290,10 +290,10 @@ Array PhysicsDirectSpaceState::_intersect_shape(const Ref<PhysicsShapeQueryParam
return ret;
}
-Array PhysicsDirectSpaceState::_cast_motion(const Ref<PhysicsShapeQueryParameters> &psq, const Vector3 &p_motion) {
+Array PhysicsDirectSpaceState::_cast_motion(const Ref<PhysicsShapeQueryParameters> &p_shape_query, const Vector3 &p_motion) {
float closest_safe, closest_unsafe;
- bool res = cast_motion(psq->shape, psq->transform, p_motion, psq->margin, closest_safe, closest_unsafe, psq->exclude, psq->collision_layer, psq->object_type_mask);
+ bool res = cast_motion(p_shape_query->shape, p_shape_query->transform, p_motion, p_shape_query->margin, closest_safe, closest_unsafe, p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
if (!res)
return Array();
Array ret;
@@ -302,12 +302,12 @@ Array PhysicsDirectSpaceState::_cast_motion(const Ref<PhysicsShapeQueryParameter
ret[1] = closest_unsafe;
return ret;
}
-Array PhysicsDirectSpaceState::_collide_shape(const Ref<PhysicsShapeQueryParameters> &psq, int p_max_results) {
+Array PhysicsDirectSpaceState::_collide_shape(const Ref<PhysicsShapeQueryParameters> &p_shape_query, int p_max_results) {
Vector<Vector3> ret;
ret.resize(p_max_results * 2);
int rc = 0;
- bool res = collide_shape(psq->shape, psq->transform, psq->margin, ret.ptr(), p_max_results, rc, psq->exclude, psq->collision_layer, psq->object_type_mask);
+ bool res = collide_shape(p_shape_query->shape, p_shape_query->transform, p_shape_query->margin, ret.ptr(), p_max_results, rc, p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
if (!res)
return Array();
Array r;
@@ -316,11 +316,11 @@ Array PhysicsDirectSpaceState::_collide_shape(const Ref<PhysicsShapeQueryParamet
r[i] = ret[i];
return r;
}
-Dictionary PhysicsDirectSpaceState::_get_rest_info(const Ref<PhysicsShapeQueryParameters> &psq) {
+Dictionary PhysicsDirectSpaceState::_get_rest_info(const Ref<PhysicsShapeQueryParameters> &p_shape_query) {
ShapeRestInfo sri;
- bool res = rest_info(psq->shape, psq->transform, psq->margin, &sri, psq->exclude, psq->collision_layer, psq->object_type_mask);
+ bool res = rest_info(p_shape_query->shape, p_shape_query->transform, p_shape_query->margin, &sri, p_shape_query->exclude, p_shape_query->collision_layer, p_shape_query->object_type_mask);
Dictionary r;
if (!res)
return r;
@@ -349,12 +349,12 @@ void PhysicsDirectSpaceState::_bind_methods() {
ClassDB::bind_method(D_METHOD("collide_shape", "shape", "max_results"), &PhysicsDirectSpaceState::_collide_shape, DEFVAL(32));
ClassDB::bind_method(D_METHOD("get_rest_info", "shape"), &PhysicsDirectSpaceState::_get_rest_info);
- BIND_CONSTANT(TYPE_MASK_STATIC_BODY);
- BIND_CONSTANT(TYPE_MASK_KINEMATIC_BODY);
- BIND_CONSTANT(TYPE_MASK_RIGID_BODY);
- BIND_CONSTANT(TYPE_MASK_CHARACTER_BODY);
- BIND_CONSTANT(TYPE_MASK_AREA);
- BIND_CONSTANT(TYPE_MASK_COLLISION);
+ BIND_ENUM_CONSTANT(TYPE_MASK_STATIC_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_KINEMATIC_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_RIGID_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_CHARACTER_BODY);
+ BIND_ENUM_CONSTANT(TYPE_MASK_AREA);
+ BIND_ENUM_CONSTANT(TYPE_MASK_COLLISION);
}
int PhysicsShapeQueryResult::get_result_count() const {
@@ -506,11 +506,11 @@ void PhysicsServer::_bind_methods() {
/* JOINT API */
- BIND_CONSTANT(JOINT_PIN);
- BIND_CONSTANT(JOINT_HINGE);
- BIND_CONSTANT(JOINT_SLIDER);
- BIND_CONSTANT(JOINT_CONE_TWIST);
- BIND_CONSTANT(JOINT_6DOF);
+ BIND_ENUM_CONSTANT(JOINT_PIN);
+ BIND_ENUM_CONSTANT(JOINT_HINGE);
+ BIND_ENUM_CONSTANT(JOINT_SLIDER);
+ BIND_ENUM_CONSTANT(JOINT_CONE_TWIST);
+ BIND_ENUM_CONSTANT(JOINT_6DOF);
ClassDB::bind_method(D_METHOD("joint_create_pin", "body_A", "local_A", "body_B", "local_B"), &PhysicsServer::joint_create_pin);
ClassDB::bind_method(D_METHOD("pin_joint_set_param", "joint", "param", "value"), &PhysicsServer::pin_joint_set_param);
@@ -522,20 +522,21 @@ void PhysicsServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("pin_joint_set_local_b", "joint", "local_B"), &PhysicsServer::pin_joint_set_local_b);
ClassDB::bind_method(D_METHOD("pin_joint_get_local_b", "joint"), &PhysicsServer::pin_joint_get_local_b);
- BIND_CONSTANT(PIN_JOINT_BIAS);
- BIND_CONSTANT(PIN_JOINT_DAMPING);
- BIND_CONSTANT(PIN_JOINT_IMPULSE_CLAMP);
-
- BIND_CONSTANT(HINGE_JOINT_BIAS);
- BIND_CONSTANT(HINGE_JOINT_LIMIT_UPPER);
- BIND_CONSTANT(HINGE_JOINT_LIMIT_LOWER);
- BIND_CONSTANT(HINGE_JOINT_LIMIT_BIAS);
- BIND_CONSTANT(HINGE_JOINT_LIMIT_SOFTNESS);
- BIND_CONSTANT(HINGE_JOINT_LIMIT_RELAXATION);
- BIND_CONSTANT(HINGE_JOINT_MOTOR_TARGET_VELOCITY);
- BIND_CONSTANT(HINGE_JOINT_MOTOR_MAX_IMPULSE);
- BIND_CONSTANT(HINGE_JOINT_FLAG_USE_LIMIT);
- BIND_CONSTANT(HINGE_JOINT_FLAG_ENABLE_MOTOR);
+ BIND_ENUM_CONSTANT(PIN_JOINT_BIAS);
+ BIND_ENUM_CONSTANT(PIN_JOINT_DAMPING);
+ BIND_ENUM_CONSTANT(PIN_JOINT_IMPULSE_CLAMP);
+
+ BIND_ENUM_CONSTANT(HINGE_JOINT_BIAS);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_LIMIT_UPPER);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_LIMIT_LOWER);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_LIMIT_BIAS);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_LIMIT_RELAXATION);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_MOTOR_TARGET_VELOCITY);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_MOTOR_MAX_IMPULSE);
+
+ BIND_ENUM_CONSTANT(HINGE_JOINT_FLAG_USE_LIMIT);
+ BIND_ENUM_CONSTANT(HINGE_JOINT_FLAG_ENABLE_MOTOR);
ClassDB::bind_method(D_METHOD("joint_create_hinge", "body_A", "hinge_A", "body_B", "hinge_B"), &PhysicsServer::joint_create_hinge);
@@ -550,60 +551,60 @@ void PhysicsServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("slider_joint_set_param", "joint", "param", "value"), &PhysicsServer::slider_joint_set_param);
ClassDB::bind_method(D_METHOD("slider_joint_get_param", "joint", "param"), &PhysicsServer::slider_joint_get_param);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_UPPER);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_LOWER);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_DAMPING);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_MOTION_SOFTNESS);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_MOTION_RESTITUTION);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_MOTION_DAMPING);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION);
- BIND_CONSTANT(SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING);
-
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_UPPER);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_LOWER);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_DAMPING);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_MOTION_DAMPING);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION);
- BIND_CONSTANT(SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING);
- BIND_CONSTANT(SLIDER_JOINT_MAX);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_UPPER);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_LOWER);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_LIMIT_DAMPING);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_MOTION_SOFTNESS);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_MOTION_RESTITUTION);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_MOTION_DAMPING);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING);
+
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_UPPER);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_LOWER);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_LIMIT_DAMPING);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_MOTION_DAMPING);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING);
+ BIND_ENUM_CONSTANT(SLIDER_JOINT_MAX);
ClassDB::bind_method(D_METHOD("joint_create_cone_twist", "body_A", "local_ref_A", "body_B", "local_ref_B"), &PhysicsServer::joint_create_cone_twist);
ClassDB::bind_method(D_METHOD("cone_twist_joint_set_param", "joint", "param", "value"), &PhysicsServer::cone_twist_joint_set_param);
ClassDB::bind_method(D_METHOD("cone_twist_joint_get_param", "joint", "param"), &PhysicsServer::cone_twist_joint_get_param);
- BIND_CONSTANT(CONE_TWIST_JOINT_SWING_SPAN);
- BIND_CONSTANT(CONE_TWIST_JOINT_TWIST_SPAN);
- BIND_CONSTANT(CONE_TWIST_JOINT_BIAS);
- BIND_CONSTANT(CONE_TWIST_JOINT_SOFTNESS);
- BIND_CONSTANT(CONE_TWIST_JOINT_RELAXATION);
-
- BIND_CONSTANT(G6DOF_JOINT_LINEAR_LOWER_LIMIT);
- BIND_CONSTANT(G6DOF_JOINT_LINEAR_UPPER_LIMIT);
- BIND_CONSTANT(G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(G6DOF_JOINT_LINEAR_RESTITUTION);
- BIND_CONSTANT(G6DOF_JOINT_LINEAR_DAMPING);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_LOWER_LIMIT);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_UPPER_LIMIT);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_DAMPING);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_RESTITUTION);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_FORCE_LIMIT);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_ERP);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY);
- BIND_CONSTANT(G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT);
-
- BIND_CONSTANT(G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT);
- BIND_CONSTANT(G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT);
- BIND_CONSTANT(G6DOF_JOINT_FLAG_ENABLE_MOTOR);
+ BIND_ENUM_CONSTANT(CONE_TWIST_JOINT_SWING_SPAN);
+ BIND_ENUM_CONSTANT(CONE_TWIST_JOINT_TWIST_SPAN);
+ BIND_ENUM_CONSTANT(CONE_TWIST_JOINT_BIAS);
+ BIND_ENUM_CONSTANT(CONE_TWIST_JOINT_SOFTNESS);
+ BIND_ENUM_CONSTANT(CONE_TWIST_JOINT_RELAXATION);
+
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_LINEAR_LOWER_LIMIT);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_LINEAR_UPPER_LIMIT);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_LINEAR_RESTITUTION);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_LINEAR_DAMPING);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_LOWER_LIMIT);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_UPPER_LIMIT);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_DAMPING);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_RESTITUTION);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_FORCE_LIMIT);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_ERP);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT);
+
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT);
+ BIND_ENUM_CONSTANT(G6DOF_JOINT_FLAG_ENABLE_MOTOR);
ClassDB::bind_method(D_METHOD("joint_get_type", "joint"), &PhysicsServer::joint_get_type);
@@ -642,67 +643,67 @@ void PhysicsServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_process_info", "process_info"), &PhysicsServer::get_process_info);
- BIND_CONSTANT(SHAPE_PLANE);
- BIND_CONSTANT(SHAPE_RAY);
- BIND_CONSTANT(SHAPE_SPHERE);
- BIND_CONSTANT(SHAPE_BOX);
- BIND_CONSTANT(SHAPE_CAPSULE);
- BIND_CONSTANT(SHAPE_CONVEX_POLYGON);
- BIND_CONSTANT(SHAPE_CONCAVE_POLYGON);
- BIND_CONSTANT(SHAPE_HEIGHTMAP);
- BIND_CONSTANT(SHAPE_CUSTOM);
-
- BIND_CONSTANT(AREA_PARAM_GRAVITY);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_VECTOR);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_IS_POINT);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_DISTANCE_SCALE);
- BIND_CONSTANT(AREA_PARAM_GRAVITY_POINT_ATTENUATION);
- BIND_CONSTANT(AREA_PARAM_LINEAR_DAMP);
- BIND_CONSTANT(AREA_PARAM_ANGULAR_DAMP);
- BIND_CONSTANT(AREA_PARAM_PRIORITY);
-
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_DISABLED);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE_REPLACE);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE);
- BIND_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE_COMBINE);
-
- BIND_CONSTANT(BODY_MODE_STATIC);
- BIND_CONSTANT(BODY_MODE_KINEMATIC);
- BIND_CONSTANT(BODY_MODE_RIGID);
- BIND_CONSTANT(BODY_MODE_CHARACTER);
-
- BIND_CONSTANT(BODY_PARAM_BOUNCE);
- BIND_CONSTANT(BODY_PARAM_FRICTION);
- BIND_CONSTANT(BODY_PARAM_MASS);
- BIND_CONSTANT(BODY_PARAM_GRAVITY_SCALE);
- BIND_CONSTANT(BODY_PARAM_ANGULAR_DAMP);
- BIND_CONSTANT(BODY_PARAM_LINEAR_DAMP);
- BIND_CONSTANT(BODY_PARAM_MAX);
-
- BIND_CONSTANT(BODY_STATE_TRANSFORM);
- BIND_CONSTANT(BODY_STATE_LINEAR_VELOCITY);
- BIND_CONSTANT(BODY_STATE_ANGULAR_VELOCITY);
- BIND_CONSTANT(BODY_STATE_SLEEPING);
- BIND_CONSTANT(BODY_STATE_CAN_SLEEP);
+ BIND_ENUM_CONSTANT(SHAPE_PLANE);
+ BIND_ENUM_CONSTANT(SHAPE_RAY);
+ BIND_ENUM_CONSTANT(SHAPE_SPHERE);
+ BIND_ENUM_CONSTANT(SHAPE_BOX);
+ BIND_ENUM_CONSTANT(SHAPE_CAPSULE);
+ BIND_ENUM_CONSTANT(SHAPE_CONVEX_POLYGON);
+ BIND_ENUM_CONSTANT(SHAPE_CONCAVE_POLYGON);
+ BIND_ENUM_CONSTANT(SHAPE_HEIGHTMAP);
+ BIND_ENUM_CONSTANT(SHAPE_CUSTOM);
+
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_VECTOR);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_IS_POINT);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_DISTANCE_SCALE);
+ BIND_ENUM_CONSTANT(AREA_PARAM_GRAVITY_POINT_ATTENUATION);
+ BIND_ENUM_CONSTANT(AREA_PARAM_LINEAR_DAMP);
+ BIND_ENUM_CONSTANT(AREA_PARAM_ANGULAR_DAMP);
+ BIND_ENUM_CONSTANT(AREA_PARAM_PRIORITY);
+
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_DISABLED);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_COMBINE_REPLACE);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE);
+ BIND_ENUM_CONSTANT(AREA_SPACE_OVERRIDE_REPLACE_COMBINE);
+
+ BIND_ENUM_CONSTANT(BODY_MODE_STATIC);
+ BIND_ENUM_CONSTANT(BODY_MODE_KINEMATIC);
+ BIND_ENUM_CONSTANT(BODY_MODE_RIGID);
+ BIND_ENUM_CONSTANT(BODY_MODE_CHARACTER);
+
+ BIND_ENUM_CONSTANT(BODY_PARAM_BOUNCE);
+ BIND_ENUM_CONSTANT(BODY_PARAM_FRICTION);
+ BIND_ENUM_CONSTANT(BODY_PARAM_MASS);
+ BIND_ENUM_CONSTANT(BODY_PARAM_GRAVITY_SCALE);
+ BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP);
+ BIND_ENUM_CONSTANT(BODY_PARAM_LINEAR_DAMP);
+ BIND_ENUM_CONSTANT(BODY_PARAM_MAX);
+
+ BIND_ENUM_CONSTANT(BODY_STATE_TRANSFORM);
+ BIND_ENUM_CONSTANT(BODY_STATE_LINEAR_VELOCITY);
+ BIND_ENUM_CONSTANT(BODY_STATE_ANGULAR_VELOCITY);
+ BIND_ENUM_CONSTANT(BODY_STATE_SLEEPING);
+ BIND_ENUM_CONSTANT(BODY_STATE_CAN_SLEEP);
/*
- BIND_CONSTANT( JOINT_PIN );
- BIND_CONSTANT( JOINT_GROOVE );
- BIND_CONSTANT( JOINT_DAMPED_SPRING );
+ BIND_ENUM_CONSTANT( JOINT_PIN );
+ BIND_ENUM_CONSTANT( JOINT_GROOVE );
+ BIND_ENUM_CONSTANT( JOINT_DAMPED_SPRING );
- BIND_CONSTANT( DAMPED_STRING_REST_LENGTH );
- BIND_CONSTANT( DAMPED_STRING_STIFFNESS );
- BIND_CONSTANT( DAMPED_STRING_DAMPING );
+ BIND_ENUM_CONSTANT( DAMPED_STRING_REST_LENGTH );
+ BIND_ENUM_CONSTANT( DAMPED_STRING_STIFFNESS );
+ BIND_ENUM_CONSTANT( DAMPED_STRING_DAMPING );
*/
- //BIND_CONSTANT( TYPE_BODY );
- //BIND_CONSTANT( TYPE_AREA );
+ //BIND_ENUM_CONSTANT( TYPE_BODY );
+ //BIND_ENUM_CONSTANT( TYPE_AREA );
- BIND_CONSTANT(AREA_BODY_ADDED);
- BIND_CONSTANT(AREA_BODY_REMOVED);
+ BIND_ENUM_CONSTANT(AREA_BODY_ADDED);
+ BIND_ENUM_CONSTANT(AREA_BODY_REMOVED);
- BIND_CONSTANT(INFO_ACTIVE_OBJECTS);
- BIND_CONSTANT(INFO_COLLISION_PAIRS);
- BIND_CONSTANT(INFO_ISLAND_COUNT);
+ BIND_ENUM_CONSTANT(INFO_ACTIVE_OBJECTS);
+ BIND_ENUM_CONSTANT(INFO_COLLISION_PAIRS);
+ BIND_ENUM_CONSTANT(INFO_ISLAND_COUNT);
}
PhysicsServer::PhysicsServer() {
diff --git a/servers/physics_server.h b/servers/physics_server.h
index b38e14eb0c..c6d312e0fe 100644
--- a/servers/physics_server.h
+++ b/servers/physics_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -96,6 +96,7 @@ class PhysicsShapeQueryParameters : public Reference {
GDCLASS(PhysicsShapeQueryParameters, Reference);
friend class PhysicsDirectSpaceState;
+
RID shape;
Transform transform;
float margin;
@@ -133,8 +134,6 @@ class PhysicsDirectSpaceState : public Object {
GDCLASS(PhysicsDirectSpaceState, Object);
- //Variant _intersect_ray(const Vector3& p_from, const Vector3& p_to,const Vector<RID>& p_exclude=Vector<RID>(),uint32_t p_collision_mask=0);
- //Variant _intersect_shape(const RID& p_shape, const Transform& p_xform,int p_result_max=64,const Vector<RID>& p_exclude=Vector<RID>(),uint32_t p_collision_mask=0);
public:
enum ObjectTypeMask {
TYPE_MASK_STATIC_BODY = 1 << 0,
@@ -201,6 +200,8 @@ public:
PhysicsDirectSpaceState();
};
+VARIANT_ENUM_CAST(PhysicsDirectSpaceState::ObjectTypeMask);
+
class PhysicsShapeQueryResult : public Reference {
GDCLASS(PhysicsShapeQueryResult, Reference);
@@ -623,37 +624,6 @@ 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;
-#if 0
- enum JointType {
-
- JOINT_PIN,
- JOINT_GROOVE,
- JOINT_DAMPED_SPRING
- };
-
- enum JointParam {
- JOINT_PARAM_BIAS,
- JOINT_PARAM_MAX_BIAS,
- JOINT_PARAM_MAX_FORCE,
- };
-
- virtual void joint_set_param(RID p_joint, JointParam p_param, real_t p_value)=0;
- virtual real_t joint_get_param(RID p_joint,JointParam p_param) const=0;
-
- virtual RID pin_joint_create(const Vector3& p_anchor,RID p_body_a,RID p_body_b=RID())=0;
- virtual RID groove_joint_create(const Vector3& p_a_groove1,const Vector3& p_a_groove2, const Vector3& p_b_anchor, RID p_body_a,RID p_body_b)=0;
- virtual RID damped_spring_joint_create(const Vector3& p_anchor_a,const Vector3& p_anchor_b,RID p_body_a,RID p_body_b=RID())=0;
-
- enum DampedStringParam {
- DAMPED_STRING_REST_LENGTH,
- DAMPED_STRING_STIFFNESS,
- DAMPED_STRING_DAMPING
- };
- virtual void damped_string_joint_set_param(RID p_joint, DampedStringParam p_param, real_t p_value)=0;
- virtual real_t damped_string_joint_get_param(RID p_joint, DampedStringParam p_param) const=0;
-
- virtual JointType joint_get_type(RID p_joint) const=0;
-#endif
/* QUERY API */
enum AreaBodyStatus {
@@ -701,7 +671,6 @@ VARIANT_ENUM_CAST(PhysicsServer::SliderJointParam);
VARIANT_ENUM_CAST(PhysicsServer::ConeTwistJointParam);
VARIANT_ENUM_CAST(PhysicsServer::G6DOFJointAxisParam);
VARIANT_ENUM_CAST(PhysicsServer::G6DOFJointAxisFlag);
-//VARIANT_ENUM_CAST( PhysicsServer::ObjectType );
VARIANT_ENUM_CAST(PhysicsServer::AreaBodyStatus);
VARIANT_ENUM_CAST(PhysicsServer::ProcessInfo);
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index 092f445c13..845a3443b7 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/register_server_types.h b/servers/register_server_types.h
index c183ccc8a4..2b3ac816ac 100644
--- a/servers/register_server_types.h
+++ b/servers/register_server_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/server_wrap_mt_common.h b/servers/server_wrap_mt_common.h
index 1ffa5ad14c..267e5c63b9 100644
--- a/servers/server_wrap_mt_common.h
+++ b/servers/server_wrap_mt_common.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/visual/rasterizer.cpp b/servers/visual/rasterizer.cpp
index f7ea158646..fd594fa3ee 100644
--- a/servers/visual/rasterizer.cpp
+++ b/servers/visual/rasterizer.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "rasterizer.h"
+
#include "os/os.h"
#include "print_string.h"
@@ -44,614 +45,3 @@ RasterizerStorage::RasterizerStorage() {
base_singleton = this;
}
-
-#if 0
-
-RID Rasterizer::create_default_material() {
-
- return material_create();
-}
-
-
-/* Fixed MAterial SHADER API */
-
-RID Rasterizer::_create_shader(const SpatialMaterialShaderKey& p_key) {
-
- ERR_FAIL_COND_V(!p_key.valid,RID());
- Map<SpatialMaterialShaderKey,SpatialMaterialShader>::Element *E=fixed_material_shaders.find(p_key);
-
- if (E) {
- E->get().refcount++;
- return E->get().shader;
- }
-
- uint64_t t = OS::get_singleton()->get_ticks_usec();
-
- SpatialMaterialShader fms;
- fms.refcount=1;
- fms.shader=shader_create();
-
- //create shader code
-
-
- int texcoords_used=0;
- String code;
-
- static const char* _uv_str[4]={"UV","uv_xform","UV2","uv_sphere"};
-#define _TEXUVSTR(m_idx) String(_uv_str[(p_key.texcoord_mask >> (m_idx * 2)) & 0x3])
-
-
- if (p_key.use_pointsize) {
-
- code+="UV=POINT_COORD;\n";
- }
-
-
- for(int i=0;i<VS::FIXED_MATERIAL_PARAM_MAX;i++) {
-
- if (p_key.texture_mask&(1<<i))
- texcoords_used|=(1<<((p_key.texcoord_mask>>(i*2))&0x3));
- }
-
- if (texcoords_used&(1<<VS::FIXED_MATERIAL_TEXCOORD_UV_TRANSFORM)) {
-
- code+="uniform mat4 fmp_uv_xform;\n";
- code+="vec2 uv_xform = (fmp_uv_xform * vec4(UV,0,1)).xy;\n";
- }
-
- /* HANDLE NORMAL MAPPING */
-
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_NORMAL)) {
-
- String scode;
- scode+="uniform float fmp_normal;\n";
- scode+="uniform texture fmp_normal_tex;\n";
- String uv_str;
- if (((p_key.texcoord_mask>>(VS::FIXED_MATERIAL_PARAM_NORMAL*2))&0x3)==VS::FIXED_MATERIAL_TEXCOORD_SPHERE) {
- uv_str="uv"; //sorry not supported
- } else {
- uv_str=_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_NORMAL);
- }
- if (p_key.use_xy_normalmap) {
- scode+="vec2 ywnormal=tex( fmp_normal_tex,"+uv_str+").wy * vec2(2.0,2.0) - vec2(1.0,1.0);\n";
- scode+="NORMALMAP=vec3(ywnormal,sqrt(1 - (ywnormal.x * ywnormal.x) - (ywnormal.y * ywnormal.y) ));\n";
- } else {
- scode+="NORMALMAP=tex( fmp_normal_tex,"+uv_str+").xyz * vec3(2.0,2.0,1.0) - vec3(1.0,1.0,0.0);\n";
- }
- scode+="NORMALMAP_DEPTH=fmp_normal;\n";
-
- code+=scode;
- }
-
- //handle sphere uv if used, do it here because it needs the normal, which may be transformed by a normal map
-
- if (texcoords_used&(1<<VS::FIXED_MATERIAL_TEXCOORD_SPHERE)) {
-
- String tcode;
- tcode="vec3 eye_normal = normalize(VERTEX);\n";
- tcode+="vec3 ref = (eye_normal - 2.0*dot(NORMAL, eye_normal)*NORMAL);\n";
- tcode+="ref.z+=1.0;\n";
- tcode+="vec2 uv_sphere = ref.xy*vec2(0.5,0.0-0.5)+vec2(0.5,0.0-0.5);\n";
- code+=tcode;
- }
-
- /* HANDLE DIFFUSE LIGHTING */
-
- code+="uniform color fmp_diffuse;\n";
- code+="color diffuse=fmp_diffuse;\n";
-
- if (p_key.use_color_array)
- code+="diffuse*=COLOR;\n";
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_DIFFUSE)) {
-
-
- code+="uniform texture fmp_diffuse_tex;\n";
- code+="diffuse*=tex( fmp_diffuse_tex,"+_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_DIFFUSE)+");\n";
- }
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_DETAIL)) {
-
- String dcode;
- dcode+="uniform texture fmp_detail_tex;\n";
- dcode+="uniform float fmp_detail;\n";
- dcode+="color detail=tex( fmp_detail_tex,"+_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_DETAIL)+");\n";
- //aways mix
- dcode+="diffuse=vec4(mix(diffuse.rgb,detail.rgb,detail.a*fmp_detail),diffuse.a);\n";
-
- code+=dcode;
- }
-
- if (p_key.use_alpha) {
- code+="DIFFUSE_ALPHA=diffuse;\n";
- if (p_key.discard_alpha) {
- code+="DISCARD=diffuse.a<0.5;\n";
- }
- } else {
- code+="DIFFUSE=diffuse.rgb;\n";
- }
-
- /* HANDLE SPECULAR LIGHTING */
-
- code+="uniform color fmp_specular;\n";
- code+="color specular=fmp_specular;\n";
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_SPECULAR)) {
-
- String scode;
- scode+="uniform texture fmp_specular_tex;\n";
- scode+="specular*=tex( fmp_specular_tex,"+_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_SPECULAR)+");\n";
- code+=scode;
- }
-
- code+="SPECULAR=specular.rgb;\n";
-
- code+="uniform float fmp_specular_exp;\n";
- code+="float specular_exp=fmp_specular_exp;\n";
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP)) {
-
- String scode;
- scode+="uniform texture fmp_specular_exp_tex;\n";
- scode+="specular_exp*=tex( fmp_specular_exp_tex,"+_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP)+").r;\n";
- code+=scode;
- }
-
- code+="SPEC_EXP=specular_exp;\n";
-
- /* HANDLE EMISSION LIGHTING */
-
- code+="uniform color fmp_emission;\n";
- code+="color emission=fmp_emission;\n";
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_EMISSION)) {
-
- String scode;
- scode+="uniform texture fmp_emission_tex;\n";
- scode+="emission*=tex( fmp_emission_tex,"+_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_EMISSION)+");\n";
- code+=scode;
- }
-
- code+="EMISSION=emission.rgb;\n";
-
-
- /* HANDLE GLOW */
-
- code+="uniform float fmp_glow;\n";
- code+="float glow=fmp_glow;\n";
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_GLOW)) {
-
- String scode;
- scode+="uniform texture fmp_glow_tex;\n";
- scode+="glow*=tex( fmp_glow_tex,"+_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_GLOW)+").r;\n";
- code+=scode;
- }
-
- code+="GLOW=glow;\n";
-
- if (p_key.texture_mask&(1<<VS::FIXED_MATERIAL_PARAM_SHADE_PARAM)) {
-
- String scode;
- scode+="uniform texture fmp_shade_param_tex;\n";
- scode+="SHADE_PARAM=tex( fmp_shade_param_tex,"+_TEXUVSTR(VS::FIXED_MATERIAL_PARAM_SHADE_PARAM)+").r;\n";
- code+=scode;
- } else {
-
- String scode;
- scode+="uniform float fmp_shade_param;\n";
- scode+="SHADE_PARAM=fmp_shade_param;\n";
- code+=scode;
-
- }
-
-
- //print_line("**FRAGMENT SHADER GENERATED code: \n"+code);
-
- String vcode;
- vcode="uniform float "+_fixed_material_param_names[VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP]+";\n";
- vcode+="SPEC_EXP="+_fixed_material_param_names[VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP]+";\n";
- if (p_key.use_pointsize) {
-
- vcode+="uniform float "+_fixed_material_point_size_name+";\n";
- vcode+="POINT_SIZE="+_fixed_material_point_size_name+";\n";
- //vcode+="POINT_SIZE=10.0;\n";
- }
-
- String lcode;
-
- switch(p_key.light_shader) {
-
- case VS::FIXED_MATERIAL_LIGHT_SHADER_LAMBERT: {
- //do nothing
-
- } break;
- case VS::FIXED_MATERIAL_LIGHT_SHADER_WRAP: {
-
- lcode+="float NdotL = max(0.0,((dot( NORMAL, LIGHT_DIR )+SHADE_PARAM)/(1.0+SHADE_PARAM)));";
- lcode+="vec3 half_vec = normalize(LIGHT_DIR + EYE_VEC);";
- lcode+="float eye_light = max(dot(NORMAL, half_vec),0.0);";
- lcode+="LIGHT = LIGHT_DIFFUSE * DIFFUSE * NdotL;";
- lcode+="if (NdotL > 0.0) {";
- lcode+="\tLIGHT+=LIGHT_SPECULAR * SPECULAR * pow( eye_light, SPECULAR_EXP );";
- lcode+="};";
-
- } break;
- case VS::FIXED_MATERIAL_LIGHT_SHADER_VELVET: {
- lcode+="float NdotL = max(0.0,dot( NORMAL, LIGHT_DIR ));";
- lcode+="vec3 half_vec = normalize(LIGHT_DIR + EYE_VEC);";
- lcode+="float eye_light = max(dot(NORMAL, half_vec),0.0);";
- lcode+="LIGHT = LIGHT_DIFFUSE * DIFFUSE * NdotL;";
- lcode+="float rim = (1.0-abs(dot(NORMAL,vec3(0,0,1))))*SHADE_PARAM;";
- lcode+="LIGHT += LIGHT_DIFFUSE * DIFFUSE * rim;";
- lcode+="if (NdotL > 0.0) {";
- lcode+="\tLIGHT+=LIGHT_SPECULAR * SPECULAR * pow( eye_light, SPECULAR_EXP );";
- lcode+="};";
-
-
- } break;
- case VS::FIXED_MATERIAL_LIGHT_SHADER_TOON: {
-
- lcode+="float NdotL = dot( NORMAL, LIGHT_DIR );";
- lcode+="vec3 light_ref = reflect( LIGHT_DIR, NORMAL );";
- lcode+="float eye_light = clamp( dot( light_ref, vec3(0,0,0)-EYE_VEC), 0.0, 1.0 );";
- lcode+="float NdotL_diffuse = smoothstep( max( SHADE_PARAM-0.05, 0.0-1.0), min( SHADE_PARAM+0.05, 1.0), NdotL );";
- lcode+="float spec_radius=clamp((1.0-(SPECULAR_EXP/64.0)),0.0,1.0);";
- lcode+="float NdotL_specular = smoothstep( max( spec_radius-0.05, 0.0), min( spec_radius+0.05, 1.0), eye_light )*max(NdotL,0);";
- lcode+="LIGHT = NdotL_diffuse * LIGHT_DIFFUSE*DIFFUSE + NdotL_specular * LIGHT_SPECULAR*SPECULAR;";
-
- } break;
-
- }
-
- //print_line("**VERTEX SHADER GENERATED code: \n"+vcode);
-
- shader_set_code(fms.shader,vcode,code,lcode,0,0);
-
- fixed_material_shaders[p_key]=fms;
- return fms.shader;
-}
-
-void Rasterizer::_free_shader(const SpatialMaterialShaderKey& p_key) {
-
- if (p_key.valid==0)
- return; //not a valid key
-
- Map<SpatialMaterialShaderKey,SpatialMaterialShader>::Element *E=fixed_material_shaders.find(p_key);
-
- ERR_FAIL_COND(!E);
- E->get().refcount--;
- if (E->get().refcount==0) {
- free(E->get().shader);
- fixed_material_shaders.erase(E);
- }
-
-}
-
-
-void Rasterizer::fixed_material_set_flag(RID p_material, VS::SpatialMaterialFlags p_flag, bool p_enabled) {
-
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND(!E);
- SpatialMaterial &fm=*E->get();
-
- switch(p_flag) {
-
- case VS::FIXED_MATERIAL_FLAG_USE_ALPHA: fm.use_alpha=p_enabled; break;
- case VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY: fm.use_color_array=p_enabled; break;
- case VS::FIXED_MATERIAL_FLAG_USE_POINT_SIZE: fm.use_pointsize=p_enabled; break;
- case VS::FIXED_MATERIAL_FLAG_DISCARD_ALPHA: fm.discard_alpha=p_enabled; break;
- case VS::FIXED_MATERIAL_FLAG_USE_XY_NORMALMAP: fm.use_xy_normalmap=p_enabled; break;
- }
-
- if (!fm.dirty_list.in_list())
- fixed_material_dirty_list.add( &fm.dirty_list );
-
-}
-
-bool Rasterizer::fixed_material_get_flag(RID p_material, VS::SpatialMaterialFlags p_flag) const{
-
- const Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND_V(!E,false);
- const SpatialMaterial &fm=*E->get();
- switch(p_flag) {
-
- case VS::FIXED_MATERIAL_FLAG_USE_ALPHA: return fm.use_alpha;; break;
- case VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY: return fm.use_color_array;; break;
- case VS::FIXED_MATERIAL_FLAG_USE_POINT_SIZE: return fm.use_pointsize;; break;
- case VS::FIXED_MATERIAL_FLAG_DISCARD_ALPHA: return fm.discard_alpha;; break;
- case VS::FIXED_MATERIAL_FLAG_USE_XY_NORMALMAP: return fm.use_xy_normalmap;; break;
-
- }
-
-
- return false;
-}
-
-
-RID Rasterizer::fixed_material_create() {
-
- RID mat = material_create();
- fixed_materials[mat]=memnew( SpatialMaterial() );
- SpatialMaterial &fm=*fixed_materials[mat];
- fm.self=mat;
- fm.get_key();
- material_set_flag(mat,VS::MATERIAL_FLAG_COLOR_ARRAY_SRGB,true);
- for(int i=0;i<VS::FIXED_MATERIAL_PARAM_MAX;i++) {
-
- material_set_param(mat,_fixed_material_param_names[i],fm.param[i]); //must be there
- }
- fixed_material_dirty_list.add(&fm.dirty_list);
- //print_line("FMC: "+itos(mat.get_id()));
- return mat;
-}
-
-
-
-
-void Rasterizer::fixed_material_set_parameter(RID p_material, VS::SpatialMaterialParam p_parameter, const Variant& p_value){
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND(!E);
- SpatialMaterial &fm=*E->get();
- RID material=E->key();
- ERR_FAIL_INDEX(p_parameter,VS::FIXED_MATERIAL_PARAM_MAX);
-
- if ((p_parameter==VS::FIXED_MATERIAL_PARAM_DIFFUSE || p_parameter==VS::FIXED_MATERIAL_PARAM_SPECULAR || p_parameter==VS::FIXED_MATERIAL_PARAM_EMISSION)) {
-
- if (p_value.get_type()!=Variant::COLOR) {
- ERR_EXPLAIN(String(_fixed_material_param_names[p_parameter])+" expects Color");
- ERR_FAIL();
- }
- } else {
-
- if (!p_value.is_num()) {
- ERR_EXPLAIN(String(_fixed_material_param_names[p_parameter])+" expects scalar");
- ERR_FAIL();
- }
- }
-
- fm.param[p_parameter]=p_value;
- VS::get_singleton()->material_set_param(material,_fixed_material_param_names[p_parameter],p_value);
-
-
-}
-Variant Rasterizer::fixed_material_get_parameter(RID p_material,VS::SpatialMaterialParam p_parameter) const{
-
- const Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND_V(!E,Variant());
- const SpatialMaterial &fm=*E->get();
- ERR_FAIL_INDEX_V(p_parameter,VS::FIXED_MATERIAL_PARAM_MAX,Variant());
- return fm.param[p_parameter];
-}
-
-void Rasterizer::fixed_material_set_texture(RID p_material,VS::SpatialMaterialParam p_parameter, RID p_texture){
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- if (!E) {
-
- print_line("Not found: "+itos(p_material.get_id()));
- }
- ERR_FAIL_COND(!E);
- SpatialMaterial &fm=*E->get();
-
-
- ERR_FAIL_INDEX(p_parameter,VS::FIXED_MATERIAL_PARAM_MAX);
- RID material=E->key();
- fm.texture[p_parameter]=p_texture;
- VS::get_singleton()->material_set_param(material,_fixed_material_tex_names[p_parameter],p_texture);
-
- if (!fm.dirty_list.in_list())
- fixed_material_dirty_list.add( &fm.dirty_list );
-
-
-
-
-}
-RID Rasterizer::fixed_material_get_texture(RID p_material,VS::SpatialMaterialParam p_parameter) const{
-
- const Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND_V(!E,RID());
- const SpatialMaterial &fm=*E->get();
- ERR_FAIL_INDEX_V(p_parameter,VS::FIXED_MATERIAL_PARAM_MAX,RID());
-
- return fm.texture[p_parameter];
-}
-
-
-void Rasterizer::fixed_material_set_texcoord_mode(RID p_material,VS::SpatialMaterialParam p_parameter, VS::SpatialMaterialTexCoordMode p_mode) {
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND(!E);
- SpatialMaterial &fm=*E->get();
- ERR_FAIL_INDEX(p_parameter,VS::FIXED_MATERIAL_PARAM_MAX);
-
- fm.get_key();
-
- fm.texture_tc[p_parameter]=p_mode;
-
- if (!fm.dirty_list.in_list())
- fixed_material_dirty_list.add( &fm.dirty_list );
-
-}
-
-VS::SpatialMaterialTexCoordMode Rasterizer::fixed_material_get_texcoord_mode(RID p_material,VS::SpatialMaterialParam p_parameter) const {
-
- const Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND_V(!E,VS::FIXED_MATERIAL_TEXCOORD_UV);
- const SpatialMaterial &fm=*E->get();
- ERR_FAIL_INDEX_V(p_parameter,VS::FIXED_MATERIAL_PARAM_MAX,VS::FIXED_MATERIAL_TEXCOORD_UV);
-
- return fm.texture_tc[p_parameter];
-}
-
-void Rasterizer::fixed_material_set_uv_transform(RID p_material,const Transform& p_transform) {
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND(!E);
- SpatialMaterial &fm=*E->get();
- RID material=E->key();
-
- VS::get_singleton()->material_set_param(material,_fixed_material_uv_xform_name,p_transform);
-
- fm.uv_xform=p_transform;
-
-}
-
-
-
-Transform Rasterizer::fixed_material_get_uv_transform(RID p_material) const {
-
- const Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND_V(!E,Transform());
- const SpatialMaterial &fm=*E->get();
-
- return fm.uv_xform;
-}
-
-void Rasterizer::fixed_material_set_light_shader(RID p_material,VS::SpatialMaterialLightShader p_shader) {
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND(!E);
- SpatialMaterial &fm=*E->get();
-
- fm.light_shader=p_shader;
-
- if (!fm.dirty_list.in_list())
- fixed_material_dirty_list.add( &fm.dirty_list );
-
-}
-
-VS::SpatialMaterialLightShader Rasterizer::fixed_material_get_light_shader(RID p_material) const {
-
- const Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND_V(!E,VS::FIXED_MATERIAL_LIGHT_SHADER_LAMBERT);
- const SpatialMaterial &fm=*E->get();
-
- return fm.light_shader;
-}
-
-void Rasterizer::fixed_material_set_point_size(RID p_material,float p_size) {
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND(!E);
- SpatialMaterial &fm=*E->get();
- RID material=E->key();
-
- VS::get_singleton()->material_set_param(material,_fixed_material_point_size_name,p_size);
-
- fm.point_size=p_size;
-
-
-}
-
-float Rasterizer::fixed_material_get_point_size(RID p_material) const{
-
- const Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
- ERR_FAIL_COND_V(!E,1.0);
- const SpatialMaterial &fm=*E->get();
-
- return fm.point_size;
-
-}
-
-void Rasterizer::_update_fixed_materials() {
-
-
- while(fixed_material_dirty_list.first()) {
-
- SpatialMaterial &fm=*fixed_material_dirty_list.first()->self();
-
- SpatialMaterialShaderKey new_key = fm.get_key();
- if (new_key.key!=fm.current_key.key) {
-
- _free_shader(fm.current_key);
- RID new_rid = _create_shader(new_key);
- fm.current_key=new_key;
- material_set_shader(fm.self,new_rid);
-
- if (fm.texture[VS::FIXED_MATERIAL_PARAM_DETAIL].is_valid()) {
- //send these again just in case.
- material_set_param(fm.self,_fixed_material_param_names[VS::FIXED_MATERIAL_PARAM_DETAIL],fm.param[VS::FIXED_MATERIAL_PARAM_DETAIL]);
- }
- if (fm.texture[VS::FIXED_MATERIAL_PARAM_NORMAL].is_valid()) {
- //send these again just in case.
- material_set_param(fm.self,_fixed_material_param_names[VS::FIXED_MATERIAL_PARAM_NORMAL],fm.param[VS::FIXED_MATERIAL_PARAM_NORMAL]);
- }
-
- material_set_param(fm.self,_fixed_material_uv_xform_name,fm.uv_xform);
- if (fm.use_pointsize) {
- material_set_param(fm.self,_fixed_material_point_size_name,fm.point_size);
- }
- }
-
- fixed_material_dirty_list.remove(fixed_material_dirty_list.first());
- }
-}
-
-
-void Rasterizer::_free_fixed_material(const RID& p_material) {
-
- Map<RID,SpatialMaterial*>::Element *E = fixed_materials.find(p_material);
-
- if (E) {
-
- _free_shader(E->get()->current_key); //free shader
- if (E->get()->dirty_list.in_list())
- fixed_material_dirty_list.remove( &E->get()->dirty_list);
- memdelete(E->get());
- fixed_materials.erase(E); //free material
- }
-
-
-}
-
-
-void Rasterizer::flush_frame() {
-
- //not really necessary to implement
-}
-
-Rasterizer::Rasterizer() {
-
- static const char* fm_names[VS::FIXED_MATERIAL_PARAM_MAX]={
- "diffuse",
- "detail",
- "specular",
- "emission",
- "specular_exp",
- "glow",
- "normal",
- "shade_param"};
-
- for(int i=0;i<VS::FIXED_MATERIAL_PARAM_MAX;i++) {
-
- _fixed_material_param_names[i]=String("fmp_")+fm_names[i];
- _fixed_material_tex_names[i]=String("fmp_")+fm_names[i]+"_tex";
- }
-
- _fixed_material_uv_xform_name="fmp_uv_xform";
- _fixed_material_point_size_name="fmp_point_size";
-
- draw_viewport_func=NULL;
-
- ERR_FAIL_COND( sizeof(SpatialMaterialShaderKey)!=4);
-
-}
-
-RID Rasterizer::create_overdraw_debug_material() {
- RID mat = fixed_material_create();
- fixed_material_set_parameter( mat,VisualServer::FIXED_MATERIAL_PARAM_SPECULAR,Color(0,0,0) );
- fixed_material_set_parameter( mat,VisualServer::FIXED_MATERIAL_PARAM_DIFFUSE,Color(0.1,0.1,0.2) );
- fixed_material_set_parameter( mat,VisualServer::FIXED_MATERIAL_PARAM_EMISSION,Color(0,0,0) );
- fixed_material_set_flag( mat, VS::FIXED_MATERIAL_FLAG_USE_ALPHA, true);
- material_set_flag( mat, VisualServer::MATERIAL_FLAG_UNSHADED, true );
- material_set_blend_mode( mat,VisualServer::MATERIAL_BLEND_MODE_ADD );
-
-
- return mat;
-}
-
-#endif
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index 9405f6e012..9e4acac25d 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -101,10 +101,7 @@ public:
Vector<float> blend_values;
- //BakedLightData *baked_light;
VS::ShadowCastingSetting cast_shadows;
- //Transform *baked_light_octree_xform;
- //int baked_lightmap_id;
bool mirror : 8;
bool receive_shadows : 8;
@@ -114,8 +111,6 @@ public:
float depth; //used for sorting
SelfList<InstanceBase> dependency_item;
- //InstanceBase *baked_light; //baked light to use
- //SelfList<InstanceBase> baked_light_item;
virtual void base_removed() = 0;
virtual void base_changed() = 0;
@@ -331,6 +326,7 @@ public:
virtual void light_set_projector(RID p_light, RID p_texture) = 0;
virtual void light_set_negative(RID p_light, bool p_enable) = 0;
virtual void light_set_cull_mask(RID p_light, uint32_t p_mask) = 0;
+ virtual void light_set_reverse_cull_face_mode(RID p_light, bool p_enabled) = 0;
virtual void light_omni_set_shadow_mode(RID p_light, VS::LightOmniShadowMode p_mode) = 0;
virtual void light_omni_set_shadow_detail(RID p_light, VS::LightOmniShadowDetail p_detail) = 0;
@@ -375,23 +371,6 @@ public:
virtual float reflection_probe_get_origin_max_distance(RID p_probe) const = 0;
virtual bool reflection_probe_renders_shadows(RID p_probe) const = 0;
- /* ROOM API */
-
- virtual RID room_create() = 0;
- virtual void room_add_bounds(RID p_room, const PoolVector<Vector2> &p_convex_polygon, float p_height, const Transform &p_transform) = 0;
- virtual void room_clear_bounds(RID p_room) = 0;
-
- /* PORTAL API */
-
- // portals are only (x/y) points, forming a convex shape, which its clockwise
- // order points outside. (z is 0)=0;
-
- virtual RID portal_create() = 0;
- virtual void portal_set_shape(RID p_portal, const Vector<Point2> &p_shape) = 0;
- virtual void portal_set_enabled(RID p_portal, bool p_enabled) = 0;
- virtual void portal_set_disable_distance(RID p_portal, float p_distance) = 0;
- virtual void portal_set_disabled_color(RID p_portal, const Color &p_color) = 0;
-
virtual void instance_add_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance) = 0;
virtual void instance_remove_skeleton(RID p_skeleton, RasterizerScene::InstanceBase *p_instance) = 0;
@@ -712,6 +691,7 @@ public:
RID texture;
RID normal_map;
int count;
+ bool antialiased;
CommandPolygon() {
type = TYPE_POLYGON;
@@ -1044,1026 +1024,4 @@ public:
virtual ~Rasterizer() {}
};
-#if 0
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-#include "camera_matrix.h"
-#include "map.h"
-#include "self_list.h"
-#include "servers/visual_server.h"
-
-class Rasterizer {
-protected:
-
-
- typedef void (*ItemDrawViewportFunc)(VisualServer*owner,void*ud,const Rect2& p_rect);
-
- RID create_default_material();
- RID create_overdraw_debug_material();
-
-
- /* Fixed Material Shader API */
-
- union SpatialMaterialShaderKey {
-
- struct {
- uint16_t texcoord_mask;
- uint8_t texture_mask;
- uint8_t light_shader:2;
- bool use_alpha:1;
- bool use_color_array:1;
- bool use_pointsize:1;
- bool discard_alpha:1;
- bool use_xy_normalmap:1;
- bool valid:1;
- };
-
- uint32_t key;
-
- _FORCE_INLINE_ bool operator<(const SpatialMaterialShaderKey& p_key) const { return key<p_key.key; }
- };
-
- struct SpatialMaterialShader {
-
- int refcount;
- RID shader;
- };
-
- Map<SpatialMaterialShaderKey,SpatialMaterialShader> fixed_material_shaders;
-
- RID _create_shader(const SpatialMaterialShaderKey& p_key);
- void _free_shader(const SpatialMaterialShaderKey& p_key);
-
- struct SpatialMaterial {
-
-
- RID self;
- bool use_alpha;
- bool use_color_array;
- bool discard_alpha;
- bool use_pointsize;
- bool use_xy_normalmap;
- float point_size;
- Transform uv_xform;
- VS::SpatialMaterialLightShader light_shader;
- RID texture[VS::FIXED_MATERIAL_PARAM_MAX];
- Variant param[VS::FIXED_MATERIAL_PARAM_MAX];
- VS::SpatialMaterialTexCoordMode texture_tc[VS::FIXED_MATERIAL_PARAM_MAX];
-
- SelfList<SpatialMaterial> dirty_list;
-
- SpatialMaterialShaderKey current_key;
-
- _FORCE_INLINE_ SpatialMaterialShaderKey get_key() const {
-
-
- SpatialMaterialShaderKey k;
- k.key=0;
- k.use_alpha=use_alpha;
- k.use_color_array=use_color_array;
- k.use_pointsize=use_pointsize;
- k.use_xy_normalmap=use_xy_normalmap;
- k.discard_alpha=discard_alpha;
- k.light_shader=light_shader;
- k.valid=true;
- for(int i=0;i<VS::FIXED_MATERIAL_PARAM_MAX;i++) {
- if (texture[i].is_valid()) {
- //print_line("valid: "+itos(i));
- k.texture_mask|=(1<<i);
- k.texcoord_mask|=(texture_tc[i])<<(i*2);
- }
- }
-
- return k;
- }
-
-
- SpatialMaterial() : dirty_list(this) {
-
- use_alpha=false;
- use_color_array=false;
- use_pointsize=false;
- discard_alpha=false;
- use_xy_normalmap=false;
- point_size=1.0;
- light_shader=VS::FIXED_MATERIAL_LIGHT_SHADER_LAMBERT;
- for(int i=0;i<VS::FIXED_MATERIAL_PARAM_MAX;i++) {
- texture_tc[i]=VS::FIXED_MATERIAL_TEXCOORD_UV;
- }
- param[VS::FIXED_MATERIAL_PARAM_DIFFUSE]=Color(1,1,1);
- param[VS::FIXED_MATERIAL_PARAM_DETAIL]=1.0;
- param[VS::FIXED_MATERIAL_PARAM_EMISSION]=Color(0,0,0);
- param[VS::FIXED_MATERIAL_PARAM_GLOW]=0;
- param[VS::FIXED_MATERIAL_PARAM_SHADE_PARAM]=0;
- param[VS::FIXED_MATERIAL_PARAM_SPECULAR]=Color(0.0,0.0,0.0);
- param[VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP]=40;
- param[VS::FIXED_MATERIAL_PARAM_NORMAL]=1;
-
- current_key.key=0;
-
-
- }
- };
-
- StringName _fixed_material_param_names[VS::FIXED_MATERIAL_PARAM_MAX];
- StringName _fixed_material_tex_names[VS::FIXED_MATERIAL_PARAM_MAX];
- StringName _fixed_material_uv_xform_name;
- StringName _fixed_material_point_size_name;
-
- Map<RID,SpatialMaterial*> fixed_materials;
-
- SelfList<SpatialMaterial>::List fixed_material_dirty_list;
-
-protected:
- void _update_fixed_materials();
- void _free_fixed_material(const RID& p_material);
-
-public:
-
- enum ShadowFilterTechnique {
- SHADOW_FILTER_NONE,
- SHADOW_FILTER_PCF5,
- SHADOW_FILTER_PCF13,
- SHADOW_FILTER_ESM,
- SHADOW_FILTER_VSM,
- };
-
-
-
- /* TEXTURE API */
-
- virtual RID texture_create()=0;
- RID texture_create_from_image(const Image& p_image,uint32_t p_flags=VS::TEXTURE_FLAGS_DEFAULT); // helper
- virtual void texture_allocate(RID p_texture,int p_width, int p_height,Image::Format p_format,uint32_t p_flags=VS::TEXTURE_FLAGS_DEFAULT)=0;
- virtual void texture_set_data(RID p_texture,const Image& p_image,VS::CubeMapSide p_cube_side=VS::CUBEMAP_LEFT)=0;
- virtual Image texture_get_data(RID p_texture,VS::CubeMapSide p_cube_side=VS::CUBEMAP_LEFT) const=0;
- virtual void texture_set_flags(RID p_texture,uint32_t p_flags)=0;
- virtual uint32_t texture_get_flags(RID p_texture) const=0;
- virtual Image::Format texture_get_format(RID p_texture) const=0;
- virtual uint32_t texture_get_width(RID p_texture) const=0;
- virtual uint32_t texture_get_height(RID p_texture) const=0;
- virtual bool texture_has_alpha(RID p_texture) const=0;
- virtual void texture_set_size_override(RID p_texture,int p_width, int p_height)=0;
-
- virtual void texture_set_reload_hook(RID p_texture,ObjectID p_owner,const StringName& p_function) const=0;
-
- virtual void texture_set_path(RID p_texture,const String& p_path)=0;
- virtual String texture_get_path(RID p_texture) const=0;
- virtual void texture_debug_usage(List<VS::TextureInfo> *r_info)=0;
-
- virtual void texture_set_shrink_all_x2_on_set_data(bool p_enable)=0;
-
- /* SHADER API */
-
- virtual RID shader_create(VS::ShaderMode p_mode=VS::SHADER_MATERIAL)=0;
-
- virtual void shader_set_mode(RID p_shader,VS::ShaderMode p_mode)=0;
- virtual VS::ShaderMode shader_get_mode(RID p_shader) const=0;
-
- virtual void shader_set_code(RID p_shader, const String& p_vertex, const String& p_fragment,const String& p_light,int p_vertex_ofs=0,int p_fragment_ofs=0,int p_light_ofs=0)=0;
- virtual String shader_get_fragment_code(RID p_shader) const=0;
- virtual String shader_get_vertex_code(RID p_shader) const=0;
- virtual String shader_get_light_code(RID p_shader) const=0;
-
- virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const=0;
-
- virtual void shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture)=0;
- virtual RID shader_get_default_texture_param(RID p_shader, const StringName& p_name) const=0;
-
- virtual Variant shader_get_default_param(RID p_shader, const StringName& p_name)=0;
-
- /* COMMON MATERIAL API */
-
- virtual RID material_create()=0;
-
- virtual void material_set_shader(RID p_shader_material, RID p_shader)=0;
- virtual RID material_get_shader(RID p_shader_material) const=0;
-
- virtual void material_set_param(RID p_material, const StringName& p_param, const Variant& p_value)=0;
- virtual Variant material_get_param(RID p_material, const StringName& p_param) const=0;
-
- virtual void material_set_flag(RID p_material, VS::MaterialFlag p_flag,bool p_enabled)=0;
- virtual bool material_get_flag(RID p_material,VS::MaterialFlag p_flag) const=0;
-
- virtual void material_set_depth_draw_mode(RID p_material, VS::MaterialDepthDrawMode p_mode)=0;
- virtual VS::MaterialDepthDrawMode material_get_depth_draw_mode(RID p_material) const=0;
-
- virtual void material_set_blend_mode(RID p_material,VS::MaterialBlendMode p_mode)=0;
- virtual VS::MaterialBlendMode material_get_blend_mode(RID p_material) const=0;
-
- virtual void material_set_line_width(RID p_material,float p_line_width)=0;
- virtual float material_get_line_width(RID p_material) const=0;
-
-
- /* FIXED MATERIAL */
-
- virtual RID fixed_material_create();
-
- virtual void fixed_material_set_flag(RID p_material, VS::SpatialMaterialFlags p_flag, bool p_enabled);
- virtual bool fixed_material_get_flag(RID p_material, VS::SpatialMaterialFlags p_flag) const;
-
- virtual void fixed_material_set_parameter(RID p_material, VS::SpatialMaterialParam p_parameter, const Variant& p_value);
- virtual Variant fixed_material_get_parameter(RID p_material,VS::SpatialMaterialParam p_parameter) const;
-
- virtual void fixed_material_set_texture(RID p_material,VS::SpatialMaterialParam p_parameter, RID p_texture);
- virtual RID fixed_material_get_texture(RID p_material,VS::SpatialMaterialParam p_parameter) const;
-
- virtual void fixed_material_set_texcoord_mode(RID p_material,VS::SpatialMaterialParam p_parameter, VS::SpatialMaterialTexCoordMode p_mode);
- virtual VS::SpatialMaterialTexCoordMode fixed_material_get_texcoord_mode(RID p_material,VS::SpatialMaterialParam p_parameter) const;
-
- virtual void fixed_material_set_uv_transform(RID p_material,const Transform& p_transform);
- virtual Transform fixed_material_get_uv_transform(RID p_material) const;
-
- virtual void fixed_material_set_light_shader(RID p_material,VS::SpatialMaterialLightShader p_shader);
- virtual VS::SpatialMaterialLightShader fixed_material_get_light_shader(RID p_material) const;
-
- virtual void fixed_material_set_point_size(RID p_material,float p_size);
- virtual float fixed_material_get_point_size(RID p_material) const;
-
- /* MESH API */
-
- virtual RID mesh_create()=0;
-
-
- virtual void mesh_add_surface(RID p_mesh,VS::PrimitiveType p_primitive,const Array& p_arrays,const Array& p_blend_shapes=Array(),bool p_alpha_sort=false)=0;
- virtual Array mesh_get_surface_arrays(RID p_mesh,int p_surface) const=0;
- virtual Array mesh_get_surface_morph_arrays(RID p_mesh,int p_surface) const=0;
-
- virtual void mesh_add_custom_surface(RID p_mesh,const Variant& p_dat)=0;
-
- virtual void mesh_set_morph_target_count(RID p_mesh,int p_amount)=0;
- virtual int mesh_get_morph_target_count(RID p_mesh) const=0;
-
- virtual void mesh_set_morph_target_mode(RID p_mesh,VS::MorphTargetMode p_mode)=0;
- virtual VS::MorphTargetMode mesh_get_morph_target_mode(RID p_mesh) const=0;
-
- virtual void mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material,bool p_owned=false)=0;
- virtual RID mesh_surface_get_material(RID p_mesh, int p_surface) const=0;
-
- virtual int mesh_surface_get_array_len(RID p_mesh, int p_surface) const=0;
- virtual int mesh_surface_get_array_index_len(RID p_mesh, int p_surface) const=0;
- virtual uint32_t mesh_surface_get_format(RID p_mesh, int p_surface) const=0;
- virtual VS::PrimitiveType mesh_surface_get_primitive_type(RID p_mesh, int p_surface) const=0;
-
- virtual void mesh_remove_surface(RID p_mesh,int p_index)=0;
- virtual int mesh_get_surface_count(RID p_mesh) const=0;
-
- virtual AABB mesh_get_aabb(RID p_mesh,RID p_skeleton=RID()) const=0;
-
- virtual void mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb)=0;
- virtual AABB mesh_get_custom_aabb(RID p_mesh) const=0;
-
- /* MULTIMESH API */
-
- virtual RID multimesh_create()=0;
-
- virtual void multimesh_set_instance_count(RID p_multimesh,int p_count)=0;
- virtual int multimesh_get_instance_count(RID p_multimesh) const=0;
-
- virtual void multimesh_set_mesh(RID p_multimesh,RID p_mesh)=0;
- virtual void multimesh_set_aabb(RID p_multimesh,const AABB& p_aabb)=0;
- virtual void multimesh_instance_set_transform(RID p_multimesh,int p_index,const Transform& p_transform)=0;
- virtual void multimesh_instance_set_color(RID p_multimesh,int p_index,const Color& p_color)=0;
-
- virtual RID multimesh_get_mesh(RID p_multimesh) const=0;
- virtual AABB multimesh_get_aabb(RID p_multimesh) const=0;
-
- virtual Transform multimesh_instance_get_transform(RID p_multimesh,int p_index) const=0;
- virtual Color multimesh_instance_get_color(RID p_multimesh,int p_index) const=0;
-
- virtual void multimesh_set_visible_instances(RID p_multimesh,int p_visible)=0;
- virtual int multimesh_get_visible_instances(RID p_multimesh) const=0;
-
- /* BAKED LIGHT */
-
-
-
-
- /* IMMEDIATE API */
-
- virtual RID immediate_create()=0;
- virtual void immediate_begin(RID p_immediate,VS::PrimitiveType p_rimitive,RID p_texture=RID())=0;
- virtual void immediate_vertex(RID p_immediate,const Vector3& p_vertex)=0;
- virtual void immediate_normal(RID p_immediate,const Vector3& p_normal)=0;
- virtual void immediate_tangent(RID p_immediate,const Plane& p_tangent)=0;
- virtual void immediate_color(RID p_immediate,const Color& p_color)=0;
- virtual void immediate_uv(RID p_immediate,const Vector2& tex_uv)=0;
- virtual void immediate_uv2(RID p_immediate,const Vector2& tex_uv)=0;
- virtual void immediate_end(RID p_immediate)=0;
- virtual void immediate_clear(RID p_immediate)=0;
- virtual AABB immediate_get_aabb(RID p_immediate) const=0;
- virtual void immediate_set_material(RID p_immediate,RID p_material)=0;
- virtual RID immediate_get_material(RID p_immediate) const=0;
-
-
- /* PARTICLES API */
-
- virtual RID particles_create()=0;
-
- virtual void particles_set_amount(RID p_particles, int p_amount)=0;
- virtual int particles_get_amount(RID p_particles) const=0;
-
- virtual void particles_set_emitting(RID p_particles, bool p_emitting)=0;
- virtual bool particles_is_emitting(RID p_particles) const=0;
-
- virtual void particles_set_visibility_aabb(RID p_particles, const AABB& p_visibility)=0;
- virtual AABB particles_get_visibility_aabb(RID p_particles) const=0;
-
- virtual void particles_set_emission_half_extents(RID p_particles, const Vector3& p_half_extents)=0;
- virtual Vector3 particles_get_emission_half_extents(RID p_particles) const=0;
-
- virtual void particles_set_emission_base_velocity(RID p_particles, const Vector3& p_base_velocity)=0;
- virtual Vector3 particles_get_emission_base_velocity(RID p_particles) const=0;
-
- virtual void particles_set_emission_points(RID p_particles, const PoolVector<Vector3>& p_points)=0;
- virtual PoolVector<Vector3> particles_get_emission_points(RID p_particles) const=0;
-
- virtual void particles_set_gravity_normal(RID p_particles, const Vector3& p_normal)=0;
- virtual Vector3 particles_get_gravity_normal(RID p_particles) const=0;
-
- virtual void particles_set_variable(RID p_particles, VS::ParticleVariable p_variable,float p_value)=0;
- virtual float particles_get_variable(RID p_particles, VS::ParticleVariable p_variable) const=0;
-
- virtual void particles_set_randomness(RID p_particles, VS::ParticleVariable p_variable,float p_randomness)=0;
- virtual float particles_get_randomness(RID p_particles, VS::ParticleVariable p_variable) const=0;
-
- virtual void particles_set_color_phase_pos(RID p_particles, int p_phase, float p_pos)=0;
- virtual float particles_get_color_phase_pos(RID p_particles, int p_phase) const=0;
-
- virtual void particles_set_color_phases(RID p_particles, int p_phases)=0;
- virtual int particles_get_color_phases(RID p_particles) const=0;
-
- virtual void particles_set_color_phase_color(RID p_particles, int p_phase, const Color& p_color)=0;
- virtual Color particles_get_color_phase_color(RID p_particles, int p_phase) const=0;
-
- virtual void particles_set_attractors(RID p_particles, int p_attractors)=0;
- virtual int particles_get_attractors(RID p_particles) const=0;
-
- virtual void particles_set_attractor_pos(RID p_particles, int p_attractor, const Vector3& p_pos)=0;
- virtual Vector3 particles_get_attractor_pos(RID p_particles,int p_attractor) const=0;
-
- virtual void particles_set_attractor_strength(RID p_particles, int p_attractor, float p_force)=0;
- virtual float particles_get_attractor_strength(RID p_particles,int p_attractor) const=0;
-
- virtual void particles_set_material(RID p_particles, RID p_material,bool p_owned=false)=0;
- virtual RID particles_get_material(RID p_particles) const=0;
-
- virtual AABB particles_get_aabb(RID p_particles) const=0;
-
- virtual void particles_set_height_from_velocity(RID p_particles, bool p_enable)=0;
- virtual bool particles_has_height_from_velocity(RID p_particles) const=0;
-
- virtual void particles_set_use_local_coordinates(RID p_particles, bool p_enable)=0;
- virtual bool particles_is_using_local_coordinates(RID p_particles) const=0;
-
- /* SKELETON API */
-
- virtual RID skeleton_create()=0;
- virtual void skeleton_resize(RID p_skeleton,int p_bones)=0;
- virtual int skeleton_get_bone_count(RID p_skeleton) const=0;
- virtual void skeleton_bone_set_transform(RID p_skeleton,int p_bone, const Transform& p_transform)=0;
- virtual Transform skeleton_bone_get_transform(RID p_skeleton,int p_bone)=0;
-
-
- /* LIGHT API */
-
- virtual RID light_create(VS::LightType p_type)=0;
- virtual VS::LightType light_get_type(RID p_light) const=0;
-
- virtual void light_set_color(RID p_light,VS::LightColor p_type, const Color& p_color)=0;
- virtual Color light_get_color(RID p_light,VS::LightColor p_type) const=0;
-
- virtual void light_set_shadow(RID p_light,bool p_enabled)=0;
- virtual bool light_has_shadow(RID p_light) const=0;
-
- virtual void light_set_volumetric(RID p_light,bool p_enabled)=0;
- virtual bool light_is_volumetric(RID p_light) const=0;
-
- virtual void light_set_projector(RID p_light,RID p_texture)=0;
- virtual RID light_get_projector(RID p_light) const=0;
-
- virtual void light_set_var(RID p_light, VS::LightParam p_var, float p_value)=0;
- virtual float light_get_var(RID p_light, VS::LightParam p_var) const=0;
-
- virtual void light_set_operator(RID p_light,VS::LightOp p_op)=0;
- virtual VS::LightOp light_get_operator(RID p_light) const=0;
-
- virtual void light_omni_set_shadow_mode(RID p_light,VS::LightOmniShadowMode p_mode)=0;
- virtual VS::LightOmniShadowMode light_omni_get_shadow_mode(RID p_light) const=0;
-
- virtual void light_directional_set_shadow_mode(RID p_light,VS::LightDirectionalShadowMode p_mode)=0;
- virtual VS::LightDirectionalShadowMode light_directional_get_shadow_mode(RID p_light) const=0;
- virtual void light_directional_set_shadow_param(RID p_light,VS::LightDirectionalShadowParam p_param, float p_value)=0;
- virtual float light_directional_get_shadow_param(RID p_light,VS::LightDirectionalShadowParam p_param) const=0;
-
- virtual AABB light_get_aabb(RID p_poly) const=0;
-
- virtual RID light_instance_create(RID p_light)=0;
- virtual void light_instance_set_transform(RID p_light_instance,const Transform& p_transform)=0;
-
-
- enum ShadowType {
- SHADOW_NONE,
- SHADOW_SIMPLE,
- SHADOW_ORTHOGONAL,
- SHADOW_DUAL_PARABOLOID,
- SHADOW_CUBE,
- SHADOW_PSSM, //parallel split shadow map
- SHADOW_PSM //perspective shadow map
- };
-
- enum ShadowPass {
- PASS_DUAL_PARABOLOID_FRONT=0,
- PASS_DUAL_PARABOLOID_BACK=1,
- PASS_CUBE_FRONT=0,
- PASS_CUBE_BACK=1,
- PASS_CUBE_TOP=2,
- PASS_CUBE_BOTTOM=3,
- PASS_CUBE_LEFT=4,
- PASS_CUBE_RIGHT=5,
- };
-
- virtual ShadowType light_instance_get_shadow_type(RID p_light_instance,bool p_far=false) const=0;
- virtual int light_instance_get_shadow_passes(RID p_light_instance) const=0;
- virtual void light_instance_set_shadow_transform(RID p_light_instance, int p_index, const CameraMatrix& p_camera, const Transform& p_transform, float p_split_near=0,float p_split_far=0)=0;
- virtual int light_instance_get_shadow_size(RID p_light_instance, int p_index=0) const=0;
- virtual bool light_instance_get_pssm_shadow_overlap(RID p_light_instance) const=0;
-
- /* SHADOWS */
-
- virtual void shadow_clear_near()=0;
- virtual bool shadow_allocate_near(RID p_light)=0; //true on successful alloc
- virtual bool shadow_allocate_far(RID p_light)=0; //true on successful alloc
-
- /* PARTICLES INSTANCE */
-
- virtual RID particles_instance_create(RID p_particles)=0;
- virtual void particles_instance_set_transform(RID p_particles_instance,const Transform& p_transform)=0;
-
- /* RENDER API */
- /* all calls (inside begin/end shadow) are always warranted to be in the following order: */
-
- /* VIEWPORT API */
-
- virtual RID viewport_data_create()=0;
-
- virtual RID render_target_create()=0;
- virtual void render_target_set_size(RID p_render_target, int p_width, int p_height)=0;
- virtual RID render_target_get_texture(RID p_render_target) const=0;
- virtual bool render_target_renedered_in_frame(RID p_render_target)=0;
-
- virtual void begin_frame()=0;
-
- virtual void set_viewport(const VS::ViewportRect& p_viewport)=0;
- virtual void set_render_target(RID p_render_target,bool p_transparent_bg=false,bool p_vflip=false)=0;
- virtual void clear_viewport(const Color& p_color)=0;
- virtual void capture_viewport(Image* r_capture)=0;
-
- virtual void begin_scene(RID p_viewport_data,RID p_env,VS::ScenarioDebugMode p_debug)=0;
- virtual void begin_shadow_map( RID p_light_instance, int p_shadow_pass )=0;
-
- virtual void set_camera(const Transform& p_world,const CameraMatrix& p_projection,bool p_ortho_hint)=0;
-
- virtual void add_light( RID p_light_instance )=0; ///< all "add_light" calls happen before add_geometry calls
-
- typedef Map<StringName,Variant> ParamOverrideMap;
-
- struct BakedLightData {
-
- VS::BakedLightMode mode;
- RID octree_texture;
- RID light_texture;
- float color_multiplier; //used for both lightmaps and octree
- Transform octree_transform;
- Map<int,RID> lightmaps;
- //cache
-
- float octree_lattice_size;
- float octree_lattice_divide;
- float texture_multiplier;
- float lightmap_multiplier;
- int octree_steps;
- Vector2 octree_tex_pixel_size;
- Vector2 light_tex_pixel_size;
-
- bool realtime_color_enabled;
- Color realtime_color;
- float realtime_energy;
- };
-
- struct InstanceData {
-
- Transform transform;
- RID skeleton;
- RID material_override;
- RID sampled_light;
- Vector<RID> materials;
- Vector<RID> light_instances;
- Vector<float> morph_values;
- BakedLightData *baked_light;
- VS::ShadowCastingSetting cast_shadows;
- Transform *baked_light_octree_xform;
- int baked_lightmap_id;
- bool mirror :8;
- bool depth_scale :8;
- bool billboard :8;
- bool billboard_y :8;
- bool receive_shadows : 8;
-
- };
-
- virtual void add_mesh( const RID& p_mesh, const InstanceData *p_data)=0;
- virtual void add_multimesh( const RID& p_multimesh, const InstanceData *p_data)=0;
- virtual void add_immediate( const RID& p_immediate, const InstanceData *p_data)=0;
- virtual void add_particles( const RID& p_particle_instance, const InstanceData *p_data)=0;
-
-
- virtual void end_scene()=0;
- virtual void end_shadow_map()=0;
-
- virtual void end_frame()=0;
- virtual void flush_frame(); //not necessary in most cases
-
- /* CANVAS API */
-
- enum CanvasRectFlags {
-
- CANVAS_RECT_REGION=1,
- CANVAS_RECT_TILE=2,
- CANVAS_RECT_FLIP_H=4,
- CANVAS_RECT_FLIP_V=8,
- CANVAS_RECT_TRANSPOSE=16
- };
-
-
- struct Light {
-
-
-
- bool enabled;
- Color color;
- Matrix32 xform;
- float height;
- float energy;
- float scale;
- int z_min;
- int z_max;
- int layer_min;
- int layer_max;
- int item_mask;
- int item_shadow_mask;
- VS::LightMode mode;
- RID texture;
- Vector2 texture_offset;
- RID canvas;
- RID shadow_buffer;
- int shadow_buffer_size;
- float shadow_esm_mult;
- Color shadow_color;
-
-
- void *texture_cache; // implementation dependent
- Rect2 rect_cache;
- Matrix32 xform_cache;
- float radius_cache; //used for shadow far plane
- CameraMatrix shadow_matrix_cache;
-
- Matrix32 light_shader_xform;
- Vector2 light_shader_pos;
-
- Light *shadows_next_ptr;
- Light *filter_next_ptr;
- Light *next_ptr;
- Light *mask_next_ptr;
-
- Light() {
- enabled=true;
- color=Color(1,1,1);
- shadow_color=Color(0,0,0,0);
- height=0;
- z_min=-1024;
- z_max=1024;
- layer_min=0;
- layer_max=0;
- item_mask=1;
- scale=1.0;
- energy=1.0;
- item_shadow_mask=-1;
- mode=VS::CANVAS_LIGHT_MODE_ADD;
- texture_cache=NULL;
- next_ptr=NULL;
- mask_next_ptr=NULL;
- filter_next_ptr=NULL;
- shadow_buffer_size=2048;
- shadow_esm_mult=80;
-
- }
- };
-
- struct Item;
-
- struct ItemMaterial {
-
- RID shader;
- Map<StringName,Variant> shader_param;
- uint32_t shader_version;
- Set<Item*> owners;
- VS::ItemShadingMode shading_mode;
-
- ItemMaterial() {shading_mode=VS::CANVAS_ITEM_SHADING_NORMAL; shader_version=0; }
- };
-
- struct Item {
-
- struct Command {
-
- enum Type {
-
- TYPE_LINE,
- TYPE_RECT,
- TYPE_STYLE,
- TYPE_PRIMITIVE,
- TYPE_POLYGON,
- TYPE_POLYGON_PTR,
- TYPE_CIRCLE,
- TYPE_TRANSFORM,
- TYPE_BLEND_MODE,
- TYPE_CLIP_IGNORE,
- };
-
- Type type;
- virtual ~Command(){}
- };
-
- struct CommandLine : public Command {
-
- Point2 from,to;
- Color color;
- float width;
- bool antialiased;
- CommandLine() { type = TYPE_LINE; }
- };
-
- struct CommandRect : public Command {
-
- Rect2 rect;
- RID texture;
- Color modulate;
- Rect2 source;
- uint8_t flags;
-
- CommandRect() { flags=0; type = TYPE_RECT; }
- };
-
- struct CommandStyle : public Command {
-
- Rect2 rect;
- Rect2 source;
- RID texture;
- float margin[4];
- bool draw_center;
- Color color;
- CommandStyle() { draw_center=true; type = TYPE_STYLE; }
- };
-
- struct CommandPrimitive : public Command {
-
- Vector<Point2> points;
- Vector<Point2> uvs;
- Vector<Color> colors;
- RID texture;
- float width;
-
- CommandPrimitive() { type = TYPE_PRIMITIVE; width=1;}
- };
-
- struct CommandPolygon : public Command {
-
- Vector<int> indices;
- Vector<Point2> points;
- Vector<Point2> uvs;
- Vector<Color> colors;
- RID texture;
- int count;
-
- CommandPolygon() { type = TYPE_POLYGON; count = 0; }
- };
-
- struct CommandPolygonPtr : public Command {
-
- const int* indices;
- const Point2* points;
- const Point2* uvs;
- const Color* colors;
- RID texture;
- int count;
-
- CommandPolygonPtr() { type = TYPE_POLYGON_PTR; count = 0; }
- };
-
- struct CommandCircle : public Command {
-
- Point2 pos;
- float radius;
- Color color;
- CommandCircle() { type = TYPE_CIRCLE; }
- };
-
- struct CommandTransform : public Command {
-
- Matrix32 xform;
- CommandTransform() { type = TYPE_TRANSFORM; }
- };
-
- struct CommandBlendMode : public Command {
-
- VS::MaterialBlendMode blend_mode;
- CommandBlendMode() { type = TYPE_BLEND_MODE; blend_mode = VS::MATERIAL_BLEND_MODE_MIX; }
- };
- struct CommandClipIgnore : public Command {
-
- bool ignore;
- CommandClipIgnore() { type = TYPE_CLIP_IGNORE; ignore=false; }
- };
-
-
- struct ViewportRender {
- VisualServer*owner;
- void* udata;
- Rect2 rect;
- };
-
- Matrix32 xform;
- bool clip;
- bool visible;
- bool ontop;
- VS::MaterialBlendMode blend_mode;
- int light_mask;
- Vector<Command*> commands;
- mutable bool custom_rect;
- mutable bool rect_dirty;
- mutable Rect2 rect;
- Item*next;
- ItemMaterial* material;
- struct CopyBackBuffer {
- Rect2 rect;
- Rect2 screen_rect;
- bool full;
- };
- CopyBackBuffer *copy_back_buffer;
-
-
- float final_opacity;
- Matrix32 final_transform;
- Rect2 final_clip_rect;
- Item* final_clip_owner;
- Item* material_owner;
- ViewportRender *vp_render;
- bool distance_field;
- bool light_masked;
-
- Rect2 global_rect_cache;
-
- const Rect2& get_rect() const {
- if (custom_rect || !rect_dirty)
- return rect;
-
- //must update rect
- int s=commands.size();
- if (s==0) {
-
- rect=Rect2();
- rect_dirty=false;
- return rect;
- }
-
- Matrix32 xf;
- bool found_xform=false;
- bool first=true;
-
- const Item::Command * const *cmd = &commands[0];
-
-
- for (int i=0;i<s;i++) {
-
- const Item::Command *c=cmd[i];
- Rect2 r;
-
- switch(c->type) {
- case Item::Command::TYPE_LINE: {
-
- const Item::CommandLine* line = static_cast< const Item::CommandLine*>(c);
- r.pos=line->from;
- r.expand_to(line->to);
- } break;
- case Item::Command::TYPE_RECT: {
-
- const Item::CommandRect* crect = static_cast< const Item::CommandRect*>(c);
- r=crect->rect;
-
- } break;
- case Item::Command::TYPE_STYLE: {
-
- const Item::CommandStyle* style = static_cast< const Item::CommandStyle*>(c);
- r=style->rect;
- } break;
- case Item::Command::TYPE_PRIMITIVE: {
-
- const Item::CommandPrimitive* primitive = static_cast< const Item::CommandPrimitive*>(c);
- r.pos=primitive->points[0];
- for(int i=1;i<primitive->points.size();i++) {
-
- r.expand_to(primitive->points[i]);
-
- }
- } break;
- case Item::Command::TYPE_POLYGON: {
-
- const Item::CommandPolygon* polygon = static_cast< const Item::CommandPolygon*>(c);
- int l = polygon->points.size();
- const Point2*pp=&polygon->points[0];
- r.pos=pp[0];
- for(int i=1;i<l;i++) {
-
- r.expand_to(pp[i]);
-
- }
- } break;
-
- case Item::Command::TYPE_POLYGON_PTR: {
-
- const Item::CommandPolygonPtr* polygon = static_cast< const Item::CommandPolygonPtr*>(c);
- int l = polygon->count;
- if (polygon->indices != NULL) {
-
- r.pos=polygon->points[polygon->indices[0]];
- for (int i=1; i<l; i++) {
-
- r.expand_to(polygon->points[polygon->indices[i]]);
- }
- } else {
- r.pos=polygon->points[0];
- for (int i=1; i<l; i++) {
-
- r.expand_to(polygon->points[i]);
- }
- }
- } break;
- case Item::Command::TYPE_CIRCLE: {
-
- const Item::CommandCircle* circle = static_cast< const Item::CommandCircle*>(c);
- r.pos=Point2(-circle->radius,-circle->radius)+circle->pos;
- r.size=Point2(circle->radius*2.0,circle->radius*2.0);
- } break;
- case Item::Command::TYPE_TRANSFORM: {
-
- const Item::CommandTransform* transform = static_cast<const Item::CommandTransform*>(c);
- xf=transform->xform;
- found_xform=true;
- continue;
- } break;
- case Item::Command::TYPE_BLEND_MODE: {
-
- } break;
- case Item::Command::TYPE_CLIP_IGNORE: {
-
- } break;
- }
-
- if (found_xform) {
- r = xf.xform(r);
- found_xform=false;
- }
-
-
- if (first) {
- rect=r;
- first=false;
- } else
- rect=rect.merge(r);
- }
-
- rect_dirty=false;
- return rect;
- }
-
- void clear() { for (int i=0;i<commands.size();i++) memdelete( commands[i] ); commands.clear(); clip=false; rect_dirty=true; final_clip_owner=NULL; material_owner=NULL; light_masked=false; }
- Item() { light_mask=1; vp_render=NULL; next=NULL; final_clip_owner=NULL; clip=false; final_opacity=1; blend_mode=VS::MATERIAL_BLEND_MODE_MIX; visible=true; rect_dirty=true; custom_rect=false; ontop=true; material_owner=NULL; material=NULL; copy_back_buffer=NULL; distance_field=false; light_masked=false; }
- virtual ~Item() { clear(); if (copy_back_buffer) memdelete(copy_back_buffer); }
- };
-
-
- ItemDrawViewportFunc draw_viewport_func;
-
-
- virtual void begin_canvas_bg()=0;
- virtual void canvas_begin()=0;
- virtual void canvas_disable_blending()=0;
- virtual void canvas_set_opacity(float p_opacity)=0;
- virtual void canvas_set_blend_mode(VS::MaterialBlendMode p_mode)=0;
- virtual void canvas_begin_rect(const Matrix32& p_transform)=0;
- virtual void canvas_set_clip(bool p_clip, const Rect2& p_rect)=0;
- virtual void canvas_end_rect()=0;
- virtual void canvas_draw_line(const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased)=0;
- virtual void canvas_draw_rect(const Rect2& p_rect, int p_flags, const Rect2& p_source,RID p_texture,const Color& p_modulate)=0;
- virtual void canvas_draw_style_box(const Rect2& p_rect, const Rect2& p_src_region, RID p_texture,const float *p_margins, bool p_draw_center=true,const Color& p_modulate=Color(1,1,1))=0;
- virtual void canvas_draw_primitive(const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width)=0;
- virtual void canvas_draw_polygon(int p_vertex_count, const int* p_indices, const Vector2* p_vertices, const Vector2* p_uvs, const Color* p_colors,const RID& p_texture,bool p_singlecolor)=0;
- virtual void canvas_set_transform(const Matrix32& p_transform)=0;
-
- virtual void canvas_render_items(Item *p_item_list,int p_z,const Color& p_modulate,Light *p_light)=0;
- virtual void canvas_debug_viewport_shadows(Light* p_lights_with_shadow)=0;
- /* LIGHT SHADOW MAPPING */
-
- virtual RID canvas_light_occluder_create()=0;
- virtual void canvas_light_occluder_set_polylines(RID p_occluder, const PoolVector<Vector2>& p_lines)=0;
-
-
- virtual RID canvas_light_shadow_buffer_create(int p_width)=0;
-
- struct LightOccluderInstance {
-
-
- bool enabled;
- RID canvas;
- RID polygon;
- RID polygon_buffer;
- Rect2 aabb_cache;
- Matrix32 xform;
- Matrix32 xform_cache;
- int light_mask;
- VS::CanvasOccluderPolygonCullMode cull_cache;
-
- LightOccluderInstance *next;
-
- LightOccluderInstance() { enabled=true; next=NULL; light_mask=1; cull_cache=VS::CANVAS_OCCLUDER_POLYGON_CULL_DISABLED; }
- };
-
-
-
- virtual void canvas_light_shadow_buffer_update(RID p_buffer, const Matrix32& p_light_xform, int p_light_mask,float p_near, float p_far, LightOccluderInstance* p_occluders, CameraMatrix *p_xform_cache)=0;
-
- /* ENVIRONMENT */
-
-
- virtual RID environment_create()=0;
-
- virtual void environment_set_background(RID p_env,VS::EnvironmentBG p_bg)=0;
- virtual VS::EnvironmentBG environment_get_background(RID p_env) const=0;
-
- virtual void environment_set_background_param(RID p_env,VS::EnvironmentBGParam p_param, const Variant& p_value)=0;
- virtual Variant environment_get_background_param(RID p_env,VS::EnvironmentBGParam p_param) const=0;
-
- virtual void environment_set_enable_fx(RID p_env,VS::EnvironmentFx p_effect,bool p_enabled)=0;
- virtual bool environment_is_fx_enabled(RID p_env,VS::EnvironmentFx p_effect) const=0;
-
- virtual void environment_fx_set_param(RID p_env,VS::EnvironmentFxParam p_param,const Variant& p_value)=0;
- virtual Variant environment_fx_get_param(RID p_env,VS::EnvironmentFxParam p_param) const=0;
-
- /* SAMPLED LIGHT */
- virtual RID sampled_light_dp_create(int p_width,int p_height)=0;
- virtual void sampled_light_dp_update(RID p_sampled_light,const Color *p_data,float p_multiplier)=0;
-
-
- /*MISC*/
-
- virtual bool is_texture(const RID& p_rid) const=0;
- virtual bool is_material(const RID& p_rid) const=0;
- virtual bool is_mesh(const RID& p_rid) const=0;
- virtual bool is_multimesh(const RID& p_rid) const=0;
- virtual bool is_immediate(const RID& p_rid) const=0;
- virtual bool is_particles(const RID &p_beam) const=0;
-
- virtual bool is_light(const RID& p_rid) const=0;
- virtual bool is_light_instance(const RID& p_rid) const=0;
- virtual bool is_particles_instance(const RID& p_rid) const=0;
- virtual bool is_skeleton(const RID& p_rid) const=0;
- virtual bool is_environment(const RID& p_rid) const=0;
- virtual bool is_shader(const RID& p_rid) const=0;
-
- virtual bool is_canvas_light_occluder(const RID& p_rid) const=0;
-
- virtual void free(const RID& p_rid)=0;
-
- virtual void init()=0;
- virtual void finish()=0;
-
- virtual bool needs_to_draw_next_frame() const=0;
-
- virtual void reload_vram() {}
-
- virtual bool has_feature(VS::Features p_feature) const=0;
-
- virtual void restore_framebuffer()=0;
-
- virtual int get_render_info(VS::RenderInfo p_info)=0;
-
- virtual void set_force_16_bits_fbo(bool p_force) {}
-
- Rasterizer();
- virtual ~Rasterizer() {}
-};
-
-#endif
-#endif
+#endif // RASTERIZER_H
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp
index 49f9e161fa..bc59acead5 100644
--- a/servers/visual/shader_language.cpp
+++ b/servers/visual/shader_language.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -165,6 +165,7 @@ const char *ShaderLanguage::token_names[TK_MAX] = {
"CF_BREAK",
"CF_CONTINUE",
"CF_RETURN",
+ "CF_DISCARD",
"BRACKET_OPEN",
"BRACKET_CLOSE",
"CURLY_BRACKET_OPEN",
@@ -1041,6 +1042,12 @@ bool ShaderLanguage::_validate_operator(OperatorNode *p_op, DataType *r_ret_type
}
} break;
case OP_ASSIGN: {
+
+ if (p_op->arguments[0]->type != Node::TYPE_MEMBER && p_op->arguments[0]->type != Node::TYPE_VARIABLE) {
+ valid = false;
+ break;
+ }
+
DataType na = p_op->arguments[0]->get_datatype();
DataType nb = p_op->arguments[1]->get_datatype();
valid = na == nb;
@@ -1563,9 +1570,9 @@ const ShaderLanguage::BuiltinFuncDef ShaderLanguage::builtin_func_defs[] = {
{ "reflect", TYPE_VEC3, { TYPE_VEC3, TYPE_VEC3, TYPE_VOID } },
{ "refract", TYPE_VEC3, { TYPE_VEC3, TYPE_VEC3, TYPE_FLOAT, TYPE_VOID } },
- { "facefordward", TYPE_VEC2, { TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID } },
- { "facefordward", TYPE_VEC3, { TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID } },
- { "facefordward", TYPE_VEC4, { TYPE_VEC4, TYPE_VEC4, TYPE_VEC4, TYPE_VOID } },
+ { "faceforward", TYPE_VEC2, { TYPE_VEC2, TYPE_VEC2, TYPE_VEC2, TYPE_VOID } },
+ { "faceforward", TYPE_VEC3, { TYPE_VEC3, TYPE_VEC3, TYPE_VEC3, TYPE_VOID } },
+ { "faceforward", TYPE_VEC4, { TYPE_VEC4, TYPE_VEC4, TYPE_VEC4, TYPE_VOID } },
{ "matrixCompMult", TYPE_MAT2, { TYPE_MAT2, TYPE_MAT2, TYPE_VOID } },
{ "matrixCompMult", TYPE_MAT3, { TYPE_MAT3, TYPE_MAT3, TYPE_VOID } },
@@ -1931,7 +1938,8 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, OperatorNode *p
}
if (!fail) {
- p_func->return_cache = pfunc->return_type;
+ if (r_ret_type)
+ *r_ret_type = pfunc->return_type;
return true;
}
}
@@ -3150,6 +3158,11 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Dat
assign->op = OP_ASSIGN;
p_block->statements.push_back(assign);
tk = _get_token();
+
+ if (!_validate_operator(assign)) {
+ _set_error("Invalid assignment of '" + get_datatype_name(n->get_datatype()) + "' to '" + get_datatype_name(type) + "'");
+ return ERR_PARSE_ERROR;
+ }
}
if (tk.type == TK_COMMA) {
@@ -3285,6 +3298,34 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Dat
}
p_block->statements.push_back(flow);
+ } else if (tk.type == TK_CF_DISCARD) {
+
+ //check return type
+ BlockNode *b = p_block;
+ while (b && !b->parent_function) {
+ b = b->parent_block;
+ }
+ if (!b) {
+ _set_error("Bug");
+ return ERR_BUG;
+ }
+
+ if (!b->parent_function->can_discard) {
+ _set_error("Use of 'discard' is not allowed here.");
+ return ERR_PARSE_ERROR;
+ }
+
+ ControlFlowNode *flow = alloc_node<ControlFlowNode>();
+ flow->flow_op = FLOW_OP_DISCARD;
+
+ pos = _get_tkpos();
+ tk = _get_token();
+ if (tk.type != TK_SEMICOLON) {
+ //all is good
+ _set_error("Expected ';' after discard");
+ }
+
+ p_block->statements.push_back(flow);
} else {
@@ -3309,7 +3350,7 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Dat
return OK;
}
-Error ShaderLanguage::_parse_shader(const Map<StringName, Map<StringName, DataType> > &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types) {
+Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types) {
Token tk = _get_token();
@@ -3646,7 +3687,7 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, Map<StringName, DataTy
Map<StringName, DataType> builtin_types;
if (p_functions.has(name)) {
- builtin_types = p_functions[name];
+ builtin_types = p_functions[name].built_ins;
}
ShaderNode::Function function;
@@ -3810,7 +3851,7 @@ String ShaderLanguage::get_shader_type(const String &p_code) {
return String();
}
-Error ShaderLanguage::compile(const String &p_code, const Map<StringName, Map<StringName, DataType> > &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types) {
+Error ShaderLanguage::compile(const String &p_code, const Map<StringName, FunctionInfo> &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types) {
clear();
@@ -3827,7 +3868,7 @@ Error ShaderLanguage::compile(const String &p_code, const Map<StringName, Map<St
return OK;
}
-Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Map<StringName, DataType> > &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types, List<String> *r_options, String &r_call_hint) {
+Error ShaderLanguage::complete(const String &p_code, const Map<StringName, FunctionInfo> &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types, List<String> *r_options, String &r_call_hint) {
clear();
@@ -3854,7 +3895,7 @@ Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Map<S
} break;
case COMPLETION_MAIN_FUNCTION: {
- for (const Map<StringName, Map<StringName, DataType> >::Element *E = p_functions.front(); E; E = E->next()) {
+ for (const Map<StringName, FunctionInfo>::Element *E = p_functions.front(); E; E = E->next()) {
r_options->push_back(E->key());
}
@@ -3895,7 +3936,7 @@ Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Map<S
if (comp_ident && skip_function != StringName() && p_functions.has(skip_function)) {
- for (Map<StringName, DataType>::Element *E = p_functions[skip_function].front(); E; E = E->next()) {
+ for (Map<StringName, DataType>::Element *E = p_functions[skip_function].built_ins.front(); E; E = E->next()) {
matches.insert(E->key());
}
}
diff --git a/servers/visual/shader_language.h b/servers/visual/shader_language.h
index c92cbf2abb..f00b4c5a97 100644
--- a/servers/visual/shader_language.h
+++ b/servers/visual/shader_language.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -118,6 +118,7 @@ public:
TK_CF_BREAK,
TK_CF_CONTINUE,
TK_CF_RETURN,
+ TK_CF_DISCARD,
TK_BRACKET_OPEN,
TK_BRACKET_CLOSE,
TK_CURLY_BRACKET_OPEN,
@@ -244,7 +245,8 @@ public:
FLOW_OP_DO,
FLOW_OP_BREAK,
FLOW_OP_SWITCH,
- FLOW_OP_CONTINUE
+ FLOW_OP_CONTINUE,
+ FLOW_OP_DISCARD
};
@@ -387,10 +389,12 @@ public:
DataPrecision return_precision;
Vector<Argument> arguments;
BlockNode *body;
+ bool can_discard;
FunctionNode() {
type = TYPE_FUNCTION;
return_precision = PRECISION_DEFAULT;
+ can_discard = false;
}
};
@@ -499,6 +503,11 @@ public:
static void get_keyword_list(List<String> *r_keywords);
static void get_builtin_funcs(List<String> *r_keywords);
+ struct FunctionInfo {
+ Map<StringName, DataType> built_ins;
+ bool can_discard;
+ };
+
private:
struct KeyWord {
TokenType token;
@@ -591,7 +600,7 @@ private:
Error _parse_block(BlockNode *p_block, const Map<StringName, DataType> &p_builtin_types, bool p_just_one = false, bool p_can_break = false, bool p_can_continue = false);
- Error _parse_shader(const Map<StringName, Map<StringName, DataType> > &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types);
+ Error _parse_shader(const Map<StringName, FunctionInfo> &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types);
public:
//static void get_keyword_list(ShaderType p_type,List<String> *p_keywords);
@@ -599,8 +608,8 @@ public:
void clear();
static String get_shader_type(const String &p_code);
- Error compile(const String &p_code, const Map<StringName, Map<StringName, DataType> > &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types);
- Error complete(const String &p_code, const Map<StringName, Map<StringName, DataType> > &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types, List<String> *r_options, String &r_call_hint);
+ Error compile(const String &p_code, const Map<StringName, FunctionInfo> &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types);
+ Error complete(const String &p_code, const Map<StringName, FunctionInfo> &p_functions, const Set<String> &p_render_modes, const Set<String> &p_shader_types, List<String> *r_options, String &r_call_hint);
String get_error_text();
int get_error_line();
diff --git a/servers/visual/shader_types.cpp b/servers/visual/shader_types.cpp
index 3f1403d532..d8d1b1c1b1 100644
--- a/servers/visual/shader_types.cpp
+++ b/servers/visual/shader_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,7 +29,7 @@
/*************************************************************************/
#include "shader_types.h"
-const Map<StringName, Map<StringName, ShaderLanguage::DataType> > &ShaderTypes::get_functions(VS::ShaderMode p_mode) {
+const Map<StringName, ShaderLanguage::FunctionInfo> &ShaderTypes::get_functions(VS::ShaderMode p_mode) {
return shader_modes[p_mode].functions;
}
@@ -50,72 +50,73 @@ ShaderTypes::ShaderTypes() {
/*************** SPATIAL ***********************/
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["SRC_VERTEX"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["SRC_NORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["SRC_BONES"] = ShaderLanguage::TYPE_IVEC4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["SRC_WEIGHTS"] = ShaderLanguage::TYPE_VEC4;
-
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["POSITION"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["VERTEX"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["NORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["TANGENT"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["BINORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["UV2"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["POINT_SIZE"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["INSTANCE_ID"] = ShaderLanguage::TYPE_INT;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["INSTANCE_CUSTOM"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["ROUGHNESS"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_VERTEX"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_NORMAL"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_BONES"] = ShaderLanguage::TYPE_IVEC4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["SRC_WEIGHTS"] = ShaderLanguage::TYPE_VEC4;
+
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["POSITION"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["TANGENT"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["BINORMAL"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["UV2"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["POINT_SIZE"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["INSTANCE_ID"] = ShaderLanguage::TYPE_INT;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["INSTANCE_CUSTOM"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["ROUGHNESS"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].can_discard = false;
//builtins
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["INV_CAMERA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["CAMERA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["MODELVIEW_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["TIME"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["vertex"]["VIEWPORT_SIZE"] = ShaderLanguage::TYPE_VEC2;
-
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["VERTEX"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["FRAGCOORD"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["FRONT_FACING"] = ShaderLanguage::TYPE_BOOL;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["NORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["TANGENT"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["BINORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["NORMALMAP"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["NORMALMAP_DEPTH"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["UV2"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["NORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["ALBEDO"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["ALPHA"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["METALLIC"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["SPECULAR"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["ROUGHNESS"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["RIM"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["RIM_TINT"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["CLEARCOAT"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["CLEARCOAT_GLOSS"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["ANISOTROPY"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["ANISOTROPY_FLOW"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["SSS_STRENGTH"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["AO"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["EMISSION"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["DISCARD"] = ShaderLanguage::TYPE_BOOL;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["SCREEN_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["DEPTH_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["SIDE"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["ALPHA_SCISSOR"] = ShaderLanguage::TYPE_FLOAT;
-
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["INV_CAMERA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["TIME"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_SPATIAL].functions["fragment"]["VIEWPORT_SIZE"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["INV_CAMERA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["CAMERA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["MODELVIEW_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["vertex"].built_ins["VIEWPORT_SIZE"] = ShaderLanguage::TYPE_VEC2;
+
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["FRAGCOORD"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["FRONT_FACING"] = ShaderLanguage::TYPE_BOOL;
+ 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["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"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["UV2"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ALBEDO"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ALPHA"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["METALLIC"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["SPECULAR"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ROUGHNESS"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["RIM"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["RIM_TINT"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["CLEARCOAT"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["CLEARCOAT_GLOSS"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ANISOTROPY"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ANISOTROPY_FLOW"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["SSS_STRENGTH"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["AO"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["EMISSION"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["SCREEN_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["DEPTH_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["SIDE"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ALPHA_SCISSOR"] = ShaderLanguage::TYPE_FLOAT;
+
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["INV_CAMERA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["VIEWPORT_SIZE"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_SPATIAL].functions["fragment"].can_discard = true;
shader_modes[VS::SHADER_SPATIAL].modes.insert("blend_mix");
shader_modes[VS::SHADER_SPATIAL].modes.insert("blend_add");
@@ -153,52 +154,55 @@ ShaderTypes::ShaderTypes() {
/************ CANVAS ITEM **************************/
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["SRC_VERTEX"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["VERTEX"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["VERTEX_COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["POINT_SIZE"] = ShaderLanguage::TYPE_FLOAT;
-
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["EXTRA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["TIME"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["PARTICLE_CUSTOM"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"]["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
-
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["SRC_COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["FRAGCOORD"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["NORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["NORMALMAP"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["NORMALMAP_DEPTH"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["TEXTURE_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["SCREEN_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["TIME"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["SCREEN_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"]["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
-
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["POSITION"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["NORMAL"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["TEXTURE_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["LIGHT_VEC"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["LIGHT_HEIGHT"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["LIGHT_COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["LIGHT_UV"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["LIGHT_SHADOW"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["LIGHT"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["SHADOW"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
- shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"]["TIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["SRC_VERTEX"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["VERTEX"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["VERTEX_COLOR"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["POINT_SIZE"] = ShaderLanguage::TYPE_FLOAT;
+
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["WORLD_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["PROJECTION_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["EXTRA_MATRIX"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["PARTICLE_CUSTOM"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].built_ins["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["vertex"].can_discard = false;
+
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SRC_COLOR"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["FRAGCOORD"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMALMAP"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["NORMALMAP_DEPTH"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TEXTURE_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["AT_LIGHT_PASS"] = ShaderLanguage::TYPE_BOOL;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].built_ins["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["fragment"].can_discard = true;
+
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["POSITION"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["NORMAL"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["UV"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["TEXTURE_PIXEL_SIZE"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["SCREEN_UV"] = ShaderLanguage::TYPE_VEC2;
+ 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_SHADOW"] = ShaderLanguage::TYPE_VEC4;
+ 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"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["POINT_COORD"] = ShaderLanguage::TYPE_VEC2;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_CANVAS_ITEM].functions["light"].can_discard = true;
shader_modes[VS::SHADER_CANVAS_ITEM].modes.insert("skip_vertex_transform");
@@ -213,20 +217,21 @@ ShaderTypes::ShaderTypes() {
/************ PARTICLES **************************/
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["COLOR"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["VELOCITY"] = ShaderLanguage::TYPE_VEC3;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["MASS"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["ACTIVE"] = ShaderLanguage::TYPE_BOOL;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["RESTART"] = ShaderLanguage::TYPE_BOOL;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["CUSTOM"] = ShaderLanguage::TYPE_VEC4;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["TRANSFORM"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["TIME"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["LIFETIME"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["DELTA"] = ShaderLanguage::TYPE_FLOAT;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["NUMBER"] = ShaderLanguage::TYPE_UINT;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["INDEX"] = ShaderLanguage::TYPE_INT;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["EMISSION_TRANSFORM"] = ShaderLanguage::TYPE_MAT4;
- shader_modes[VS::SHADER_PARTICLES].functions["vertex"]["RANDOM_SEED"] = ShaderLanguage::TYPE_UINT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["COLOR"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["VELOCITY"] = ShaderLanguage::TYPE_VEC3;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["MASS"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["ACTIVE"] = ShaderLanguage::TYPE_BOOL;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["RESTART"] = ShaderLanguage::TYPE_BOOL;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["CUSTOM"] = ShaderLanguage::TYPE_VEC4;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["TRANSFORM"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["TIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["LIFETIME"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["DELTA"] = ShaderLanguage::TYPE_FLOAT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["NUMBER"] = ShaderLanguage::TYPE_UINT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["INDEX"] = ShaderLanguage::TYPE_INT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["EMISSION_TRANSFORM"] = ShaderLanguage::TYPE_MAT4;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].built_ins["RANDOM_SEED"] = ShaderLanguage::TYPE_UINT;
+ shader_modes[VS::SHADER_PARTICLES].functions["vertex"].can_discard = false;
shader_modes[VS::SHADER_PARTICLES].modes.insert("billboard");
shader_modes[VS::SHADER_PARTICLES].modes.insert("disable_force");
diff --git a/servers/visual/shader_types.h b/servers/visual/shader_types.h
index b8cbabeec1..725217ba2e 100644
--- a/servers/visual/shader_types.h
+++ b/servers/visual/shader_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -36,7 +36,7 @@ class ShaderTypes {
struct Type {
- Map<StringName, Map<StringName, ShaderLanguage::DataType> > functions;
+ Map<StringName, ShaderLanguage::FunctionInfo> functions;
Set<String> modes;
};
@@ -49,7 +49,7 @@ class ShaderTypes {
public:
static ShaderTypes *get_singleton() { return singleton; }
- const Map<StringName, Map<StringName, ShaderLanguage::DataType> > &get_functions(VS::ShaderMode p_mode);
+ const Map<StringName, ShaderLanguage::FunctionInfo> &get_functions(VS::ShaderMode p_mode);
const Set<String> &get_modes(VS::ShaderMode p_mode);
const Set<String> &get_types();
diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp
index 584f45412e..25724981eb 100644
--- a/servers/visual/visual_server_canvas.cpp
+++ b/servers/visual/visual_server_canvas.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -37,10 +37,8 @@ void VisualServerCanvas::_render_canvas_item_tree(Item *p_canvas_item, const Tra
RasterizerCanvas::Item *z_list[z_range];
RasterizerCanvas::Item *z_last_list[z_range];
- for (int i = 0; i < z_range; i++) {
- z_list[i] = NULL;
- z_last_list[i] = NULL;
- }
+ memset(z_list, 0, z_range * sizeof(RasterizerCanvas::Item *));
+ memset(z_last_list, 0, z_range * sizeof(RasterizerCanvas::Item *));
_render_canvas_item(p_canvas_item, p_transform, p_clip_rect, Color(1, 1, 1, 1), 0, z_list, z_last_list, NULL, NULL);
@@ -200,10 +198,9 @@ void VisualServerCanvas::render_canvas(Canvas *p_canvas, const Transform2D &p_tr
RasterizerCanvas::Item *z_list[z_range];
RasterizerCanvas::Item *z_last_list[z_range];
- for (int i = 0; i < z_range; i++) {
- z_list[i] = NULL;
- z_last_list[i] = NULL;
- }
+ memset(z_list, 0, z_range * sizeof(RasterizerCanvas::Item *));
+ memset(z_last_list, 0, z_range * sizeof(RasterizerCanvas::Item *));
+
for (int i = 0; i < l; i++) {
_render_canvas_item(ci[i].item, p_transform, p_clip_rect, Color(1, 1, 1, 1), 0, z_list, z_last_list, NULL, NULL);
}
@@ -392,14 +389,14 @@ void VisualServerCanvas::canvas_item_set_draw_behind_parent(RID p_item, bool p_e
canvas_item->behind = p_enable;
}
-void VisualServerCanvas::canvas_item_add_line(RID p_item, const Point2 &p_from, const Point2 &p_to, const Color &p_colors, float p_width, bool p_antialiased) {
+void VisualServerCanvas::canvas_item_add_line(RID p_item, const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width, bool p_antialiased) {
Item *canvas_item = canvas_item_owner.getornull(p_item);
ERR_FAIL_COND(!canvas_item);
Item::CommandLine *line = memnew(Item::CommandLine);
ERR_FAIL_COND(!line);
- line->color = p_colors;
+ line->color = p_color;
line->from = p_from;
line->to = p_to;
line->width = p_width;
@@ -632,7 +629,7 @@ void VisualServerCanvas::canvas_item_add_primitive(RID p_item, const Vector<Poin
canvas_item->commands.push_back(prim);
}
-void VisualServerCanvas::canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, RID p_normal_map) {
+void VisualServerCanvas::canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, RID p_normal_map, bool p_antialiased) {
Item *canvas_item = canvas_item_owner.getornull(p_item);
ERR_FAIL_COND(!canvas_item);
@@ -661,6 +658,7 @@ void VisualServerCanvas::canvas_item_add_polygon(RID p_item, const Vector<Point2
polygon->colors = p_colors;
polygon->indices = indices;
polygon->count = indices.size();
+ polygon->antialiased = p_antialiased;
canvas_item->rect_dirty = true;
canvas_item->commands.push_back(polygon);
@@ -700,6 +698,7 @@ void VisualServerCanvas::canvas_item_add_triangle_array(RID p_item, const Vector
polygon->colors = p_colors;
polygon->indices = indices;
polygon->count = count;
+ polygon->antialiased = false;
canvas_item->rect_dirty = true;
canvas_item->commands.push_back(polygon);
@@ -745,6 +744,7 @@ void VisualServerCanvas::canvas_item_add_particles(RID p_item, RID p_particles,
//take the chance and request processing for them, at least once until they become visible again
VSG::storage->particles_request_process(p_particles);
+ canvas_item->rect_dirty = true;
canvas_item->commands.push_back(part);
}
@@ -758,6 +758,7 @@ void VisualServerCanvas::canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p
mm->multimesh = p_mesh;
mm->skeleton = p_skeleton;
+ canvas_item->rect_dirty = true;
canvas_item->commands.push_back(mm);
}
@@ -1001,11 +1002,11 @@ void VisualServerCanvas::canvas_light_set_shadow_buffer_size(RID p_light, int p_
RasterizerCanvas::Light *clight = canvas_light_owner.get(p_light);
ERR_FAIL_COND(!clight);
- int new_size = nearest_power_of_2(p_size);
+ int new_size = next_power_of_2(p_size);
if (new_size == clight->shadow_buffer_size)
return;
- clight->shadow_buffer_size = nearest_power_of_2(p_size);
+ clight->shadow_buffer_size = next_power_of_2(p_size);
if (clight->shadow_buffer.is_valid()) {
VSG::storage->free(clight->shadow_buffer);
@@ -1096,13 +1097,15 @@ void VisualServerCanvas::canvas_light_occluder_set_polygon(RID p_occluder, RID p
if (occluder->polygon.is_valid()) {
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get(p_polygon);
- if (!occluder_poly)
+ if (!occluder_poly) {
occluder->polygon = RID();
- ERR_FAIL_COND(!occluder_poly);
- occluder_poly->owners.insert(occluder);
- occluder->polygon_buffer = occluder_poly->occluder;
- occluder->aabb_cache = occluder_poly->aabb;
- occluder->cull_cache = occluder_poly->cull_mode;
+ ERR_FAIL_COND(!occluder_poly);
+ } else {
+ occluder_poly->owners.insert(occluder);
+ occluder->polygon_buffer = occluder_poly->occluder;
+ occluder->aabb_cache = occluder_poly->aabb;
+ occluder->cull_cache = occluder_poly->cull_mode;
+ }
}
}
void VisualServerCanvas::canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform) {
diff --git a/servers/visual/visual_server_canvas.h b/servers/visual/visual_server_canvas.h
index 48e3186ece..09ac9959f9 100644
--- a/servers/visual/visual_server_canvas.h
+++ b/servers/visual/visual_server_canvas.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -171,14 +171,14 @@ public:
void canvas_item_set_draw_behind_parent(RID p_item, bool p_enable);
void canvas_item_add_line(RID p_item, const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width = 1.0, bool p_antialiased = false);
- void canvas_item_add_polyline(RID p_item, const Vector<Point2> &p_line, const Vector<Color> &p_colors, float p_width = 1.0, bool p_antialiased = false);
+ void canvas_item_add_polyline(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, float p_width = 1.0, bool p_antialiased = false);
void canvas_item_add_rect(RID p_item, const Rect2 &p_rect, const Color &p_color);
void canvas_item_add_circle(RID p_item, const Point2 &p_pos, float p_radius, const Color &p_color);
void canvas_item_add_texture_rect(RID p_item, const Rect2 &p_rect, RID p_texture, bool p_tile = false, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, RID p_normal_map = RID());
void canvas_item_add_texture_rect_region(RID p_item, const Rect2 &p_rect, RID p_texture, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, RID p_normal_map = RID(), bool p_clip_uv = true);
void canvas_item_add_nine_patch(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector2 &p_topleft, const Vector2 &p_bottomright, VS::NinePatchAxisMode p_x_axis_mode = VS::NINE_PATCH_STRETCH, VS::NinePatchAxisMode p_y_axis_mode = VS::NINE_PATCH_STRETCH, bool p_draw_center = true, const Color &p_modulate = Color(1, 1, 1), RID p_normal_map = RID());
void canvas_item_add_primitive(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width = 1.0, RID p_normal_map = RID());
- void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID());
+ void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID(), bool p_antialiased = false);
void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID());
void canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_skeleton = RID());
void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_skeleton = RID());
diff --git a/servers/visual/visual_server_global.cpp b/servers/visual/visual_server_global.cpp
index a0f118dd67..1c86fb0264 100644
--- a/servers/visual/visual_server_global.cpp
+++ b/servers/visual/visual_server_global.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/visual/visual_server_global.h b/servers/visual/visual_server_global.h
index 079f03f1b1..c65abc75f8 100644
--- a/servers/visual/visual_server_global.h
+++ b/servers/visual/visual_server_global.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/visual/visual_server_light_baker.cpp b/servers/visual/visual_server_light_baker.cpp
index 67048eb54e..88a0c8166f 100644
--- a/servers/visual/visual_server_light_baker.cpp
+++ b/servers/visual/visual_server_light_baker.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/visual/visual_server_light_baker.h b/servers/visual/visual_server_light_baker.h
index 218c42bb1b..173dbd9e19 100644
--- a/servers/visual/visual_server_light_baker.h
+++ b/servers/visual/visual_server_light_baker.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index cc4fe0809d..68ca586caf 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "visual_server_raster.h"
+
#include "default_mouse_cursor.xpm"
#include "io/marshalls.h"
#include "os/os.h"
@@ -208,7743 +209,3 @@ VisualServerRaster::~VisualServerRaster() {
memdelete(VSG::viewport);
memdelete(VSG::rasterizer);
}
-
-#if 0
-
-BalloonAllocator<> *VisualServerRaster::OctreeAllocator::allocator=NULL;
-
-#define VS_CHANGED \
- changes++;\
-
- //print_line(__FUNCTION__);
-
-
-
-
-RID VisualServerRaster::texture_create() {
-
- return rasterizer->texture_create();
-}
-
-
-void VisualServerRaster::texture_allocate(RID p_texture, int p_width, int p_height,Image::Format p_format,uint32_t p_flags) {
-
- rasterizer->texture_allocate(p_texture,p_width,p_height,p_format,p_flags);
-}
-
-void VisualServerRaster::texture_set_flags(RID p_texture,uint32_t p_flags) {
-
- VS_CHANGED;
- rasterizer->texture_set_flags(p_texture,p_flags);
-}
-
-
-void VisualServerRaster::texture_set_data(RID p_texture,const Image& p_image,CubeMapSide p_cube_side) {
-
- VS_CHANGED;
- rasterizer->texture_set_data(p_texture,p_image,p_cube_side);
-
-
-}
-
-Image VisualServerRaster::texture_get_data(RID p_texture,CubeMapSide p_cube_side) const {
-
-
- return rasterizer->texture_get_data(p_texture,p_cube_side);
-}
-
-
-uint32_t VisualServerRaster::texture_get_flags(RID p_texture) const {
-
- return rasterizer->texture_get_flags(p_texture);
-
-}
-Image::Format VisualServerRaster::texture_get_format(RID p_texture) const {
-
- return rasterizer->texture_get_format(p_texture);
-
-}
-uint32_t VisualServerRaster::texture_get_width(RID p_texture) const {
-
- return rasterizer->texture_get_width(p_texture);
-}
-
-uint32_t VisualServerRaster::texture_get_height(RID p_texture) const {
-
- return rasterizer->texture_get_height(p_texture);
-}
-
-void VisualServerRaster::texture_set_size_override(RID p_texture,int p_width, int p_height) {
-
- rasterizer->texture_set_size_override(p_texture,p_width,p_height);
-}
-
-bool VisualServerRaster::texture_can_stream(RID p_texture) const {
-
- return false;
-}
-
-void VisualServerRaster::texture_set_reload_hook(RID p_texture,ObjectID p_owner,const StringName& p_function) const {
-
- rasterizer->texture_set_reload_hook(p_texture,p_owner,p_function);
-}
-
-void VisualServerRaster::texture_set_path(RID p_texture,const String& p_path) {
-
- rasterizer->texture_set_path(p_texture,p_path);
-}
-
-String VisualServerRaster::texture_get_path(RID p_texture) const{
-
- return rasterizer->texture_get_path(p_texture);
-}
-
-void VisualServerRaster::texture_debug_usage(List<TextureInfo> *r_info){
-
- rasterizer->texture_debug_usage(r_info);
-}
-
-void VisualServerRaster::texture_set_shrink_all_x2_on_set_data(bool p_enable) {
-
- rasterizer->texture_set_shrink_all_x2_on_set_data(p_enable);
-}
-
-/* SHADER API */
-
-RID VisualServerRaster::shader_create(ShaderMode p_mode) {
-
- return rasterizer->shader_create(p_mode);
-}
-
-void VisualServerRaster::shader_set_mode(RID p_shader,ShaderMode p_mode){
-
- VS_CHANGED;
- rasterizer->shader_set_mode(p_shader,p_mode);
-}
-VisualServer::ShaderMode VisualServerRaster::shader_get_mode(RID p_shader) const{
-
- return rasterizer->shader_get_mode(p_shader);
-}
-
-
-void VisualServerRaster::shader_set_code(RID p_shader, const String& p_vertex, const String& p_fragment,const String& p_light,int p_vertex_ofs,int p_fragment_ofs,int p_light_ofs) {
-
- VS_CHANGED;
- rasterizer->shader_set_code(p_shader,p_vertex,p_fragment,p_light,p_vertex_ofs,p_fragment_ofs,p_light_ofs);
-}
-
-String VisualServerRaster::shader_get_vertex_code(RID p_shader) const{
-
- return rasterizer->shader_get_vertex_code(p_shader);
-}
-
-String VisualServerRaster::shader_get_fragment_code(RID p_shader) const{
-
- return rasterizer->shader_get_fragment_code(p_shader);
-}
-
-String VisualServerRaster::shader_get_light_code(RID p_shader) const{
-
- return rasterizer->shader_get_light_code(p_shader);
-}
-
-void VisualServerRaster::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const {
-
- return rasterizer->shader_get_param_list(p_shader,p_param_list);
-}
-
-
-void VisualServerRaster::shader_set_default_texture_param(RID p_shader, const StringName& p_name, RID p_texture) {
-
- rasterizer->shader_set_default_texture_param(p_shader,p_name,p_texture);
-}
-
-RID VisualServerRaster::shader_get_default_texture_param(RID p_shader, const StringName& p_name) const{
-
- return rasterizer->shader_get_default_texture_param(p_shader,p_name);
-}
-
-
-/* Material */
-
-RID VisualServerRaster::material_create() {
-
- return rasterizer->material_create();
-}
-
-void VisualServerRaster::material_set_shader(RID p_material, RID p_shader) {
-
- VS_CHANGED;
- rasterizer->material_set_shader(p_material, p_shader );
-}
-
-RID VisualServerRaster::material_get_shader(RID p_material) const {
-
- return rasterizer->material_get_shader(p_material);
-}
-
-void VisualServerRaster::material_set_param(RID p_material, const StringName& p_param, const Variant& p_value) {
-
- VS_CHANGED;
- rasterizer->material_set_param(p_material, p_param,p_value );
-}
-
-Variant VisualServerRaster::material_get_param(RID p_material, const StringName& p_param) const {
-
- return rasterizer->material_get_param(p_material,p_param);
-}
-
-void VisualServerRaster::material_set_flag(RID p_material, MaterialFlag p_flag,bool p_enabled) {
- VS_CHANGED;
- rasterizer->material_set_flag(p_material,p_flag,p_enabled);
-}
-
-void VisualServerRaster::material_set_depth_draw_mode(RID p_material, MaterialDepthDrawMode p_mode) {
-
- VS_CHANGED;
- rasterizer->material_set_depth_draw_mode(p_material,p_mode);
-
-}
-
-VS::MaterialDepthDrawMode VisualServerRaster::material_get_depth_draw_mode(RID p_material) const {
-
- return rasterizer->material_get_depth_draw_mode(p_material);
-}
-
-
-bool VisualServerRaster::material_get_flag(RID p_material,MaterialFlag p_flag) const {
-
- return rasterizer->material_get_flag(p_material,p_flag);
-}
-
-void VisualServerRaster::material_set_blend_mode(RID p_material,MaterialBlendMode p_mode) {
- VS_CHANGED;
- rasterizer->material_set_blend_mode(p_material,p_mode);
-}
-VS::MaterialBlendMode VisualServerRaster::material_get_blend_mode(RID p_material) const {
-
- return rasterizer->material_get_blend_mode(p_material);
-}
-
-void VisualServerRaster::material_set_line_width(RID p_material,float p_line_width) {
- VS_CHANGED;
- rasterizer->material_set_line_width(p_material,p_line_width);
-}
-float VisualServerRaster::material_get_line_width(RID p_material) const {
-
- return rasterizer->material_get_line_width(p_material);
-}
-
-/* FIXED MATERIAL */
-
-RID VisualServerRaster::fixed_material_create() {
-
- return rasterizer->fixed_material_create();
-}
-
-void VisualServerRaster::fixed_material_set_flag(RID p_material, SpatialMaterialFlags p_flag, bool p_enabled) {
-
- rasterizer->fixed_material_set_flag(p_material,p_flag,p_enabled);
-}
-
-bool VisualServerRaster::fixed_material_get_flag(RID p_material, SpatialMaterialFlags p_flag) const {
-
- return rasterizer->fixed_material_get_flag(p_material,p_flag);
-}
-
-void VisualServerRaster::fixed_material_set_param(RID p_material, SpatialMaterialParam p_parameter, const Variant& p_value) {
- VS_CHANGED;
- rasterizer->fixed_material_set_parameter(p_material,p_parameter,p_value);
-}
-
-Variant VisualServerRaster::fixed_material_get_param(RID p_material,SpatialMaterialParam p_parameter) const {
-
- return rasterizer->fixed_material_get_parameter(p_material,p_parameter);
-}
-
-
-void VisualServerRaster::fixed_material_set_texture(RID p_material,SpatialMaterialParam p_parameter, RID p_texture) {
- VS_CHANGED;
- rasterizer->fixed_material_set_texture(p_material,p_parameter,p_texture);
-}
-
-RID VisualServerRaster::fixed_material_get_texture(RID p_material,SpatialMaterialParam p_parameter) const {
-
- return rasterizer->fixed_material_get_texture(p_material,p_parameter);
-}
-
-
-
-
-void VisualServerRaster::fixed_material_set_texcoord_mode(RID p_material,SpatialMaterialParam p_parameter, SpatialMaterialTexCoordMode p_mode) {
- VS_CHANGED;
- rasterizer->fixed_material_set_texcoord_mode(p_material,p_parameter,p_mode);
-}
-
-VS::SpatialMaterialTexCoordMode VisualServerRaster::fixed_material_get_texcoord_mode(RID p_material,SpatialMaterialParam p_parameter) const {
-
- return rasterizer->fixed_material_get_texcoord_mode(p_material,p_parameter);
-}
-
-void VisualServerRaster::fixed_material_set_point_size(RID p_material,float p_size) {
- VS_CHANGED
-
- rasterizer->fixed_material_set_point_size(p_material,p_size);
-}
-
-float VisualServerRaster::fixed_material_get_point_size(RID p_material) const{
-
- return rasterizer->fixed_material_get_point_size(p_material);
-}
-
-
-void VisualServerRaster::fixed_material_set_uv_transform(RID p_material,const Transform& p_transform) {
- VS_CHANGED;
- rasterizer->fixed_material_set_uv_transform(p_material,p_transform);
-}
-
-Transform VisualServerRaster::fixed_material_get_uv_transform(RID p_material) const {
-
- return rasterizer->fixed_material_get_uv_transform(p_material);
-}
-
-void VisualServerRaster::fixed_material_set_light_shader(RID p_material,SpatialMaterialLightShader p_shader) {
-
- VS_CHANGED;
- rasterizer->fixed_material_set_light_shader(p_material,p_shader);
-
-}
-
-VisualServerRaster::SpatialMaterialLightShader VisualServerRaster::fixed_material_get_light_shader(RID p_material) const{
-
- return rasterizer->fixed_material_get_light_shader(p_material);
-}
-
-
-
-/* MESH API */
-
-RID VisualServerRaster::mesh_create() {
-
- return rasterizer->mesh_create();
-}
-
-void VisualServerRaster::mesh_set_morph_target_count(RID p_mesh,int p_amount) {
-
- rasterizer->mesh_set_morph_target_count(p_mesh,p_amount);
- int amount = rasterizer->mesh_get_morph_target_count(p_mesh);
-
-
- Map< RID, Set<RID> >::Element * E = instance_dependency_map.find( p_mesh );
-
- if (!E)
- return;
-
-
- Set<RID>::Element *I = E->get().front();
-
- while(I) {
-
- Instance *ins = instance_owner.get( I->get() );
- ins->data.morph_values.resize(amount);
- I = I->next();
- }
-}
-
-int VisualServerRaster::mesh_get_morph_target_count(RID p_mesh) const {
-
- return rasterizer->mesh_get_morph_target_count(p_mesh);
-}
-
-void VisualServerRaster::mesh_set_morph_target_mode(RID p_mesh,MorphTargetMode p_mode) {
-
- rasterizer->mesh_set_morph_target_mode(p_mesh,p_mode);
-}
-
-VisualServer::MorphTargetMode VisualServerRaster::mesh_get_morph_target_mode(RID p_mesh) const{
-
- return rasterizer->mesh_get_morph_target_mode(p_mesh);
-}
-
-void VisualServerRaster::mesh_add_custom_surface(RID p_mesh,const Variant& p_dat) {
-
-
-}
-
-
-void VisualServerRaster::mesh_add_surface(RID p_mesh,PrimitiveType p_primitive,const Array& p_arrays,const Array& p_blend_shapes,bool p_alpha_sort) {
-
- VS_CHANGED;
- _dependency_queue_update(p_mesh,true,true);
- rasterizer->mesh_add_surface(p_mesh,p_primitive,p_arrays,p_blend_shapes,p_alpha_sort);
-
-}
-
-Array VisualServerRaster::mesh_get_surface_arrays(RID p_mesh,int p_surface) const {
-
- return rasterizer->mesh_get_surface_arrays(p_mesh,p_surface);
-}
-Array VisualServerRaster::mesh_get_surface_morph_arrays(RID p_mesh,int p_surface) const {
-
- return rasterizer->mesh_get_surface_morph_arrays(p_mesh,p_surface);
-}
-
-
-
-
-void VisualServerRaster::mesh_surface_set_material(RID p_mesh, int p_surface, RID p_material,bool p_owned){
- VS_CHANGED;
- rasterizer->mesh_surface_set_material(p_mesh,p_surface,p_material,p_owned);
-}
-
-RID VisualServerRaster::mesh_surface_get_material(RID p_mesh,int p_surface) const {
-
- return rasterizer->mesh_surface_get_material(p_mesh,p_surface);
-
-}
-
-
-int VisualServerRaster::mesh_surface_get_array_len(RID p_mesh, int p_surface) const{
-
- return rasterizer->mesh_surface_get_array_len(p_mesh,p_surface);
-}
-
-int VisualServerRaster::mesh_surface_get_array_index_len(RID p_mesh, int p_surface) const{
-
-
- return rasterizer->mesh_surface_get_array_index_len(p_mesh,p_surface);
-}
-
-uint32_t VisualServerRaster::mesh_surface_get_format(RID p_mesh, int p_surface) const{
-
- return rasterizer->mesh_surface_get_format(p_mesh,p_surface);
-}
-
-VisualServer::PrimitiveType VisualServerRaster::mesh_surface_get_primitive_type(RID p_mesh, int p_surface) const{
-
- return rasterizer->mesh_surface_get_primitive_type(p_mesh,p_surface);
-}
-
-
-void VisualServerRaster::mesh_remove_surface(RID p_mesh,int p_surface){
-
- rasterizer->mesh_remove_surface(p_mesh,p_surface);
- _dependency_queue_update(p_mesh,true,true);
-}
-
-int VisualServerRaster::mesh_get_surface_count(RID p_mesh) const{
-
- return rasterizer->mesh_get_surface_count(p_mesh);
-
-}
-
-
-void VisualServerRaster::mesh_set_custom_aabb(RID p_mesh,const AABB& p_aabb) {
-
- VS_CHANGED;
- _dependency_queue_update(p_mesh,true);
- rasterizer->mesh_set_custom_aabb(p_mesh,p_aabb);
-
-}
-
-AABB VisualServerRaster::mesh_get_custom_aabb(RID p_mesh) const {
-
- return rasterizer->mesh_get_custom_aabb(p_mesh);
-}
-
-void VisualServerRaster::mesh_clear(RID p_mesh) {
-
- ERR_FAIL_COND(!rasterizer->is_mesh(p_mesh));
- while(rasterizer->mesh_get_surface_count(p_mesh)) {
- rasterizer->mesh_remove_surface(p_mesh,0);
- }
-
- _dependency_queue_update(p_mesh,true,true);
-}
-
-
-/* MULTIMESH */
-
-RID VisualServerRaster::multimesh_create() {
-
- return rasterizer->multimesh_create();
-}
-
-void VisualServerRaster::multimesh_set_instance_count(RID p_multimesh,int p_count) {
- VS_CHANGED;
- rasterizer->multimesh_set_instance_count(p_multimesh,p_count);
-}
-
-int VisualServerRaster::multimesh_get_instance_count(RID p_multimesh) const {
-
- return rasterizer->multimesh_get_instance_count(p_multimesh);
-}
-
-void VisualServerRaster::multimesh_set_mesh(RID p_multimesh,RID p_mesh) {
- VS_CHANGED;
- rasterizer->multimesh_set_mesh(p_multimesh,p_mesh);
-
-}
-void VisualServerRaster::multimesh_set_aabb(RID p_multimesh,const AABB& p_aabb) {
- VS_CHANGED;
- rasterizer->multimesh_set_aabb(p_multimesh,p_aabb);
- _dependency_queue_update(p_multimesh,true);
-
-}
-
-void VisualServerRaster::multimesh_instance_set_transform(RID p_multimesh,int p_index,const Transform& p_transform) {
- VS_CHANGED;
- rasterizer->multimesh_instance_set_transform(p_multimesh,p_index,p_transform);
-
-}
-void VisualServerRaster::multimesh_instance_set_color(RID p_multimesh,int p_index,const Color& p_color) {
- VS_CHANGED;
- rasterizer->multimesh_instance_set_color(p_multimesh,p_index,p_color);
-
-}
-RID VisualServerRaster::multimesh_get_mesh(RID p_multimesh) const {
-
- return rasterizer->multimesh_get_mesh(p_multimesh);
-}
-AABB VisualServerRaster::multimesh_get_aabb(RID p_multimesh,const AABB& p_aabb) const {
-
-
- return rasterizer->multimesh_get_aabb(p_multimesh);
-}
-
-Transform VisualServerRaster::multimesh_instance_get_transform(RID p_multimesh,int p_index) const {
-
- return rasterizer->multimesh_instance_get_transform(p_multimesh,p_index);
-}
-Color VisualServerRaster::multimesh_instance_get_color(RID p_multimesh,int p_index) const {
-
- return rasterizer->multimesh_instance_get_color(p_multimesh,p_index);
-}
-
-void VisualServerRaster::multimesh_set_visible_instances(RID p_multimesh,int p_visible) {
-
- rasterizer->multimesh_set_visible_instances(p_multimesh,p_visible);
-
-}
-
-int VisualServerRaster::multimesh_get_visible_instances(RID p_multimesh) const {
-
- return rasterizer->multimesh_get_visible_instances(p_multimesh);
-}
-
-
-/* IMMEDIATE API */
-
-
-RID VisualServerRaster::immediate_create() {
-
- return rasterizer->immediate_create();
-}
-
-void VisualServerRaster::immediate_begin(RID p_immediate,PrimitiveType p_primitive,RID p_texture){
-
- rasterizer->immediate_begin(p_immediate,p_primitive,p_texture);
-}
-void VisualServerRaster::immediate_vertex(RID p_immediate,const Vector3& p_vertex){
-
- rasterizer->immediate_vertex(p_immediate,p_vertex);
-
-}
-void VisualServerRaster::immediate_normal(RID p_immediate,const Vector3& p_normal){
-
- rasterizer->immediate_normal(p_immediate,p_normal);
-
-}
-void VisualServerRaster::immediate_tangent(RID p_immediate,const Plane& p_tangent){
-
- rasterizer->immediate_tangent(p_immediate,p_tangent);
-
-}
-void VisualServerRaster::immediate_color(RID p_immediate,const Color& p_color){
-
- rasterizer->immediate_color(p_immediate,p_color);
-
-}
-void VisualServerRaster::immediate_uv(RID p_immediate,const Vector2& p_uv){
-
- rasterizer->immediate_uv(p_immediate,p_uv);
-
-}
-void VisualServerRaster::immediate_uv2(RID p_immediate,const Vector2& p_uv2){
-
- rasterizer->immediate_uv2(p_immediate,p_uv2);
-
-}
-void VisualServerRaster::immediate_end(RID p_immediate){
-
- VS_CHANGED;
- _dependency_queue_update(p_immediate,true);
- rasterizer->immediate_end(p_immediate);
-
-}
-void VisualServerRaster::immediate_clear(RID p_immediate){
-
- VS_CHANGED;
- _dependency_queue_update(p_immediate,true);
- rasterizer->immediate_clear(p_immediate);
-
-}
-
-void VisualServerRaster::immediate_set_material(RID p_immediate,RID p_material) {
-
- rasterizer->immediate_set_material(p_immediate,p_material);
-}
-
-RID VisualServerRaster::immediate_get_material(RID p_immediate) const {
-
- return rasterizer->immediate_get_material(p_immediate);
-}
-
-
-/* PARTICLES API */
-
-RID VisualServerRaster::particles_create() {
-
- return rasterizer->particles_create();
-}
-
-void VisualServerRaster::particles_set_amount(RID p_particles, int p_amount) {
- VS_CHANGED;
- rasterizer->particles_set_amount(p_particles,p_amount);
-}
-
-int VisualServerRaster::particles_get_amount(RID p_particles) const {
-
- return rasterizer->particles_get_amount(p_particles);
-}
-
-void VisualServerRaster::particles_set_emitting(RID p_particles, bool p_emitting) {
- VS_CHANGED;
- rasterizer->particles_set_emitting(p_particles,p_emitting);
-}
-bool VisualServerRaster::particles_is_emitting(RID p_particles) const {
-
- return rasterizer->particles_is_emitting(p_particles);
-}
-
-void VisualServerRaster::particles_set_visibility_aabb(RID p_particles, const AABB& p_visibility) {
- VS_CHANGED;
- rasterizer->particles_set_visibility_aabb(p_particles, p_visibility);
-}
-AABB VisualServerRaster::particles_get_visibility_aabb(RID p_particles) const {
-
- return rasterizer->particles_get_visibility_aabb(p_particles);
-}
-
-void VisualServerRaster::particles_set_emission_half_extents(RID p_particles, const Vector3& p_half_extents) {
- VS_CHANGED;
- rasterizer->particles_set_emission_half_extents(p_particles,p_half_extents);
-}
-Vector3 VisualServerRaster::particles_get_emission_half_extents(RID p_particles) const {
-
- return rasterizer->particles_get_emission_half_extents(p_particles);
-}
-
-void VisualServerRaster::particles_set_emission_base_velocity(RID p_particles, const Vector3& p_base_velocity) {
- VS_CHANGED;
- rasterizer->particles_set_emission_base_velocity(p_particles,p_base_velocity);
-}
-Vector3 VisualServerRaster::particles_get_emission_base_velocity(RID p_particles) const {
-
- return rasterizer->particles_get_emission_base_velocity(p_particles);
-}
-
-void VisualServerRaster::particles_set_emission_points(RID p_particles, const PoolVector<Vector3>& p_points) {
-
- VS_CHANGED;
- rasterizer->particles_set_emission_points(p_particles,p_points);
-}
-
-PoolVector<Vector3> VisualServerRaster::particles_get_emission_points(RID p_particles) const {
-
- return rasterizer->particles_get_emission_points(p_particles);
-}
-
-void VisualServerRaster::particles_set_gravity_normal(RID p_particles, const Vector3& p_normal) {
- VS_CHANGED;
- rasterizer->particles_set_gravity_normal(p_particles,p_normal);
-}
-Vector3 VisualServerRaster::particles_get_gravity_normal(RID p_particles) const {
-
- return rasterizer->particles_get_gravity_normal(p_particles);
-}
-
-void VisualServerRaster::particles_set_variable(RID p_particles, ParticleVariable p_variable,float p_value) {
- VS_CHANGED;
- rasterizer->particles_set_variable(p_particles,p_variable,p_value);
-}
-float VisualServerRaster::particles_get_variable(RID p_particles, ParticleVariable p_variable) const {
-
- return rasterizer->particles_get_variable(p_particles,p_variable);
-}
-
-void VisualServerRaster::particles_set_randomness(RID p_particles, ParticleVariable p_variable,float p_randomness) {
- VS_CHANGED;
- rasterizer->particles_set_randomness(p_particles,p_variable,p_randomness);
-}
-float VisualServerRaster::particles_get_randomness(RID p_particles, ParticleVariable p_variable) const {
-
- return rasterizer->particles_get_randomness(p_particles,p_variable);
-}
-
-void VisualServerRaster::particles_set_color_phases(RID p_particles, int p_phases) {
- VS_CHANGED;
- rasterizer->particles_set_color_phases(p_particles,p_phases);
-}
-int VisualServerRaster::particles_get_color_phases(RID p_particles) const {
-
- return rasterizer->particles_get_color_phases(p_particles);
-}
-
-void VisualServerRaster::particles_set_color_phase_pos(RID p_particles, int p_phase, float p_pos) {
- VS_CHANGED;
- rasterizer->particles_set_color_phase_pos(p_particles,p_phase,p_pos);
-}
-float VisualServerRaster::particles_get_color_phase_pos(RID p_particles, int p_phase) const {
-
- return rasterizer->particles_get_color_phase_pos(p_particles,p_phase);
-}
-
-void VisualServerRaster::particles_set_attractors(RID p_particles, int p_attractors) {
- VS_CHANGED;
- rasterizer->particles_set_attractors(p_particles,p_attractors);
-}
-int VisualServerRaster::particles_get_attractors(RID p_particles) const {
-
- return rasterizer->particles_get_attractors(p_particles);
-}
-
-void VisualServerRaster::particles_set_attractor_pos(RID p_particles, int p_attractor, const Vector3& p_pos) {
- VS_CHANGED;
- rasterizer->particles_set_attractor_pos(p_particles,p_attractor,p_pos);
-}
-Vector3 VisualServerRaster::particles_get_attractor_pos(RID p_particles,int p_attractor) const {
-
- return rasterizer->particles_get_attractor_pos(p_particles,p_attractor);
-}
-
-void VisualServerRaster::particles_set_attractor_strength(RID p_particles, int p_attractor, float p_force) {
- VS_CHANGED;
- rasterizer->particles_set_attractor_strength(p_particles,p_attractor,p_force);
-}
-
-float VisualServerRaster::particles_get_attractor_strength(RID p_particles,int p_attractor) const {
-
- return rasterizer->particles_get_attractor_strength(p_particles,p_attractor);
-}
-
-void VisualServerRaster::particles_set_color_phase_color(RID p_particles, int p_phase, const Color& p_color) {
- VS_CHANGED;
- rasterizer->particles_set_color_phase_color(p_particles,p_phase,p_color);
-}
-Color VisualServerRaster::particles_get_color_phase_color(RID p_particles, int p_phase) const {
-
- return rasterizer->particles_get_color_phase_color(p_particles,p_phase);
-}
-
-void VisualServerRaster::particles_set_material(RID p_particles, RID p_material,bool p_owned) {
- VS_CHANGED;
- rasterizer->particles_set_material(p_particles,p_material,p_owned);
-}
-RID VisualServerRaster::particles_get_material(RID p_particles) const {
-
- return rasterizer->particles_get_material(p_particles);
-}
-
-
-void VisualServerRaster::particles_set_height_from_velocity(RID p_particles, bool p_enable) {
-
- VS_CHANGED;
- rasterizer->particles_set_height_from_velocity(p_particles,p_enable);
-
-}
-
-bool VisualServerRaster::particles_has_height_from_velocity(RID p_particles) const {
-
- return rasterizer->particles_has_height_from_velocity(p_particles);
-}
-
-void VisualServerRaster::particles_set_use_local_coordinates(RID p_particles, bool p_enable) {
-
- rasterizer->particles_set_use_local_coordinates(p_particles,p_enable);
-}
-
-bool VisualServerRaster::particles_is_using_local_coordinates(RID p_particles) const {
-
- return rasterizer->particles_is_using_local_coordinates(p_particles);
-}
-
-
-/* Light API */
-
-RID VisualServerRaster::light_create(LightType p_type) {
-
- return rasterizer->light_create(p_type);
-}
-VisualServer::LightType VisualServerRaster::light_get_type(RID p_light) const {
-
- return rasterizer->light_get_type(p_light);
-}
-
-void VisualServerRaster::light_set_color(RID p_light,LightColor p_type, const Color& p_color) {
- VS_CHANGED;
- rasterizer->light_set_color(p_light,p_type,p_color);
-
-}
-Color VisualServerRaster::light_get_color(RID p_light,LightColor p_type) const {
-
- return rasterizer->light_get_color(p_light,p_type);
-
-}
-
-
-void VisualServerRaster::light_set_shadow(RID p_light,bool p_enabled) {
- VS_CHANGED;
- rasterizer->light_set_shadow(p_light,p_enabled);
-}
-
-bool VisualServerRaster::light_has_shadow(RID p_light) const {
-
- return rasterizer->light_has_shadow(p_light);
-}
-
-
-
-void VisualServerRaster::light_set_volumetric(RID p_light,bool p_enabled) {
- VS_CHANGED;
- rasterizer->light_set_volumetric(p_light,p_enabled);
-}
-
-bool VisualServerRaster::light_is_volumetric(RID p_light) const {
-
- return rasterizer->light_is_volumetric(p_light);
-}
-
-void VisualServerRaster::light_set_projector(RID p_light,RID p_texture) {
- VS_CHANGED;
- rasterizer->light_set_projector(p_light,p_texture);
-}
-
-RID VisualServerRaster::light_get_projector(RID p_light) const {
-
- return rasterizer->light_get_projector(p_light);
-}
-
-void VisualServerRaster::light_set_param(RID p_light, LightParam p_var, float p_value) {
- VS_CHANGED;
- rasterizer->light_set_var(p_light,p_var,p_value);
- _dependency_queue_update(p_light,true);
-
-}
-
-float VisualServerRaster::light_get_param(RID p_light, LightParam p_var) const {
-
-
- return rasterizer->light_get_var(p_light,p_var);
-}
-
-void VisualServerRaster::light_set_operator(RID p_light,LightOp p_op) {
- VS_CHANGED;
- rasterizer->light_set_operator(p_light,p_op);
-}
-
-VisualServerRaster::LightOp VisualServerRaster::light_get_operator(RID p_light) const {
-
- return rasterizer->light_get_operator(p_light);
-}
-
-void VisualServerRaster::light_omni_set_shadow_mode(RID p_light,LightOmniShadowMode p_mode) {
- VS_CHANGED;
- rasterizer->light_omni_set_shadow_mode(p_light,p_mode);
-}
-
-VisualServerRaster::LightOmniShadowMode VisualServerRaster::light_omni_get_shadow_mode(RID p_light) const {
-
- return rasterizer->light_omni_get_shadow_mode(p_light);
-}
-
-void VisualServerRaster::light_directional_set_shadow_mode(RID p_light,LightDirectionalShadowMode p_mode){
- VS_CHANGED;
- rasterizer->light_directional_set_shadow_mode(p_light,p_mode);
-}
-
-VS::LightDirectionalShadowMode VisualServerRaster::light_directional_get_shadow_mode(RID p_light) const{
-
- return rasterizer->light_directional_get_shadow_mode(p_light);
-}
-
-void VisualServerRaster::light_directional_set_shadow_param(RID p_light,LightDirectionalShadowParam p_param, float p_value) {
- VS_CHANGED;
- rasterizer->light_directional_set_shadow_param(p_light,p_param,p_value);
-}
-
-float VisualServerRaster::light_directional_get_shadow_param(RID p_light,LightDirectionalShadowParam p_param) const {
-
- return rasterizer->light_directional_get_shadow_param(p_light,p_param);
-}
-
-
-RID VisualServerRaster::skeleton_create() {
-
- return rasterizer->skeleton_create();
-}
-
-void VisualServerRaster::skeleton_resize(RID p_skeleton,int p_bones) {
- VS_CHANGED;
- rasterizer->skeleton_resize(p_skeleton,p_bones);
-}
-
-int VisualServerRaster::skeleton_get_bone_count(RID p_skeleton) const {
-
- return rasterizer->skeleton_get_bone_count(p_skeleton);
-}
-
-void VisualServerRaster::skeleton_bone_set_transform(RID p_skeleton,int p_bone, const Transform& p_transform) {
- VS_CHANGED;
- rasterizer->skeleton_bone_set_transform(p_skeleton,p_bone,p_transform);
-
- Map< RID, Set<Instance*> >::Element *E=skeleton_dependency_map.find(p_skeleton);
-
- if (E) {
- //detach skeletons
- for (Set<Instance*>::Element *F=E->get().front();F;F=F->next()) {
-
- _instance_queue_update( F->get() , true);
- }
- }
-}
-
-Transform VisualServerRaster::skeleton_bone_get_transform(RID p_skeleton,int p_bone) {
-
-
- return rasterizer->skeleton_bone_get_transform(p_skeleton,p_bone);
-
-}
-
-
-/* VISIBILITY API */
-
-/* ROOM API */
-
-RID VisualServerRaster::room_create() {
-
- Room *room = memnew( Room );
- ERR_FAIL_COND_V(!room,RID());
- return room_owner.make_rid( room );
-
-}
-
-void VisualServerRaster::room_set_bounds(RID p_room, const BSP_Tree& p_bounds) {
- VS_CHANGED;
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND(!room);
- room->bounds=p_bounds;
- _dependency_queue_update(p_room,true);
-
-}
-
-BSP_Tree VisualServerRaster::room_get_bounds(RID p_room) const {
-
- Room *room = room_owner.get(p_room);
- ERR_FAIL_COND_V(!room, BSP_Tree());
- return room->bounds;
-
-}
-
-/* PORTAL API */
-
-RID VisualServerRaster::portal_create() {
- VS_CHANGED;
- Portal *portal = memnew( Portal );
- ERR_FAIL_COND_V(!portal,RID());
- return portal_owner.make_rid( portal );
-
-
-}
-
-
-void VisualServerRaster::portal_set_shape(RID p_portal, const Vector<Point2>& p_shape) {
- VS_CHANGED;
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND(!portal);
- portal->shape=p_shape;
-
- portal->bounds=Rect2();
-
- for(int i=0;i<p_shape.size();i++) {
-
- if (i==0)
- portal->bounds.pos=p_shape[i];
- else
- portal->bounds.expand_to(p_shape[i]);
- }
-
- _dependency_queue_update(p_portal,true);
-}
-
-
-Vector<Point2> VisualServerRaster::portal_get_shape(RID p_portal) const {
-
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND_V(!portal, Vector<Point2>());
- return portal->shape;
-
-
-}
-
-void VisualServerRaster::portal_set_enabled(RID p_portal, bool p_enabled) {
- VS_CHANGED;
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND(!portal);
- portal->enabled=p_enabled;
-
-}
-
-bool VisualServerRaster::portal_is_enabled(RID p_portal) const {
-
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND_V(!portal, false);
- return portal->enabled;
-
-}
-void VisualServerRaster::portal_set_disable_distance(RID p_portal, float p_distance) {
- VS_CHANGED;
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND(!portal);
- portal->disable_distance=p_distance;
-
-}
-float VisualServerRaster::portal_get_disable_distance(RID p_portal) const {
-
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND_V(!portal, -1);
- return portal->disable_distance;
-
-}
-void VisualServerRaster::portal_set_disabled_color(RID p_portal, const Color& p_color) {
- VS_CHANGED;
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND(!portal);
- portal->disable_color=p_color;
-
-}
-Color VisualServerRaster::portal_get_disabled_color(RID p_portal) const {
-
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND_V(!portal, Color());
- return portal->disable_color;
-}
-
-void VisualServerRaster::portal_set_connect_range(RID p_portal, float p_range) {
- VS_CHANGED;
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND(!portal);
- portal->connect_range=p_range;
- _dependency_queue_update(p_portal,true);
-}
-
-float VisualServerRaster::portal_get_connect_range(RID p_portal) const {
-
- Portal *portal = portal_owner.get(p_portal);
- ERR_FAIL_COND_V(!portal,0);
- return portal->connect_range;
-}
-
-
-RID VisualServerRaster::baked_light_create() {
-
- BakedLight *baked_light = memnew( BakedLight );
- ERR_FAIL_COND_V(!baked_light,RID());
- baked_light->data.mode=BAKED_LIGHT_OCTREE;
-
- baked_light->data.octree_lattice_size=0;
- baked_light->data.octree_lattice_divide=0;
- baked_light->data.octree_steps=1;
- baked_light->data.lightmap_multiplier=1.0;
- baked_light->data.realtime_color_enabled=false;
- baked_light->data.realtime_color=Color(1.0, 1.0, 1.0);
- baked_light->data.realtime_energy = 1.0;
-
- return baked_light_owner.make_rid( baked_light );
-
-}
-
-void VisualServerRaster::baked_light_set_mode(RID p_baked_light,BakedLightMode p_mode){
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
- baked_light->data.mode=p_mode;
- baked_light->data.color_multiplier=1.0;
- _dependency_queue_update(p_baked_light,true);
-
-
-}
-
-VisualServer::BakedLightMode VisualServerRaster::baked_light_get_mode(RID p_baked_light) const{
-
- const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light,BAKED_LIGHT_OCTREE);
- return baked_light->data.mode;
-
-}
-
-void VisualServerRaster::baked_light_set_lightmap_multiplier(RID p_baked_light,float p_multiplier) {
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
-
- baked_light->data.lightmap_multiplier=p_multiplier;
-
-}
-
-float VisualServerRaster::baked_light_get_lightmap_multiplier(RID p_baked_light) const{
-
- const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light,0);
-
- return baked_light->data.lightmap_multiplier;
-
-}
-
-
-void VisualServerRaster::baked_light_set_octree(RID p_baked_light,const PoolVector<uint8_t> p_octree){
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
-
- if (p_octree.size()==0) {
- if (baked_light->data.octree_texture.is_valid())
- rasterizer->free(baked_light->data.octree_texture);
- baked_light->data.octree_texture;
- baked_light->octree_aabb=AABB();
- baked_light->octree_tex_size=Size2();
- } else {
-
- int tex_w;
- int tex_h;
- int light_tex_w;
- int light_tex_h;
- bool is16;
- bool has_light_tex=false;
- {
-
- PoolVector<uint8_t>::Read r=p_octree.read();
- tex_w = decode_uint32(&r[0]);
- tex_h = decode_uint32(&r[4]);
- print_line("TEX W: "+itos(tex_w)+" TEX H:"+itos(tex_h)+" LEN: "+itos(p_octree.size()));
- is16=decode_uint32(&r[8]);
- baked_light->data.octree_lattice_size=decode_float(&r[12]);
- baked_light->data.octree_lattice_divide=tex_w/4.0;
- print_line("LATTICE SIZE: "+rtos(baked_light->data.octree_lattice_size));
- print_line("LATTICE DIVIDE: "+rtos(baked_light->data.octree_lattice_divide));
- baked_light->data.octree_steps=decode_uint32(&r[16]);
- baked_light->data.octree_tex_pixel_size.x=1.0/tex_w;
- baked_light->data.octree_tex_pixel_size.y=1.0/tex_h;
-
- baked_light->data.texture_multiplier=decode_uint32(&r[20]);
- light_tex_w=decode_uint16(&r[24]);
- light_tex_h=decode_uint16(&r[26]);
- print_line("ltexw "+itos(light_tex_w));
- print_line("ltexh "+itos(light_tex_h));
-
- if (light_tex_w>0 && light_tex_h>0) {
- baked_light->data.light_tex_pixel_size.x=1.0/light_tex_w;
- baked_light->data.light_tex_pixel_size.y=1.0/light_tex_h;
- has_light_tex=true;
- } else {
- baked_light->data.light_tex_pixel_size=baked_light->data.octree_tex_pixel_size;
-
- }
-
-
-
- baked_light->octree_aabb.pos.x=decode_float(&r[32]);
- baked_light->octree_aabb.pos.y=decode_float(&r[36]);
- baked_light->octree_aabb.pos.z=decode_float(&r[40]);
- baked_light->octree_aabb.size.x=decode_float(&r[44]);
- baked_light->octree_aabb.size.y=decode_float(&r[48]);
- baked_light->octree_aabb.size.z=decode_float(&r[52]);
-
-
- }
-
- if (baked_light->data.octree_texture.is_valid()) {
- if (tex_w!=baked_light->octree_tex_size.x || tex_h!=baked_light->octree_tex_size.y) {
-
- rasterizer->free(baked_light->data.octree_texture);
- baked_light->data.octree_texture;
- baked_light->octree_tex_size.x=0;
- baked_light->octree_tex_size.y=0;
- }
- }
-
- if (baked_light->data.light_texture.is_valid()) {
- if (!has_light_tex || light_tex_w!=baked_light->light_tex_size.x || light_tex_h!=baked_light->light_tex_size.y) {
- rasterizer->free(baked_light->data.light_texture);
- baked_light->data.light_texture;
- baked_light->light_tex_size.x=0;
- baked_light->light_tex_size.y=0;
- }
- }
-
- if (!baked_light->data.octree_texture.is_valid()) {
- baked_light->data.octree_texture=rasterizer->texture_create();
- rasterizer->texture_allocate(baked_light->data.octree_texture,tex_w,tex_h,Image::FORMAT_RGBA8,TEXTURE_FLAG_FILTER);
- baked_light->octree_tex_size.x=tex_w;
- baked_light->octree_tex_size.y=tex_h;
- }
-
- if (!baked_light->data.light_texture.is_valid() && has_light_tex) {
- baked_light->data.light_texture=rasterizer->texture_create();
- rasterizer->texture_allocate(baked_light->data.light_texture,light_tex_w,light_tex_h,Image::FORMAT_RGBA8,TEXTURE_FLAG_FILTER);
- baked_light->light_tex_size.x=light_tex_w;
- baked_light->light_tex_size.y=light_tex_h;
-
- }
-
- Image img(tex_w,tex_h,0,Image::FORMAT_RGBA8,p_octree);
- rasterizer->texture_set_data(baked_light->data.octree_texture,img);
-
- }
-
-
- _dependency_queue_update(p_baked_light,true);
-
-}
-
-
-PoolVector<uint8_t> VisualServerRaster::baked_light_get_octree(RID p_baked_light) const{
-
-
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light,PoolVector<uint8_t>());
-
- if (rasterizer->is_texture(baked_light->data.octree_texture)) {
-
- Image img = rasterizer->texture_get_data(baked_light->data.octree_texture);
- return img.get_data();
- } else {
- return PoolVector<uint8_t>();
- }
-}
-
-void VisualServerRaster::baked_light_set_light(RID p_baked_light,const PoolVector<uint8_t> p_light) {
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
- ERR_FAIL_COND(p_light.size()==0);
-
- int tex_w=baked_light->light_tex_size.x;
- int tex_h=baked_light->light_tex_size.y;
-
- ERR_FAIL_COND(tex_w==0 && tex_h==0);
- ERR_FAIL_COND(!baked_light->data.light_texture.is_valid());
-
-
-
- print_line("w: "+itos(tex_w)+" h: "+itos(tex_h)+" lightsize: "+itos(p_light.size()));
-
- Image img(tex_w,tex_h,0,Image::FORMAT_RGBA8,p_light);
- rasterizer->texture_set_data(baked_light->data.light_texture,img);
-
-
-
-}
-
-PoolVector<uint8_t> VisualServerRaster::baked_light_get_light(RID p_baked_light) const{
-
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light,PoolVector<uint8_t>());
-
- if (rasterizer->is_texture(baked_light->data.light_texture)) {
-
- Image img = rasterizer->texture_get_data(baked_light->data.light_texture);
- return img.get_data();
- } else {
- return PoolVector<uint8_t>();
- }
-}
-
-
-
-void VisualServerRaster::baked_light_set_sampler_octree(RID p_baked_light, const PoolVector<int> &p_sampler) {
-
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
-
- baked_light->sampler=p_sampler;
-
-
-
-}
-
-PoolVector<int> VisualServerRaster::baked_light_get_sampler_octree(RID p_baked_light) const {
-
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light,PoolVector<int>());
-
- return baked_light->sampler;
-
-}
-
-
-void VisualServerRaster::baked_light_add_lightmap(RID p_baked_light,const RID p_texture,int p_id){
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
- baked_light->data.lightmaps.insert(p_id,p_texture);
-
-}
-void VisualServerRaster::baked_light_clear_lightmaps(RID p_baked_light){
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
- baked_light->data.lightmaps.clear();
-
-}
-
-void VisualServerRaster::baked_light_set_realtime_color_enabled(RID p_baked_light, const bool p_enabled) {
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
-
- baked_light->data.realtime_color_enabled = p_enabled;
-
-}
-
-bool VisualServerRaster::baked_light_get_realtime_color_enabled(RID p_baked_light) const{
-
- const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light, false);
-
- return baked_light->data.realtime_color_enabled;
-
-}
-
-void VisualServerRaster::baked_light_set_realtime_color(RID p_baked_light, const Color& p_color) {
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
-
- baked_light->data.realtime_color = p_color;
-
-}
-
-Color VisualServerRaster::baked_light_get_realtime_color(RID p_baked_light) const{
-
- const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light, Color(1.0, 1.0, 1.0));
-
- return baked_light->data.realtime_color;
-
-}
-
-void VisualServerRaster::baked_light_set_realtime_energy(RID p_baked_light, const float p_energy) {
-
- VS_CHANGED;
- BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND(!baked_light);
-
- baked_light->data.realtime_energy = p_energy;
-
-}
-
-float VisualServerRaster::baked_light_get_realtime_energy(RID p_baked_light) const{
-
- const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
- ERR_FAIL_COND_V(!baked_light, 1.0f);
-
- return baked_light->data.realtime_energy;
-
-}
-
-
-/* BAKED LIGHT SAMPLER */
-
-RID VisualServerRaster::baked_light_sampler_create() {
-
- BakedLightSampler * blsamp = memnew( BakedLightSampler );
- RID rid = baked_light_sampler_owner.make_rid(blsamp);
- _update_baked_light_sampler_dp_cache(blsamp);
- return rid;
-}
-
-void VisualServerRaster::baked_light_sampler_set_param(RID p_baked_light_sampler,BakedLightSamplerParam p_param,float p_value){
-
- VS_CHANGED;
- BakedLightSampler * blsamp = baked_light_sampler_owner.get(p_baked_light_sampler);
- ERR_FAIL_COND(!blsamp);
- ERR_FAIL_INDEX(p_param,BAKED_LIGHT_SAMPLER_MAX);
- blsamp->params[p_param]=p_value;
- _dependency_queue_update(p_baked_light_sampler,true);
-}
-
-float VisualServerRaster::baked_light_sampler_get_param(RID p_baked_light_sampler,BakedLightSamplerParam p_param) const{
-
-
- BakedLightSampler * blsamp = baked_light_sampler_owner.get(p_baked_light_sampler);
- ERR_FAIL_COND_V(!blsamp,0);
- ERR_FAIL_INDEX_V(p_param,BAKED_LIGHT_SAMPLER_MAX,0);
- return blsamp->params[p_param];
-}
-
-void VisualServerRaster::_update_baked_light_sampler_dp_cache(BakedLightSampler * blsamp) {
-
- int res = blsamp->resolution;
- blsamp->dp_cache.resize(res*res*2);
- Vector3 *dp_normals=blsamp->dp_cache.ptr();
-
- for(int p=0;p<2;p++) {
- float sign = p==0?1:-1;
- int ofs = res*res*p;
- for(int i=0;i<res;i++) {
- for(int j=0;j<res;j++) {
-
- Vector2 v(
- (i/float(res))*2.0-1.0,
- (j/float(res))*2.0-1.0
- );
-
- float l=v.length();
- if (l>1.0) {
- v/=l;
- l=1.0; //clamp to avoid imaginary
- }
- v*=(2*l)/(l*l+1); //inverse of the dual paraboloid function
- Vector3 n = Vector3(v.x,v.y,sign*sqrtf(MAX(1 - v.dot(v),0))); //reconstruction of z
- n.y*=sign;
- dp_normals[j*res+i+ofs]=n;
- }
- }
- }
-
-}
-
-void VisualServerRaster::baked_light_sampler_set_resolution(RID p_baked_light_sampler,int p_resolution){
-
- ERR_FAIL_COND(p_resolution<4 || p_resolution>64);
- VS_CHANGED;
- BakedLightSampler * blsamp = baked_light_sampler_owner.get(p_baked_light_sampler);
- ERR_FAIL_COND(!blsamp);
- blsamp->resolution=p_resolution;
- _update_baked_light_sampler_dp_cache(blsamp);
-
-}
-int VisualServerRaster::baked_light_sampler_get_resolution(RID p_baked_light_sampler) const{
-
- BakedLightSampler * blsamp = baked_light_sampler_owner.get(p_baked_light_sampler);
- ERR_FAIL_COND_V(!blsamp,0);
- return blsamp->resolution;
-}
-
-/* CAMERA API */
-
-RID VisualServerRaster::camera_create() {
-
- Camera * camera = memnew( Camera );
- return camera_owner.make_rid( camera );
-
-}
-
-void VisualServerRaster::camera_set_perspective(RID p_camera,float p_fovy_degrees, float p_z_near, float p_z_far) {
- VS_CHANGED
- Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND(!camera);
- camera->type=Camera::PERSPECTIVE;
- camera->fov=p_fovy_degrees;
- camera->znear=p_z_near;
- camera->zfar=p_z_far;
-
-}
-
-void VisualServerRaster::camera_set_orthogonal(RID p_camera,float p_size, float p_z_near, float p_z_far) {
- VS_CHANGED;
- Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND(!camera);
- camera->type=Camera::ORTHOGONAL;
- camera->size=p_size;
- camera->znear=p_z_near;
- camera->zfar=p_z_far;
-}
-
-void VisualServerRaster::camera_set_transform(RID p_camera,const Transform& p_transform) {
- VS_CHANGED;
- Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND(!camera);
- camera->transform=p_transform.orthonormalized();
-
-
-}
-
-void VisualServerRaster::camera_set_visible_layers(RID p_camera,uint32_t p_layers) {
-
- VS_CHANGED;
- Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND(!camera);
-
- camera->visible_layers=p_layers;
-
-}
-
-uint32_t VisualServerRaster::camera_get_visible_layers(RID p_camera) const{
-
- const Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND_V(!camera,0);
-
- return camera->visible_layers;
-}
-
-void VisualServerRaster::camera_set_environment(RID p_camera,RID p_env) {
-
- Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND(!camera);
- camera->env=p_env;
-
-}
-
-RID VisualServerRaster::camera_get_environment(RID p_camera) const {
-
- const Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND_V(!camera,RID());
- return camera->env;
-
-}
-
-void VisualServerRaster::camera_set_use_vertical_aspect(RID p_camera,bool p_enable) {
-
- Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND(!camera);
- camera->vaspect=p_enable;
-
-}
-bool VisualServerRaster::camera_is_using_vertical_aspect(RID p_camera,bool p_enable) const{
-
- const Camera *camera = camera_owner.get( p_camera );
- ERR_FAIL_COND_V(!camera,false);
- return camera->vaspect;
-
-}
-
-
-/* VIEWPORT API */
-
-
-RID VisualServerRaster::viewport_create() {
-
- Viewport *viewport = memnew( Viewport );
- RID rid = viewport_owner.make_rid( viewport );
- ERR_FAIL_COND_V( !rid.is_valid(), rid );
-
- viewport->self=rid;
- viewport->hide_scenario=false;
- viewport->hide_canvas=false;
- viewport->viewport_data=rasterizer->viewport_data_create();
-
- return rid;
-}
-
-void VisualServerRaster::viewport_attach_to_screen(RID p_viewport,int p_screen) {
-
- VS_CHANGED;
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
-
- screen_viewports[p_viewport]=p_screen;
-}
-
-void VisualServerRaster::viewport_detach(RID p_viewport) {
-
- VS_CHANGED;
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- ERR_FAIL_COND(!screen_viewports.has(p_viewport));
- screen_viewports.erase(p_viewport);
-
-}
-
-void VisualServerRaster::viewport_set_as_render_target(RID p_viewport,bool p_enable) {
-
- VS_CHANGED;
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- if (viewport->render_target.is_valid()==p_enable)
- return;
- if (!p_enable) {
-
- rasterizer->free(viewport->render_target);
- viewport->render_target;
- viewport->render_target_texture;
- if (viewport->update_list.in_list())
- viewport_update_list.remove(&viewport->update_list);
-
- } else {
-
- viewport->render_target=rasterizer->render_target_create();
- rasterizer->render_target_set_size(viewport->render_target,viewport->rect.width,viewport->rect.height);
- viewport->render_target_texture=rasterizer->render_target_get_texture(viewport->render_target);
- if (viewport->render_target_update_mode!=RENDER_TARGET_UPDATE_DISABLED)
- viewport_update_list.add(&viewport->update_list);
- }
-
-}
-
-void VisualServerRaster::viewport_set_render_target_update_mode(RID p_viewport,RenderTargetUpdateMode p_mode){
-
- VS_CHANGED;
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- if (viewport->render_target.is_valid() && viewport->update_list.in_list())
- viewport_update_list.remove(&viewport->update_list);
-
- viewport->render_target_update_mode=p_mode;
-
- if (viewport->render_target.is_valid() &&viewport->render_target_update_mode!=RENDER_TARGET_UPDATE_DISABLED)
- viewport_update_list.add(&viewport->update_list);
-
-}
-VisualServer::RenderTargetUpdateMode VisualServerRaster::viewport_get_render_target_update_mode(RID p_viewport) const{
-
- const Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport,RENDER_TARGET_UPDATE_DISABLED);
-
- return viewport->render_target_update_mode;
-}
-RID VisualServerRaster::viewport_get_render_target_texture(RID p_viewport) const{
-
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport,RID());
-
- return viewport->render_target_texture;
-
-}
-
-void VisualServerRaster::viewport_set_render_target_vflip(RID p_viewport,bool p_enable) {
-
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->render_target_vflip=p_enable;
-
-}
-
-void VisualServerRaster::viewport_set_render_target_clear_on_new_frame(RID p_viewport,bool p_enable) {
-
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->render_target_clear_on_new_frame=p_enable;
-
-}
-
-void VisualServerRaster::viewport_set_render_target_to_screen_rect(RID p_viewport,const Rect2& p_rect) {
-
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->rt_to_screen_rect=p_rect;
-
-}
-
-bool VisualServerRaster::viewport_get_render_target_vflip(RID p_viewport) const{
-
- const Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport,false);
-
- return viewport->render_target_vflip;
-
-}
-
-bool VisualServerRaster::viewport_get_render_target_clear_on_new_frame(RID p_viewport) const{
-
- const Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport,false);
-
- return viewport->render_target_clear_on_new_frame;
-
-}
-
-void VisualServerRaster::viewport_render_target_clear(RID p_viewport) {
-
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->render_target_clear=true;
-
-}
-
-void VisualServerRaster::viewport_queue_screen_capture(RID p_viewport) {
-
- VS_CHANGED;
- Viewport *viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
- viewport->queue_capture=true;
-
-}
-
-Image VisualServerRaster::viewport_get_screen_capture(RID p_viewport) const {
-
- Viewport *viewport = (Viewport*)viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport,Image());
-
- Image ret = viewport->capture;
- viewport->capture=Image();
- return ret;
-}
-
-void VisualServerRaster::viewport_set_rect(RID p_viewport,const ViewportRect& p_rect) {
- VS_CHANGED;
- Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
-
- ERR_FAIL_COND(!viewport);
-
- viewport->rect=p_rect;
- if (viewport->render_target.is_valid()) {
- rasterizer->render_target_set_size(viewport->render_target,viewport->rect.width,viewport->rect.height);
- }
-}
-
-
-VisualServer::ViewportRect VisualServerRaster::viewport_get_rect(RID p_viewport) const {
-
- const Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport, ViewportRect());
-
- return viewport->rect;
-}
-
-void VisualServerRaster::viewport_set_hide_scenario(RID p_viewport,bool p_hide) {
-
- VS_CHANGED;
-
- Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->hide_scenario=p_hide;
-
-
-}
-
-void VisualServerRaster::viewport_set_hide_canvas(RID p_viewport,bool p_hide) {
-
- VS_CHANGED;
-
- Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->hide_canvas=p_hide;
-
-
-}
-
-void VisualServerRaster::viewport_set_disable_environment(RID p_viewport,bool p_disable) {
-
- VS_CHANGED;
-
- Viewport *viewport=NULL;
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
- viewport->disable_environment=p_disable;
-
-}
-
-void VisualServerRaster::viewport_attach_camera(RID p_viewport,RID p_camera) {
- VS_CHANGED;
-
- Viewport *viewport=NULL;
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
-
-
-
- if (p_camera.is_valid()) {
-
- ERR_FAIL_COND(!camera_owner.owns(p_camera));
- // a camera
- viewport->camera=p_camera;
- } else {
- viewport->camera;
- }
-
-}
-
-void VisualServerRaster::viewport_set_scenario(RID p_viewport,RID p_scenario) {
-
- VS_CHANGED;
-
- Viewport *viewport=NULL;
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- if (p_scenario.is_valid()) {
-
- ERR_FAIL_COND(!scenario_owner.owns(p_scenario));
- // a camera
- viewport->scenario=p_scenario;
- } else {
- viewport->scenario;
- }
-
-}
-
-RID VisualServerRaster::viewport_get_attached_camera(RID p_viewport) const {
-
- const Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport, RID());
-
- return viewport->camera;
-}
-
-void VisualServerRaster::viewport_attach_canvas(RID p_viewport,RID p_canvas) {
- VS_CHANGED;
- Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- Canvas *canvas = canvas_owner.get( p_canvas );
- ERR_FAIL_COND(!canvas);
-
- ERR_EXPLAIN("Canvas already attached.");
- ERR_FAIL_COND(viewport->canvas_map.has(p_canvas));
-
-
- Viewport::CanvasData cd;
- cd.canvas=canvas;
- cd.layer=0;
-
- viewport->canvas_map[p_canvas]=cd;
- canvas->viewports.insert(p_viewport);
-
-}
-
-
-void VisualServerRaster::viewport_set_canvas_transform(RID p_viewport,RID p_canvas,const Matrix32& p_transform) {
-
- VS_CHANGED;
- Viewport *viewport=NULL;
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- Map<RID,Viewport::CanvasData>::Element *E=viewport->canvas_map.find(p_canvas);
- if (!E) {
- ERR_EXPLAIN("Viewport does not contain the canvas");
- ERR_FAIL_COND(!E);
- }
-
- E->get().transform=p_transform;
-
-}
-
-Matrix32 VisualServerRaster::viewport_get_canvas_transform(RID p_viewport,RID p_canvas) const {
-
- Viewport *viewport=NULL;
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport,Matrix32());
-
- Map<RID,Viewport::CanvasData>::Element *E=viewport->canvas_map.find(p_canvas);
- if (!E) {
- ERR_EXPLAIN("Viewport does not contain the canvas");
- ERR_FAIL_COND_V(!E,Matrix32());
- }
-
-
- return E->get().transform;
-}
-
-
-void VisualServerRaster::viewport_set_global_canvas_transform(RID p_viewport,const Matrix32& p_transform) {
-
- VS_CHANGED
- Viewport *viewport=NULL;
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->global_transform=p_transform;
-
-}
-
-Matrix32 VisualServerRaster::viewport_get_global_canvas_transform(RID p_viewport) const{
-
- Viewport *viewport=NULL;
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport,Matrix32());
- return viewport->global_transform;
-}
-
-void VisualServerRaster::viewport_remove_canvas(RID p_viewport,RID p_canvas) {
-
- VS_CHANGED;
- Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- Canvas *canvas = canvas_owner.get( p_canvas );
- ERR_FAIL_COND(!canvas);
-
-
- Map<RID,Viewport::CanvasData>::Element *E=viewport->canvas_map.find(p_canvas);
- if (!E) {
- ERR_EXPLAIN("Viewport does not contain the canvas");
- ERR_FAIL_COND(!E);
- }
-
-
- canvas->viewports.erase(p_viewport);
- viewport->canvas_map.erase(E);
-
-}
-
-
-void VisualServerRaster::viewport_set_canvas_layer(RID p_viewport,RID p_canvas,int p_layer) {
-
- VS_CHANGED;
- Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- Map<RID,Viewport::CanvasData>::Element *E=viewport->canvas_map.find(p_canvas);
- if (!E) {
- ERR_EXPLAIN("Viewport does not contain the canvas");
- ERR_FAIL_COND(!E);
- }
-
- E->get().layer=p_layer;
-
-}
-
-void VisualServerRaster::viewport_set_transparent_background(RID p_viewport,bool p_enabled) {
-
- VS_CHANGED;
- Viewport *viewport=viewport_owner.get( p_viewport );
- ERR_FAIL_COND(!viewport);
-
- viewport->transparent_bg=p_enabled;
-}
-
-bool VisualServerRaster::viewport_has_transparent_background(RID p_viewport) const {
-
- Viewport *viewport=viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport, false);
-
- return viewport->transparent_bg;
-}
-
-
-RID VisualServerRaster::viewport_get_scenario(RID p_viewport) const {
-
- const Viewport *viewport=NULL;
-
- viewport = viewport_owner.get( p_viewport );
- ERR_FAIL_COND_V(!viewport, RID());
-
- return viewport->scenario;
-}
-
-
-RID VisualServerRaster::environment_create() {
-
- return rasterizer->environment_create();
-}
-
-void VisualServerRaster::environment_set_background(RID p_env,EnvironmentBG p_bg){
-
- rasterizer->environment_set_background(p_env,p_bg);
-}
-VisualServer::EnvironmentBG VisualServerRaster::environment_get_background(RID p_env) const{
-
- return rasterizer->environment_get_background(p_env);
-}
-
-void VisualServerRaster::environment_set_background_param(RID p_env,EnvironmentBGParam p_param, const Variant& p_value){
-
-
- rasterizer->environment_set_background_param(p_env,p_param,p_value);
-}
-Variant VisualServerRaster::environment_get_background_param(RID p_env,EnvironmentBGParam p_param) const{
-
- return rasterizer->environment_get_background_param(p_env,p_param);
-}
-
-void VisualServerRaster::environment_set_enable_fx(RID p_env,EnvironmentFx p_effect,bool p_enabled){
-
- rasterizer->environment_set_enable_fx(p_env,p_effect,p_enabled);
-}
-bool VisualServerRaster::environment_is_fx_enabled(RID p_env,EnvironmentFx p_effect) const{
-
- return rasterizer->environment_is_fx_enabled(p_env,p_effect);
-}
-
-
-void VisualServerRaster::environment_fx_set_param(RID p_env,EnvironmentFxParam p_param,const Variant& p_value){
-
- rasterizer->environment_fx_set_param(p_env,p_param,p_value);
-}
-Variant VisualServerRaster::environment_fx_get_param(RID p_env,EnvironmentFxParam p_param) const {
-
- return environment_fx_get_param(p_env,p_param);
-}
-
-
-
-/* SCENARIO API */
-
-void VisualServerRaster::_dependency_queue_update(RID p_rid,bool p_update_aabb,bool p_update_materials) {
-
- Map< RID, Set<RID> >::Element * E = instance_dependency_map.find( p_rid );
-
- if (!E)
- return;
-
-
- Set<RID>::Element *I = E->get().front();
-
- while(I) {
-
- Instance *ins = instance_owner.get( I->get() );
- _instance_queue_update( ins , p_update_aabb, p_update_materials );
-
- I = I->next();
- }
-
-}
-
-void VisualServerRaster::_instance_queue_update(Instance *p_instance,bool p_update_aabb,bool p_update_materials) {
-
- if (p_update_aabb)
- p_instance->update_aabb=true;
- if (p_update_materials)
- p_instance->update_materials=true;
-
- if (p_instance->update)
- return;
- p_instance->update_next=instance_update_list;
- instance_update_list=p_instance;
- p_instance->update=true;
-
-}
-
-RID VisualServerRaster::scenario_create() {
-
- Scenario *scenario = memnew( Scenario );
- ERR_FAIL_COND_V(!scenario,RID());
- RID scenario_rid = scenario_owner.make_rid( scenario );
- scenario->self=scenario_rid;
- scenario->octree.set_pair_callback(instance_pair,this);
- scenario->octree.set_unpair_callback(instance_unpair,this);
-
- return scenario_rid;
-}
-
-void VisualServerRaster::scenario_set_debug(RID p_scenario,ScenarioDebugMode p_debug_mode) {
- VS_CHANGED;
-
- Scenario *scenario = scenario_owner.get(p_scenario);
- ERR_FAIL_COND(!scenario);
- scenario->debug=p_debug_mode;
-}
-
-void VisualServerRaster::scenario_set_environment(RID p_scenario, RID p_environment) {
-
- VS_CHANGED;
-
- Scenario *scenario = scenario_owner.get(p_scenario);
- ERR_FAIL_COND(!scenario);
- scenario->environment=p_environment;
-
-}
-
-void VisualServerRaster::scenario_set_fallback_environment(RID p_scenario, RID p_environment) {
-
- VS_CHANGED;
-
- Scenario *scenario = scenario_owner.get(p_scenario);
- ERR_FAIL_COND(!scenario);
- scenario->fallback_environment=p_environment;
-
-
-}
-
-RID VisualServerRaster::scenario_get_environment(RID p_scenario, RID p_environment) const{
-
- const Scenario *scenario = scenario_owner.get(p_scenario);
- ERR_FAIL_COND_V(!scenario,RID());
- return scenario->environment;
-
-}
-
-
-/* INSTANCING API */
-
-
-RID VisualServerRaster::instance_create() {
-
- Instance *instance = memnew( Instance );
- ERR_FAIL_COND_V(!instance,RID());
-
- RID instance_rid = instance_owner.make_rid(instance);
- instance->self=instance_rid;
- instance->base_type=INSTANCE_NONE;
- instance->scenario=NULL;
-
- return instance_rid;
-}
-
-void VisualServerRaster::instance_set_base(RID p_instance, RID p_base) {
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- if (instance->base_type!=INSTANCE_NONE) {
- //free anything related to that base
-
- Map< RID, Set<RID> >::Element * E = instance_dependency_map.find( instance->base_rid );
-
- if (E) {
- // wtf, no E?
- E->get().erase( instance->self );
-
- } else {
-
- ERR_PRINT("no base E? Bug?");
- }
-
- if ( instance->room ) {
-
- instance_set_room(p_instance,RID());
- /*
- if((1<<instance->base_type)&INSTANCE_GEOMETRY_MASK)
- instance->room->room_info->owned_geometry_instances.erase(instance->RE);
- else if (instance->base_type==INSTANCE_PORTAL) {
- print_line("freeing portal, is it there? "+itos(instance->room->room_info->owned_portal_instances.(instance->RE)));
- instance->room->room_info->owned_portal_instances.erase(instance->RE);
- } else if (instance->base_type==INSTANCE_ROOM)
- instance->room->room_info->owned_room_instances.erase(instance->RE);
- else if (instance->base_type==INSTANCE_LIGHT)
- instance->room->room_info->owned_light_instances.erase(instance->RE);
-
- instance->RE=NULL;*/
- }
-
-
-
-
-
- if (instance->light_info) {
-
- if (instance->scenario && instance->light_info->D)
- instance->scenario->directional_lights.erase( instance->light_info->D );
- rasterizer->free(instance->light_info->instance);
- memdelete(instance->light_info);
- instance->light_info=NULL;
- }
-
-
- if (instance->portal_info) {
-
- _portal_disconnect(instance,true);
- memdelete(instance->portal_info);
- instance->portal_info=NULL;
-
- }
-
- if (instance->baked_light_info) {
-
- while(instance->baked_light_info->owned_instances.size()) {
-
- Instance *owned=instance->baked_light_info->owned_instances.front()->get();
- owned->baked_light=NULL;
- owned->data.baked_light=NULL;
- owned->data.baked_light_octree_xform=NULL;
- owned->BLE=NULL;
- instance->baked_light_info->owned_instances.pop_front();
- }
-
- memdelete(instance->baked_light_info);
- instance->baked_light_info=NULL;
-
- }
-
- if (instance->scenario && instance->octree_id) {
- instance->scenario->octree.erase( instance->octree_id );
- instance->octree_id=0;
- }
-
-
- if (instance->room_info) {
-
- for(List<Instance*>::Element *E=instance->room_info->owned_geometry_instances.front();E;E=E->next()) {
-
- Instance *owned = E->get();
- owned->room=NULL;
- owned->RE=NULL;
- }
- for(List<Instance*>::Element *E=instance->room_info->owned_portal_instances.front();E;E=E->next()) {
-
- _portal_disconnect(E->get(),true);
- Instance *owned = E->get();
- owned->room=NULL;
- owned->RE=NULL;
- }
-
- for(List<Instance*>::Element *E=instance->room_info->owned_room_instances.front();E;E=E->next()) {
-
- Instance *owned = E->get();
- owned->room=NULL;
- owned->RE=NULL;
- }
-
- if (instance->room_info->disconnected_child_portals.size()) {
- ERR_PRINT("BUG: Disconnected portals remain!");
- }
- memdelete(instance->room_info);
- instance->room_info=NULL;
-
- }
-
- if (instance->particles_info) {
-
- rasterizer->free( instance->particles_info->instance );
- memdelete(instance->particles_info);
- instance->particles_info=NULL;
-
- }
-
- if (instance->baked_light_sampler_info) {
-
- while (instance->baked_light_sampler_info->owned_instances.size()) {
-
- instance_geometry_set_baked_light_sampler(instance->baked_light_sampler_info->owned_instances.front()->get()->self,RID());
- }
-
- if (instance->baked_light_sampler_info->sampled_light.is_valid()) {
- rasterizer->free(instance->baked_light_sampler_info->sampled_light);
- }
- memdelete( instance->baked_light_sampler_info );
- instance->baked_light_sampler_info=NULL;
- }
-
- instance->data.morph_values.clear();
- instance->data.materials.clear();
-
- }
-
-
- instance->base_type=INSTANCE_NONE;
- instance->base_rid;
-
-
- if (p_base.is_valid()) {
-
- if (rasterizer->is_mesh(p_base)) {
- instance->base_type=INSTANCE_MESH;
- instance->data.morph_values.resize( rasterizer->mesh_get_morph_target_count(p_base));
- instance->data.materials.resize( rasterizer->mesh_get_surface_count(p_base));
- } else if (rasterizer->is_multimesh(p_base)) {
- instance->base_type=INSTANCE_MULTIMESH;
- } else if (rasterizer->is_immediate(p_base)) {
- instance->base_type=INSTANCE_IMMEDIATE;
- } else if (rasterizer->is_particles(p_base)) {
- instance->base_type=INSTANCE_PARTICLES;
- instance->particles_info=memnew( Instance::ParticlesInfo );
- instance->particles_info->instance = rasterizer->particles_instance_create( p_base );
- } else if (rasterizer->is_light(p_base)) {
-
- instance->base_type=INSTANCE_LIGHT;
- instance->light_info = memnew( Instance::LightInfo );
- instance->light_info->instance = rasterizer->light_instance_create(p_base);
- if (instance->scenario && rasterizer->light_get_type(p_base)==LIGHT_DIRECTIONAL) {
-
- instance->light_info->D = instance->scenario->directional_lights.push_back(instance->self);
- }
-
- } else if (room_owner.owns(p_base)) {
- instance->base_type=INSTANCE_ROOM;
- instance->room_info = memnew( Instance::RoomInfo );
- instance->room_info->room=room_owner.get(p_base);
- } else if (portal_owner.owns(p_base)) {
-
- instance->base_type=INSTANCE_PORTAL;
- instance->portal_info = memnew(Instance::PortalInfo);
- instance->portal_info->portal=portal_owner.get(p_base);
- } else if (baked_light_owner.owns(p_base)) {
-
- instance->base_type=INSTANCE_BAKED_LIGHT;
- instance->baked_light_info=memnew(Instance::BakedLightInfo);
- instance->baked_light_info->baked_light=baked_light_owner.get(p_base);
-
- //instance->portal_info = memnew(Instance::PortalInfo);
- //instance->portal_info->portal=portal_owner.get(p_base);
- } else if (baked_light_sampler_owner.owns(p_base)) {
-
-
- instance->base_type=INSTANCE_BAKED_LIGHT_SAMPLER;
- instance->baked_light_sampler_info=memnew( Instance::BakedLightSamplerInfo);
- instance->baked_light_sampler_info->sampler=baked_light_sampler_owner.get(p_base);
-
- //instance->portal_info = memnew(Instance::PortalInfo);
- //instance->portal_info->portal=portal_owner.get(p_base);
-
- } else {
- ERR_EXPLAIN("Invalid base RID for instance!")
- ERR_FAIL();
- }
-
- instance_dependency_map[ p_base ].insert( instance->self );
-
- instance->base_rid=p_base;
-
- if (instance->scenario)
- _instance_queue_update(instance,true);
- }
-
-}
-
-RID VisualServerRaster::instance_get_base(RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, RID() );
- return instance->base_rid;
-
-}
-
-void VisualServerRaster::instance_set_scenario(RID p_instance, RID p_scenario) {
-
- VS_CHANGED;
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- if (instance->scenario) {
-
- Map< RID, Set<RID> >::Element *E = instance_dependency_map.find( instance->scenario->self );
-
- if (E) {
- // wtf, no E?
- E->get().erase( instance->self );
-
- } else {
-
- ERR_PRINT("no scenario E? Bug?");
- }
-
- if (instance->light_info) {
-
- if (instance->light_info->D)
- instance->scenario->directional_lights.erase( instance->light_info->D );
- }
-
- if (instance->portal_info) {
-
- _portal_disconnect(instance,true);
- }
-
- if (instance->octree_id) {
- instance->scenario->octree.erase( instance->octree_id );
- instance->octree_id=0;
- }
-
- instance->scenario=NULL;
- }
-
-
- if (p_scenario.is_valid()) {
- Scenario *scenario = scenario_owner.get( p_scenario );
- ERR_FAIL_COND(!scenario);
-
- instance->scenario=scenario;
-
- instance_dependency_map[ p_scenario ].insert( instance->self );
- instance->scenario=scenario;
-
- if (instance->base_type==INSTANCE_LIGHT && rasterizer->light_get_type(instance->base_rid)==LIGHT_DIRECTIONAL) {
-
- instance->light_info->D = instance->scenario->directional_lights.push_back(instance->self);
- }
-
- _instance_queue_update(instance,true);
- }
-
-}
-RID VisualServerRaster::instance_get_scenario(RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, RID() );
- if (instance->scenario)
- return instance->scenario->self;
- else
- return RID();
-
-
-}
-
-
-void VisualServerRaster::instance_set_layer_mask(RID p_instance, uint32_t p_mask) {
-
- VS_CHANGED;
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- instance->layer_mask=p_mask;
-
-}
-
-uint32_t VisualServerRaster::instance_get_layer_mask(RID p_instance) const{
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, 0 );
-
- return instance->layer_mask;
-}
-
-
-AABB VisualServerRaster::instance_get_base_aabb(RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, AABB() );
- return instance->aabb;
-
-}
-
-void VisualServerRaster::instance_attach_object_instance_id(RID p_instance,uint32_t p_ID) {
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- instance->object_ID=p_ID;
-}
-uint32_t VisualServerRaster::instance_get_object_instance_id(RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, 0 );
- return instance->object_ID;
-
-}
-
-void VisualServerRaster::instance_attach_skeleton(RID p_instance,RID p_skeleton) {
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- if (instance->data.skeleton.is_valid()) {
- skeleton_dependency_map[instance->data.skeleton].erase(instance);
- }
-
- instance->data.skeleton=p_skeleton;
-
- if (instance->data.skeleton.is_valid()) {
- skeleton_dependency_map[instance->data.skeleton].insert(instance);
- }
-
-}
-
-RID VisualServerRaster::instance_get_skeleton(RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, RID() );
- return instance->data.skeleton;
-
-}
-
-void VisualServerRaster::instance_set_morph_target_weight(RID p_instance,int p_shape, float p_weight) {
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
- ERR_FAIL_INDEX( p_shape, instance->data.morph_values.size() );
- instance->data.morph_values[p_shape]=p_weight;
-}
-
-float VisualServerRaster::instance_get_morph_target_weight(RID p_instance,int p_shape) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, 0 );
- ERR_FAIL_INDEX_V( p_shape, instance->data.morph_values.size(), 0 );
- return instance->data.morph_values[p_shape];
-}
-
-void VisualServerRaster::instance_set_surface_material(RID p_instance,int p_surface, RID p_material) {
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance);
- ERR_FAIL_INDEX( p_surface, instance->data.materials.size() );
- instance->data.materials[p_surface]=p_material;
-}
-
-
-void VisualServerRaster::instance_set_transform(RID p_instance, const Transform& p_transform) {
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- if (p_transform==instance->data.transform) // must improve somehow
- return;
-
- instance->data.transform=p_transform;
- if (instance->base_type==INSTANCE_LIGHT)
- instance->data.transform.orthonormalize();
- _instance_queue_update(instance);
-
-}
-
-Transform VisualServerRaster::instance_get_transform(RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, Transform() );
-
- return instance->data.transform;
-
-}
-
-void VisualServerRaster::instance_set_exterior( RID p_instance, bool p_enabled ) {
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- ERR_EXPLAIN("Portals can't be assigned to be exterior");
-
- ERR_FAIL_COND( instance->base_type == INSTANCE_PORTAL );
- if (instance->exterior==p_enabled)
- return;
- instance->exterior=p_enabled;
- _instance_queue_update( instance );
-
-
-}
-
-bool VisualServerRaster::instance_is_exterior( RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, false );
-
- return instance->exterior;
-}
-
-
-void VisualServerRaster::instance_set_room( RID p_instance, RID p_room ) {
- VS_CHANGED;
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- if (instance->room && instance->RE) {
-
- //instance already havs a room, remove it from there
-
- if ( (1<<instance->base_type) & INSTANCE_GEOMETRY_MASK ) {
-
- instance->room->room_info->owned_geometry_instances.erase(instance->RE);
-
- if (!p_room.is_valid() && instance->octree_id) {
- //remove from the octree, so it's re-added with different flags
- instance->scenario->octree.erase( instance->octree_id );
- instance->octree_id=0;
- _instance_queue_update( instance,true );
- }
-
-
- } else if ( instance->base_type==INSTANCE_ROOM ) {
-
- instance->room->room_info->owned_room_instances.erase(instance->RE);
-
- for(List<Instance*>::Element *E=instance->room_info->owned_portal_instances.front();E;E=E->next()) {
- _portal_disconnect(E->get());
- _instance_queue_update( E->get(),false );
- }
-
- } else if ( instance->base_type==INSTANCE_PORTAL ) {
-
- _portal_disconnect(instance,true);
- bool ss = instance->room->room_info->owned_portal_instances.erase(instance->RE);
-
- } else if ( instance->base_type==INSTANCE_LIGHT ) {
-
- instance->room->room_info->owned_light_instances.erase(instance->RE);
- } else {
-
- ERR_FAIL();
-
- }
-
- instance->RE=NULL;
- instance->room=NULL;
-
-
- } else {
-
- if (p_room.is_valid() && instance->octree_id) {
- //remove from the octree, so it's re-added with different flags
- instance->scenario->octree.erase( instance->octree_id );
- instance->octree_id=0;
- _instance_queue_update( instance,true );
- }
-
- }
-
- if (!p_room.is_valid())
- return; // just clearning the room
-
- Instance *room = instance_owner.get( p_room );
-
- ERR_FAIL_COND( !room );
- ERR_FAIL_COND( room->base_type!=INSTANCE_ROOM );
-
-
- if (instance->base_type==INSTANCE_ROOM) {
-
- //perform cycle test
-
- Instance *parent = instance;
-
- while(parent) {
-
- ERR_EXPLAIN("Cycle in room assignment");
- ERR_FAIL_COND( parent == room );
- parent=parent->room;
- }
- }
-
- if ( (1<<instance->base_type) & INSTANCE_GEOMETRY_MASK ) {
-
- instance->RE = room->room_info->owned_geometry_instances.push_back(instance);
- } else if ( instance->base_type==INSTANCE_ROOM ) {
-
- instance->RE = room->room_info->owned_room_instances.push_back(instance);
- for(List<Instance*>::Element *E=instance->room_info->owned_portal_instances.front();E;E=E->next())
- _instance_queue_update( E->get(),false );
-
-
- } else if ( instance->base_type==INSTANCE_PORTAL ) {
-
- instance->RE = room->room_info->owned_portal_instances.push_back(instance);
- } else if ( instance->base_type==INSTANCE_LIGHT ) {
-
- instance->RE = room->room_info->owned_light_instances.push_back(instance);
- } else {
-
- ERR_FAIL();
-
- }
-
- instance->room=room;
-}
-
-RID VisualServerRaster::instance_get_room( RID p_instance ) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, RID() );
-
- if (instance->room)
- return instance->room->self;
- else
- return RID();
-}
-
-void VisualServerRaster::instance_set_extra_visibility_margin( RID p_instance, real_t p_margin ) {
-
- VS_CHANGED;
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- instance->extra_margin=p_margin;
-}
-real_t VisualServerRaster::instance_get_extra_visibility_margin( RID p_instance ) const{
-
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, 0 );
-
- return instance->extra_margin;
-}
-
-
-Vector<RID> VisualServerRaster::instances_cull_aabb(const AABB& p_aabb, RID p_scenario) const {
-
-
- Vector<RID> instances;
- Scenario *scenario=scenario_owner.get(p_scenario);
- ERR_FAIL_COND_V(!scenario,instances);
-
- const_cast<VisualServerRaster*>(this)->_update_instances(); // check dirty instances before culling
-
- int culled=0;
- Instance *cull[1024];
- culled=scenario->octree.cull_AABB(p_aabb,cull,1024);
-
- for (int i=0;i<culled;i++) {
-
- Instance *instance=cull[i];
- ERR_CONTINUE(!instance);
- instances.push_back(instance->self);
- }
-
- return instances;
-}
-Vector<RID> VisualServerRaster::instances_cull_ray(const Vector3& p_from, const Vector3& p_to, RID p_scenario) const{
-
- Vector<RID> instances;
- Scenario *scenario=scenario_owner.get(p_scenario);
- ERR_FAIL_COND_V(!scenario,instances);
- const_cast<VisualServerRaster*>(this)->_update_instances(); // check dirty instances before culling
-
- int culled=0;
- Instance *cull[1024];
- culled=scenario->octree.cull_segment(p_from,p_to*10000,cull,1024);
-
-
- for (int i=0;i<culled;i++) {
-
- Instance *instance=cull[i];
- ERR_CONTINUE(!instance);
- instances.push_back(instance->self);
- }
-
- return instances;
-
-}
-Vector<RID> VisualServerRaster::instances_cull_convex(const Vector<Plane>& p_convex, RID p_scenario) const{
-
- Vector<RID> instances;
- Scenario *scenario=scenario_owner.get(p_scenario);
- ERR_FAIL_COND_V(!scenario,instances);
- const_cast<VisualServerRaster*>(this)->_update_instances(); // check dirty instances before culling
-
- int culled=0;
- Instance *cull[1024];
-
-
- culled=scenario->octree.cull_convex(p_convex,cull,1024);
-
- for (int i=0;i<culled;i++) {
-
- Instance *instance=cull[i];
- ERR_CONTINUE(!instance);
- instances.push_back(instance->self);
- }
-
- return instances;
-
-}
-
-void VisualServerRaster::instance_geometry_set_flag(RID p_instance,InstanceFlags p_flags,bool p_enabled) {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
- //ERR_FAIL_COND( ! ( (1<<instance->base_type) & INSTANCE_GEOMETRY_MASK) );
-
- switch(p_flags) {
-
- case INSTANCE_FLAG_VISIBLE: {
-
- instance->visible=p_enabled;
-
- } break;
- case INSTANCE_FLAG_BILLBOARD: {
-
- instance->data.billboard=p_enabled;
-
- } break;
- case INSTANCE_FLAG_BILLBOARD_FIX_Y: {
-
- instance->data.billboard_y=p_enabled;
-
- } break;
- case INSTANCE_FLAG_CAST_SHADOW: {
- if (p_enabled == true) {
- instance->data.cast_shadows = SHADOW_CASTING_SETTING_ON;
- }
- else {
- instance->data.cast_shadows = SHADOW_CASTING_SETTING_OFF;
- }
-
- } break;
- case INSTANCE_FLAG_RECEIVE_SHADOWS: {
-
- instance->data.receive_shadows=p_enabled;
-
- } break;
- case INSTANCE_FLAG_DEPH_SCALE: {
-
- instance->data.depth_scale=p_enabled;
-
- } break;
- case INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS: {
-
- instance->visible_in_all_rooms=p_enabled;
-
- } break;
-
- }
-
-}
-
-bool VisualServerRaster::instance_geometry_get_flag(RID p_instance,InstanceFlags p_flags) const{
-
- const Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, false );
- //ERR_FAIL_COND_V( ! ( (1<<instance->base_type) & INSTANCE_GEOMETRY_MASK), false );
-
- switch(p_flags) {
-
- case INSTANCE_FLAG_VISIBLE: {
-
- return instance->visible;
-
- } break;
- case INSTANCE_FLAG_BILLBOARD: {
-
- return instance->data.billboard;
-
- } break;
- case INSTANCE_FLAG_BILLBOARD_FIX_Y: {
-
- return instance->data.billboard_y;
-
- } break;
- case INSTANCE_FLAG_CAST_SHADOW: {
- if(instance->data.cast_shadows == SHADOW_CASTING_SETTING_OFF) {
- return false;
- }
- else {
- return true;
- }
-
- } break;
- case INSTANCE_FLAG_RECEIVE_SHADOWS: {
-
- return instance->data.receive_shadows;
-
- } break;
- case INSTANCE_FLAG_DEPH_SCALE: {
-
- return instance->data.depth_scale;
-
- } break;
- case INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS: {
-
- return instance->visible_in_all_rooms;
-
- } break;
-
- }
-
- return false;
-}
-
-void VisualServerRaster::instance_geometry_set_cast_shadows_setting(RID p_instance, VS::ShadowCastingSetting p_shadow_casting_setting) {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- instance->data.cast_shadows = p_shadow_casting_setting;
-}
-
-VS::ShadowCastingSetting VisualServerRaster::instance_geometry_get_cast_shadows_setting(RID p_instance) const{
-
- const Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, SHADOW_CASTING_SETTING_OFF );
-
- return instance->data.cast_shadows;
-}
-
-
-void VisualServerRaster::instance_geometry_set_material_override(RID p_instance, RID p_material) {
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
- instance->data.material_override=p_material;
-
-}
-
-RID VisualServerRaster::instance_geometry_get_material_override(RID p_instance) const{
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance, RID() );
- return instance->data.material_override;
-
-}
-
-void VisualServerRaster::instance_geometry_set_draw_range(RID p_instance,float p_min,float p_max){
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- instance->draw_range_begin=p_min;
- instance->draw_range_end=p_max;
-
-}
-
-float VisualServerRaster::instance_geometry_get_draw_range_min(RID p_instance) const{
-
- const Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance,0 );
-
- return instance->draw_range_begin;
-
-
-}
-
-float VisualServerRaster::instance_geometry_get_draw_range_max(RID p_instance) const{
-
- const Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance,0 );
-
- return instance->draw_range_end;
-
-
-}
-
-
-void VisualServerRaster::instance_geometry_set_baked_light(RID p_instance,RID p_baked_light) {
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
-
- if (instance->baked_light) {
-
-
- instance->baked_light->baked_light_info->owned_instances.erase(instance->BLE);
- instance->BLE=NULL;
- instance->baked_light=NULL;
- instance->data.baked_light=NULL;
- instance->data.baked_light_octree_xform=NULL;
-
- }
-
- if (!p_baked_light.is_valid())
- return;
- Instance *bl_instance = instance_owner.get( p_baked_light );
- ERR_FAIL_COND( !bl_instance );
- ERR_FAIL_COND( bl_instance->base_type!=INSTANCE_BAKED_LIGHT );
-
- instance->baked_light=bl_instance;
- instance->BLE=bl_instance->baked_light_info->owned_instances.push_back(instance);
- instance->data.baked_light=&bl_instance->baked_light_info->baked_light->data;
- instance->data.baked_light_octree_xform=&bl_instance->baked_light_info->affine_inverse;
-
-}
-
-RID VisualServerRaster::instance_geometry_get_baked_light(RID p_instance) const{
-
- const Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance,RID() );
- if (instance->baked_light)
- return instance->baked_light->self;
- return RID();
-
-}
-
-
-void VisualServerRaster::instance_geometry_set_baked_light_sampler(RID p_instance,RID p_baked_light_sampler) {
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- if (instance->sampled_light) {
- instance->sampled_light->baked_light_sampler_info->owned_instances.erase(instance);
- instance->data.sampled_light;
- }
-
- if(p_baked_light_sampler.is_valid()) {
- Instance *sampler_instance = instance_owner.get( p_baked_light_sampler );
- ERR_FAIL_COND( !sampler_instance );
- ERR_FAIL_COND( sampler_instance->base_type!=INSTANCE_BAKED_LIGHT_SAMPLER );
- instance->sampled_light=sampler_instance;
- instance->sampled_light->baked_light_sampler_info->owned_instances.insert(instance);
- } else {
- instance->sampled_light=NULL;
- }
-
- instance->data.sampled_light;
-
-}
-
-RID VisualServerRaster::instance_geometry_get_baked_light_sampler(RID p_instance) const {
-
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance,RID() );
-
- if (instance->sampled_light)
- return instance->sampled_light->self;
- else
- return RID();
-
-}
-
-
-void VisualServerRaster::instance_geometry_set_baked_light_texture_index(RID p_instance,int p_tex_id){
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
-
- instance->data.baked_lightmap_id=p_tex_id;
-
-
-}
-int VisualServerRaster::instance_geometry_get_baked_light_texture_index(RID p_instance) const{
-
- const Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance,0 );
-
- return instance->data.baked_lightmap_id;
-
-}
-
-
-void VisualServerRaster::_update_instance(Instance *p_instance) {
-
- p_instance->version++;
-
- if (p_instance->base_type == INSTANCE_LIGHT) {
-
- rasterizer->light_instance_set_transform( p_instance->light_info->instance, p_instance->data.transform );
-
- }
-
-
- if (p_instance->aabb.has_no_surface())
- return;
-
-
- if (p_instance->base_type == INSTANCE_PARTICLES) {
-
- rasterizer->particles_instance_set_transform( p_instance->particles_info->instance, p_instance->data.transform );
- }
-
-
- if ((1<<p_instance->base_type)&INSTANCE_GEOMETRY_MASK) {
-
- //make sure lights are updated
- InstanceSet::Element *E=p_instance->lights.front();
- while(E) {
-
- E->get()->version++;
- E=E->next();
- }
-
- } else if (p_instance->base_type == INSTANCE_ROOM) {
-
- p_instance->room_info->affine_inverse=p_instance->data.transform.affine_inverse();
- } else if (p_instance->base_type == INSTANCE_BAKED_LIGHT) {
-
- Transform scale;
- scale.basis.scale(p_instance->baked_light_info->baked_light->octree_aabb.size);
- scale.origin=p_instance->baked_light_info->baked_light->octree_aabb.pos;
- //print_line("scale: "+scale);
- p_instance->baked_light_info->affine_inverse=(p_instance->data.transform*scale).affine_inverse();
- }
-
-
-
- p_instance->data.mirror = p_instance->data.transform.basis.determinant() < 0.0;
-
- AABB new_aabb;
-
- if (p_instance->base_type==INSTANCE_PORTAL) {
-
- //portals need to be transformed in a special way, so they don't become too wide if they have scale..
- Transform portal_xform = p_instance->data.transform;
- portal_xform.basis.set_axis(2,portal_xform.basis.get_axis(2).normalized());
-
- p_instance->portal_info->plane_cache=Plane( p_instance->data.transform.origin, portal_xform.basis.get_axis(2));
- int point_count=p_instance->portal_info->portal->shape.size();
- p_instance->portal_info->transformed_point_cache.resize(point_count);
-
- AABB portal_aabb;
-
- for(int i=0;i<point_count;i++) {
-
- Point2 src = p_instance->portal_info->portal->shape[i];
- Vector3 point = portal_xform.xform(Vector3(src.x,src.y,0));
- p_instance->portal_info->transformed_point_cache[i]=point;
- if (i==0)
- portal_aabb.pos=point;
- else
- portal_aabb.expand_to(point);
- }
-
- portal_aabb.grow_by(p_instance->portal_info->portal->connect_range);
-
- new_aabb = portal_aabb;
-
- } else {
-
- new_aabb = p_instance->data.transform.xform(p_instance->aabb);
- }
-
-
- for(InstanceSet::Element *E=p_instance->lights.front();E;E=E->next()) {
- Instance *light = E->get();
- light->version++;
- }
-
-
- p_instance->transformed_aabb=new_aabb;
-
- if (!p_instance->scenario) {
-
-
- return;
- }
-
-
-
- if (p_instance->octree_id==0) {
-
- uint32_t base_type = 1<<p_instance->base_type;
- uint32_t pairable_mask=0;
- bool pairable=false;
-
- if (p_instance->base_type == INSTANCE_LIGHT) {
-
- pairable_mask=p_instance->light_info->enabled?INSTANCE_GEOMETRY_MASK:0;
- pairable=true;
- }
-
- if (p_instance->base_type == INSTANCE_PORTAL) {
-
- pairable_mask=(1<<INSTANCE_PORTAL);
- pairable=true;
- }
-
- if (p_instance->base_type == INSTANCE_BAKED_LIGHT_SAMPLER) {
-
- pairable_mask=(1<<INSTANCE_BAKED_LIGHT);
- pairable=true;
- }
-
-
- if (!p_instance->room && (1<<p_instance->base_type)&INSTANCE_GEOMETRY_MASK) {
-
- base_type|=INSTANCE_ROOMLESS_MASK;
- }
-
- if (p_instance->base_type == INSTANCE_ROOM) {
-
- pairable_mask=INSTANCE_ROOMLESS_MASK;
- pairable=true;
- }
-
-
- // not inside octree
- p_instance->octree_id = p_instance->scenario->octree.create(p_instance,new_aabb,0,pairable,base_type,pairable_mask);
-
- } else {
-
- /*
- if (new_aabb==p_instance->data.transformed_aabb)
- return;
- */
-
- p_instance->scenario->octree.move(p_instance->octree_id,new_aabb);
- }
-
- if (p_instance->base_type==INSTANCE_PORTAL) {
-
- _portal_attempt_connect(p_instance);
- }
-
- if (!p_instance->room && (1<<p_instance->base_type)&INSTANCE_GEOMETRY_MASK) {
-
- _instance_validate_autorooms(p_instance);
- }
-
- if (p_instance->base_type == INSTANCE_ROOM) {
-
- for(Set<Instance*>::Element *E=p_instance->room_info->owned_autoroom_geometry.front();E;E=E->next())
- _instance_validate_autorooms(E->get());
- }
-
-
-}
-
-void VisualServerRaster::_update_instance_aabb(Instance *p_instance) {
-
- AABB new_aabb;
-
- ERR_FAIL_COND(p_instance->base_type!=INSTANCE_NONE && !p_instance->base_rid.is_valid());
-
- switch(p_instance->base_type) {
- case VisualServer::INSTANCE_NONE: {
-
- // do nothing
- } break;
- case VisualServer::INSTANCE_MESH: {
-
- new_aabb = rasterizer->mesh_get_aabb(p_instance->base_rid,p_instance->data.skeleton);
-
- } break;
- case VisualServer::INSTANCE_MULTIMESH: {
-
- new_aabb = rasterizer->multimesh_get_aabb(p_instance->base_rid);
-
- } break;
- case VisualServer::INSTANCE_IMMEDIATE: {
-
- new_aabb = rasterizer->immediate_get_aabb(p_instance->base_rid);
-
-
- } break;
- case VisualServer::INSTANCE_PARTICLES: {
-
- new_aabb = rasterizer->particles_get_aabb(p_instance->base_rid);
-
-
- } break;
- case VisualServer::INSTANCE_LIGHT: {
-
- new_aabb = rasterizer->light_get_aabb(p_instance->base_rid);
-
- } break;
- case VisualServer::INSTANCE_ROOM: {
-
- Room *room = room_owner.get( p_instance->base_rid );
- ERR_FAIL_COND(!room);
- new_aabb=room->bounds.get_aabb();
-
- } break;
- case VisualServer::INSTANCE_PORTAL: {
-
- Portal *portal = portal_owner.get( p_instance->base_rid );
- ERR_FAIL_COND(!portal);
- for (int i=0;i<portal->shape.size();i++) {
-
- Vector3 point( portal->shape[i].x, portal->shape[i].y, 0 );
- if (i==0) {
-
- new_aabb.pos=point;
- new_aabb.size.z=0.01; // make it not flat for octree
- } else {
-
- new_aabb.expand_to(point);
- }
- }
-
- } break;
- case VisualServer::INSTANCE_BAKED_LIGHT: {
-
- BakedLight *baked_light = baked_light_owner.get( p_instance->base_rid );
- ERR_FAIL_COND(!baked_light);
- new_aabb=baked_light->octree_aabb;
-
- } break;
- case VisualServer::INSTANCE_BAKED_LIGHT_SAMPLER: {
-
- BakedLightSampler *baked_light_sampler = baked_light_sampler_owner.get( p_instance->base_rid );
- ERR_FAIL_COND(!baked_light_sampler);
- float radius = baked_light_sampler->params[VS::BAKED_LIGHT_SAMPLER_RADIUS];
-
- new_aabb=AABB(Vector3(-radius,-radius,-radius),Vector3(radius*2,radius*2,radius*2));
-
- } break;
-
- default: {}
- }
-
- if (p_instance->extra_margin)
- new_aabb.grow_by(p_instance->extra_margin);
-
- p_instance->aabb=new_aabb;
-
-}
-
-void VisualServerRaster::_update_instances() {
-
- while(instance_update_list) {
-
- Instance *instance=instance_update_list;
-
- instance_update_list=instance_update_list->update_next;
-
- if (instance->update_aabb)
- _update_instance_aabb(instance);
-
- if (instance->update_materials) {
- if (instance->base_type==INSTANCE_MESH) {
- instance->data.materials.resize(rasterizer->mesh_get_surface_count(instance->base_rid));
- }
- }
-
- _update_instance(instance);
-
- instance->update=false;
- instance->update_aabb=false;
- instance->update_materials=false;
- instance->update_next=0;
- }
-}
-
-void VisualServerRaster::instance_light_set_enabled(RID p_instance,bool p_enabled) {
-
- VS_CHANGED;
- Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND( !instance );
- ERR_FAIL_COND( instance->base_type!=INSTANCE_LIGHT );
-
- if (p_enabled==instance->light_info->enabled)
- return;
-
- instance->light_info->enabled=p_enabled;
- if (light_get_type(instance->base_rid)!=VS::LIGHT_DIRECTIONAL && instance->octree_id && instance->scenario)
- instance->scenario->octree.set_pairable(instance->octree_id,p_enabled,1<<INSTANCE_LIGHT,p_enabled?INSTANCE_GEOMETRY_MASK:0);
-
- //_instance_queue_update( instance , true );
-
-}
-
-bool VisualServerRaster::instance_light_is_enabled(RID p_instance) const {
-
- const Instance *instance = instance_owner.get( p_instance );
- ERR_FAIL_COND_V( !instance,false );
- ERR_FAIL_COND_V( instance->base_type!=INSTANCE_LIGHT,false );
-
- return instance->light_info->enabled;
-}
-
-/****** CANVAS *********/
-RID VisualServerRaster::canvas_create() {
-
- Canvas * canvas = memnew( Canvas );
- ERR_FAIL_COND_V(!canvas,RID());
- RID rid = canvas_owner.make_rid( canvas );
-
- return rid;
-}
-
-
-void VisualServerRaster::canvas_set_item_mirroring(RID p_canvas,RID p_item,const Point2& p_mirroring) {
-
- Canvas * canvas = canvas_owner.get(p_canvas);
- ERR_FAIL_COND(!canvas);
- CanvasItem *canvas_item = canvas_item_owner.get(p_item);
- ERR_FAIL_COND(!canvas_item);
-
- int idx = canvas->find_item(canvas_item);
- ERR_FAIL_COND(idx==-1);
- canvas->child_items[idx].mirror=p_mirroring;
-
-}
-
-Point2 VisualServerRaster::canvas_get_item_mirroring(RID p_canvas,RID p_item) const {
-
- Canvas * canvas = canvas_owner.get(p_canvas);
- ERR_FAIL_COND_V(!canvas,Point2());
- CanvasItem *canvas_item = memnew( CanvasItem );
- ERR_FAIL_COND_V(!canvas_item,Point2());
-
- int idx = canvas->find_item(canvas_item);
- ERR_FAIL_COND_V(idx==-1,Point2());
- return canvas->child_items[idx].mirror;
-}
-
-void VisualServerRaster::canvas_set_modulate(RID p_canvas,const Color& p_color) {
-
- Canvas * canvas = canvas_owner.get(p_canvas);
- ERR_FAIL_COND(!canvas);
- canvas->modulate=p_color;
-}
-
-
-
-RID VisualServerRaster::canvas_item_create() {
-
- CanvasItem *canvas_item = memnew( CanvasItem );
- ERR_FAIL_COND_V(!canvas_item,RID());
-
- return canvas_item_owner.make_rid( canvas_item );
-}
-
-void VisualServerRaster::canvas_item_set_parent(RID p_item,RID p_parent) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- if (canvas_item->parent.is_valid()) {
-
- if (canvas_owner.owns(canvas_item->parent)) {
-
- Canvas *canvas = canvas_owner.get(canvas_item->parent);
- canvas->erase_item(canvas_item);
- } else if (canvas_item_owner.owns(canvas_item->parent)) {
-
- CanvasItem *item_owner = canvas_item_owner.get(canvas_item->parent);
- item_owner->child_items.erase(canvas_item);
- }
-
- canvas_item->parent;
- }
-
-
- if (p_parent.is_valid()) {
- if (canvas_owner.owns(p_parent)) {
-
- Canvas *canvas = canvas_owner.get(p_parent);
- Canvas::ChildItem ci;
- ci.item=canvas_item;
- canvas->child_items.push_back(ci);
- } else if (canvas_item_owner.owns(p_parent)) {
-
- CanvasItem *item_owner = canvas_item_owner.get(p_parent);
- item_owner->child_items.push_back(canvas_item);
-
- } else {
-
- ERR_EXPLAIN("Invalid parent");
- ERR_FAIL();
- }
-
-
- }
-
- canvas_item->parent=p_parent;
-
-
-}
-
-RID VisualServerRaster::canvas_item_get_parent(RID p_canvas_item) const {
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_canvas_item );
- ERR_FAIL_COND_V(!canvas_item,RID());
-
- return canvas_item->parent;
-}
-
-void VisualServerRaster::canvas_item_set_visible(RID p_item,bool p_visible) {
-
- VS_CHANGED;
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- canvas_item->visible=p_visible;
-}
-
-
-bool VisualServerRaster::canvas_item_is_visible(RID p_item) const {
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND_V(!canvas_item,RID());
-
- return canvas_item->visible;
-
-}
-
-void VisualServerRaster::canvas_item_set_light_mask(RID p_canvas_item,int p_mask) {
-
- VS_CHANGED;
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_canvas_item );
- ERR_FAIL_COND(!canvas_item);
-
- if (canvas_item->light_mask==p_mask)
- return;
- VS_CHANGED;
-
- canvas_item->light_mask=p_mask;
-
-}
-
-
-void VisualServerRaster::canvas_item_set_blend_mode(RID p_canvas_item,MaterialBlendMode p_blend) {
-
- VS_CHANGED;
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_canvas_item );
- ERR_FAIL_COND(!canvas_item);
-
- if (canvas_item->blend_mode==p_blend)
- return;
- VS_CHANGED;
-
- canvas_item->blend_mode=p_blend;
-
-}
-
-void VisualServerRaster::canvas_item_attach_viewport(RID p_canvas_item, RID p_viewport) {
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_canvas_item );
- ERR_FAIL_COND(!canvas_item);
-
- VS_CHANGED;
-
- canvas_item->viewport=p_viewport;
-
-}
-
-
-/*
-void VisualServerRaster::canvas_item_set_rect(RID p_item, const Rect2& p_rect) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- canvas_item->rect=p_rect;
-}*/
-
-void VisualServerRaster::canvas_item_set_clip(RID p_item, bool p_clip) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- canvas_item->clip=p_clip;
-}
-
-void VisualServerRaster::canvas_item_set_distance_field_mode(RID p_item, bool p_distance_field) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- canvas_item->distance_field=p_distance_field;
-}
-
-
-void VisualServerRaster::canvas_item_set_transform(RID p_item, const Matrix32& p_transform) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- canvas_item->xform=p_transform;
-
-}
-
-
-void VisualServerRaster::canvas_item_set_custom_rect(RID p_item, bool p_custom_rect,const Rect2& p_rect) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- canvas_item->custom_rect=p_custom_rect;
- if (p_custom_rect)
- canvas_item->rect=p_rect;
-
-}
-
-void VisualServerRaster::canvas_item_set_opacity(RID p_item, float p_opacity) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- canvas_item->opacity=p_opacity;
-
-}
-float VisualServerRaster::canvas_item_get_opacity(RID p_item, float p_opacity) const {
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND_V(!canvas_item,-1);
- return canvas_item->opacity;
-
-}
-
-void VisualServerRaster::canvas_item_set_on_top(RID p_item, bool p_on_top) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- canvas_item->ontop=p_on_top;
-
-}
-
-bool VisualServerRaster::canvas_item_is_on_top(RID p_item) const{
- const CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND_V(!canvas_item,false);
- return canvas_item->ontop;
-
-}
-
-
-void VisualServerRaster::canvas_item_set_self_opacity(RID p_item, float p_self_opacity) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- canvas_item->self_opacity=p_self_opacity;
-
-}
-float VisualServerRaster::canvas_item_get_self_opacity(RID p_item, float p_self_opacity) const {
-
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND_V(!canvas_item,-1);
- return canvas_item->self_opacity;
-
-}
-
-
-void VisualServerRaster::canvas_item_add_line(RID p_item, const Point2& p_from, const Point2& p_to,const Color& p_color,float p_width,bool p_antialiased) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandLine * line = memnew( CanvasItem::CommandLine );
- ERR_FAIL_COND(!line);
- line->color=p_color;
- line->from=p_from;
- line->to=p_to;
- line->width=p_width;
- line->antialiased=p_antialiased;
- canvas_item->rect_dirty=true;
-
-
- canvas_item->commands.push_back(line);
-}
-
-void VisualServerRaster::canvas_item_add_rect(RID p_item, const Rect2& p_rect, const Color& p_color) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandRect * rect = memnew( CanvasItem::CommandRect );
- ERR_FAIL_COND(!rect);
- rect->modulate=p_color;
- rect->rect=p_rect;
- canvas_item->rect_dirty=true;
-
- canvas_item->commands.push_back(rect);
-}
-
-void VisualServerRaster::canvas_item_add_circle(RID p_item, const Point2& p_pos, float p_radius,const Color& p_color) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandCircle * circle = memnew( CanvasItem::CommandCircle );
- ERR_FAIL_COND(!circle);
- circle->color=p_color;
- circle->pos=p_pos;
- circle->radius=p_radius;
-
- canvas_item->commands.push_back(circle);
-
-}
-
-void VisualServerRaster::canvas_item_add_texture_rect(RID p_item, const Rect2& p_rect, RID p_texture,bool p_tile,const Color& p_modulate,bool p_transpose) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandRect * rect = memnew( CanvasItem::CommandRect );
- ERR_FAIL_COND(!rect);
- rect->modulate=p_modulate;
- rect->rect=p_rect;
- rect->flags=0;
- if (p_tile) {
- rect->flags|=Rasterizer::CANVAS_RECT_TILE;
- rect->flags|=Rasterizer::CANVAS_RECT_REGION;
- rect->source=Rect2(0,0,p_rect.size.width,p_rect.size.height);
- }
-
- if (p_rect.size.x<0) {
-
- rect->flags|=Rasterizer::CANVAS_RECT_FLIP_H;
- rect->rect.size.x = -rect->rect.size.x;
- }
- if (p_rect.size.y<0) {
-
- rect->flags|=Rasterizer::CANVAS_RECT_FLIP_V;
- rect->rect.size.y = -rect->rect.size.y;
- }
- if (p_transpose) {
- rect->flags|=Rasterizer::CANVAS_RECT_TRANSPOSE;
- SWAP(rect->rect.size.x, rect->rect.size.y);
- }
- rect->texture=p_texture;
- canvas_item->rect_dirty=true;
- canvas_item->commands.push_back(rect);
-}
-
-void VisualServerRaster::canvas_item_add_texture_rect_region(RID p_item, const Rect2& p_rect, RID p_texture,const Rect2& p_src_rect,const Color& p_modulate,bool p_transpose) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandRect * rect = memnew( CanvasItem::CommandRect );
- ERR_FAIL_COND(!rect);
- rect->modulate=p_modulate;
- rect->rect=p_rect;
- rect->texture=p_texture;
- rect->source=p_src_rect;
- rect->flags=Rasterizer::CANVAS_RECT_REGION;
-
- if (p_rect.size.x<0) {
-
- rect->flags|=Rasterizer::CANVAS_RECT_FLIP_H;
- rect->rect.size.x = -rect->rect.size.x;
- }
- if (p_rect.size.y<0) {
-
- rect->flags|=Rasterizer::CANVAS_RECT_FLIP_V;
- rect->rect.size.y = -rect->rect.size.y;
- }
- if (p_transpose) {
- rect->flags|=Rasterizer::CANVAS_RECT_TRANSPOSE;
- SWAP(rect->rect.size.x, rect->rect.size.y);
- }
-
- canvas_item->rect_dirty=true;
-
- canvas_item->commands.push_back(rect);
-
-}
-
-void VisualServerRaster::canvas_item_add_style_box(RID p_item, const Rect2& p_rect, const Rect2& p_source, RID p_texture, const Vector2& p_topleft, const Vector2& p_bottomright, bool p_draw_center,const Color& p_modulate) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandStyle * style = memnew( CanvasItem::CommandStyle );
- ERR_FAIL_COND(!style);
- style->texture=p_texture;
- style->rect=p_rect;
- style->source=p_source;
- style->draw_center=p_draw_center;
- style->color=p_modulate;
- style->margin[MARGIN_LEFT]=p_topleft.x;
- style->margin[MARGIN_TOP]=p_topleft.y;
- style->margin[MARGIN_RIGHT]=p_bottomright.x;
- style->margin[MARGIN_BOTTOM]=p_bottomright.y;
- canvas_item->rect_dirty=true;
-
- canvas_item->commands.push_back(style);
-}
-void VisualServerRaster::canvas_item_add_primitive(RID p_item,const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture,float p_width) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandPrimitive * prim = memnew( CanvasItem::CommandPrimitive );
- ERR_FAIL_COND(!prim);
- prim->texture=p_texture;
- prim->points=p_points;
- prim->uvs=p_uvs;
- prim->colors=p_colors;
- prim->width=p_width;
- canvas_item->rect_dirty=true;
-
- canvas_item->commands.push_back(prim);
-}
-
-void VisualServerRaster::canvas_item_add_polygon(RID p_item, const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-#ifdef DEBUG_ENABLED
- int pointcount = p_points.size();
- ERR_FAIL_COND(pointcount<3);
- int color_size=p_colors.size();
- int uv_size=p_uvs.size();
- ERR_FAIL_COND(color_size!=0 && color_size!=1 && color_size!=pointcount);
- ERR_FAIL_COND(uv_size!=0 && (uv_size!=pointcount || !p_texture.is_valid()));
-#endif
- Vector<int> indices = Geometry::triangulate_polygon(p_points);
-
- if (indices.empty()) {
-
- ERR_EXPLAIN("Bad Polygon!");
- ERR_FAIL_V();
- }
-
- CanvasItem::CommandPolygon * polygon = memnew( CanvasItem::CommandPolygon );
- ERR_FAIL_COND(!polygon);
- polygon->texture=p_texture;
- polygon->points=p_points;
- polygon->uvs=p_uvs;
- polygon->colors=p_colors;
- polygon->indices=indices;
- polygon->count=indices.size();
- canvas_item->rect_dirty=true;
-
- canvas_item->commands.push_back(polygon);
-
-}
-
-void VisualServerRaster::canvas_item_add_triangle_array_ptr(RID p_item, int p_count, const int* p_indices, const Point2* p_points, const Color* p_colors,const Point2* p_uvs, RID p_texture) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- ERR_FAIL_COND(p_count <= 0);
-
- ERR_FAIL_COND(p_points == NULL);
-
- CanvasItem::CommandPolygonPtr * polygon = memnew( CanvasItem::CommandPolygonPtr );
- ERR_FAIL_COND(!polygon);
- polygon->texture=p_texture;
- polygon->points=p_points;
- polygon->uvs=p_uvs;
- polygon->colors=p_colors;
- polygon->indices=p_indices;
- polygon->count = p_count * 3;
- canvas_item->rect_dirty=true;
-
- canvas_item->commands.push_back(polygon);
-};
-
-void VisualServerRaster::canvas_item_add_triangle_array(RID p_item, const Vector<int>& p_indices, const Vector<Point2>& p_points, const Vector<Color>& p_colors,const Vector<Point2>& p_uvs, RID p_texture, int p_count) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- int ps = p_points.size();
- ERR_FAIL_COND(!p_colors.empty() && p_colors.size()!=ps && p_colors.size()!=1);
- ERR_FAIL_COND(!p_uvs.empty() && p_uvs.size()!=ps);
-
- Vector<int> indices = p_indices;
-
- int count = p_count * 3;
-
- if (indices.empty()) {
-
- ERR_FAIL_COND( ps % 3 != 0 );
- if (p_count == -1)
- count = ps;
- } else {
-
- ERR_FAIL_COND( indices.size() % 3 != 0 );
- if (p_count == -1)
- count = indices.size();
- }
-
- CanvasItem::CommandPolygon * polygon = memnew( CanvasItem::CommandPolygon );
- ERR_FAIL_COND(!polygon);
- polygon->texture=p_texture;
- polygon->points=p_points;
- polygon->uvs=p_uvs;
- polygon->colors=p_colors;
- polygon->indices=indices;
- polygon->count = count;
- canvas_item->rect_dirty=true;
-
- canvas_item->commands.push_back(polygon);
-}
-
-
-void VisualServerRaster::canvas_item_add_set_transform(RID p_item,const Matrix32& p_transform) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandTransform * tr = memnew( CanvasItem::CommandTransform );
- ERR_FAIL_COND(!tr);
- tr->xform=p_transform;
-
- canvas_item->commands.push_back(tr);
-
-}
-
-void VisualServerRaster::canvas_item_add_set_blend_mode(RID p_item, MaterialBlendMode p_blend) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandBlendMode * bm = memnew( CanvasItem::CommandBlendMode );
- ERR_FAIL_COND(!bm);
- bm->blend_mode = p_blend;
-
- canvas_item->commands.push_back(bm);
-};
-
-void VisualServerRaster::canvas_item_set_z(RID p_item, int p_z) {
-
- ERR_FAIL_COND(p_z<CANVAS_ITEM_Z_MIN || p_z>CANVAS_ITEM_Z_MAX);
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- canvas_item->z=p_z;
-
-}
-
-void VisualServerRaster::canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- canvas_item->z_relative=p_enable;
-
-}
-
-void VisualServerRaster::canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2& p_rect) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- if (bool(canvas_item->copy_back_buffer!=NULL) !=p_enable) {
- if (p_enable) {
- canvas_item->copy_back_buffer = memnew( Rasterizer::CanvasItem::CopyBackBuffer );
- } else {
- memdelete(canvas_item->copy_back_buffer);
- canvas_item->copy_back_buffer=NULL;
- }
- }
-
- if (p_enable) {
- canvas_item->copy_back_buffer->rect=p_rect;
- canvas_item->copy_back_buffer->full=p_rect==Rect2();
- }
-
-}
-
-void VisualServerRaster::canvas_item_set_use_parent_material(RID p_item, bool p_enable) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- canvas_item->use_parent_material=p_enable;
-
-}
-
-void VisualServerRaster::canvas_item_set_material(RID p_item, RID p_material) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- if (canvas_item->material)
- canvas_item->material->owners.erase(canvas_item);
-
- canvas_item->material=NULL;
-
- if (canvas_item_material_owner.owns(p_material)) {
- canvas_item->material=canvas_item_material_owner.get(p_material);
- canvas_item->material->owners.insert(canvas_item);
- }
-}
-
-void VisualServerRaster::canvas_item_set_sort_children_by_y(RID p_item, bool p_enable) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
- canvas_item->sort_y=p_enable;
-}
-
-
-void VisualServerRaster::canvas_item_add_clip_ignore(RID p_item, bool p_ignore) {
-
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- CanvasItem::CommandClipIgnore * ci = memnew( CanvasItem::CommandClipIgnore);
- ERR_FAIL_COND(!ci);
- ci->ignore=p_ignore;
-
- canvas_item->commands.push_back(ci);
-
-}
-
-void VisualServerRaster::canvas_item_clear(RID p_item) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
-
- canvas_item->clear();
-
-}
-
-void VisualServerRaster::canvas_item_raise(RID p_item) {
- VS_CHANGED;
- CanvasItem *canvas_item = canvas_item_owner.get( p_item );
- ERR_FAIL_COND(!canvas_item);
-
- if (canvas_item->parent.is_valid()) {
-
- if (canvas_owner.owns(canvas_item->parent)) {
-
- Canvas *canvas = canvas_owner.get(canvas_item->parent);
- int idx = canvas->find_item(canvas_item);
- ERR_FAIL_COND(idx<0);
- Canvas::ChildItem ci = canvas->child_items[idx];
- canvas->child_items.remove(idx);
- canvas->child_items.push_back(ci);
-
- } else if (canvas_item_owner.owns(canvas_item->parent)) {
-
- CanvasItem *item_owner = canvas_item_owner.get(canvas_item->parent);
- int idx = item_owner->child_items.find(canvas_item);
- ERR_FAIL_COND(idx<0);
- item_owner->child_items.remove(idx);
- item_owner->child_items.push_back(canvas_item);
-
- }
- }
-
-}
-
-/***** CANVAS LIGHT *******/
-
-RID VisualServerRaster::canvas_light_create() {
-
- Rasterizer::CanvasLight *clight = memnew( Rasterizer::CanvasLight );
- return canvas_light_owner.make_rid(clight);
-}
-
-void VisualServerRaster::canvas_light_attach_to_canvas(RID p_light,RID p_canvas){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
-
- if (clight->canvas.is_valid()) {
-
- Canvas *canvas = canvas_owner.get(clight->canvas);
- canvas->lights.erase(clight);
- }
-
- if (!canvas_owner.owns(p_canvas))
- p_canvas;
- clight->canvas=p_canvas;
-
- if (clight->canvas.is_valid()) {
-
- Canvas *canvas = canvas_owner.get(clight->canvas);
- canvas->lights.insert(clight);
- }
-
-
-
-}
-void VisualServerRaster::canvas_light_set_enabled(RID p_light, bool p_enabled){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->enabled=p_enabled;
-
-}
-void VisualServerRaster::canvas_light_set_transform(RID p_light, const Matrix32& p_transform){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->xform=p_transform;
-
-}
-void VisualServerRaster::canvas_light_set_scale(RID p_light, float p_scale) {
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->scale=p_scale;
-
-}
-
-
-void VisualServerRaster::canvas_light_set_texture(RID p_light, RID p_texture){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->texture=p_texture;
-
-}
-void VisualServerRaster::canvas_light_set_texture_offset(RID p_light, const Vector2& p_offset){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->texture_offset=p_offset;
-
-}
-void VisualServerRaster::canvas_light_set_color(RID p_light, const Color& p_color){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->color=p_color;
-
-
-}
-void VisualServerRaster::canvas_light_set_height(RID p_light, float p_height){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->height=p_height;
-
-}
-
-void VisualServerRaster::canvas_light_set_energy(RID p_light, float p_energy){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->energy=p_energy;
-
-}
-
-void VisualServerRaster::canvas_light_set_z_range(RID p_light, int p_min_z,int p_max_z){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->z_min=p_min_z;
- clight->z_max=p_max_z;
-
-}
-
-void VisualServerRaster::canvas_light_set_layer_range(RID p_light, int p_min_layer,int p_max_layer) {
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->layer_min=p_min_layer;
- clight->layer_max=p_max_layer;
-
-}
-
-void VisualServerRaster::canvas_light_set_item_mask(RID p_light, int p_mask){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->item_mask=p_mask;
-
-}
-
-void VisualServerRaster::canvas_light_set_item_shadow_mask(RID p_light, int p_mask){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->item_shadow_mask=p_mask;
-
-}
-
-
-void VisualServerRaster::canvas_light_set_mode(RID p_light, CanvasLightMode p_mode) {
-
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->mode=p_mode;
-
-}
-void VisualServerRaster::canvas_light_set_shadow_enabled(RID p_light, bool p_enabled){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
-
- if (clight->shadow_buffer.is_valid()==p_enabled)
- return;
- if (p_enabled) {
- clight->shadow_buffer=rasterizer->canvas_light_shadow_buffer_create(clight->shadow_buffer_size);
- } else {
- rasterizer->free(clight->shadow_buffer);
- clight->shadow_buffer;
-
- }
-
-}
-
-void VisualServerRaster::canvas_light_set_shadow_buffer_size(RID p_light, int p_size){
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
-
- ERR_FAIL_COND(p_size<32 || p_size>16384);
-
- clight->shadow_buffer_size=nearest_power_of_2(p_size);
-
-
- if (clight->shadow_buffer.is_valid()) {
- rasterizer->free(clight->shadow_buffer);
- clight->shadow_buffer=rasterizer->canvas_light_shadow_buffer_create(clight->shadow_buffer_size);
- }
-
-}
-
-void VisualServerRaster::canvas_light_set_shadow_esm_multiplier(RID p_light, float p_multiplier) {
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->shadow_esm_mult=p_multiplier;
-
-}
-
-void VisualServerRaster::canvas_light_set_shadow_color(RID p_light, const Color& p_color) {
-
- Rasterizer::CanvasLight *clight = canvas_light_owner.get(p_light);
- ERR_FAIL_COND(!clight);
- clight->shadow_color=p_color;
-
-}
-
-
-/****** CANVAS LIGHT OCCLUDER ******/
-
-RID VisualServerRaster::canvas_light_occluder_create() {
-
- Rasterizer::CanvasLightOccluderInstance *occluder = memnew( Rasterizer::CanvasLightOccluderInstance );
-
- return canvas_light_occluder_owner.make_rid( occluder );
-
-}
-
-void VisualServerRaster::canvas_light_occluder_attach_to_canvas(RID p_occluder,RID p_canvas) {
-
- Rasterizer::CanvasLightOccluderInstance *occluder = canvas_light_occluder_owner.get(p_occluder);
- ERR_FAIL_COND(!occluder);
-
- if (occluder->canvas.is_valid()) {
-
- Canvas *canvas = canvas_owner.get(occluder->canvas);
- canvas->occluders.erase(occluder);
- }
-
- if (!canvas_owner.owns(p_canvas))
- p_canvas;
-
- occluder->canvas=p_canvas;
-
- if (occluder->canvas.is_valid()) {
-
- Canvas *canvas = canvas_owner.get(occluder->canvas);
- canvas->occluders.insert(occluder);
- }
-}
-
-void VisualServerRaster::canvas_light_occluder_set_enabled(RID p_occluder,bool p_enabled){
-
- Rasterizer::CanvasLightOccluderInstance *occluder = canvas_light_occluder_owner.get(p_occluder);
- ERR_FAIL_COND(!occluder);
-
- occluder->enabled=p_enabled;
-
-}
-
-void VisualServerRaster::canvas_light_occluder_set_polygon(RID p_occluder,RID p_polygon) {
-
- Rasterizer::CanvasLightOccluderInstance *occluder = canvas_light_occluder_owner.get(p_occluder);
- ERR_FAIL_COND(!occluder);
-
- if (occluder->polygon.is_valid()) {
- CanvasLightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get(p_polygon);
- if (occluder_poly) {
- occluder_poly->owners.erase(occluder);
- }
- }
-
- occluder->polygon=p_polygon;
- occluder->polygon_buffer;
-
- if (occluder->polygon.is_valid()) {
- CanvasLightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get(p_polygon);
- if (!occluder_poly)
- occluder->polygon;
- ERR_FAIL_COND(!occluder_poly);
- occluder_poly->owners.insert(occluder);
- occluder->polygon_buffer=occluder_poly->occluder;
- occluder->aabb_cache=occluder_poly->aabb;
- occluder->cull_cache=occluder_poly->cull_mode;
- }
-
-}
-
-
-
-
-void VisualServerRaster::canvas_light_occluder_set_transform(RID p_occluder,const Matrix32& p_xform) {
-
- Rasterizer::CanvasLightOccluderInstance *occluder = canvas_light_occluder_owner.get(p_occluder);
- ERR_FAIL_COND(!occluder);
-
- occluder->xform=p_xform;
-
-}
-
-void VisualServerRaster::canvas_light_occluder_set_light_mask(RID p_occluder,int p_mask) {
-
- Rasterizer::CanvasLightOccluderInstance *occluder = canvas_light_occluder_owner.get(p_occluder);
- ERR_FAIL_COND(!occluder);
-
- occluder->light_mask=p_mask;
-
-}
-
-
-RID VisualServerRaster::canvas_occluder_polygon_create() {
-
- CanvasLightOccluderPolygon * occluder_poly = memnew( CanvasLightOccluderPolygon );
- occluder_poly->occluder=rasterizer->canvas_light_occluder_create();
- return canvas_light_occluder_polygon_owner.make_rid(occluder_poly);
-
-}
-
-void VisualServerRaster::canvas_occluder_polygon_set_shape(RID p_occluder_polygon, const PoolVector<Vector2>& p_shape, bool p_close){
-
- if (p_shape.size()<3) {
- canvas_occluder_polygon_set_shape_as_lines(p_occluder_polygon,p_shape);
- return;
- }
-
- PoolVector<Vector2> lines;
- int lc = p_shape.size()*2;
-
- lines.resize(lc-(p_close?0:2));
- {
- PoolVector<Vector2>::Write w = lines.write();
- PoolVector<Vector2>::Read r = p_shape.read();
-
- int max=lc/2;
- if (!p_close) {
- max--;
- }
- for(int i=0;i<max;i++) {
-
- Vector2 a = r[i];
- Vector2 b = r[(i+1)%(lc/2)];
- w[i*2+0]=a;
- w[i*2+1]=b;
- }
-
- }
-
- canvas_occluder_polygon_set_shape_as_lines(p_occluder_polygon,lines);
-}
-
-void VisualServerRaster::canvas_occluder_polygon_set_shape_as_lines(RID p_occluder_polygon,const PoolVector<Vector2>& p_shape) {
-
- CanvasLightOccluderPolygon * occluder_poly = canvas_light_occluder_polygon_owner.get(p_occluder_polygon);
- ERR_FAIL_COND(!occluder_poly);
- ERR_FAIL_COND(p_shape.size()&1);
-
- int lc = p_shape.size();
- occluder_poly->aabb=Rect2();
- {
- PoolVector<Vector2>::Read r = p_shape.read();
- for(int i=0;i<lc;i++) {
- if (i==0)
- occluder_poly->aabb.pos=r[i];
- else
- occluder_poly->aabb.expand_to(r[i]);
- }
- }
-
- rasterizer->canvas_light_occluder_set_polylines(occluder_poly->occluder,p_shape);
- for( Set<Rasterizer::CanvasLightOccluderInstance*>::Element *E=occluder_poly->owners.front();E;E=E->next()) {
- E->get()->aabb_cache=occluder_poly->aabb;
- }
-}
-
-void VisualServerRaster::canvas_occluder_polygon_set_cull_mode(RID p_occluder_polygon,CanvasOccluderPolygonCullMode p_mode) {
-
- CanvasLightOccluderPolygon * occluder_poly = canvas_light_occluder_polygon_owner.get(p_occluder_polygon);
- ERR_FAIL_COND(!occluder_poly);
- occluder_poly->cull_mode=p_mode;
- for( Set<Rasterizer::CanvasLightOccluderInstance*>::Element *E=occluder_poly->owners.front();E;E=E->next()) {
- E->get()->cull_cache=p_mode;
- }
-
-}
-
-RID VisualServerRaster::canvas_item_material_create() {
-
- Rasterizer::ShaderMaterial *material = memnew( Rasterizer::ShaderMaterial );
- return canvas_item_material_owner.make_rid(material);
-
-}
-
-void VisualServerRaster::canvas_item_material_set_shader(RID p_material, RID p_shader){
-
- VS_CHANGED;
- Rasterizer::ShaderMaterial *material = canvas_item_material_owner.get( p_material );
- ERR_FAIL_COND(!material);
- material->shader=p_shader;
-
-}
-void VisualServerRaster::canvas_item_material_set_shader_param(RID p_material, const StringName& p_param, const Variant& p_value){
-
- VS_CHANGED;
- Rasterizer::ShaderMaterial *material = canvas_item_material_owner.get( p_material );
- ERR_FAIL_COND(!material);
- if (p_value.get_type()==Variant::NIL)
- material->shader_param.erase(p_param);
- else
- material->shader_param[p_param]=p_value;
-
-
-}
-Variant VisualServerRaster::canvas_item_material_get_shader_param(RID p_material, const StringName& p_param) const{
- Rasterizer::ShaderMaterial *material = canvas_item_material_owner.get( p_material );
- ERR_FAIL_COND_V(!material,Variant());
- if (!material->shader_param.has(p_param)) {
- ERR_FAIL_COND_V(!material->shader.is_valid(),Variant());
- return rasterizer->shader_get_default_param(material->shader,p_param);
- }
-
- return material->shader_param[p_param];
-}
-
-void VisualServerRaster::canvas_item_material_set_shading_mode(RID p_material, CanvasItemShadingMode p_mode) {
-
- VS_CHANGED;
- Rasterizer::ShaderMaterial *material = canvas_item_material_owner.get( p_material );
- ERR_FAIL_COND(!material);
- material->shading_mode=p_mode;
-
-}
-
-
-/******** CANVAS *********/
-
-
-void VisualServerRaster::cursor_set_rotation(float p_rotation, int p_cursor) {
- VS_CHANGED;
- ERR_FAIL_INDEX(p_cursor, MAX_CURSORS);
-
- cursors[p_cursor].rot = p_rotation;
-};
-
-void VisualServerRaster::cursor_set_texture(RID p_texture, const Point2 &p_center_offset, int p_cursor, const Rect2 &p_region) {
- VS_CHANGED;
- ERR_FAIL_INDEX(p_cursor, MAX_CURSORS);
-
- cursors[p_cursor].texture = p_texture;
- cursors[p_cursor].center = p_center_offset;
- cursors[p_cursor].region = p_region;
-};
-
-void VisualServerRaster::cursor_set_visible(bool p_visible, int p_cursor) {
- VS_CHANGED;
- ERR_FAIL_INDEX(p_cursor, MAX_CURSORS);
-
- cursors[p_cursor].visible = p_visible;
-};
-
-void VisualServerRaster::cursor_set_pos(const Point2& p_pos, int p_cursor) {
-
- ERR_FAIL_INDEX(p_cursor, MAX_CURSORS);
- if (cursors[p_cursor].pos==p_pos)
- return;
- VS_CHANGED;
- cursors[p_cursor].pos = p_pos;
-};
-
-
-void VisualServerRaster::black_bars_set_margins(int p_left, int p_top, int p_right, int p_bottom) {
-
- black_margin[MARGIN_LEFT]=p_left;
- black_margin[MARGIN_TOP]=p_top;
- black_margin[MARGIN_RIGHT]=p_right;
- black_margin[MARGIN_BOTTOM]=p_bottom;
-}
-
-void VisualServerRaster::black_bars_set_images(RID p_left, RID p_top, RID p_right, RID p_bottom) {
-
- black_image[MARGIN_LEFT]=p_left;
- black_image[MARGIN_TOP]=p_top;
- black_image[MARGIN_RIGHT]=p_right;
- black_image[MARGIN_BOTTOM]=p_bottom;
-}
-
-void VisualServerRaster::_free_attached_instances(RID p_rid,bool p_free_scenario) {
-
- Map< RID, Set<RID> >::Element * E = instance_dependency_map.find( p_rid );
-
- if (E) {
- // has instances
- while( E->get().size() ) {
- // erase all attached instances
- if (p_free_scenario)
- instance_set_scenario( E->get().front()->get(), RID() );
- else
- instance_set_base( E->get().front()->get(), RID() );
-
- }
- }
-
- instance_dependency_map.erase(p_rid);
-
-}
-
-void VisualServerRaster::custom_shade_model_set_shader(int p_model, RID p_shader) {
-
- VS_CHANGED;
- //rasterizer->custom_shade_model_set_shader(p_model,p_shader);
-}
-
-RID VisualServerRaster::custom_shade_model_get_shader(int p_model) const {
-
- //return rasterizer->custom_shade_model_get_shader(p_model);
- return RID();
-
-}
-void VisualServerRaster::custom_shade_model_set_name(int p_model, const String& p_name) {
-
- //rasterizer->custom_shade_model_set_name(p_model,p_name);
-
-}
-String VisualServerRaster::custom_shade_model_get_name(int p_model) const {
-
- //return rasterizer->custom_shade_model_get_name(p_model);
- return "";
-}
-void VisualServerRaster::custom_shade_model_set_param_info(int p_model, const List<PropertyInfo>& p_info) {
-
- VS_CHANGED;
- //rasterizer->custom_shade_model_set_param_info(p_model,p_info);
-}
-void VisualServerRaster::custom_shade_model_get_param_info(int p_model, List<PropertyInfo>* p_info) const {
-
- //rasterizer->custom_shade_model_get_param_info(p_model,p_info);
-}
-
-void VisualServerRaster::free( RID p_rid ) {
-
- VS_CHANGED;
-
- if (rasterizer->is_texture(p_rid) || rasterizer->is_material(p_rid) || rasterizer->is_shader(p_rid) || rasterizer->is_environment(p_rid)) {
-
- rasterizer->free(p_rid);
- } else if (rasterizer->is_skeleton(p_rid)) {
-
- Map< RID, Set<Instance*> >::Element *E=skeleton_dependency_map.find(p_rid);
-
- if (E) {
- //detach skeletons
- for (Set<Instance*>::Element *F=E->get().front();F;F=F->next()) {
-
- F->get()->data.skeleton;
- }
- skeleton_dependency_map.erase(E);
- }
-
- rasterizer->free(p_rid);
- } else if (rasterizer->is_mesh(p_rid) || rasterizer->is_multimesh(p_rid) || rasterizer->is_light(p_rid) || rasterizer->is_particles(p_rid) || rasterizer->is_immediate(p_rid)) {
- //delete the resource
-
- _free_attached_instances(p_rid);
- rasterizer->free(p_rid);
- } else if (room_owner.owns(p_rid)) {
-
- _free_attached_instances(p_rid);
- Room *room = room_owner.get(p_rid);
- ERR_FAIL_COND(!room);
- room_owner.free(p_rid);
- memdelete(room);
-
-
- } else if (portal_owner.owns(p_rid)) {
-
- _free_attached_instances(p_rid);
-
- Portal *portal = portal_owner.get(p_rid);
- ERR_FAIL_COND(!portal);
- portal_owner.free(p_rid);
- memdelete(portal);
-
- } else if (baked_light_owner.owns(p_rid)) {
-
- _free_attached_instances(p_rid);
-
- BakedLight *baked_light = baked_light_owner.get(p_rid);
- ERR_FAIL_COND(!baked_light);
- if (baked_light->data.octree_texture.is_valid())
- rasterizer->free(baked_light->data.octree_texture);
- baked_light_owner.free(p_rid);
- memdelete(baked_light);
-
- } else if (baked_light_sampler_owner.owns(p_rid)) {
-
- _free_attached_instances(p_rid);
-
- BakedLightSampler *baked_light_sampler = baked_light_sampler_owner.get(p_rid);
- ERR_FAIL_COND(!baked_light_sampler);
- /*
- if (baked_light->data.octree_texture.is_valid())
- rasterizer->free(baked_light->data.octree_texture);
- */
- baked_light_sampler_owner.free(p_rid);
- memdelete(baked_light_sampler);
-
- } else if (camera_owner.owns(p_rid)) {
- // delete te camera
-
- Camera *camera = camera_owner.get(p_rid);
- ERR_FAIL_COND(!camera);
-
- camera_owner.free( p_rid );
- memdelete(camera);
-
- } else if (viewport_owner.owns(p_rid)) {
- // delete the viewport
-
- Viewport *viewport = viewport_owner.get( p_rid );
- ERR_FAIL_COND(!viewport);
-
- //Viewport *parent=NULL;
-
- rasterizer->free(viewport->viewport_data);
- if (viewport->render_target.is_valid()) {
-
- rasterizer->free(viewport->render_target);
- }
-
- if (viewport->update_list.in_list())
- viewport_update_list.remove(&viewport->update_list);
- if (screen_viewports.has(p_rid))
- screen_viewports.erase(p_rid);
-
- while(viewport->canvas_map.size()) {
-
- Canvas *c = viewport->canvas_map.front()->get().canvas;
- c->viewports.erase(p_rid);
-
- viewport->canvas_map.erase(viewport->canvas_map.front());
- }
-
-
- viewport_owner.free(p_rid);
- memdelete(viewport);
-
- } else if (instance_owner.owns(p_rid)) {
- // delete the instance
-
- _update_instances(); // be sure
-
- Instance *instance = instance_owner.get(p_rid);
- ERR_FAIL_COND(!instance);
-
- instance_set_room(p_rid,RID());
- instance_set_scenario(p_rid,RID());
- instance_geometry_set_baked_light(p_rid,RID());
- instance_geometry_set_baked_light_sampler(p_rid,RID());
- instance_set_base(p_rid,RID());
-
- if (instance->data.skeleton.is_valid())
- instance_attach_skeleton(p_rid,RID());
-
- instance_owner.free(p_rid);
- memdelete(instance);
-
- } else if (canvas_owner.owns(p_rid)) {
-
- Canvas *canvas = canvas_owner.get(p_rid);
- ERR_FAIL_COND(!canvas);
-
- while(canvas->viewports.size()) {
-
- Viewport *vp = viewport_owner.get(canvas->viewports.front()->get());
- ERR_FAIL_COND(!vp);
-
- Map<RID,Viewport::CanvasData>::Element *E=vp->canvas_map.find(p_rid);
- ERR_FAIL_COND(!E);
- vp->canvas_map.erase(p_rid);
-
- canvas->viewports.erase( canvas->viewports.front() );
- }
-
- for (int i=0;i<canvas->child_items.size();i++) {
-
- canvas->child_items[i].item->parent;
- }
-
- for (Set<Rasterizer::CanvasLight*>::Element *E=canvas->lights.front();E;E=E->next()) {
-
- E->get()->canvas;
- }
-
- for (Set<Rasterizer::CanvasLightOccluderInstance*>::Element *E=canvas->occluders.front();E;E=E->next()) {
-
- E->get()->canvas;
- }
-
- canvas_owner.free( p_rid );
-
- memdelete( canvas );
-
- } else if (canvas_item_owner.owns(p_rid)) {
-
- CanvasItem *canvas_item = canvas_item_owner.get(p_rid);
- ERR_FAIL_COND(!canvas_item);
-
- if (canvas_item->parent.is_valid()) {
-
- if (canvas_owner.owns(canvas_item->parent)) {
-
- Canvas *canvas = canvas_owner.get(canvas_item->parent);
- canvas->erase_item(canvas_item);
- } else if (canvas_item_owner.owns(canvas_item->parent)) {
-
- CanvasItem *item_owner = canvas_item_owner.get(canvas_item->parent);
- item_owner->child_items.erase(canvas_item);
-
- }
- }
-
- for (int i=0;i<canvas_item->child_items.size();i++) {
-
- canvas_item->child_items[i]->parent;
- }
-
- if (canvas_item->material) {
- canvas_item->material->owners.erase(canvas_item);
- }
-
- canvas_item_owner.free( p_rid );
-
- memdelete( canvas_item );
-
- } else if (canvas_item_material_owner.owns(p_rid)) {
-
- Rasterizer::ShaderMaterial *material = canvas_item_material_owner.get(p_rid);
- ERR_FAIL_COND(!material);
- for(Set<Rasterizer::CanvasItem*>::Element *E=material->owners.front();E;E=E->next()) {
-
- E->get()->material=NULL;
- }
-
- canvas_item_material_owner.free(p_rid);
- memdelete(material);
-
- } else if (canvas_light_owner.owns(p_rid)) {
-
- Rasterizer::CanvasLight *canvas_light = canvas_light_owner.get(p_rid);
- ERR_FAIL_COND(!canvas_light);
-
- if (canvas_light->canvas.is_valid()) {
- Canvas* canvas = canvas_owner.get(canvas_light->canvas);
- if (canvas)
- canvas->lights.erase(canvas_light);
- }
-
- if (canvas_light->shadow_buffer.is_valid())
- rasterizer->free(canvas_light->shadow_buffer);
-
- canvas_light_owner.free( p_rid );
- memdelete( canvas_light );
-
- } else if (canvas_light_occluder_owner.owns(p_rid)) {
-
- Rasterizer::CanvasLightOccluderInstance *occluder = canvas_light_occluder_owner.get(p_rid);
- ERR_FAIL_COND(!occluder);
-
- if (occluder->polygon.is_valid()) {
-
- CanvasLightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get(occluder->polygon);
- if (occluder_poly) {
- occluder_poly->owners.erase(occluder);
- }
-
- }
-
- if (occluder->canvas.is_valid() && canvas_owner.owns(occluder->canvas)) {
-
- Canvas *canvas = canvas_owner.get(occluder->canvas);
- canvas->occluders.erase(occluder);
-
- }
-
- canvas_light_occluder_owner.free( p_rid );
- memdelete(occluder);
-
- } else if (canvas_light_occluder_polygon_owner.owns(p_rid)) {
-
- CanvasLightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get(p_rid);
- ERR_FAIL_COND(!occluder_poly);
- rasterizer->free(occluder_poly->occluder);
-
- while(occluder_poly->owners.size()) {
-
- occluder_poly->owners.front()->get()->polygon;
- occluder_poly->owners.erase( occluder_poly->owners.front() );
- }
-
- canvas_light_occluder_polygon_owner.free( p_rid );
- memdelete(occluder_poly);
-
- } else if (scenario_owner.owns(p_rid)) {
-
- Scenario *scenario=scenario_owner.get(p_rid);
- ERR_FAIL_COND(!scenario);
-
- _update_instances(); // be sure
- _free_attached_instances(p_rid,true);
-
- //rasterizer->free( scenario->environment );
- scenario_owner.free(p_rid);
- memdelete(scenario);
-
- } else {
-
- ERR_FAIL();
- }
-
-}
-
-
-
-void VisualServerRaster::_instance_draw(Instance *p_instance) {
-
- if (p_instance->light_cache_dirty) {
- int l=0;
- //add positional lights
- InstanceSet::Element *LE=p_instance->lights.front();
- p_instance->data.light_instances.resize(p_instance->lights.size());
- while(LE) {
-
- p_instance->data.light_instances[l++]=LE->get()->light_info->instance;
- LE=LE->next();
- }
- p_instance->light_cache_dirty=false;
- }
-
-
- switch(p_instance->base_type) {
-
- case INSTANCE_MESH: {
- rasterizer->add_mesh(p_instance->base_rid, &p_instance->data);
- } break;
- case INSTANCE_MULTIMESH: {
- rasterizer->add_multimesh(p_instance->base_rid, &p_instance->data);
- } break;
- case INSTANCE_IMMEDIATE: {
- rasterizer->add_immediate(p_instance->base_rid, &p_instance->data);
- } break;
- case INSTANCE_PARTICLES: {
- rasterizer->add_particles(p_instance->particles_info->instance, &p_instance->data);
- } break;
- default: {};
- }
-}
-
-
-Vector<Vector3> VisualServerRaster::_camera_generate_endpoints(Instance *p_light,Camera *p_camera,float p_range_min, float p_range_max) {
-
- // setup a camera matrix for that range!
- CameraMatrix camera_matrix;
-
- switch(p_camera->type) {
-
- case Camera::ORTHOGONAL: {
-
- camera_matrix.set_orthogonal(p_camera->size,viewport_rect.width / (float)viewport_rect.height,p_range_min,p_range_max,p_camera->vaspect);
- } break;
- case Camera::PERSPECTIVE: {
-
- camera_matrix.set_perspective(
- p_camera->fov,
- viewport_rect.width / (float)viewport_rect.height,
- p_range_min,
- p_range_max,
- p_camera->vaspect
- );
-
- } break;
- }
-
- //obtain the frustum endpoints
-
- Vector<Vector3> endpoints;
- endpoints.resize(8);
- bool res = camera_matrix.get_endpoints(p_camera->transform,&endpoints[0]);
- ERR_FAIL_COND_V(!res,Vector<Vector3>());
-
- return endpoints;
-}
-
-Vector<Plane> VisualServerRaster::_camera_generate_orthogonal_planes(Instance *p_light,Camera *p_camera,float p_range_min, float p_range_max) {
-
- Vector<Vector3> endpoints=_camera_generate_endpoints(p_light,p_camera,p_range_min,p_range_max); // frustum plane endpoints
- ERR_FAIL_COND_V(endpoints.empty(),Vector<Plane>());
-
- // obtain the light frustm ranges (given endpoints)
-
- Vector3 x_vec=p_light->data.transform.basis.get_axis( Vector3::AXIS_X ).normalized();
- Vector3 y_vec=p_light->data.transform.basis.get_axis( Vector3::AXIS_Y ).normalized();
- Vector3 z_vec=p_light->data.transform.basis.get_axis( Vector3::AXIS_Z ).normalized();
-
- float x_min,x_max;
- float y_min,y_max;
- float z_min,z_max;
-
- for(int j=0;j<8;j++) {
-
- float d_x=x_vec.dot(endpoints[j]);
- float d_y=y_vec.dot(endpoints[j]);
- float d_z=z_vec.dot(endpoints[j]);
-
- if (j==0 || d_x<x_min)
- x_min=d_x;
- if (j==0 || d_x>x_max)
- x_max=d_x;
-
- if (j==0 || d_y<y_min)
- y_min=d_y;
- if (j==0 || d_y>y_max)
- y_max=d_y;
-
- if (j==0 || d_z<z_min)
- z_min=d_z;
- if (j==0 || d_z>z_max)
- z_max=d_z;
-
-
- }
- //now that we now all ranges, we can proceed to make the light frustum planes, for culling octree
-
- Vector<Plane> light_frustum_planes;
- light_frustum_planes.resize(6);
-
- //right/left
- light_frustum_planes[0]=Plane( x_vec, x_max );
- light_frustum_planes[1]=Plane( -x_vec, -x_min );
- //top/bottom
- light_frustum_planes[2]=Plane( y_vec, y_max );
- light_frustum_planes[3]=Plane( -y_vec, -y_min );
- //near/far
- light_frustum_planes[4]=Plane( z_vec, z_max+1e6 );
- light_frustum_planes[5]=Plane( -z_vec, -z_min ); // z_min is ok, since casters further than far-light plane are not needed
-
- //TODO@ add more actual frustum planes to minimize get
-
- return light_frustum_planes;
-
-}
-void VisualServerRaster::_light_instance_update_pssm_shadow(Instance *p_light,Scenario *p_scenario,Camera *p_camera,const CullRange& p_cull_range) {
-
- int splits = rasterizer->light_instance_get_shadow_passes( p_light->light_info->instance );
-
- float split_weight=rasterizer->light_directional_get_shadow_param(p_light->base_rid,LIGHT_DIRECTIONAL_SHADOW_PARAM_PSSM_SPLIT_WEIGHT);
-
-
- float distances[5];
- float texsize=rasterizer->light_instance_get_shadow_size( p_light->light_info->instance );
-
- //float cull_min=p_cull_range.min;
- //float cull_max=p_cull_range.max;
-
-
- bool overlap = rasterizer->light_instance_get_pssm_shadow_overlap(p_light->light_info->instance);
-
- float cull_min=p_camera->znear;
- float cull_max=p_camera->zfar;
- float max_dist = rasterizer->light_directional_get_shadow_param(p_light->base_rid,VS::LIGHT_DIRECTIONAL_SHADOW_PARAM_MAX_DISTANCE);
- if (max_dist>0.0)
- cull_max=MIN(cull_max,max_dist);
-
- for(int i = 0; i < splits; i++) {
- float idm = i / (float)splits;
- float lg = cull_min * Math::pow(cull_max/cull_min, idm);
- float uniform = cull_min + (cull_max - cull_min) * idm;
- distances[i] = lg * split_weight + uniform * (1.0 - split_weight);
-
- }
-
- distances[0]=cull_min;
- distances[splits]=cull_max;
-
- for (int i=0;i<splits;i++) {
-
- // setup a camera matrix for that range!
- CameraMatrix camera_matrix;
-
- switch(p_camera->type) {
-
- case Camera::ORTHOGONAL: {
-
- camera_matrix.set_orthogonal(
- p_camera->size,
- viewport_rect.width / (float)viewport_rect.height,
- distances[(i==0 || !overlap )?i:i-1],
- distances[i+1],
- p_camera->vaspect
-
- );
- } break;
- case Camera::PERSPECTIVE: {
-
-
- camera_matrix.set_perspective(
- p_camera->fov,
- viewport_rect.width / (float)viewport_rect.height,
- distances[(i==0 || !overlap )?i:i-1],
- distances[i+1],
- p_camera->vaspect
-
- );
-
- } break;
- }
-
- //obtain the frustum endpoints
-
- Vector3 endpoints[8]; // frustum plane endpoints
- bool res = camera_matrix.get_endpoints(p_camera->transform,endpoints);
- ERR_CONTINUE(!res);
-
- // obtain the light frustm ranges (given endpoints)
-
- Vector3 x_vec=p_light->data.transform.basis.get_axis( Vector3::AXIS_X ).normalized();
- Vector3 y_vec=p_light->data.transform.basis.get_axis( Vector3::AXIS_Y ).normalized();
- Vector3 z_vec=p_light->data.transform.basis.get_axis( Vector3::AXIS_Z ).normalized();
- //z_vec points agsint the camera, like in default opengl
-
- float x_min,x_max;
- float y_min,y_max;
- float z_min,z_max;
-
- float x_min_cam,x_max_cam;
- float y_min_cam,y_max_cam;
- float z_min_cam,z_max_cam;
-
-
- //used for culling
- for(int j=0;j<8;j++) {
-
- float d_x=x_vec.dot(endpoints[j]);
- float d_y=y_vec.dot(endpoints[j]);
- float d_z=z_vec.dot(endpoints[j]);
-
- if (j==0 || d_x<x_min)
- x_min=d_x;
- if (j==0 || d_x>x_max)
- x_max=d_x;
-
- if (j==0 || d_y<y_min)
- y_min=d_y;
- if (j==0 || d_y>y_max)
- y_max=d_y;
-
- if (j==0 || d_z<z_min)
- z_min=d_z;
- if (j==0 || d_z>z_max)
- z_max=d_z;
-
-
- }
-
-
-
-
-
- {
- //camera viewport stuff
- //this trick here is what stabilizes the shadow (make potential jaggies to not move)
- //at the cost of some wasted resolution. Still the quality increase is very well worth it
-
-
- Vector3 center;
-
- for(int j=0;j<8;j++) {
-
- center+=endpoints[j];
- }
- center/=8.0;
-
- //center=x_vec*(x_max-x_min)*0.5 + y_vec*(y_max-y_min)*0.5 + z_vec*(z_max-z_min)*0.5;
-
- float radius=0;
-
- for(int j=0;j<8;j++) {
-
- float d = center.distance_to(endpoints[j]);
- if (d>radius)
- radius=d;
- }
-
-
- radius *= texsize/(texsize-2.0); //add a texel by each side, so stepified texture will always fit
-
- x_max_cam=x_vec.dot(center)+radius;
- x_min_cam=x_vec.dot(center)-radius;
- y_max_cam=y_vec.dot(center)+radius;
- y_min_cam=y_vec.dot(center)-radius;
- z_max_cam=z_vec.dot(center)+radius;
- z_min_cam=z_vec.dot(center)-radius;
-
- float unit = radius*2.0/texsize;
-
- x_max_cam=Math::stepify(x_max_cam,unit);
- x_min_cam=Math::stepify(x_min_cam,unit);
- y_max_cam=Math::stepify(y_max_cam,unit);
- y_min_cam=Math::stepify(y_min_cam,unit);
-
- }
-
- //now that we now all ranges, we can proceed to make the light frustum planes, for culling octree
-
- Vector<Plane> light_frustum_planes;
- light_frustum_planes.resize(6);
-
- //right/left
- light_frustum_planes[0]=Plane( x_vec, x_max );
- light_frustum_planes[1]=Plane( -x_vec, -x_min );
- //top/bottom
- light_frustum_planes[2]=Plane( y_vec, y_max );
- light_frustum_planes[3]=Plane( -y_vec, -y_min );
- //near/far
- light_frustum_planes[4]=Plane( z_vec, z_max+1e6 );
- light_frustum_planes[5]=Plane( -z_vec, -z_min ); // z_min is ok, since casters further than far-light plane are not needed
-
- int caster_cull_count = p_scenario->octree.cull_convex(light_frustum_planes,instance_shadow_cull_result,MAX_INSTANCE_CULL,INSTANCE_GEOMETRY_MASK);
-
- // a pre pass will need to be needed to determine the actual z-near to be used
- for(int j=0;j<caster_cull_count;j++) {
-
- float min,max;
- Instance *ins=instance_shadow_cull_result[j];
- if (!ins->visible || ins->data.cast_shadows == VS::SHADOW_CASTING_SETTING_OFF)
- continue;
- ins->transformed_aabb.project_range_in_plane(Plane(z_vec,0),min,max);
-
- if (max>z_max)
- z_max=max;
- }
-
- {
- CameraMatrix ortho_camera;
- real_t half_x = (x_max_cam-x_min_cam) * 0.5;
- real_t half_y = (y_max_cam-y_min_cam) * 0.5;
-
-
- ortho_camera.set_orthogonal( -half_x, half_x,-half_y,half_y, 0, (z_max-z_min_cam) );
-
- Transform ortho_transform;
- ortho_transform.basis=p_light->data.transform.basis;
- ortho_transform.origin=x_vec*(x_min_cam+half_x)+y_vec*(y_min_cam+half_y)+z_vec*z_max;
-
- rasterizer->light_instance_set_shadow_transform(p_light->light_info->instance, i, ortho_camera, ortho_transform,distances[i],distances[i+1] );
- }
-
- rasterizer->begin_shadow_map( p_light->light_info->instance, i );
-
- for (int j=0;j<caster_cull_count;j++) {
-
- Instance *instance = instance_shadow_cull_result[j];
- if (!instance->visible || instance->data.cast_shadows==VS::SHADOW_CASTING_SETTING_OFF)
- continue;
- _instance_draw(instance);
- }
-
- rasterizer->end_shadow_map();
-
-
- }
-
-
-}
-
-
-CameraMatrix _lispm_look( const Vector3 pos, const Vector3 dir, const Vector3 up) {
-
- Vector3 dirN;
- Vector3 upN;
- Vector3 lftN;
-
- lftN=dir.cross(up);
- lftN.normalize();
-
- upN=lftN.cross(dir);
- upN.normalize();
- dirN=dir.normalized();
-
- CameraMatrix cmout;
- float *output=&cmout.matrix[0][0];
- output[ 0] = lftN[0];
- output[ 1] = upN[0];
- output[ 2] = -dirN[0];
- output[ 3] = 0.0;
-
- output[ 4] = lftN[1];
- output[ 5] = upN[1];
- output[ 6] = -dirN[1];
- output[ 7] = 0.0;
-
- output[ 8] = lftN[2];
- output[ 9] = upN[2];
- output[10] = -dirN[2];
- output[11] = 0.0;
-
- output[12] = -lftN.dot(pos);
- output[13] = -upN.dot(pos);
- output[14] = dirN.dot(pos);
- output[15] = 1.0;
-
- return cmout;
-}
-
-#if 1
-
-void VisualServerRaster::_light_instance_update_lispsm_shadow(Instance *p_light,Scenario *p_scenario,Camera *p_camera,const CullRange& p_cull_range) {
-
- Vector3 light_vec = -p_light->data.transform.basis.get_axis(2);
- Vector3 view_vec = -p_camera->transform.basis.get_axis(2);
-
- float near_dist=1;
-
- Vector<Plane> light_frustum_planes = _camera_generate_orthogonal_planes(p_light,p_camera,p_cull_range.min,p_cull_range.max);
- int caster_count = p_scenario->octree.cull_convex(light_frustum_planes,instance_shadow_cull_result,MAX_INSTANCE_CULL,INSTANCE_GEOMETRY_MASK);
-
- // this could be faster by just getting supports from the AABBs..
- // but, safer to do as the original implementation explains for now..
-
- Vector<Vector3> caster_pointcloud;
- caster_pointcloud.resize(caster_count*8);
- int caster_pointcloud_size=0;
-
- {
-
- //fill pointcloud
- Vector3* caster_pointcloud_ptr=&caster_pointcloud[0];
-
- for(int i=0;i<caster_count;i++) {
-
- Instance *ins = instance_shadow_cull_result[i];
- if (!ins->visible || ins->data.cast_shadows == VS::SHADOW_CASTING_SETTING_OFF)
- continue;
-
- for(int j=0;j<8;j++) {
-
- Vector3 v = ins->aabb.get_endpoint(j);
- v = ins->data.transform.xform(v);
- caster_pointcloud_ptr[caster_pointcloud_size+j]=v;
- }
-
- caster_pointcloud_size+=8;
-
- }
- }
-
- // now generate a pointcloud that contains the maximum bound (camera extruded by light)
-
- Vector<Vector3> camera_pointcloud = _camera_generate_endpoints(p_light,p_camera,p_cull_range.min,p_cull_range.max);
- int cpcsize=camera_pointcloud.size();
- camera_pointcloud.resize( cpcsize*2 );
-
- for(int i=0;i<cpcsize;i++) {
-
- camera_pointcloud[i+cpcsize]=camera_pointcloud[i]-light_vec*1000;
- }
-
-
-
- // Vector<Vector3> frustum_points=_camera_generate_endpoints(p_light,p_camera,p_cull_range.min,p_cull_range.max);
-
-
- // compute the "light-space" basis, using the algorithm described in the paper
- // note: since bodyB is defined in eye space, all of these vectors should also be defined in eye space
-
-
- Vector3 eye = p_camera->transform.origin;
- Vector3 up = light_vec.cross(view_vec).cross(light_vec).normalized();
-
-
- CameraMatrix light_space_basis = _lispm_look(eye,light_vec,up);
-
- AABB light_space_aabb;
-
-
- { //create an optimal AABB from both the camera pointcloud and the objects pointcloud
- AABB light_space_pointcloud_aabb;
- AABB light_space_camera_aabb;
- //xform pointcloud
- const Vector3* caster_pointcloud_ptr=&caster_pointcloud[0];
-
- for(int i=0;i<caster_pointcloud_size;i++) {
-
- Vector3 p = light_space_basis.xform(caster_pointcloud_ptr[i]);
- if (i==0) {
- light_space_pointcloud_aabb.pos=p;
- } else {
- light_space_pointcloud_aabb.expand_to(p);
- }
- }
- for(int i=0;i<camera_pointcloud.size();i++) {
-
- Vector3 p = light_space_basis.xform(camera_pointcloud[i]);
- if (i==0) {
- light_space_camera_aabb.pos=p;
- } else {
- light_space_camera_aabb.expand_to(p);
- }
- }
-
- light_space_aabb=light_space_pointcloud_aabb.intersection(light_space_camera_aabb);
- }
-
- float lvdp = light_vec.dot(view_vec);
-
- float sin_gamma = Math::sqrt(1.0-lvdp*lvdp);
- //use the formulas of the paper to get n (and f)
- float factor = 1.0/sin_gamma;
- float z_n = factor*near_dist; //often 1
- float d = Math::abs(light_space_aabb.size.y); //perspective transform depth //light space y extents
- float z_f = z_n + d*sin_gamma;
- float n = (z_n+Math::sqrt(z_f*z_n))/sin_gamma;
- float f = n+d;
-
- Vector3 pos = eye - up*(n-near_dist);
-
- CameraMatrix light_space_basis2 = _lispm_look(pos,light_vec,up);
- //Transform light_space_basis2;
- //light_space_basis2.set_look_at(pos,light_vec-pos,up);
- //light_space_basis2.affine_invert();
-
- //one possibility for a simple perspective transformation matrix
- //with the two parameters n(near) and f(far) in y direction
-
- CameraMatrix lisp_matrix;
- lisp_matrix.matrix[1][1]=(f+n)/(f-n);
- lisp_matrix.matrix[3][1]=-2*f*n/(f-n);
- lisp_matrix.matrix[1][3]=1;
- lisp_matrix.matrix[3][3]=0;
-
- CameraMatrix projection = lisp_matrix * light_space_basis2;
- //CameraMatrix projection = light_space_basis2 * lisp_matrix;
-
-
- AABB proj_space_aabb;
-
- {
-
- AABB proj_space_pointcloud_aabb;
- AABB proj_space_camera_aabb;
- //xform pointcloud
- Vector3* caster_pointcloud_ptr=&caster_pointcloud[0];
- for(int i=0;i<caster_pointcloud_size;i++) {
-
- Vector3 p = projection.xform(caster_pointcloud_ptr[i]);
- if (i==0) {
- proj_space_pointcloud_aabb.pos=p;
- } else {
- proj_space_pointcloud_aabb.expand_to(p);
- }
- }
-
- for(int i=0;i<camera_pointcloud.size();i++) {
-
- Vector3 p = projection.xform(camera_pointcloud[i]);
- if (i==0) {
- proj_space_camera_aabb.pos=p;
- } else {
- proj_space_camera_aabb.expand_to(p);
- }
- }
-
- //proj_space_aabb=proj_space_pointcloud_aabb.intersection_with(proj_space_camera_aabb);
- proj_space_aabb=proj_space_pointcloud_aabb;
- }
-
- projection.scale_translate_to_fit(proj_space_aabb);
- projection=projection * lisp_matrix;
-
- CameraMatrix scale;
- scale.make_scale(Vector3(1.0,1.0,-1.0)); // transform to left handed
-
- projection=scale * projection;
-
- rasterizer->light_instance_set_shadow_transform(p_light->light_info->instance,0, projection , light_space_basis2.inverse() );
-
- rasterizer->begin_shadow_map( p_light->light_info->instance, 0 );
-
- for(int i=0;i<caster_count;i++) {
-
- Instance *instance = instance_shadow_cull_result[i];
-
- if (!instance->visible || instance->data.cast_shadows == VS::SHADOW_CASTING_SETTING_OFF)
- continue;
- _instance_draw(instance);
- }
-
- rasterizer->end_shadow_map();
-
-
-}
-
-#else
-
-
-void VisualServerRaster::_light_instance_update_lispsm_shadow(Instance *p_light,Scenario *p_scenario,Camera *p_camera,const CullRange& p_cull_range) {
-
- /* STEP 1: GENERATE LIGHT TRANSFORM */
-
-
-
- Vector3 light_vec = -p_light->data.transform.basis.get_axis(2);
- Vector3 view_vec = -p_camera->transform.basis.get_axis(2);
- float viewdot = Math::absf(light_vec.dot(view_vec));
-
- Vector3 up = light_vec.cross(view_vec).cross(light_vec).normalized();
-
- Transform light_transform;
- light_transform.set_look_at(Vector3(),light_vec,up);
-
-
- /* STEP 2: GENERATE WORDLSPACE PLANES AND VECTORS*/
- float range_min=0.01; //p_cull_range.min
- float range_max=20;//p_cull_range.max;
-
- Vector<Vector3> camera_endpoints=_camera_generate_endpoints(p_light,p_camera,range_min,range_max); // frustum plane endpoints
- ERR_FAIL_COND(camera_endpoints.empty());
-
- // obtain the light frustm ranges (given endpoints)
-
-
- Vector3 light_x_vec=light_transform.basis.get_axis( Vector3::AXIS_X ).normalized();
- Vector3 light_y_vec=light_transform.basis.get_axis( Vector3::AXIS_Y ).normalized();
- Vector3 light_z_vec=light_transform.basis.get_axis( Vector3::AXIS_Z ).normalized();
-
- Vector3 light_axis_max;
- Vector3 light_axis_min;
-
- for(int j=0;j<8;j++) {
-
- float d_x=light_x_vec.dot(camera_endpoints[j]);
- float d_y=light_y_vec.dot(camera_endpoints[j]);
- float d_z=light_z_vec.dot(camera_endpoints[j]);
-
- if (j==0 || d_x<light_axis_min.x)
- light_axis_min.x=d_x;
- if (j==0 || d_x>light_axis_max.x)
- light_axis_max.x=d_x;
-
- if (j==0 || d_y<light_axis_min.y)
- light_axis_min.y=d_y;
- if (j==0 || d_y>light_axis_max.y)
- light_axis_max.y=d_y;
-
- if (j==0 || d_z<light_axis_min.z)
- light_axis_min.z=d_z;
- if (j==0 || d_z>light_axis_max.z)
- light_axis_max.z=d_z;
-
-
- }
-
- //now that we now all ranges, we can proceed to make the light frustum planes, for culling octree
-
- Vector<Plane> light_cull_planes;
- light_cull_planes.resize(6);
-
-
- //right/left
- light_cull_planes[0]=Plane( light_x_vec, light_axis_max.x );
- light_cull_planes[1]=Plane( -light_x_vec, -light_axis_min.x );
- //top/bottom
- light_cull_planes[2]=Plane( light_y_vec, light_axis_max.y );
- light_cull_planes[3]=Plane( -light_y_vec, -light_axis_min.y );
- //near/far
- light_cull_planes[4]=Plane( light_z_vec, light_axis_max.z+1e6 );
- light_cull_planes[5]=Plane( -light_z_vec, -light_axis_min.z ); // z_min is ok, since casters further than far-light plane are not needed
-
-
- /* STEP 3: CULL CASTERS */
-
- int caster_count = p_scenario->octree.cull_convex(light_cull_planes,instance_shadow_cull_result,MAX_INSTANCE_CULL,INSTANCE_GEOMETRY_MASK);
-
- /* STEP 4: ADJUST FAR Z PLANE */
-
- float caster_max_z=1e-1;
- for(int i=0;i<caster_count;i++) {
-
- Instance *ins=instance_shadow_cull_result[i];
- if (!ins->visible || ins->cast_shadows==VS::SHADOW_CASTING_SETTING_OFF)
- continue;
-
- //@TODO optimize using support mapping
- for(int j=0;j<8;j++) {
-
- Vector3 v=ins->data.transform.xform(ins->aabb.get_endpoint(j));
- float d = light_z_vec.dot(v);
- if (d>caster_max_z)
- caster_max_z=d;
-
- }
-
- }
-
- float expand = caster_max_z-light_axis_max.z;
- if (expand<0)
- expand=0;
- light_axis_max.z=MAX(caster_max_z,light_axis_max.z);
-
- /* STEP 5: CREATE ORTHOGONAL PROJECTION */
-
- CameraMatrix light_projection;
-
- real_t half_x = (light_axis_max.x-light_axis_min.x) * 0.5;
- real_t half_y = (light_axis_max.y-light_axis_min.y) * 0.5;
- light_projection.set_orthogonal( -half_x, half_x,half_y, -half_y, 0, (light_axis_max.z-light_axis_min.z) );
- light_transform.origin=light_x_vec*(light_axis_min.x+half_x)+light_y_vec*(light_axis_min.y+half_y)+light_z_vec*light_axis_max.z;
-
-
- if (/*false &&*/ viewdot<0.96) {
-
- float lvdp = light_vec.dot(view_vec);
-
- float near_dist=1.0;
- float sin_gamma = Math::sqrt(1.0-lvdp*lvdp);
- //use the formulas of the paper to get n (and f)
- float factor = 1.0/sin_gamma;
- float z_n = factor*near_dist; //often 1
- float d = Math::abs(light_axis_max.y-light_axis_min.y); //perspective transform depth //light space y extents
- float z_f = z_n + d*sin_gamma;
- float n = (z_n+Math::sqrt(z_f*z_n))/sin_gamma;
- float f = n+d;
-
- CameraMatrix lisp_matrix;
- lisp_matrix.matrix[1][1]=(f+n)/(f-n);
- lisp_matrix.matrix[3][1]=-2*f*n/(f-n);
- lisp_matrix.matrix[1][3]=1;
- lisp_matrix.matrix[3][3]=0;
-
- Vector3 pos = p_camera->transform.origin - up*(n-near_dist);
-
- CameraMatrix world2light = _lispm_look(pos,light_vec,up);
- CameraMatrix projection = lisp_matrix * world2light;
-
- AABB projection_bounds;
- for(int i=0;i<camera_endpoints.size();i++) {
-
- Vector3 p=camera_endpoints[i];
- if (i==0)
- projection_bounds.pos=projection.xform(p);
- else
- projection_bounds.expand_to(projection.xform(p));
-
- projection_bounds.expand_to(projection.xform(p+light_vec*-expand));
- }
-
- CameraMatrix scaletrans;
- scaletrans.scale_translate_to_fit(projection_bounds);
- projection=scaletrans * lisp_matrix;
-
- CameraMatrix scale;
- scale.make_scale(Vector3(1.0,1.0,-1.0)); // transform to left handed
-
- projection=scale * projection;
-
-
- rasterizer->light_instance_set_shadow_transform(p_light->light_info->instance,0, projection, world2light.inverse(), viewdot);
-
- } else {
- //orthogonal
- rasterizer->light_instance_set_shadow_transform(p_light->light_info->instance,0, light_projection , light_transform, viewdot);
- }
-
- rasterizer->begin_shadow_map( p_light->light_info->instance, 0 );
-
- for(int i=0;i<caster_count;i++) {
-
- Instance *instance = instance_shadow_cull_result[i];
-
- if (!instance->visible || instance->cast_shadows==VS::SHADOW_CASTING_SETTING_OFF)
- continue;
- _instance_draw(instance);
- }
-
- rasterizer->end_shadow_map();
-
-}
-
-#endif
-
-
-void VisualServerRaster::_light_instance_update_shadow(Instance *p_light,Scenario *p_scenario,Camera *p_camera,const CullRange& p_cull_range) {
-
-
-
- if (!rasterizer->shadow_allocate_near( p_light->light_info->instance ))
- return; // shadow could not be updated
-
-
- /* VisualServerRaster supports for many shadow techniques, using the one the rasterizer requests */
-
- Rasterizer::ShadowType shadow_type = rasterizer->light_instance_get_shadow_type(p_light->light_info->instance);
-
- switch(shadow_type) {
-
- case Rasterizer::SHADOW_SIMPLE: {
- /* SPOT SHADOW */
-
-
- rasterizer->begin_shadow_map( p_light->light_info->instance, 0 );
-
- //using this one ensures that raster deferred will have it
-
- float far = rasterizer->light_get_var( p_light->base_rid, VS::LIGHT_PARAM_RADIUS);
-
- float angle = rasterizer->light_get_var( p_light->base_rid, VS::LIGHT_PARAM_SPOT_ANGLE );
-
- CameraMatrix cm;
- cm.set_perspective( angle*2.0, 1.0, 0.001, far );
-
- Vector<Plane> planes = cm.get_projection_planes(p_light->data.transform);
- int cull_count = p_scenario->octree.cull_convex(planes,instance_shadow_cull_result,MAX_INSTANCE_CULL,INSTANCE_GEOMETRY_MASK);
-
-
- for (int i=0;i<cull_count;i++) {
-
- Instance *instance = instance_shadow_cull_result[i];
- if (!instance->visible || instance->data.cast_shadows == VS::SHADOW_CASTING_SETTING_OFF)
- continue;
- _instance_draw(instance);
- }
-
- rasterizer->end_shadow_map();
-
- } break;
- case Rasterizer::SHADOW_DUAL_PARABOLOID: {
-
- /* OMNI SHADOW */
-
- int passes = rasterizer->light_instance_get_shadow_passes( p_light->light_info->instance );
-
- if (passes==2) {
-
- for(int i=0;i<2;i++) {
-
- rasterizer->begin_shadow_map( p_light->light_info->instance, i );
-
-
- //using this one ensures that raster deferred will have it
-
- float radius = rasterizer->light_get_var( p_light->base_rid, VS::LIGHT_PARAM_RADIUS);
-
- float z =i==0?-1:1;
- Vector<Plane> planes;
- planes.resize(5);
- planes[0]=p_light->data.transform.xform(Plane(Vector3(0,0,z),radius));
- planes[1]=p_light->data.transform.xform(Plane(Vector3(1,0,z).normalized(),radius));
- planes[2]=p_light->data.transform.xform(Plane(Vector3(-1,0,z).normalized(),radius));
- planes[3]=p_light->data.transform.xform(Plane(Vector3(0,1,z).normalized(),radius));
- planes[4]=p_light->data.transform.xform(Plane(Vector3(0,-1,z).normalized(),radius));
-
-
- int cull_count = p_scenario->octree.cull_convex(planes,instance_shadow_cull_result,MAX_INSTANCE_CULL,INSTANCE_GEOMETRY_MASK);
-
-
- for (int j=0;j<cull_count;j++) {
-
- Instance *instance = instance_shadow_cull_result[j];
- if (!instance->visible || instance->data.cast_shadows == VS::SHADOW_CASTING_SETTING_OFF)
- continue;
-
- _instance_draw(instance);
- }
-
- rasterizer->end_shadow_map();
- }
- } else if (passes==1) {
- //one go
-
-
-
- }
-
- } break;
- case Rasterizer::SHADOW_CUBE: {
-
- // todo
- } break;
- case Rasterizer::SHADOW_ORTHOGONAL: {
-
- _light_instance_update_pssm_shadow(p_light,p_scenario,p_camera,p_cull_range);
- } break;
- case Rasterizer::SHADOW_PSSM: {
-
- _light_instance_update_pssm_shadow(p_light,p_scenario,p_camera,p_cull_range);
- } break;
- case Rasterizer::SHADOW_PSM: {
-
- _light_instance_update_lispsm_shadow(p_light,p_scenario,p_camera,p_cull_range);
- // todo
- } break;
- default: {}
- }
-
-}
-
-void VisualServerRaster::_portal_disconnect(Instance *p_portal,bool p_cleanup) {
-
- if (p_portal->portal_info->connected) {
-
- //disconnect first
- p_portal->portal_info->connected->portal_info->connected=NULL;
- p_portal->portal_info->connected=NULL;
-
- }
-
- if (p_portal->room && p_portal->room->room) {
-
- if (p_cleanup) {
-
- p_portal->room->room->room_info->disconnected_child_portals.erase(p_portal);
- //p_portal->room->room->room_info->disconnected_child_portals.erase(p_portal);
- } else {
- p_portal->room->room->room_info->disconnected_child_portals.insert(p_portal);
- }
- }
-
-}
-
-void VisualServerRaster::_instance_validate_autorooms(Instance *p_geometry) {
-
- if (p_geometry->auto_rooms.size()==0)
- return;
-
- p_geometry->valid_auto_rooms.clear();
-
- int point_count = aabb_random_points.size();
- const Vector3 * src_points = &aabb_random_points[0];
-
- for(Set<Instance*>::Element *E=p_geometry->valid_auto_rooms.front();E;E=E->next()) {
-
- Instance *room = E->get();
- Vector3 *dst_points=&transformed_aabb_random_points[0];
-
- //generate points
- for(int i=0;i<point_count;i++) {
-
- dst_points[i] = room->room_info->affine_inverse.xform(p_geometry->data.transform.xform((src_points[i]*p_geometry->transformed_aabb.size)+p_geometry->transformed_aabb.pos));
- }
-
- int pass = room->room_info->room->bounds.get_points_inside(dst_points,point_count);
-
- float ratio = pass;
- if( point_count != 0 ) {
- ratio /= (float)point_count;
- }
-
- if (ratio>0.5) // should make some constant
- p_geometry->valid_auto_rooms.insert(room);
- }
-}
-
-void VisualServerRaster::_portal_attempt_connect(Instance *p_portal) {
-
-
- _portal_disconnect(p_portal);
-
- Vector3 A_norm = p_portal->data.transform.basis.get_axis(Vector3::AXIS_Z).normalized();
- Plane A_plane( p_portal->data.transform.origin, A_norm );
- float A_surface = p_portal->portal_info->portal->bounds.get_area();
- if (A_surface==0)
- return; //wtf
-
- Instance *found=NULL;
- Transform affine_inverse = p_portal->data.transform.affine_inverse();
-
- for(Set<Instance*>::Element *E=p_portal->portal_info->candidate_set.front();E;E=E->next()) {
-
- Instance *B = E->get();
-
- if (B->portal_info->connected)
- continue; // in use
-
- Vector3 B_norm = B->data.transform.basis.get_axis(Vector3::AXIS_Z).normalized();
-
- // check that they are in front of another
- float dot = A_norm.dot(-B_norm);
-
- if (dot<0.707) // 45 degrees, TODO unharcode this
- continue;
-
- // check the max distance to the other portal
-
- bool valid=true;
-
- Rect2 local_bounds;
-
- for(int i=0;i<B->portal_info->portal->shape.size();i++) {
-
- Point2 point2 = B->portal_info->portal->shape[i];
-
- Vector3 point = B->data.transform.xform( Vector3( point2.x, point2.y, 0 ) );
-
- float dist = Math::abs(A_plane.distance_to(point));
-
- if (
- dist>p_portal->portal_info->portal->connect_range ||
- dist>B->portal_info->portal->connect_range ) {
- valid=false;
- break;
- }
-
-
- Vector3 point_local = affine_inverse.xform(A_plane.project(point));
- point2 = Point2(point_local.x,point_local.y);
-
- if (i==0)
- local_bounds.pos=point2;
- else
- local_bounds.expand_to(point2);
-
-
- }
-
- if (!valid)
- continue;
-
- float B_surface = B->portal_info->portal->bounds.get_area();
- if (B_surface==0)
- continue; //wtf
-
- float clip_area = p_portal->portal_info->portal->bounds.clip(local_bounds).get_area();
-
-
- //check that most of the area is shared
-
- if ( (clip_area/A_surface) < 0.5 || (clip_area/B_surface) < 0.5) // TODO change for something else
- continue;
-
- found=B;
- break;
-
-
-
- }
-
-
- if (!found) {
-
- if (p_portal->room && p_portal->room->room) {
-
- p_portal->room->room->room_info->disconnected_child_portals.insert(p_portal);
- }
-
- return;
- }
-
- p_portal->portal_info->connected=found;
- found->portal_info->connected=p_portal;
-
-
-}
-
-void* VisualServerRaster::instance_pair(void *p_self, OctreeElementID, Instance *p_A,int, OctreeElementID, Instance *p_B,int) {
-
- VisualServerRaster *self = (VisualServerRaster*)p_self;
- Instance *A = p_A;
- Instance *B = p_B;
-
- if (A->base_type==INSTANCE_PORTAL) {
-
- ERR_FAIL_COND_V( B->base_type!=INSTANCE_PORTAL,NULL );
-
- A->portal_info->candidate_set.insert(B);
- B->portal_info->candidate_set.insert(A);
-
- self->_portal_attempt_connect(A);
- //attempt to conncet portal A (will go through B anyway)
- //this is a little hackish, but works fine in practice
-
- } else if (A->base_type==INSTANCE_BAKED_LIGHT || B->base_type==INSTANCE_BAKED_LIGHT) {
-
- if (B->base_type==INSTANCE_BAKED_LIGHT) {
- SWAP(A,B);
- }
-
- ERR_FAIL_COND_V(B->base_type!=INSTANCE_BAKED_LIGHT_SAMPLER,NULL);
- B->baked_light_sampler_info->baked_lights.insert(A);
-
- } else if (A->base_type==INSTANCE_ROOM || B->base_type==INSTANCE_ROOM) {
-
- if (B->base_type==INSTANCE_ROOM)
- SWAP(A,B);
-
- ERR_FAIL_COND_V(! ((1<<B->base_type)&INSTANCE_GEOMETRY_MASK ),NULL);
-
- B->auto_rooms.insert(A);
- A->room_info->owned_autoroom_geometry.insert(B);
-
- self->_instance_validate_autorooms(B);
-
-
- } else {
-
- if (B->base_type==INSTANCE_LIGHT) {
-
- SWAP(A,B);
- } else if (A->base_type!=INSTANCE_LIGHT) {
- return NULL;
- }
-
-
- A->light_info->affected.insert(B);
- B->lights.insert(A);
- B->light_cache_dirty=true;
- }
-
- return NULL;
-
-}
-void VisualServerRaster::instance_unpair(void *p_self, OctreeElementID, Instance *p_A,int, OctreeElementID, Instance *p_B,int,void*) {
-
- VisualServerRaster *self = (VisualServerRaster*)p_self;
- Instance *A = p_A;
- Instance *B = p_B;
-
- if (A->base_type==INSTANCE_PORTAL) {
-
- ERR_FAIL_COND( B->base_type!=INSTANCE_PORTAL );
-
-
- A->portal_info->candidate_set.erase(B);
- B->portal_info->candidate_set.erase(A);
-
- //after disconnecting them, see if they can connect again
- self->_portal_attempt_connect(A);
- self->_portal_attempt_connect(B);
-
- } else if (A->base_type==INSTANCE_BAKED_LIGHT || B->base_type==INSTANCE_BAKED_LIGHT) {
-
- if (B->base_type==INSTANCE_BAKED_LIGHT) {
- SWAP(A,B);
- }
-
- ERR_FAIL_COND(B->base_type!=INSTANCE_BAKED_LIGHT_SAMPLER);
- B->baked_light_sampler_info->baked_lights.erase(A);
-
- } else if (A->base_type==INSTANCE_ROOM || B->base_type==INSTANCE_ROOM) {
-
- if (B->base_type==INSTANCE_ROOM)
- SWAP(A,B);
-
- ERR_FAIL_COND(! ((1<<B->base_type)&INSTANCE_GEOMETRY_MASK ));
-
- B->auto_rooms.erase(A);
- B->valid_auto_rooms.erase(A);
- A->room_info->owned_autoroom_geometry.erase(B);
-
- }else {
-
-
- if (B->base_type==INSTANCE_LIGHT) {
-
- SWAP(A,B);
- } else if (A->base_type!=INSTANCE_LIGHT) {
- return;
- }
-
-
- A->light_info->affected.erase(B);
- B->lights.erase(A);
- B->light_cache_dirty=true;
- }
-}
-
-bool VisualServerRaster::_test_portal_cull(Camera *p_camera, Instance *p_from_portal, Instance *p_to_portal) {
-
-
- int src_point_count=p_from_portal->portal_info->transformed_point_cache.size();
- int dst_point_count=p_to_portal->portal_info->transformed_point_cache.size();
-
- if (src_point_count<2 || dst_point_count<2)
- return false;
-
- const Vector3 *src_points=&p_from_portal->portal_info->transformed_point_cache[0];
- const Vector3 *dst_points=&p_to_portal->portal_info->transformed_point_cache[0];
-
- bool outside=false;
-
- bool clockwise = !p_from_portal->portal_info->plane_cache.is_point_over(p_camera->transform.origin);
-
- for(int i=0;i<src_point_count;i++) {
-
- const Vector3& point_prev = src_points[i?(i-1):(src_point_count-1)];
- const Vector3& point = src_points[i];
-
- Plane p = clockwise?Plane(p_camera->transform.origin,point,point_prev):Plane(p_camera->transform.origin,point_prev,point);
-
- bool all_over=true;
-
- for(int j=0;j<dst_point_count;j++) {
-
- if (!p.is_point_over(dst_points[j])) {
-
- all_over=false;
- break;
- }
-
- }
-
- if (all_over) {
- outside=true;
- break;
- }
-
- }
-
- return !outside;
-
-}
-
-void VisualServerRaster::_cull_portal(Camera *p_camera, Instance *p_portal,Instance *p_from_portal) {
-
- ERR_FAIL_COND(!p_portal->scenario); //scenario outside
-
- Instance *portal = p_portal;
-
- if (!portal->room) {
-
- return; //portals need all to belong to a room, it may be unconfigured yet
- } else if (portal->last_render_pass!=render_pass) {
-
- return; //invalid portal, ignore
- } else if (portal->portal_info->last_visited_pass==render_pass) {
-
- return; //portal already visited
- } else if (portal==p_from_portal) {
-
- return; // came from this portal, don't even bother testing
- }
-
- /* TEST DISABLE DISTANCE */
-
- float disable_distance = p_portal->portal_info->portal->disable_distance;
- if (disable_distance) {
- //has disable distance..
- float distance = p_camera->transform.origin.distance_to(portal->data.transform.origin);
- if (disable_distance < distance) {
-
- return;
- }
- }
-
- /* TEST PORTAL NOT FACING OPTIMIZATION */
-
-
- if (p_portal->portal_info->connected) {
- //connected portal means, it must face against the camera to be seen
- if (p_portal->portal_info->plane_cache.is_point_over(p_camera->transform.origin)) { //portal facing against camera (exterior)
-
- return;
- }
- } else {
- //disconencted portals (go from room to parent room or exterior) must face towards the canera
- if (!p_portal->portal_info->plane_cache.is_point_over(p_camera->transform.origin)) { //portal facing against camera (exterior)
-
- return;
- }
- }
-
- if (p_from_portal && !_test_portal_cull(p_camera, p_from_portal, portal)) {
- return; // portal not visible (culled)
- }
-
- portal->portal_info->last_visited_pass=render_pass;
-
- if (portal->portal_info->connected) {
-
- //interior<->interior portal
- Instance *to_room = portal->portal_info->connected->room;
- if (!to_room) {
- return; //wtf.. oh well, connected to a roomless (invalid) portal
- }
-
- _cull_room(p_camera, to_room, portal->portal_info->connected);
-
- } else {
- //to exterior/to parent roomportal
-
- Instance *parent_room = portal->room->room;
-
- _cull_room(p_camera, parent_room, portal);
- }
-
-}
-
-void VisualServerRaster::_cull_room(Camera *p_camera, Instance *p_room,Instance *p_from_portal) {
-
- if (p_room==NULL) {
- //exterior
- exterior_visited=true;
-
- for(int i=0;i<exterior_portal_cull_count;i++) {
-
- _cull_portal(p_camera, exterior_portal_cull_result[i],p_from_portal);
- }
-
- } else {
-
- ERR_FAIL_COND(!p_room->scenario);
-
- if (p_room->last_render_pass!=render_pass)
- return; //this room is invalid
-
- //interior
- //first of all, validate the room
- p_room->room_info->last_visited_pass=render_pass;
- //see about going around portals
- if (!p_room->room_info->room->occlude_exterior)
- exterior_visited=true;
-
- for(List<Instance*>::Element * E=p_room->room_info->owned_portal_instances.front();E;E=E->next()) {
-
- _cull_portal(p_camera, E->get(),p_from_portal);
-
- }
-
- for(Set<Instance*>::Element * E=p_room->room_info->disconnected_child_portals.front();E;E=E->next()) {
-
- _cull_portal(p_camera, E->get(),p_from_portal);
-
- }
-
-
- }
-
-}
-
-void VisualServerRaster::_process_sampled_light(const Transform& p_camera,Instance *p_sampled_light,bool p_linear_colorspace) {
-
-
- BakedLightSampler *sampler_opts = p_sampled_light->baked_light_sampler_info->sampler;
- int res = sampler_opts->resolution;
- int dp_size = res*res*2;
- Color * dp_map = (Color*)alloca( sizeof(Color)*dp_size); //allocate the dual parabolloid colors
- Vector3 * dp_normals = (Vector3*)alloca( sizeof(Vector3)*dp_size); //allocate the dual parabolloid normals
- const Vector3 * dp_src_normals = p_sampled_light->baked_light_sampler_info->sampler->dp_cache.ptr();
-
-
- if (!p_sampled_light->baked_light_sampler_info->sampled_light.is_valid() || p_sampled_light->baked_light_sampler_info->resolution!=sampler_opts->resolution) {
- if (p_sampled_light->baked_light_sampler_info->sampled_light.is_valid()) {
- rasterizer->free(p_sampled_light->baked_light_sampler_info->sampled_light);
- }
-
- p_sampled_light->baked_light_sampler_info->resolution=sampler_opts->resolution;
- p_sampled_light->baked_light_sampler_info->sampled_light=rasterizer->sampled_light_dp_create(sampler_opts->resolution,sampler_opts->resolution*2);
-
-
- }
-
-
- zeromem(dp_map,sizeof(Color)*dp_size);
- bool valid=false;
- int samples=0;
-
-
- for(Set<Instance*>::Element *E=p_sampled_light->baked_light_sampler_info->baked_lights.front();E;E=E->next()) {
-
- Instance *bl = E->get();
- if (bl->baked_light_info->baked_light->sampler.size()==0)
- continue; //not usable
-
-
- Matrix3 norm_xform = bl->baked_light_info->affine_inverse.basis;//.inverse();
- for(int i=0;i<dp_size;i++) {
- dp_normals[i]=norm_xform.xform(dp_src_normals[i]).normalized();
- }
-
- //normals in place
-
-
- //sample octree
-
- float r = sampler_opts->params[VS::BAKED_LIGHT_SAMPLER_RADIUS];
- float att = sampler_opts->params[VS::BAKED_LIGHT_SAMPLER_ATTENUATION];
- float str = sampler_opts->params[VS::BAKED_LIGHT_SAMPLER_STRENGTH];
- Vector3 s = p_sampled_light->data.transform.basis.get_scale();
-
- r*=MAX(MAX(s.x,s.y),s.z);
- AABB sample_aabb= bl->data.transform.affine_inverse().xform(AABB(Vector3(-r,-r,-r)+p_sampled_light->data.transform.origin,Vector3(r*2,r*2,r*2)));
- //ok got octree local AABB
-
- PoolVector<int>::Read rp = bl->baked_light_info->baked_light->sampler.read();
- const int *rptr = rp.ptr();
-
- int first = rptr[1];
- int depth = rptr[2];
- bool islinear = rptr[3]&1;
- depth+=1;
-
- AABB aabb;
- aabb.pos.x=decode_float((const uint8_t*)&rptr[4]);
- aabb.pos.y=decode_float((const uint8_t*)&rptr[5]);
- aabb.pos.z=decode_float((const uint8_t*)&rptr[6]);
- aabb.size.x=decode_float((const uint8_t*)&rptr[7]);
- aabb.size.y=decode_float((const uint8_t*)&rptr[8]);
- aabb.size.z=decode_float((const uint8_t*)&rptr[9]);
-
- uint32_t *stack=(uint32_t*)alloca(depth*sizeof(uint32_t));
- int *stack_ptr=(int*)alloca(depth*sizeof(int));
- AABB *aabb_stack=(AABB*)alloca(depth*sizeof(AABB));
-
- stack[0]=0;
- stack_ptr[0]=first;
- aabb_stack[0]=aabb;
- Vector3 center = sample_aabb.pos + sample_aabb.size * 0.5;
-
-
- int stack_pos=0;
- Color max_col;
-
- //int reso = sampler_opts->params[VS::BAKED_LIGHT_SAMPLER_DETAIL_RATIO];
-
- int lalimit = sample_aabb.get_longest_axis_index();
- float limit = sampler_opts->params[VS::BAKED_LIGHT_SAMPLER_DETAIL_RATIO]*sample_aabb.size[lalimit];
-
-
- while(true) {
-
-
- bool leaf = (rptr[ stack_ptr[stack_pos] ]>>16)==0;
-
- if (aabb_stack[stack_pos].size[lalimit]<limit) {
- leaf=true;
- }
-
-
- if (leaf) {
-
- Vector3 from = aabb_stack[stack_pos].pos + aabb_stack[stack_pos].size * 0.5;
- Vector3 norm = (from-center).normalized();
-
-
- Color col;
- col.r = ((rptr[ stack_ptr[stack_pos] ]&0xFFFF)/256.0);
- col.g = ((rptr[ stack_ptr[stack_pos]+1 ]>>16)/256.0);
- col.b = ((rptr[ stack_ptr[stack_pos]+1 ]&0xFFFF)/256.0);
-
-
- max_col.r = MAX(max_col.r,col.r);
- max_col.g = MAX(max_col.g,col.g);
- max_col.b = MAX(max_col.b,col.b);
-
- if (!islinear && p_linear_colorspace) {
- col=col.to_linear();
- }
-
- float distance;
-
- if (aabb_stack[stack_pos].has_point(center)) {
- distance=0;
- } else {
-
- Vector3 support = aabb_stack[stack_pos].get_support(norm);
- distance = Math::absf(norm.dot(support)-norm.dot(center));
-
- }
-
- if (distance>r)
- distance=r;
-
- float mult = Math::pow(1.0-distance/r,att)*str;
- if (mult>0) {
- col.r*=mult;
- col.g*=mult;
- col.b*=mult;
-
-
-
- for(int i=0;i<dp_size;i++) {
- float mult2 = norm.dot(dp_normals[i]);
- if (mult2<0)
- mult2=0;
- Color col2(col.r*mult2,col.g*mult2,col.b*mult2,1.0);
- dp_map[i].r=MAX(dp_map[i].r,col2.r);
- dp_map[i].g=MAX(dp_map[i].g,col2.g);
- dp_map[i].b=MAX(dp_map[i].b,col2.b);
- }
-
- }
-
- samples++;
- //nothing is valid unless you hit a leaf
- valid=true;
- stack_pos--;
- } else if ((stack[stack_pos]&0xFF)<8) {
-
- int i = stack[stack_pos]&0xFF;
- int base = (stack[stack_pos]>>8);
-
- if (!((rptr[ stack_ptr[stack_pos] ]>>16)&(1<<i))) {
- //no bit, no test
- stack[stack_pos]=(base<<8)+(i+1);
- continue;
- }
-
- stack[stack_pos]=((base+1)<<8)+(i+1);
-
- AABB child_aabb = aabb_stack[stack_pos];
- child_aabb.size*=0.5;
- if (i&1)
- child_aabb.pos.x+=child_aabb.size.x;
- if (i&2)
- child_aabb.pos.y+=child_aabb.size.y;
- if (i&4)
- child_aabb.pos.z+=child_aabb.size.z;
-
- if (!child_aabb.intersects(sample_aabb)) {
- continue;
- }
-
- if (child_aabb.encloses(sample_aabb)) {
- stack[stack_pos]=(base<<8)|8; //don't test the rest
- }
-
- stack_pos++;
- ERR_FAIL_COND(stack_pos>=depth);
-
- stack[stack_pos]=0;
- stack_ptr[stack_pos]=rptr[ stack_ptr[stack_pos-1]+2+base ];
- aabb_stack[stack_pos]=child_aabb;
- } else {
- stack_pos--;
- if (stack_pos<0)
- break;
- }
- }
-
-
- }
-
- //print_line("samples "+itos(samples) );
-
- if (valid) {
-
- for(int i=0;i<res;i++) {
- //average seams to avoid aliasing
- {
- //top
- int ofs1 = i;
- int ofs2 = dp_size-res+i;
- Color avg(
- (dp_map[ofs1].r+dp_map[ofs2].r)*0.5,
- (dp_map[ofs1].g+dp_map[ofs2].g)*0.5,
- (dp_map[ofs1].b+dp_map[ofs2].b)*0.5,
- 1.0
- );
- dp_map[ofs1]=avg;
- dp_map[ofs2]=avg;
- }
- {
- //bottom
- int ofs1 = res*res-res+i;
- int ofs2 = res*res+i;
- Color avg(
- (dp_map[ofs1].r+dp_map[ofs2].r)*0.5,
- (dp_map[ofs1].g+dp_map[ofs2].g)*0.5,
- (dp_map[ofs1].b+dp_map[ofs2].b)*0.5,
- 1.0
- );
- dp_map[ofs1]=avg;
- dp_map[ofs2]=avg;
- }
- {
- //left
- int ofs1 = i*res;
- int ofs2 = res*res+(res-i-1)*res;
- Color avg(
- (dp_map[ofs1].r+dp_map[ofs2].r)*0.5,
- (dp_map[ofs1].g+dp_map[ofs2].g)*0.5,
- (dp_map[ofs1].b+dp_map[ofs2].b)*0.5,
- 1.0
- );
- dp_map[ofs1]=avg;
- dp_map[ofs2]=avg;
- }
- {
- //right
- int ofs1 = i*res+(res-1);
- int ofs2 = res*res+(res-i-1)*res+(res-1);
- Color avg(
- (dp_map[ofs1].r+dp_map[ofs2].r)*0.5,
- (dp_map[ofs1].g+dp_map[ofs2].g)*0.5,
- (dp_map[ofs1].b+dp_map[ofs2].b)*0.5,
- 1.0
- );
- dp_map[ofs1]=avg;
- dp_map[ofs2]=avg;
- }
-
- }
-
- rasterizer->sampled_light_dp_update(p_sampled_light->baked_light_sampler_info->sampled_light,dp_map,1.0);
- for(Set<Instance*>::Element *F=p_sampled_light->baked_light_sampler_info->owned_instances.front();F;F=F->next()) {
-
- F->get()->data.sampled_light=p_sampled_light->baked_light_sampler_info->sampled_light;
- }
-
-
- } else {
-
- for(Set<Instance*>::Element *F=p_sampled_light->baked_light_sampler_info->owned_instances.front();F;F=F->next()) {
-
- F->get()->data.sampled_light; //do not use because nothing close
- }
- }
-
-
-
-
-/*
- highp vec3 vtx = vertex_interp;
- vtx.z*=dual_paraboloid.y; //side to affect
- vtx.z+=0.01;
- dp_clip=vtx.z;
- highp float len=length( vtx );
- vtx=normalize(vtx);
- vtx.xy/=1.0+vtx.z;
- vtx.z = len*dual_paraboloid.x; // it's a reciprocal(len - z_near) / (z_far - z_near);
- vtx+=normalize(vtx)*0.025;
- vtx.z = vtx.z * 2.0 - 1.0; // fit to clipspace
- vertex_interp=vtx;
-*/
-
-
-
-
-}
-
-
-void VisualServerRaster::_render_no_camera(Viewport *p_viewport,Camera *p_camera, Scenario *p_scenario) {
- RID environment;
- if (p_scenario->environment.is_valid())
- environment=p_scenario->environment;
- else
- environment=p_scenario->fallback_environment;
-
- rasterizer->set_camera(Transform(),CameraMatrix(),false);
- rasterizer->begin_scene(p_viewport->viewport_data,environment,p_scenario->debug);
- rasterizer->set_viewport(viewport_rect);
- rasterizer->end_scene();
-}
-
-
-void VisualServerRaster::_render_camera(Viewport *p_viewport,Camera *p_camera, Scenario *p_scenario) {
-
-
- render_pass++;
- uint32_t camera_layer_mask=p_camera->visible_layers;
-
- /* STEP 1 - SETUP CAMERA */
- CameraMatrix camera_matrix;
- bool ortho=false;
-
- switch(p_camera->type) {
- case Camera::ORTHOGONAL: {
-
- camera_matrix.set_orthogonal(
- p_camera->size,
- viewport_rect.width / (float)viewport_rect.height,
- p_camera->znear,
- p_camera->zfar,
- p_camera->vaspect
-
- );
- ortho=true;
- } break;
- case Camera::PERSPECTIVE: {
-
- camera_matrix.set_perspective(
- p_camera->fov,
- viewport_rect.width / (float)viewport_rect.height,
- p_camera->znear,
- p_camera->zfar,
- p_camera->vaspect
-
- );
- ortho=false;
-
- } break;
- }
-
-
- rasterizer->set_camera(p_camera->transform, camera_matrix,ortho);
-
- Vector<Plane> planes = camera_matrix.get_projection_planes(p_camera->transform);
-
- CullRange cull_range; // cull range is used for PSSM, and having an idea of the rendering depth
- cull_range.nearp=Plane(p_camera->transform.origin,-p_camera->transform.basis.get_axis(2).normalized());
- cull_range.z_near=camera_matrix.get_z_near();
- cull_range.z_far=camera_matrix.get_z_far();
- cull_range.min=cull_range.z_far;
- cull_range.max=cull_range.z_near;
-
- /* STEP 2 - CULL */
- int cull_count = p_scenario->octree.cull_convex(planes,instance_cull_result,MAX_INSTANCE_CULL);
- light_cull_count=0;
- light_samplers_culled=0;
-
-/* print_line("OT: "+rtos( (OS::get_singleton()->get_ticks_usec()-t)/1000.0));
- print_line("OTO: "+itos(p_scenario->octree.get_octant_count()));
- //print_line("OTE: "+itos(p_scenario->octree.get_elem_count()));
- print_line("OTP: "+itos(p_scenario->octree.get_pair_count()));
-*/
-
- /* STEP 3 - PROCESS PORTALS, VALIDATE ROOMS */
-
-
- // compute portals
-
- exterior_visited=false;
- exterior_portal_cull_count=0;
-
- if (room_cull_enabled) {
- for(int i=0;i<cull_count;i++) {
-
- Instance *ins = instance_cull_result[i];
- ins->last_render_pass=render_pass;
-
- if (ins->base_type!=INSTANCE_PORTAL)
- continue;
-
- if (ins->room)
- continue;
-
- ERR_CONTINUE(exterior_portal_cull_count>=MAX_EXTERIOR_PORTALS);
- exterior_portal_cull_result[exterior_portal_cull_count++]=ins;
-
- }
-
- room_cull_count = p_scenario->octree.cull_point(p_camera->transform.origin,room_cull_result,MAX_ROOM_CULL,NULL,(1<<INSTANCE_ROOM)|(1<<INSTANCE_PORTAL));
-
-
- Set<Instance*> current_rooms;
- Set<Instance*> portal_rooms;
- //add to set
- for(int i=0;i<room_cull_count;i++) {
-
- if (room_cull_result[i]->base_type==INSTANCE_ROOM) {
- current_rooms.insert(room_cull_result[i]);
- }
- if (room_cull_result[i]->base_type==INSTANCE_PORTAL) {
- //assume inside that room if also inside the portal..
- if (room_cull_result[i]->room) {
- portal_rooms.insert(room_cull_result[i]->room);
- }
-
- SWAP(room_cull_result[i],room_cull_result[room_cull_count-1]);
- room_cull_count--;
- i--;
- }
- }
-
- //remove from set if it has a parent room or BSP doesn't contain
- for(int i=0;i<room_cull_count;i++) {
- Instance *r = room_cull_result[i];
-
- //check inside BSP
- Vector3 room_local_point = r->room_info->affine_inverse.xform( p_camera->transform.origin );
-
- if (!portal_rooms.has(r) && !r->room_info->room->bounds.point_is_inside(room_local_point)) {
-
- current_rooms.erase(r);
- continue;
- }
-
- //check parent
- while (r->room) {// has parent room
-
- current_rooms.erase(r);
- r=r->room;
- }
-
- }
-
- if (current_rooms.size()) {
- //camera is inside a room
- // go through rooms
- for(Set<Instance*>::Element *E=current_rooms.front();E;E=E->next()) {
- _cull_room(p_camera,E->get());
- }
-
- } else {
- //start from exterior
- _cull_room(p_camera,NULL);
-
- }
- }
-
- /* STEP 4 - REMOVE FURTHER CULLED OBJECTS, ADD LIGHTS */
-
- for(int i=0;i<cull_count;i++) {
-
- Instance *ins = instance_cull_result[i];
-
- bool keep=false;
-
-
- if ((camera_layer_mask&ins->layer_mask)==0) {
-
- //failure
- } else if (ins->base_type==INSTANCE_LIGHT) {
-
- if (light_cull_count<MAX_LIGHTS_CULLED) {
- light_cull_result[light_cull_count++]=ins;
- //rasterizer->light_instance_set_active_hint(ins->light_info->instance);
- {
- //compute distance to camera using aabb support
- Vector3 n = ins->data.transform.basis.xform_inv(cull_range.nearp.normal).normalized();
- Vector3 s = ins->data.transform.xform(ins->aabb.get_support(n));
- ins->light_info->dtc=cull_range.nearp.distance_to(s);
- }
- }
-
- } else if ((1<<ins->base_type)&INSTANCE_GEOMETRY_MASK && ins->visible && ins->data.cast_shadows!=VS::SHADOW_CASTING_SETTING_SHADOWS_ONLY) {
-
-
- bool discarded=false;
-
- if (ins->draw_range_end>0) {
-
- float d = cull_range.nearp.distance_to(ins->data.transform.origin);
- if (d<0)
- d=0;
- discarded=(d<ins->draw_range_begin || d>=ins->draw_range_end);
-
-
- }
-
- if (!discarded) {
-
- // test if this geometry should be visible
-
- if (room_cull_enabled) {
-
-
- if (ins->visible_in_all_rooms) {
- keep=true;
- } else if (ins->room) {
-
- if (ins->room->room_info->last_visited_pass==render_pass)
- keep=true;
- } else if (ins->auto_rooms.size()) {
-
-
- for(Set<Instance*>::Element *E=ins->auto_rooms.front();E;E=E->next()) {
-
- if (E->get()->room_info->last_visited_pass==render_pass) {
- keep=true;
- break;
- }
- }
- } else if(exterior_visited)
- keep=true;
- } else {
-
- keep=true;
- }
-
-
- }
-
-
- if (keep) {
- // update cull range
- float min,max;
- ins->transformed_aabb.project_range_in_plane(cull_range.nearp,min,max);
-
- if (min<cull_range.min)
- cull_range.min=min;
- if (max>cull_range.max)
- cull_range.max=max;
-
- if (ins->sampled_light && ins->sampled_light->baked_light_sampler_info->last_pass!=render_pass) {
- if (light_samplers_culled<MAX_LIGHT_SAMPLERS) {
- light_sampler_cull_result[light_samplers_culled++]=ins->sampled_light;
- ins->sampled_light->baked_light_sampler_info->last_pass=render_pass;
- }
- }
- }
-
- }
-
- if (!keep) {
- // remove, no reason to keep
- cull_count--;
- SWAP( instance_cull_result[i], instance_cull_result[ cull_count ] );
- i--;
- ins->last_render_pass=0; // make invalid
- } else {
-
- ins->last_render_pass=render_pass;
- }
- }
-
- if (cull_range.max > cull_range.z_far )
- cull_range.max=cull_range.z_far;
- if (cull_range.min < cull_range.z_near )
- cull_range.min=cull_range.z_near;
-
- /* STEP 5 - PROCESS LIGHTS */
-
- rasterizer->shadow_clear_near(); //clear near shadows, will be recreated
-
- // directional lights
- {
- List<RID>::Element *E=p_scenario->directional_lights.front();
-
-
- while(E) {
-
- Instance *light = E->get().is_valid()?instance_owner.get(E->get()):NULL;
-
- if (light && light->light_info->enabled && rasterizer->light_has_shadow(light->base_rid)) {
- //rasterizer->light_instance_set_active_hint(light->light_info->instance);
- _light_instance_update_shadow(light,p_scenario,p_camera,cull_range);
- }
-
- E=E->next();
- }
- }
-
-
- //discard lights not affecting anything (useful for deferred rendering, shadowmaps, etc)
-
- for (int i=0;i<light_cull_count;i++) {
-
- Instance *ins = light_cull_result[i];
-
- if (light_discard_enabled) {
-
- //see if the light should be pre discarded because no one is seeing it
- //this test may seem expensive, but in reality, it shouldn't be
- //because of early out condition. It will only go through everything
- //if it's being discarded.
-
- bool valid=false;
- InstanceSet::Element *E =ins->light_info->affected.front();
- while(E) {
-
- if (E->get()->last_render_pass==render_pass) {
-
- valid=true; // early out.
- break;
- }
- E=E->next();
- }
- if (!valid) {
-
- light_cull_count--;
- SWAP( light_cull_result[i], light_cull_result[ light_cull_count ] );
- i--;
-
- }
- }
-
- }
-
- { //this should eventually change to
- //assign shadows by distance to camera
- SortArray<Instance*,_InstanceLightsort> sorter;
- sorter.sort(light_cull_result,light_cull_count);
- for (int i=0;i<light_cull_count;i++) {
-
- Instance *ins = light_cull_result[i];
-
- if (!rasterizer->light_has_shadow(ins->base_rid) || !shadows_enabled)
- continue;
-
- /* for far shadows?
- if (ins->version == ins->light_info->last_version && rasterizer->light_instance_has_far_shadow(ins->light_info->instance))
- continue; // didn't change
- */
-
- _light_instance_update_shadow(ins,p_scenario,p_camera,cull_range);
- ins->light_info->last_version=ins->version;
- }
- }
-
- /* ENVIRONMENT */
-
- RID environment;
- if (p_camera->env.is_valid()) //camera has more environment priority
- environment=p_camera->env;
- else if (p_scenario->environment.is_valid())
- environment=p_scenario->environment;
- else
- environment=p_scenario->fallback_environment;
-
-
- /* STEP 6 - SAMPLE BAKED LIGHT */
-
- bool islinear =false;
- if (environment.is_valid()) {
- islinear = rasterizer->environment_is_fx_enabled(environment,VS::ENV_FX_SRGB);
- }
-
- for(int i=0;i<light_samplers_culled;i++) {
-
- _process_sampled_light(p_camera->transform,light_sampler_cull_result[i],islinear);
- }
-
- /* STEP 7 - PROCESS GEOMETRY AND DRAW SCENE*/
-
-
- rasterizer->begin_scene(p_viewport->viewport_data,environment,p_scenario->debug);
- rasterizer->set_viewport(viewport_rect);
-
- // add lights
-
- {
- List<RID>::Element *E=p_scenario->directional_lights.front();
-
-
- for(;E;E=E->next()) {
- Instance *light = E->get().is_valid()?instance_owner.get(E->get()):NULL;
-
- ERR_CONTINUE(!light);
- if (!light->light_info->enabled)
- continue;
-
- rasterizer->add_light(light->light_info->instance);
- light->light_info->last_add_pass=render_pass;
- }
-
- for (int i=0;i<light_cull_count;i++) {
-
- Instance *ins = light_cull_result[i];
- rasterizer->add_light(ins->light_info->instance);
- ins->light_info->last_add_pass=render_pass;
- }
- }
- // add geometry
-
- for(int i=0;i<cull_count;i++) {
-
- Instance *ins = instance_cull_result[i];
-
- ERR_CONTINUE(!((1<<ins->base_type)&INSTANCE_GEOMETRY_MASK));
-
- _instance_draw(ins);
- }
-
- rasterizer->end_scene();
-}
-
-
-void VisualServerRaster::_render_canvas_item_tree(CanvasItem *p_canvas_item, const Matrix32& p_transform, const Rect2& p_clip_rect, const Color& p_modulate, Rasterizer::CanvasLight *p_lights) {
-
-
- static const int z_range = CANVAS_ITEM_Z_MAX-CANVAS_ITEM_Z_MIN+1;
- Rasterizer::CanvasItem *z_list[z_range];
- Rasterizer::CanvasItem *z_last_list[z_range];
-
- for(int i=0;i<z_range;i++) {
- z_list[i]=NULL;
- z_last_list[i]=NULL;
- }
-
-
- _render_canvas_item(p_canvas_item,p_transform,p_clip_rect,1.0,0,z_list,z_last_list,NULL,NULL);
-
- for(int i=0;i<z_range;i++) {
- if (!z_list[i])
- continue;
- rasterizer->canvas_render_items(z_list[i],CANVAS_ITEM_Z_MIN+i,p_modulate,p_lights);
- }
-
-}
-
-
-void VisualServerRaster::_render_canvas_item_viewport(VisualServer* p_self,void *p_vp,const Rect2& p_rect) {
-
- VisualServerRaster *self=(VisualServerRaster*)(p_self);
- Viewport *vp=(Viewport*)p_vp;
- self->_draw_viewport(vp,p_rect.pos.x,p_rect.pos.y,p_rect.size.x,p_rect.size.y);
- self->rasterizer->canvas_begin();
-
-}
-
-
-void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Matrix32& p_transform,const Rect2& p_clip_rect, float p_opacity,int p_z,Rasterizer::CanvasItem **z_list,Rasterizer::CanvasItem **z_last_list,CanvasItem *p_canvas_clip,CanvasItem *p_material_owner) {
-
- CanvasItem *ci = p_canvas_item;
-
- if (!ci->visible)
- return;
-
- if (p_opacity<0.007)
- return;
-
-
- Rect2 rect = ci->get_rect();
- Matrix32 xform = p_transform * ci->xform;
- Rect2 global_rect = xform.xform(rect);
- global_rect.pos+=p_clip_rect.pos;
-
-
- if (global_rect.intersects(p_clip_rect) && ci->viewport.is_valid() && viewport_owner.owns(ci->viewport)) {
-
- Viewport *vp = viewport_owner.get(ci->viewport);
-
- Point2i from = xform.get_origin() + Point2(viewport_rect.x,viewport_rect.y);
- Point2i size = rect.size;
- size.x *= xform[0].length();
- size.y *= xform[1].length();
-
- ci->vp_render = memnew( Rasterizer::CanvasItem::ViewportRender );
- ci->vp_render->owner=this;
- ci->vp_render->udata=vp;
- ci->vp_render->rect=Rect2(from.x,
- from.y,
- size.x,
- size.y);
-/*
- _draw_viewport(vp,
- from.x,
- from.y,
- size.x,
- size.y);
-*/
- //rasterizer->canvas_begin();
- } else {
- ci->vp_render=NULL;
- }
-
- if (ci->use_parent_material && p_material_owner)
- ci->material_owner=p_material_owner;
- else {
- p_material_owner=ci;
- ci->material_owner=NULL;
- }
-
-
- float opacity = ci->opacity * p_opacity;
-
-
- int child_item_count=ci->child_items.size();
- CanvasItem **child_items=(CanvasItem**)alloca(child_item_count*sizeof(CanvasItem*));
- copymem(child_items,ci->child_items.ptr(),child_item_count*sizeof(CanvasItem*));
-
- if (ci->clip) {
- if (p_canvas_clip != NULL) {
- ci->final_clip_rect=p_canvas_clip->final_clip_rect.clip(global_rect);
- } else {
- ci->final_clip_rect=global_rect;
- }
- ci->final_clip_owner=ci;
-
- } else {
- ci->final_clip_owner=p_canvas_clip;
- }
-
- if (ci->sort_y) {
-
- SortArray<CanvasItem*,CanvasItemPtrSort> sorter;
- sorter.sort(child_items,child_item_count);
- }
-
- if (ci->z_relative)
- p_z=CLAMP(p_z+ci->z,CANVAS_ITEM_Z_MIN,CANVAS_ITEM_Z_MAX);
- else
- p_z=ci->z;
-
- for(int i=0;i<child_item_count;i++) {
-
- if (child_items[i]->ontop)
- continue;
- _render_canvas_item(child_items[i],xform,p_clip_rect,opacity,p_z,z_list,z_last_list,(CanvasItem*)ci->final_clip_owner,p_material_owner);
- }
-
- if (ci->copy_back_buffer) {
-
- ci->copy_back_buffer->screen_rect = xform.xform(ci->copy_back_buffer->rect).clip(p_clip_rect);
- }
-
- if ((!ci->commands.empty() && p_clip_rect.intersects(global_rect)) || ci->vp_render || ci->copy_back_buffer) {
- //something to draw?
- ci->final_transform=xform;
- ci->final_opacity=opacity * ci->self_opacity;
- ci->global_rect_cache=global_rect;
- ci->global_rect_cache.pos-=p_clip_rect.pos;
- ci->light_masked=false;
-
- int zidx = p_z-CANVAS_ITEM_Z_MIN;
-
- if (z_last_list[zidx]) {
- z_last_list[zidx]->next=ci;
- z_last_list[zidx]=ci;
-
- } else {
- z_list[zidx]=ci;
- z_last_list[zidx]=ci;
- }
-
-
-
- ci->next=NULL;
-
- }
-
- for(int i=0;i<child_item_count;i++) {
-
- if (!child_items[i]->ontop)
- continue;
- _render_canvas_item(child_items[i],xform,p_clip_rect,opacity,p_z,z_list,z_last_list,(CanvasItem*)ci->final_clip_owner,p_material_owner);
- }
-
-}
-
-void VisualServerRaster::_light_mask_canvas_items(int p_z,Rasterizer::CanvasItem *p_canvas_item,Rasterizer::CanvasLight *p_masked_lights) {
-
- if (!p_masked_lights)
- return;
-
- Rasterizer::CanvasItem *ci=p_canvas_item;
-
- while(ci) {
-
- Rasterizer::CanvasLight *light=p_masked_lights;
- while(light) {
-
- if (ci->light_mask&light->item_mask && p_z>=light->z_min && p_z<=light->z_max && ci->global_rect_cache.intersects_transformed(light->xform_cache,light->rect_cache)) {
- ci->light_masked=true;
- }
-
- light=light->mask_next_ptr;
- }
-
- ci=ci->next;
- }
-
-
-
-
-}
-
-void VisualServerRaster::_render_canvas(Canvas *p_canvas,const Matrix32 &p_transform,Rasterizer::CanvasLight *p_lights,Rasterizer::CanvasLight *p_masked_lights) {
-
- rasterizer->canvas_begin();
-
- int l = p_canvas->child_items.size();
- Canvas::ChildItem *ci=p_canvas->child_items.ptr();
-
- bool has_mirror=false;
- for(int i=0;i<l;i++) {
- if (ci[i].mirror.x || ci[i].mirror.y) {
- has_mirror=true;
- break;
- }
- }
-
- Rect2 clip_rect(viewport_rect.x,viewport_rect.y,viewport_rect.width,viewport_rect.height);
- if (!has_mirror) {
-
- static const int z_range = CANVAS_ITEM_Z_MAX-CANVAS_ITEM_Z_MIN+1;
- Rasterizer::CanvasItem *z_list[z_range];
- Rasterizer::CanvasItem *z_last_list[z_range];
-
- for(int i=0;i<z_range;i++) {
- z_list[i]=NULL;
- z_last_list[i]=NULL;
- }
- for(int i=0;i<l;i++) {
- _render_canvas_item(ci[i].item,p_transform,clip_rect,1.0,0,z_list,z_last_list,NULL,NULL);
- }
-
- for(int i=0;i<z_range;i++) {
- if (!z_list[i])
- continue;
-
- if (p_masked_lights) {
- _light_mask_canvas_items(CANVAS_ITEM_Z_MIN+i,z_list[i],p_masked_lights);
- }
-
- rasterizer->canvas_render_items(z_list[i],CANVAS_ITEM_Z_MIN+i,p_canvas->modulate,p_lights);
- }
- } else {
-
- for(int i=0;i<l;i++) {
-
- Canvas::ChildItem& ci=p_canvas->child_items[i];
- _render_canvas_item_tree(ci.item,p_transform,clip_rect,p_canvas->modulate,p_lights);
-
- //mirroring (useful for scrolling backgrounds)
- if (ci.mirror.x!=0) {
-
- Matrix32 xform2 = p_transform * Matrix32(0,Vector2(ci.mirror.x,0));
- _render_canvas_item_tree(ci.item,xform2,clip_rect,p_canvas->modulate,p_lights);
- }
- if (ci.mirror.y!=0) {
-
- Matrix32 xform2 = p_transform * Matrix32(0,Vector2(0,ci.mirror.y));
- _render_canvas_item_tree(ci.item,xform2,clip_rect,p_canvas->modulate,p_lights);
- }
- if (ci.mirror.y!=0 && ci.mirror.x!=0) {
-
- Matrix32 xform2 = p_transform * Matrix32(0,ci.mirror);
- _render_canvas_item_tree(ci.item,xform2,clip_rect,p_canvas->modulate,p_lights);
- }
-
- }
- }
-
-}
-
-
-void VisualServerRaster::_draw_viewport_camera(Viewport *p_viewport,bool p_ignore_camera) {
-
-
- Camera *camera=NULL;
- if (camera_owner.owns( p_viewport->camera ))
- camera=camera_owner.get( p_viewport->camera );
- Scenario *scenario = scenario_owner.get( p_viewport->scenario );
-
- _update_instances(); // check dirty instances before rendering
-
- if (p_ignore_camera)
- _render_no_camera(p_viewport, camera,scenario );
- else
- _render_camera(p_viewport, camera,scenario );
-
-}
-
-void VisualServerRaster::_draw_viewport(Viewport *p_viewport,int p_ofs_x, int p_ofs_y,int p_parent_w,int p_parent_h) {
-
- ViewportRect desired_rect=p_viewport->rect;
- ViewportRect old_rect = viewport_rect;
- //bool vpchanged=false;
- // convert default expanding viewports to actual size
- //if (desired_rect.x==0 && desired_rect.y==0 && desired_rect.width==0 && desired_rect.height==0) {
- if (p_parent_w != 0 && p_parent_h != 0) {
-
- desired_rect.width=p_parent_w;
- desired_rect.height=p_parent_h;
- }
-
- ERR_FAIL_COND(desired_rect.width<=0 || desired_rect.height<=0);
-
- desired_rect.x+=p_ofs_x;
- desired_rect.y+=p_ofs_y;
-
-
- // if the viewport is different than the actual one, change it
-
- if ( p_viewport->render_target.is_valid() || viewport_rect.x != desired_rect.x ||
- viewport_rect.y != desired_rect.y ||
- viewport_rect.width != desired_rect.width ||
- viewport_rect.height != desired_rect.height ) {
-
-
- viewport_rect=desired_rect;
- rasterizer->set_viewport(viewport_rect);
-
- }
-
- /* Camera should always be BEFORE any other 3D */
-
- bool scenario_draw_canvas_bg=false;
- int scenario_canvas_max_layer=0;
-
- if (!p_viewport->hide_canvas && !p_viewport->disable_environment && scenario_owner.owns(p_viewport->scenario)) {
-
- Scenario *scenario=scenario_owner.get(p_viewport->scenario);
- if (scenario->environment.is_valid()) {
- if (rasterizer->is_environment(scenario->environment)) {
- scenario_draw_canvas_bg=rasterizer->environment_get_background(scenario->environment)==VS::ENV_BG_CANVAS;
- scenario_canvas_max_layer=rasterizer->environment_get_background_param(scenario->environment,VS::ENV_BG_PARAM_CANVAS_MAX_LAYER);
- }
- }
- }
-
- bool can_draw_3d=!p_viewport->hide_scenario && camera_owner.owns(p_viewport->camera) && scenario_owner.owns(p_viewport->scenario);
-
-
- if (scenario_draw_canvas_bg) {
-
- rasterizer->begin_canvas_bg();
- }
-
- if (!scenario_draw_canvas_bg && can_draw_3d) {
-
- _draw_viewport_camera(p_viewport,false);
-
- } else if (true /*|| !p_viewport->canvas_list.empty()*/){
-
- //clear the viewport black because of no camera? i seriously should..
- if (p_viewport->render_target_clear_on_new_frame || p_viewport->render_target_clear) {
- if (p_viewport->transparent_bg) {
- rasterizer->clear_viewport(Color(0,0,0,0));
- }
- else {
- Color cc=clear_color;
- if (scenario_draw_canvas_bg)
- cc.a=0;
- rasterizer->clear_viewport(cc);
- }
- p_viewport->render_target_clear=false;
- }
- }
-
- if (!p_viewport->hide_canvas) {
- int i=0;
-
- Map<Viewport::CanvasKey,Viewport::CanvasData*> canvas_map;
-
- Rect2 clip_rect(0,0,viewport_rect.width,viewport_rect.height);
- Rasterizer::CanvasLight *lights=NULL;
- Rasterizer::CanvasLight *lights_with_shadow=NULL;
- Rasterizer::CanvasLight *lights_with_mask=NULL;
- Rect2 shadow_rect;
-
- int light_count=0;
-
- for (Map<RID,Viewport::CanvasData>::Element *E=p_viewport->canvas_map.front();E;E=E->next()) {
-
- Matrix32 xf = p_viewport->global_transform * E->get().transform;
-
- //find lights in canvas
-
-
- for(Set<Rasterizer::CanvasLight*>::Element *F=E->get().canvas->lights.front();F;F=F->next()) {
-
-
- Rasterizer::CanvasLight* cl=F->get();
- if (cl->enabled && cl->texture.is_valid()) {
- //not super efficient..
- Size2 tsize(rasterizer->texture_get_width(cl->texture),rasterizer->texture_get_height(cl->texture));
- tsize*=cl->scale;
-
- Vector2 offset=tsize/2.0;
- cl->rect_cache=Rect2(-offset+cl->texture_offset,tsize);
- cl->xform_cache=xf * cl->xform;
-
-
- if (clip_rect.intersects_transformed(cl->xform_cache,cl->rect_cache)) {
-
- cl->filter_next_ptr=lights;
- lights=cl;
- cl->texture_cache=NULL;
- Matrix32 scale;
- scale.scale(cl->rect_cache.size);
- scale.elements[2]=cl->rect_cache.pos;
- cl->light_shader_xform = (cl->xform_cache * scale).affine_inverse();
- cl->light_shader_pos=cl->xform_cache[2];
- if (cl->shadow_buffer.is_valid()) {
-
- cl->shadows_next_ptr=lights_with_shadow;
- if (lights_with_shadow==NULL) {
- shadow_rect = cl->xform_cache.xform(cl->rect_cache);
- } else {
- shadow_rect=shadow_rect.merge( cl->xform_cache.xform(cl->rect_cache) );
- }
- lights_with_shadow=cl;
- cl->radius_cache=cl->rect_cache.size.length();
-
- }
- if (cl->mode==CANVAS_LIGHT_MODE_MASK) {
- cl->mask_next_ptr=lights_with_mask;
- lights_with_mask=cl;
- }
-
- light_count++;
- }
-
- }
- }
-
- //print_line("lights: "+itos(light_count));
- canvas_map[ Viewport::CanvasKey( E->key(), E->get().layer) ]=&E->get();
-
- }
-
- if (lights_with_shadow) {
- //update shadows if any
-
- Rasterizer::CanvasLightOccluderInstance * occluders=NULL;
-
- //make list of occluders
- for (Map<RID,Viewport::CanvasData>::Element *E=p_viewport->canvas_map.front();E;E=E->next()) {
-
- Matrix32 xf = p_viewport->global_transform * E->get().transform;
-
- for(Set<Rasterizer::CanvasLightOccluderInstance*>::Element *F=E->get().canvas->occluders.front();F;F=F->next()) {
-
- if (!F->get()->enabled)
- continue;
- F->get()->xform_cache = xf * F->get()->xform;
- if (shadow_rect.intersects_transformed(F->get()->xform_cache,F->get()->aabb_cache)) {
-
- F->get()->next=occluders;
- occluders=F->get();
-
- }
- }
- }
- //update the light shadowmaps with them
- Rasterizer::CanvasLight *light=lights_with_shadow;
- while(light) {
-
- rasterizer->canvas_light_shadow_buffer_update(light->shadow_buffer,light->xform_cache.affine_inverse(),light->item_mask,light->radius_cache/1000.0,light->radius_cache*1.1,occluders,&light->shadow_matrix_cache);
- light=light->shadows_next_ptr;
- }
-
- rasterizer->set_viewport(viewport_rect); //must reset viewport afterwards
- }
-
-
-
-
- if (scenario_draw_canvas_bg && canvas_map.front() && canvas_map.front()->key().layer>scenario_canvas_max_layer) {
-
- _draw_viewport_camera(p_viewport,!can_draw_3d);
- scenario_draw_canvas_bg=false;
-
- }
-
- for (Map<Viewport::CanvasKey,Viewport::CanvasData*>::Element *E=canvas_map.front();E;E=E->next()) {
-
-
- //print_line("canvas "+itos(i)+" size: "+itos(I->get()->canvas->child_items.size()));
- //print_line("GT "+p_viewport->global_transform+". CT: "+E->get()->transform);
- Matrix32 xform = p_viewport->global_transform * E->get()->transform;
-
- Rasterizer::CanvasLight *canvas_lights=NULL;
-
- Rasterizer::CanvasLight *ptr=lights;
- while(ptr) {
- if (E->get()->layer>=ptr->layer_min && E->get()->layer<=ptr->layer_max) {
- ptr->next_ptr=canvas_lights;
- canvas_lights=ptr;
- }
- ptr=ptr->filter_next_ptr;
- }
-
- _render_canvas( E->get()->canvas,xform,canvas_lights,lights_with_mask );
- i++;
-
- if (scenario_draw_canvas_bg && E->key().layer>=scenario_canvas_max_layer) {
- _draw_viewport_camera(p_viewport,!can_draw_3d);
- scenario_draw_canvas_bg=false;
- }
-
-
- }
-
- if (scenario_draw_canvas_bg) {
- _draw_viewport_camera(p_viewport,!can_draw_3d);
- scenario_draw_canvas_bg=false;
- }
-
-
- //rasterizer->canvas_debug_viewport_shadows(lights_with_shadow);
- }
-
- //capture
-
- if (p_viewport->queue_capture) {
-
- rasterizer->capture_viewport(&p_viewport->capture);
- p_viewport->queue_capture = false;
- }
-
- //restore
- if ( viewport_rect.x != old_rect.x ||
- viewport_rect.y != old_rect.y ||
- viewport_rect.width != old_rect.width ||
- viewport_rect.height != old_rect.height ) {
-
- viewport_rect=old_rect;
-
- rasterizer->set_viewport(viewport_rect);
- }
-
-
-}
-
-void VisualServerRaster::_draw_viewports() {
-
- //draw viewports for render targets
-
- List<Viewport*> to_blit;
- List<Viewport*> to_disable;
- for(SelfList<Viewport> *E=viewport_update_list.first();E;E=E->next()) {
-
- Viewport *vp = E->self();
- ERR_CONTINUE(!vp);
- if (
- vp->render_target_update_mode==RENDER_TARGET_UPDATE_WHEN_VISIBLE &&
- !vp->rendered_in_prev_frame &&
- !vp->queue_capture
- ) {
-
- continue;
- }
-
- if (vp->rt_to_screen_rect!=Rect2())
- to_blit.push_back(vp);
-
- rasterizer->set_render_target(vp->render_target,vp->transparent_bg,vp->render_target_vflip);
- _draw_viewport(vp,0,0,vp->rect.width,vp->rect.height);
-
- if ( (vp->queue_capture && vp->render_target_update_mode==RENDER_TARGET_UPDATE_DISABLED) || vp->render_target_update_mode==RENDER_TARGET_UPDATE_ONCE) {
- //was only enabled for capture
- to_disable.push_back(vp);
- vp->render_target_update_mode=RENDER_TARGET_UPDATE_DISABLED;
- }
-
- }
-
- rasterizer->set_render_target(RID());
-
- while(to_disable.size()) {
- //disable again because it was only for capture
- viewport_update_list.remove(&to_disable.front()->get()->update_list);
- to_disable.pop_front();
- }
-
-
- //draw RTs directly to screen when requested
-
- for (List<Viewport*>::Element *E=to_blit.front();E;E=E->next()) {
-
- int window_w = OS::get_singleton()->get_video_mode().width;
- int window_h = OS::get_singleton()->get_video_mode().height;
-
- ViewportRect desired_rect;
- desired_rect.x = desired_rect.y = 0;
- desired_rect.width = window_w;
- desired_rect.height = window_h;
-
- if ( viewport_rect.x != desired_rect.x ||
- viewport_rect.y != desired_rect.y ||
- viewport_rect.width != desired_rect.width ||
- viewport_rect.height != desired_rect.height ) {
-
- viewport_rect=desired_rect;
-
- rasterizer->set_viewport(viewport_rect);
- }
-
- rasterizer->canvas_begin();
- rasterizer->canvas_disable_blending();
- rasterizer->canvas_begin_rect(Matrix32());
- rasterizer->canvas_draw_rect(E->get()->rt_to_screen_rect,0,Rect2(Point2(),E->get()->rt_to_screen_rect.size),E->get()->render_target_texture,Color(1,1,1));
-
- }
-
-
-
- //draw viewports attached to screen
-
- for(Map<RID,int>::Element *E=screen_viewports.front();E;E=E->next()) {
-
- Viewport *vp = viewport_owner.get(E->key());
- ERR_CONTINUE(!vp);
-
- int window_w = OS::get_singleton()->get_video_mode(E->get()).width;
- int window_h = OS::get_singleton()->get_video_mode(E->get()).height;
-
- Rect2 r(0,0,vp->rect.width,vp->rect.height);
- if (r.size.width==0)
- r.size.width=window_w;
- if (r.size.height==0)
- r.size.height=window_h;
-
-
- _draw_viewport(vp,r.pos.x,r.pos.y,r.size.width,r.size.height);
- }
-
-
- //check when a viewport associated to a render target was drawn
-
- for(SelfList<Viewport> *E=viewport_update_list.first();E;E=E->next()) {
-
- Viewport *vp = E->self();
- ERR_CONTINUE(!vp);
- if (vp->render_target_update_mode!=RENDER_TARGET_UPDATE_WHEN_VISIBLE)
- continue;
- vp->rendered_in_prev_frame=rasterizer->render_target_renedered_in_frame(vp->render_target);
- }
-
-}
-
-
-
-void VisualServerRaster::_draw_cursors_and_margins() {
-
- int window_w = OS::get_singleton()->get_video_mode().width;
- int window_h = OS::get_singleton()->get_video_mode().height;
-
- ViewportRect desired_rect;
- desired_rect.x = desired_rect.y = 0;
- desired_rect.width = window_w;
- desired_rect.height = window_h;
-
- if ( viewport_rect.x != desired_rect.x ||
- viewport_rect.y != desired_rect.y ||
- viewport_rect.width != desired_rect.width ||
- viewport_rect.height != desired_rect.height ) {
-
- viewport_rect=desired_rect;
-
- rasterizer->set_viewport(viewport_rect);
- }
-
- rasterizer->canvas_begin();
- rasterizer->canvas_begin_rect(Matrix32());
-
- for (int i=0; i<MAX_CURSORS; i++) {
-
- if (!cursors[i].visible) {
-
- continue;
- };
-
- RID tex = cursors[i].texture?cursors[i].texture:default_cursor_texture;
- ERR_CONTINUE( !tex );
- if (cursors[i].region.has_no_area()) {
- Point2 size(texture_get_width(tex), texture_get_height(tex));
- rasterizer->canvas_draw_rect(Rect2(cursors[i].pos-cursors[i].center, size), 0, Rect2(), tex, Color(1, 1, 1, 1));
- } else {
- Point2 size = cursors[i].region.size;
- rasterizer->canvas_draw_rect(Rect2(cursors[i].pos-cursors[i].center, size), Rasterizer::CANVAS_RECT_REGION, cursors[i].region, tex, Color(1, 1, 1, 1));
- }
- };
-
-
-
- if (black_image[MARGIN_LEFT].is_valid()) {
- Size2 sz(rasterizer->texture_get_width(black_image[MARGIN_LEFT]),rasterizer->texture_get_height(black_image[MARGIN_LEFT]));
- rasterizer->canvas_draw_rect(Rect2(0,0,black_margin[MARGIN_LEFT],window_h),0,Rect2(0,0,sz.x,sz.y),black_image[MARGIN_LEFT],Color(1,1,1));
- } else if (black_margin[MARGIN_LEFT])
- rasterizer->canvas_draw_rect(Rect2(0,0,black_margin[MARGIN_LEFT],window_h),0,Rect2(0,0,1,1),RID(),Color(0,0,0));
-
- if (black_image[MARGIN_RIGHT].is_valid()) {
- Size2 sz(rasterizer->texture_get_width(black_image[MARGIN_RIGHT]),rasterizer->texture_get_height(black_image[MARGIN_RIGHT]));
- rasterizer->canvas_draw_rect(Rect2(window_w-black_margin[MARGIN_RIGHT],0,black_margin[MARGIN_RIGHT],window_h),0,Rect2(0,0,sz.x,sz.y),black_image[MARGIN_RIGHT],Color(1,1,1));
- } else if (black_margin[MARGIN_RIGHT])
- rasterizer->canvas_draw_rect(Rect2(window_w-black_margin[MARGIN_RIGHT],0,black_margin[MARGIN_RIGHT],window_h),0,Rect2(0,0,1,1),RID(),Color(0,0,0));
-
- if (black_image[MARGIN_TOP].is_valid()) {
- Size2 sz(rasterizer->texture_get_width(black_image[MARGIN_TOP]),rasterizer->texture_get_height(black_image[MARGIN_TOP]));
- rasterizer->canvas_draw_rect(Rect2(0,0,window_w,black_margin[MARGIN_TOP]),0,Rect2(0,0,sz.x,sz.y),black_image[MARGIN_TOP],Color(1,1,1));
-
- } else if (black_margin[MARGIN_TOP]) {
- rasterizer->canvas_draw_rect(Rect2(0,0,window_w,black_margin[MARGIN_TOP]),0,Rect2(0,0,1,1),RID(),Color(0,0,0));
- }
-
- if (black_image[MARGIN_BOTTOM].is_valid()) {
-
- Size2 sz(rasterizer->texture_get_width(black_image[MARGIN_BOTTOM]),rasterizer->texture_get_height(black_image[MARGIN_BOTTOM]));
- rasterizer->canvas_draw_rect(Rect2(0,window_h-black_margin[MARGIN_BOTTOM],window_w,black_margin[MARGIN_BOTTOM]),0,Rect2(0,0,sz.x,sz.y),black_image[MARGIN_BOTTOM],Color(1,1,1));
- } else if (black_margin[MARGIN_BOTTOM]) {
- rasterizer->canvas_draw_rect(Rect2(0,window_h-black_margin[MARGIN_BOTTOM],window_w,black_margin[MARGIN_BOTTOM]),0,Rect2(0,0,1,1),RID(),Color(0,0,0));
- }
-
- rasterizer->canvas_end_rect();
-};
-
-void VisualServerRaster::sync() {
- //do none
-}
-
-void VisualServerRaster::draw() {
- /*
- if (changes)
- print_line("changes: "+itos(changes));
- */
- changes=0;
- shadows_enabled=GLOBAL_DEF("render/shadows_enabled",true);
- room_cull_enabled = GLOBAL_DEF("render/room_cull_enabled",true);
- light_discard_enabled = GLOBAL_DEF("render/light_discard_enabled",true);
- rasterizer->begin_frame();
- _draw_viewports();
- _draw_cursors_and_margins();
- rasterizer->end_frame();
- draw_extra_frame=rasterizer->needs_to_draw_next_frame();
-}
-
-bool VisualServerRaster::has_changed() const {
-
- return changes>0 || draw_extra_frame;
-}
-
-int VisualServerRaster::get_render_info(RenderInfo p_info) {
-
- return rasterizer->get_render_info(p_info);
-}
-
-bool VisualServerRaster::has_feature(Features p_feature) const {
-
- return rasterizer->has_feature(p_feature); // lies for now
-}
-
-void VisualServerRaster::set_default_clear_color(const Color& p_color) {
-
- clear_color=p_color;
-}
-
-void VisualServerRaster::set_boot_image(const Image& p_image, const Color& p_color,bool p_scale) {
-
- if (p_image.empty())
- return;
-
- rasterizer->restore_framebuffer();
-
- rasterizer->begin_frame();
-
- int window_w = OS::get_singleton()->get_video_mode(0).width;
- int window_h = OS::get_singleton()->get_video_mode(0).height;
- ViewportRect vr;
- vr.x=0;
- vr.y=0;
- vr.width=OS::get_singleton()->get_video_mode(0).width;
- vr.height=OS::get_singleton()->get_video_mode(0).height;
- rasterizer->set_viewport(vr);
- rasterizer->clear_viewport(p_color);
- rasterizer->canvas_begin();
- RID texture = texture_create();
- texture_allocate(texture,p_image.get_width(),p_image.get_height(),p_image.get_format(),TEXTURE_FLAG_FILTER);
- texture_set_data(texture,p_image);
- rasterizer->canvas_begin_rect(Matrix32());
- Rect2 imgrect(0,0,p_image.get_width(),p_image.get_height());
- Rect2 screenrect;
- if (p_scale) {
-
- if (window_w > window_h) {
- //scale horizontally
- screenrect.size.y = window_h;
- screenrect.size.x = imgrect.size.x * window_h / imgrect.size.y;
- screenrect.pos.x = (window_w - screenrect.size.x)/2;
-
- } else {
- //scale vertically
- screenrect.size.x = window_w;
- screenrect.size.y = imgrect.size.y * window_w / imgrect.size.x;
- screenrect.pos.y = (window_h - screenrect.size.y)/2;
- }
- } else {
-
- screenrect=imgrect;
- screenrect.pos+=((Size2(vr.width,vr.height)-screenrect.size)/2.0).floor();
-
- }
- rasterizer->canvas_draw_rect(screenrect,0,imgrect,texture,Color(1,1,1,1));
- rasterizer->canvas_end_rect();
-
- rasterizer->end_frame();
- rasterizer->flush_frame();
-
- free(texture); // free since it's only one frame that stays there
-
-}
-
-void VisualServerRaster::init() {
-
- rasterizer->init();
-
- shadows_enabled=GLOBAL_DEF("render/shadows_enabled",true);
- //default_scenario = scenario_create();
- //default_viewport = viewport_create();
- for(int i=0;i<4;i++)
- black_margin[i]=0;
-
- Image img;
- img.create(default_mouse_cursor_xpm);
- //img.convert(Image::FORMAT_RGB8);
- default_cursor_texture = texture_create_from_image(img, 0);
-
- aabb_random_points.resize( GLOBAL_DEF("render/aabb_random_points",16) );
- for(int i=0;i<aabb_random_points.size();i++)
- aabb_random_points[i]=Vector3(Math::random(0,1),Math::random(0,1),Math::random(0,1));
- transformed_aabb_random_points.resize(aabb_random_points.size());
- changes=0;
-}
-
-void VisualServerRaster::_clean_up_owner(RID_OwnerBase *p_owner,String p_type) {
-
- List<RID> rids;
- p_owner->get_owned_list(&rids);
-
- int lost=0;
- for(List<RID>::Element *I=rids.front();I;I=I->next()) {
- if (OS::get_singleton()->is_stdout_verbose()) {
- lost++;
- }
- free(I->get());
- }
-
- if (lost)
- print_line("VisualServerRaster: WARNING: Lost "+itos(lost)+" RIDs of type "+p_type);
-
-}
-
-void VisualServerRaster::finish() {
-
-
- free(default_cursor_texture);
- if (test_cube.is_valid())
- free(test_cube);
-
- _free_internal_rids();
-
- _clean_up_owner( &room_owner,"Room" );
- _clean_up_owner( &portal_owner,"Portal" );
-
- _clean_up_owner( &camera_owner,"Camera" );
- _clean_up_owner( &viewport_owner,"Viewport" );
-
- _clean_up_owner( &scenario_owner,"Scenario" );
- _clean_up_owner( &instance_owner,"Instance" );
-
- _clean_up_owner( &canvas_owner,"Canvas" );
- _clean_up_owner( &canvas_item_owner,"CanvasItem" );
-
- rasterizer->finish();
- octree_allocator.clear();
-
- if (instance_dependency_map.size()) {
- print_line("Base resources missing amount: "+itos(instance_dependency_map.size()));
- }
- ERR_FAIL_COND( instance_dependency_map.size() );
-}
-
-
-RID VisualServerRaster::get_test_cube() {
-
- if (test_cube.is_valid())
- return test_cube;
-
- test_cube=_make_test_cube();
- return test_cube;
-
-}
-
-
-
-VisualServerRaster::VisualServerRaster(Rasterizer *p_rasterizer) {
-
- rasterizer=p_rasterizer;
- rasterizer->draw_viewport_func=_render_canvas_item_viewport;
- instance_update_list=NULL;
- render_pass=0;
- clear_color=Color(0.3,0.3,0.3,1.0);
- OctreeAllocator::allocator=&octree_allocator;
- draw_extra_frame=false;
-
-}
-
-
-VisualServerRaster::~VisualServerRaster()
-{
-}
-#endif
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index 596dd5c10e..774b692a22 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -73,6 +73,7 @@ class VisualServerRaster : public VisualServer {
List<FrameDrawnCallbacks> frame_drawn_callbacks;
+// FIXME: Kept as reference for future implementation
#if 0
struct Room {
@@ -786,6 +787,7 @@ public:
BIND2(light_set_projector, RID, RID)
BIND2(light_set_negative, RID, bool)
BIND2(light_set_cull_mask, RID, uint32_t)
+ BIND2(light_set_reverse_cull_face_mode, RID, bool)
BIND2(light_omni_set_shadow_mode, RID, LightOmniShadowMode)
BIND2(light_omni_set_shadow_detail, RID, LightOmniShadowDetail)
@@ -810,23 +812,6 @@ public:
BIND2(reflection_probe_set_enable_shadows, RID, bool)
BIND2(reflection_probe_set_cull_mask, RID, uint32_t)
- /* ROOM API */
-
- BIND0R(RID, room_create)
- BIND4(room_add_bounds, RID, const PoolVector<Vector2> &, float, const Transform &)
- BIND1(room_clear_bounds, RID)
-
- /* PORTAL API */
-
- // portals are only (x/y) points, forming a convex shape, which its clockwise
- // order points outside. (z is 0);
-
- BIND0R(RID, portal_create)
- BIND2(portal_set_shape, RID, const Vector<Point2> &)
- BIND2(portal_set_enabled, RID, bool)
- BIND2(portal_set_disable_distance, RID, float)
- BIND2(portal_set_disabled_color, RID, const Color &)
-
/* BAKED LIGHT API */
BIND0R(RID, gi_probe_create)
@@ -1010,7 +995,6 @@ public:
BIND2(instance_attach_skeleton, RID, RID)
BIND2(instance_set_exterior, RID, bool)
- BIND2(instance_set_room, RID, RID)
BIND2(instance_set_extra_visibility_margin, RID, real_t)
@@ -1059,7 +1043,7 @@ public:
BIND8(canvas_item_add_texture_rect_region, RID, const Rect2 &, RID, const Rect2 &, const Color &, bool, RID, bool)
BIND11(canvas_item_add_nine_patch, RID, const Rect2 &, const Rect2 &, RID, const Vector2 &, const Vector2 &, NinePatchAxisMode, NinePatchAxisMode, bool, const Color &, RID)
BIND7(canvas_item_add_primitive, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, float, RID)
- BIND6(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID)
+ BIND7(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID, bool)
BIND8(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, int, RID)
BIND3(canvas_item_add_mesh, RID, const RID &, RID)
BIND3(canvas_item_add_multimesh, RID, RID, RID)
diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp
index 11a9c8c9c1..cd68c14de8 100644
--- a/servers/visual/visual_server_scene.cpp
+++ b/servers/visual/visual_server_scene.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -156,58 +156,6 @@ void *VisualServerScene::_instance_pair(void *p_self, OctreeElementID, Instance
return gi_probe->lights.insert(A);
}
-#if 0
- if (A->base_type==INSTANCE_PORTAL) {
-
- ERR_FAIL_COND_V( B->base_type!=INSTANCE_PORTAL,NULL );
-
- A->portal_info->candidate_set.insert(B);
- B->portal_info->candidate_set.insert(A);
-
- self->_portal_attempt_connect(A);
- //attempt to conncet portal A (will go through B anyway)
- //this is a little hackish, but works fine in practice
-
- } else if (A->base_type==INSTANCE_GI_PROBE || B->base_type==INSTANCE_GI_PROBE) {
-
- if (B->base_type==INSTANCE_GI_PROBE) {
- SWAP(A,B);
- }
-
- ERR_FAIL_COND_V(B->base_type!=INSTANCE_GI_PROBE_SAMPLER,NULL);
- B->gi_probe_sampler_info->gi_probes.insert(A);
-
- } else if (A->base_type==INSTANCE_ROOM || B->base_type==INSTANCE_ROOM) {
-
- if (B->base_type==INSTANCE_ROOM)
- SWAP(A,B);
-
- ERR_FAIL_COND_V(! ((1<<B->base_type)&INSTANCE_GEOMETRY_MASK ),NULL);
-
- B->auto_rooms.insert(A);
- A->room_info->owned_autoroom_geometry.insert(B);
-
- self->_instance_validate_autorooms(B);
-
-
- } else {
-
- if (B->base_type==INSTANCE_LIGHT) {
-
- SWAP(A,B);
- } else if (A->base_type!=INSTANCE_LIGHT) {
- return NULL;
- }
-
-
- A->light_info->affected.insert(B);
- B->lights.insert(A);
- B->light_cache_dirty=true;
-
-
- }
-#endif
-
return NULL;
}
void VisualServerScene::_instance_unpair(void *p_self, OctreeElementID, Instance *p_A, int, OctreeElementID, Instance *p_B, int, void *udata) {
@@ -269,57 +217,6 @@ void VisualServerScene::_instance_unpair(void *p_self, OctreeElementID, Instance
gi_probe->lights.erase(E);
}
-#if 0
- if (A->base_type==INSTANCE_PORTAL) {
-
- ERR_FAIL_COND( B->base_type!=INSTANCE_PORTAL );
-
-
- A->portal_info->candidate_set.erase(B);
- B->portal_info->candidate_set.erase(A);
-
- //after disconnecting them, see if they can connect again
- self->_portal_attempt_connect(A);
- self->_portal_attempt_connect(B);
-
- } else if (A->base_type==INSTANCE_GI_PROBE || B->base_type==INSTANCE_GI_PROBE) {
-
- if (B->base_type==INSTANCE_GI_PROBE) {
- SWAP(A,B);
- }
-
- ERR_FAIL_COND(B->base_type!=INSTANCE_GI_PROBE_SAMPLER);
- B->gi_probe_sampler_info->gi_probes.erase(A);
-
- } else if (A->base_type==INSTANCE_ROOM || B->base_type==INSTANCE_ROOM) {
-
- if (B->base_type==INSTANCE_ROOM)
- SWAP(A,B);
-
- ERR_FAIL_COND(! ((1<<B->base_type)&INSTANCE_GEOMETRY_MASK ));
-
- B->auto_rooms.erase(A);
- B->valid_auto_rooms.erase(A);
- A->room_info->owned_autoroom_geometry.erase(B);
-
- }else {
-
-
-
- if (B->base_type==INSTANCE_LIGHT) {
-
- SWAP(A,B);
- } else if (A->base_type!=INSTANCE_LIGHT) {
- return;
- }
-
-
- A->light_info->affected.erase(B);
- B->lights.erase(A);
- B->light_cache_dirty=true;
-
- }
-#endif
}
RID VisualServerScene::scenario_create() {
@@ -467,125 +364,6 @@ void VisualServerScene::instance_set_base(RID p_instance, RID p_base) {
}
}
instance->materials.clear();
-
-#if 0
- if (instance->light_info) {
-
- if (instance->scenario && instance->light_info->D)
- instance->scenario->directional_lights.erase( instance->light_info->D );
- rasterizer->free(instance->light_info->instance);
- memdelete(instance->light_info);
- instance->light_info=NULL;
- }
-
-
-
- if ( instance->room ) {
-
- instance_set_room(p_instance,RID());
- /*
- if((1<<instance->base_type)&INSTANCE_GEOMETRY_MASK)
- instance->room->room_info->owned_geometry_instances.erase(instance->RE);
- else if (instance->base_type==INSTANCE_PORTAL) {
- print_line("freeing portal, is it there? "+itos(instance->room->room_info->owned_portal_instances.(instance->RE)));
- instance->room->room_info->owned_portal_instances.erase(instance->RE);
- } else if (instance->base_type==INSTANCE_ROOM)
- instance->room->room_info->owned_room_instances.erase(instance->RE);
- else if (instance->base_type==INSTANCE_LIGHT)
- instance->room->room_info->owned_light_instances.erase(instance->RE);
-
- instance->RE=NULL;*/
- }
-
-
-
-
-
-
- if (instance->portal_info) {
-
- _portal_disconnect(instance,true);
- memdelete(instance->portal_info);
- instance->portal_info=NULL;
-
- }
-
- if (instance->gi_probe_info) {
-
- while(instance->gi_probe_info->owned_instances.size()) {
-
- Instance *owned=instance->gi_probe_info->owned_instances.front()->get();
- owned->gi_probe=NULL;
- owned->data.gi_probe=NULL;
- owned->data.gi_probe_octree_xform=NULL;
- owned->BLE=NULL;
- instance->gi_probe_info->owned_instances.pop_front();
- }
-
- memdelete(instance->gi_probe_info);
- instance->gi_probe_info=NULL;
-
- }
-
- if (instance->scenario && instance->octree_id) {
- instance->scenario->octree.erase( instance->octree_id );
- instance->octree_id=0;
- }
-
-
- if (instance->room_info) {
-
- for(List<Instance*>::Element *E=instance->room_info->owned_geometry_instances.front();E;E=E->next()) {
-
- Instance *owned = E->get();
- owned->room=NULL;
- owned->RE=NULL;
- }
- for(List<Instance*>::Element *E=instance->room_info->owned_portal_instances.front();E;E=E->next()) {
-
- _portal_disconnect(E->get(),true);
- Instance *owned = E->get();
- owned->room=NULL;
- owned->RE=NULL;
- }
-
- for(List<Instance*>::Element *E=instance->room_info->owned_room_instances.front();E;E=E->next()) {
-
- Instance *owned = E->get();
- owned->room=NULL;
- owned->RE=NULL;
- }
-
- if (instance->room_info->disconnected_child_portals.size()) {
- ERR_PRINT("BUG: Disconnected portals remain!");
- }
- memdelete(instance->room_info);
- instance->room_info=NULL;
-
- }
-
- if (instance->particles_info) {
-
- rasterizer->free( instance->particles_info->instance );
- memdelete(instance->particles_info);
- instance->particles_info=NULL;
-
- }
-
- if (instance->gi_probe_sampler_info) {
-
- while (instance->gi_probe_sampler_info->owned_instances.size()) {
-
- instance_geometry_set_gi_probe_sampler(instance->gi_probe_sampler_info->owned_instances.front()->get()->self,RID());
- }
-
- if (instance->gi_probe_sampler_info->sampled_light.is_valid()) {
- rasterizer->free(instance->gi_probe_sampler_info->sampled_light);
- }
- memdelete( instance->gi_probe_sampler_info );
- instance->gi_probe_sampler_info=NULL;
- }
-#endif
}
instance->base_type = VS::INSTANCE_NONE;
@@ -646,64 +424,6 @@ void VisualServerScene::instance_set_base(RID p_instance, RID p_base) {
if (scenario)
_instance_queue_update(instance, true, true);
-
-#if 0
- if (rasterizer->is_mesh(p_base)) {
- instance->base_type=INSTANCE_MESH;
- instance->data.morph_values.resize( rasterizer->mesh_get_morph_target_count(p_base));
- instance->data.materials.resize( rasterizer->mesh_get_surface_count(p_base));
- } else if (rasterizer->is_multimesh(p_base)) {
- instance->base_type=INSTANCE_MULTIMESH;
- } else if (rasterizer->is_immediate(p_base)) {
- instance->base_type=INSTANCE_IMMEDIATE;
- } else if (rasterizer->is_particles(p_base)) {
- instance->base_type=INSTANCE_PARTICLES;
- instance->particles_info=memnew( Instance::ParticlesInfo );
- instance->particles_info->instance = rasterizer->particles_instance_create( p_base );
- } else if (rasterizer->is_light(p_base)) {
-
- instance->base_type=INSTANCE_LIGHT;
- instance->light_info = memnew( Instance::LightInfo );
- instance->light_info->instance = rasterizer->light_instance_create(p_base);
- if (instance->scenario && rasterizer->light_get_type(p_base)==LIGHT_DIRECTIONAL) {
-
- instance->light_info->D = instance->scenario->directional_lights.push_back(instance->self);
- }
-
- } else if (room_owner.owns(p_base)) {
- instance->base_type=INSTANCE_ROOM;
- instance->room_info = memnew( Instance::RoomInfo );
- instance->room_info->room=room_owner.get(p_base);
- } else if (portal_owner.owns(p_base)) {
-
- instance->base_type=INSTANCE_PORTAL;
- instance->portal_info = memnew(Instance::PortalInfo);
- instance->portal_info->portal=portal_owner.get(p_base);
- } else if (gi_probe_owner.owns(p_base)) {
-
- instance->base_type=INSTANCE_GI_PROBE;
- instance->gi_probe_info=memnew(Instance::BakedLightInfo);
- instance->gi_probe_info->gi_probe=gi_probe_owner.get(p_base);
-
- //instance->portal_info = memnew(Instance::PortalInfo);
- //instance->portal_info->portal=portal_owner.get(p_base);
- } else if (gi_probe_sampler_owner.owns(p_base)) {
-
-
- instance->base_type=INSTANCE_GI_PROBE_SAMPLER;
- instance->gi_probe_sampler_info=memnew( Instance::BakedLightSamplerInfo);
- instance->gi_probe_sampler_info->sampler=gi_probe_sampler_owner.get(p_base);
-
- //instance->portal_info = memnew(Instance::PortalInfo);
- //instance->portal_info->portal=portal_owner.get(p_base);
-
- } else {
- ERR_EXPLAIN("Invalid base RID for instance!")
- ERR_FAIL();
- }
-
- instance_dependency_map[ p_base ].insert( instance->self );
-#endif
}
}
void VisualServerScene::instance_set_scenario(RID p_instance, RID p_scenario) {
@@ -894,8 +614,6 @@ void VisualServerScene::instance_attach_skeleton(RID p_instance, RID p_skeleton)
void VisualServerScene::instance_set_exterior(RID p_instance, bool p_enabled) {
}
-void VisualServerScene::instance_set_room(RID p_instance, RID p_room) {
-}
void VisualServerScene::instance_set_extra_visibility_margin(RID p_instance, real_t p_margin) {
}
@@ -910,7 +628,7 @@ Vector<ObjectID> VisualServerScene::instances_cull_aabb(const Rect3 &p_aabb, RID
int culled = 0;
Instance *cull[1024];
- culled = scenario->octree.cull_AABB(p_aabb, cull, 1024);
+ culled = scenario->octree.cull_aabb(p_aabb, cull, 1024);
for (int i = 0; i < culled; i++) {
@@ -978,21 +696,6 @@ void VisualServerScene::instance_geometry_set_flag(RID p_instance, VS::InstanceF
switch (p_flags) {
- case VS::INSTANCE_FLAG_CAST_SHADOW: {
- if (p_enabled == true) {
- instance->cast_shadows = VS::SHADOW_CASTING_SETTING_ON;
- } else {
- instance->cast_shadows = VS::SHADOW_CASTING_SETTING_OFF;
- }
-
- instance->base_material_changed(); // to actually compute if shadows are visible or not
-
- } break;
- case VS::INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS: {
-
- instance->visible_in_all_rooms = p_enabled;
-
- } break;
case VS::INSTANCE_FLAG_USE_BAKED_LIGHT: {
instance->baked_light = p_enabled;
@@ -1001,6 +704,12 @@ void VisualServerScene::instance_geometry_set_flag(RID p_instance, VS::InstanceF
}
}
void VisualServerScene::instance_geometry_set_cast_shadows_setting(RID p_instance, VS::ShadowCastingSetting p_shadow_casting_setting) {
+
+ Instance *instance = instance_owner.get(p_instance);
+ ERR_FAIL_COND(!instance);
+
+ instance->cast_shadows = p_shadow_casting_setting;
+ instance->base_material_changed(); // to actually compute if shadows are visible or not
}
void VisualServerScene::instance_geometry_set_material_override(RID p_instance, RID p_material) {
@@ -1048,16 +757,10 @@ void VisualServerScene::_update_instance(Instance *p_instance) {
VSG::storage->particles_set_emission_transform(p_instance->base, p_instance->transform);
}
- if (p_instance->aabb.has_no_surface())
+ if (p_instance->aabb.has_no_surface()) {
return;
-
-#if 0
- if (p_instance->base_type == VS::INSTANCE_PARTICLES) {
-
- rasterizer->particles_instance_set_transform( p_instance->particles_info->instance, p_instance->data.transform );
}
-#endif
if ((1 << p_instance->base_type) & VS::INSTANCE_GEOMETRY_MASK) {
InstanceGeometryData *geom = static_cast<InstanceGeometryData *>(p_instance->base_data);
@@ -1070,58 +773,12 @@ void VisualServerScene::_update_instance(Instance *p_instance) {
}
}
}
-#if 0
- else if (p_instance->base_type == INSTANCE_ROOM) {
-
- p_instance->room_info->affine_inverse=p_instance->data.transform.affine_inverse();
- } else if (p_instance->base_type == INSTANCE_GI_PROBE) {
-
- Transform scale;
- scale.basis.scale(p_instance->gi_probe_info->gi_probe->octree_aabb.size);
- scale.origin=p_instance->gi_probe_info->gi_probe->octree_aabb.pos;
- //print_line("scale: "+scale);
- p_instance->gi_probe_info->affine_inverse=(p_instance->data.transform*scale).affine_inverse();
- }
-
-#endif
p_instance->mirror = p_instance->transform.basis.determinant() < 0.0;
Rect3 new_aabb;
-#if 0
- if (p_instance->base_type==INSTANCE_PORTAL) {
-
- //portals need to be transformed in a special way, so they don't become too wide if they have scale..
- Transform portal_xform = p_instance->data.transform;
- portal_xform.basis.set_axis(2,portal_xform.basis.get_axis(2).normalized());
-
- p_instance->portal_info->plane_cache=Plane( p_instance->data.transform.origin, portal_xform.basis.get_axis(2));
- int point_count=p_instance->portal_info->portal->shape.size();
- p_instance->portal_info->transformed_point_cache.resize(point_count);
-
- AABB portal_aabb;
- for(int i=0;i<point_count;i++) {
-
- Point2 src = p_instance->portal_info->portal->shape[i];
- Vector3 point = portal_xform.xform(Vector3(src.x,src.y,0));
- p_instance->portal_info->transformed_point_cache[i]=point;
- if (i==0)
- portal_aabb.pos=point;
- else
- portal_aabb.expand_to(point);
- }
-
- portal_aabb.grow_by(p_instance->portal_info->portal->connect_range);
-
- new_aabb = portal_aabb;
-
- } else {
-#endif
new_aabb = p_instance->transform.xform(p_instance->aabb);
-#if 0
- }
-#endif
p_instance->transformed_aabb = new_aabb;
@@ -1148,33 +805,6 @@ void VisualServerScene::_update_instance(Instance *p_instance) {
pairable = true;
}
-#if 0
-
- if (p_instance->base_type == VS::INSTANCE_PORTAL) {
-
- pairable_mask=(1<<INSTANCE_PORTAL);
- pairable=true;
- }
-
- if (p_instance->base_type == VS::INSTANCE_GI_PROBE_SAMPLER) {
-
- pairable_mask=(1<<INSTANCE_GI_PROBE);
- pairable=true;
- }
-
-
- if (!p_instance->room && (1<<p_instance->base_type)&VS::INSTANCE_GEOMETRY_MASK) {
-
- base_type|=VS::INSTANCE_ROOMLESS_MASK;
- }
-
- if (p_instance->base_type == VS::INSTANCE_ROOM) {
-
- pairable_mask=INSTANCE_ROOMLESS_MASK;
- pairable=true;
- }
-#endif
-
// not inside octree
p_instance->octree_id = p_instance->scenario->octree.create(p_instance, new_aabb, 0, pairable, base_type, pairable_mask);
@@ -1187,23 +817,6 @@ void VisualServerScene::_update_instance(Instance *p_instance) {
p_instance->scenario->octree.move(p_instance->octree_id, new_aabb);
}
-#if 0
- if (p_instance->base_type==INSTANCE_PORTAL) {
-
- _portal_attempt_connect(p_instance);
- }
-
- if (!p_instance->room && (1<<p_instance->base_type)&INSTANCE_GEOMETRY_MASK) {
-
- _instance_validate_autorooms(p_instance);
- }
-
- if (p_instance->base_type == INSTANCE_ROOM) {
-
- for(Set<Instance*>::Element *E=p_instance->room_info->owned_autoroom_geometry.front();E;E=E->next())
- _instance_validate_autorooms(E->get());
- }
-#endif
}
void VisualServerScene::_update_instance_aabb(Instance *p_instance) {
@@ -1238,15 +851,6 @@ void VisualServerScene::_update_instance_aabb(Instance *p_instance) {
new_aabb = VSG::storage->particles_get_aabb(p_instance->base);
} break;
-#if 0
-
- case VisualServer::INSTANCE_PARTICLES: {
-
- new_aabb = rasterizer->particles_get_aabb(p_instance->base);
-
-
- } break;
-#endif
case VisualServer::INSTANCE_LIGHT: {
new_aabb = VSG::storage->light_get_aabb(p_instance->base);
@@ -1263,49 +867,6 @@ void VisualServerScene::_update_instance_aabb(Instance *p_instance) {
} break;
-#if 0
- case VisualServer::INSTANCE_ROOM: {
-
- Room *room = room_owner.get( p_instance->base );
- ERR_FAIL_COND(!room);
- new_aabb=room->bounds.get_aabb();
-
- } break;
- case VisualServer::INSTANCE_PORTAL: {
-
- Portal *portal = portal_owner.get( p_instance->base );
- ERR_FAIL_COND(!portal);
- for (int i=0;i<portal->shape.size();i++) {
-
- Vector3 point( portal->shape[i].x, portal->shape[i].y, 0 );
- if (i==0) {
-
- new_aabb.pos=point;
- new_aabb.size.z=0.01; // make it not flat for octree
- } else {
-
- new_aabb.expand_to(point);
- }
- }
-
- } break;
- case VisualServer::INSTANCE_GI_PROBE: {
-
- BakedLight *gi_probe = gi_probe_owner.get( p_instance->base );
- ERR_FAIL_COND(!gi_probe);
- new_aabb=gi_probe->octree_aabb;
-
- } break;
- case VisualServer::INSTANCE_GI_PROBE_SAMPLER: {
-
- BakedLightSampler *gi_probe_sampler = gi_probe_sampler_owner.get( p_instance->base );
- ERR_FAIL_COND(!gi_probe_sampler);
- float radius = gi_probe_sampler->params[VS::BAKED_LIGHT_SAMPLER_RADIUS];
-
- new_aabb=AABB(Vector3(-radius,-radius,-radius),Vector3(radius*2,radius*2,radius*2));
-
- } break;
-#endif
default: {}
}
@@ -1739,98 +1300,17 @@ void VisualServerScene::_render_scene(const Transform p_cam_transform, const Cam
reflection_probe_cull_count = 0;
-//light_samplers_culled=0;
+ //light_samplers_culled=0;
-/* print_line("OT: "+rtos( (OS::get_singleton()->get_ticks_usec()-t)/1000.0));
+ /* print_line("OT: "+rtos( (OS::get_singleton()->get_ticks_usec()-t)/1000.0));
print_line("OTO: "+itos(p_scenario->octree.get_octant_count()));
//print_line("OTE: "+itos(p_scenario->octree.get_elem_count()));
print_line("OTP: "+itos(p_scenario->octree.get_pair_count()));
*/
-/* STEP 3 - PROCESS PORTALS, VALIDATE ROOMS */
-
-// compute portals
-#if 0
- exterior_visited=false;
- exterior_portal_cull_count=0;
-
- if (room_cull_enabled) {
- for(int i=0;i<cull_count;i++) {
-
- Instance *ins = instance_cull_result[i];
- ins->last_render_pass=render_pass;
-
- if (ins->base_type!=INSTANCE_PORTAL)
- continue;
-
- if (ins->room)
- continue;
-
- ERR_CONTINUE(exterior_portal_cull_count>=MAX_EXTERIOR_PORTALS);
- exterior_portal_cull_result[exterior_portal_cull_count++]=ins;
-
- }
-
- room_cull_count = p_scenario->octree.cull_point(camera->transform.origin,room_cull_result,MAX_ROOM_CULL,NULL,(1<<INSTANCE_ROOM)|(1<<INSTANCE_PORTAL));
-
-
- Set<Instance*> current_rooms;
- Set<Instance*> portal_rooms;
- //add to set
- for(int i=0;i<room_cull_count;i++) {
-
- if (room_cull_result[i]->base_type==INSTANCE_ROOM) {
- current_rooms.insert(room_cull_result[i]);
- }
- if (room_cull_result[i]->base_type==INSTANCE_PORTAL) {
- //assume inside that room if also inside the portal..
- if (room_cull_result[i]->room) {
- portal_rooms.insert(room_cull_result[i]->room);
- }
-
- SWAP(room_cull_result[i],room_cull_result[room_cull_count-1]);
- room_cull_count--;
- i--;
- }
- }
-
- //remove from set if it has a parent room or BSP doesn't contain
- for(int i=0;i<room_cull_count;i++) {
- Instance *r = room_cull_result[i];
-
- //check inside BSP
- Vector3 room_local_point = r->room_info->affine_inverse.xform( camera->transform.origin );
+ /* STEP 3 - PROCESS PORTALS, VALIDATE ROOMS */
+ //removed, will replace with culling
- if (!portal_rooms.has(r) && !r->room_info->room->bounds.point_is_inside(room_local_point)) {
-
- current_rooms.erase(r);
- continue;
- }
-
- //check parent
- while (r->room) {// has parent room
-
- current_rooms.erase(r);
- r=r->room;
- }
-
- }
-
- if (current_rooms.size()) {
- //camera is inside a room
- // go through rooms
- for(Set<Instance*>::Element *E=current_rooms.front();E;E=E->next()) {
- _cull_room(camera,E->get());
- }
-
- } else {
- //start from exterior
- _cull_room(camera,NULL);
-
- }
- }
-
-#endif
/* STEP 4 - REMOVE FURTHER CULLED OBJECTS, ADD LIGHTS */
for (int i = 0; i < cull_count; i++) {
@@ -1898,71 +1378,6 @@ void VisualServerScene::_render_scene(const Transform p_cam_transform, const Cam
} else if ((1 << ins->base_type) & VS::INSTANCE_GEOMETRY_MASK && ins->visible && ins->cast_shadows != VS::SHADOW_CASTING_SETTING_SHADOWS_ONLY) {
keep = true;
-#if 0
- bool discarded=false;
-
- if (ins->draw_range_end>0) {
-
- float d = cull_range.nearp.distance_to(ins->data.transform.origin);
- if (d<0)
- d=0;
- discarded=(d<ins->draw_range_begin || d>=ins->draw_range_end);
-
-
- }
-
- if (!discarded) {
-
- // test if this geometry should be visible
-
- if (room_cull_enabled) {
-
-
- if (ins->visible_in_all_rooms) {
- keep=true;
- } else if (ins->room) {
-
- if (ins->room->room_info->last_visited_pass==render_pass)
- keep=true;
- } else if (ins->auto_rooms.size()) {
-
-
- for(Set<Instance*>::Element *E=ins->auto_rooms.front();E;E=E->next()) {
-
- if (E->get()->room_info->last_visited_pass==render_pass) {
- keep=true;
- break;
- }
- }
- } else if(exterior_visited)
- keep=true;
- } else {
-
- keep=true;
- }
-
-
- }
-
-
- if (keep) {
- // update cull range
- float min,max;
- ins->transformed_aabb.project_range_in_plane(cull_range.nearp,min,max);
-
- if (min<cull_range.min)
- cull_range.min=min;
- if (max>cull_range.max)
- cull_range.max=max;
-
- if (ins->sampled_light && ins->sampled_light->gi_probe_sampler_info->last_pass!=render_pass) {
- if (light_samplers_culled<MAX_LIGHT_SAMPLERS) {
- light_sampler_cull_result[light_samplers_culled++]=ins->sampled_light;
- ins->sampled_light->gi_probe_sampler_info->last_pass=render_pass;
- }
- }
- }
-#endif
InstanceGeometryData *geom = static_cast<InstanceGeometryData *>(ins->base_data);
@@ -2058,13 +1473,13 @@ void VisualServerScene::_render_scene(const Transform p_cam_transform, const Cam
//check shadow..
- if (light && p_shadow_atlas.is_valid() && VSG::storage->light_has_shadow(E->get()->base)) {
- lights_with_shadow[directional_shadow_count++] = E->get();
+ if (light) {
+ if (p_shadow_atlas.is_valid() && VSG::storage->light_has_shadow(E->get()->base)) {
+ lights_with_shadow[directional_shadow_count++] = E->get();
+ }
+ //add to list
+ directional_light_ptr[directional_light_count++] = light->instance;
}
-
- //add to list
-
- directional_light_ptr[directional_light_count++] = light->instance;
}
VSG::scene_render->set_directional_shadow_count(directional_shadow_count);
@@ -2185,20 +1600,7 @@ void VisualServerScene::_render_scene(const Transform p_cam_transform, const Cam
else
environment = scenario->fallback_environment;
-#if 0
- /* STEP 6 - SAMPLE BAKED LIGHT */
-
- bool islinear =false;
- if (environment.is_valid()) {
- islinear = rasterizer->environment_is_fx_enabled(environment,VS::ENV_FX_SRGB);
- }
-
- for(int i=0;i<light_samplers_culled;i++) {
-
- _process_sampled_light(camera->transform,light_sampler_cull_result[i],islinear);
- }
-#endif
- /* STEP 7 - PROCESS GEOMETRY AND DRAW SCENE*/
+ /* STEP 6 - PROCESS GEOMETRY AND DRAW SCENE*/
VSG::scene_render->render_scene(p_cam_transform, p_cam_projection, p_cam_orthogonal, (RasterizerScene::InstanceBase **)instance_cull_result, cull_count, light_instance_cull_result, light_cull_count + directional_light_count, reflection_probe_instance_cull_result, reflection_probe_cull_count, environment, p_shadow_atlas, scenario->reflection_atlas, p_reflection_probe, p_reflection_probe_pass);
}
@@ -2645,11 +2047,11 @@ static float _get_normal_advance(const Vector3 &p_normal) {
return 1.0 / normal.dot(unorm);
}
-void VisualServerScene::_bake_gi_probe_light(const GIProbeDataHeader *header, const GIProbeDataCell *cells, InstanceGIProbeData::LocalData *local_data, const uint32_t *leaves, int leaf_count, const InstanceGIProbeData::LightCache &light_cache, int sign) {
+void VisualServerScene::_bake_gi_probe_light(const GIProbeDataHeader *header, const GIProbeDataCell *cells, InstanceGIProbeData::LocalData *local_data, const uint32_t *leaves, int p_leaf_count, const InstanceGIProbeData::LightCache &light_cache, int p_sign) {
- int light_r = int(light_cache.color.r * light_cache.energy * 1024.0) * sign;
- int light_g = int(light_cache.color.g * light_cache.energy * 1024.0) * sign;
- int light_b = int(light_cache.color.b * light_cache.energy * 1024.0) * sign;
+ int light_r = int(light_cache.color.r * light_cache.energy * 1024.0) * p_sign;
+ int light_g = int(light_cache.color.g * light_cache.energy * 1024.0) * p_sign;
+ int light_b = int(light_cache.color.b * light_cache.energy * 1024.0) * p_sign;
float limits[3] = { float(header->width), float(header->height), float(header->depth) };
Plane clip[3];
@@ -2685,7 +2087,7 @@ void VisualServerScene::_bake_gi_probe_light(const GIProbeDataHeader *header, co
uint64_t us = OS::get_singleton()->get_ticks_usec();
- for (int i = 0; i < leaf_count; i++) {
+ for (int i = 0; i < p_leaf_count; i++) {
uint32_t idx = leaves[i];
@@ -2750,7 +2152,7 @@ void VisualServerScene::_bake_gi_probe_light(const GIProbeDataHeader *header, co
float local_radius = light_cache.radius * light_cache.transform.basis.get_axis(2).length();
- for (int i = 0; i < leaf_count; i++) {
+ for (int i = 0; i < p_leaf_count; i++) {
uint32_t idx = leaves[i];
@@ -3278,8 +2680,9 @@ void VisualServerScene::render_probes() {
void VisualServerScene::_update_dirty_instance(Instance *p_instance) {
- if (p_instance->update_aabb)
+ if (p_instance->update_aabb) {
_update_instance_aabb(p_instance);
+ }
if (p_instance->update_materials) {
@@ -3469,7 +2872,6 @@ bool VisualServerScene::free(RID p_rid) {
Instance *instance = instance_owner.get(p_rid);
- instance_set_room(p_rid, RID());
instance_set_scenario(p_rid, RID());
instance_set_base(p_rid, RID());
instance_geometry_set_material_override(p_rid, RID());
diff --git a/servers/visual/visual_server_scene.h b/servers/visual/visual_server_scene.h
index a4895382a4..ac771030cf 100644
--- a/servers/visual/visual_server_scene.h
+++ b/servers/visual/visual_server_scene.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -54,6 +54,8 @@ public:
uint64_t render_pass;
static VisualServerScene *singleton;
+
+// FIXME: Kept as reference for future implementation
#if 0
struct Portal {
@@ -137,38 +139,6 @@ public:
virtual void camera_set_environment(RID p_camera, RID p_env);
virtual void camera_set_use_vertical_aspect(RID p_camera, bool p_enable);
- /*
-
- struct RoomInfo {
-
- Transform affine_inverse;
- Room *room;
- List<Instance*> owned_geometry_instances;
- List<Instance*> owned_portal_instances;
- List<Instance*> owned_room_instances;
- List<Instance*> owned_light_instances; //not used, but just for the sake of it
- Set<Instance*> disconnected_child_portals;
- Set<Instance*> owned_autoroom_geometry;
- uint64_t last_visited_pass;
- RoomInfo() { last_visited_pass=0; }
-
- };
-
- struct InstancePortal {
-
- Portal *portal;
- Set<Instance*> candidate_set;
- Instance *connected;
- uint64_t last_visited_pass;
-
- Plane plane_cache;
- Vector<Vector3> transformed_point_cache;
-
-
- PortalInfo() { connected=NULL; last_visited_pass=0;}
- };
-*/
-
/* SCENARIO API */
struct Instance;
@@ -236,10 +206,6 @@ public:
float lod_end_hysteresis;
RID lod_instance;
- Instance *room;
- SelfList<Instance> room_item;
- bool visible_in_all_rooms;
-
uint64_t last_render_pass;
uint64_t last_frame_pass;
@@ -263,7 +229,7 @@ public:
}
Instance()
- : scenario_item(this), update_item(this), room_item(this) {
+ : scenario_item(this), update_item(this) {
octree_id = 0;
scenario = NULL;
@@ -281,9 +247,6 @@ public:
lod_begin_hysteresis = 0;
lod_end_hysteresis = 0;
- room = NULL;
- visible_in_all_rooms = false;
-
last_render_pass = 0;
last_frame_pass = 0;
version = 1;
@@ -496,7 +459,6 @@ public:
virtual void instance_attach_skeleton(RID p_instance, RID p_skeleton);
virtual void instance_set_exterior(RID p_instance, bool p_enabled);
- virtual void instance_set_room(RID p_instance, RID p_room);
virtual void instance_set_extra_visibility_margin(RID p_instance, real_t p_margin);
@@ -567,7 +529,7 @@ public:
_FORCE_INLINE_ uint32_t _gi_bake_find_cell(const GIProbeDataCell *cells, int x, int y, int z, int p_cell_subdiv);
void _bake_gi_downscale_light(int p_idx, int p_level, const GIProbeDataCell *p_cells, const GIProbeDataHeader *p_header, InstanceGIProbeData::LocalData *p_local_data, float p_propagate);
void _bake_gi_probe_light(const GIProbeDataHeader *header, const GIProbeDataCell *cells, InstanceGIProbeData::LocalData *local_data, const uint32_t *leaves, int p_leaf_count, const InstanceGIProbeData::LightCache &light_cache, int p_sign);
- void _bake_gi_probe(Instance *p_probe);
+ void _bake_gi_probe(Instance *p_gi_probe);
bool _check_gi_probe(Instance *p_gi_probe);
void _setup_gi_probe(Instance *p_instance);
diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp
index ad9dec090a..0dca09a5bf 100644
--- a/servers/visual/visual_server_viewport.cpp
+++ b/servers/visual/visual_server_viewport.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "visual_server_viewport.h"
+
#include "project_settings.h"
#include "visual_server_canvas.h"
#include "visual_server_global.h"
@@ -51,36 +52,6 @@ void VisualServerViewport::_draw_viewport(Viewport *p_viewport, ARVRInterface::E
}
bool can_draw_3d = !p_viewport->disable_3d && !p_viewport->disable_3d_by_usage && VSG::scene->camera_owner.owns(p_viewport->camera);
-#if 0
-
-
-
- if (scenario_draw_canvas_bg) {
-
- rasterizer->begin_canvas_bg();
- }
-
- if (!scenario_draw_canvas_bg && can_draw_3d) {
-
- _draw_viewport_camera(p_viewport,false);
-
- } else if (true /*|| !p_viewport->canvas_list.empty()*/){
-
- //clear the viewport black because of no camera? i seriously should..
- if (p_viewport->render_target_clear_on_new_frame || p_viewport->render_target_clear) {
- if (p_viewport->transparent_bg) {
- rasterizer->clear_viewport(Color(0,0,0,0));
- }
- else {
- Color cc=clear_color;
- if (scenario_draw_canvas_bg)
- cc.a=0;
- rasterizer->clear_viewport(cc);
- }
- p_viewport->render_target_clear=false;
- }
- }
-#endif
if (p_viewport->clear_mode != VS::VIEWPORT_CLEAR_NEVER) {
VSG::rasterizer->clear_render_target(clear_color);
diff --git a/servers/visual/visual_server_viewport.h b/servers/visual/visual_server_viewport.h
index 93227d1c31..8a294a9129 100644
--- a/servers/visual/visual_server_viewport.h
+++ b/servers/visual/visual_server_viewport.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/servers/visual/visual_server_wrap_mt.cpp b/servers/visual/visual_server_wrap_mt.cpp
index 827f47a16e..d9a0077e60 100644
--- a/servers/visual/visual_server_wrap_mt.cpp
+++ b/servers/visual/visual_server_wrap_mt.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* */
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index 20223f9651..7143178b04 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* */
@@ -225,6 +225,7 @@ public:
FUNC2(light_set_projector, RID, RID)
FUNC2(light_set_negative, RID, bool)
FUNC2(light_set_cull_mask, RID, uint32_t)
+ FUNC2(light_set_reverse_cull_face_mode, RID, bool)
FUNC2(light_omni_set_shadow_mode, RID, LightOmniShadowMode)
FUNC2(light_omni_set_shadow_detail, RID, LightOmniShadowDetail)
@@ -249,23 +250,6 @@ public:
FUNC2(reflection_probe_set_enable_shadows, RID, bool)
FUNC2(reflection_probe_set_cull_mask, RID, uint32_t)
- /* ROOM API */
-
- FUNC0R(RID, room_create)
- FUNC4(room_add_bounds, RID, const PoolVector<Vector2> &, float, const Transform &)
- FUNC1(room_clear_bounds, RID)
-
- /* PORTAL API */
-
- // portals are only (x/y) points, forming a convex shape, which its clockwise
- // order points outside. (z is 0);
-
- FUNC0R(RID, portal_create)
- FUNC2(portal_set_shape, RID, const Vector<Point2> &)
- FUNC2(portal_set_enabled, RID, bool)
- FUNC2(portal_set_disable_distance, RID, float)
- FUNC2(portal_set_disabled_color, RID, const Color &)
-
/* BAKED LIGHT API */
FUNC0R(RID, gi_probe_create)
@@ -437,7 +421,6 @@ public:
FUNC2(instance_attach_skeleton, RID, RID)
FUNC2(instance_set_exterior, RID, bool)
- FUNC2(instance_set_room, RID, RID)
FUNC2(instance_set_extra_visibility_margin, RID, real_t)
@@ -482,7 +465,7 @@ public:
FUNC8(canvas_item_add_texture_rect_region, RID, const Rect2 &, RID, const Rect2 &, const Color &, bool, RID, bool)
FUNC11(canvas_item_add_nine_patch, RID, const Rect2 &, const Rect2 &, RID, const Vector2 &, const Vector2 &, NinePatchAxisMode, NinePatchAxisMode, bool, const Color &, RID)
FUNC7(canvas_item_add_primitive, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, float, RID)
- FUNC6(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID)
+ FUNC7(canvas_item_add_polygon, RID, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, RID, bool)
FUNC8(canvas_item_add_triangle_array, RID, const Vector<int> &, const Vector<Point2> &, const Vector<Color> &, const Vector<Point2> &, RID, int, RID)
FUNC3(canvas_item_add_mesh, RID, const RID &, RID)
FUNC3(canvas_item_add_multimesh, RID, RID, RID)
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp
index 65dd4d7661..777feffb06 100644
--- a/servers/visual_server.cpp
+++ b/servers/visual_server.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -28,6 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "visual_server.h"
+
#include "method_bind_ext.gen.inc"
#include "project_settings.h"
@@ -39,25 +40,6 @@ VisualServer *VisualServer::get_singleton() {
return singleton;
}
-PoolVector<String> VisualServer::_shader_get_param_list(RID p_shader) const {
-
- //remove at some point
-
- PoolVector<String> pl;
-
-#if 0
- List<StringName> params;
- shader_get_param_list(p_shader,&params);
-
-
- for(List<StringName>::Element *E=params.front();E;E=E->next()) {
-
- pl.push_back(E->get());
- }
-#endif
- return pl;
-}
-
VisualServer *VisualServer::create() {
ERR_FAIL_COND_V(singleton, NULL);
@@ -298,6 +280,9 @@ RID VisualServer::get_white_texture() {
return white_texture;
}
+#define SMALL_VEC2 Vector2(0.00001, 0.00001)
+#define SMALL_VEC3 Vector3(0.00001, 0.00001, 0.00001)
+
Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_t *p_offsets, uint32_t p_stride, PoolVector<uint8_t> &r_vertex_array, int p_vertex_array_len, PoolVector<uint8_t> &r_index_array, int p_index_array_len, Rect3 &r_aabb, Vector<Rect3> r_bone_aabb) {
PoolVector<uint8_t>::Write vw = r_vertex_array.write();
@@ -339,7 +324,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
if (i == 0) {
- aabb = Rect2(src[i], Vector2());
+ aabb = Rect2(src[i], SMALL_VEC2); //must have a bit of size
} else {
aabb.expand_to(src[i]);
@@ -355,7 +340,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
if (i == 0) {
- aabb = Rect2(src[i], Vector2());
+ aabb = Rect2(src[i], SMALL_VEC2); //must have a bit of size
} else {
aabb.expand_to(src[i]);
@@ -385,7 +370,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
if (i == 0) {
- aabb = Rect3(src[i], Vector3());
+ aabb = Rect3(src[i], SMALL_VEC3);
} else {
aabb.expand_to(src[i]);
@@ -401,7 +386,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
if (i == 0) {
- aabb = Rect3(src[i], Vector3());
+ aabb = Rect3(src[i], SMALL_VEC3);
} else {
aabb.expand_to(src[i]);
@@ -733,8 +718,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
if (bptr->size.x < 0) {
//first
- bptr[idx] = Rect3();
- bptr[idx].position = v;
+ bptr[idx] = Rect3(v, SMALL_VEC3);
any_valid = true;
} else {
bptr[idx].expand_to(v);
@@ -1464,7 +1448,6 @@ void VisualServer::_camera_set_orthogonal(RID p_camera, float p_size, float p_z_
void VisualServer::mesh_add_surface_from_mesh_data(RID p_mesh, const Geometry::MeshData &p_mesh_data) {
-#if 1
PoolVector<Vector3> vertices;
PoolVector<Vector3> normals;
@@ -1489,24 +1472,6 @@ void VisualServer::mesh_add_surface_from_mesh_data(RID p_mesh, const Geometry::M
d[ARRAY_VERTEX] = vertices;
d[ARRAY_NORMAL] = normals;
mesh_add_surface_from_arrays(p_mesh, PRIMITIVE_TRIANGLES, d);
-
-#else
-
- PoolVector<Vector3> vertices;
-
- for (int i = 0; i < p_mesh_data.edges.size(); i++) {
-
- const Geometry::MeshData::Edge &f = p_mesh_data.edges[i];
- vertices.push_back(p_mesh_data.vertices[f.a]);
- vertices.push_back(p_mesh_data.vertices[f.b]);
- }
-
- Array d;
- d.resize(VS::ARRAY_MAX);
- d[ARRAY_VERTEX] = vertices;
- mesh_add_surface(p_mesh, PRIMITIVE_LINES, d);
-
-#endif
}
void VisualServer::mesh_add_surface_from_planes(RID p_mesh, const PoolVector<Plane> &p_planes) {
diff --git a/servers/visual_server.h b/servers/visual_server.h
index ddf32a9ea1..acf5675aa5 100644
--- a/servers/visual_server.h
+++ b/servers/visual_server.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
@@ -49,7 +49,6 @@ class VisualServer : public Object {
int mm_policy;
- PoolVector<String> _shader_get_param_list(RID p_shader) const;
void _camera_set_orthogonal(RID p_camera, float p_size, float p_z_near, float p_z_far);
void _canvas_item_add_style_box(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector<float> &p_margins, const Color &p_modulate = Color(1, 1, 1));
Array _get_array_from_surface(uint32_t p_format, PoolVector<uint8_t> p_vertex_data, int p_vertex_len, PoolVector<uint8_t> p_index_data, int p_index_len) const;
@@ -359,6 +358,7 @@ public:
LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET,
LIGHT_PARAM_SHADOW_NORMAL_BIAS,
LIGHT_PARAM_SHADOW_BIAS,
+ LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE,
LIGHT_PARAM_MAX
};
@@ -371,6 +371,7 @@ public:
virtual void light_set_projector(RID p_light, RID p_texture) = 0;
virtual void light_set_negative(RID p_light, bool p_enable) = 0;
virtual void light_set_cull_mask(RID p_light, uint32_t p_mask) = 0;
+ virtual void light_set_reverse_cull_face_mode(RID p_light, bool p_enabled) = 0;
// omni light
enum LightOmniShadowMode {
@@ -420,23 +421,6 @@ public:
virtual void reflection_probe_set_enable_shadows(RID p_probe, bool p_enable) = 0;
virtual void reflection_probe_set_cull_mask(RID p_probe, uint32_t p_layers) = 0;
- /* ROOM API */
-
- virtual RID room_create() = 0;
- virtual void room_add_bounds(RID p_room, const PoolVector<Vector2> &p_convex_polygon, float p_height, const Transform &p_transform) = 0;
- virtual void room_clear_bounds(RID p_room) = 0;
-
- /* PORTAL API */
-
- // portals are only (x/y) points, forming a convex shape, which its clockwise
- // order points outside. (z is 0);
-
- virtual RID portal_create() = 0;
- virtual void portal_set_shape(RID p_portal, const Vector<Point2> &p_shape) = 0;
- virtual void portal_set_enabled(RID p_portal, bool p_enabled) = 0;
- virtual void portal_set_disable_distance(RID p_portal, float p_distance) = 0;
- virtual void portal_set_disabled_color(RID p_portal, const Color &p_color) = 0;
-
/* GI PROBE API */
virtual RID gi_probe_create() = 0;
@@ -708,8 +692,6 @@ public:
INSTANCE_PARTICLES,
INSTANCE_LIGHT,
INSTANCE_REFLECTION_PROBE,
- INSTANCE_ROOM,
- INSTANCE_PORTAL,
INSTANCE_GI_PROBE,
INSTANCE_MAX,
/*INSTANCE_BAKED_LIGHT_SAMPLER,*/
@@ -733,7 +715,6 @@ public:
virtual void instance_attach_skeleton(RID p_instance, RID p_skeleton) = 0;
virtual void instance_set_exterior(RID p_instance, bool p_enabled) = 0;
- virtual void instance_set_room(RID p_instance, RID p_room) = 0;
virtual void instance_set_extra_visibility_margin(RID p_instance, real_t p_margin) = 0;
@@ -743,8 +724,6 @@ public:
virtual Vector<ObjectID> instances_cull_convex(const Vector<Plane> &p_convex, RID p_scenario = RID()) const = 0;
enum InstanceFlags {
- INSTANCE_FLAG_CAST_SHADOW,
- INSTANCE_FLAG_VISIBLE_IN_ALL_ROOMS,
INSTANCE_FLAG_USE_BAKED_LIGHT,
INSTANCE_FLAG_MAX
};
@@ -798,7 +777,7 @@ public:
virtual void canvas_item_add_texture_rect_region(RID p_item, const Rect2 &p_rect, RID p_texture, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, RID p_normal_map = RID(), bool p_clip_uv = true) = 0;
virtual void canvas_item_add_nine_patch(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector2 &p_topleft, const Vector2 &p_bottomright, NinePatchAxisMode p_x_axis_mode = NINE_PATCH_STRETCH, NinePatchAxisMode p_y_axis_mode = NINE_PATCH_STRETCH, bool p_draw_center = true, const Color &p_modulate = Color(1, 1, 1), RID p_normal_map = RID()) = 0;
virtual void canvas_item_add_primitive(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture, float p_width = 1.0, RID p_normal_map = RID()) = 0;
- virtual void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID()) = 0;
+ virtual void canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), RID p_normal_map = RID(), bool p_antialiased = false) = 0;
virtual void canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs = Vector<Point2>(), RID p_texture = RID(), int p_count = -1, RID p_normal_map = RID()) = 0;
virtual void canvas_item_add_mesh(RID p_item, const RID &p_mesh, RID p_skeleton = RID()) = 0;
virtual void canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_skeleton = RID()) = 0;
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 4ed17168e8..56b4a07d9b 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -107,7 +107,7 @@ Files extracted from upstream source:
## libpng
- Upstream: http://libpng.org/pub/png/libpng.html
-- Version: 1.6.31rc01
+- Version: 1.6.32
- License: libpng/zlib
Files extracted from upstream source:
@@ -129,6 +129,19 @@ Files extracted from upstream source:
TODO.
+## libtheora
+
+- Upstream: https://www.theora.org
+- Version: 1.1.1
+- License: BSD-3-Clause
+
+Files extracted from upstream source:
+
+- all .c, .h in lib/
+- all .h files in include/theora/ as theora/
+- COPYING and LICENSE
+
+
## libvorbis
- Upstream: https://www.xiph.org/vorbis
@@ -180,7 +193,8 @@ Files extracted from the upstream source:
- contrib/minizip/{crypt.h,ioapi.{c,h},zip.{c,h},unzip.{c,h}}
Important: Some files have Godot-made changes for use in core/io.
-TODO: Properly sync with version 1.2.4 and document changes.
+They are marked with `/* GODOT start */` and `/* GODOT end */`
+comments and a patch is provided in the minizip/ folder.
## misc
@@ -246,18 +260,30 @@ Collection of single-file libraries used in Godot components.
* License: zlib
- `stb_truetype.h`
* Upstream: https://github.com/nothings/stb
- * Version: 1.11
+ * Version: 1.17
* License: Public Domain (Unlicense) or MIT
- `stb_vorbis.c`
* Upstream: https://github.com/nothings/stb
- * Version: 1.09
+ * Version: 1.11
* License: Public Domain (Unlicense) or MIT
+## nanosvg
+
+- Upstream: https://github.com/memononen/nanosvg
+- Version: 9a74da4 (git)
+- License: zlib
+
+Files extracted from the upstream source:
+
+- All .h files in `src/`
+- LICENSE.txt
+
+
## openssl
- Upstream: https://www.openssl.org
-- Version: 1.0.2h
+- Version: 1.0.2l
- License: OpenSSL license / BSD-like
Files extracted from the upstream source:
@@ -330,19 +356,6 @@ Files extracted from upstream source:
- all .cpp, .h and .inl files
-## theora
-
-- Upstream: https://www.theora.org
-- Version: 1.1.1
-- License: BSD-3-Clause
-
-Files extracted from upstream source:
-
-- all .c, .h in lib/
-- all .h files in include/theora/ as theora/
-- COPYING and LICENSE
-
-
## tinyexr
- Upstream: https://github.com/syoyo/tinyexr
@@ -368,13 +381,14 @@ Files extracted from upstream source:
- all .c and .h files
+
## zstd
- Upstream: https://github.com/facebook/zstd
-- Version: 1.3.0
+- Version: 1.3.1
- License: BSD-3-Clause
Files extracted from upstream source:
-- all .c and .h under lib/
-- README.md, LICENSE, PATENTS
+- lib/{common/,compress/,decompress/,zstd.h}
+- README.md, LICENSE
diff --git a/thirdparty/enet/enet/godot.h b/thirdparty/enet/enet/godot.h
index 75645153dd..937c4fa60e 100644
--- a/thirdparty/enet/enet/godot.h
+++ b/thirdparty/enet/enet/godot.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/thirdparty/enet/godot.cpp b/thirdparty/enet/godot.cpp
index f050b7b916..2fc264345b 100644
--- a/thirdparty/enet/godot.cpp
+++ b/thirdparty/enet/godot.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/thirdparty/libpng/arm/filter_neon.S b/thirdparty/libpng/arm/filter_neon.S
index 09267c6030..000764cd21 100644
--- a/thirdparty/libpng/arm/filter_neon.S
+++ b/thirdparty/libpng/arm/filter_neon.S
@@ -3,7 +3,7 @@
*
* Copyright (c) 2014,2017 Glenn Randers-Pehrson
* Written by Mans Rullgard, 2011.
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.31 [July 27, 2017]
*
* This code is released under the libpng license.
* For conditions of distribution and use, see the disclaimer
diff --git a/thirdparty/libpng/png.c b/thirdparty/libpng/png.c
index 87fda0b306..2352df13cb 100644
--- a/thirdparty/libpng/png.c
+++ b/thirdparty/libpng/png.c
@@ -1,7 +1,7 @@
/* png.c - location for general purpose libpng functions
*
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.32 [August 24, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -14,7 +14,7 @@
#include "pngpriv.h"
/* Generate a compiler error if there is an old png.h in the search path. */
-typedef png_libpng_version_1_6_31rc01 Your_png_h_is_not_version_1_6_31rc01;
+typedef png_libpng_version_1_6_32 Your_png_h_is_not_version_1_6_32;
#ifdef __GNUC__
/* The version tests may need to be added to, but the problem warning has
@@ -619,8 +619,18 @@ png_free_data(png_const_structrp png_ptr, png_inforp info_ptr, png_uint_32 mask,
/* Free any eXIf entry */
if (((mask & PNG_FREE_EXIF) & info_ptr->free_me) != 0)
{
- png_free(png_ptr, info_ptr->exif);
- info_ptr->exif = NULL;
+# ifdef PNG_READ_eXIf_SUPPORTED
+ if (info_ptr->eXIf_buf)
+ {
+ png_free(png_ptr, info_ptr->eXIf_buf);
+ info_ptr->eXIf_buf = NULL;
+ }
+# endif
+ if (info_ptr->exif)
+ {
+ png_free(png_ptr, info_ptr->exif);
+ info_ptr->exif = NULL;
+ }
info_ptr->valid &= ~PNG_INFO_eXIf;
}
#endif
@@ -806,14 +816,14 @@ png_get_copyright(png_const_structrp png_ptr)
#else
# ifdef __STDC__
return PNG_STRING_NEWLINE \
- "libpng version 1.6.31rc01 - July 19, 2017" PNG_STRING_NEWLINE \
+ "libpng version 1.6.32 - August 24, 2017" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson" \
PNG_STRING_NEWLINE \
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
PNG_STRING_NEWLINE;
# else
- return "libpng version 1.6.31rc01 - July 19, 2017\
+ return "libpng version 1.6.32 - August 24, 2017\
Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson\
Copyright (c) 1996-1997 Andreas Dilger\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.";
diff --git a/thirdparty/libpng/png.h b/thirdparty/libpng/png.h
index 80ecc82c3a..51ac8abe74 100644
--- a/thirdparty/libpng/png.h
+++ b/thirdparty/libpng/png.h
@@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
- * libpng version 1.6.31rc01, July 19, 2017
+ * libpng version 1.6.32, August 24, 2017
*
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -12,7 +12,7 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
- * libpng versions 0.97, January 1998, through 1.6.31rc01, July 19, 2017:
+ * libpng versions 0.97, January 1998, through 1.6.32, August 24, 2017:
* Glenn Randers-Pehrson.
* See also "Contributing Authors", below.
*/
@@ -25,7 +25,7 @@
*
* This code is released under the libpng license.
*
- * libpng versions 1.0.7, July 1, 2000 through 1.6.31rc01, July 19, 2017 are
+ * libpng versions 1.0.7, July 1, 2000 through 1.6.32, August 24, 2017 are
* Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are
* derived from libpng-1.0.6, and are distributed according to the same
* disclaimer and license as libpng-1.0.6 with the following individuals
@@ -213,7 +213,7 @@
* ...
* 1.5.28 15 10527 15.so.15.28[.0]
* ...
- * 1.6.31 16 10631 16.so.16.31[.0]
+ * 1.6.32 16 10632 16.so.16.32[.0]
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
@@ -241,13 +241,13 @@
* Y2K compliance in libpng:
* =========================
*
- * July 19, 2017
+ * August 24, 2017
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
- * upward through 1.6.31rc01 are Y2K compliant. It is my belief that
+ * upward through 1.6.32 are Y2K compliant. It is my belief that
* earlier versions were also Y2K compliant.
*
* Libpng only has two year fields. One is a 2-byte unsigned integer
@@ -309,8 +309,8 @@
*/
/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.6.31rc01"
-#define PNG_HEADER_VERSION_STRING " libpng version 1.6.31rc01 - July 19, 2017\n"
+#define PNG_LIBPNG_VER_STRING "1.6.32"
+#define PNG_HEADER_VERSION_STRING " libpng version 1.6.32 - August 24, 2017\n"
#define PNG_LIBPNG_VER_SONUM 16
#define PNG_LIBPNG_VER_DLLNUM 16
@@ -318,13 +318,13 @@
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
#define PNG_LIBPNG_VER_MAJOR 1
#define PNG_LIBPNG_VER_MINOR 6
-#define PNG_LIBPNG_VER_RELEASE 31
+#define PNG_LIBPNG_VER_RELEASE 32
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
*/
-#define PNG_LIBPNG_VER_BUILD 01
+#define PNG_LIBPNG_VER_BUILD 0
/* Release Status */
#define PNG_LIBPNG_BUILD_ALPHA 1
@@ -341,7 +341,7 @@
#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with
PNG_LIBPNG_BUILD_PRIVATE */
-#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_RC
+#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_STABLE
/* Careful here. At one time, Guy wanted to use 082, but that would be octal.
* We must not include leading zeros.
@@ -349,7 +349,7 @@
* version 1.0.0 was mis-numbered 100 instead of 10000). From
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release
*/
-#define PNG_LIBPNG_VER 10631 /* 1.6.31 */
+#define PNG_LIBPNG_VER 10632 /* 1.6.32 */
/* Library configuration: these options cannot be changed after
* the library has been built.
@@ -459,7 +459,7 @@ extern "C" {
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
-typedef char* png_libpng_version_1_6_31rc01;
+typedef char* png_libpng_version_1_6_32;
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
*
@@ -2014,6 +2014,11 @@ PNG_EXPORT(246, png_uint_32, png_get_eXIf, (png_const_structrp png_ptr,
png_inforp info_ptr, png_bytep *exif));
PNG_EXPORT(247, void, png_set_eXIf, (png_const_structrp png_ptr,
png_inforp info_ptr, const png_bytep exif));
+
+PNG_EXPORT(248, png_uint_32, png_get_eXIf_1, (png_const_structrp png_ptr,
+ png_const_inforp info_ptr, png_uint_32 *num_exif, png_bytep *exif));
+PNG_EXPORT(249, void, png_set_eXIf_1, (png_const_structrp png_ptr,
+ png_inforp info_ptr, const png_uint_32 num_exif, const png_bytep exif));
#endif
#ifdef PNG_gAMA_SUPPORTED
@@ -3259,7 +3264,7 @@ PNG_EXPORT(244, int, png_set_option, (png_structrp png_ptr, int option,
* one to use is one more than this.)
*/
#ifdef PNG_EXPORT_LAST_ORDINAL
- PNG_EXPORT_LAST_ORDINAL(247);
+ PNG_EXPORT_LAST_ORDINAL(249);
#endif
#ifdef __cplusplus
diff --git a/thirdparty/libpng/pngconf.h b/thirdparty/libpng/pngconf.h
index 9308d6a60a..c0f15547be 100644
--- a/thirdparty/libpng/pngconf.h
+++ b/thirdparty/libpng/pngconf.h
@@ -1,7 +1,7 @@
/* pngconf.h - machine configurable file for libpng
*
- * libpng version 1.6.31rc01, July 19, 2017
+ * libpng version 1.6.32, August 24, 2017
*
* Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/thirdparty/libpng/pngerror.c b/thirdparty/libpng/pngerror.c
index 37f26c6558..ad48bfb986 100644
--- a/thirdparty/libpng/pngerror.c
+++ b/thirdparty/libpng/pngerror.c
@@ -1,7 +1,7 @@
/* pngerror.c - stub functions for i/o and memory allocation
*
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.31 [July 27, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
diff --git a/thirdparty/libpng/pngget.c b/thirdparty/libpng/pngget.c
index ace9e6351f..26e9fb1c35 100644
--- a/thirdparty/libpng/pngget.c
+++ b/thirdparty/libpng/pngget.c
@@ -1,8 +1,8 @@
/* pngget.c - retrieval of values from info struct
*
- * Last changed in libpng 1.6.26 [October 20, 2016]
- * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
+ * Last changed in libpng 1.6.32 [August 24, 2017]
+ * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -778,11 +778,22 @@ png_uint_32 PNGAPI
png_get_eXIf(png_const_structrp png_ptr, png_inforp info_ptr,
png_bytep *exif)
{
+ png_warning(png_ptr, "png_get_eXIf does not work; use png_get_eXIf_1");
+ PNG_UNUSED(info_ptr)
+ PNG_UNUSED(exif)
+ return 0;
+}
+
+png_uint_32 PNGAPI
+png_get_eXIf_1(png_const_structrp png_ptr, png_const_inforp info_ptr,
+ png_uint_32 *num_exif, png_bytep *exif)
+{
png_debug1(1, "in %s retrieval function", "eXIf");
if (png_ptr != NULL && info_ptr != NULL &&
(info_ptr->valid & PNG_INFO_eXIf) != 0 && exif != NULL)
{
+ *num_exif = info_ptr->num_exif;
*exif = info_ptr->exif;
return (PNG_INFO_eXIf);
}
diff --git a/thirdparty/libpng/pnginfo.h b/thirdparty/libpng/pnginfo.h
index 6e6d46a62b..d5f6149dbd 100644
--- a/thirdparty/libpng/pnginfo.h
+++ b/thirdparty/libpng/pnginfo.h
@@ -186,8 +186,11 @@ defined(PNG_READ_BACKGROUND_SUPPORTED)
#endif
#ifdef PNG_eXIf_SUPPORTED
- int num_exif;
+ int num_exif; /* Added at libpng-1.6.31 */
png_bytep exif;
+# ifdef PNG_READ_eXIf_SUPPORTED
+ png_bytep eXIf_buf; /* Added at libpng-1.6.32 */
+# endif
#endif
#ifdef PNG_hIST_SUPPORTED
diff --git a/thirdparty/libpng/pnglibconf.h b/thirdparty/libpng/pnglibconf.h
index 8738ebdfc2..9e45f73129 100644
--- a/thirdparty/libpng/pnglibconf.h
+++ b/thirdparty/libpng/pnglibconf.h
@@ -1,8 +1,8 @@
-/* libpng 1.6.31rc01 STANDARD API DEFINITION */
+/* libpng 1.6.32 STANDARD API DEFINITION */
/* pnglibconf.h - library build configuration */
-/* Libpng version 1.6.31rc01 - July 19, 2017 */
+/* Libpng version 1.6.32 - August 24, 2017 */
/* Copyright (c) 1998-2017 Glenn Randers-Pehrson */
diff --git a/thirdparty/libpng/pngpread.c b/thirdparty/libpng/pngpread.c
index 650ba1e232..fbe361dc34 100644
--- a/thirdparty/libpng/pngpread.c
+++ b/thirdparty/libpng/pngpread.c
@@ -1,8 +1,8 @@
/* pngpread.c - read a png file in push mode
*
- * Last changed in libpng 1.6.24 [August 4, 2016]
- * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
+ * Last changed in libpng 1.6.32 [August 24, 2017]
+ * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -189,6 +189,7 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr)
png_crc_read(png_ptr, chunk_tag, 4);
png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag);
png_check_chunk_name(png_ptr, png_ptr->chunk_name);
+ png_check_chunk_length(png_ptr, png_ptr->push_length);
png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
}
diff --git a/thirdparty/libpng/pngpriv.h b/thirdparty/libpng/pngpriv.h
index 7c273bd5e3..1f2e90f2b3 100644
--- a/thirdparty/libpng/pngpriv.h
+++ b/thirdparty/libpng/pngpriv.h
@@ -1,7 +1,7 @@
/* pngpriv.h - private declarations for use inside libpng
*
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.32 [August 24, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -1143,6 +1143,11 @@ PNG_INTERNAL_FUNCTION(void,png_write_sRGB,(png_structrp png_ptr,
int intent),PNG_EMPTY);
#endif
+#ifdef PNG_WRITE_eXIf_SUPPORTED
+PNG_INTERNAL_FUNCTION(void,png_write_eXIf,(png_structrp png_ptr,
+ png_bytep exif, int num_exif),PNG_EMPTY);
+#endif
+
#ifdef PNG_WRITE_iCCP_SUPPORTED
PNG_INTERNAL_FUNCTION(void,png_write_iCCP,(png_structrp png_ptr,
png_const_charp name, png_const_bytep profile), PNG_EMPTY);
@@ -1522,8 +1527,11 @@ PNG_INTERNAL_FUNCTION(void,png_handle_zTXt,(png_structrp png_ptr,
png_inforp info_ptr, png_uint_32 length),PNG_EMPTY);
#endif
-PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_structrp png_ptr,
- png_uint_32 chunk_name),PNG_EMPTY);
+PNG_INTERNAL_FUNCTION(void,png_check_chunk_name,(png_const_structrp png_ptr,
+ const png_uint_32 chunk_name),PNG_EMPTY);
+
+PNG_INTERNAL_FUNCTION(void,png_check_chunk_length,(png_const_structrp png_ptr,
+ const png_uint_32 chunk_length),PNG_EMPTY);
PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr,
png_inforp info_ptr, png_uint_32 length, int keep),PNG_EMPTY);
diff --git a/thirdparty/libpng/pngread.c b/thirdparty/libpng/pngread.c
index b44d4dfbb5..e34ddd99a0 100644
--- a/thirdparty/libpng/pngread.c
+++ b/thirdparty/libpng/pngread.c
@@ -1,7 +1,7 @@
/* pngread.c - read a PNG file
*
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.32 [August 24, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -175,6 +175,11 @@ png_read_info(png_structrp png_ptr, png_inforp info_ptr)
png_handle_cHRM(png_ptr, info_ptr, length);
#endif
+#ifdef PNG_READ_eXIf_SUPPORTED
+ else if (chunk_name == png_eXIf)
+ png_handle_eXIf(png_ptr, info_ptr, length);
+#endif
+
#ifdef PNG_READ_gAMA_SUPPORTED
else if (chunk_name == png_gAMA)
png_handle_gAMA(png_ptr, info_ptr, length);
@@ -534,6 +539,7 @@ png_read_row(png_structrp png_ptr, png_bytep row, png_bytep dsp_row)
png_error(png_ptr, "Invalid attempt to read row data");
/* Fill the row with IDAT data: */
+ png_ptr->row_buf[0]=255; /* to force error if no data was found */
png_read_IDAT_data(png_ptr, png_ptr->row_buf, row_info.rowbytes + 1);
if (png_ptr->row_buf[0] > PNG_FILTER_VALUE_NONE)
@@ -842,6 +848,11 @@ png_read_end(png_structrp png_ptr, png_inforp info_ptr)
png_handle_cHRM(png_ptr, info_ptr, length);
#endif
+#ifdef PNG_READ_eXIf_SUPPORTED
+ else if (chunk_name == png_eXIf)
+ png_handle_eXIf(png_ptr, info_ptr, length);
+#endif
+
#ifdef PNG_READ_gAMA_SUPPORTED
else if (chunk_name == png_gAMA)
png_handle_gAMA(png_ptr, info_ptr, length);
diff --git a/thirdparty/libpng/pngrtran.c b/thirdparty/libpng/pngrtran.c
index 9285983848..9a30ddf22b 100644
--- a/thirdparty/libpng/pngrtran.c
+++ b/thirdparty/libpng/pngrtran.c
@@ -1,7 +1,7 @@
/* pngrtran.c - transforms the data in a row for PNG readers
*
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.31 [July 27, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
diff --git a/thirdparty/libpng/pngrutil.c b/thirdparty/libpng/pngrutil.c
index 9cde64845c..a4fa71457b 100644
--- a/thirdparty/libpng/pngrutil.c
+++ b/thirdparty/libpng/pngrutil.c
@@ -1,7 +1,7 @@
/* pngrutil.c - utilities to read a PNG file
*
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.32 [August 24, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -181,6 +181,9 @@ png_read_chunk_header(png_structrp png_ptr)
/* Check to see if chunk name is valid. */
png_check_chunk_name(png_ptr, png_ptr->chunk_name);
+ /* Check for too-large chunk length */
+ png_check_chunk_length(png_ptr, length);
+
#ifdef PNG_IO_STATE_SUPPORTED
png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_DATA;
#endif
@@ -1377,11 +1380,13 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
* chunk is just ignored, so does not invalidate the color space. An
* alternative is to set the 'invalid' flags at the start of this routine
* and only clear them in they were not set before and all the tests pass.
- * The minimum 'deflate' stream is assumed to be just the 2 byte header and
- * 4 byte checksum. The keyword must be at least one character and there is
- * a terminator (0) byte and the compression method.
*/
- if (length < 9)
+
+ /* The keyword must be at least one character and there is a
+ * terminator (0) byte and the compression method byte, and the
+ * 'zlib' datastream is at least 11 bytes.
+ */
+ if (length < 14)
{
png_crc_finish(png_ptr, length);
png_chunk_benign_error(png_ptr, "too short");
@@ -1413,6 +1418,16 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
png_crc_read(png_ptr, (png_bytep)keyword, read_length);
length -= read_length;
+ /* The minimum 'zlib' stream is assumed to be just the 2 byte header,
+ * 5 bytes minimum 'deflate' stream, and the 4 byte checksum.
+ */
+ if (length < 11)
+ {
+ png_crc_finish(png_ptr, length);
+ png_chunk_benign_error(png_ptr, "too short");
+ return;
+ }
+
keyword_length = 0;
while (keyword_length < 80 && keyword_length < read_length &&
keyword[keyword_length] != 0)
@@ -1431,7 +1446,7 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
if (png_inflate_claim(png_ptr, png_iCCP) == Z_OK)
{
- Byte profile_header[132];
+ Byte profile_header[132]={0};
Byte local_buffer[PNG_INFLATE_BUF_SIZE];
png_alloc_size_t size = (sizeof profile_header);
@@ -2014,36 +2029,61 @@ void /* PRIVATE */
png_handle_eXIf(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
{
unsigned int i;
- png_bytep eXIf_buf;
png_debug(1, "in png_handle_eXIf");
if ((png_ptr->mode & PNG_HAVE_IHDR) == 0)
png_chunk_error(png_ptr, "missing IHDR");
- else if (info_ptr != NULL && (info_ptr->valid & PNG_INFO_eXIf) != 0)
+ if (length < 2)
+ {
+ png_crc_finish(png_ptr, length);
+ png_chunk_benign_error(png_ptr, "too short");
+ return;
+ }
+
+ else if (info_ptr == NULL || (info_ptr->valid & PNG_INFO_eXIf) != 0)
{
png_crc_finish(png_ptr, length);
png_chunk_benign_error(png_ptr, "duplicate");
return;
}
- eXIf_buf = png_voidcast(png_bytep,
+ info_ptr->free_me |= PNG_FREE_EXIF;
+
+ info_ptr->eXIf_buf = png_voidcast(png_bytep,
png_malloc_warn(png_ptr, length));
+ if (info_ptr->eXIf_buf == NULL)
+ {
+ png_crc_finish(png_ptr, length);
+ png_chunk_benign_error(png_ptr, "out of memory");
+ return;
+ }
+
for (i = 0; i < length; i++)
{
png_byte buf[1];
png_crc_read(png_ptr, buf, 1);
- eXIf_buf[i] = buf[0];
+ info_ptr->eXIf_buf[i] = buf[0];
+ if (i == 1 && buf[0] != 'M' && buf[0] != 'I'
+ && info_ptr->eXIf_buf[0] != buf[0])
+ {
+ png_crc_finish(png_ptr, length);
+ png_chunk_benign_error(png_ptr, "incorrect byte-order specifier");
+ png_free(png_ptr, info_ptr->eXIf_buf);
+ info_ptr->eXIf_buf = NULL;
+ return;
+ }
}
if (png_crc_finish(png_ptr, 0) != 0)
return;
- info_ptr->num_exif = length;
+ png_set_eXIf_1(png_ptr, info_ptr, length, info_ptr->eXIf_buf);
- png_set_eXIf(png_ptr, info_ptr, eXIf_buf);
+ png_free(png_ptr, info_ptr->eXIf_buf);
+ info_ptr->eXIf_buf = NULL;
}
#endif
@@ -2624,23 +2664,28 @@ png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
{
png_text text;
- /* It worked; png_ptr->read_buffer now looks like a tEXt chunk except
- * for the extra compression type byte and the fact that it isn't
- * necessarily '\0' terminated.
- */
- buffer = png_ptr->read_buffer;
- buffer[uncompressed_length+(keyword_length+2)] = 0;
-
- text.compression = PNG_TEXT_COMPRESSION_zTXt;
- text.key = (png_charp)buffer;
- text.text = (png_charp)(buffer + keyword_length+2);
- text.text_length = uncompressed_length;
- text.itxt_length = 0;
- text.lang = NULL;
- text.lang_key = NULL;
-
- if (png_set_text_2(png_ptr, info_ptr, &text, 1) != 0)
- errmsg = "insufficient memory";
+ if (png_ptr->read_buffer == NULL)
+ errmsg="Read failure in png_handle_zTXt";
+ else
+ {
+ /* It worked; png_ptr->read_buffer now looks like a tEXt chunk
+ * except for the extra compression type byte and the fact that
+ * it isn't necessarily '\0' terminated.
+ */
+ buffer = png_ptr->read_buffer;
+ buffer[uncompressed_length+(keyword_length+2)] = 0;
+
+ text.compression = PNG_TEXT_COMPRESSION_zTXt;
+ text.key = (png_charp)buffer;
+ text.text = (png_charp)(buffer + keyword_length+2);
+ text.text_length = uncompressed_length;
+ text.itxt_length = 0;
+ text.lang = NULL;
+ text.lang_key = NULL;
+
+ if (png_set_text_2(png_ptr, info_ptr, &text, 1) != 0)
+ errmsg = "insufficient memory";
+ }
}
else
@@ -3076,20 +3121,58 @@ png_handle_unknown(png_structrp png_ptr, png_inforp info_ptr,
*/
void /* PRIVATE */
-png_check_chunk_name(png_structrp png_ptr, png_uint_32 chunk_name)
+png_check_chunk_name(png_const_structrp png_ptr, const png_uint_32 chunk_name)
{
int i;
+ png_uint_32 cn=chunk_name;
png_debug(1, "in png_check_chunk_name");
for (i=1; i<=4; ++i)
{
- int c = chunk_name & 0xff;
+ int c = cn & 0xff;
if (c < 65 || c > 122 || (c > 90 && c < 97))
png_chunk_error(png_ptr, "invalid chunk type");
- chunk_name >>= 8;
+ cn >>= 8;
+ }
+}
+
+void /* PRIVATE */
+png_check_chunk_length(png_const_structrp png_ptr, const png_uint_32 length)
+{
+ png_alloc_size_t limit = PNG_UINT_31_MAX;
+
+ if (png_ptr->chunk_name != png_IDAT)
+ {
+# ifdef PNG_SET_USER_LIMITS_SUPPORTED
+ if (png_ptr->user_chunk_malloc_max > 0 &&
+ png_ptr->user_chunk_malloc_max < limit)
+ limit = png_ptr->user_chunk_malloc_max;
+# elif PNG_USER_CHUNK_MALLOC_MAX > 0
+ if (PNG_USER_CHUNK_MALLOC_MAX < limit)
+ limit = PNG_USER_CHUNK_MALLOC_MAX;
+# endif
+ }
+ else
+ {
+ size_t row_factor =
+ (png_ptr->width * png_ptr->channels * (png_ptr->bit_depth > 8? 2: 1)
+ + 1 + (png_ptr->interlaced? 6: 0));
+ if (png_ptr->height > PNG_UINT_32_MAX/row_factor)
+ limit=PNG_UINT_31_MAX;
+ else
+ limit = png_ptr->height * row_factor;
+ limit += 6 + 5*(limit/32566+1); /* zlib+deflate overhead */
+ limit=limit < PNG_UINT_31_MAX? limit : PNG_UINT_31_MAX;
+ }
+
+ if (length > limit)
+ {
+ png_debug2(0," length = %lu, limit = %lu",
+ (unsigned long)length,(unsigned long)limit);
+ png_chunk_error(png_ptr, "chunk data is too large");
}
}
diff --git a/thirdparty/libpng/pngset.c b/thirdparty/libpng/pngset.c
index 998473557f..6f3a1ee11e 100644
--- a/thirdparty/libpng/pngset.c
+++ b/thirdparty/libpng/pngset.c
@@ -1,7 +1,7 @@
/* pngset.c - storage of image information into info struct
*
- * Last changed in libpng 1.6.30 [June 28, 2017]
+ * Last changed in libpng 1.6.32 [August 24, 2017]
* Copyright (c) 1998-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -139,6 +139,15 @@ void PNGAPI
png_set_eXIf(png_const_structrp png_ptr, png_inforp info_ptr,
const png_bytep eXIf_buf)
{
+ png_warning(png_ptr, "png_set_eXIf does not work; use png_set_eXIf_1");
+ PNG_UNUSED(info_ptr)
+ PNG_UNUSED(eXIf_buf)
+}
+
+void PNGAPI
+png_set_eXIf_1(png_const_structrp png_ptr, png_inforp info_ptr,
+ const png_uint_32 num_exif, const png_bytep eXIf_buf)
+{
int i;
png_debug1(1, "in %s storage function", "eXIf");
@@ -146,7 +155,13 @@ png_set_eXIf(png_const_structrp png_ptr, png_inforp info_ptr,
if (png_ptr == NULL || info_ptr == NULL)
return;
- png_free_data(png_ptr, info_ptr, PNG_FREE_EXIF, 0);
+ if (info_ptr->exif)
+ {
+ png_free(png_ptr, info_ptr->exif);
+ info_ptr->exif = NULL;
+ }
+
+ info_ptr->num_exif = num_exif;
info_ptr->exif = png_voidcast(png_bytep, png_malloc_warn(png_ptr,
info_ptr->num_exif));
@@ -154,13 +169,12 @@ png_set_eXIf(png_const_structrp png_ptr, png_inforp info_ptr,
if (info_ptr->exif == NULL)
{
png_warning(png_ptr, "Insufficient memory for eXIf chunk data");
-
return;
}
info_ptr->free_me |= PNG_FREE_EXIF;
- for (i = 0; i < info_ptr->num_exif; i++)
+ for (i = 0; i < (int) info_ptr->num_exif; i++)
info_ptr->exif[i] = eXIf_buf[i];
info_ptr->valid |= PNG_INFO_eXIf;
@@ -1388,6 +1402,7 @@ png_set_keep_unknown_chunks(png_structrp png_ptr, int keep,
static PNG_CONST png_byte chunks_to_ignore[] = {
98, 75, 71, 68, '\0', /* bKGD */
99, 72, 82, 77, '\0', /* cHRM */
+ 101, 88, 73, 102, '\0', /* eXIf */
103, 65, 77, 65, '\0', /* gAMA */
104, 73, 83, 84, '\0', /* hIST */
105, 67, 67, 80, '\0', /* iCCP */
diff --git a/thirdparty/libpng/pngstruct.h b/thirdparty/libpng/pngstruct.h
index 44b79dea74..d83f971253 100644
--- a/thirdparty/libpng/pngstruct.h
+++ b/thirdparty/libpng/pngstruct.h
@@ -1,7 +1,7 @@
/* pngstruct.h - header file for PNG reference library
*
- * Last changed in libpng 1.6.28 [January 5, 2017]
+ * Last changed in libpng 1.6.32 [August 24, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -479,8 +479,5 @@ struct png_struct_def
png_colorspace colorspace;
#endif
#endif
-
-/* New member added in libpng-1.6.31 */
- int num_exif;
};
#endif /* PNGSTRUCT_H */
diff --git a/thirdparty/libpng/pngwrite.c b/thirdparty/libpng/pngwrite.c
index 8c2952e794..a7662acb71 100644
--- a/thirdparty/libpng/pngwrite.c
+++ b/thirdparty/libpng/pngwrite.c
@@ -1,7 +1,7 @@
/* pngwrite.c - general routines to write a PNG file
*
- * Last changed in libpng 1.6.31 [(PENDING RELEASE)]
+ * Last changed in libpng 1.6.32 [August 24, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -237,6 +237,11 @@ png_write_info(png_structrp png_ptr, png_const_inforp info_ptr)
png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type);
#endif
+#ifdef PNG_WRITE_eXIf_SUPPORTED
+ if ((info_ptr->valid & PNG_INFO_eXIf) != 0)
+ png_write_eXIf(png_ptr, info_ptr->exif, info_ptr->num_exif);
+#endif
+
#ifdef PNG_WRITE_hIST_SUPPORTED
if ((info_ptr->valid & PNG_INFO_hIST) != 0)
png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette);
@@ -432,6 +437,12 @@ png_write_end(png_structrp png_ptr, png_inforp info_ptr)
}
}
#endif
+
+#ifdef PNG_WRITE_eXIf_SUPPORTED
+ if ((info_ptr->valid & PNG_INFO_eXIf) != 0)
+ png_write_eXIf(png_ptr, info_ptr->exif, info_ptr->num_exif);
+#endif
+
#ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
write_unknown_chunks(png_ptr, info_ptr, PNG_AFTER_IDAT);
#endif
diff --git a/thirdparty/libpng/pngwutil.c b/thirdparty/libpng/pngwutil.c
index 348bb524dd..0d4fb1336c 100644
--- a/thirdparty/libpng/pngwutil.c
+++ b/thirdparty/libpng/pngwutil.c
@@ -1,8 +1,8 @@
/* pngwutil.c - utilities to write a PNG file
*
- * Last changed in libpng 1.6.26 [October 20, 2016]
- * Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
+ * Last changed in libpng 1.6.32 [August 24, 2017]
+ * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
*
@@ -1479,24 +1479,15 @@ void /* PRIVATE */
png_write_eXIf(png_structrp png_ptr, png_bytep exif, int num_exif)
{
int i;
- png_byte buf[3];
+ png_byte buf[1];
png_debug(1, "in png_write_eXIf");
- if (num_exif > (int)png_ptr->num_exif)
- {
- png_debug2(3, "num_exif = %d, png_ptr->num_exif = %d", num_exif,
- png_ptr->num_exif);
-
- png_warning(png_ptr, "Invalid number of exif bytes specified");
- return;
- }
-
png_write_chunk_header(png_ptr, png_eXIf, (png_uint_32)(num_exif));
for (i = 0; i < num_exif; i++)
{
- buf[i] = exif[i];
+ buf[0] = exif[i];
png_write_chunk_data(png_ptr, buf, (png_size_t)1);
}
diff --git a/thirdparty/minizip/LICENSE-InfoZip.txt b/thirdparty/minizip/LICENSE-InfoZip.txt
deleted file mode 100644
index bcfe47e978..0000000000
--- a/thirdparty/minizip/LICENSE-InfoZip.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-This is version 2007-Mar-4 of the Info-ZIP license.
-The definitive version of this document should be available at
-ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and
-a copy at http://www.info-zip.org/pub/infozip/license.html.
-
-
-Copyright (c) 1990-2007 Info-ZIP. All rights reserved.
-
-For the purposes of this copyright and license, "Info-ZIP" is defined as
-the following set of individuals:
-
- Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois,
- Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth,
- Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz,
- David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko,
- Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,
- Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda,
- Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren,
- Rich Wales, Mike White.
-
-This software is provided "as is," without warranty of any kind, express
-or implied. In no event shall Info-ZIP or its contributors be held liable
-for any direct, indirect, incidental, special or consequential damages
-arising out of the use of or inability to use this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it
-freely, subject to the above disclaimer and the following restrictions:
-
- 1. Redistributions of source code (in whole or in part) must retain
- the above copyright notice, definition, disclaimer, and this list
- of conditions.
-
- 2. Redistributions in binary form (compiled executables and libraries)
- must reproduce the above copyright notice, definition, disclaimer,
- and this list of conditions in documentation and/or other materials
- provided with the distribution. The sole exception to this condition
- is redistribution of a standard UnZipSFX binary (including SFXWiz) as
- part of a self-extracting archive; that is permitted without inclusion
- of this license, as long as the normal SFX banner has not been removed
- from the binary or disabled.
-
- 3. Altered versions--including, but not limited to, ports to new operating
- systems, existing ports with new graphical interfaces, versions with
- modified or added functionality, and dynamic, shared, or static library
- versions not from Info-ZIP--must be plainly marked as such and must not
- be misrepresented as being the original source or, if binaries,
- compiled from the original source. Such altered versions also must not
- be misrepresented as being Info-ZIP releases--including, but not
- limited to, labeling of the altered versions with the names "Info-ZIP"
- (or any variation thereof, including, but not limited to, different
- capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the
- explicit permission of Info-ZIP. Such altered versions are further
- prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP
- e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP
- will provide support for the altered versions.
-
- 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip,"
- "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its
- own source and binary releases.
diff --git a/thirdparty/minizip/LICENSE-MiniZip.txt b/thirdparty/minizip/LICENSE-MiniZip.txt
deleted file mode 100644
index 0e8950f86f..0000000000
--- a/thirdparty/minizip/LICENSE-MiniZip.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-Credits
-
- Gilles Vollant - Original MiniZip author
- Even Rouault - ZIP64 unzip Support
- Daniel Borca - BZip Compression method support in unzip
- Mathias Svensson - ZIP64 zip support
- Mathias Svensson - BZip Compression method support in zip
-
- This version has been modified for Godot Engine
-
-
-License
-----------------------------------------------------------------------------
- Condition of use and distribution are the same than zlib :
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
-----------------------------------------------------------------------------
diff --git a/thirdparty/minizip/MiniZip_info.txt b/thirdparty/minizip/MiniZip_info.txt
new file mode 100644
index 0000000000..57d7152420
--- /dev/null
+++ b/thirdparty/minizip/MiniZip_info.txt
@@ -0,0 +1,74 @@
+MiniZip - Copyright (c) 1998-2010 - by Gilles Vollant - version 1.1 64 bits from Mathias Svensson
+
+Introduction
+---------------------
+MiniZip 1.1 is built from MiniZip 1.0 by Gilles Vollant ( http://www.winimage.com/zLibDll/minizip.html )
+
+When adding ZIP64 support into minizip it would result into risk of breaking compatibility with minizip 1.0.
+All possible work was done for compatibility.
+
+
+Background
+---------------------
+When adding ZIP64 support Mathias Svensson found that Even Rouault have added ZIP64
+support for unzip.c into minizip for a open source project called gdal ( http://www.gdal.org/ )
+
+That was used as a starting point. And after that ZIP64 support was added to zip.c
+some refactoring and code cleanup was also done.
+
+
+Changed from MiniZip 1.0 to MiniZip 1.1
+---------------------------------------
+* Added ZIP64 support for unzip ( by Even Rouault )
+* Added ZIP64 support for zip ( by Mathias Svensson )
+* Reverted some changed that Even Rouault did.
+* Bunch of patches received from Gulles Vollant that he received for MiniZip from various users.
+* Added unzip patch for BZIP Compression method (patch create by Daniel Borca)
+* Added BZIP Compress method for zip
+* Did some refactoring and code cleanup
+
+
+Credits
+
+ Gilles Vollant - Original MiniZip author
+ Even Rouault - ZIP64 unzip Support
+ Daniel Borca - BZip Compression method support in unzip
+ Mathias Svensson - ZIP64 zip support
+ Mathias Svensson - BZip Compression method support in zip
+
+ Resources
+
+ ZipLayout http://result42.com/projects/ZipFileLayout
+ Command line tool for Windows that shows the layout and information of the headers in a zip archive.
+ Used when debugging and validating the creation of zip files using MiniZip64
+
+
+ ZIP App Note http://www.pkware.com/documents/casestudies/APPNOTE.TXT
+ Zip File specification
+
+
+Notes.
+ * To be able to use BZip compression method in zip64.c or unzip64.c the BZIP2 lib is needed and HAVE_BZIP2 need to be defined.
+
+License
+----------------------------------------------------------
+ Condition of use and distribution are the same than zlib :
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+----------------------------------------------------------
+
diff --git a/thirdparty/minizip/godot-zlib-1.2.4-minizip-seek.patch b/thirdparty/minizip/godot-zlib-1.2.4-minizip-seek.patch
new file mode 100644
index 0000000000..8e66416a43
--- /dev/null
+++ b/thirdparty/minizip/godot-zlib-1.2.4-minizip-seek.patch
@@ -0,0 +1,295 @@
+diff --git a/thirdparty/minizip/ioapi.c b/thirdparty/minizip/ioapi.c
+index 49958f61f..0afbdc06a 100644
+--- a/thirdparty/minizip/ioapi.c
++++ b/thirdparty/minizip/ioapi.c
+@@ -68,8 +68,15 @@ void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filef
+ p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
+ p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
+ p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
++ /* GODOT start */
++ p_filefunc64_32->zfile_func64.alloc_mem = p_filefunc32->alloc_mem;
++ p_filefunc64_32->zfile_func64.free_mem = p_filefunc32->free_mem;
++ /* GODOT end */
+ }
+
++/* GODOT start */
++/*
++// GODOT end
+
+
+ static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
+@@ -233,3 +240,6 @@ void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
+ pzlib_filefunc_def->zerror_file = ferror_file_func;
+ pzlib_filefunc_def->opaque = NULL;
+ }
++// GODOT start
++*/
++/* GODOT end */
+diff --git a/thirdparty/minizip/ioapi.h b/thirdparty/minizip/ioapi.h
+index 8309c4cf8..f25ab6464 100644
+--- a/thirdparty/minizip/ioapi.h
++++ b/thirdparty/minizip/ioapi.h
+@@ -145,6 +145,10 @@ typedef struct zlib_filefunc_def_s
+ close_file_func zclose_file;
+ testerror_file_func zerror_file;
+ voidpf opaque;
++ /* GODOT start */
++ alloc_func alloc_mem;
++ free_func free_mem;
++ /* GODOT end */
+ } zlib_filefunc_def;
+
+ typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream));
+@@ -161,6 +165,10 @@ typedef struct zlib_filefunc64_def_s
+ close_file_func zclose_file;
+ testerror_file_func zerror_file;
+ voidpf opaque;
++ /* GODOT start */
++ alloc_func alloc_mem;
++ free_func free_mem;
++ /* GODOT end */
+ } zlib_filefunc64_def;
+
+ void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
+diff --git a/thirdparty/minizip/unzip.c b/thirdparty/minizip/unzip.c
+index 7617f41f1..32e27bd65 100644
+--- a/thirdparty/minizip/unzip.c
++++ b/thirdparty/minizip/unzip.c
+@@ -157,6 +157,9 @@ typedef struct
+ uLong compression_method; /* compression method (0==store) */
+ ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
+ int raw;
++ /* GODOT start */
++ int extra_size;
++ /* GODOT end */
+ } file_in_zip64_read_info_s;
+
+
+@@ -606,9 +609,10 @@ local unzFile unzOpenInternal (const void *path,
+ us.z_filefunc.zseek32_file = NULL;
+ us.z_filefunc.ztell32_file = NULL;
+ if (pzlib_filefunc64_32_def==NULL)
+- fill_fopen64_filefunc(&us.z_filefunc.zfile_func64);
+- else
+- us.z_filefunc = *pzlib_filefunc64_32_def;
++ /* GODOT start */
++ return NULL; // standard i/o not supported
++ us.z_filefunc = *pzlib_filefunc64_32_def;
++ /* GODOT end */
+ us.is64bitOpenFunction = is64bitOpenFunction;
+
+
+@@ -800,6 +804,18 @@ extern unzFile ZEXPORT unzOpen64 (const void *path)
+ return unzOpenInternal(path, NULL, 1);
+ }
+
++/* GODOT start */
++extern void* unzGetOpaque(unzFile file) {
++
++ unz64_s* s;
++ if (file==NULL)
++ return NULL;
++ s=(unz64_s*)file;
++
++ return s->z_filefunc.zfile_func64.opaque;
++};
++/* GODOT end */
++
+ /*
+ Close a ZipFile opened with unzipOpen.
+ If there is files inside the .Zip opened with unzipOpenCurrentFile (see later),
+@@ -1018,10 +1034,20 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
+
+ if (lSeek!=0)
+ {
+- if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+- lSeek=0;
+- else
+- err=UNZ_ERRNO;
++ /* GODOT start */
++ if (lSeek<0) {
++ // WORKAROUND for backwards seeking
++ z_off_t pos = ZTELL64(s->z_filefunc, s->filestream);
++ if (ZSEEK64(s->z_filefunc, s->filestream,pos+lSeek,ZLIB_FILEFUNC_SEEK_SET)==0)
++ lSeek=0;
++ else
++ err=UNZ_ERRNO;
++ } else {
++ if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
++ lSeek=0;
++ else
++ err=UNZ_ERRNO;
++ }
+ }
+
+ while(acc < file_info.size_file_extra)
+@@ -1575,8 +1601,10 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
+ }
+ else if ((s->cur_file_info.compression_method==Z_DEFLATED) && (!raw))
+ {
+- pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
+- pfile_in_zip_read_info->stream.zfree = (free_func)0;
++ /* GODOT start */
++ pfile_in_zip_read_info->stream.zalloc = s->z_filefunc.zfile_func64.alloc_mem;
++ pfile_in_zip_read_info->stream.zfree = s->z_filefunc.zfile_func64.free_mem;
++ /* GODOT end */
+ pfile_in_zip_read_info->stream.opaque = (voidpf)0;
+ pfile_in_zip_read_info->stream.next_in = 0;
+ pfile_in_zip_read_info->stream.avail_in = 0;
+@@ -1608,6 +1636,9 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
+ iSizeVar;
+
+ pfile_in_zip_read_info->stream.avail_in = (uInt)0;
++ /* GODOT start */
++ pfile_in_zip_read_info->extra_size = iSizeVar;
++ /* GODOT end */
+
+ s->pfile_in_zip_read = pfile_in_zip_read_info;
+ s->encrypted = 0;
+@@ -1638,6 +1669,85 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
+ return UNZ_OK;
+ }
+
++/* GODOT start */
++extern int ZEXPORT unzSeekCurrentFile(unzFile file, int pos) {
++
++ unz64_s* s;
++ file_in_zip64_read_info_s* pfile_in_zip_read_info;
++ if (file==NULL)
++ return UNZ_PARAMERROR;
++ s=(unz64_s*)file;
++ pfile_in_zip_read_info=s->pfile_in_zip_read;
++
++ if (pfile_in_zip_read_info==NULL)
++ return UNZ_PARAMERROR;
++
++ if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) { // don't know how to support bzip
++ return UNZ_INTERNALERROR;
++ };
++
++ if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) {
++
++ pfile_in_zip_read_info->rest_read_compressed =
++ s->cur_file_info.compressed_size - pos;
++ pfile_in_zip_read_info->rest_read_uncompressed =
++ s->cur_file_info.uncompressed_size - pos;
++
++ pfile_in_zip_read_info->pos_in_zipfile =
++ s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
++ pfile_in_zip_read_info->extra_size + pos;
++
++ pfile_in_zip_read_info->stream.avail_in = (uInt)0;
++ pfile_in_zip_read_info->stream.total_out = pos;
++
++ return ZSEEK64(pfile_in_zip_read_info->z_filefunc,
++ pfile_in_zip_read_info->filestream,
++ pfile_in_zip_read_info->byte_before_the_zipfile + pfile_in_zip_read_info->pos_in_zipfile,
++ ZLIB_FILEFUNC_SEEK_SET);
++
++ } else { // gzip
++
++ if (pos < pfile_in_zip_read_info->stream.total_out) { // negative seek, rewind
++
++ pfile_in_zip_read_info->rest_read_compressed =
++ s->cur_file_info.compressed_size ;
++ pfile_in_zip_read_info->rest_read_uncompressed =
++ s->cur_file_info.uncompressed_size ;
++
++ pfile_in_zip_read_info->pos_in_zipfile =
++ s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
++ pfile_in_zip_read_info->extra_size;
++
++ (void)inflateReset(&pfile_in_zip_read_info->stream);
++
++ pfile_in_zip_read_info->stream.avail_in = (uInt)0;
++ pfile_in_zip_read_info->stream.total_out = 0;
++ pfile_in_zip_read_info->stream.next_in = 0;
++ };
++
++ // not sure where to read, so read on the stack
++ {
++ char buf[512];
++ int to_read = pos - pfile_in_zip_read_info->stream.total_out;
++ while (to_read) {
++
++ int len = to_read > sizeof(buf)?sizeof(buf):to_read;
++ int read = unzReadCurrentFile(file, buf, len);
++ if (read < 0) {
++ return read;
++ };
++ to_read -= read;
++ if (read == UNZ_EOF) {
++ return pos;
++ };
++ };
++ };
++ };
++
++ return pos;
++};
++/* GODOT end */
++
+ extern int ZEXPORT unzOpenCurrentFile (unzFile file)
+ {
+ return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
+diff --git a/thirdparty/minizip/unzip.h b/thirdparty/minizip/unzip.h
+index 3183968b7..54e65ad8a 100644
+--- a/thirdparty/minizip/unzip.h
++++ b/thirdparty/minizip/unzip.h
+@@ -202,6 +202,10 @@ extern int ZEXPORT unzClose OF((unzFile file));
+ these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
+ return UNZ_OK if there is no problem. */
+
++/* GODOT start */
++extern void* unzGetOpaque(unzFile file);
++/* GODOT end */
++
+ extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
+ unz_global_info *pglobal_info));
+
+@@ -390,6 +394,13 @@ extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
+ (UNZ_ERRNO for IO error, or zLib error for uncompress error)
+ */
+
++/* GODOT start */
++extern int ZEXPORT unzSeekCurrentFile(unzFile file, int pos);
++/*
++ Seek to position in uncompressed data
++*/
++/* GODOT end */
++
+ extern z_off_t ZEXPORT unztell OF((unzFile file));
+
+ extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
+diff --git a/thirdparty/minizip/zip.c b/thirdparty/minizip/zip.c
+index 3c34fc8bd..d7093e745 100644
+--- a/thirdparty/minizip/zip.c
++++ b/thirdparty/minizip/zip.c
+@@ -854,9 +854,11 @@ extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* gl
+
+ ziinit.z_filefunc.zseek32_file = NULL;
+ ziinit.z_filefunc.ztell32_file = NULL;
+- if (pzlib_filefunc64_32_def==NULL)
+- fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64);
+- else
++ /* GODOT start */
++ if (pzlib_filefunc64_32_def==NULL) {
++ //fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64);
++ } else
++ /* GODOT end */
+ ziinit.z_filefunc = *pzlib_filefunc64_32_def;
+
+ ziinit.filestream = ZOPEN64(ziinit.z_filefunc,
+@@ -1210,8 +1212,10 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
+ {
+ if(zi->ci.method == Z_DEFLATED)
+ {
+- zi->ci.stream.zalloc = (alloc_func)0;
+- zi->ci.stream.zfree = (free_func)0;
++ /* GODOT start */
++ zi->ci.stream.zalloc = zi->z_filefunc.zfile_func64.alloc_mem;
++ zi->ci.stream.zfree = zi->z_filefunc.zfile_func64.free_mem;
++ /* GODOT end */
+ zi->ci.stream.opaque = (voidpf)0;
+
+ if (windowBits>0)
diff --git a/thirdparty/minizip/godot-zlib-1.2.4-minizip-unbreak-gentoo.patch b/thirdparty/minizip/godot-zlib-1.2.4-minizip-unbreak-gentoo.patch
new file mode 100644
index 0000000000..9292e32ac6
--- /dev/null
+++ b/thirdparty/minizip/godot-zlib-1.2.4-minizip-unbreak-gentoo.patch
@@ -0,0 +1,27 @@
+diff --git a/thirdparty/minizip/ioapi.h b/thirdparty/minizip/ioapi.h
+index f25ab6464..6043d34ce 100644
+--- a/thirdparty/minizip/ioapi.h
++++ b/thirdparty/minizip/ioapi.h
+@@ -44,6 +44,22 @@
+ #include <stdlib.h>
+ #include "zlib.h"
+
++/* GODOT start */
++/* Mighty Gentoo saves the day by breaking the API of their zlib.h,
++ * removing this definition of OF(args) for no practical reason
++ * worth breaking compatibility with all projects that embed minizip
++ * while trying not to diverge too much from upstream zlib.
++ * Cf. https://github.com/godotengine/godot/issues/10539
++ *
++ * "By and large, this is good open source behaviour, and fits with
++ * the gentoo _don't fuck with upstream's releases_ philosophy"
++ * -- Gentoo philosopher
++ */
++#ifndef OF /* function prototypes */
++ #define OF(args) args
++#endif
++/* GODOT end */
++
+ #if defined(USE_FILE32API)
+ #define fopen64 fopen
+ #define ftello64 ftell
diff --git a/thirdparty/minizip/ioapi.c b/thirdparty/minizip/ioapi.c
index d6063a5fe6..2b42df4abd 100644
--- a/thirdparty/minizip/ioapi.c
+++ b/thirdparty/minizip/ioapi.c
@@ -6,7 +6,7 @@
Modifications for Zip64 support
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
- For more info read LICENSE-MiniZip.txt
+ For more info read MiniZip_info.txt
*/
@@ -68,11 +68,15 @@ void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filef
p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
+ /* GODOT start */
p_filefunc64_32->zfile_func64.alloc_mem = p_filefunc32->alloc_mem;
p_filefunc64_32->zfile_func64.free_mem = p_filefunc32->free_mem;
+ /* GODOT end */
}
+/* GODOT start */
/*
+// GODOT end
static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
@@ -119,6 +123,7 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename,
return file;
}
+
static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
{
uLong ret;
@@ -140,6 +145,7 @@ static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
return ret;
}
+
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
{
ZPOS64_T ret;
@@ -234,4 +240,6 @@ void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
pzlib_filefunc_def->zerror_file = ferror_file_func;
pzlib_filefunc_def->opaque = NULL;
}
+// GODOT start
*/
+/* GODOT end */
diff --git a/thirdparty/minizip/ioapi.h b/thirdparty/minizip/ioapi.h
index cb6cb7e766..6043d34cea 100644
--- a/thirdparty/minizip/ioapi.h
+++ b/thirdparty/minizip/ioapi.h
@@ -1,11 +1,12 @@
-/* this file is part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
+/* ioapi.h -- IO base function header for compress/uncompress .zip
+ part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
Modifications for Zip64 support
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
- For more info read LICENSE-MiniZip.txt
+ For more info read MiniZip_info.txt
Changes
@@ -40,8 +41,25 @@
#endif
#include <stdio.h>
+#include <stdlib.h>
#include "zlib.h"
+/* GODOT start */
+/* Mighty Gentoo saves the day by breaking the API of their zlib.h,
+ * removing this definition of OF(args) for no practical reason
+ * worth breaking compatibility with all projects that embed minizip
+ * while trying not to diverge too much from upstream zlib.
+ * Cf. https://github.com/godotengine/godot/issues/10539
+ *
+ * "By and large, this is good open source behaviour, and fits with
+ * the gentoo _don't fuck with upstream's releases_ philosophy"
+ * -- Gentoo philosopher
+ */
+#ifndef OF /* function prototypes */
+ #define OF(args) args
+#endif
+/* GODOT end */
+
#if defined(USE_FILE32API)
#define fopen64 fopen
#define ftello64 ftell
@@ -122,14 +140,14 @@ extern "C" {
-typedef voidpf (ZCALLBACK *open_file_func) (voidpf opaque, const char* filename, int mode);
-typedef uLong (ZCALLBACK *read_file_func) (voidpf opaque, voidpf stream, void* buf, uLong size);
-typedef uLong (ZCALLBACK *write_file_func) (voidpf opaque, voidpf stream, const void* buf, uLong size);
-typedef int (ZCALLBACK *close_file_func) (voidpf opaque, voidpf stream);
-typedef int (ZCALLBACK *testerror_file_func) (voidpf opaque, voidpf stream);
+typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode));
+typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size));
+typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
+typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream));
+typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
-typedef long (ZCALLBACK *tell_file_func) (voidpf opaque, voidpf stream);
-typedef long (ZCALLBACK *seek_file_func) (voidpf opaque, voidpf stream, uLong offset, int origin);
+typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream));
+typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin));
/* here is the "old" 32 bits structure structure */
@@ -143,13 +161,15 @@ typedef struct zlib_filefunc_def_s
close_file_func zclose_file;
testerror_file_func zerror_file;
voidpf opaque;
- alloc_func alloc_mem;
- free_func free_mem;
+ /* GODOT start */
+ alloc_func alloc_mem;
+ free_func free_mem;
+ /* GODOT end */
} zlib_filefunc_def;
-typedef ZPOS64_T (ZCALLBACK *tell64_file_func) (voidpf opaque, voidpf stream);
-typedef long (ZCALLBACK *seek64_file_func) (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin);
-typedef voidpf (ZCALLBACK *open64_file_func) (voidpf opaque, const void* filename, int mode);
+typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream));
+typedef long (ZCALLBACK *seek64_file_func) OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
+typedef voidpf (ZCALLBACK *open64_file_func) OF((voidpf opaque, const void* filename, int mode));
typedef struct zlib_filefunc64_def_s
{
@@ -161,13 +181,14 @@ typedef struct zlib_filefunc64_def_s
close_file_func zclose_file;
testerror_file_func zerror_file;
voidpf opaque;
- alloc_func alloc_mem;
- free_func free_mem;
-
+ /* GODOT start */
+ alloc_func alloc_mem;
+ free_func free_mem;
+ /* GODOT end */
} zlib_filefunc64_def;
-void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def);
-void fill_fopen_filefunc (zlib_filefunc_def* pzlib_filefunc_def);
+void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
+void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
/* now internal definition, only for zip.c and unzip.h */
typedef struct zlib_filefunc64_32_def_s
@@ -186,9 +207,9 @@ typedef struct zlib_filefunc64_32_def_s
#define ZCLOSE64(filefunc,filestream) ((*((filefunc).zfile_func64.zclose_file)) ((filefunc).zfile_func64.opaque,filestream))
#define ZERROR64(filefunc,filestream) ((*((filefunc).zfile_func64.zerror_file)) ((filefunc).zfile_func64.opaque,filestream))
-voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode);
-long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin);
-ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream);
+voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode));
+long call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin));
+ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream));
void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
diff --git a/thirdparty/minizip/unzip.c b/thirdparty/minizip/unzip.c
index 7aa0a86d13..32e27bd657 100644
--- a/thirdparty/minizip/unzip.c
+++ b/thirdparty/minizip/unzip.c
@@ -10,7 +10,7 @@
Modifications for Zip64 support on both zip and unzip
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
- For more info read LICENSE-MiniZip.txt
+ For more info read MiniZip_info.txt
------------------------------------------------------------------------------------
@@ -157,7 +157,9 @@ typedef struct
uLong compression_method; /* compression method (0==store) */
ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
int raw;
- int extra_size;
+ /* GODOT start */
+ int extra_size;
+ /* GODOT end */
} file_in_zip64_read_info_s;
@@ -205,10 +207,10 @@ typedef struct
*/
-local int unz64local_getByte (
+local int unz64local_getByte OF((
const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
- int *pi);
+ int *pi));
local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)
{
@@ -232,10 +234,10 @@ local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, v
/* ===========================================================================
Reads a long in LSB order from the given gz_stream. Sets
*/
-local int unz64local_getShort (
+local int unz64local_getShort OF((
const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
- uLong *pX);
+ uLong *pX));
local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
@@ -259,10 +261,10 @@ local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def,
return err;
}
-local int unz64local_getLong (
+local int unz64local_getLong OF((
const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
- uLong *pX);
+ uLong *pX));
local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
@@ -294,10 +296,10 @@ local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def,
return err;
}
-local int unz64local_getLong64 (
+local int unz64local_getLong64 OF((
const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
- ZPOS64_T *pX);
+ ZPOS64_T *pX));
local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def,
@@ -410,7 +412,7 @@ extern int ZEXPORT unzStringFileNameCompare (const char* fileName1,
Locate the Central directory of a zipfile (at the end, just before
the global comment)
*/
-local ZPOS64_T unz64local_SearchCentralDir (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream);
+local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
{
unsigned char* buf;
@@ -472,9 +474,9 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
Locate the Central directory 64 of a zipfile (at the end, just before
the global comment)
*/
-local ZPOS64_T unz64local_SearchCentralDir64 (
+local ZPOS64_T unz64local_SearchCentralDir64 OF((
const zlib_filefunc64_32_def* pzlib_filefunc_def,
- voidpf filestream);
+ voidpf filestream));
local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream)
@@ -606,9 +608,11 @@ local unzFile unzOpenInternal (const void *path,
us.z_filefunc.zseek32_file = NULL;
us.z_filefunc.ztell32_file = NULL;
- if (pzlib_filefunc64_32_def==NULL)
- return NULL; // standard i/o not supported
- us.z_filefunc = *pzlib_filefunc64_32_def;
+ if (pzlib_filefunc64_32_def==NULL)
+ /* GODOT start */
+ return NULL; // standard i/o not supported
+ us.z_filefunc = *pzlib_filefunc64_32_def;
+ /* GODOT end */
us.is64bitOpenFunction = is64bitOpenFunction;
@@ -617,10 +621,8 @@ local unzFile unzOpenInternal (const void *path,
path,
ZLIB_FILEFUNC_MODE_READ |
ZLIB_FILEFUNC_MODE_EXISTING);
- if (us.filestream==NULL) {
- printf("no stream\n");
+ if (us.filestream==NULL)
return NULL;
- };
central_pos = unz64local_SearchCentralDir64(&us.z_filefunc,us.filestream);
if (central_pos)
@@ -743,7 +745,6 @@ local unzFile unzOpenInternal (const void *path,
if (err!=UNZ_OK)
{
- printf("err is %i, %x\n", err, err);
ZCLOSE64(us.z_filefunc, us.filestream);
return NULL;
}
@@ -803,15 +804,17 @@ extern unzFile ZEXPORT unzOpen64 (const void *path)
return unzOpenInternal(path, NULL, 1);
}
+/* GODOT start */
extern void* unzGetOpaque(unzFile file) {
- unz64_s* s;
- if (file==NULL)
- return NULL;
- s=(unz64_s*)file;
+ unz64_s* s;
+ if (file==NULL)
+ return NULL;
+ s=(unz64_s*)file;
- return s->z_filefunc.zfile_func64.opaque;
+ return s->z_filefunc.zfile_func64.opaque;
};
+/* GODOT end */
/*
Close a ZipFile opened with unzipOpen.
@@ -878,7 +881,7 @@ local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm)
/*
Get Info about the current file in the zipfile, with internal only info
*/
-local int unz64local_GetCurrentFileInfoInternal (unzFile file,
+local int unz64local_GetCurrentFileInfoInternal OF((unzFile file,
unz_file_info64 *pfile_info,
unz_file_info64_internal
*pfile_info_internal,
@@ -887,7 +890,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
void *extraField,
uLong extraFieldBufferSize,
char *szComment,
- uLong commentBufferSize);
+ uLong commentBufferSize));
local int unz64local_GetCurrentFileInfoInternal (unzFile file,
unz_file_info64 *pfile_info,
@@ -1031,19 +1034,20 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
if (lSeek!=0)
{
- if (lSeek<0) {
- // WORKAROUND for backwards seeking
- z_off_t pos = ZTELL64(s->z_filefunc, s->filestream);
- if (ZSEEK64(s->z_filefunc, s->filestream,pos+lSeek,ZLIB_FILEFUNC_SEEK_SET)==0)
- lSeek=0;
- else
- err=UNZ_ERRNO;
- } else {
- if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
- lSeek=0;
- else
- err=UNZ_ERRNO;
- }
+ /* GODOT start */
+ if (lSeek<0) {
+ // WORKAROUND for backwards seeking
+ z_off_t pos = ZTELL64(s->z_filefunc, s->filestream);
+ if (ZSEEK64(s->z_filefunc, s->filestream,pos+lSeek,ZLIB_FILEFUNC_SEEK_SET)==0)
+ lSeek=0;
+ else
+ err=UNZ_ERRNO;
+ } else {
+ if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+ lSeek=0;
+ else
+ err=UNZ_ERRNO;
+ }
}
while(acc < file_info.size_file_extra)
@@ -1597,8 +1601,10 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
}
else if ((s->cur_file_info.compression_method==Z_DEFLATED) && (!raw))
{
+ /* GODOT start */
pfile_in_zip_read_info->stream.zalloc = s->z_filefunc.zfile_func64.alloc_mem;
pfile_in_zip_read_info->stream.zfree = s->z_filefunc.zfile_func64.free_mem;
+ /* GODOT end */
pfile_in_zip_read_info->stream.opaque = (voidpf)0;
pfile_in_zip_read_info->stream.next_in = 0;
pfile_in_zip_read_info->stream.avail_in = 0;
@@ -1608,7 +1614,6 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
pfile_in_zip_read_info->stream_initialised=Z_DEFLATED;
else
{
- printf("NO OPEN ZLIB %i\n",err);
TRYFREE(pfile_in_zip_read_info);
return err;
}
@@ -1631,7 +1636,9 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
iSizeVar;
pfile_in_zip_read_info->stream.avail_in = (uInt)0;
- pfile_in_zip_read_info->extra_size = iSizeVar;
+ /* GODOT start */
+ pfile_in_zip_read_info->extra_size = iSizeVar;
+ /* GODOT end */
s->pfile_in_zip_read = pfile_in_zip_read_info;
s->encrypted = 0;
@@ -1662,82 +1669,84 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
return UNZ_OK;
}
+/* GODOT start */
extern int ZEXPORT unzSeekCurrentFile(unzFile file, int pos) {
- unz64_s* s;
- file_in_zip64_read_info_s* pfile_in_zip_read_info;
- if (file==NULL)
- return UNZ_PARAMERROR;
- s=(unz64_s*)file;
- pfile_in_zip_read_info=s->pfile_in_zip_read;
-
- if (pfile_in_zip_read_info==NULL)
- return UNZ_PARAMERROR;
-
- if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) { // don't know how to support bzip
- return UNZ_INTERNALERROR;
- };
-
- if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) {
-
- pfile_in_zip_read_info->rest_read_compressed =
- s->cur_file_info.compressed_size - pos;
- pfile_in_zip_read_info->rest_read_uncompressed =
- s->cur_file_info.uncompressed_size - pos;
-
- pfile_in_zip_read_info->pos_in_zipfile =
- s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
- pfile_in_zip_read_info->extra_size + pos;
-
- pfile_in_zip_read_info->stream.avail_in = (uInt)0;
- pfile_in_zip_read_info->stream.total_out = pos;
-
- return ZSEEK64(pfile_in_zip_read_info->z_filefunc,
- pfile_in_zip_read_info->filestream,
- pfile_in_zip_read_info->byte_before_the_zipfile + pfile_in_zip_read_info->pos_in_zipfile,
- ZLIB_FILEFUNC_SEEK_SET);
-
- } else { // gzip
-
- if (pos < pfile_in_zip_read_info->stream.total_out) { // negative seek, rewind
-
- pfile_in_zip_read_info->rest_read_compressed =
- s->cur_file_info.compressed_size ;
- pfile_in_zip_read_info->rest_read_uncompressed =
- s->cur_file_info.uncompressed_size ;
-
- pfile_in_zip_read_info->pos_in_zipfile =
- s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
- pfile_in_zip_read_info->extra_size;
-
- (void)inflateReset(&pfile_in_zip_read_info->stream);
-
- pfile_in_zip_read_info->stream.avail_in = (uInt)0;
- pfile_in_zip_read_info->stream.total_out = 0;
- pfile_in_zip_read_info->stream.next_in = 0;
- };
-
- // not sure where to read, so read on the stack
- {
- char buf[512];
- int to_read = pos - pfile_in_zip_read_info->stream.total_out;
- while (to_read) {
-
- int len = to_read > sizeof(buf)?sizeof(buf):to_read;
- int read = unzReadCurrentFile(file, buf, len);
- if (read < 0) {
- return read;
- };
- to_read -= read;
- if (read == UNZ_EOF) {
- return pos;
- };
- };
- };
- };
-
- return pos;
+ unz64_s* s;
+ file_in_zip64_read_info_s* pfile_in_zip_read_info;
+ if (file==NULL)
+ return UNZ_PARAMERROR;
+ s=(unz64_s*)file;
+ pfile_in_zip_read_info=s->pfile_in_zip_read;
+
+ if (pfile_in_zip_read_info==NULL)
+ return UNZ_PARAMERROR;
+
+ if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) { // don't know how to support bzip
+ return UNZ_INTERNALERROR;
+ };
+
+ if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) {
+
+ pfile_in_zip_read_info->rest_read_compressed =
+ s->cur_file_info.compressed_size - pos;
+ pfile_in_zip_read_info->rest_read_uncompressed =
+ s->cur_file_info.uncompressed_size - pos;
+
+ pfile_in_zip_read_info->pos_in_zipfile =
+ s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
+ pfile_in_zip_read_info->extra_size + pos;
+
+ pfile_in_zip_read_info->stream.avail_in = (uInt)0;
+ pfile_in_zip_read_info->stream.total_out = pos;
+
+ return ZSEEK64(pfile_in_zip_read_info->z_filefunc,
+ pfile_in_zip_read_info->filestream,
+ pfile_in_zip_read_info->byte_before_the_zipfile + pfile_in_zip_read_info->pos_in_zipfile,
+ ZLIB_FILEFUNC_SEEK_SET);
+
+ } else { // gzip
+
+ if (pos < pfile_in_zip_read_info->stream.total_out) { // negative seek, rewind
+
+ pfile_in_zip_read_info->rest_read_compressed =
+ s->cur_file_info.compressed_size ;
+ pfile_in_zip_read_info->rest_read_uncompressed =
+ s->cur_file_info.uncompressed_size ;
+
+ pfile_in_zip_read_info->pos_in_zipfile =
+ s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
+ pfile_in_zip_read_info->extra_size;
+
+ (void)inflateReset(&pfile_in_zip_read_info->stream);
+
+ pfile_in_zip_read_info->stream.avail_in = (uInt)0;
+ pfile_in_zip_read_info->stream.total_out = 0;
+ pfile_in_zip_read_info->stream.next_in = 0;
+ };
+
+ // not sure where to read, so read on the stack
+ {
+ char buf[512];
+ int to_read = pos - pfile_in_zip_read_info->stream.total_out;
+ while (to_read) {
+
+ int len = to_read > sizeof(buf)?sizeof(buf):to_read;
+ int read = unzReadCurrentFile(file, buf, len);
+ if (read < 0) {
+ return read;
+ };
+ to_read -= read;
+ if (read == UNZ_EOF) {
+ return pos;
+ };
+ };
+ };
+ };
+
+ return pos;
};
+/* GODOT end */
extern int ZEXPORT unzOpenCurrentFile (unzFile file)
{
@@ -1797,7 +1806,7 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
return UNZ_PARAMERROR;
- if (pfile_in_zip_read_info->read_buffer==NULL)
+ if ((pfile_in_zip_read_info->read_buffer == NULL))
return UNZ_END_OF_LIST_OF_FILE;
if (len==0)
return 0;
diff --git a/thirdparty/minizip/unzip.h b/thirdparty/minizip/unzip.h
index f67c3b2fa8..54e65ad8ab 100644
--- a/thirdparty/minizip/unzip.h
+++ b/thirdparty/minizip/unzip.h
@@ -10,7 +10,7 @@
Modifications for Zip64 support on both zip and unzip
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
- For more info read LICENSE-MiniZip.txt
+ For more info read MiniZip_info.txt
---------------------------------------------------------------------------------
@@ -150,9 +150,9 @@ typedef struct unz_file_info_s
tm_unz tmu_date;
} unz_file_info;
-extern int ZEXPORT unzStringFileNameCompare (const char* fileName1,
+extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
const char* fileName2,
- int iCaseSensitivity);
+ int iCaseSensitivity));
/*
Compare two filename (fileName1,fileName2).
If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
@@ -163,8 +163,8 @@ extern int ZEXPORT unzStringFileNameCompare (const char* fileName1,
*/
-extern unzFile ZEXPORT unzOpen (const char *path);
-extern unzFile ZEXPORT unzOpen64 (const void *path);
+extern unzFile ZEXPORT unzOpen OF((const char *path));
+extern unzFile ZEXPORT unzOpen64 OF((const void *path));
/*
Open a Zip file. path contain the full pathname (by example,
on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
@@ -181,44 +181,45 @@ extern unzFile ZEXPORT unzOpen64 (const void *path);
*/
-extern unzFile ZEXPORT unzOpen2 (const char *path,
- zlib_filefunc_def* pzlib_filefunc_def);
+extern unzFile ZEXPORT unzOpen2 OF((const char *path,
+ zlib_filefunc_def* pzlib_filefunc_def));
/*
Open a Zip file, like unzOpen, but provide a set of file low level API
for read/write the zip file (see ioapi.h)
*/
-extern unzFile ZEXPORT unzOpen2_64 (const void *path,
- zlib_filefunc64_def* pzlib_filefunc_def);
+extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
+ zlib_filefunc64_def* pzlib_filefunc_def));
/*
Open a Zip file, like unz64Open, but provide a set of file low level API
for read/write the zip file (see ioapi.h)
*/
-extern int ZEXPORT unzClose (unzFile file);
+extern int ZEXPORT unzClose OF((unzFile file));
/*
Close a ZipFile opened with unzipOpen.
If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
return UNZ_OK if there is no problem. */
+/* GODOT start */
extern void* unzGetOpaque(unzFile file);
+/* GODOT end */
+extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
+ unz_global_info *pglobal_info));
-extern int ZEXPORT unzGetGlobalInfo (unzFile file,
- unz_global_info *pglobal_info);
-
-extern int ZEXPORT unzGetGlobalInfo64 (unzFile file,
- unz_global_info64 *pglobal_info);
+extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
+ unz_global_info64 *pglobal_info));
/*
Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed
return UNZ_OK if there is no problem. */
-extern int ZEXPORT unzGetGlobalComment (unzFile file,
+extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
char *szComment,
- uLong uSizeBuf);
+ uLong uSizeBuf));
/*
Get the global comment string of the ZipFile, in the szComment buffer.
uSizeBuf is the size of the szComment buffer.
@@ -229,22 +230,22 @@ extern int ZEXPORT unzGetGlobalComment (unzFile file,
/***************************************************************************/
/* Unzip package allow you browse the directory of the zipfile */
-extern int ZEXPORT unzGoToFirstFile (unzFile file);
+extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
/*
Set the current file of the zipfile to the first file.
return UNZ_OK if there is no problem
*/
-extern int ZEXPORT unzGoToNextFile (unzFile file);
+extern int ZEXPORT unzGoToNextFile OF((unzFile file));
/*
Set the current file of the zipfile to the next file.
return UNZ_OK if there is no problem
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
*/
-extern int ZEXPORT unzLocateFile (unzFile file,
+extern int ZEXPORT unzLocateFile OF((unzFile file,
const char *szFileName,
- int iCaseSensitivity);
+ int iCaseSensitivity));
/*
Try locate the file szFileName in the zipfile.
For the iCaseSensitivity signification, see unzStringFileNameCompare
@@ -288,23 +289,23 @@ extern int ZEXPORT unzGoToFilePos64(
/* ****************************************** */
-extern int ZEXPORT unzGetCurrentFileInfo64 (unzFile file,
+extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file,
unz_file_info64 *pfile_info,
char *szFileName,
uLong fileNameBufferSize,
void *extraField,
uLong extraFieldBufferSize,
char *szComment,
- uLong commentBufferSize);
+ uLong commentBufferSize));
-extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
+extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
unz_file_info *pfile_info,
char *szFileName,
uLong fileNameBufferSize,
void *extraField,
uLong extraFieldBufferSize,
char *szComment,
- uLong commentBufferSize);
+ uLong commentBufferSize));
/*
Get Info about the current file
if pfile_info!=NULL, the *pfile_info structure will contain somes info about
@@ -321,7 +322,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
/** Addition for GDAL : START */
-extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 (unzFile file);
+extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
/** Addition for GDAL : END */
@@ -331,24 +332,24 @@ extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 (unzFile file);
from it, and close it (you can close it before reading all the file)
*/
-extern int ZEXPORT unzOpenCurrentFile (unzFile file);
+extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
/*
Open for reading data the current file in the zipfile.
If there is no error, the return value is UNZ_OK.
*/
-extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file,
- const char* password);
+extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
+ const char* password));
/*
Open for reading data the current file in the zipfile.
password is a crypting password
If there is no error, the return value is UNZ_OK.
*/
-extern int ZEXPORT unzOpenCurrentFile2 (unzFile file,
+extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
int* method,
int* level,
- int raw);
+ int raw));
/*
Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
if raw==1
@@ -358,11 +359,11 @@ extern int ZEXPORT unzOpenCurrentFile2 (unzFile file,
but you CANNOT set method parameter as NULL
*/
-extern int ZEXPORT unzOpenCurrentFile3 (unzFile file,
+extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
int* method,
int* level,
int raw,
- const char* password);
+ const char* password));
/*
Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
if raw==1
@@ -373,15 +374,15 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file,
*/
-extern int ZEXPORT unzCloseCurrentFile (unzFile file);
+extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
/*
Close the file in zip opened with unzOpenCurrentFile
Return UNZ_CRCERROR if all the file was read but the CRC is not good
*/
-extern int ZEXPORT unzReadCurrentFile (unzFile file,
+extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
voidp buf,
- unsigned len);
+ unsigned len));
/*
Read bytes from the current file (opened by unzOpenCurrentFile)
buf contain buffer where data must be copied
@@ -393,26 +394,28 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file,
(UNZ_ERRNO for IO error, or zLib error for uncompress error)
*/
+/* GODOT start */
extern int ZEXPORT unzSeekCurrentFile(unzFile file, int pos);
/*
Seek to position in uncompressed data
*/
+/* GODOT end */
-extern z_off_t ZEXPORT unztell (unzFile file);
+extern z_off_t ZEXPORT unztell OF((unzFile file));
-extern ZPOS64_T ZEXPORT unztell64 (unzFile file);
+extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
/*
Give the current position in uncompressed data
*/
-extern int ZEXPORT unzeof (unzFile file);
+extern int ZEXPORT unzeof OF((unzFile file));
/*
return 1 if the end of file was reached, 0 elsewhere
*/
-extern int ZEXPORT unzGetLocalExtrafield (unzFile file,
+extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
voidp buf,
- unsigned len);
+ unsigned len));
/*
Read extra field from the current file (opened by unzOpenCurrentFile)
This is the local-header version of the extra field (sometimes, there is
diff --git a/thirdparty/minizip/zip.c b/thirdparty/minizip/zip.c
index 27a3d3cdc1..d7093e7457 100644
--- a/thirdparty/minizip/zip.c
+++ b/thirdparty/minizip/zip.c
@@ -7,7 +7,7 @@
Modifications for Zip64 support
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
- For more info read LICENSE-MiniZip.txt
+ For more info read MiniZip_info.txt
Changes
Oct-2009 - Mathias Svensson - Remove old C style function prototypes
@@ -283,7 +283,7 @@ local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len)
nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T)
*/
-local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte);
+local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte));
local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)
{
unsigned char buf[8];
@@ -307,7 +307,7 @@ local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def,
return ZIP_OK;
}
-local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte);
+local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte));
local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte)
{
unsigned char* buf=(unsigned char*)dest;
@@ -344,7 +344,7 @@ local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm)
/****************************************************************************/
-local int zip64local_getByte (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi);
+local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi));
local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi)
{
@@ -368,7 +368,7 @@ local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,vo
/* ===========================================================================
Reads a long in LSB order from the given gz_stream. Sets
*/
-local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX);
+local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX));
local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX)
{
@@ -390,7 +390,7 @@ local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def,
return err;
}
-local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX);
+local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX));
local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX)
{
@@ -420,7 +420,7 @@ local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def,
return err;
}
-local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX);
+local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX));
local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)
@@ -475,7 +475,7 @@ local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def
Locate the Central directory of a zipfile (at the end, just before
the global comment)
*/
-local ZPOS64_T zip64local_SearchCentralDir (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream);
+local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
{
@@ -537,7 +537,7 @@ local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
Locate the End of Zip64 Central directory locator and from there find the CD of a zipfile (at the end, just before
the global comment)
*/
-local ZPOS64_T zip64local_SearchCentralDir64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream);
+local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
{
@@ -854,9 +854,11 @@ extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* gl
ziinit.z_filefunc.zseek32_file = NULL;
ziinit.z_filefunc.ztell32_file = NULL;
+ /* GODOT start */
if (pzlib_filefunc64_32_def==NULL) {
- //fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64);
+ //fill_fopen64_filefunc(&ziinit.z_filefunc.zfile_func64);
} else
+ /* GODOT end */
ziinit.z_filefunc = *pzlib_filefunc64_32_def;
ziinit.filestream = ZOPEN64(ziinit.z_filefunc,
@@ -1114,9 +1116,9 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
zi->ci.flag = flagBase;
if ((level==8) || (level==9))
zi->ci.flag |= 2;
- if (level==2)
+ if ((level==2))
zi->ci.flag |= 4;
- if (level==1)
+ if ((level==1))
zi->ci.flag |= 6;
if (password != NULL)
zi->ci.flag |= 1;
@@ -1210,9 +1212,10 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
{
if(zi->ci.method == Z_DEFLATED)
{
- zi->ci.stream.zalloc = zi->z_filefunc.zfile_func64.alloc_mem;
- zi->ci.stream.zfree = zi->z_filefunc.zfile_func64.free_mem;
-
+ /* GODOT start */
+ zi->ci.stream.zalloc = zi->z_filefunc.zfile_func64.alloc_mem;
+ zi->ci.stream.zfree = zi->z_filefunc.zfile_func64.free_mem;
+ /* GODOT end */
zi->ci.stream.opaque = (voidpf)0;
if (windowBits>0)
diff --git a/thirdparty/minizip/zip.h b/thirdparty/minizip/zip.h
index 37478b34c0..8aaebb6234 100644
--- a/thirdparty/minizip/zip.h
+++ b/thirdparty/minizip/zip.h
@@ -1,4 +1,5 @@
-/* Version 1.1, February 14h, 2010
+/* zip.h -- IO on .zip files using zlib
+ Version 1.1, February 14h, 2010
part of the MiniZip project - ( http://www.winimage.com/zLibDll/minizip.html )
Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http://www.winimage.com/zLibDll/minizip.html )
@@ -6,7 +7,7 @@
Modifications for Zip64 support
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
- For more info read LICENSE-MiniZip.txt
+ For more info read MiniZip_info.txt
---------------------------------------------------------------------------
@@ -39,8 +40,6 @@
#ifndef _zip12_H
#define _zip12_H
-#include <stdlib.h>
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -114,8 +113,8 @@ typedef const char* zipcharpc;
#define APPEND_STATUS_CREATEAFTER (1)
#define APPEND_STATUS_ADDINZIP (2)
-extern zipFile ZEXPORT zipOpen (const char *pathname, int append);
-extern zipFile ZEXPORT zipOpen64 (const void *pathname, int append);
+extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
+extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
/*
Create a zipfile.
pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
@@ -135,17 +134,17 @@ extern zipFile ZEXPORT zipOpen64 (const void *pathname, int append);
Of couse, you can use RAW reading and writing to copy the file you did not want delte
*/
-extern zipFile ZEXPORT zipOpen2 (const char *pathname,
+extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
int append,
zipcharpc* globalcomment,
- zlib_filefunc_def* pzlib_filefunc_def);
+ zlib_filefunc_def* pzlib_filefunc_def));
-extern zipFile ZEXPORT zipOpen2_64 (const void *pathname,
+extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
int append,
zipcharpc* globalcomment,
- zlib_filefunc64_def* pzlib_filefunc_def);
+ zlib_filefunc64_def* pzlib_filefunc_def));
-extern int ZEXPORT zipOpenNewFileInZip (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -154,9 +153,9 @@ extern int ZEXPORT zipOpenNewFileInZip (zipFile file,
uInt size_extrafield_global,
const char* comment,
int method,
- int level);
+ int level));
-extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -166,7 +165,7 @@ extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file,
const char* comment,
int method,
int level,
- int zip64);
+ int zip64));
/*
Open a file in the ZIP for writing.
@@ -185,7 +184,7 @@ extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file,
*/
-extern int ZEXPORT zipOpenNewFileInZip2 (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -195,10 +194,10 @@ extern int ZEXPORT zipOpenNewFileInZip2 (zipFile file,
const char* comment,
int method,
int level,
- int raw);
+ int raw));
-extern int ZEXPORT zipOpenNewFileInZip2_64 (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -209,12 +208,12 @@ extern int ZEXPORT zipOpenNewFileInZip2_64 (zipFile file,
int method,
int level,
int raw,
- int zip64);
+ int zip64));
/*
Same than zipOpenNewFileInZip, except if raw=1, we write raw file
*/
-extern int ZEXPORT zipOpenNewFileInZip3 (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -229,9 +228,9 @@ extern int ZEXPORT zipOpenNewFileInZip3 (zipFile file,
int memLevel,
int strategy,
const char* password,
- uLong crcForCrypting);
+ uLong crcForCrypting));
-extern int ZEXPORT zipOpenNewFileInZip3_64 (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -248,7 +247,7 @@ extern int ZEXPORT zipOpenNewFileInZip3_64 (zipFile file,
const char* password,
uLong crcForCrypting,
int zip64
- );
+ ));
/*
Same than zipOpenNewFileInZip2, except
@@ -257,7 +256,7 @@ extern int ZEXPORT zipOpenNewFileInZip3_64 (zipFile file,
crcForCrypting : crc of file to compress (needed for crypting)
*/
-extern int ZEXPORT zipOpenNewFileInZip4 (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -275,10 +274,10 @@ extern int ZEXPORT zipOpenNewFileInZip4 (zipFile file,
uLong crcForCrypting,
uLong versionMadeBy,
uLong flagBase
- );
+ ));
-extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file,
+extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
@@ -297,7 +296,7 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file,
uLong versionMadeBy,
uLong flagBase,
int zip64
- );
+ ));
/*
Same than zipOpenNewFileInZip4, except
versionMadeBy : value for Version made by field
@@ -305,25 +304,25 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file,
*/
-extern int ZEXPORT zipWriteInFileInZip (zipFile file,
+extern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
const void* buf,
- unsigned len);
+ unsigned len));
/*
Write data in the zipfile
*/
-extern int ZEXPORT zipCloseFileInZip (zipFile file);
+extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
/*
Close the current file in the zipfile
*/
-extern int ZEXPORT zipCloseFileInZipRaw (zipFile file,
+extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
uLong uncompressed_size,
- uLong crc32);
+ uLong crc32));
-extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file,
+extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
ZPOS64_T uncompressed_size,
- uLong crc32);
+ uLong crc32));
/*
Close the current file in the zipfile, for file opened with
@@ -331,14 +330,14 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file,
uncompressed_size and crc32 are value for the uncompressed size
*/
-extern int ZEXPORT zipClose (zipFile file,
- const char* global_comment);
+extern int ZEXPORT zipClose OF((zipFile file,
+ const char* global_comment));
/*
Close the zipfile
*/
-extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHeader);
+extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader));
/*
zipRemoveExtraInfoBlock - Added by Mathias Svensson
diff --git a/thirdparty/misc/stb_truetype.h b/thirdparty/misc/stb_truetype.h
index 016972785a..cec2425471 100644
--- a/thirdparty/misc/stb_truetype.h
+++ b/thirdparty/misc/stb_truetype.h
@@ -1,11 +1,12 @@
-// stb_truetype.h - v1.11 - public domain
-// authored from 2009-2015 by Sean Barrett / RAD Game Tools
+// stb_truetype.h - v1.17 - public domain
+// authored from 2009-2016 by Sean Barrett / RAD Game Tools
//
// This library processes TrueType files:
// parse files
// extract glyph metrics
// extract glyph shapes
// render glyphs to one-channel bitmaps with antialiasing (box filter)
+// render glyphs to one-channel SDF bitmaps (signed-distance field/function)
//
// Todo:
// non-MS cmaps
@@ -20,16 +21,19 @@
//
// Mikko Mononen: compound shape support, more cmap formats
// Tor Andersson: kerning, subpixel rendering
+// Dougall Johnson: OpenType / Type 2 font handling
//
// Misc other:
// Ryan Gordon
// Simon Glass
+// github:IntellectualKitty
+// Imanol Celaya
//
// Bug/warning reports/fixes:
-// "Zer" on mollyrocket (with fix)
+// "Zer" on mollyrocket
// Cass Everitt
// stoiko (Haemimont Games)
-// Brian Hook
+// Brian Hook
// Walter van Niftrik
// David Gow
// David Given
@@ -48,9 +52,17 @@
// Higor Euripedes
// Thomas Fields
// Derek Vinyard
+// Cort Stratton
+// github:oyvindjam
//
// VERSION HISTORY
//
+// 1.17 (2017-07-23) make more arguments const; doc fix
+// 1.16 (2017-07-12) SDF support
+// 1.15 (2017-03-03) make more arguments const
+// 1.14 (2017-01-16) num-fonts-in-TTC function
+// 1.13 (2017-01-02) support OpenType fonts, certain Apple fonts
+// 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual
// 1.11 (2016-04-02) fix unused-variable warning
// 1.10 (2016-04-02) user-defined fabs(); rare memory leak; remove duplicate typedef
// 1.09 (2016-01-16) warning fix; avoid crash on outofmem; use allocation userdata properly
@@ -60,20 +72,12 @@
// fix stbtt_GetFontOFfsetForIndex (never worked for non-0 input?);
// fixed an assert() bug in the new rasterizer
// replace assert() with STBTT_assert() in new rasterizer
-// 1.06 (2015-07-14) performance improvements (~35% faster on x86 and x64 on test machine)
-// also more precise AA rasterizer, except if shapes overlap
-// remove need for STBTT_sort
-// 1.05 (2015-04-15) fix misplaced definitions for STBTT_STATIC
-// 1.04 (2015-04-15) typo in example
-// 1.03 (2015-04-12) STBTT_STATIC, fix memory leak in new packing, various fixes
//
// Full history can be found at the end of this file.
//
// LICENSE
//
-// This software is dual-licensed to the public domain and under the following
-// license: you are granted a perpetual, irrevocable license to copy, modify,
-// publish, and distribute this file as you see fit.
+// See end of file for license information.
//
// USAGE
//
@@ -93,14 +97,15 @@
// Improved 3D API (more shippable):
// #include "stb_rect_pack.h" -- optional, but you really want it
// stbtt_PackBegin()
-// stbtt_PackSetOversample() -- for improved quality on small fonts
+// stbtt_PackSetOversampling() -- for improved quality on small fonts
// stbtt_PackFontRanges() -- pack and renders
// stbtt_PackEnd()
// stbtt_GetPackedQuad()
//
// "Load" a font file from a memory buffer (you have to keep the buffer loaded)
// stbtt_InitFont()
-// stbtt_GetFontOffsetForIndex() -- use for TTC font collections
+// stbtt_GetFontOffsetForIndex() -- indexing for TTC font collections
+// stbtt_GetNumberOfFonts() -- number of fonts for TTC font collections
//
// Render a unicode codepoint to a bitmap
// stbtt_GetCodepointBitmap() -- allocates and returns a bitmap
@@ -110,6 +115,7 @@
// Character advance/positioning
// stbtt_GetCodepointHMetrics()
// stbtt_GetFontVMetrics()
+// stbtt_GetFontVMetricsOS2()
// stbtt_GetCodepointKernAdvance()
//
// Starting with version 1.06, the rasterizer was replaced with a new,
@@ -218,7 +224,7 @@
// Curve tesselation 120 LOC \__ 550 LOC Bitmap creation
// Bitmap management 100 LOC /
// Baked bitmap interface 70 LOC /
-// Font name matching & access 150 LOC ---- 150
+// Font name matching & access 150 LOC ---- 150
// C runtime library abstraction 60 LOC ---- 60
//
//
@@ -311,7 +317,7 @@ int main(int argc, char **argv)
}
return 0;
}
-#endif
+#endif
//
// Output:
//
@@ -325,9 +331,9 @@ int main(int argc, char **argv)
// :@@. M@M
// @@@o@@@@
// :M@@V:@@.
-//
+//
//////////////////////////////////////////////////////////////////////////////
-//
+//
// Complete program: print "Hello World!" banner, with bugs
//
#if 0
@@ -407,6 +413,18 @@ int main(int arg, char **argv)
#ifndef STBTT_sqrt
#include <math.h>
#define STBTT_sqrt(x) sqrt(x)
+ #define STBTT_pow(x,y) pow(x,y)
+ #endif
+
+ #ifndef STBTT_cos
+ #include <math.h>
+ #define STBTT_cos(x) cos(x)
+ #define STBTT_acos(x) acos(x)
+ #endif
+
+ #ifndef STBTT_fabs
+ #include <math.h>
+ #define STBTT_fabs(x) fabs(x)
#endif
#ifndef STBTT_fabs
@@ -432,7 +450,7 @@ int main(int arg, char **argv)
#endif
#ifndef STBTT_memcpy
- #include <memory.h>
+ #include <string.h>
#define STBTT_memcpy memcpy
#define STBTT_memset memset
#endif
@@ -458,6 +476,14 @@ int main(int arg, char **argv)
extern "C" {
#endif
+// private structure
+typedef struct
+{
+ unsigned char *data;
+ int cursor;
+ int size;
+} stbtt__buf;
+
//////////////////////////////////////////////////////////////////////////////
//
// TEXTURE BAKING API
@@ -487,7 +513,7 @@ typedef struct
float x1,y1,s1,t1; // bottom-right
} stbtt_aligned_quad;
-STBTT_DEF void stbtt_GetBakedQuad(stbtt_bakedchar *chardata, int pw, int ph, // same data as above
+STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, // same data as above
int char_index, // character to display
float *xpos, float *ypos, // pointers to current position in screen pixel space
stbtt_aligned_quad *q, // output: quad to draw
@@ -527,7 +553,7 @@ typedef struct stbrp_rect stbrp_rect;
STBTT_DEF int stbtt_PackBegin(stbtt_pack_context *spc, unsigned char *pixels, int width, int height, int stride_in_bytes, int padding, void *alloc_context);
// Initializes a packing context stored in the passed-in stbtt_pack_context.
// Future calls using this context will pack characters into the bitmap passed
-// in here: a 1-channel bitmap that is weight x height. stride_in_bytes is
+// in here: a 1-channel bitmap that is width * height. stride_in_bytes is
// the distance from one row to the next (or 0 to mean they are packed tightly
// together). "padding" is the amount of padding to leave between each
// character (normally you want '1' for bitmaps you'll use as textures with
@@ -540,7 +566,7 @@ STBTT_DEF void stbtt_PackEnd (stbtt_pack_context *spc);
#define STBTT_POINT_SIZE(x) (-(x))
-STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, float font_size,
+STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, float font_size,
int first_unicode_char_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range);
// Creates character bitmaps from the font_index'th font found in fontdata (use
// font_index=0 if you don't know what that is). It creates num_chars_in_range
@@ -565,7 +591,7 @@ typedef struct
unsigned char h_oversample, v_oversample; // don't set these, they're used internally
} stbtt_pack_range;
-STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges);
+STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges);
// Creates character bitmaps from multiple ranges of characters stored in
// ranges. This will usually create a better-packed bitmap than multiple
// calls to stbtt_PackFontRange. Note that you can call this multiple
@@ -587,19 +613,19 @@ STBTT_DEF void stbtt_PackSetOversampling(stbtt_pack_context *spc, unsigned int h
// To use with PackFontRangesGather etc., you must set it before calls
// call to PackFontRangesGatherRects.
-STBTT_DEF void stbtt_GetPackedQuad(stbtt_packedchar *chardata, int pw, int ph, // same data as above
+STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, // same data as above
int char_index, // character to display
float *xpos, float *ypos, // pointers to current position in screen pixel space
stbtt_aligned_quad *q, // output: quad to draw
int align_to_integer);
-STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
+STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects);
-STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
+STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
// Calling these functions in sequence is roughly equivalent to calling
// stbtt_PackFontRanges(). If you more control over the packing of multiple
// fonts, or if you want to pack custom data into a font texture, take a look
-// at the source to of stbtt_PackFontRanges() and create a custom version
+// at the source to of stbtt_PackFontRanges() and create a custom version
// using these functions, e.g. call GatherRects multiple times,
// building up a single array of rects, then call PackRects once,
// then call RenderIntoRects repeatedly. This may result in a
@@ -626,14 +652,19 @@ struct stbtt_pack_context {
//
//
+STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data);
+// This function will determine the number of fonts in a font file. TrueType
+// collection (.ttc) files may contain multiple fonts, while TrueType font
+// (.ttf) files only contain one font. The number of fonts can be used for
+// indexing with the previous function where the index is between zero and one
+// less than the total fonts. If an error occurs, -1 is returned.
+
STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index);
// Each .ttf/.ttc file may have more than one font. Each font has a sequential
// index number starting from 0. Call this function to get the font offset for
// a given index; it returns -1 if the index is out of range. A regular .ttf
// file will only define one font and it always be at offset 0, so it will
-// return '0' for index 0, and -1 for all other indices. You can just skip
-// this step if you know it's that kind of font.
-
+// return '0' for index 0, and -1 for all other indices.
// The following structure is defined publically so you can declare one on
// the stack or as a global or etc, but you should treat it as opaque.
@@ -648,6 +679,13 @@ struct stbtt_fontinfo
int loca,head,glyf,hhea,hmtx,kern; // table locations as offset from start of .ttf
int index_map; // a cmap mapping for our chosen character encoding
int indexToLocFormat; // format needed to map from glyph index to glyph
+
+ stbtt__buf cff; // cff font data
+ stbtt__buf charstrings; // the charstring index
+ stbtt__buf gsubrs; // global charstring subroutines index
+ stbtt__buf subrs; // private charstring subroutines index
+ stbtt__buf fontdicts; // array of font dicts
+ stbtt__buf fdselect; // map from glyph to fontdict
};
STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset);
@@ -695,6 +733,12 @@ STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, in
// these are expressed in unscaled coordinates, so you must multiply by
// the scale factor for a given size
+STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAscent, int *typoDescent, int *typoLineGap);
+// analogous to GetFontVMetrics, but returns the "typographic" values from the OS/2
+// table (specific to MS/Windows TTF files).
+//
+// Returns 1 on success (table present), 0 on failure.
+
STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1);
// the bounding box around all possible characters
@@ -725,7 +769,8 @@ STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, in
enum {
STBTT_vmove=1,
STBTT_vline,
- STBTT_vcurve
+ STBTT_vcurve,
+ STBTT_vcubic
};
#endif
@@ -734,7 +779,7 @@ STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, in
#define stbtt_vertex_type short // can't use stbtt_int16 because that's not visible in the header file
typedef struct
{
- stbtt_vertex_type x,y,cx,cy;
+ stbtt_vertex_type x,y,cx,cy,cx1,cy1;
unsigned char type,padding;
} stbtt_vertex;
#endif
@@ -788,6 +833,10 @@ STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, uns
// same as stbtt_MakeCodepointBitmap, but you can specify a subpixel
// shift for the character
+STBTT_DEF void stbtt_MakeCodepointBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int codepoint);
+// same as stbtt_MakeCodepointBitmapSubpixel, but prefiltering
+// is performed (see stbtt_PackSetOversampling)
+
STBTT_DEF void stbtt_GetCodepointBitmapBox(const stbtt_fontinfo *font, int codepoint, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1);
// get the bbox of the bitmap centered around the glyph origin; so the
// bitmap width is ix1-ix0, height is iy1-iy0, and location to place
@@ -805,6 +854,7 @@ STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float
STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int glyph, int *width, int *height, int *xoff, int *yoff);
STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int glyph);
STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int glyph);
+STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int oversample_x, int oversample_y, float *sub_x, float *sub_y, int glyph);
STBTT_DEF void stbtt_GetGlyphBitmapBox(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y, int *ix0, int *iy0, int *ix1, int *iy1);
STBTT_DEF void stbtt_GetGlyphBitmapBoxSubpixel(const stbtt_fontinfo *font, int glyph, float scale_x, float scale_y,float shift_x, float shift_y, int *ix0, int *iy0, int *ix1, int *iy1);
@@ -829,6 +879,64 @@ STBTT_DEF void stbtt_Rasterize(stbtt__bitmap *result, // 1-channel bitmap
//////////////////////////////////////////////////////////////////////////////
//
+// Signed Distance Function (or Field) rendering
+
+STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata);
+// frees the SDF bitmap allocated below
+
+STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff);
+STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff);
+// These functions compute a discretized SDF field for a single character, suitable for storing
+// in a single-channel texture, sampling with bilinear filtering, and testing against
+// larger than some threshhold to produce scalable fonts.
+// info -- the font
+// scale -- controls the size of the resulting SDF bitmap, same as it would be creating a regular bitmap
+// glyph/codepoint -- the character to generate the SDF for
+// padding -- extra "pixels" around the character which are filled with the distance to the character (not 0),
+// which allows effects like bit outlines
+// onedge_value -- value 0-255 to test the SDF against to reconstruct the character (i.e. the isocontour of the character)
+// pixel_dist_scale -- what value the SDF should increase by when moving one SDF "pixel" away from the edge (on the 0..255 scale)
+// if positive, > onedge_value is inside; if negative, < onedge_value is inside
+// width,height -- output height & width of the SDF bitmap (including padding)
+// xoff,yoff -- output origin of the character
+// return value -- a 2D array of bytes 0..255, width*height in size
+//
+// pixel_dist_scale & onedge_value are a scale & bias that allows you to make
+// optimal use of the limited 0..255 for your application, trading off precision
+// and special effects. SDF values outside the range 0..255 are clamped to 0..255.
+//
+// Example:
+// scale = stbtt_ScaleForPixelHeight(22)
+// padding = 5
+// onedge_value = 180
+// pixel_dist_scale = 180/5.0 = 36.0
+//
+// This will create an SDF bitmap in which the character is about 22 pixels
+// high but the whole bitmap is about 22+5+5=32 pixels high. To produce a filled
+// shape, sample the SDF at each pixel and fill the pixel if the SDF value
+// is greater than or equal to 180/255. (You'll actually want to antialias,
+// which is beyond the scope of this example.) Additionally, you can compute
+// offset outlines (e.g. to stroke the character border inside & outside,
+// or only outside). For example, to fill outside the character up to 3 SDF
+// pixels, you would compare against (180-36.0*3)/255 = 72/255. The above
+// choice of variables maps a range from 5 pixels outside the shape to
+// 2 pixels inside the shape to 0..255; this is intended primarily for apply
+// outside effects only (the interior range is needed to allow proper
+// antialiasing of the font at *smaller* sizes)
+//
+// The function computes the SDF analytically at each SDF pixel, not by e.g.
+// building a higher-res bitmap and approximating it. In theory the quality
+// should be as high as possible for an SDF of this size & representation, but
+// unclear if this is true in practice (perhaps building a higher-res bitmap
+// and computing from that can allow drop-out prevention).
+//
+// The algorithm has not been optimized at all, so expect it to be slow
+// if computing lots of characters or very large sizes.
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
// Finding the right font...
//
// You should really just solve this offline, keep your own tables
@@ -958,6 +1066,152 @@ typedef int stbtt__test_oversample_pow2[(STBTT_MAX_OVERSAMPLE & (STBTT_MAX_OVERS
//////////////////////////////////////////////////////////////////////////
//
+// stbtt__buf helpers to parse data from file
+//
+
+static stbtt_uint8 stbtt__buf_get8(stbtt__buf *b)
+{
+ if (b->cursor >= b->size)
+ return 0;
+ return b->data[b->cursor++];
+}
+
+static stbtt_uint8 stbtt__buf_peek8(stbtt__buf *b)
+{
+ if (b->cursor >= b->size)
+ return 0;
+ return b->data[b->cursor];
+}
+
+static void stbtt__buf_seek(stbtt__buf *b, int o)
+{
+ STBTT_assert(!(o > b->size || o < 0));
+ b->cursor = (o > b->size || o < 0) ? b->size : o;
+}
+
+static void stbtt__buf_skip(stbtt__buf *b, int o)
+{
+ stbtt__buf_seek(b, b->cursor + o);
+}
+
+static stbtt_uint32 stbtt__buf_get(stbtt__buf *b, int n)
+{
+ stbtt_uint32 v = 0;
+ int i;
+ STBTT_assert(n >= 1 && n <= 4);
+ for (i = 0; i < n; i++)
+ v = (v << 8) | stbtt__buf_get8(b);
+ return v;
+}
+
+static stbtt__buf stbtt__new_buf(const void *p, size_t size)
+{
+ stbtt__buf r;
+ STBTT_assert(size < 0x40000000);
+ r.data = (stbtt_uint8*) p;
+ r.size = (int) size;
+ r.cursor = 0;
+ return r;
+}
+
+#define stbtt__buf_get16(b) stbtt__buf_get((b), 2)
+#define stbtt__buf_get32(b) stbtt__buf_get((b), 4)
+
+static stbtt__buf stbtt__buf_range(const stbtt__buf *b, int o, int s)
+{
+ stbtt__buf r = stbtt__new_buf(NULL, 0);
+ if (o < 0 || s < 0 || o > b->size || s > b->size - o) return r;
+ r.data = b->data + o;
+ r.size = s;
+ return r;
+}
+
+static stbtt__buf stbtt__cff_get_index(stbtt__buf *b)
+{
+ int count, start, offsize;
+ start = b->cursor;
+ count = stbtt__buf_get16(b);
+ if (count) {
+ offsize = stbtt__buf_get8(b);
+ STBTT_assert(offsize >= 1 && offsize <= 4);
+ stbtt__buf_skip(b, offsize * count);
+ stbtt__buf_skip(b, stbtt__buf_get(b, offsize) - 1);
+ }
+ return stbtt__buf_range(b, start, b->cursor - start);
+}
+
+static stbtt_uint32 stbtt__cff_int(stbtt__buf *b)
+{
+ int b0 = stbtt__buf_get8(b);
+ if (b0 >= 32 && b0 <= 246) return b0 - 139;
+ else if (b0 >= 247 && b0 <= 250) return (b0 - 247)*256 + stbtt__buf_get8(b) + 108;
+ else if (b0 >= 251 && b0 <= 254) return -(b0 - 251)*256 - stbtt__buf_get8(b) - 108;
+ else if (b0 == 28) return stbtt__buf_get16(b);
+ else if (b0 == 29) return stbtt__buf_get32(b);
+ STBTT_assert(0);
+ return 0;
+}
+
+static void stbtt__cff_skip_operand(stbtt__buf *b) {
+ int v, b0 = stbtt__buf_peek8(b);
+ STBTT_assert(b0 >= 28);
+ if (b0 == 30) {
+ stbtt__buf_skip(b, 1);
+ while (b->cursor < b->size) {
+ v = stbtt__buf_get8(b);
+ if ((v & 0xF) == 0xF || (v >> 4) == 0xF)
+ break;
+ }
+ } else {
+ stbtt__cff_int(b);
+ }
+}
+
+static stbtt__buf stbtt__dict_get(stbtt__buf *b, int key)
+{
+ stbtt__buf_seek(b, 0);
+ while (b->cursor < b->size) {
+ int start = b->cursor, end, op;
+ while (stbtt__buf_peek8(b) >= 28)
+ stbtt__cff_skip_operand(b);
+ end = b->cursor;
+ op = stbtt__buf_get8(b);
+ if (op == 12) op = stbtt__buf_get8(b) | 0x100;
+ if (op == key) return stbtt__buf_range(b, start, end-start);
+ }
+ return stbtt__buf_range(b, 0, 0);
+}
+
+static void stbtt__dict_get_ints(stbtt__buf *b, int key, int outcount, stbtt_uint32 *out)
+{
+ int i;
+ stbtt__buf operands = stbtt__dict_get(b, key);
+ for (i = 0; i < outcount && operands.cursor < operands.size; i++)
+ out[i] = stbtt__cff_int(&operands);
+}
+
+static int stbtt__cff_index_count(stbtt__buf *b)
+{
+ stbtt__buf_seek(b, 0);
+ return stbtt__buf_get16(b);
+}
+
+static stbtt__buf stbtt__cff_index_get(stbtt__buf b, int i)
+{
+ int count, offsize, start, end;
+ stbtt__buf_seek(&b, 0);
+ count = stbtt__buf_get16(&b);
+ offsize = stbtt__buf_get8(&b);
+ STBTT_assert(i >= 0 && i < count);
+ STBTT_assert(offsize >= 1 && offsize <= 4);
+ stbtt__buf_skip(&b, i*offsize);
+ start = stbtt__buf_get(&b, offsize);
+ end = stbtt__buf_get(&b, offsize);
+ return stbtt__buf_range(&b, 2+(count+1)*offsize+start, end - start);
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
// accessors to parse data from file
//
@@ -968,32 +1222,22 @@ typedef int stbtt__test_oversample_pow2[(STBTT_MAX_OVERSAMPLE & (STBTT_MAX_OVERS
#define ttCHAR(p) (* (stbtt_int8 *) (p))
#define ttFixed(p) ttLONG(p)
-#if defined(STB_TRUETYPE_BIGENDIAN) && !defined(ALLOW_UNALIGNED_TRUETYPE)
-
- #define ttUSHORT(p) (* (stbtt_uint16 *) (p))
- #define ttSHORT(p) (* (stbtt_int16 *) (p))
- #define ttULONG(p) (* (stbtt_uint32 *) (p))
- #define ttLONG(p) (* (stbtt_int32 *) (p))
-
-#else
-
- static stbtt_uint16 ttUSHORT(const stbtt_uint8 *p) { return p[0]*256 + p[1]; }
- static stbtt_int16 ttSHORT(const stbtt_uint8 *p) { return p[0]*256 + p[1]; }
- static stbtt_uint32 ttULONG(const stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
- static stbtt_int32 ttLONG(const stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
-
-#endif
+static stbtt_uint16 ttUSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; }
+static stbtt_int16 ttSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; }
+static stbtt_uint32 ttULONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
+static stbtt_int32 ttLONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
#define stbtt_tag4(p,c0,c1,c2,c3) ((p)[0] == (c0) && (p)[1] == (c1) && (p)[2] == (c2) && (p)[3] == (c3))
#define stbtt_tag(p,str) stbtt_tag4(p,str[0],str[1],str[2],str[3])
-static int stbtt__isfont(const stbtt_uint8 *font)
+static int stbtt__isfont(stbtt_uint8 *font)
{
// check the version number
if (stbtt_tag4(font, '1',0,0,0)) return 1; // TrueType 1
if (stbtt_tag(font, "typ1")) return 1; // TrueType with type 1 font -- we don't support this!
if (stbtt_tag(font, "OTTO")) return 1; // OpenType with CFF
if (stbtt_tag4(font, 0,1,0,0)) return 1; // OpenType 1.0
+ if (stbtt_tag(font, "true")) return 1; // Apple specification for TrueType fonts
return 0;
}
@@ -1011,7 +1255,7 @@ static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fontstart,
return 0;
}
-STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *font_collection, int index)
+static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_collection, int index)
{
// if it's just a font, there's only one valid index
if (stbtt__isfont(font_collection))
@@ -1030,14 +1274,43 @@ STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *font_collection,
return -1;
}
-STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data2, int fontstart)
+static int stbtt_GetNumberOfFonts_internal(unsigned char *font_collection)
+{
+ // if it's just a font, there's only one valid font
+ if (stbtt__isfont(font_collection))
+ return 1;
+
+ // check if it's a TTC
+ if (stbtt_tag(font_collection, "ttcf")) {
+ // version 1?
+ if (ttULONG(font_collection+4) == 0x00010000 || ttULONG(font_collection+4) == 0x00020000) {
+ return ttLONG(font_collection+8);
+ }
+ }
+ return 0;
+}
+
+static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict)
+{
+ stbtt_uint32 subrsoff = 0, private_loc[2] = { 0, 0 };
+ stbtt__buf pdict;
+ stbtt__dict_get_ints(&fontdict, 18, 2, private_loc);
+ if (!private_loc[1] || !private_loc[0]) return stbtt__new_buf(NULL, 0);
+ pdict = stbtt__buf_range(&cff, private_loc[1], private_loc[0]);
+ stbtt__dict_get_ints(&pdict, 19, 1, &subrsoff);
+ if (!subrsoff) return stbtt__new_buf(NULL, 0);
+ stbtt__buf_seek(&cff, private_loc[1]+subrsoff);
+ return stbtt__cff_get_index(&cff);
+}
+
+static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, int fontstart)
{
- stbtt_uint8 *data = (stbtt_uint8 *) data2;
stbtt_uint32 cmap, t;
stbtt_int32 i,numTables;
info->data = data;
info->fontstart = fontstart;
+ info->cff = stbtt__new_buf(NULL, 0);
cmap = stbtt__find_table(data, fontstart, "cmap"); // required
info->loca = stbtt__find_table(data, fontstart, "loca"); // required
@@ -1046,8 +1319,61 @@ STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data2, i
info->hhea = stbtt__find_table(data, fontstart, "hhea"); // required
info->hmtx = stbtt__find_table(data, fontstart, "hmtx"); // required
info->kern = stbtt__find_table(data, fontstart, "kern"); // not required
- if (!cmap || !info->loca || !info->head || !info->glyf || !info->hhea || !info->hmtx)
+
+ if (!cmap || !info->head || !info->hhea || !info->hmtx)
return 0;
+ if (info->glyf) {
+ // required for truetype
+ if (!info->loca) return 0;
+ } else {
+ // initialization for CFF / Type2 fonts (OTF)
+ stbtt__buf b, topdict, topdictidx;
+ stbtt_uint32 cstype = 2, charstrings = 0, fdarrayoff = 0, fdselectoff = 0;
+ stbtt_uint32 cff;
+
+ cff = stbtt__find_table(data, fontstart, "CFF ");
+ if (!cff) return 0;
+
+ info->fontdicts = stbtt__new_buf(NULL, 0);
+ info->fdselect = stbtt__new_buf(NULL, 0);
+
+ // @TODO this should use size from table (not 512MB)
+ info->cff = stbtt__new_buf(data+cff, 512*1024*1024);
+ b = info->cff;
+
+ // read the header
+ stbtt__buf_skip(&b, 2);
+ stbtt__buf_seek(&b, stbtt__buf_get8(&b)); // hdrsize
+
+ // @TODO the name INDEX could list multiple fonts,
+ // but we just use the first one.
+ stbtt__cff_get_index(&b); // name INDEX
+ topdictidx = stbtt__cff_get_index(&b);
+ topdict = stbtt__cff_index_get(topdictidx, 0);
+ stbtt__cff_get_index(&b); // string INDEX
+ info->gsubrs = stbtt__cff_get_index(&b);
+
+ stbtt__dict_get_ints(&topdict, 17, 1, &charstrings);
+ stbtt__dict_get_ints(&topdict, 0x100 | 6, 1, &cstype);
+ stbtt__dict_get_ints(&topdict, 0x100 | 36, 1, &fdarrayoff);
+ stbtt__dict_get_ints(&topdict, 0x100 | 37, 1, &fdselectoff);
+ info->subrs = stbtt__get_subrs(b, topdict);
+
+ // we only support Type 2 charstrings
+ if (cstype != 2) return 0;
+ if (charstrings == 0) return 0;
+
+ if (fdarrayoff) {
+ // looks like a CID font
+ if (!fdselectoff) return 0;
+ stbtt__buf_seek(&b, fdarrayoff);
+ info->fontdicts = stbtt__cff_get_index(&b);
+ info->fdselect = stbtt__buf_range(&b, fdselectoff, b.size-fdselectoff);
+ }
+
+ stbtt__buf_seek(&b, charstrings);
+ info->charstrings = stbtt__cff_get_index(&b);
+ }
t = stbtt__find_table(data, fontstart, "maxp");
if (t)
@@ -1198,6 +1524,8 @@ static int stbtt__GetGlyfOffset(const stbtt_fontinfo *info, int glyph_index)
{
int g1,g2;
+ STBTT_assert(!info->cff.size);
+
if (glyph_index >= info->numGlyphs) return -1; // glyph index out of range
if (info->indexToLocFormat >= 2) return -1; // unknown index->glyph map format
@@ -1212,15 +1540,21 @@ static int stbtt__GetGlyfOffset(const stbtt_fontinfo *info, int glyph_index)
return g1==g2 ? -1 : g1; // if length is 0, return -1
}
+static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1);
+
STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1)
{
- int g = stbtt__GetGlyfOffset(info, glyph_index);
- if (g < 0) return 0;
+ if (info->cff.size) {
+ stbtt__GetGlyphInfoT2(info, glyph_index, x0, y0, x1, y1);
+ } else {
+ int g = stbtt__GetGlyfOffset(info, glyph_index);
+ if (g < 0) return 0;
- if (x0) *x0 = ttSHORT(info->data + g + 2);
- if (y0) *y0 = ttSHORT(info->data + g + 4);
- if (x1) *x1 = ttSHORT(info->data + g + 6);
- if (y1) *y1 = ttSHORT(info->data + g + 8);
+ if (x0) *x0 = ttSHORT(info->data + g + 2);
+ if (y0) *y0 = ttSHORT(info->data + g + 4);
+ if (x1) *x1 = ttSHORT(info->data + g + 6);
+ if (y1) *y1 = ttSHORT(info->data + g + 8);
+ }
return 1;
}
@@ -1232,7 +1566,10 @@ STBTT_DEF int stbtt_GetCodepointBox(const stbtt_fontinfo *info, int codepoint, i
STBTT_DEF int stbtt_IsGlyphEmpty(const stbtt_fontinfo *info, int glyph_index)
{
stbtt_int16 numberOfContours;
- int g = stbtt__GetGlyfOffset(info, glyph_index);
+ int g;
+ if (info->cff.size)
+ return stbtt__GetGlyphInfoT2(info, glyph_index, NULL, NULL, NULL, NULL) == 0;
+ g = stbtt__GetGlyfOffset(info, glyph_index);
if (g < 0) return 1;
numberOfContours = ttSHORT(info->data + g);
return numberOfContours == 0;
@@ -1254,7 +1591,7 @@ static int stbtt__close_shape(stbtt_vertex *vertices, int num_vertices, int was_
return num_vertices;
}
-STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices)
+static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices)
{
stbtt_int16 numberOfContours;
stbtt_uint8 *endPtsOfContours;
@@ -1350,7 +1687,7 @@ STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, s
if (i != 0)
num_vertices = stbtt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy);
- // now start the new one
+ // now start the new one
start_off = !(flags & 1);
if (start_off) {
// if we start off with an off-curve point, then when we need to find a point on the curve
@@ -1403,7 +1740,7 @@ STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, s
int comp_num_verts = 0, i;
stbtt_vertex *comp_verts = 0, *tmp = 0;
float mtx[6] = {1,0,0,1,0,0}, m, n;
-
+
flags = ttSHORT(comp); comp+=2;
gidx = ttSHORT(comp); comp+=2;
@@ -1433,7 +1770,7 @@ STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, s
mtx[2] = ttSHORT(comp)/16384.0f; comp+=2;
mtx[3] = ttSHORT(comp)/16384.0f; comp+=2;
}
-
+
// Find transformation scales.
m = (float) STBTT_sqrt(mtx[0]*mtx[0] + mtx[1]*mtx[1]);
n = (float) STBTT_sqrt(mtx[2]*mtx[2] + mtx[3]*mtx[3]);
@@ -1480,6 +1817,416 @@ STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, s
return num_vertices;
}
+typedef struct
+{
+ int bounds;
+ int started;
+ float first_x, first_y;
+ float x, y;
+ stbtt_int32 min_x, max_x, min_y, max_y;
+
+ stbtt_vertex *pvertices;
+ int num_vertices;
+} stbtt__csctx;
+
+#define STBTT__CSCTX_INIT(bounds) {bounds,0, 0,0, 0,0, 0,0,0,0, NULL, 0}
+
+static void stbtt__track_vertex(stbtt__csctx *c, stbtt_int32 x, stbtt_int32 y)
+{
+ if (x > c->max_x || !c->started) c->max_x = x;
+ if (y > c->max_y || !c->started) c->max_y = y;
+ if (x < c->min_x || !c->started) c->min_x = x;
+ if (y < c->min_y || !c->started) c->min_y = y;
+ c->started = 1;
+}
+
+static void stbtt__csctx_v(stbtt__csctx *c, stbtt_uint8 type, stbtt_int32 x, stbtt_int32 y, stbtt_int32 cx, stbtt_int32 cy, stbtt_int32 cx1, stbtt_int32 cy1)
+{
+ if (c->bounds) {
+ stbtt__track_vertex(c, x, y);
+ if (type == STBTT_vcubic) {
+ stbtt__track_vertex(c, cx, cy);
+ stbtt__track_vertex(c, cx1, cy1);
+ }
+ } else {
+ stbtt_setvertex(&c->pvertices[c->num_vertices], type, x, y, cx, cy);
+ c->pvertices[c->num_vertices].cx1 = (stbtt_int16) cx1;
+ c->pvertices[c->num_vertices].cy1 = (stbtt_int16) cy1;
+ }
+ c->num_vertices++;
+}
+
+static void stbtt__csctx_close_shape(stbtt__csctx *ctx)
+{
+ if (ctx->first_x != ctx->x || ctx->first_y != ctx->y)
+ stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->first_x, (int)ctx->first_y, 0, 0, 0, 0);
+}
+
+static void stbtt__csctx_rmove_to(stbtt__csctx *ctx, float dx, float dy)
+{
+ stbtt__csctx_close_shape(ctx);
+ ctx->first_x = ctx->x = ctx->x + dx;
+ ctx->first_y = ctx->y = ctx->y + dy;
+ stbtt__csctx_v(ctx, STBTT_vmove, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0);
+}
+
+static void stbtt__csctx_rline_to(stbtt__csctx *ctx, float dx, float dy)
+{
+ ctx->x += dx;
+ ctx->y += dy;
+ stbtt__csctx_v(ctx, STBTT_vline, (int)ctx->x, (int)ctx->y, 0, 0, 0, 0);
+}
+
+static void stbtt__csctx_rccurve_to(stbtt__csctx *ctx, float dx1, float dy1, float dx2, float dy2, float dx3, float dy3)
+{
+ float cx1 = ctx->x + dx1;
+ float cy1 = ctx->y + dy1;
+ float cx2 = cx1 + dx2;
+ float cy2 = cy1 + dy2;
+ ctx->x = cx2 + dx3;
+ ctx->y = cy2 + dy3;
+ stbtt__csctx_v(ctx, STBTT_vcubic, (int)ctx->x, (int)ctx->y, (int)cx1, (int)cy1, (int)cx2, (int)cy2);
+}
+
+static stbtt__buf stbtt__get_subr(stbtt__buf idx, int n)
+{
+ int count = stbtt__cff_index_count(&idx);
+ int bias = 107;
+ if (count >= 33900)
+ bias = 32768;
+ else if (count >= 1240)
+ bias = 1131;
+ n += bias;
+ if (n < 0 || n >= count)
+ return stbtt__new_buf(NULL, 0);
+ return stbtt__cff_index_get(idx, n);
+}
+
+static stbtt__buf stbtt__cid_get_glyph_subrs(const stbtt_fontinfo *info, int glyph_index)
+{
+ stbtt__buf fdselect = info->fdselect;
+ int nranges, start, end, v, fmt, fdselector = -1, i;
+
+ stbtt__buf_seek(&fdselect, 0);
+ fmt = stbtt__buf_get8(&fdselect);
+ if (fmt == 0) {
+ // untested
+ stbtt__buf_skip(&fdselect, glyph_index);
+ fdselector = stbtt__buf_get8(&fdselect);
+ } else if (fmt == 3) {
+ nranges = stbtt__buf_get16(&fdselect);
+ start = stbtt__buf_get16(&fdselect);
+ for (i = 0; i < nranges; i++) {
+ v = stbtt__buf_get8(&fdselect);
+ end = stbtt__buf_get16(&fdselect);
+ if (glyph_index >= start && glyph_index < end) {
+ fdselector = v;
+ break;
+ }
+ start = end;
+ }
+ }
+ if (fdselector == -1) stbtt__new_buf(NULL, 0);
+ return stbtt__get_subrs(info->cff, stbtt__cff_index_get(info->fontdicts, fdselector));
+}
+
+static int stbtt__run_charstring(const stbtt_fontinfo *info, int glyph_index, stbtt__csctx *c)
+{
+ int in_header = 1, maskbits = 0, subr_stack_height = 0, sp = 0, v, i, b0;
+ int has_subrs = 0, clear_stack;
+ float s[48];
+ stbtt__buf subr_stack[10], subrs = info->subrs, b;
+ float f;
+
+#define STBTT__CSERR(s) (0)
+
+ // this currently ignores the initial width value, which isn't needed if we have hmtx
+ b = stbtt__cff_index_get(info->charstrings, glyph_index);
+ while (b.cursor < b.size) {
+ i = 0;
+ clear_stack = 1;
+ b0 = stbtt__buf_get8(&b);
+ switch (b0) {
+ // @TODO implement hinting
+ case 0x13: // hintmask
+ case 0x14: // cntrmask
+ if (in_header)
+ maskbits += (sp / 2); // implicit "vstem"
+ in_header = 0;
+ stbtt__buf_skip(&b, (maskbits + 7) / 8);
+ break;
+
+ case 0x01: // hstem
+ case 0x03: // vstem
+ case 0x12: // hstemhm
+ case 0x17: // vstemhm
+ maskbits += (sp / 2);
+ break;
+
+ case 0x15: // rmoveto
+ in_header = 0;
+ if (sp < 2) return STBTT__CSERR("rmoveto stack");
+ stbtt__csctx_rmove_to(c, s[sp-2], s[sp-1]);
+ break;
+ case 0x04: // vmoveto
+ in_header = 0;
+ if (sp < 1) return STBTT__CSERR("vmoveto stack");
+ stbtt__csctx_rmove_to(c, 0, s[sp-1]);
+ break;
+ case 0x16: // hmoveto
+ in_header = 0;
+ if (sp < 1) return STBTT__CSERR("hmoveto stack");
+ stbtt__csctx_rmove_to(c, s[sp-1], 0);
+ break;
+
+ case 0x05: // rlineto
+ if (sp < 2) return STBTT__CSERR("rlineto stack");
+ for (; i + 1 < sp; i += 2)
+ stbtt__csctx_rline_to(c, s[i], s[i+1]);
+ break;
+
+ // hlineto/vlineto and vhcurveto/hvcurveto alternate horizontal and vertical
+ // starting from a different place.
+
+ case 0x07: // vlineto
+ if (sp < 1) return STBTT__CSERR("vlineto stack");
+ goto vlineto;
+ case 0x06: // hlineto
+ if (sp < 1) return STBTT__CSERR("hlineto stack");
+ for (;;) {
+ if (i >= sp) break;
+ stbtt__csctx_rline_to(c, s[i], 0);
+ i++;
+ vlineto:
+ if (i >= sp) break;
+ stbtt__csctx_rline_to(c, 0, s[i]);
+ i++;
+ }
+ break;
+
+ case 0x1F: // hvcurveto
+ if (sp < 4) return STBTT__CSERR("hvcurveto stack");
+ goto hvcurveto;
+ case 0x1E: // vhcurveto
+ if (sp < 4) return STBTT__CSERR("vhcurveto stack");
+ for (;;) {
+ if (i + 3 >= sp) break;
+ stbtt__csctx_rccurve_to(c, 0, s[i], s[i+1], s[i+2], s[i+3], (sp - i == 5) ? s[i + 4] : 0.0f);
+ i += 4;
+ hvcurveto:
+ if (i + 3 >= sp) break;
+ stbtt__csctx_rccurve_to(c, s[i], 0, s[i+1], s[i+2], (sp - i == 5) ? s[i+4] : 0.0f, s[i+3]);
+ i += 4;
+ }
+ break;
+
+ case 0x08: // rrcurveto
+ if (sp < 6) return STBTT__CSERR("rcurveline stack");
+ for (; i + 5 < sp; i += 6)
+ stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]);
+ break;
+
+ case 0x18: // rcurveline
+ if (sp < 8) return STBTT__CSERR("rcurveline stack");
+ for (; i + 5 < sp - 2; i += 6)
+ stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]);
+ if (i + 1 >= sp) return STBTT__CSERR("rcurveline stack");
+ stbtt__csctx_rline_to(c, s[i], s[i+1]);
+ break;
+
+ case 0x19: // rlinecurve
+ if (sp < 8) return STBTT__CSERR("rlinecurve stack");
+ for (; i + 1 < sp - 6; i += 2)
+ stbtt__csctx_rline_to(c, s[i], s[i+1]);
+ if (i + 5 >= sp) return STBTT__CSERR("rlinecurve stack");
+ stbtt__csctx_rccurve_to(c, s[i], s[i+1], s[i+2], s[i+3], s[i+4], s[i+5]);
+ break;
+
+ case 0x1A: // vvcurveto
+ case 0x1B: // hhcurveto
+ if (sp < 4) return STBTT__CSERR("(vv|hh)curveto stack");
+ f = 0.0;
+ if (sp & 1) { f = s[i]; i++; }
+ for (; i + 3 < sp; i += 4) {
+ if (b0 == 0x1B)
+ stbtt__csctx_rccurve_to(c, s[i], f, s[i+1], s[i+2], s[i+3], 0.0);
+ else
+ stbtt__csctx_rccurve_to(c, f, s[i], s[i+1], s[i+2], 0.0, s[i+3]);
+ f = 0.0;
+ }
+ break;
+
+ case 0x0A: // callsubr
+ if (!has_subrs) {
+ if (info->fdselect.size)
+ subrs = stbtt__cid_get_glyph_subrs(info, glyph_index);
+ has_subrs = 1;
+ }
+ // fallthrough
+ case 0x1D: // callgsubr
+ if (sp < 1) return STBTT__CSERR("call(g|)subr stack");
+ v = (int) s[--sp];
+ if (subr_stack_height >= 10) return STBTT__CSERR("recursion limit");
+ subr_stack[subr_stack_height++] = b;
+ b = stbtt__get_subr(b0 == 0x0A ? subrs : info->gsubrs, v);
+ if (b.size == 0) return STBTT__CSERR("subr not found");
+ b.cursor = 0;
+ clear_stack = 0;
+ break;
+
+ case 0x0B: // return
+ if (subr_stack_height <= 0) return STBTT__CSERR("return outside subr");
+ b = subr_stack[--subr_stack_height];
+ clear_stack = 0;
+ break;
+
+ case 0x0E: // endchar
+ stbtt__csctx_close_shape(c);
+ return 1;
+
+ case 0x0C: { // two-byte escape
+ float dx1, dx2, dx3, dx4, dx5, dx6, dy1, dy2, dy3, dy4, dy5, dy6;
+ float dx, dy;
+ int b1 = stbtt__buf_get8(&b);
+ switch (b1) {
+ // @TODO These "flex" implementations ignore the flex-depth and resolution,
+ // and always draw beziers.
+ case 0x22: // hflex
+ if (sp < 7) return STBTT__CSERR("hflex stack");
+ dx1 = s[0];
+ dx2 = s[1];
+ dy2 = s[2];
+ dx3 = s[3];
+ dx4 = s[4];
+ dx5 = s[5];
+ dx6 = s[6];
+ stbtt__csctx_rccurve_to(c, dx1, 0, dx2, dy2, dx3, 0);
+ stbtt__csctx_rccurve_to(c, dx4, 0, dx5, -dy2, dx6, 0);
+ break;
+
+ case 0x23: // flex
+ if (sp < 13) return STBTT__CSERR("flex stack");
+ dx1 = s[0];
+ dy1 = s[1];
+ dx2 = s[2];
+ dy2 = s[3];
+ dx3 = s[4];
+ dy3 = s[5];
+ dx4 = s[6];
+ dy4 = s[7];
+ dx5 = s[8];
+ dy5 = s[9];
+ dx6 = s[10];
+ dy6 = s[11];
+ //fd is s[12]
+ stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, dy3);
+ stbtt__csctx_rccurve_to(c, dx4, dy4, dx5, dy5, dx6, dy6);
+ break;
+
+ case 0x24: // hflex1
+ if (sp < 9) return STBTT__CSERR("hflex1 stack");
+ dx1 = s[0];
+ dy1 = s[1];
+ dx2 = s[2];
+ dy2 = s[3];
+ dx3 = s[4];
+ dx4 = s[5];
+ dx5 = s[6];
+ dy5 = s[7];
+ dx6 = s[8];
+ stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, 0);
+ stbtt__csctx_rccurve_to(c, dx4, 0, dx5, dy5, dx6, -(dy1+dy2+dy5));
+ break;
+
+ case 0x25: // flex1
+ if (sp < 11) return STBTT__CSERR("flex1 stack");
+ dx1 = s[0];
+ dy1 = s[1];
+ dx2 = s[2];
+ dy2 = s[3];
+ dx3 = s[4];
+ dy3 = s[5];
+ dx4 = s[6];
+ dy4 = s[7];
+ dx5 = s[8];
+ dy5 = s[9];
+ dx6 = dy6 = s[10];
+ dx = dx1+dx2+dx3+dx4+dx5;
+ dy = dy1+dy2+dy3+dy4+dy5;
+ if (STBTT_fabs(dx) > STBTT_fabs(dy))
+ dy6 = -dy;
+ else
+ dx6 = -dx;
+ stbtt__csctx_rccurve_to(c, dx1, dy1, dx2, dy2, dx3, dy3);
+ stbtt__csctx_rccurve_to(c, dx4, dy4, dx5, dy5, dx6, dy6);
+ break;
+
+ default:
+ return STBTT__CSERR("unimplemented");
+ }
+ } break;
+
+ default:
+ if (b0 != 255 && b0 != 28 && (b0 < 32 || b0 > 254))
+ return STBTT__CSERR("reserved operator");
+
+ // push immediate
+ if (b0 == 255) {
+ f = (float)stbtt__buf_get32(&b) / 0x10000;
+ } else {
+ stbtt__buf_skip(&b, -1);
+ f = (float)(stbtt_int16)stbtt__cff_int(&b);
+ }
+ if (sp >= 48) return STBTT__CSERR("push stack overflow");
+ s[sp++] = f;
+ clear_stack = 0;
+ break;
+ }
+ if (clear_stack) sp = 0;
+ }
+ return STBTT__CSERR("no endchar");
+
+#undef STBTT__CSERR
+}
+
+static int stbtt__GetGlyphShapeT2(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices)
+{
+ // runs the charstring twice, once to count and once to output (to avoid realloc)
+ stbtt__csctx count_ctx = STBTT__CSCTX_INIT(1);
+ stbtt__csctx output_ctx = STBTT__CSCTX_INIT(0);
+ if (stbtt__run_charstring(info, glyph_index, &count_ctx)) {
+ *pvertices = (stbtt_vertex*)STBTT_malloc(count_ctx.num_vertices*sizeof(stbtt_vertex), info->userdata);
+ output_ctx.pvertices = *pvertices;
+ if (stbtt__run_charstring(info, glyph_index, &output_ctx)) {
+ STBTT_assert(output_ctx.num_vertices == count_ctx.num_vertices);
+ return output_ctx.num_vertices;
+ }
+ }
+ *pvertices = NULL;
+ return 0;
+}
+
+static int stbtt__GetGlyphInfoT2(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1)
+{
+ stbtt__csctx c = STBTT__CSCTX_INIT(1);
+ int r = stbtt__run_charstring(info, glyph_index, &c);
+ if (x0) {
+ *x0 = r ? c.min_x : 0;
+ *y0 = r ? c.min_y : 0;
+ *x1 = r ? c.max_x : 0;
+ *y1 = r ? c.max_y : 0;
+ }
+ return r ? c.num_vertices : 0;
+}
+
+STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, stbtt_vertex **pvertices)
+{
+ if (!info->cff.size)
+ return stbtt__GetGlyphShapeTT(info, glyph_index, pvertices);
+ else
+ return stbtt__GetGlyphShapeT2(info, glyph_index, pvertices);
+}
+
STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_index, int *advanceWidth, int *leftSideBearing)
{
stbtt_uint16 numOfLongHorMetrics = ttUSHORT(info->data+info->hhea + 34);
@@ -1541,6 +2288,17 @@ STBTT_DEF void stbtt_GetFontVMetrics(const stbtt_fontinfo *info, int *ascent, in
if (lineGap) *lineGap = ttSHORT(info->data+info->hhea + 8);
}
+STBTT_DEF int stbtt_GetFontVMetricsOS2(const stbtt_fontinfo *info, int *typoAscent, int *typoDescent, int *typoLineGap)
+{
+ int tab = stbtt__find_table(info->data, info->fontstart, "OS/2");
+ if (!tab)
+ return 0;
+ if (typoAscent ) *typoAscent = ttSHORT(info->data+tab + 68);
+ if (typoDescent) *typoDescent = ttSHORT(info->data+tab + 70);
+ if (typoLineGap) *typoLineGap = ttSHORT(info->data+tab + 72);
+ return 1;
+}
+
STBTT_DEF void stbtt_GetFontBoundingBox(const stbtt_fontinfo *info, int *x0, int *y0, int *x1, int *y1)
{
*x0 = ttSHORT(info->data + info->head + 36);
@@ -1691,7 +2449,7 @@ static stbtt__active_edge *stbtt__new_active(stbtt__hheap *hh, stbtt__edge *e, i
float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0);
STBTT_assert(z != NULL);
if (!z) return z;
-
+
// round dx down to avoid overshooting
if (dxdy < 0)
z->dx = -STBTT_ifloor(STBTT_FIX * -dxdy);
@@ -1769,7 +2527,7 @@ static void stbtt__fill_active_edges(unsigned char *scanline, int len, stbtt__ac
}
}
}
-
+
e = e->next;
}
}
@@ -2033,19 +2791,18 @@ static void stbtt__fill_active_edges_new(float *scanline, float *scanline_fill,
// from the other y segment, and it might ignored as an empty segment. to avoid
// that, we need to explicitly produce segments based on x positions.
- // rename variables to clear pairs
+ // rename variables to clearly-defined pairs
float y0 = y_top;
float x1 = (float) (x);
float x2 = (float) (x+1);
float x3 = xb;
float y3 = y_bottom;
- float y1,y2;
// x = e->x + e->dx * (y-y_top)
// (y-y_top) = (x - e->x) / e->dx
// y = (x - e->x) / e->dx + y_top
- y1 = (x - x0) / dx + y_top;
- y2 = (x+1 - x0) / dx + y_top;
+ float y1 = (x - x0) / dx + y_top;
+ float y2 = (x+1 - x0) / dx + y_top;
if (x0 < x1 && x3 > x2) { // three segments descending down-right
stbtt__handle_clipped_edge(scanline,x,e, x0,y0, x1,y1);
@@ -2350,6 +3107,48 @@ static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, float x
return 1;
}
+static void stbtt__tesselate_cubic(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float objspace_flatness_squared, int n)
+{
+ // @TODO this "flatness" calculation is just made-up nonsense that seems to work well enough
+ float dx0 = x1-x0;
+ float dy0 = y1-y0;
+ float dx1 = x2-x1;
+ float dy1 = y2-y1;
+ float dx2 = x3-x2;
+ float dy2 = y3-y2;
+ float dx = x3-x0;
+ float dy = y3-y0;
+ float longlen = (float) (STBTT_sqrt(dx0*dx0+dy0*dy0)+STBTT_sqrt(dx1*dx1+dy1*dy1)+STBTT_sqrt(dx2*dx2+dy2*dy2));
+ float shortlen = (float) STBTT_sqrt(dx*dx+dy*dy);
+ float flatness_squared = longlen*longlen-shortlen*shortlen;
+
+ if (n > 16) // 65536 segments on one curve better be enough!
+ return;
+
+ if (flatness_squared > objspace_flatness_squared) {
+ float x01 = (x0+x1)/2;
+ float y01 = (y0+y1)/2;
+ float x12 = (x1+x2)/2;
+ float y12 = (y1+y2)/2;
+ float x23 = (x2+x3)/2;
+ float y23 = (y2+y3)/2;
+
+ float xa = (x01+x12)/2;
+ float ya = (y01+y12)/2;
+ float xb = (x12+x23)/2;
+ float yb = (y12+y23)/2;
+
+ float mx = (xa+xb)/2;
+ float my = (ya+yb)/2;
+
+ stbtt__tesselate_cubic(points, num_points, x0,y0, x01,y01, xa,ya, mx,my, objspace_flatness_squared,n+1);
+ stbtt__tesselate_cubic(points, num_points, mx,my, xb,yb, x23,y23, x3,y3, objspace_flatness_squared,n+1);
+ } else {
+ stbtt__add_point(points, *num_points,x3,y3);
+ *num_points = *num_points+1;
+ }
+}
+
// returns number of contours
static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts, float objspace_flatness, int **contour_lengths, int *num_contours, void *userdata)
{
@@ -2406,6 +3205,14 @@ static stbtt__point *stbtt_FlattenCurves(stbtt_vertex *vertices, int num_verts,
objspace_flatness_squared, 0);
x = vertices[i].x, y = vertices[i].y;
break;
+ case STBTT_vcubic:
+ stbtt__tesselate_cubic(points, &num_points, x,y,
+ vertices[i].cx, vertices[i].cy,
+ vertices[i].cx1, vertices[i].cy1,
+ vertices[i].x, vertices[i].y,
+ objspace_flatness_squared, 0);
+ x = vertices[i].x, y = vertices[i].y;
+ break;
}
}
(*contour_lengths)[n] = num_points - start;
@@ -2441,7 +3248,7 @@ STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info
{
int ix0,iy0,ix1,iy1;
stbtt__bitmap gbm;
- stbtt_vertex *vertices;
+ stbtt_vertex *vertices;
int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices);
if (scale_x == 0) scale_x = scale_y;
@@ -2464,7 +3271,7 @@ STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info
if (height) *height = gbm.h;
if (xoff ) *xoff = ix0;
if (yoff ) *yoff = iy0;
-
+
if (gbm.w && gbm.h) {
gbm.pixels = (unsigned char *) STBTT_malloc(gbm.w * gbm.h, info->userdata);
if (gbm.pixels) {
@@ -2475,7 +3282,7 @@ STBTT_DEF unsigned char *stbtt_GetGlyphBitmapSubpixel(const stbtt_fontinfo *info
}
STBTT_free(vertices, info->userdata);
return gbm.pixels;
-}
+}
STBTT_DEF unsigned char *stbtt_GetGlyphBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int glyph, int *width, int *height, int *xoff, int *yoff)
{
@@ -2487,7 +3294,7 @@ STBTT_DEF void stbtt_MakeGlyphBitmapSubpixel(const stbtt_fontinfo *info, unsigne
int ix0,iy0;
stbtt_vertex *vertices;
int num_verts = stbtt_GetGlyphShape(info, glyph, &vertices);
- stbtt__bitmap gbm;
+ stbtt__bitmap gbm;
stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale_x, scale_y, shift_x, shift_y, &ix0,&iy0,0,0);
gbm.pixels = output;
@@ -2509,7 +3316,7 @@ STBTT_DEF void stbtt_MakeGlyphBitmap(const stbtt_fontinfo *info, unsigned char *
STBTT_DEF unsigned char *stbtt_GetCodepointBitmapSubpixel(const stbtt_fontinfo *info, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint, int *width, int *height, int *xoff, int *yoff)
{
return stbtt_GetGlyphBitmapSubpixel(info, scale_x, scale_y,shift_x,shift_y, stbtt_FindGlyphIndex(info,codepoint), width,height,xoff,yoff);
-}
+}
STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int codepoint)
{
@@ -2519,7 +3326,7 @@ STBTT_DEF void stbtt_MakeCodepointBitmapSubpixel(const stbtt_fontinfo *info, uns
STBTT_DEF unsigned char *stbtt_GetCodepointBitmap(const stbtt_fontinfo *info, float scale_x, float scale_y, int codepoint, int *width, int *height, int *xoff, int *yoff)
{
return stbtt_GetCodepointBitmapSubpixel(info, scale_x, scale_y, 0.0f,0.0f, codepoint, width,height,xoff,yoff);
-}
+}
STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, int codepoint)
{
@@ -2532,7 +3339,7 @@ STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned ch
//
// This is SUPER-CRAPPY packing to keep source code small
-STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, // font location (use offset=0 for plain .ttf)
+static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset, // font location (use offset=0 for plain .ttf)
float pixel_height, // height of font in pixels
unsigned char *pixels, int pw, int ph, // bitmap to be filled in
int first_char, int num_chars, // characters to bake
@@ -2578,11 +3385,11 @@ STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, // fo
return bottom_y;
}
-STBTT_DEF void stbtt_GetBakedQuad(stbtt_bakedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int opengl_fillrule)
+STBTT_DEF void stbtt_GetBakedQuad(const stbtt_bakedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int opengl_fillrule)
{
float d3d_bias = opengl_fillrule ? 0 : -0.5f;
float ipw = 1.0f / pw, iph = 1.0f / ph;
- stbtt_bakedchar *b = chardata + char_index;
+ const stbtt_bakedchar *b = chardata + char_index;
int round_x = STBTT_ifloor((*xpos + b->xoff) + 0.5f);
int round_y = STBTT_ifloor((*ypos + b->yoff) + 0.5f);
@@ -2644,7 +3451,7 @@ static void stbrp_init_target(stbrp_context *con, int pw, int ph, stbrp_node *no
con->y = 0;
con->bottom_y = 0;
STBTT__NOTUSED(nodes);
- STBTT__NOTUSED(num_nodes);
+ STBTT__NOTUSED(num_nodes);
}
static void stbrp_pack_rects(stbrp_context *con, stbrp_rect *rects, int num_rects)
@@ -2862,7 +3669,7 @@ static float stbtt__oversample_shift(int oversample)
}
// rects array must be big enough to accommodate all characters in the given ranges
-STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
+STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
{
int i,j,k;
@@ -2890,8 +3697,31 @@ STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, stbtt_fon
return k;
}
+STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info, unsigned char *output, int out_w, int out_h, int out_stride, float scale_x, float scale_y, float shift_x, float shift_y, int prefilter_x, int prefilter_y, float *sub_x, float *sub_y, int glyph)
+{
+ stbtt_MakeGlyphBitmapSubpixel(info,
+ output,
+ out_w - (prefilter_x - 1),
+ out_h - (prefilter_y - 1),
+ out_stride,
+ scale_x,
+ scale_y,
+ shift_x,
+ shift_y,
+ glyph);
+
+ if (prefilter_x > 1)
+ stbtt__h_prefilter(output, out_w, out_h, out_stride, prefilter_x);
+
+ if (prefilter_y > 1)
+ stbtt__v_prefilter(output, out_w, out_h, out_stride, prefilter_y);
+
+ *sub_x = stbtt__oversample_shift(prefilter_x);
+ *sub_y = stbtt__oversample_shift(prefilter_y);
+}
+
// rects array must be big enough to accommodate all characters in the given ranges
-STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
+STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
{
int i,j,k, return_value = 1;
@@ -2978,7 +3808,7 @@ STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect
stbrp_pack_rects((stbrp_context *) spc->pack_info, rects, num_rects);
}
-STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges)
+STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, stbtt_pack_range *ranges, int num_ranges)
{
stbtt_fontinfo info;
int i,j,n, return_value = 1;
@@ -2996,7 +3826,7 @@ STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, unsigned char *fontd
n = 0;
for (i=0; i < num_ranges; ++i)
n += ranges[i].num_chars;
-
+
rects = (stbrp_rect *) STBTT_malloc(sizeof(*rects) * n, spc->user_allocator_context);
if (rects == NULL)
return 0;
@@ -3007,14 +3837,14 @@ STBTT_DEF int stbtt_PackFontRanges(stbtt_pack_context *spc, unsigned char *fontd
n = stbtt_PackFontRangesGatherRects(spc, &info, ranges, num_ranges, rects);
stbtt_PackFontRangesPackRects(spc, rects, n);
-
+
return_value = stbtt_PackFontRangesRenderIntoRects(spc, &info, ranges, num_ranges, rects);
STBTT_free(rects, spc->user_allocator_context);
return return_value;
}
-STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, unsigned char *fontdata, int font_index, float font_size,
+STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, const unsigned char *fontdata, int font_index, float font_size,
int first_unicode_codepoint_in_range, int num_chars_in_range, stbtt_packedchar *chardata_for_range)
{
stbtt_pack_range range;
@@ -3026,10 +3856,10 @@ STBTT_DEF int stbtt_PackFontRange(stbtt_pack_context *spc, unsigned char *fontda
return stbtt_PackFontRanges(spc, fontdata, font_index, &range, 1);
}
-STBTT_DEF void stbtt_GetPackedQuad(stbtt_packedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int align_to_integer)
+STBTT_DEF void stbtt_GetPackedQuad(const stbtt_packedchar *chardata, int pw, int ph, int char_index, float *xpos, float *ypos, stbtt_aligned_quad *q, int align_to_integer)
{
float ipw = 1.0f / pw, iph = 1.0f / ph;
- stbtt_packedchar *b = chardata + char_index;
+ const stbtt_packedchar *b = chardata + char_index;
if (align_to_integer) {
float x = (float) STBTT_ifloor((*xpos + b->xoff) + 0.5f);
@@ -3053,6 +3883,387 @@ STBTT_DEF void stbtt_GetPackedQuad(stbtt_packedchar *chardata, int pw, int ph, i
*xpos += b->xadvance;
}
+//////////////////////////////////////////////////////////////////////////////
+//
+// sdf computation
+//
+
+#define STBTT_min(a,b) ((a) < (b) ? (a) : (b))
+#define STBTT_max(a,b) ((a) < (b) ? (b) : (a))
+
+static int stbtt__ray_intersect_bezier(float orig[2], float ray[2], float q0[2], float q1[2], float q2[2], float hits[2][2])
+{
+ float q0perp = q0[1]*ray[0] - q0[0]*ray[1];
+ float q1perp = q1[1]*ray[0] - q1[0]*ray[1];
+ float q2perp = q2[1]*ray[0] - q2[0]*ray[1];
+ float roperp = orig[1]*ray[0] - orig[0]*ray[1];
+
+ float a = q0perp - 2*q1perp + q2perp;
+ float b = q1perp - q0perp;
+ float c = q0perp - roperp;
+
+ float s0 = 0., s1 = 0.;
+ int num_s = 0;
+
+ if (a != 0.0) {
+ float discr = b*b - a*c;
+ if (discr > 0.0) {
+ float rcpna = -1 / a;
+ float d = (float) sqrt(discr);
+ s0 = (b+d) * rcpna;
+ s1 = (b-d) * rcpna;
+ if (s0 >= 0.0 && s0 <= 1.0)
+ num_s = 1;
+ if (d > 0.0 && s1 >= 0.0 && s1 <= 1.0) {
+ if (num_s == 0) s0 = s1;
+ ++num_s;
+ }
+ }
+ } else {
+ // 2*b*s + c = 0
+ // s = -c / (2*b)
+ s0 = c / (-2 * b);
+ if (s0 >= 0.0 && s0 <= 1.0)
+ num_s = 1;
+ }
+
+ if (num_s == 0)
+ return 0;
+ else {
+ float rcp_len2 = 1 / (ray[0]*ray[0] + ray[1]*ray[1]);
+ float rayn_x = ray[0] * rcp_len2, rayn_y = ray[1] * rcp_len2;
+
+ float q0d = q0[0]*rayn_x + q0[1]*rayn_y;
+ float q1d = q1[0]*rayn_x + q1[1]*rayn_y;
+ float q2d = q2[0]*rayn_x + q2[1]*rayn_y;
+ float rod = orig[0]*rayn_x + orig[1]*rayn_y;
+
+ float q10d = q1d - q0d;
+ float q20d = q2d - q0d;
+ float q0rd = q0d - rod;
+
+ hits[0][0] = q0rd + s0*(2.0f - 2.0f*s0)*q10d + s0*s0*q20d;
+ hits[0][1] = a*s0+b;
+
+ if (num_s > 1) {
+ hits[1][0] = q0rd + s1*(2.0f - 2.0f*s1)*q10d + s1*s1*q20d;
+ hits[1][1] = a*s1+b;
+ return 2;
+ } else {
+ return 1;
+ }
+ }
+}
+
+static int equal(float *a, float *b)
+{
+ return (a[0] == b[0] && a[1] == b[1]);
+}
+
+static int stbtt__compute_crossings_x(float x, float y, int nverts, stbtt_vertex *verts)
+{
+ int i;
+ float orig[2], ray[2] = { 1, 0 };
+ float y_frac;
+ int winding = 0;
+
+ orig[0] = x;
+ orig[1] = y;
+
+ // make sure y never passes through a vertex of the shape
+ y_frac = (float) fmod(y, 1.0f);
+ if (y_frac < 0.01f)
+ y += 0.01f;
+ else if (y_frac > 0.99f)
+ y -= 0.01f;
+ orig[1] = y;
+
+ // test a ray from (-infinity,y) to (x,y)
+ for (i=0; i < nverts; ++i) {
+ if (verts[i].type == STBTT_vline) {
+ int x0 = (int) verts[i-1].x, y0 = (int) verts[i-1].y;
+ int x1 = (int) verts[i ].x, y1 = (int) verts[i ].y;
+ if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) {
+ float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0;
+ if (x_inter < x)
+ winding += (y0 < y1) ? 1 : -1;
+ }
+ }
+ if (verts[i].type == STBTT_vcurve) {
+ int x0 = (int) verts[i-1].x , y0 = (int) verts[i-1].y ;
+ int x1 = (int) verts[i ].cx, y1 = (int) verts[i ].cy;
+ int x2 = (int) verts[i ].x , y2 = (int) verts[i ].y ;
+ int ax = STBTT_min(x0,STBTT_min(x1,x2)), ay = STBTT_min(y0,STBTT_min(y1,y2));
+ int by = STBTT_max(y0,STBTT_max(y1,y2));
+ if (y > ay && y < by && x > ax) {
+ float q0[2],q1[2],q2[2];
+ float hits[2][2];
+ q0[0] = (float)x0;
+ q0[1] = (float)y0;
+ q1[0] = (float)x1;
+ q1[1] = (float)y1;
+ q2[0] = (float)x2;
+ q2[1] = (float)y2;
+ if (equal(q0,q1) || equal(q1,q2)) {
+ x0 = (int)verts[i-1].x;
+ y0 = (int)verts[i-1].y;
+ x1 = (int)verts[i ].x;
+ y1 = (int)verts[i ].y;
+ if (y > STBTT_min(y0,y1) && y < STBTT_max(y0,y1) && x > STBTT_min(x0,x1)) {
+ float x_inter = (y - y0) / (y1 - y0) * (x1-x0) + x0;
+ if (x_inter < x)
+ winding += (y0 < y1) ? 1 : -1;
+ }
+ } else {
+ int num_hits = stbtt__ray_intersect_bezier(orig, ray, q0, q1, q2, hits);
+ if (num_hits >= 1)
+ if (hits[0][0] < 0)
+ winding += (hits[0][1] < 0 ? -1 : 1);
+ if (num_hits >= 2)
+ if (hits[1][0] < 0)
+ winding += (hits[1][1] < 0 ? -1 : 1);
+ }
+ }
+ }
+ }
+ return winding;
+}
+
+static float stbtt__cuberoot( float x )
+{
+ if (x<0)
+ return -(float) STBTT_pow(-x,1.0f/3.0f);
+ else
+ return (float) STBTT_pow( x,1.0f/3.0f);
+}
+
+// x^3 + c*x^2 + b*x + a = 0
+static int stbtt__solve_cubic(float a, float b, float c, float* r)
+{
+ float s = -a / 3;
+ float p = b - a*a / 3;
+ float q = a * (2*a*a - 9*b) / 27 + c;
+ float p3 = p*p*p;
+ float d = q*q + 4*p3 / 27;
+ if (d >= 0) {
+ float z = (float) STBTT_sqrt(d);
+ float u = (-q + z) / 2;
+ float v = (-q - z) / 2;
+ u = stbtt__cuberoot(u);
+ v = stbtt__cuberoot(v);
+ r[0] = s + u + v;
+ return 1;
+ } else {
+ float u = (float) STBTT_sqrt(-p/3);
+ float v = (float) STBTT_acos(-STBTT_sqrt(-27/p3) * q / 2) / 3; // p3 must be negative, since d is negative
+ float m = (float) STBTT_cos(v);
+ float n = (float) STBTT_cos(v-3.141592/2)*1.732050808f;
+ r[0] = s + u * 2 * m;
+ r[1] = s - u * (m + n);
+ r[2] = s - u * (m - n);
+
+ //STBTT_assert( STBTT_fabs(((r[0]+a)*r[0]+b)*r[0]+c) < 0.05f); // these asserts may not be safe at all scales, though they're in bezier t parameter units so maybe?
+ //STBTT_assert( STBTT_fabs(((r[1]+a)*r[1]+b)*r[1]+c) < 0.05f);
+ //STBTT_assert( STBTT_fabs(((r[2]+a)*r[2]+b)*r[2]+c) < 0.05f);
+ return 3;
+ }
+}
+
+STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff)
+{
+ float scale_x = scale, scale_y = scale;
+ int ix0,iy0,ix1,iy1;
+ int w,h;
+ unsigned char *data;
+
+ // if one scale is 0, use same scale for both
+ if (scale_x == 0) scale_x = scale_y;
+ if (scale_y == 0) {
+ if (scale_x == 0) return NULL; // if both scales are 0, return NULL
+ scale_y = scale_x;
+ }
+
+ stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale, scale, 0.0f,0.0f, &ix0,&iy0,&ix1,&iy1);
+
+ // if empty, return NULL
+ if (ix0 == ix1 || iy0 == iy1)
+ return NULL;
+
+ ix0 -= padding;
+ iy0 -= padding;
+ ix1 += padding;
+ iy1 += padding;
+
+ w = (ix1 - ix0);
+ h = (iy1 - iy0);
+
+ if (width ) *width = w;
+ if (height) *height = h;
+ if (xoff ) *xoff = ix0;
+ if (yoff ) *yoff = iy0;
+
+ // invert for y-downwards bitmaps
+ scale_y = -scale_y;
+
+ {
+ int x,y,i,j;
+ float *precompute;
+ stbtt_vertex *verts;
+ int num_verts = stbtt_GetGlyphShape(info, glyph, &verts);
+ data = (unsigned char *) STBTT_malloc(w * h, info->userdata);
+ precompute = (float *) STBTT_malloc(num_verts * sizeof(float), info->userdata);
+
+ for (i=0,j=num_verts-1; i < num_verts; j=i++) {
+ if (verts[i].type == STBTT_vline) {
+ float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y;
+ float x1 = verts[j].x*scale_x, y1 = verts[j].y*scale_y;
+ float dist = (float) STBTT_sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
+ precompute[i] = (dist == 0) ? 0.0f : 1.0f / dist;
+ } else if (verts[i].type == STBTT_vcurve) {
+ float x2 = verts[j].x *scale_x, y2 = verts[j].y *scale_y;
+ float x1 = verts[i].cx*scale_x, y1 = verts[i].cy*scale_y;
+ float x0 = verts[i].x *scale_x, y0 = verts[i].y *scale_y;
+ float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2;
+ float len2 = bx*bx + by*by;
+ if (len2 != 0.0f)
+ precompute[i] = 1.0f / (bx*bx + by*by);
+ else
+ precompute[i] = 0.0f;
+ } else
+ precompute[i] = 0.0f;
+ }
+
+ for (y=iy0; y < iy1; ++y) {
+ for (x=ix0; x < ix1; ++x) {
+ float val;
+ float min_dist = 999999.0f;
+ float sx = (float) x + 0.5f;
+ float sy = (float) y + 0.5f;
+ float x_gspace = (sx / scale_x);
+ float y_gspace = (sy / scale_y);
+
+ int winding = stbtt__compute_crossings_x(x_gspace, y_gspace, num_verts, verts); // @OPTIMIZE: this could just be a rasterization, but needs to be line vs. non-tesselated curves so a new path
+
+ for (i=0; i < num_verts; ++i) {
+ float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y;
+
+ // check against every point here rather than inside line/curve primitives -- @TODO: wrong if multiple 'moves' in a row produce a garbage point, and given culling, probably more efficient to do within line/curve
+ float dist2 = (x0-sx)*(x0-sx) + (y0-sy)*(y0-sy);
+ if (dist2 < min_dist*min_dist)
+ min_dist = (float) STBTT_sqrt(dist2);
+
+ if (verts[i].type == STBTT_vline) {
+ float x1 = verts[i-1].x*scale_x, y1 = verts[i-1].y*scale_y;
+
+ // coarse culling against bbox
+ //if (sx > STBTT_min(x0,x1)-min_dist && sx < STBTT_max(x0,x1)+min_dist &&
+ // sy > STBTT_min(y0,y1)-min_dist && sy < STBTT_max(y0,y1)+min_dist)
+ float dist = (float) STBTT_fabs((x1-x0)*(y0-sy) - (y1-y0)*(x0-sx)) * precompute[i];
+ STBTT_assert(i != 0);
+ if (dist < min_dist) {
+ // check position along line
+ // x' = x0 + t*(x1-x0), y' = y0 + t*(y1-y0)
+ // minimize (x'-sx)*(x'-sx)+(y'-sy)*(y'-sy)
+ float dx = x1-x0, dy = y1-y0;
+ float px = x0-sx, py = y0-sy;
+ // minimize (px+t*dx)^2 + (py+t*dy)^2 = px*px + 2*px*dx*t + t^2*dx*dx + py*py + 2*py*dy*t + t^2*dy*dy
+ // derivative: 2*px*dx + 2*py*dy + (2*dx*dx+2*dy*dy)*t, set to 0 and solve
+ float t = -(px*dx + py*dy) / (dx*dx + dy*dy);
+ if (t >= 0.0f && t <= 1.0f)
+ min_dist = dist;
+ }
+ } else if (verts[i].type == STBTT_vcurve) {
+ float x2 = verts[i-1].x *scale_x, y2 = verts[i-1].y *scale_y;
+ float x1 = verts[i ].cx*scale_x, y1 = verts[i ].cy*scale_y;
+ float box_x0 = STBTT_min(STBTT_min(x0,x1),x2);
+ float box_y0 = STBTT_min(STBTT_min(y0,y1),y2);
+ float box_x1 = STBTT_max(STBTT_max(x0,x1),x2);
+ float box_y1 = STBTT_max(STBTT_max(y0,y1),y2);
+ // coarse culling against bbox to avoid computing cubic unnecessarily
+ if (sx > box_x0-min_dist && sx < box_x1+min_dist && sy > box_y0-min_dist && sy < box_y1+min_dist) {
+ int num=0;
+ float ax = x1-x0, ay = y1-y0;
+ float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2;
+ float mx = x0 - sx, my = y0 - sy;
+ float res[3],px,py,t,it;
+ float a_inv = precompute[i];
+ if (a_inv == 0.0) { // if a_inv is 0, it's 2nd degree so use quadratic formula
+ float a = 3*(ax*bx + ay*by);
+ float b = 2*(ax*ax + ay*ay) + (mx*bx+my*by);
+ float c = mx*ax+my*ay;
+ if (a == 0.0) { // if a is 0, it's linear
+ if (b != 0.0) {
+ res[num++] = -c/b;
+ }
+ } else {
+ float discriminant = b*b - 4*a*c;
+ if (discriminant < 0)
+ num = 0;
+ else {
+ float root = (float) STBTT_sqrt(discriminant);
+ res[0] = (-b - root)/(2*a);
+ res[1] = (-b + root)/(2*a);
+ num = 2; // don't bother distinguishing 1-solution case, as code below will still work
+ }
+ }
+ } else {
+ float b = 3*(ax*bx + ay*by) * a_inv; // could precompute this as it doesn't depend on sample point
+ float c = (2*(ax*ax + ay*ay) + (mx*bx+my*by)) * a_inv;
+ float d = (mx*ax+my*ay) * a_inv;
+ num = stbtt__solve_cubic(b, c, d, res);
+ }
+ if (num >= 1 && res[0] >= 0.0f && res[0] <= 1.0f) {
+ t = res[0], it = 1.0f - t;
+ px = it*it*x0 + 2*t*it*x1 + t*t*x2;
+ py = it*it*y0 + 2*t*it*y1 + t*t*y2;
+ dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy);
+ if (dist2 < min_dist * min_dist)
+ min_dist = (float) STBTT_sqrt(dist2);
+ }
+ if (num >= 2 && res[1] >= 0.0f && res[1] <= 1.0f) {
+ t = res[1], it = 1.0f - t;
+ px = it*it*x0 + 2*t*it*x1 + t*t*x2;
+ py = it*it*y0 + 2*t*it*y1 + t*t*y2;
+ dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy);
+ if (dist2 < min_dist * min_dist)
+ min_dist = (float) STBTT_sqrt(dist2);
+ }
+ if (num >= 3 && res[2] >= 0.0f && res[2] <= 1.0f) {
+ t = res[2], it = 1.0f - t;
+ px = it*it*x0 + 2*t*it*x1 + t*t*x2;
+ py = it*it*y0 + 2*t*it*y1 + t*t*y2;
+ dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy);
+ if (dist2 < min_dist * min_dist)
+ min_dist = (float) STBTT_sqrt(dist2);
+ }
+ }
+ }
+ }
+ if (winding == 0)
+ min_dist = -min_dist; // if outside the shape, value is negative
+ val = onedge_value + pixel_dist_scale * min_dist;
+ if (val < 0)
+ val = 0;
+ else if (val > 255)
+ val = 255;
+ data[(y-iy0)*w+(x-ix0)] = (unsigned char) val;
+ }
+ }
+ STBTT_free(precompute, info->userdata);
+ STBTT_free(verts, info->userdata);
+ }
+ return data;
+}
+
+STBTT_DEF unsigned char * stbtt_GetCodepointSDF(const stbtt_fontinfo *info, float scale, int codepoint, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff)
+{
+ return stbtt_GetGlyphSDF(info, scale, stbtt_FindGlyphIndex(info, codepoint), padding, onedge_value, pixel_dist_scale, width, height, xoff, yoff);
+}
+
+STBTT_DEF void stbtt_FreeSDF(unsigned char *bitmap, void *userdata)
+{
+ STBTT_free(bitmap, userdata);
+}
//////////////////////////////////////////////////////////////////////////////
//
@@ -3060,7 +4271,7 @@ STBTT_DEF void stbtt_GetPackedQuad(stbtt_packedchar *chardata, int pw, int ph, i
//
// check if a utf8 string contains a prefix which is the utf16 string; if so return length of matching utf8 string
-static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(const stbtt_uint8 *s1, stbtt_int32 len1, const stbtt_uint8 *s2, stbtt_int32 len2)
+static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint8 *s1, stbtt_int32 len1, stbtt_uint8 *s2, stbtt_int32 len2)
{
stbtt_int32 i=0;
@@ -3099,9 +4310,9 @@ static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(const stbtt_uint8
return i;
}
-STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2)
+static int stbtt_CompareUTF8toUTF16_bigendian_internal(char *s1, int len1, char *s2, int len2)
{
- return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((const stbtt_uint8*) s1, len1, (const stbtt_uint8*) s2, len2);
+ return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((stbtt_uint8*) s1, len1, (stbtt_uint8*) s2, len2);
}
// returns results in whatever encoding you request... but note that 2-byte encodings
@@ -3157,7 +4368,7 @@ static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint8 *name,
return 1;
} else if (matchlen < nlen && name[matchlen] == ' ') {
++matchlen;
- if (stbtt_CompareUTF8toUTF16_bigendian((char*) (name+matchlen), nlen-matchlen, (char*)(fc+stringOffset+off),slen))
+ if (stbtt_CompareUTF8toUTF16_bigendian_internal((char*) (name+matchlen), nlen-matchlen, (char*)(fc+stringOffset+off),slen))
return 1;
}
} else {
@@ -3203,7 +4414,7 @@ static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_uint8 *nam
return 0;
}
-STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *font_collection, const char *name_utf8, stbtt_int32 flags)
+static int stbtt_FindMatchingFont_internal(unsigned char *font_collection, char *name_utf8, stbtt_int32 flags)
{
stbtt_int32 i;
for (i=0;;++i) {
@@ -3214,11 +4425,57 @@ STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *font_collection, const
}
}
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wcast-qual"
+#endif
+
+STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset,
+ float pixel_height, unsigned char *pixels, int pw, int ph,
+ int first_char, int num_chars, stbtt_bakedchar *chardata)
+{
+ return stbtt_BakeFontBitmap_internal((unsigned char *) data, offset, pixel_height, pixels, pw, ph, first_char, num_chars, chardata);
+}
+
+STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index)
+{
+ return stbtt_GetFontOffsetForIndex_internal((unsigned char *) data, index);
+}
+
+STBTT_DEF int stbtt_GetNumberOfFonts(const unsigned char *data)
+{
+ return stbtt_GetNumberOfFonts_internal((unsigned char *) data);
+}
+
+STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset)
+{
+ return stbtt_InitFont_internal(info, (unsigned char *) data, offset);
+}
+
+STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags)
+{
+ return stbtt_FindMatchingFont_internal((unsigned char *) fontdata, (char *) name, flags);
+}
+
+STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2)
+{
+ return stbtt_CompareUTF8toUTF16_bigendian_internal((char *) s1, len1, (char *) s2, len2);
+}
+
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+
#endif // STB_TRUETYPE_IMPLEMENTATION
// FULL VERSION HISTORY
//
+// 1.16 (2017-07-12) SDF support
+// 1.15 (2017-03-03) make more arguments const
+// 1.14 (2017-01-16) num-fonts-in-TTC function
+// 1.13 (2017-01-02) support OpenType fonts, certain Apple fonts
+// 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual
// 1.11 (2016-04-02) fix unused-variable warning
// 1.10 (2016-04-02) allow user-defined fabs() replacement
// fix memory leak if fontsize=0.0
@@ -3265,3 +4522,45 @@ STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *font_collection, const
// 0.2 (2009-03-11) Fix unsigned/signed char warnings
// 0.1 (2009-03-09) First public release
//
+
+/*
+------------------------------------------------------------------------------
+This software is available under 2 licenses -- choose whichever you prefer.
+------------------------------------------------------------------------------
+ALTERNATIVE A - MIT License
+Copyright (c) 2017 Sean Barrett
+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.
+------------------------------------------------------------------------------
+ALTERNATIVE B - Public Domain (www.unlicense.org)
+This is free and unencumbered software released into the public domain.
+Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
+software, either in source code form or as a compiled binary, for any purpose,
+commercial or non-commercial, and by any means.
+In jurisdictions that recognize copyright laws, the author or authors of this
+software dedicate any and all copyright interest in the software to the public
+domain. We make this dedication for the benefit of the public at large and to
+the detriment of our heirs and successors. We intend this dedication to be an
+overt act of relinquishment in perpetuity of all present and future rights to
+this software under copyright law.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+------------------------------------------------------------------------------
+*/
diff --git a/thirdparty/misc/stb_vorbis.c b/thirdparty/misc/stb_vorbis.c
index c4f24d5898..14cebbf87e 100644
--- a/thirdparty/misc/stb_vorbis.c
+++ b/thirdparty/misc/stb_vorbis.c
@@ -1,4 +1,4 @@
-// Ogg Vorbis audio decoder - v1.09 - public domain
+// Ogg Vorbis audio decoder - v1.11 - public domain
// http://nothings.org/stb_vorbis/
//
// Original version written by Sean Barrett in 2007.
@@ -9,12 +9,7 @@
//
// LICENSE
//
-// This software is dual-licensed to the public domain and under the following
-// license: you are granted a perpetual, irrevocable license to copy, modify,
-// publish, and distribute this file as you see fit.
-//
-// No warranty for any purpose is expressed or implied by the author (nor
-// by RAD Game Tools). Report bugs and send enhancements to the author.
+// See end of file for license information.
//
// Limitations:
//
@@ -34,9 +29,11 @@
// Bernhard Wodo Evan Balster alxprd@github
// Tom Beaumont Ingo Leitgeb Nicolas Guillemot
// Phillip Bennefall Rohit Thiago Goulart
-// manxorist@github saga musix
+// manxorist@github saga musix github:infatum
//
// Partial history:
+// 1.11 - 2017/07/23 - fix MinGW compilation
+// 1.10 - 2017/03/03 - more robust seeking; fix negative ilog(); clear error in open_memory
// 1.09 - 2016/04/04 - back out 'truncation of last frame' fix from previous version
// 1.08 - 2016/04/02 - warnings; setup memory leaks; truncation of last frame
// 1.07 - 2015/01/16 - fixes for crashes on invalid files; warning fixes; const
@@ -275,7 +272,7 @@ extern int stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number);
// do not need to seek to EXACTLY the target sample when using get_samples_*,
// you can also use seek_frame().
-extern void stb_vorbis_seek_start(stb_vorbis *f);
+extern int stb_vorbis_seek_start(stb_vorbis *f);
// this function is equivalent to stb_vorbis_seek(f,0)
extern unsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f);
@@ -555,7 +552,7 @@ enum STBVorbisError
#include <math.h>
// find definition of alloca if it's not in stdlib.h:
- #ifdef _MSC_VER
+ #if defined(_MSC_VER) || defined(__MINGW32__)
#include <malloc.h>
#endif
#if defined(__linux__) || defined(__linux) || defined(__EMSCRIPTEN__)
@@ -580,6 +577,7 @@ enum STBVorbisError
#undef __forceinline
#endif
#define __forceinline
+ #define alloca __builtin_alloca
#elif !defined(_MSC_VER)
#if __GNUC__
#define __forceinline inline
@@ -986,17 +984,18 @@ static int ilog(int32 n)
{
static signed char log2_4[16] = { 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4 };
+ if (n < 0) return 0; // signed n returns 0
+
// 2 compares if n < 16, 3 compares otherwise (4 if signed or n > 1<<29)
if (n < (1 << 14))
- if (n < (1 << 4)) return 0 + log2_4[n ];
- else if (n < (1 << 9)) return 5 + log2_4[n >> 5];
+ if (n < (1 << 4)) return 0 + log2_4[n ];
+ else if (n < (1 << 9)) return 5 + log2_4[n >> 5];
else return 10 + log2_4[n >> 10];
else if (n < (1 << 24))
- if (n < (1 << 19)) return 15 + log2_4[n >> 15];
+ if (n < (1 << 19)) return 15 + log2_4[n >> 15];
else return 20 + log2_4[n >> 20];
- else if (n < (1 << 29)) return 25 + log2_4[n >> 25];
- else if (n < (1 << 31)) return 30 + log2_4[n >> 30];
- else return 0; // signed n returns 0
+ else if (n < (1 << 29)) return 25 + log2_4[n >> 25];
+ else return 30 + log2_4[n >> 30];
}
#ifndef M_PI
@@ -1269,13 +1268,13 @@ static void neighbors(uint16 *x, int n, int *plow, int *phigh)
// this has been repurposed so y is now the original index instead of y
typedef struct
{
- uint16 x,y;
-} Point;
+ uint16 x,id;
+} stbv__floor_ordering;
static int STBV_CDECL point_compare(const void *p, const void *q)
{
- Point *a = (Point *) p;
- Point *b = (Point *) q;
+ stbv__floor_ordering *a = (stbv__floor_ordering *) p;
+ stbv__floor_ordering *b = (stbv__floor_ordering *) q;
return a->x < b->x ? -1 : a->x > b->x;
}
@@ -3484,11 +3483,13 @@ static int vorbis_finish_frame(stb_vorbis *f, int len, int left, int right)
return right - left;
}
-static void vorbis_pump_first_frame(stb_vorbis *f)
+static int vorbis_pump_first_frame(stb_vorbis *f)
{
- int len, right, left;
- if (vorbis_decode_packet(f, &len, &left, &right))
+ int len, right, left, res;
+ res = vorbis_decode_packet(f, &len, &left, &right);
+ if (res)
vorbis_finish_frame(f, len, left, right);
+ return res;
}
#ifndef STB_VORBIS_NO_PUSHDATA_API
@@ -3871,7 +3872,7 @@ static int start_decoder(vorb *f)
g->book_list[j] = get_bits(f,8);
return error(f, VORBIS_feature_not_supported);
} else {
- Point p[31*8+2];
+ stbv__floor_ordering p[31*8+2];
Floor1 *g = &f->floor_config[i].floor1;
int max_class = -1;
g->partitions = get_bits(f, 5);
@@ -3907,11 +3908,11 @@ static int start_decoder(vorb *f)
// precompute the sorting
for (j=0; j < g->values; ++j) {
p[j].x = g->Xlist[j];
- p[j].y = j;
+ p[j].id = j;
}
qsort(p, g->values, sizeof(p[0]), point_compare);
for (j=0; j < g->values; ++j)
- g->sorted_order[j] = (uint8) p[j].y;
+ g->sorted_order[j] = (uint8) p[j].id;
// precompute the neighbors
for (j=2; j < g->values; ++j) {
int low,hi;
@@ -4615,8 +4616,9 @@ static int seek_to_sample_coarse(stb_vorbis *f, uint32 sample_number)
// starting from the start is handled differently
if (sample_number <= left.last_decoded_sample) {
- stb_vorbis_seek_start(f);
- return 1;
+ if (stb_vorbis_seek_start(f))
+ return 1;
+ return 0;
}
while (left.page_end != right.page_start) {
@@ -4717,7 +4719,10 @@ static int seek_to_sample_coarse(stb_vorbis *f, uint32 sample_number)
skip(f, f->segments[i]);
// start decoding (optimizable - this frame is generally discarded)
- vorbis_pump_first_frame(f);
+ if (!vorbis_pump_first_frame(f))
+ return 0;
+ if (f->current_loc > sample_number)
+ return error(f, VORBIS_seek_failed);
return 1;
error:
@@ -4808,14 +4813,14 @@ int stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number)
return 1;
}
-void stb_vorbis_seek_start(stb_vorbis *f)
+int stb_vorbis_seek_start(stb_vorbis *f)
{
- if (IS_PUSH_MODE(f)) { error(f, VORBIS_invalid_api_mixing); return; }
+ if (IS_PUSH_MODE(f)) { return error(f, VORBIS_invalid_api_mixing); }
set_file_offset(f, f->first_audio_page_offset);
f->previous_length = 0;
f->first_decode = TRUE;
f->next_seg = -1;
- vorbis_pump_first_frame(f);
+ return vorbis_pump_first_frame(f);
}
unsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f)
@@ -4980,6 +4985,7 @@ stb_vorbis * stb_vorbis_open_memory(const unsigned char *data, int len, int *err
if (f) {
*f = p;
vorbis_pump_first_frame(f);
+ if (error) *error = VORBIS__no_error;
return f;
}
}
@@ -5345,6 +5351,7 @@ int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, in
#endif // STB_VORBIS_NO_PULLDATA_API
/* Version history
+ 1.10 - 2017/03/03 - more robust seeking; fix negative ilog(); clear error in open_memory
1.09 - 2016/04/04 - back out 'avoid discarding last frame' fix from previous version
1.08 - 2016/04/02 - fixed multiple warnings; fix setup memory leaks;
avoid discarding last frame of audio data
@@ -5397,3 +5404,46 @@ int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, in
*/
#endif // STB_VORBIS_HEADER_ONLY
+
+
+/*
+------------------------------------------------------------------------------
+This software is available under 2 licenses -- choose whichever you prefer.
+------------------------------------------------------------------------------
+ALTERNATIVE A - MIT License
+Copyright (c) 2017 Sean Barrett
+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.
+------------------------------------------------------------------------------
+ALTERNATIVE B - Public Domain (www.unlicense.org)
+This is free and unencumbered software released into the public domain.
+Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
+software, either in source code form or as a compiled binary, for any purpose,
+commercial or non-commercial, and by any means.
+In jurisdictions that recognize copyright laws, the author or authors of this
+software dedicate any and all copyright interest in the software to the public
+domain. We make this dedication for the benefit of the public at large and to
+the detriment of our heirs and successors. We intend this dedication to be an
+overt act of relinquishment in perpetuity of all present and future rights to
+this software under copyright law.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+------------------------------------------------------------------------------
+*/
diff --git a/thirdparty/nanosvg/LICENSE.txt b/thirdparty/nanosvg/LICENSE.txt
new file mode 100644
index 0000000000..6fde401cb2
--- /dev/null
+++ b/thirdparty/nanosvg/LICENSE.txt
@@ -0,0 +1,18 @@
+Copyright (c) 2013-14 Mikko Mononen memon@inside.org
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+claim that you wrote the original software. If you use this software
+in a product, an acknowledgment in the product documentation would be
+appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
diff --git a/thirdparty/nanosvg/nanosvg.cc b/thirdparty/nanosvg/nanosvg.cc
new file mode 100644
index 0000000000..3e8e86c792
--- /dev/null
+++ b/thirdparty/nanosvg/nanosvg.cc
@@ -0,0 +1,8 @@
+#include "stdio.h"
+#include "string.h"
+#include "math.h"
+#define NANOSVG_ALL_COLOR_KEYWORDS
+#define NANOSVG_IMPLEMENTATION
+#include "nanosvg.h"
+#define NANOSVGRAST_IMPLEMENTATION
+#include "nanosvgrast.h"
diff --git a/thirdparty/nanosvg/nanosvg.h b/thirdparty/nanosvg/nanosvg.h
new file mode 100644
index 0000000000..2321c56fd2
--- /dev/null
+++ b/thirdparty/nanosvg/nanosvg.h
@@ -0,0 +1,2925 @@
+/*
+ * Copyright (c) 2013-14 Mikko Mononen memon@inside.org
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * The SVG parser is based on Anti-Grain Geometry 2.4 SVG example
+ * Copyright (C) 2002-2004 Maxim Shemanarev (McSeem) (http://www.antigrain.com/)
+ *
+ * Arc calculation code based on canvg (https://code.google.com/p/canvg/)
+ *
+ * Bounding box calculation based on http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html
+ *
+ */
+
+#ifndef NANOSVG_H
+#define NANOSVG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// NanoSVG is a simple stupid single-header-file SVG parse. The output of the parser is a list of cubic bezier shapes.
+//
+// The library suits well for anything from rendering scalable icons in your editor application to prototyping a game.
+//
+// NanoSVG supports a wide range of SVG features, but something may be missing, feel free to create a pull request!
+//
+// The shapes in the SVG images are transformed by the viewBox and converted to specified units.
+// That is, you should get the same looking data as your designed in your favorite app.
+//
+// NanoSVG can return the paths in few different units. For example if you want to render an image, you may choose
+// to get the paths in pixels, or if you are feeding the data into a CNC-cutter, you may want to use millimeters.
+//
+// The units passed to NanoVG should be one of: 'px', 'pt', 'pc' 'mm', 'cm', or 'in'.
+// DPI (dots-per-inch) controls how the unit conversion is done.
+//
+// If you don't know or care about the units stuff, "px" and 96 should get you going.
+
+
+/* Example Usage:
+ // Load
+ NSVGImage* image;
+ image = nsvgParseFromFile("test.svg", "px", 96);
+ printf("size: %f x %f\n", image->width, image->height);
+ // Use...
+ for (NSVGshape *shape = image->shapes; shape != NULL; shape = shape->next) {
+ for (NSVGpath *path = shape->paths; path != NULL; path = path->next) {
+ for (int i = 0; i < path->npts-1; i += 3) {
+ float* p = &path->pts[i*2];
+ drawCubicBez(p[0],p[1], p[2],p[3], p[4],p[5], p[6],p[7]);
+ }
+ }
+ }
+ // Delete
+ nsvgDelete(image);
+*/
+
+enum NSVGpaintType {
+ NSVG_PAINT_NONE = 0,
+ NSVG_PAINT_COLOR = 1,
+ NSVG_PAINT_LINEAR_GRADIENT = 2,
+ NSVG_PAINT_RADIAL_GRADIENT = 3
+};
+
+enum NSVGspreadType {
+ NSVG_SPREAD_PAD = 0,
+ NSVG_SPREAD_REFLECT = 1,
+ NSVG_SPREAD_REPEAT = 2
+};
+
+enum NSVGlineJoin {
+ NSVG_JOIN_MITER = 0,
+ NSVG_JOIN_ROUND = 1,
+ NSVG_JOIN_BEVEL = 2
+};
+
+enum NSVGlineCap {
+ NSVG_CAP_BUTT = 0,
+ NSVG_CAP_ROUND = 1,
+ NSVG_CAP_SQUARE = 2
+};
+
+enum NSVGfillRule {
+ NSVG_FILLRULE_NONZERO = 0,
+ NSVG_FILLRULE_EVENODD = 1
+};
+
+enum NSVGflags {
+ NSVG_FLAGS_VISIBLE = 0x01
+};
+
+typedef struct NSVGgradientStop {
+ unsigned int color;
+ float offset;
+} NSVGgradientStop;
+
+typedef struct NSVGgradient {
+ float xform[6];
+ char spread;
+ float fx, fy;
+ int nstops;
+ NSVGgradientStop stops[1];
+} NSVGgradient;
+
+typedef struct NSVGpaint {
+ char type;
+ union {
+ unsigned int color;
+ NSVGgradient* gradient;
+ };
+} NSVGpaint;
+
+typedef struct NSVGpath
+{
+ float* pts; // Cubic bezier points: x0,y0, [cpx1,cpx1,cpx2,cpy2,x1,y1], ...
+ int npts; // Total number of bezier points.
+ char closed; // Flag indicating if shapes should be treated as closed.
+ float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy].
+ struct NSVGpath* next; // Pointer to next path, or NULL if last element.
+} NSVGpath;
+
+typedef struct NSVGshape
+{
+ char id[64]; // Optional 'id' attr of the shape or its group
+ NSVGpaint fill; // Fill paint
+ NSVGpaint stroke; // Stroke paint
+ float opacity; // Opacity of the shape.
+ float strokeWidth; // Stroke width (scaled).
+ float strokeDashOffset; // Stroke dash offset (scaled).
+ float strokeDashArray[8]; // Stroke dash array (scaled).
+ char strokeDashCount; // Number of dash values in dash array.
+ char strokeLineJoin; // Stroke join type.
+ char strokeLineCap; // Stroke cap type.
+ float miterLimit; // Miter limit
+ char fillRule; // Fill rule, see NSVGfillRule.
+ unsigned char flags; // Logical or of NSVG_FLAGS_* flags
+ float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy].
+ NSVGpath* paths; // Linked list of paths in the image.
+ struct NSVGshape* next; // Pointer to next shape, or NULL if last element.
+} NSVGshape;
+
+typedef struct NSVGimage
+{
+ float width; // Width of the image.
+ float height; // Height of the image.
+ NSVGshape* shapes; // Linked list of shapes in the image.
+} NSVGimage;
+
+// Parses SVG file from a file, returns SVG image as paths.
+NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi);
+
+// Parses SVG file from a null terminated string, returns SVG image as paths.
+// Important note: changes the string.
+NSVGimage* nsvgParse(char* input, const char* units, float dpi);
+
+// Deletes list of paths.
+void nsvgDelete(NSVGimage* image);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // NANOSVG_H
+
+#ifdef NANOSVG_IMPLEMENTATION
+
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+
+#define NSVG_PI (3.14159265358979323846264338327f)
+#define NSVG_KAPPA90 (0.5522847493f) // Length proportional to radius of a cubic bezier handle for 90deg arcs.
+
+#define NSVG_ALIGN_MIN 0
+#define NSVG_ALIGN_MID 1
+#define NSVG_ALIGN_MAX 2
+#define NSVG_ALIGN_NONE 0
+#define NSVG_ALIGN_MEET 1
+#define NSVG_ALIGN_SLICE 2
+
+#define NSVG_NOTUSED(v) do { (void)(1 ? (void)0 : ( (void)(v) ) ); } while(0)
+#define NSVG_RGB(r, g, b) (((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16))
+
+#ifdef _MSC_VER
+ #pragma warning (disable: 4996) // Switch off security warnings
+ #pragma warning (disable: 4100) // Switch off unreferenced formal parameter warnings
+ #ifdef __cplusplus
+ #define NSVG_INLINE inline
+ #else
+ #define NSVG_INLINE
+ #endif
+#else
+ #define NSVG_INLINE inline
+#endif
+
+
+static int nsvg__isspace(char c)
+{
+ return strchr(" \t\n\v\f\r", c) != 0;
+}
+
+static int nsvg__isdigit(char c)
+{
+ return c >= '0' && c <= '9';
+}
+
+static int nsvg__isnum(char c)
+{
+ return strchr("0123456789+-.eE", c) != 0;
+}
+
+static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; }
+static NSVG_INLINE float nsvg__maxf(float a, float b) { return a > b ? a : b; }
+
+
+// Simple XML parser
+
+#define NSVG_XML_TAG 1
+#define NSVG_XML_CONTENT 2
+#define NSVG_XML_MAX_ATTRIBS 256
+
+static void nsvg__parseContent(char* s,
+ void (*contentCb)(void* ud, const char* s),
+ void* ud)
+{
+ // Trim start white spaces
+ while (*s && nsvg__isspace(*s)) s++;
+ if (!*s) return;
+
+ if (contentCb)
+ (*contentCb)(ud, s);
+}
+
+static void nsvg__parseElement(char* s,
+ void (*startelCb)(void* ud, const char* el, const char** attr),
+ void (*endelCb)(void* ud, const char* el),
+ void* ud)
+{
+ const char* attr[NSVG_XML_MAX_ATTRIBS];
+ int nattr = 0;
+ char* name;
+ int start = 0;
+ int end = 0;
+ char quote;
+
+ // Skip white space after the '<'
+ while (*s && nsvg__isspace(*s)) s++;
+
+ // Check if the tag is end tag
+ if (*s == '/') {
+ s++;
+ end = 1;
+ } else {
+ start = 1;
+ }
+
+ // Skip comments, data and preprocessor stuff.
+ if (!*s || *s == '?' || *s == '!')
+ return;
+
+ // Get tag name
+ name = s;
+ while (*s && !nsvg__isspace(*s)) s++;
+ if (*s) { *s++ = '\0'; }
+
+ // Get attribs
+ while (!end && *s && nattr < NSVG_XML_MAX_ATTRIBS-3) {
+ char* name = NULL;
+ char* value = NULL;
+
+ // Skip white space before the attrib name
+ while (*s && nsvg__isspace(*s)) s++;
+ if (!*s) break;
+ if (*s == '/') {
+ end = 1;
+ break;
+ }
+ name = s;
+ // Find end of the attrib name.
+ while (*s && !nsvg__isspace(*s) && *s != '=') s++;
+ if (*s) { *s++ = '\0'; }
+ // Skip until the beginning of the value.
+ while (*s && *s != '\"' && *s != '\'') s++;
+ if (!*s) break;
+ quote = *s;
+ s++;
+ // Store value and find the end of it.
+ value = s;
+ while (*s && *s != quote) s++;
+ if (*s) { *s++ = '\0'; }
+
+ // Store only well formed attributes
+ if (name && value) {
+ attr[nattr++] = name;
+ attr[nattr++] = value;
+ }
+ }
+
+ // List terminator
+ attr[nattr++] = 0;
+ attr[nattr++] = 0;
+
+ // Call callbacks.
+ if (start && startelCb)
+ (*startelCb)(ud, name, attr);
+ if (end && endelCb)
+ (*endelCb)(ud, name);
+}
+
+int nsvg__parseXML(char* input,
+ void (*startelCb)(void* ud, const char* el, const char** attr),
+ void (*endelCb)(void* ud, const char* el),
+ void (*contentCb)(void* ud, const char* s),
+ void* ud)
+{
+ char* s = input;
+ char* mark = s;
+ int state = NSVG_XML_CONTENT;
+ while (*s) {
+ if (*s == '<' && state == NSVG_XML_CONTENT) {
+ // Start of a tag
+ *s++ = '\0';
+ nsvg__parseContent(mark, contentCb, ud);
+ mark = s;
+ state = NSVG_XML_TAG;
+ } else if (*s == '>' && state == NSVG_XML_TAG) {
+ // Start of a content or new tag.
+ *s++ = '\0';
+ nsvg__parseElement(mark, startelCb, endelCb, ud);
+ mark = s;
+ state = NSVG_XML_CONTENT;
+ } else {
+ s++;
+ }
+ }
+
+ return 1;
+}
+
+
+/* Simple SVG parser. */
+
+#define NSVG_MAX_ATTR 128
+
+enum NSVGgradientUnits {
+ NSVG_USER_SPACE = 0,
+ NSVG_OBJECT_SPACE = 1
+};
+
+#define NSVG_MAX_DASHES 8
+
+enum NSVGunits {
+ NSVG_UNITS_USER,
+ NSVG_UNITS_PX,
+ NSVG_UNITS_PT,
+ NSVG_UNITS_PC,
+ NSVG_UNITS_MM,
+ NSVG_UNITS_CM,
+ NSVG_UNITS_IN,
+ NSVG_UNITS_PERCENT,
+ NSVG_UNITS_EM,
+ NSVG_UNITS_EX
+};
+
+typedef struct NSVGcoordinate {
+ float value;
+ int units;
+} NSVGcoordinate;
+
+typedef struct NSVGlinearData {
+ NSVGcoordinate x1, y1, x2, y2;
+} NSVGlinearData;
+
+typedef struct NSVGradialData {
+ NSVGcoordinate cx, cy, r, fx, fy;
+} NSVGradialData;
+
+typedef struct NSVGgradientData
+{
+ char id[64];
+ char ref[64];
+ char type;
+ union {
+ NSVGlinearData linear;
+ NSVGradialData radial;
+ };
+ char spread;
+ char units;
+ float xform[6];
+ int nstops;
+ NSVGgradientStop* stops;
+ struct NSVGgradientData* next;
+} NSVGgradientData;
+
+typedef struct NSVGattrib
+{
+ char id[64];
+ float xform[6];
+ unsigned int fillColor;
+ unsigned int strokeColor;
+ float opacity;
+ float fillOpacity;
+ float strokeOpacity;
+ char fillGradient[64];
+ char strokeGradient[64];
+ float strokeWidth;
+ float strokeDashOffset;
+ float strokeDashArray[NSVG_MAX_DASHES];
+ int strokeDashCount;
+ char strokeLineJoin;
+ char strokeLineCap;
+ float miterLimit;
+ char fillRule;
+ float fontSize;
+ unsigned int stopColor;
+ float stopOpacity;
+ float stopOffset;
+ char hasFill;
+ char hasStroke;
+ char visible;
+} NSVGattrib;
+
+typedef struct NSVGparser
+{
+ NSVGattrib attr[NSVG_MAX_ATTR];
+ int attrHead;
+ float* pts;
+ int npts;
+ int cpts;
+ NSVGpath* plist;
+ NSVGimage* image;
+ NSVGgradientData* gradients;
+ NSVGshape* shapesTail;
+ float viewMinx, viewMiny, viewWidth, viewHeight;
+ int alignX, alignY, alignType;
+ float dpi;
+ char pathFlag;
+ char defsFlag;
+} NSVGparser;
+
+static void nsvg__xformIdentity(float* t)
+{
+ t[0] = 1.0f; t[1] = 0.0f;
+ t[2] = 0.0f; t[3] = 1.0f;
+ t[4] = 0.0f; t[5] = 0.0f;
+}
+
+static void nsvg__xformSetTranslation(float* t, float tx, float ty)
+{
+ t[0] = 1.0f; t[1] = 0.0f;
+ t[2] = 0.0f; t[3] = 1.0f;
+ t[4] = tx; t[5] = ty;
+}
+
+static void nsvg__xformSetScale(float* t, float sx, float sy)
+{
+ t[0] = sx; t[1] = 0.0f;
+ t[2] = 0.0f; t[3] = sy;
+ t[4] = 0.0f; t[5] = 0.0f;
+}
+
+static void nsvg__xformSetSkewX(float* t, float a)
+{
+ t[0] = 1.0f; t[1] = 0.0f;
+ t[2] = tanf(a); t[3] = 1.0f;
+ t[4] = 0.0f; t[5] = 0.0f;
+}
+
+static void nsvg__xformSetSkewY(float* t, float a)
+{
+ t[0] = 1.0f; t[1] = tanf(a);
+ t[2] = 0.0f; t[3] = 1.0f;
+ t[4] = 0.0f; t[5] = 0.0f;
+}
+
+static void nsvg__xformSetRotation(float* t, float a)
+{
+ float cs = cosf(a), sn = sinf(a);
+ t[0] = cs; t[1] = sn;
+ t[2] = -sn; t[3] = cs;
+ t[4] = 0.0f; t[5] = 0.0f;
+}
+
+static void nsvg__xformMultiply(float* t, float* s)
+{
+ float t0 = t[0] * s[0] + t[1] * s[2];
+ float t2 = t[2] * s[0] + t[3] * s[2];
+ float t4 = t[4] * s[0] + t[5] * s[2] + s[4];
+ t[1] = t[0] * s[1] + t[1] * s[3];
+ t[3] = t[2] * s[1] + t[3] * s[3];
+ t[5] = t[4] * s[1] + t[5] * s[3] + s[5];
+ t[0] = t0;
+ t[2] = t2;
+ t[4] = t4;
+}
+
+static void nsvg__xformInverse(float* inv, float* t)
+{
+ double invdet, det = (double)t[0] * t[3] - (double)t[2] * t[1];
+ if (det > -1e-6 && det < 1e-6) {
+ nsvg__xformIdentity(t);
+ return;
+ }
+ invdet = 1.0 / det;
+ inv[0] = (float)(t[3] * invdet);
+ inv[2] = (float)(-t[2] * invdet);
+ inv[4] = (float)(((double)t[2] * t[5] - (double)t[3] * t[4]) * invdet);
+ inv[1] = (float)(-t[1] * invdet);
+ inv[3] = (float)(t[0] * invdet);
+ inv[5] = (float)(((double)t[1] * t[4] - (double)t[0] * t[5]) * invdet);
+}
+
+static void nsvg__xformPremultiply(float* t, float* s)
+{
+ float s2[6];
+ memcpy(s2, s, sizeof(float)*6);
+ nsvg__xformMultiply(s2, t);
+ memcpy(t, s2, sizeof(float)*6);
+}
+
+static void nsvg__xformPoint(float* dx, float* dy, float x, float y, float* t)
+{
+ *dx = x*t[0] + y*t[2] + t[4];
+ *dy = x*t[1] + y*t[3] + t[5];
+}
+
+static void nsvg__xformVec(float* dx, float* dy, float x, float y, float* t)
+{
+ *dx = x*t[0] + y*t[2];
+ *dy = x*t[1] + y*t[3];
+}
+
+#define NSVG_EPSILON (1e-12)
+
+static int nsvg__ptInBounds(float* pt, float* bounds)
+{
+ return pt[0] >= bounds[0] && pt[0] <= bounds[2] && pt[1] >= bounds[1] && pt[1] <= bounds[3];
+}
+
+
+static double nsvg__evalBezier(double t, double p0, double p1, double p2, double p3)
+{
+ double it = 1.0-t;
+ return it*it*it*p0 + 3.0*it*it*t*p1 + 3.0*it*t*t*p2 + t*t*t*p3;
+}
+
+static void nsvg__curveBounds(float* bounds, float* curve)
+{
+ int i, j, count;
+ double roots[2], a, b, c, b2ac, t, v;
+ float* v0 = &curve[0];
+ float* v1 = &curve[2];
+ float* v2 = &curve[4];
+ float* v3 = &curve[6];
+
+ // Start the bounding box by end points
+ bounds[0] = nsvg__minf(v0[0], v3[0]);
+ bounds[1] = nsvg__minf(v0[1], v3[1]);
+ bounds[2] = nsvg__maxf(v0[0], v3[0]);
+ bounds[3] = nsvg__maxf(v0[1], v3[1]);
+
+ // Bezier curve fits inside the convex hull of it's control points.
+ // If control points are inside the bounds, we're done.
+ if (nsvg__ptInBounds(v1, bounds) && nsvg__ptInBounds(v2, bounds))
+ return;
+
+ // Add bezier curve inflection points in X and Y.
+ for (i = 0; i < 2; i++) {
+ a = -3.0 * v0[i] + 9.0 * v1[i] - 9.0 * v2[i] + 3.0 * v3[i];
+ b = 6.0 * v0[i] - 12.0 * v1[i] + 6.0 * v2[i];
+ c = 3.0 * v1[i] - 3.0 * v0[i];
+ count = 0;
+ if (fabs(a) < NSVG_EPSILON) {
+ if (fabs(b) > NSVG_EPSILON) {
+ t = -c / b;
+ if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON)
+ roots[count++] = t;
+ }
+ } else {
+ b2ac = b*b - 4.0*c*a;
+ if (b2ac > NSVG_EPSILON) {
+ t = (-b + sqrt(b2ac)) / (2.0 * a);
+ if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON)
+ roots[count++] = t;
+ t = (-b - sqrt(b2ac)) / (2.0 * a);
+ if (t > NSVG_EPSILON && t < 1.0-NSVG_EPSILON)
+ roots[count++] = t;
+ }
+ }
+ for (j = 0; j < count; j++) {
+ v = nsvg__evalBezier(roots[j], v0[i], v1[i], v2[i], v3[i]);
+ bounds[0+i] = nsvg__minf(bounds[0+i], (float)v);
+ bounds[2+i] = nsvg__maxf(bounds[2+i], (float)v);
+ }
+ }
+}
+
+static NSVGparser* nsvg__createParser()
+{
+ NSVGparser* p;
+ p = (NSVGparser*)malloc(sizeof(NSVGparser));
+ if (p == NULL) goto error;
+ memset(p, 0, sizeof(NSVGparser));
+
+ p->image = (NSVGimage*)malloc(sizeof(NSVGimage));
+ if (p->image == NULL) goto error;
+ memset(p->image, 0, sizeof(NSVGimage));
+
+ // Init style
+ nsvg__xformIdentity(p->attr[0].xform);
+ memset(p->attr[0].id, 0, sizeof p->attr[0].id);
+ p->attr[0].fillColor = NSVG_RGB(0,0,0);
+ p->attr[0].strokeColor = NSVG_RGB(0,0,0);
+ p->attr[0].opacity = 1;
+ p->attr[0].fillOpacity = 1;
+ p->attr[0].strokeOpacity = 1;
+ p->attr[0].stopOpacity = 1;
+ p->attr[0].strokeWidth = 1;
+ p->attr[0].strokeLineJoin = NSVG_JOIN_MITER;
+ p->attr[0].strokeLineCap = NSVG_CAP_BUTT;
+ p->attr[0].miterLimit = 4;
+ p->attr[0].fillRule = NSVG_FILLRULE_NONZERO;
+ p->attr[0].hasFill = 1;
+ p->attr[0].visible = 1;
+
+ return p;
+
+error:
+ if (p) {
+ if (p->image) free(p->image);
+ free(p);
+ }
+ return NULL;
+}
+
+static void nsvg__deletePaths(NSVGpath* path)
+{
+ while (path) {
+ NSVGpath *next = path->next;
+ if (path->pts != NULL)
+ free(path->pts);
+ free(path);
+ path = next;
+ }
+}
+
+static void nsvg__deletePaint(NSVGpaint* paint)
+{
+ if (paint->type == NSVG_PAINT_LINEAR_GRADIENT || paint->type == NSVG_PAINT_RADIAL_GRADIENT)
+ free(paint->gradient);
+}
+
+static void nsvg__deleteGradientData(NSVGgradientData* grad)
+{
+ NSVGgradientData* next;
+ while (grad != NULL) {
+ next = grad->next;
+ free(grad->stops);
+ free(grad);
+ grad = next;
+ }
+}
+
+static void nsvg__deleteParser(NSVGparser* p)
+{
+ if (p != NULL) {
+ nsvg__deletePaths(p->plist);
+ nsvg__deleteGradientData(p->gradients);
+ nsvgDelete(p->image);
+ free(p->pts);
+ free(p);
+ }
+}
+
+static void nsvg__resetPath(NSVGparser* p)
+{
+ p->npts = 0;
+}
+
+static void nsvg__addPoint(NSVGparser* p, float x, float y)
+{
+ if (p->npts+1 > p->cpts) {
+ p->cpts = p->cpts ? p->cpts*2 : 8;
+ p->pts = (float*)realloc(p->pts, p->cpts*2*sizeof(float));
+ if (!p->pts) return;
+ }
+ p->pts[p->npts*2+0] = x;
+ p->pts[p->npts*2+1] = y;
+ p->npts++;
+}
+
+static void nsvg__moveTo(NSVGparser* p, float x, float y)
+{
+ if (p->npts > 0) {
+ p->pts[(p->npts-1)*2+0] = x;
+ p->pts[(p->npts-1)*2+1] = y;
+ } else {
+ nsvg__addPoint(p, x, y);
+ }
+}
+
+static void nsvg__lineTo(NSVGparser* p, float x, float y)
+{
+ float px,py, dx,dy;
+ if (p->npts > 0) {
+ px = p->pts[(p->npts-1)*2+0];
+ py = p->pts[(p->npts-1)*2+1];
+ dx = x - px;
+ dy = y - py;
+ nsvg__addPoint(p, px + dx/3.0f, py + dy/3.0f);
+ nsvg__addPoint(p, x - dx/3.0f, y - dy/3.0f);
+ nsvg__addPoint(p, x, y);
+ }
+}
+
+static void nsvg__cubicBezTo(NSVGparser* p, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y)
+{
+ nsvg__addPoint(p, cpx1, cpy1);
+ nsvg__addPoint(p, cpx2, cpy2);
+ nsvg__addPoint(p, x, y);
+}
+
+static NSVGattrib* nsvg__getAttr(NSVGparser* p)
+{
+ return &p->attr[p->attrHead];
+}
+
+static void nsvg__pushAttr(NSVGparser* p)
+{
+ if (p->attrHead < NSVG_MAX_ATTR-1) {
+ p->attrHead++;
+ memcpy(&p->attr[p->attrHead], &p->attr[p->attrHead-1], sizeof(NSVGattrib));
+ }
+}
+
+static void nsvg__popAttr(NSVGparser* p)
+{
+ if (p->attrHead > 0)
+ p->attrHead--;
+}
+
+static float nsvg__actualOrigX(NSVGparser* p)
+{
+ return p->viewMinx;
+}
+
+static float nsvg__actualOrigY(NSVGparser* p)
+{
+ return p->viewMiny;
+}
+
+static float nsvg__actualWidth(NSVGparser* p)
+{
+ return p->viewWidth;
+}
+
+static float nsvg__actualHeight(NSVGparser* p)
+{
+ return p->viewHeight;
+}
+
+static float nsvg__actualLength(NSVGparser* p)
+{
+ float w = nsvg__actualWidth(p), h = nsvg__actualHeight(p);
+ return sqrtf(w*w + h*h) / sqrtf(2.0f);
+}
+
+static float nsvg__convertToPixels(NSVGparser* p, NSVGcoordinate c, float orig, float length)
+{
+ NSVGattrib* attr = nsvg__getAttr(p);
+ switch (c.units) {
+ case NSVG_UNITS_USER: return c.value;
+ case NSVG_UNITS_PX: return c.value;
+ case NSVG_UNITS_PT: return c.value / 72.0f * p->dpi;
+ case NSVG_UNITS_PC: return c.value / 6.0f * p->dpi;
+ case NSVG_UNITS_MM: return c.value / 25.4f * p->dpi;
+ case NSVG_UNITS_CM: return c.value / 2.54f * p->dpi;
+ case NSVG_UNITS_IN: return c.value * p->dpi;
+ case NSVG_UNITS_EM: return c.value * attr->fontSize;
+ case NSVG_UNITS_EX: return c.value * attr->fontSize * 0.52f; // x-height of Helvetica.
+ case NSVG_UNITS_PERCENT: return orig + c.value / 100.0f * length;
+ default: return c.value;
+ }
+ return c.value;
+}
+
+static NSVGgradientData* nsvg__findGradientData(NSVGparser* p, const char* id)
+{
+ NSVGgradientData* grad = p->gradients;
+ while (grad) {
+ if (strcmp(grad->id, id) == 0)
+ return grad;
+ grad = grad->next;
+ }
+ return NULL;
+}
+
+static NSVGgradient* nsvg__createGradient(NSVGparser* p, const char* id, const float* localBounds, char* paintType)
+{
+ NSVGattrib* attr = nsvg__getAttr(p);
+ NSVGgradientData* data = NULL;
+ NSVGgradientData* ref = NULL;
+ NSVGgradientStop* stops = NULL;
+ NSVGgradient* grad;
+ float ox, oy, sw, sh, sl;
+ int nstops = 0;
+
+ data = nsvg__findGradientData(p, id);
+ if (data == NULL) return NULL;
+
+ // TODO: use ref to fill in all unset values too.
+ ref = data;
+ while (ref != NULL) {
+ if (stops == NULL && ref->stops != NULL) {
+ stops = ref->stops;
+ nstops = ref->nstops;
+ break;
+ }
+ ref = nsvg__findGradientData(p, ref->ref);
+ }
+ if (stops == NULL) return NULL;
+
+ grad = (NSVGgradient*)malloc(sizeof(NSVGgradient) + sizeof(NSVGgradientStop)*(nstops-1));
+ if (grad == NULL) return NULL;
+
+ // The shape width and height.
+ if (data->units == NSVG_OBJECT_SPACE) {
+ ox = localBounds[0];
+ oy = localBounds[1];
+ sw = localBounds[2] - localBounds[0];
+ sh = localBounds[3] - localBounds[1];
+ } else {
+ ox = nsvg__actualOrigX(p);
+ oy = nsvg__actualOrigY(p);
+ sw = nsvg__actualWidth(p);
+ sh = nsvg__actualHeight(p);
+ }
+ sl = sqrtf(sw*sw + sh*sh) / sqrtf(2.0f);
+
+ if (data->type == NSVG_PAINT_LINEAR_GRADIENT) {
+ float x1, y1, x2, y2, dx, dy;
+ x1 = nsvg__convertToPixels(p, data->linear.x1, ox, sw);
+ y1 = nsvg__convertToPixels(p, data->linear.y1, oy, sh);
+ x2 = nsvg__convertToPixels(p, data->linear.x2, ox, sw);
+ y2 = nsvg__convertToPixels(p, data->linear.y2, oy, sh);
+ // Calculate transform aligned to the line
+ dx = x2 - x1;
+ dy = y2 - y1;
+ grad->xform[0] = dy; grad->xform[1] = -dx;
+ grad->xform[2] = dx; grad->xform[3] = dy;
+ grad->xform[4] = x1; grad->xform[5] = y1;
+ } else {
+ float cx, cy, fx, fy, r;
+ cx = nsvg__convertToPixels(p, data->radial.cx, ox, sw);
+ cy = nsvg__convertToPixels(p, data->radial.cy, oy, sh);
+ fx = nsvg__convertToPixels(p, data->radial.fx, ox, sw);
+ fy = nsvg__convertToPixels(p, data->radial.fy, oy, sh);
+ r = nsvg__convertToPixels(p, data->radial.r, 0, sl);
+ // Calculate transform aligned to the circle
+ grad->xform[0] = r; grad->xform[1] = 0;
+ grad->xform[2] = 0; grad->xform[3] = r;
+ grad->xform[4] = cx; grad->xform[5] = cy;
+ grad->fx = fx / r;
+ grad->fy = fy / r;
+ }
+
+ nsvg__xformMultiply(grad->xform, data->xform);
+ nsvg__xformMultiply(grad->xform, attr->xform);
+
+ grad->spread = data->spread;
+ memcpy(grad->stops, stops, nstops*sizeof(NSVGgradientStop));
+ grad->nstops = nstops;
+
+ *paintType = data->type;
+
+ return grad;
+}
+
+static float nsvg__getAverageScale(float* t)
+{
+ float sx = sqrtf(t[0]*t[0] + t[2]*t[2]);
+ float sy = sqrtf(t[1]*t[1] + t[3]*t[3]);
+ return (sx + sy) * 0.5f;
+}
+
+static void nsvg__getLocalBounds(float* bounds, NSVGshape *shape, float* xform)
+{
+ NSVGpath* path;
+ float curve[4*2], curveBounds[4];
+ int i, first = 1;
+ for (path = shape->paths; path != NULL; path = path->next) {
+ nsvg__xformPoint(&curve[0], &curve[1], path->pts[0], path->pts[1], xform);
+ for (i = 0; i < path->npts-1; i += 3) {
+ nsvg__xformPoint(&curve[2], &curve[3], path->pts[(i+1)*2], path->pts[(i+1)*2+1], xform);
+ nsvg__xformPoint(&curve[4], &curve[5], path->pts[(i+2)*2], path->pts[(i+2)*2+1], xform);
+ nsvg__xformPoint(&curve[6], &curve[7], path->pts[(i+3)*2], path->pts[(i+3)*2+1], xform);
+ nsvg__curveBounds(curveBounds, curve);
+ if (first) {
+ bounds[0] = curveBounds[0];
+ bounds[1] = curveBounds[1];
+ bounds[2] = curveBounds[2];
+ bounds[3] = curveBounds[3];
+ first = 0;
+ } else {
+ bounds[0] = nsvg__minf(bounds[0], curveBounds[0]);
+ bounds[1] = nsvg__minf(bounds[1], curveBounds[1]);
+ bounds[2] = nsvg__maxf(bounds[2], curveBounds[2]);
+ bounds[3] = nsvg__maxf(bounds[3], curveBounds[3]);
+ }
+ curve[0] = curve[6];
+ curve[1] = curve[7];
+ }
+ }
+}
+
+static void nsvg__addShape(NSVGparser* p)
+{
+ NSVGattrib* attr = nsvg__getAttr(p);
+ float scale = 1.0f;
+ NSVGshape* shape;
+ NSVGpath* path;
+ int i;
+
+ if (p->plist == NULL)
+ return;
+
+ shape = (NSVGshape*)malloc(sizeof(NSVGshape));
+ if (shape == NULL) goto error;
+ memset(shape, 0, sizeof(NSVGshape));
+
+ memcpy(shape->id, attr->id, sizeof shape->id);
+ scale = nsvg__getAverageScale(attr->xform);
+ shape->strokeWidth = attr->strokeWidth * scale;
+ shape->strokeDashOffset = attr->strokeDashOffset * scale;
+ shape->strokeDashCount = (char)attr->strokeDashCount;
+ for (i = 0; i < attr->strokeDashCount; i++)
+ shape->strokeDashArray[i] = attr->strokeDashArray[i] * scale;
+ shape->strokeLineJoin = attr->strokeLineJoin;
+ shape->strokeLineCap = attr->strokeLineCap;
+ shape->miterLimit = attr->miterLimit;
+ shape->fillRule = attr->fillRule;
+ shape->opacity = attr->opacity;
+
+ shape->paths = p->plist;
+ p->plist = NULL;
+
+ // Calculate shape bounds
+ shape->bounds[0] = shape->paths->bounds[0];
+ shape->bounds[1] = shape->paths->bounds[1];
+ shape->bounds[2] = shape->paths->bounds[2];
+ shape->bounds[3] = shape->paths->bounds[3];
+ for (path = shape->paths->next; path != NULL; path = path->next) {
+ shape->bounds[0] = nsvg__minf(shape->bounds[0], path->bounds[0]);
+ shape->bounds[1] = nsvg__minf(shape->bounds[1], path->bounds[1]);
+ shape->bounds[2] = nsvg__maxf(shape->bounds[2], path->bounds[2]);
+ shape->bounds[3] = nsvg__maxf(shape->bounds[3], path->bounds[3]);
+ }
+
+ // Set fill
+ if (attr->hasFill == 0) {
+ shape->fill.type = NSVG_PAINT_NONE;
+ } else if (attr->hasFill == 1) {
+ shape->fill.type = NSVG_PAINT_COLOR;
+ shape->fill.color = attr->fillColor;
+ shape->fill.color |= (unsigned int)(attr->fillOpacity*255) << 24;
+ } else if (attr->hasFill == 2) {
+ float inv[6], localBounds[4];
+ nsvg__xformInverse(inv, attr->xform);
+ nsvg__getLocalBounds(localBounds, shape, inv);
+ shape->fill.gradient = nsvg__createGradient(p, attr->fillGradient, localBounds, &shape->fill.type);
+ if (shape->fill.gradient == NULL) {
+ shape->fill.type = NSVG_PAINT_NONE;
+ }
+ }
+
+ // Set stroke
+ if (attr->hasStroke == 0) {
+ shape->stroke.type = NSVG_PAINT_NONE;
+ } else if (attr->hasStroke == 1) {
+ shape->stroke.type = NSVG_PAINT_COLOR;
+ shape->stroke.color = attr->strokeColor;
+ shape->stroke.color |= (unsigned int)(attr->strokeOpacity*255) << 24;
+ } else if (attr->hasStroke == 2) {
+ float inv[6], localBounds[4];
+ nsvg__xformInverse(inv, attr->xform);
+ nsvg__getLocalBounds(localBounds, shape, inv);
+ shape->stroke.gradient = nsvg__createGradient(p, attr->strokeGradient, localBounds, &shape->stroke.type);
+ if (shape->stroke.gradient == NULL)
+ shape->stroke.type = NSVG_PAINT_NONE;
+ }
+
+ // Set flags
+ shape->flags = (attr->visible ? NSVG_FLAGS_VISIBLE : 0x00);
+
+ // Add to tail
+ if (p->image->shapes == NULL)
+ p->image->shapes = shape;
+ else
+ p->shapesTail->next = shape;
+ p->shapesTail = shape;
+
+ return;
+
+error:
+ if (shape) free(shape);
+}
+
+static void nsvg__addPath(NSVGparser* p, char closed)
+{
+ NSVGattrib* attr = nsvg__getAttr(p);
+ NSVGpath* path = NULL;
+ float bounds[4];
+ float* curve;
+ int i;
+
+ if (p->npts < 4)
+ return;
+
+ if (closed)
+ nsvg__lineTo(p, p->pts[0], p->pts[1]);
+
+ path = (NSVGpath*)malloc(sizeof(NSVGpath));
+ if (path == NULL) goto error;
+ memset(path, 0, sizeof(NSVGpath));
+
+ path->pts = (float*)malloc(p->npts*2*sizeof(float));
+ if (path->pts == NULL) goto error;
+ path->closed = closed;
+ path->npts = p->npts;
+
+ // Transform path.
+ for (i = 0; i < p->npts; ++i)
+ nsvg__xformPoint(&path->pts[i*2], &path->pts[i*2+1], p->pts[i*2], p->pts[i*2+1], attr->xform);
+
+ // Find bounds
+ for (i = 0; i < path->npts-1; i += 3) {
+ curve = &path->pts[i*2];
+ nsvg__curveBounds(bounds, curve);
+ if (i == 0) {
+ path->bounds[0] = bounds[0];
+ path->bounds[1] = bounds[1];
+ path->bounds[2] = bounds[2];
+ path->bounds[3] = bounds[3];
+ } else {
+ path->bounds[0] = nsvg__minf(path->bounds[0], bounds[0]);
+ path->bounds[1] = nsvg__minf(path->bounds[1], bounds[1]);
+ path->bounds[2] = nsvg__maxf(path->bounds[2], bounds[2]);
+ path->bounds[3] = nsvg__maxf(path->bounds[3], bounds[3]);
+ }
+ }
+
+ path->next = p->plist;
+ p->plist = path;
+
+ return;
+
+error:
+ if (path != NULL) {
+ if (path->pts != NULL) free(path->pts);
+ free(path);
+ }
+}
+
+// We roll our own string to float because the std library one uses locale and messes things up.
+static double nsvg__atof(const char* s)
+{
+ char* cur = (char*)s;
+ char* end = NULL;
+ double res = 0.0, sign = 1.0;
+ long long intPart = 0, fracPart = 0;
+ char hasIntPart = 0, hasFracPart = 0;
+
+ // Parse optional sign
+ if (*cur == '+') {
+ cur++;
+ } else if (*cur == '-') {
+ sign = -1;
+ cur++;
+ }
+
+ // Parse integer part
+ if (nsvg__isdigit(*cur)) {
+ // Parse digit sequence
+ intPart = (double)strtoll(cur, &end, 10);
+ if (cur != end) {
+ res = (double)intPart;
+ hasIntPart = 1;
+ cur = end;
+ }
+ }
+
+ // Parse fractional part.
+ if (*cur == '.') {
+ cur++; // Skip '.'
+ if (nsvg__isdigit(*cur)) {
+ // Parse digit sequence
+ fracPart = strtoll(cur, &end, 10);
+ if (cur != end) {
+ res += (double)fracPart / pow(10.0, (double)(end - cur));
+ hasFracPart = 1;
+ cur = end;
+ }
+ }
+ }
+
+ // A valid number should have integer or fractional part.
+ if (!hasIntPart && !hasFracPart)
+ return 0.0;
+
+ // Parse optional exponent
+ if (*cur == 'e' || *cur == 'E') {
+ int expPart = 0;
+ cur++; // skip 'E'
+ expPart = strtol(cur, &end, 10); // Parse digit sequence with sign
+ if (cur != end) {
+ res *= pow(10.0, (double)expPart);
+ }
+ }
+
+ return res * sign;
+}
+
+
+static const char* nsvg__parseNumber(const char* s, char* it, const int size)
+{
+ const int last = size-1;
+ int i = 0;
+
+ // sign
+ if (*s == '-' || *s == '+') {
+ if (i < last) it[i++] = *s;
+ s++;
+ }
+ // integer part
+ while (*s && nsvg__isdigit(*s)) {
+ if (i < last) it[i++] = *s;
+ s++;
+ }
+ if (*s == '.') {
+ // decimal point
+ if (i < last) it[i++] = *s;
+ s++;
+ // fraction part
+ while (*s && nsvg__isdigit(*s)) {
+ if (i < last) it[i++] = *s;
+ s++;
+ }
+ }
+ // exponent
+ if (*s == 'e' || *s == 'E') {
+ if (i < last) it[i++] = *s;
+ s++;
+ if (*s == '-' || *s == '+') {
+ if (i < last) it[i++] = *s;
+ s++;
+ }
+ while (*s && nsvg__isdigit(*s)) {
+ if (i < last) it[i++] = *s;
+ s++;
+ }
+ }
+ it[i] = '\0';
+
+ return s;
+}
+
+static const char* nsvg__getNextPathItem(const char* s, char* it)
+{
+ it[0] = '\0';
+ // Skip white spaces and commas
+ while (*s && (nsvg__isspace(*s) || *s == ',')) s++;
+ if (!*s) return s;
+ if (*s == '-' || *s == '+' || *s == '.' || nsvg__isdigit(*s)) {
+ s = nsvg__parseNumber(s, it, 64);
+ } else {
+ // Parse command
+ it[0] = *s++;
+ it[1] = '\0';
+ return s;
+ }
+
+ return s;
+}
+
+static unsigned int nsvg__parseColorHex(const char* str)
+{
+ unsigned int c = 0, r = 0, g = 0, b = 0;
+ int n = 0;
+ str++; // skip #
+ // Calculate number of characters.
+ while(str[n] && !nsvg__isspace(str[n]))
+ n++;
+ if (n == 6) {
+ sscanf(str, "%x", &c);
+ } else if (n == 3) {
+ sscanf(str, "%x", &c);
+ c = (c&0xf) | ((c&0xf0) << 4) | ((c&0xf00) << 8);
+ c |= c<<4;
+ }
+ r = (c >> 16) & 0xff;
+ g = (c >> 8) & 0xff;
+ b = c & 0xff;
+ return NSVG_RGB(r,g,b);
+}
+
+static unsigned int nsvg__parseColorRGB(const char* str)
+{
+ int r = -1, g = -1, b = -1;
+ char s1[32]="", s2[32]="";
+ sscanf(str + 4, "%d%[%%, \t]%d%[%%, \t]%d", &r, s1, &g, s2, &b);
+ if (strchr(s1, '%')) {
+ return NSVG_RGB((r*255)/100,(g*255)/100,(b*255)/100);
+ } else {
+ return NSVG_RGB(r,g,b);
+ }
+}
+
+typedef struct NSVGNamedColor {
+ const char* name;
+ unsigned int color;
+} NSVGNamedColor;
+
+NSVGNamedColor nsvg__colors[] = {
+
+ { "red", NSVG_RGB(255, 0, 0) },
+ { "green", NSVG_RGB( 0, 128, 0) },
+ { "blue", NSVG_RGB( 0, 0, 255) },
+ { "yellow", NSVG_RGB(255, 255, 0) },
+ { "cyan", NSVG_RGB( 0, 255, 255) },
+ { "magenta", NSVG_RGB(255, 0, 255) },
+ { "black", NSVG_RGB( 0, 0, 0) },
+ { "grey", NSVG_RGB(128, 128, 128) },
+ { "gray", NSVG_RGB(128, 128, 128) },
+ { "white", NSVG_RGB(255, 255, 255) },
+
+#ifdef NANOSVG_ALL_COLOR_KEYWORDS
+ { "aliceblue", NSVG_RGB(240, 248, 255) },
+ { "antiquewhite", NSVG_RGB(250, 235, 215) },
+ { "aqua", NSVG_RGB( 0, 255, 255) },
+ { "aquamarine", NSVG_RGB(127, 255, 212) },
+ { "azure", NSVG_RGB(240, 255, 255) },
+ { "beige", NSVG_RGB(245, 245, 220) },
+ { "bisque", NSVG_RGB(255, 228, 196) },
+ { "blanchedalmond", NSVG_RGB(255, 235, 205) },
+ { "blueviolet", NSVG_RGB(138, 43, 226) },
+ { "brown", NSVG_RGB(165, 42, 42) },
+ { "burlywood", NSVG_RGB(222, 184, 135) },
+ { "cadetblue", NSVG_RGB( 95, 158, 160) },
+ { "chartreuse", NSVG_RGB(127, 255, 0) },
+ { "chocolate", NSVG_RGB(210, 105, 30) },
+ { "coral", NSVG_RGB(255, 127, 80) },
+ { "cornflowerblue", NSVG_RGB(100, 149, 237) },
+ { "cornsilk", NSVG_RGB(255, 248, 220) },
+ { "crimson", NSVG_RGB(220, 20, 60) },
+ { "darkblue", NSVG_RGB( 0, 0, 139) },
+ { "darkcyan", NSVG_RGB( 0, 139, 139) },
+ { "darkgoldenrod", NSVG_RGB(184, 134, 11) },
+ { "darkgray", NSVG_RGB(169, 169, 169) },
+ { "darkgreen", NSVG_RGB( 0, 100, 0) },
+ { "darkgrey", NSVG_RGB(169, 169, 169) },
+ { "darkkhaki", NSVG_RGB(189, 183, 107) },
+ { "darkmagenta", NSVG_RGB(139, 0, 139) },
+ { "darkolivegreen", NSVG_RGB( 85, 107, 47) },
+ { "darkorange", NSVG_RGB(255, 140, 0) },
+ { "darkorchid", NSVG_RGB(153, 50, 204) },
+ { "darkred", NSVG_RGB(139, 0, 0) },
+ { "darksalmon", NSVG_RGB(233, 150, 122) },
+ { "darkseagreen", NSVG_RGB(143, 188, 143) },
+ { "darkslateblue", NSVG_RGB( 72, 61, 139) },
+ { "darkslategray", NSVG_RGB( 47, 79, 79) },
+ { "darkslategrey", NSVG_RGB( 47, 79, 79) },
+ { "darkturquoise", NSVG_RGB( 0, 206, 209) },
+ { "darkviolet", NSVG_RGB(148, 0, 211) },
+ { "deeppink", NSVG_RGB(255, 20, 147) },
+ { "deepskyblue", NSVG_RGB( 0, 191, 255) },
+ { "dimgray", NSVG_RGB(105, 105, 105) },
+ { "dimgrey", NSVG_RGB(105, 105, 105) },
+ { "dodgerblue", NSVG_RGB( 30, 144, 255) },
+ { "firebrick", NSVG_RGB(178, 34, 34) },
+ { "floralwhite", NSVG_RGB(255, 250, 240) },
+ { "forestgreen", NSVG_RGB( 34, 139, 34) },
+ { "fuchsia", NSVG_RGB(255, 0, 255) },
+ { "gainsboro", NSVG_RGB(220, 220, 220) },
+ { "ghostwhite", NSVG_RGB(248, 248, 255) },
+ { "gold", NSVG_RGB(255, 215, 0) },
+ { "goldenrod", NSVG_RGB(218, 165, 32) },
+ { "greenyellow", NSVG_RGB(173, 255, 47) },
+ { "honeydew", NSVG_RGB(240, 255, 240) },
+ { "hotpink", NSVG_RGB(255, 105, 180) },
+ { "indianred", NSVG_RGB(205, 92, 92) },
+ { "indigo", NSVG_RGB( 75, 0, 130) },
+ { "ivory", NSVG_RGB(255, 255, 240) },
+ { "khaki", NSVG_RGB(240, 230, 140) },
+ { "lavender", NSVG_RGB(230, 230, 250) },
+ { "lavenderblush", NSVG_RGB(255, 240, 245) },
+ { "lawngreen", NSVG_RGB(124, 252, 0) },
+ { "lemonchiffon", NSVG_RGB(255, 250, 205) },
+ { "lightblue", NSVG_RGB(173, 216, 230) },
+ { "lightcoral", NSVG_RGB(240, 128, 128) },
+ { "lightcyan", NSVG_RGB(224, 255, 255) },
+ { "lightgoldenrodyellow", NSVG_RGB(250, 250, 210) },
+ { "lightgray", NSVG_RGB(211, 211, 211) },
+ { "lightgreen", NSVG_RGB(144, 238, 144) },
+ { "lightgrey", NSVG_RGB(211, 211, 211) },
+ { "lightpink", NSVG_RGB(255, 182, 193) },
+ { "lightsalmon", NSVG_RGB(255, 160, 122) },
+ { "lightseagreen", NSVG_RGB( 32, 178, 170) },
+ { "lightskyblue", NSVG_RGB(135, 206, 250) },
+ { "lightslategray", NSVG_RGB(119, 136, 153) },
+ { "lightslategrey", NSVG_RGB(119, 136, 153) },
+ { "lightsteelblue", NSVG_RGB(176, 196, 222) },
+ { "lightyellow", NSVG_RGB(255, 255, 224) },
+ { "lime", NSVG_RGB( 0, 255, 0) },
+ { "limegreen", NSVG_RGB( 50, 205, 50) },
+ { "linen", NSVG_RGB(250, 240, 230) },
+ { "maroon", NSVG_RGB(128, 0, 0) },
+ { "mediumaquamarine", NSVG_RGB(102, 205, 170) },
+ { "mediumblue", NSVG_RGB( 0, 0, 205) },
+ { "mediumorchid", NSVG_RGB(186, 85, 211) },
+ { "mediumpurple", NSVG_RGB(147, 112, 219) },
+ { "mediumseagreen", NSVG_RGB( 60, 179, 113) },
+ { "mediumslateblue", NSVG_RGB(123, 104, 238) },
+ { "mediumspringgreen", NSVG_RGB( 0, 250, 154) },
+ { "mediumturquoise", NSVG_RGB( 72, 209, 204) },
+ { "mediumvioletred", NSVG_RGB(199, 21, 133) },
+ { "midnightblue", NSVG_RGB( 25, 25, 112) },
+ { "mintcream", NSVG_RGB(245, 255, 250) },
+ { "mistyrose", NSVG_RGB(255, 228, 225) },
+ { "moccasin", NSVG_RGB(255, 228, 181) },
+ { "navajowhite", NSVG_RGB(255, 222, 173) },
+ { "navy", NSVG_RGB( 0, 0, 128) },
+ { "oldlace", NSVG_RGB(253, 245, 230) },
+ { "olive", NSVG_RGB(128, 128, 0) },
+ { "olivedrab", NSVG_RGB(107, 142, 35) },
+ { "orange", NSVG_RGB(255, 165, 0) },
+ { "orangered", NSVG_RGB(255, 69, 0) },
+ { "orchid", NSVG_RGB(218, 112, 214) },
+ { "palegoldenrod", NSVG_RGB(238, 232, 170) },
+ { "palegreen", NSVG_RGB(152, 251, 152) },
+ { "paleturquoise", NSVG_RGB(175, 238, 238) },
+ { "palevioletred", NSVG_RGB(219, 112, 147) },
+ { "papayawhip", NSVG_RGB(255, 239, 213) },
+ { "peachpuff", NSVG_RGB(255, 218, 185) },
+ { "peru", NSVG_RGB(205, 133, 63) },
+ { "pink", NSVG_RGB(255, 192, 203) },
+ { "plum", NSVG_RGB(221, 160, 221) },
+ { "powderblue", NSVG_RGB(176, 224, 230) },
+ { "purple", NSVG_RGB(128, 0, 128) },
+ { "rosybrown", NSVG_RGB(188, 143, 143) },
+ { "royalblue", NSVG_RGB( 65, 105, 225) },
+ { "saddlebrown", NSVG_RGB(139, 69, 19) },
+ { "salmon", NSVG_RGB(250, 128, 114) },
+ { "sandybrown", NSVG_RGB(244, 164, 96) },
+ { "seagreen", NSVG_RGB( 46, 139, 87) },
+ { "seashell", NSVG_RGB(255, 245, 238) },
+ { "sienna", NSVG_RGB(160, 82, 45) },
+ { "silver", NSVG_RGB(192, 192, 192) },
+ { "skyblue", NSVG_RGB(135, 206, 235) },
+ { "slateblue", NSVG_RGB(106, 90, 205) },
+ { "slategray", NSVG_RGB(112, 128, 144) },
+ { "slategrey", NSVG_RGB(112, 128, 144) },
+ { "snow", NSVG_RGB(255, 250, 250) },
+ { "springgreen", NSVG_RGB( 0, 255, 127) },
+ { "steelblue", NSVG_RGB( 70, 130, 180) },
+ { "tan", NSVG_RGB(210, 180, 140) },
+ { "teal", NSVG_RGB( 0, 128, 128) },
+ { "thistle", NSVG_RGB(216, 191, 216) },
+ { "tomato", NSVG_RGB(255, 99, 71) },
+ { "turquoise", NSVG_RGB( 64, 224, 208) },
+ { "violet", NSVG_RGB(238, 130, 238) },
+ { "wheat", NSVG_RGB(245, 222, 179) },
+ { "whitesmoke", NSVG_RGB(245, 245, 245) },
+ { "yellowgreen", NSVG_RGB(154, 205, 50) },
+#endif
+};
+
+static unsigned int nsvg__parseColorName(const char* str)
+{
+ int i, ncolors = sizeof(nsvg__colors) / sizeof(NSVGNamedColor);
+
+ for (i = 0; i < ncolors; i++) {
+ if (strcmp(nsvg__colors[i].name, str) == 0) {
+ return nsvg__colors[i].color;
+ }
+ }
+
+ return NSVG_RGB(128, 128, 128);
+}
+
+static unsigned int nsvg__parseColor(const char* str)
+{
+ size_t len = 0;
+ while(*str == ' ') ++str;
+ len = strlen(str);
+ if (len >= 1 && *str == '#')
+ return nsvg__parseColorHex(str);
+ else if (len >= 4 && str[0] == 'r' && str[1] == 'g' && str[2] == 'b' && str[3] == '(')
+ return nsvg__parseColorRGB(str);
+ return nsvg__parseColorName(str);
+}
+
+static float nsvg__parseOpacity(const char* str)
+{
+ float val = 0;
+ sscanf(str, "%f", &val);
+ if (val < 0.0f) val = 0.0f;
+ if (val > 1.0f) val = 1.0f;
+ return val;
+}
+
+static float nsvg__parseMiterLimit(const char* str)
+{
+ float val = 0;
+ sscanf(str, "%f", &val);
+ if (val < 0.0f) val = 0.0f;
+ return val;
+}
+
+static int nsvg__parseUnits(const char* units)
+{
+ if (units[0] == 'p' && units[1] == 'x')
+ return NSVG_UNITS_PX;
+ else if (units[0] == 'p' && units[1] == 't')
+ return NSVG_UNITS_PT;
+ else if (units[0] == 'p' && units[1] == 'c')
+ return NSVG_UNITS_PC;
+ else if (units[0] == 'm' && units[1] == 'm')
+ return NSVG_UNITS_MM;
+ else if (units[0] == 'c' && units[1] == 'm')
+ return NSVG_UNITS_CM;
+ else if (units[0] == 'i' && units[1] == 'n')
+ return NSVG_UNITS_IN;
+ else if (units[0] == '%')
+ return NSVG_UNITS_PERCENT;
+ else if (units[0] == 'e' && units[1] == 'm')
+ return NSVG_UNITS_EM;
+ else if (units[0] == 'e' && units[1] == 'x')
+ return NSVG_UNITS_EX;
+ return NSVG_UNITS_USER;
+}
+
+static NSVGcoordinate nsvg__parseCoordinateRaw(const char* str)
+{
+ NSVGcoordinate coord = {0, NSVG_UNITS_USER};
+ char units[32]="";
+ sscanf(str, "%f%31s", &coord.value, units);
+ coord.units = nsvg__parseUnits(units);
+ return coord;
+}
+
+static NSVGcoordinate nsvg__coord(float v, int units)
+{
+ NSVGcoordinate coord = {v, units};
+ return coord;
+}
+
+static float nsvg__parseCoordinate(NSVGparser* p, const char* str, float orig, float length)
+{
+ NSVGcoordinate coord = nsvg__parseCoordinateRaw(str);
+ return nsvg__convertToPixels(p, coord, orig, length);
+}
+
+static int nsvg__parseTransformArgs(const char* str, float* args, int maxNa, int* na)
+{
+ const char* end;
+ const char* ptr;
+ char it[64];
+
+ *na = 0;
+ ptr = str;
+ while (*ptr && *ptr != '(') ++ptr;
+ if (*ptr == 0)
+ return 1;
+ end = ptr;
+ while (*end && *end != ')') ++end;
+ if (*end == 0)
+ return 1;
+
+ while (ptr < end) {
+ if (*ptr == '-' || *ptr == '+' || *ptr == '.' || nsvg__isdigit(*ptr)) {
+ if (*na >= maxNa) return 0;
+ ptr = nsvg__parseNumber(ptr, it, 64);
+ args[(*na)++] = (float)nsvg__atof(it);
+ } else {
+ ++ptr;
+ }
+ }
+ return (int)(end - str);
+}
+
+
+static int nsvg__parseMatrix(float* xform, const char* str)
+{
+ float t[6];
+ int na = 0;
+ int len = nsvg__parseTransformArgs(str, t, 6, &na);
+ if (na != 6) return len;
+ memcpy(xform, t, sizeof(float)*6);
+ return len;
+}
+
+static int nsvg__parseTranslate(float* xform, const char* str)
+{
+ float args[2];
+ float t[6];
+ int na = 0;
+ int len = nsvg__parseTransformArgs(str, args, 2, &na);
+ if (na == 1) args[1] = 0.0;
+
+ nsvg__xformSetTranslation(t, args[0], args[1]);
+ memcpy(xform, t, sizeof(float)*6);
+ return len;
+}
+
+static int nsvg__parseScale(float* xform, const char* str)
+{
+ float args[2];
+ int na = 0;
+ float t[6];
+ int len = nsvg__parseTransformArgs(str, args, 2, &na);
+ if (na == 1) args[1] = args[0];
+ nsvg__xformSetScale(t, args[0], args[1]);
+ memcpy(xform, t, sizeof(float)*6);
+ return len;
+}
+
+static int nsvg__parseSkewX(float* xform, const char* str)
+{
+ float args[1];
+ int na = 0;
+ float t[6];
+ int len = nsvg__parseTransformArgs(str, args, 1, &na);
+ nsvg__xformSetSkewX(t, args[0]/180.0f*NSVG_PI);
+ memcpy(xform, t, sizeof(float)*6);
+ return len;
+}
+
+static int nsvg__parseSkewY(float* xform, const char* str)
+{
+ float args[1];
+ int na = 0;
+ float t[6];
+ int len = nsvg__parseTransformArgs(str, args, 1, &na);
+ nsvg__xformSetSkewY(t, args[0]/180.0f*NSVG_PI);
+ memcpy(xform, t, sizeof(float)*6);
+ return len;
+}
+
+static int nsvg__parseRotate(float* xform, const char* str)
+{
+ float args[3];
+ int na = 0;
+ float m[6];
+ float t[6];
+ int len = nsvg__parseTransformArgs(str, args, 3, &na);
+ if (na == 1)
+ args[1] = args[2] = 0.0f;
+ nsvg__xformIdentity(m);
+
+ if (na > 1) {
+ nsvg__xformSetTranslation(t, -args[1], -args[2]);
+ nsvg__xformMultiply(m, t);
+ }
+
+ nsvg__xformSetRotation(t, args[0]/180.0f*NSVG_PI);
+ nsvg__xformMultiply(m, t);
+
+ if (na > 1) {
+ nsvg__xformSetTranslation(t, args[1], args[2]);
+ nsvg__xformMultiply(m, t);
+ }
+
+ memcpy(xform, m, sizeof(float)*6);
+
+ return len;
+}
+
+static void nsvg__parseTransform(float* xform, const char* str)
+{
+ float t[6];
+ nsvg__xformIdentity(xform);
+ while (*str)
+ {
+ if (strncmp(str, "matrix", 6) == 0)
+ str += nsvg__parseMatrix(t, str);
+ else if (strncmp(str, "translate", 9) == 0)
+ str += nsvg__parseTranslate(t, str);
+ else if (strncmp(str, "scale", 5) == 0)
+ str += nsvg__parseScale(t, str);
+ else if (strncmp(str, "rotate", 6) == 0)
+ str += nsvg__parseRotate(t, str);
+ else if (strncmp(str, "skewX", 5) == 0)
+ str += nsvg__parseSkewX(t, str);
+ else if (strncmp(str, "skewY", 5) == 0)
+ str += nsvg__parseSkewY(t, str);
+ else{
+ ++str;
+ continue;
+ }
+
+ nsvg__xformPremultiply(xform, t);
+ }
+}
+
+static void nsvg__parseUrl(char* id, const char* str)
+{
+ int i = 0;
+ str += 4; // "url(";
+ if (*str == '#')
+ str++;
+ while (i < 63 && *str != ')') {
+ id[i] = *str++;
+ i++;
+ }
+ id[i] = '\0';
+}
+
+static char nsvg__parseLineCap(const char* str)
+{
+ if (strcmp(str, "butt") == 0)
+ return NSVG_CAP_BUTT;
+ else if (strcmp(str, "round") == 0)
+ return NSVG_CAP_ROUND;
+ else if (strcmp(str, "square") == 0)
+ return NSVG_CAP_SQUARE;
+ // TODO: handle inherit.
+ return NSVG_CAP_BUTT;
+}
+
+static char nsvg__parseLineJoin(const char* str)
+{
+ if (strcmp(str, "miter") == 0)
+ return NSVG_JOIN_MITER;
+ else if (strcmp(str, "round") == 0)
+ return NSVG_JOIN_ROUND;
+ else if (strcmp(str, "bevel") == 0)
+ return NSVG_JOIN_BEVEL;
+ // TODO: handle inherit.
+ return NSVG_CAP_BUTT;
+}
+
+static char nsvg__parseFillRule(const char* str)
+{
+ if (strcmp(str, "nonzero") == 0)
+ return NSVG_FILLRULE_NONZERO;
+ else if (strcmp(str, "evenodd") == 0)
+ return NSVG_FILLRULE_EVENODD;
+ // TODO: handle inherit.
+ return NSVG_FILLRULE_NONZERO;
+}
+
+static const char* nsvg__getNextDashItem(const char* s, char* it)
+{
+ int n = 0;
+ it[0] = '\0';
+ // Skip white spaces and commas
+ while (*s && (nsvg__isspace(*s) || *s == ',')) s++;
+ // Advance until whitespace, comma or end.
+ while (*s && (!nsvg__isspace(*s) && *s != ',')) {
+ if (n < 63)
+ it[n++] = *s;
+ s++;
+ }
+ it[n++] = '\0';
+ return s;
+}
+
+static int nsvg__parseStrokeDashArray(NSVGparser* p, const char* str, float* strokeDashArray)
+{
+ char item[64];
+ int count = 0, i;
+ float sum = 0.0f;
+
+ // Handle "none"
+ if (str[0] == 'n')
+ return 0;
+
+ // Parse dashes
+ while (*str) {
+ str = nsvg__getNextDashItem(str, item);
+ if (!*item) break;
+ if (count < NSVG_MAX_DASHES)
+ strokeDashArray[count++] = fabsf(nsvg__parseCoordinate(p, item, 0.0f, nsvg__actualLength(p)));
+ }
+
+ for (i = 0; i < count; i++)
+ sum += strokeDashArray[i];
+ if (sum <= 1e-6f)
+ count = 0;
+
+ return count;
+}
+
+static void nsvg__parseStyle(NSVGparser* p, const char* str);
+
+static int nsvg__parseAttr(NSVGparser* p, const char* name, const char* value)
+{
+ float xform[6];
+ NSVGattrib* attr = nsvg__getAttr(p);
+ if (!attr) return 0;
+
+ if (strcmp(name, "style") == 0) {
+ nsvg__parseStyle(p, value);
+ } else if (strcmp(name, "display") == 0) {
+ if (strcmp(value, "none") == 0)
+ attr->visible = 0;
+ // Don't reset ->visible on display:inline, one display:none hides the whole subtree
+
+ } else if (strcmp(name, "fill") == 0) {
+ if (strcmp(value, "none") == 0) {
+ attr->hasFill = 0;
+ } else if (strncmp(value, "url(", 4) == 0) {
+ attr->hasFill = 2;
+ nsvg__parseUrl(attr->fillGradient, value);
+ } else {
+ attr->hasFill = 1;
+ attr->fillColor = nsvg__parseColor(value);
+ }
+ } else if (strcmp(name, "opacity") == 0) {
+ attr->opacity = nsvg__parseOpacity(value);
+ } else if (strcmp(name, "fill-opacity") == 0) {
+ attr->fillOpacity = nsvg__parseOpacity(value);
+ } else if (strcmp(name, "stroke") == 0) {
+ if (strcmp(value, "none") == 0) {
+ attr->hasStroke = 0;
+ } else if (strncmp(value, "url(", 4) == 0) {
+ attr->hasStroke = 2;
+ nsvg__parseUrl(attr->strokeGradient, value);
+ } else {
+ attr->hasStroke = 1;
+ attr->strokeColor = nsvg__parseColor(value);
+ }
+ } else if (strcmp(name, "stroke-width") == 0) {
+ attr->strokeWidth = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p));
+ } else if (strcmp(name, "stroke-dasharray") == 0) {
+ attr->strokeDashCount = nsvg__parseStrokeDashArray(p, value, attr->strokeDashArray);
+ } else if (strcmp(name, "stroke-dashoffset") == 0) {
+ attr->strokeDashOffset = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p));
+ } else if (strcmp(name, "stroke-opacity") == 0) {
+ attr->strokeOpacity = nsvg__parseOpacity(value);
+ } else if (strcmp(name, "stroke-linecap") == 0) {
+ attr->strokeLineCap = nsvg__parseLineCap(value);
+ } else if (strcmp(name, "stroke-linejoin") == 0) {
+ attr->strokeLineJoin = nsvg__parseLineJoin(value);
+ } else if (strcmp(name, "stroke-miterlimit") == 0) {
+ attr->miterLimit = nsvg__parseMiterLimit(value);
+ } else if (strcmp(name, "fill-rule") == 0) {
+ attr->fillRule = nsvg__parseFillRule(value);
+ } else if (strcmp(name, "font-size") == 0) {
+ attr->fontSize = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p));
+ } else if (strcmp(name, "transform") == 0) {
+ nsvg__parseTransform(xform, value);
+ nsvg__xformPremultiply(attr->xform, xform);
+ } else if (strcmp(name, "stop-color") == 0) {
+ attr->stopColor = nsvg__parseColor(value);
+ } else if (strcmp(name, "stop-opacity") == 0) {
+ attr->stopOpacity = nsvg__parseOpacity(value);
+ } else if (strcmp(name, "offset") == 0) {
+ attr->stopOffset = nsvg__parseCoordinate(p, value, 0.0f, 1.0f);
+ } else if (strcmp(name, "id") == 0) {
+ strncpy(attr->id, value, 63);
+ attr->id[63] = '\0';
+ } else {
+ return 0;
+ }
+ return 1;
+}
+
+static int nsvg__parseNameValue(NSVGparser* p, const char* start, const char* end)
+{
+ const char* str;
+ const char* val;
+ char name[512];
+ char value[512];
+ int n;
+
+ str = start;
+ while (str < end && *str != ':') ++str;
+
+ val = str;
+
+ // Right Trim
+ while (str > start && (*str == ':' || nsvg__isspace(*str))) --str;
+ ++str;
+
+ n = (int)(str - start);
+ if (n > 511) n = 511;
+ if (n) memcpy(name, start, n);
+ name[n] = 0;
+
+ while (val < end && (*val == ':' || nsvg__isspace(*val))) ++val;
+
+ n = (int)(end - val);
+ if (n > 511) n = 511;
+ if (n) memcpy(value, val, n);
+ value[n] = 0;
+
+ return nsvg__parseAttr(p, name, value);
+}
+
+static void nsvg__parseStyle(NSVGparser* p, const char* str)
+{
+ const char* start;
+ const char* end;
+
+ while (*str) {
+ // Left Trim
+ while(*str && nsvg__isspace(*str)) ++str;
+ start = str;
+ while(*str && *str != ';') ++str;
+ end = str;
+
+ // Right Trim
+ while (end > start && (*end == ';' || nsvg__isspace(*end))) --end;
+ ++end;
+
+ nsvg__parseNameValue(p, start, end);
+ if (*str) ++str;
+ }
+}
+
+static void nsvg__parseAttribs(NSVGparser* p, const char** attr)
+{
+ int i;
+ for (i = 0; attr[i]; i += 2)
+ {
+ if (strcmp(attr[i], "style") == 0)
+ nsvg__parseStyle(p, attr[i + 1]);
+ else
+ nsvg__parseAttr(p, attr[i], attr[i + 1]);
+ }
+}
+
+static int nsvg__getArgsPerElement(char cmd)
+{
+ switch (cmd) {
+ case 'v':
+ case 'V':
+ case 'h':
+ case 'H':
+ return 1;
+ case 'm':
+ case 'M':
+ case 'l':
+ case 'L':
+ case 't':
+ case 'T':
+ return 2;
+ case 'q':
+ case 'Q':
+ case 's':
+ case 'S':
+ return 4;
+ case 'c':
+ case 'C':
+ return 6;
+ case 'a':
+ case 'A':
+ return 7;
+ }
+ return 0;
+}
+
+static void nsvg__pathMoveTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel)
+{
+ if (rel) {
+ *cpx += args[0];
+ *cpy += args[1];
+ } else {
+ *cpx = args[0];
+ *cpy = args[1];
+ }
+ nsvg__moveTo(p, *cpx, *cpy);
+}
+
+static void nsvg__pathLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel)
+{
+ if (rel) {
+ *cpx += args[0];
+ *cpy += args[1];
+ } else {
+ *cpx = args[0];
+ *cpy = args[1];
+ }
+ nsvg__lineTo(p, *cpx, *cpy);
+}
+
+static void nsvg__pathHLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel)
+{
+ if (rel)
+ *cpx += args[0];
+ else
+ *cpx = args[0];
+ nsvg__lineTo(p, *cpx, *cpy);
+}
+
+static void nsvg__pathVLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel)
+{
+ if (rel)
+ *cpy += args[0];
+ else
+ *cpy = args[0];
+ nsvg__lineTo(p, *cpx, *cpy);
+}
+
+static void nsvg__pathCubicBezTo(NSVGparser* p, float* cpx, float* cpy,
+ float* cpx2, float* cpy2, float* args, int rel)
+{
+ float x2, y2, cx1, cy1, cx2, cy2;
+
+ if (rel) {
+ cx1 = *cpx + args[0];
+ cy1 = *cpy + args[1];
+ cx2 = *cpx + args[2];
+ cy2 = *cpy + args[3];
+ x2 = *cpx + args[4];
+ y2 = *cpy + args[5];
+ } else {
+ cx1 = args[0];
+ cy1 = args[1];
+ cx2 = args[2];
+ cy2 = args[3];
+ x2 = args[4];
+ y2 = args[5];
+ }
+
+ nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2);
+
+ *cpx2 = cx2;
+ *cpy2 = cy2;
+ *cpx = x2;
+ *cpy = y2;
+}
+
+static void nsvg__pathCubicBezShortTo(NSVGparser* p, float* cpx, float* cpy,
+ float* cpx2, float* cpy2, float* args, int rel)
+{
+ float x1, y1, x2, y2, cx1, cy1, cx2, cy2;
+
+ x1 = *cpx;
+ y1 = *cpy;
+ if (rel) {
+ cx2 = *cpx + args[0];
+ cy2 = *cpy + args[1];
+ x2 = *cpx + args[2];
+ y2 = *cpy + args[3];
+ } else {
+ cx2 = args[0];
+ cy2 = args[1];
+ x2 = args[2];
+ y2 = args[3];
+ }
+
+ cx1 = 2*x1 - *cpx2;
+ cy1 = 2*y1 - *cpy2;
+
+ nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2);
+
+ *cpx2 = cx2;
+ *cpy2 = cy2;
+ *cpx = x2;
+ *cpy = y2;
+}
+
+static void nsvg__pathQuadBezTo(NSVGparser* p, float* cpx, float* cpy,
+ float* cpx2, float* cpy2, float* args, int rel)
+{
+ float x1, y1, x2, y2, cx, cy;
+ float cx1, cy1, cx2, cy2;
+
+ x1 = *cpx;
+ y1 = *cpy;
+ if (rel) {
+ cx = *cpx + args[0];
+ cy = *cpy + args[1];
+ x2 = *cpx + args[2];
+ y2 = *cpy + args[3];
+ } else {
+ cx = args[0];
+ cy = args[1];
+ x2 = args[2];
+ y2 = args[3];
+ }
+
+ // Convert to cubic bezier
+ cx1 = x1 + 2.0f/3.0f*(cx - x1);
+ cy1 = y1 + 2.0f/3.0f*(cy - y1);
+ cx2 = x2 + 2.0f/3.0f*(cx - x2);
+ cy2 = y2 + 2.0f/3.0f*(cy - y2);
+
+ nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2);
+
+ *cpx2 = cx;
+ *cpy2 = cy;
+ *cpx = x2;
+ *cpy = y2;
+}
+
+static void nsvg__pathQuadBezShortTo(NSVGparser* p, float* cpx, float* cpy,
+ float* cpx2, float* cpy2, float* args, int rel)
+{
+ float x1, y1, x2, y2, cx, cy;
+ float cx1, cy1, cx2, cy2;
+
+ x1 = *cpx;
+ y1 = *cpy;
+ if (rel) {
+ x2 = *cpx + args[0];
+ y2 = *cpy + args[1];
+ } else {
+ x2 = args[0];
+ y2 = args[1];
+ }
+
+ cx = 2*x1 - *cpx2;
+ cy = 2*y1 - *cpy2;
+
+ // Convert to cubix bezier
+ cx1 = x1 + 2.0f/3.0f*(cx - x1);
+ cy1 = y1 + 2.0f/3.0f*(cy - y1);
+ cx2 = x2 + 2.0f/3.0f*(cx - x2);
+ cy2 = y2 + 2.0f/3.0f*(cy - y2);
+
+ nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2);
+
+ *cpx2 = cx;
+ *cpy2 = cy;
+ *cpx = x2;
+ *cpy = y2;
+}
+
+static float nsvg__sqr(float x) { return x*x; }
+static float nsvg__vmag(float x, float y) { return sqrtf(x*x + y*y); }
+
+static float nsvg__vecrat(float ux, float uy, float vx, float vy)
+{
+ return (ux*vx + uy*vy) / (nsvg__vmag(ux,uy) * nsvg__vmag(vx,vy));
+}
+
+static float nsvg__vecang(float ux, float uy, float vx, float vy)
+{
+ float r = nsvg__vecrat(ux,uy, vx,vy);
+ if (r < -1.0f) r = -1.0f;
+ if (r > 1.0f) r = 1.0f;
+ return ((ux*vy < uy*vx) ? -1.0f : 1.0f) * acosf(r);
+}
+
+static void nsvg__pathArcTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel)
+{
+ // Ported from canvg (https://code.google.com/p/canvg/)
+ float rx, ry, rotx;
+ float x1, y1, x2, y2, cx, cy, dx, dy, d;
+ float x1p, y1p, cxp, cyp, s, sa, sb;
+ float ux, uy, vx, vy, a1, da;
+ float x, y, tanx, tany, a, px = 0, py = 0, ptanx = 0, ptany = 0, t[6];
+ float sinrx, cosrx;
+ int fa, fs;
+ int i, ndivs;
+ float hda, kappa;
+
+ rx = fabsf(args[0]); // y radius
+ ry = fabsf(args[1]); // x radius
+ rotx = args[2] / 180.0f * NSVG_PI; // x rotation angle
+ fa = fabsf(args[3]) > 1e-6 ? 1 : 0; // Large arc
+ fs = fabsf(args[4]) > 1e-6 ? 1 : 0; // Sweep direction
+ x1 = *cpx; // start point
+ y1 = *cpy;
+ if (rel) { // end point
+ x2 = *cpx + args[5];
+ y2 = *cpy + args[6];
+ } else {
+ x2 = args[5];
+ y2 = args[6];
+ }
+
+ dx = x1 - x2;
+ dy = y1 - y2;
+ d = sqrtf(dx*dx + dy*dy);
+ if (d < 1e-6f || rx < 1e-6f || ry < 1e-6f) {
+ // The arc degenerates to a line
+ nsvg__lineTo(p, x2, y2);
+ *cpx = x2;
+ *cpy = y2;
+ return;
+ }
+
+ sinrx = sinf(rotx);
+ cosrx = cosf(rotx);
+
+ // Convert to center point parameterization.
+ // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
+ // 1) Compute x1', y1'
+ x1p = cosrx * dx / 2.0f + sinrx * dy / 2.0f;
+ y1p = -sinrx * dx / 2.0f + cosrx * dy / 2.0f;
+ d = nsvg__sqr(x1p)/nsvg__sqr(rx) + nsvg__sqr(y1p)/nsvg__sqr(ry);
+ if (d > 1) {
+ d = sqrtf(d);
+ rx *= d;
+ ry *= d;
+ }
+ // 2) Compute cx', cy'
+ s = 0.0f;
+ sa = nsvg__sqr(rx)*nsvg__sqr(ry) - nsvg__sqr(rx)*nsvg__sqr(y1p) - nsvg__sqr(ry)*nsvg__sqr(x1p);
+ sb = nsvg__sqr(rx)*nsvg__sqr(y1p) + nsvg__sqr(ry)*nsvg__sqr(x1p);
+ if (sa < 0.0f) sa = 0.0f;
+ if (sb > 0.0f)
+ s = sqrtf(sa / sb);
+ if (fa == fs)
+ s = -s;
+ cxp = s * rx * y1p / ry;
+ cyp = s * -ry * x1p / rx;
+
+ // 3) Compute cx,cy from cx',cy'
+ cx = (x1 + x2)/2.0f + cosrx*cxp - sinrx*cyp;
+ cy = (y1 + y2)/2.0f + sinrx*cxp + cosrx*cyp;
+
+ // 4) Calculate theta1, and delta theta.
+ ux = (x1p - cxp) / rx;
+ uy = (y1p - cyp) / ry;
+ vx = (-x1p - cxp) / rx;
+ vy = (-y1p - cyp) / ry;
+ a1 = nsvg__vecang(1.0f,0.0f, ux,uy); // Initial angle
+ da = nsvg__vecang(ux,uy, vx,vy); // Delta angle
+
+// if (vecrat(ux,uy,vx,vy) <= -1.0f) da = NSVG_PI;
+// if (vecrat(ux,uy,vx,vy) >= 1.0f) da = 0;
+
+ if (fs == 0 && da > 0)
+ da -= 2 * NSVG_PI;
+ else if (fs == 1 && da < 0)
+ da += 2 * NSVG_PI;
+
+ // Approximate the arc using cubic spline segments.
+ t[0] = cosrx; t[1] = sinrx;
+ t[2] = -sinrx; t[3] = cosrx;
+ t[4] = cx; t[5] = cy;
+
+ // Split arc into max 90 degree segments.
+ // The loop assumes an iteration per end point (including start and end), this +1.
+ ndivs = (int)(fabsf(da) / (NSVG_PI*0.5f) + 1.0f);
+ hda = (da / (float)ndivs) / 2.0f;
+ kappa = fabsf(4.0f / 3.0f * (1.0f - cosf(hda)) / sinf(hda));
+ if (da < 0.0f)
+ kappa = -kappa;
+
+ for (i = 0; i <= ndivs; i++) {
+ a = a1 + da * ((float)i/(float)ndivs);
+ dx = cosf(a);
+ dy = sinf(a);
+ nsvg__xformPoint(&x, &y, dx*rx, dy*ry, t); // position
+ nsvg__xformVec(&tanx, &tany, -dy*rx * kappa, dx*ry * kappa, t); // tangent
+ if (i > 0)
+ nsvg__cubicBezTo(p, px+ptanx,py+ptany, x-tanx, y-tany, x, y);
+ px = x;
+ py = y;
+ ptanx = tanx;
+ ptany = tany;
+ }
+
+ *cpx = x2;
+ *cpy = y2;
+}
+
+static void nsvg__parsePath(NSVGparser* p, const char** attr)
+{
+ const char* s = NULL;
+ char cmd = '\0';
+ float args[10];
+ int nargs;
+ int rargs = 0;
+ float cpx, cpy, cpx2, cpy2;
+ const char* tmp[4];
+ char closedFlag;
+ int i;
+ char item[64];
+
+ for (i = 0; attr[i]; i += 2) {
+ if (strcmp(attr[i], "d") == 0) {
+ s = attr[i + 1];
+ } else {
+ tmp[0] = attr[i];
+ tmp[1] = attr[i + 1];
+ tmp[2] = 0;
+ tmp[3] = 0;
+ nsvg__parseAttribs(p, tmp);
+ }
+ }
+
+ if (s) {
+ nsvg__resetPath(p);
+ cpx = 0; cpy = 0;
+ cpx2 = 0; cpy2 = 0;
+ closedFlag = 0;
+ nargs = 0;
+
+ while (*s) {
+ s = nsvg__getNextPathItem(s, item);
+ if (!*item) break;
+ if (nsvg__isnum(item[0])) {
+ if (nargs < 10)
+ args[nargs++] = (float)nsvg__atof(item);
+ if (nargs >= rargs) {
+ switch (cmd) {
+ case 'm':
+ case 'M':
+ nsvg__pathMoveTo(p, &cpx, &cpy, args, cmd == 'm' ? 1 : 0);
+ // Moveto can be followed by multiple coordinate pairs,
+ // which should be treated as linetos.
+ cmd = (cmd == 'm') ? 'l' : 'L';
+ rargs = nsvg__getArgsPerElement(cmd);
+ cpx2 = cpx; cpy2 = cpy;
+ break;
+ case 'l':
+ case 'L':
+ nsvg__pathLineTo(p, &cpx, &cpy, args, cmd == 'l' ? 1 : 0);
+ cpx2 = cpx; cpy2 = cpy;
+ break;
+ case 'H':
+ case 'h':
+ nsvg__pathHLineTo(p, &cpx, &cpy, args, cmd == 'h' ? 1 : 0);
+ cpx2 = cpx; cpy2 = cpy;
+ break;
+ case 'V':
+ case 'v':
+ nsvg__pathVLineTo(p, &cpx, &cpy, args, cmd == 'v' ? 1 : 0);
+ cpx2 = cpx; cpy2 = cpy;
+ break;
+ case 'C':
+ case 'c':
+ nsvg__pathCubicBezTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 'c' ? 1 : 0);
+ break;
+ case 'S':
+ case 's':
+ nsvg__pathCubicBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 's' ? 1 : 0);
+ break;
+ case 'Q':
+ case 'q':
+ nsvg__pathQuadBezTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 'q' ? 1 : 0);
+ break;
+ case 'T':
+ case 't':
+ nsvg__pathQuadBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 't' ? 1 : 0);
+ break;
+ case 'A':
+ case 'a':
+ nsvg__pathArcTo(p, &cpx, &cpy, args, cmd == 'a' ? 1 : 0);
+ cpx2 = cpx; cpy2 = cpy;
+ break;
+ default:
+ if (nargs >= 2) {
+ cpx = args[nargs-2];
+ cpy = args[nargs-1];
+ cpx2 = cpx; cpy2 = cpy;
+ }
+ break;
+ }
+ nargs = 0;
+ }
+ } else {
+ cmd = item[0];
+ rargs = nsvg__getArgsPerElement(cmd);
+ if (cmd == 'M' || cmd == 'm') {
+ // Commit path.
+ if (p->npts > 0)
+ nsvg__addPath(p, closedFlag);
+ // Start new subpath.
+ nsvg__resetPath(p);
+ closedFlag = 0;
+ nargs = 0;
+ } else if (cmd == 'Z' || cmd == 'z') {
+ closedFlag = 1;
+ // Commit path.
+ if (p->npts > 0) {
+ // Move current point to first point
+ cpx = p->pts[0];
+ cpy = p->pts[1];
+ cpx2 = cpx; cpy2 = cpy;
+ nsvg__addPath(p, closedFlag);
+ }
+ // Start new subpath.
+ nsvg__resetPath(p);
+ nsvg__moveTo(p, cpx, cpy);
+ closedFlag = 0;
+ nargs = 0;
+ }
+ }
+ }
+ // Commit path.
+ if (p->npts)
+ nsvg__addPath(p, closedFlag);
+ }
+
+ nsvg__addShape(p);
+}
+
+static void nsvg__parseRect(NSVGparser* p, const char** attr)
+{
+ float x = 0.0f;
+ float y = 0.0f;
+ float w = 0.0f;
+ float h = 0.0f;
+ float rx = -1.0f; // marks not set
+ float ry = -1.0f;
+ int i;
+
+ for (i = 0; attr[i]; i += 2) {
+ if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
+ if (strcmp(attr[i], "x") == 0) x = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p));
+ if (strcmp(attr[i], "y") == 0) y = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p));
+ if (strcmp(attr[i], "width") == 0) w = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p));
+ if (strcmp(attr[i], "height") == 0) h = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p));
+ if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p)));
+ if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p)));
+ }
+ }
+
+ if (rx < 0.0f && ry > 0.0f) rx = ry;
+ if (ry < 0.0f && rx > 0.0f) ry = rx;
+ if (rx < 0.0f) rx = 0.0f;
+ if (ry < 0.0f) ry = 0.0f;
+ if (rx > w/2.0f) rx = w/2.0f;
+ if (ry > h/2.0f) ry = h/2.0f;
+
+ if (w != 0.0f && h != 0.0f) {
+ nsvg__resetPath(p);
+
+ if (rx < 0.00001f || ry < 0.0001f) {
+ nsvg__moveTo(p, x, y);
+ nsvg__lineTo(p, x+w, y);
+ nsvg__lineTo(p, x+w, y+h);
+ nsvg__lineTo(p, x, y+h);
+ } else {
+ // Rounded rectangle
+ nsvg__moveTo(p, x+rx, y);
+ nsvg__lineTo(p, x+w-rx, y);
+ nsvg__cubicBezTo(p, x+w-rx*(1-NSVG_KAPPA90), y, x+w, y+ry*(1-NSVG_KAPPA90), x+w, y+ry);
+ nsvg__lineTo(p, x+w, y+h-ry);
+ nsvg__cubicBezTo(p, x+w, y+h-ry*(1-NSVG_KAPPA90), x+w-rx*(1-NSVG_KAPPA90), y+h, x+w-rx, y+h);
+ nsvg__lineTo(p, x+rx, y+h);
+ nsvg__cubicBezTo(p, x+rx*(1-NSVG_KAPPA90), y+h, x, y+h-ry*(1-NSVG_KAPPA90), x, y+h-ry);
+ nsvg__lineTo(p, x, y+ry);
+ nsvg__cubicBezTo(p, x, y+ry*(1-NSVG_KAPPA90), x+rx*(1-NSVG_KAPPA90), y, x+rx, y);
+ }
+
+ nsvg__addPath(p, 1);
+
+ nsvg__addShape(p);
+ }
+}
+
+static void nsvg__parseCircle(NSVGparser* p, const char** attr)
+{
+ float cx = 0.0f;
+ float cy = 0.0f;
+ float r = 0.0f;
+ int i;
+
+ for (i = 0; attr[i]; i += 2) {
+ if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
+ if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p));
+ if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p));
+ if (strcmp(attr[i], "r") == 0) r = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualLength(p)));
+ }
+ }
+
+ if (r > 0.0f) {
+ nsvg__resetPath(p);
+
+ nsvg__moveTo(p, cx+r, cy);
+ nsvg__cubicBezTo(p, cx+r, cy+r*NSVG_KAPPA90, cx+r*NSVG_KAPPA90, cy+r, cx, cy+r);
+ nsvg__cubicBezTo(p, cx-r*NSVG_KAPPA90, cy+r, cx-r, cy+r*NSVG_KAPPA90, cx-r, cy);
+ nsvg__cubicBezTo(p, cx-r, cy-r*NSVG_KAPPA90, cx-r*NSVG_KAPPA90, cy-r, cx, cy-r);
+ nsvg__cubicBezTo(p, cx+r*NSVG_KAPPA90, cy-r, cx+r, cy-r*NSVG_KAPPA90, cx+r, cy);
+
+ nsvg__addPath(p, 1);
+
+ nsvg__addShape(p);
+ }
+}
+
+static void nsvg__parseEllipse(NSVGparser* p, const char** attr)
+{
+ float cx = 0.0f;
+ float cy = 0.0f;
+ float rx = 0.0f;
+ float ry = 0.0f;
+ int i;
+
+ for (i = 0; attr[i]; i += 2) {
+ if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
+ if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p));
+ if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p));
+ if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p)));
+ if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p)));
+ }
+ }
+
+ if (rx > 0.0f && ry > 0.0f) {
+
+ nsvg__resetPath(p);
+
+ nsvg__moveTo(p, cx+rx, cy);
+ nsvg__cubicBezTo(p, cx+rx, cy+ry*NSVG_KAPPA90, cx+rx*NSVG_KAPPA90, cy+ry, cx, cy+ry);
+ nsvg__cubicBezTo(p, cx-rx*NSVG_KAPPA90, cy+ry, cx-rx, cy+ry*NSVG_KAPPA90, cx-rx, cy);
+ nsvg__cubicBezTo(p, cx-rx, cy-ry*NSVG_KAPPA90, cx-rx*NSVG_KAPPA90, cy-ry, cx, cy-ry);
+ nsvg__cubicBezTo(p, cx+rx*NSVG_KAPPA90, cy-ry, cx+rx, cy-ry*NSVG_KAPPA90, cx+rx, cy);
+
+ nsvg__addPath(p, 1);
+
+ nsvg__addShape(p);
+ }
+}
+
+static void nsvg__parseLine(NSVGparser* p, const char** attr)
+{
+ float x1 = 0.0;
+ float y1 = 0.0;
+ float x2 = 0.0;
+ float y2 = 0.0;
+ int i;
+
+ for (i = 0; attr[i]; i += 2) {
+ if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
+ if (strcmp(attr[i], "x1") == 0) x1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p));
+ if (strcmp(attr[i], "y1") == 0) y1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p));
+ if (strcmp(attr[i], "x2") == 0) x2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p));
+ if (strcmp(attr[i], "y2") == 0) y2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p));
+ }
+ }
+
+ nsvg__resetPath(p);
+
+ nsvg__moveTo(p, x1, y1);
+ nsvg__lineTo(p, x2, y2);
+
+ nsvg__addPath(p, 0);
+
+ nsvg__addShape(p);
+}
+
+static void nsvg__parsePoly(NSVGparser* p, const char** attr, int closeFlag)
+{
+ int i;
+ const char* s;
+ float args[2];
+ int nargs, npts = 0;
+ char item[64];
+
+ nsvg__resetPath(p);
+
+ for (i = 0; attr[i]; i += 2) {
+ if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
+ if (strcmp(attr[i], "points") == 0) {
+ s = attr[i + 1];
+ nargs = 0;
+ while (*s) {
+ s = nsvg__getNextPathItem(s, item);
+ args[nargs++] = (float)nsvg__atof(item);
+ if (nargs >= 2) {
+ if (npts == 0)
+ nsvg__moveTo(p, args[0], args[1]);
+ else
+ nsvg__lineTo(p, args[0], args[1]);
+ nargs = 0;
+ npts++;
+ }
+ }
+ }
+ }
+ }
+
+ nsvg__addPath(p, (char)closeFlag);
+
+ nsvg__addShape(p);
+}
+
+static void nsvg__parseSVG(NSVGparser* p, const char** attr)
+{
+ int i;
+ for (i = 0; attr[i]; i += 2) {
+ if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
+ if (strcmp(attr[i], "width") == 0) {
+ p->image->width = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 1.0f);
+ } else if (strcmp(attr[i], "height") == 0) {
+ p->image->height = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 1.0f);
+ } else if (strcmp(attr[i], "viewBox") == 0) {
+ sscanf(attr[i + 1], "%f%*[%%, \t]%f%*[%%, \t]%f%*[%%, \t]%f", &p->viewMinx, &p->viewMiny, &p->viewWidth, &p->viewHeight);
+ } else if (strcmp(attr[i], "preserveAspectRatio") == 0) {
+ if (strstr(attr[i + 1], "none") != 0) {
+ // No uniform scaling
+ p->alignType = NSVG_ALIGN_NONE;
+ } else {
+ // Parse X align
+ if (strstr(attr[i + 1], "xMin") != 0)
+ p->alignX = NSVG_ALIGN_MIN;
+ else if (strstr(attr[i + 1], "xMid") != 0)
+ p->alignX = NSVG_ALIGN_MID;
+ else if (strstr(attr[i + 1], "xMax") != 0)
+ p->alignX = NSVG_ALIGN_MAX;
+ // Parse X align
+ if (strstr(attr[i + 1], "yMin") != 0)
+ p->alignY = NSVG_ALIGN_MIN;
+ else if (strstr(attr[i + 1], "yMid") != 0)
+ p->alignY = NSVG_ALIGN_MID;
+ else if (strstr(attr[i + 1], "yMax") != 0)
+ p->alignY = NSVG_ALIGN_MAX;
+ // Parse meet/slice
+ p->alignType = NSVG_ALIGN_MEET;
+ if (strstr(attr[i + 1], "slice") != 0)
+ p->alignType = NSVG_ALIGN_SLICE;
+ }
+ }
+ }
+ }
+}
+
+static void nsvg__parseGradient(NSVGparser* p, const char** attr, char type)
+{
+ int i;
+ NSVGgradientData* grad = (NSVGgradientData*)malloc(sizeof(NSVGgradientData));
+ if (grad == NULL) return;
+ memset(grad, 0, sizeof(NSVGgradientData));
+ grad->units = NSVG_OBJECT_SPACE;
+ grad->type = type;
+ if (grad->type == NSVG_PAINT_LINEAR_GRADIENT) {
+ grad->linear.x1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT);
+ grad->linear.y1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT);
+ grad->linear.x2 = nsvg__coord(100.0f, NSVG_UNITS_PERCENT);
+ grad->linear.y2 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT);
+ } else if (grad->type == NSVG_PAINT_RADIAL_GRADIENT) {
+ grad->radial.cx = nsvg__coord(50.0f, NSVG_UNITS_PERCENT);
+ grad->radial.cy = nsvg__coord(50.0f, NSVG_UNITS_PERCENT);
+ grad->radial.r = nsvg__coord(50.0f, NSVG_UNITS_PERCENT);
+ }
+
+ nsvg__xformIdentity(grad->xform);
+
+ for (i = 0; attr[i]; i += 2) {
+ if (strcmp(attr[i], "id") == 0) {
+ strncpy(grad->id, attr[i+1], 63);
+ grad->id[63] = '\0';
+ } else if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
+ if (strcmp(attr[i], "gradientUnits") == 0) {
+ if (strcmp(attr[i+1], "objectBoundingBox") == 0)
+ grad->units = NSVG_OBJECT_SPACE;
+ else
+ grad->units = NSVG_USER_SPACE;
+ } else if (strcmp(attr[i], "gradientTransform") == 0) {
+ nsvg__parseTransform(grad->xform, attr[i + 1]);
+ } else if (strcmp(attr[i], "cx") == 0) {
+ grad->radial.cx = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "cy") == 0) {
+ grad->radial.cy = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "r") == 0) {
+ grad->radial.r = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "fx") == 0) {
+ grad->radial.fx = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "fy") == 0) {
+ grad->radial.fy = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "x1") == 0) {
+ grad->linear.x1 = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "y1") == 0) {
+ grad->linear.y1 = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "x2") == 0) {
+ grad->linear.x2 = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "y2") == 0) {
+ grad->linear.y2 = nsvg__parseCoordinateRaw(attr[i + 1]);
+ } else if (strcmp(attr[i], "spreadMethod") == 0) {
+ if (strcmp(attr[i+1], "pad") == 0)
+ grad->spread = NSVG_SPREAD_PAD;
+ else if (strcmp(attr[i+1], "reflect") == 0)
+ grad->spread = NSVG_SPREAD_REFLECT;
+ else if (strcmp(attr[i+1], "repeat") == 0)
+ grad->spread = NSVG_SPREAD_REPEAT;
+ } else if (strcmp(attr[i], "xlink:href") == 0) {
+ const char *href = attr[i+1];
+ strncpy(grad->ref, href+1, 62);
+ grad->ref[62] = '\0';
+ }
+ }
+ }
+
+ grad->next = p->gradients;
+ p->gradients = grad;
+}
+
+static void nsvg__parseGradientStop(NSVGparser* p, const char** attr)
+{
+ NSVGattrib* curAttr = nsvg__getAttr(p);
+ NSVGgradientData* grad;
+ NSVGgradientStop* stop;
+ int i, idx;
+
+ curAttr->stopOffset = 0;
+ curAttr->stopColor = 0;
+ curAttr->stopOpacity = 1.0f;
+
+ for (i = 0; attr[i]; i += 2) {
+ nsvg__parseAttr(p, attr[i], attr[i + 1]);
+ }
+
+ // Add stop to the last gradient.
+ grad = p->gradients;
+ if (grad == NULL) return;
+
+ grad->nstops++;
+ grad->stops = (NSVGgradientStop*)realloc(grad->stops, sizeof(NSVGgradientStop)*grad->nstops);
+ if (grad->stops == NULL) return;
+
+ // Insert
+ idx = grad->nstops-1;
+ for (i = 0; i < grad->nstops-1; i++) {
+ if (curAttr->stopOffset < grad->stops[i].offset) {
+ idx = i;
+ break;
+ }
+ }
+ if (idx != grad->nstops-1) {
+ for (i = grad->nstops-1; i > idx; i--)
+ grad->stops[i] = grad->stops[i-1];
+ }
+
+ stop = &grad->stops[idx];
+ stop->color = curAttr->stopColor;
+ stop->color |= (unsigned int)(curAttr->stopOpacity*255) << 24;
+ stop->offset = curAttr->stopOffset;
+}
+
+static void nsvg__startElement(void* ud, const char* el, const char** attr)
+{
+ NSVGparser* p = (NSVGparser*)ud;
+
+ if (p->defsFlag) {
+ // Skip everything but gradients in defs
+ if (strcmp(el, "linearGradient") == 0) {
+ nsvg__parseGradient(p, attr, NSVG_PAINT_LINEAR_GRADIENT);
+ } else if (strcmp(el, "radialGradient") == 0) {
+ nsvg__parseGradient(p, attr, NSVG_PAINT_RADIAL_GRADIENT);
+ } else if (strcmp(el, "stop") == 0) {
+ nsvg__parseGradientStop(p, attr);
+ }
+ return;
+ }
+
+ if (strcmp(el, "g") == 0) {
+ nsvg__pushAttr(p);
+ nsvg__parseAttribs(p, attr);
+ } else if (strcmp(el, "path") == 0) {
+ if (p->pathFlag) // Do not allow nested paths.
+ return;
+ nsvg__pushAttr(p);
+ nsvg__parsePath(p, attr);
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "rect") == 0) {
+ nsvg__pushAttr(p);
+ nsvg__parseRect(p, attr);
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "circle") == 0) {
+ nsvg__pushAttr(p);
+ nsvg__parseCircle(p, attr);
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "ellipse") == 0) {
+ nsvg__pushAttr(p);
+ nsvg__parseEllipse(p, attr);
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "line") == 0) {
+ nsvg__pushAttr(p);
+ nsvg__parseLine(p, attr);
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "polyline") == 0) {
+ nsvg__pushAttr(p);
+ nsvg__parsePoly(p, attr, 0);
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "polygon") == 0) {
+ nsvg__pushAttr(p);
+ nsvg__parsePoly(p, attr, 1);
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "linearGradient") == 0) {
+ nsvg__parseGradient(p, attr, NSVG_PAINT_LINEAR_GRADIENT);
+ } else if (strcmp(el, "radialGradient") == 0) {
+ nsvg__parseGradient(p, attr, NSVG_PAINT_RADIAL_GRADIENT);
+ } else if (strcmp(el, "stop") == 0) {
+ nsvg__parseGradientStop(p, attr);
+ } else if (strcmp(el, "defs") == 0) {
+ p->defsFlag = 1;
+ } else if (strcmp(el, "svg") == 0) {
+ nsvg__parseSVG(p, attr);
+ }
+}
+
+static void nsvg__endElement(void* ud, const char* el)
+{
+ NSVGparser* p = (NSVGparser*)ud;
+
+ if (strcmp(el, "g") == 0) {
+ nsvg__popAttr(p);
+ } else if (strcmp(el, "path") == 0) {
+ p->pathFlag = 0;
+ } else if (strcmp(el, "defs") == 0) {
+ p->defsFlag = 0;
+ }
+}
+
+static void nsvg__content(void* ud, const char* s)
+{
+ NSVG_NOTUSED(ud);
+ NSVG_NOTUSED(s);
+ // empty
+}
+
+static void nsvg__imageBounds(NSVGparser* p, float* bounds)
+{
+ NSVGshape* shape;
+ shape = p->image->shapes;
+ if (shape == NULL) {
+ bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0;
+ return;
+ }
+ bounds[0] = shape->bounds[0];
+ bounds[1] = shape->bounds[1];
+ bounds[2] = shape->bounds[2];
+ bounds[3] = shape->bounds[3];
+ for (shape = shape->next; shape != NULL; shape = shape->next) {
+ bounds[0] = nsvg__minf(bounds[0], shape->bounds[0]);
+ bounds[1] = nsvg__minf(bounds[1], shape->bounds[1]);
+ bounds[2] = nsvg__maxf(bounds[2], shape->bounds[2]);
+ bounds[3] = nsvg__maxf(bounds[3], shape->bounds[3]);
+ }
+}
+
+static float nsvg__viewAlign(float content, float container, int type)
+{
+ if (type == NSVG_ALIGN_MIN)
+ return 0;
+ else if (type == NSVG_ALIGN_MAX)
+ return container - content;
+ // mid
+ return (container - content) * 0.5f;
+}
+
+static void nsvg__scaleGradient(NSVGgradient* grad, float tx, float ty, float sx, float sy)
+{
+ float t[6];
+ nsvg__xformSetTranslation(t, tx, ty);
+ nsvg__xformMultiply (grad->xform, t);
+
+ nsvg__xformSetScale(t, sx, sy);
+ nsvg__xformMultiply (grad->xform, t);
+}
+
+static void nsvg__scaleToViewbox(NSVGparser* p, const char* units)
+{
+ NSVGshape* shape;
+ NSVGpath* path;
+ float tx, ty, sx, sy, us, bounds[4], t[6], avgs;
+ int i;
+ float* pt;
+
+ // Guess image size if not set completely.
+ nsvg__imageBounds(p, bounds);
+
+ if (p->viewWidth == 0) {
+ if (p->image->width > 0) {
+ p->viewWidth = p->image->width;
+ } else {
+ p->viewMinx = bounds[0];
+ p->viewWidth = bounds[2] - bounds[0];
+ }
+ }
+ if (p->viewHeight == 0) {
+ if (p->image->height > 0) {
+ p->viewHeight = p->image->height;
+ } else {
+ p->viewMiny = bounds[1];
+ p->viewHeight = bounds[3] - bounds[1];
+ }
+ }
+ if (p->image->width == 0)
+ p->image->width = p->viewWidth;
+ if (p->image->height == 0)
+ p->image->height = p->viewHeight;
+
+ tx = -p->viewMinx;
+ ty = -p->viewMiny;
+ sx = p->viewWidth > 0 ? p->image->width / p->viewWidth : 0;
+ sy = p->viewHeight > 0 ? p->image->height / p->viewHeight : 0;
+ // Unit scaling
+ us = 1.0f / nsvg__convertToPixels(p, nsvg__coord(1.0f, nsvg__parseUnits(units)), 0.0f, 1.0f);
+
+ // Fix aspect ratio
+ if (p->alignType == NSVG_ALIGN_MEET) {
+ // fit whole image into viewbox
+ sx = sy = nsvg__minf(sx, sy);
+ tx += nsvg__viewAlign(p->viewWidth*sx, p->image->width, p->alignX) / sx;
+ ty += nsvg__viewAlign(p->viewHeight*sy, p->image->height, p->alignY) / sy;
+ } else if (p->alignType == NSVG_ALIGN_SLICE) {
+ // fill whole viewbox with image
+ sx = sy = nsvg__maxf(sx, sy);
+ tx += nsvg__viewAlign(p->viewWidth*sx, p->image->width, p->alignX) / sx;
+ ty += nsvg__viewAlign(p->viewHeight*sy, p->image->height, p->alignY) / sy;
+ }
+
+ // Transform
+ sx *= us;
+ sy *= us;
+ avgs = (sx+sy) / 2.0f;
+ for (shape = p->image->shapes; shape != NULL; shape = shape->next) {
+ shape->bounds[0] = (shape->bounds[0] + tx) * sx;
+ shape->bounds[1] = (shape->bounds[1] + ty) * sy;
+ shape->bounds[2] = (shape->bounds[2] + tx) * sx;
+ shape->bounds[3] = (shape->bounds[3] + ty) * sy;
+ for (path = shape->paths; path != NULL; path = path->next) {
+ path->bounds[0] = (path->bounds[0] + tx) * sx;
+ path->bounds[1] = (path->bounds[1] + ty) * sy;
+ path->bounds[2] = (path->bounds[2] + tx) * sx;
+ path->bounds[3] = (path->bounds[3] + ty) * sy;
+ for (i =0; i < path->npts; i++) {
+ pt = &path->pts[i*2];
+ pt[0] = (pt[0] + tx) * sx;
+ pt[1] = (pt[1] + ty) * sy;
+ }
+ }
+
+ if (shape->fill.type == NSVG_PAINT_LINEAR_GRADIENT || shape->fill.type == NSVG_PAINT_RADIAL_GRADIENT) {
+ nsvg__scaleGradient(shape->fill.gradient, tx,ty, sx,sy);
+ memcpy(t, shape->fill.gradient->xform, sizeof(float)*6);
+ nsvg__xformInverse(shape->fill.gradient->xform, t);
+ }
+ if (shape->stroke.type == NSVG_PAINT_LINEAR_GRADIENT || shape->stroke.type == NSVG_PAINT_RADIAL_GRADIENT) {
+ nsvg__scaleGradient(shape->stroke.gradient, tx,ty, sx,sy);
+ memcpy(t, shape->stroke.gradient->xform, sizeof(float)*6);
+ nsvg__xformInverse(shape->stroke.gradient->xform, t);
+ }
+
+ shape->strokeWidth *= avgs;
+ shape->strokeDashOffset *= avgs;
+ for (i = 0; i < shape->strokeDashCount; i++)
+ shape->strokeDashArray[i] *= avgs;
+ }
+}
+
+NSVGimage* nsvgParse(char* input, const char* units, float dpi)
+{
+ NSVGparser* p;
+ NSVGimage* ret = 0;
+
+ p = nsvg__createParser();
+ if (p == NULL) {
+ return NULL;
+ }
+ p->dpi = dpi;
+
+ nsvg__parseXML(input, nsvg__startElement, nsvg__endElement, nsvg__content, p);
+
+ // Scale to viewBox
+ nsvg__scaleToViewbox(p, units);
+
+ ret = p->image;
+ p->image = NULL;
+
+ nsvg__deleteParser(p);
+
+ return ret;
+}
+
+NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi)
+{
+ FILE* fp = NULL;
+ size_t size;
+ char* data = NULL;
+ NSVGimage* image = NULL;
+
+ fp = fopen(filename, "rb");
+ if (!fp) goto error;
+ fseek(fp, 0, SEEK_END);
+ size = ftell(fp);
+ fseek(fp, 0, SEEK_SET);
+ data = (char*)malloc(size+1);
+ if (data == NULL) goto error;
+ if (fread(data, 1, size, fp) != size) goto error;
+ data[size] = '\0'; // Must be null terminated.
+ fclose(fp);
+ image = nsvgParse(data, units, dpi);
+ free(data);
+
+ return image;
+
+error:
+ if (fp) fclose(fp);
+ if (data) free(data);
+ if (image) nsvgDelete(image);
+ return NULL;
+}
+
+void nsvgDelete(NSVGimage* image)
+{
+ NSVGshape *snext, *shape;
+ if (image == NULL) return;
+ shape = image->shapes;
+ while (shape != NULL) {
+ snext = shape->next;
+ nsvg__deletePaths(shape->paths);
+ nsvg__deletePaint(&shape->fill);
+ nsvg__deletePaint(&shape->stroke);
+ free(shape);
+ shape = snext;
+ }
+ free(image);
+}
+
+#endif
diff --git a/thirdparty/nanosvg/nanosvgrast.h b/thirdparty/nanosvg/nanosvgrast.h
new file mode 100644
index 0000000000..2940c1f916
--- /dev/null
+++ b/thirdparty/nanosvg/nanosvgrast.h
@@ -0,0 +1,1447 @@
+/*
+ * Copyright (c) 2013-14 Mikko Mononen memon@inside.org
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * The polygon rasterization is heavily based on stb_truetype rasterizer
+ * by Sean Barrett - http://nothings.org/
+ *
+ */
+
+#ifndef NANOSVGRAST_H
+#define NANOSVGRAST_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct NSVGrasterizer NSVGrasterizer;
+
+/* Example Usage:
+ // Load SVG
+ struct SNVGImage* image = nsvgParseFromFile("test.svg.");
+
+ // Create rasterizer (can be used to render multiple images).
+ struct NSVGrasterizer* rast = nsvgCreateRasterizer();
+ // Allocate memory for image
+ unsigned char* img = malloc(w*h*4);
+ // Rasterize
+ nsvgRasterize(rast, image, 0,0,1, img, w, h, w*4);
+*/
+
+// Allocated rasterizer context.
+NSVGrasterizer* nsvgCreateRasterizer();
+
+// Rasterizes SVG image, returns RGBA image (non-premultiplied alpha)
+// r - pointer to rasterizer context
+// image - pointer to image to rasterize
+// tx,ty - image offset (applied after scaling)
+// scale - image scale
+// dst - pointer to destination image data, 4 bytes per pixel (RGBA)
+// w - width of the image to render
+// h - height of the image to render
+// stride - number of bytes per scaleline in the destination buffer
+void nsvgRasterize(NSVGrasterizer* r,
+ NSVGimage* image, float tx, float ty, float scale,
+ unsigned char* dst, int w, int h, int stride);
+
+// Deletes rasterizer context.
+void nsvgDeleteRasterizer(NSVGrasterizer*);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // NANOSVGRAST_H
+
+#ifdef NANOSVGRAST_IMPLEMENTATION
+
+#include <math.h>
+
+#define NSVG__SUBSAMPLES 5
+#define NSVG__FIXSHIFT 10
+#define NSVG__FIX (1 << NSVG__FIXSHIFT)
+#define NSVG__FIXMASK (NSVG__FIX-1)
+#define NSVG__MEMPAGE_SIZE 1024
+
+typedef struct NSVGedge {
+ float x0,y0, x1,y1;
+ int dir;
+ struct NSVGedge* next;
+} NSVGedge;
+
+typedef struct NSVGpoint {
+ float x, y;
+ float dx, dy;
+ float len;
+ float dmx, dmy;
+ unsigned char flags;
+} NSVGpoint;
+
+typedef struct NSVGactiveEdge {
+ int x,dx;
+ float ey;
+ int dir;
+ struct NSVGactiveEdge *next;
+} NSVGactiveEdge;
+
+typedef struct NSVGmemPage {
+ unsigned char mem[NSVG__MEMPAGE_SIZE];
+ int size;
+ struct NSVGmemPage* next;
+} NSVGmemPage;
+
+typedef struct NSVGcachedPaint {
+ char type;
+ char spread;
+ float xform[6];
+ unsigned int colors[256];
+} NSVGcachedPaint;
+
+struct NSVGrasterizer
+{
+ float px, py;
+
+ float tessTol;
+ float distTol;
+
+ NSVGedge* edges;
+ int nedges;
+ int cedges;
+
+ NSVGpoint* points;
+ int npoints;
+ int cpoints;
+
+ NSVGpoint* points2;
+ int npoints2;
+ int cpoints2;
+
+ NSVGactiveEdge* freelist;
+ NSVGmemPage* pages;
+ NSVGmemPage* curpage;
+
+ unsigned char* scanline;
+ int cscanline;
+
+ unsigned char* bitmap;
+ int width, height, stride;
+};
+
+NSVGrasterizer* nsvgCreateRasterizer()
+{
+ NSVGrasterizer* r = (NSVGrasterizer*)malloc(sizeof(NSVGrasterizer));
+ if (r == NULL) goto error;
+ memset(r, 0, sizeof(NSVGrasterizer));
+
+ r->tessTol = 0.25f;
+ r->distTol = 0.01f;
+
+ return r;
+
+error:
+ nsvgDeleteRasterizer(r);
+ return NULL;
+}
+
+void nsvgDeleteRasterizer(NSVGrasterizer* r)
+{
+ NSVGmemPage* p;
+
+ if (r == NULL) return;
+
+ p = r->pages;
+ while (p != NULL) {
+ NSVGmemPage* next = p->next;
+ free(p);
+ p = next;
+ }
+
+ if (r->edges) free(r->edges);
+ if (r->points) free(r->points);
+ if (r->points2) free(r->points2);
+ if (r->scanline) free(r->scanline);
+
+ free(r);
+}
+
+static NSVGmemPage* nsvg__nextPage(NSVGrasterizer* r, NSVGmemPage* cur)
+{
+ NSVGmemPage *newp;
+
+ // If using existing chain, return the next page in chain
+ if (cur != NULL && cur->next != NULL) {
+ return cur->next;
+ }
+
+ // Alloc new page
+ newp = (NSVGmemPage*)malloc(sizeof(NSVGmemPage));
+ if (newp == NULL) return NULL;
+ memset(newp, 0, sizeof(NSVGmemPage));
+
+ // Add to linked list
+ if (cur != NULL)
+ cur->next = newp;
+ else
+ r->pages = newp;
+
+ return newp;
+}
+
+static void nsvg__resetPool(NSVGrasterizer* r)
+{
+ NSVGmemPage* p = r->pages;
+ while (p != NULL) {
+ p->size = 0;
+ p = p->next;
+ }
+ r->curpage = r->pages;
+}
+
+static unsigned char* nsvg__alloc(NSVGrasterizer* r, int size)
+{
+ unsigned char* buf;
+ if (size > NSVG__MEMPAGE_SIZE) return NULL;
+ if (r->curpage == NULL || r->curpage->size+size > NSVG__MEMPAGE_SIZE) {
+ r->curpage = nsvg__nextPage(r, r->curpage);
+ }
+ buf = &r->curpage->mem[r->curpage->size];
+ r->curpage->size += size;
+ return buf;
+}
+
+static int nsvg__ptEquals(float x1, float y1, float x2, float y2, float tol)
+{
+ float dx = x2 - x1;
+ float dy = y2 - y1;
+ return dx*dx + dy*dy < tol*tol;
+}
+
+static void nsvg__addPathPoint(NSVGrasterizer* r, float x, float y, int flags)
+{
+ NSVGpoint* pt;
+
+ if (r->npoints > 0) {
+ pt = &r->points[r->npoints-1];
+ if (nsvg__ptEquals(pt->x,pt->y, x,y, r->distTol)) {
+ pt->flags = (unsigned char)(pt->flags | flags);
+ return;
+ }
+ }
+
+ if (r->npoints+1 > r->cpoints) {
+ r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64;
+ r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints);
+ if (r->points == NULL) return;
+ }
+
+ pt = &r->points[r->npoints];
+ pt->x = x;
+ pt->y = y;
+ pt->flags = (unsigned char)flags;
+ r->npoints++;
+}
+
+static void nsvg__appendPathPoint(NSVGrasterizer* r, NSVGpoint pt)
+{
+ if (r->npoints+1 > r->cpoints) {
+ r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64;
+ r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints);
+ if (r->points == NULL) return;
+ }
+ r->points[r->npoints] = pt;
+ r->npoints++;
+}
+
+static void nsvg__duplicatePoints(NSVGrasterizer* r)
+{
+ if (r->npoints > r->cpoints2) {
+ r->cpoints2 = r->npoints;
+ r->points2 = (NSVGpoint*)realloc(r->points2, sizeof(NSVGpoint) * r->cpoints2);
+ if (r->points2 == NULL) return;
+ }
+
+ memcpy(r->points2, r->points, sizeof(NSVGpoint) * r->npoints);
+ r->npoints2 = r->npoints;
+}
+
+static void nsvg__addEdge(NSVGrasterizer* r, float x0, float y0, float x1, float y1)
+{
+ NSVGedge* e;
+
+ // Skip horizontal edges
+ if (y0 == y1)
+ return;
+
+ if (r->nedges+1 > r->cedges) {
+ r->cedges = r->cedges > 0 ? r->cedges * 2 : 64;
+ r->edges = (NSVGedge*)realloc(r->edges, sizeof(NSVGedge) * r->cedges);
+ if (r->edges == NULL) return;
+ }
+
+ e = &r->edges[r->nedges];
+ r->nedges++;
+
+ if (y0 < y1) {
+ e->x0 = x0;
+ e->y0 = y0;
+ e->x1 = x1;
+ e->y1 = y1;
+ e->dir = 1;
+ } else {
+ e->x0 = x1;
+ e->y0 = y1;
+ e->x1 = x0;
+ e->y1 = y0;
+ e->dir = -1;
+ }
+}
+
+static float nsvg__normalize(float *x, float* y)
+{
+ float d = sqrtf((*x)*(*x) + (*y)*(*y));
+ if (d > 1e-6f) {
+ float id = 1.0f / d;
+ *x *= id;
+ *y *= id;
+ }
+ return d;
+}
+
+static float nsvg__absf(float x) { return x < 0 ? -x : x; }
+
+static void nsvg__flattenCubicBez(NSVGrasterizer* r,
+ float x1, float y1, float x2, float y2,
+ float x3, float y3, float x4, float y4,
+ int level, int type)
+{
+ float x12,y12,x23,y23,x34,y34,x123,y123,x234,y234,x1234,y1234;
+ float dx,dy,d2,d3;
+
+ if (level > 10) return;
+
+ x12 = (x1+x2)*0.5f;
+ y12 = (y1+y2)*0.5f;
+ x23 = (x2+x3)*0.5f;
+ y23 = (y2+y3)*0.5f;
+ x34 = (x3+x4)*0.5f;
+ y34 = (y3+y4)*0.5f;
+ x123 = (x12+x23)*0.5f;
+ y123 = (y12+y23)*0.5f;
+
+ dx = x4 - x1;
+ dy = y4 - y1;
+ d2 = nsvg__absf(((x2 - x4) * dy - (y2 - y4) * dx));
+ d3 = nsvg__absf(((x3 - x4) * dy - (y3 - y4) * dx));
+
+ if ((d2 + d3)*(d2 + d3) < r->tessTol * (dx*dx + dy*dy)) {
+ nsvg__addPathPoint(r, x4, y4, type);
+ return;
+ }
+
+ x234 = (x23+x34)*0.5f;
+ y234 = (y23+y34)*0.5f;
+ x1234 = (x123+x234)*0.5f;
+ y1234 = (y123+y234)*0.5f;
+
+ nsvg__flattenCubicBez(r, x1,y1, x12,y12, x123,y123, x1234,y1234, level+1, 0);
+ nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type);
+}
+
+static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float scale)
+{
+ int i, j;
+ NSVGpath* path;
+
+ for (path = shape->paths; path != NULL; path = path->next) {
+ r->npoints = 0;
+ // Flatten path
+ nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0);
+ for (i = 0; i < path->npts-1; i += 3) {
+ float* p = &path->pts[i*2];
+ nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, 0);
+ }
+ // Close path
+ nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0);
+ // Build edges
+ for (i = 0, j = r->npoints-1; i < r->npoints; j = i++)
+ nsvg__addEdge(r, r->points[j].x, r->points[j].y, r->points[i].x, r->points[i].y);
+ }
+}
+
+enum NSVGpointFlags
+{
+ NSVG_PT_CORNER = 0x01,
+ NSVG_PT_BEVEL = 0x02,
+ NSVG_PT_LEFT = 0x04
+};
+
+static void nsvg__initClosed(NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth)
+{
+ float w = lineWidth * 0.5f;
+ float dx = p1->x - p0->x;
+ float dy = p1->y - p0->y;
+ float len = nsvg__normalize(&dx, &dy);
+ float px = p0->x + dx*len*0.5f, py = p0->y + dy*len*0.5f;
+ float dlx = dy, dly = -dx;
+ float lx = px - dlx*w, ly = py - dly*w;
+ float rx = px + dlx*w, ry = py + dly*w;
+ left->x = lx; left->y = ly;
+ right->x = rx; right->y = ry;
+}
+
+static void nsvg__buttCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect)
+{
+ float w = lineWidth * 0.5f;
+ float px = p->x, py = p->y;
+ float dlx = dy, dly = -dx;
+ float lx = px - dlx*w, ly = py - dly*w;
+ float rx = px + dlx*w, ry = py + dly*w;
+
+ nsvg__addEdge(r, lx, ly, rx, ry);
+
+ if (connect) {
+ nsvg__addEdge(r, left->x, left->y, lx, ly);
+ nsvg__addEdge(r, rx, ry, right->x, right->y);
+ }
+ left->x = lx; left->y = ly;
+ right->x = rx; right->y = ry;
+}
+
+static void nsvg__squareCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect)
+{
+ float w = lineWidth * 0.5f;
+ float px = p->x - dx*w, py = p->y - dy*w;
+ float dlx = dy, dly = -dx;
+ float lx = px - dlx*w, ly = py - dly*w;
+ float rx = px + dlx*w, ry = py + dly*w;
+
+ nsvg__addEdge(r, lx, ly, rx, ry);
+
+ if (connect) {
+ nsvg__addEdge(r, left->x, left->y, lx, ly);
+ nsvg__addEdge(r, rx, ry, right->x, right->y);
+ }
+ left->x = lx; left->y = ly;
+ right->x = rx; right->y = ry;
+}
+
+#ifndef NSVG_PI
+#define NSVG_PI (3.14159265358979323846264338327f)
+#endif
+
+static void nsvg__roundCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int ncap, int connect)
+{
+ int i;
+ float w = lineWidth * 0.5f;
+ float px = p->x, py = p->y;
+ float dlx = dy, dly = -dx;
+ float lx = 0, ly = 0, rx = 0, ry = 0, prevx = 0, prevy = 0;
+
+ for (i = 0; i < ncap; i++) {
+ float a = (float)i/(float)(ncap-1)*NSVG_PI;
+ float ax = cosf(a) * w, ay = sinf(a) * w;
+ float x = px - dlx*ax - dx*ay;
+ float y = py - dly*ax - dy*ay;
+
+ if (i > 0)
+ nsvg__addEdge(r, prevx, prevy, x, y);
+
+ prevx = x;
+ prevy = y;
+
+ if (i == 0) {
+ lx = x; ly = y;
+ } else if (i == ncap-1) {
+ rx = x; ry = y;
+ }
+ }
+
+ if (connect) {
+ nsvg__addEdge(r, left->x, left->y, lx, ly);
+ nsvg__addEdge(r, rx, ry, right->x, right->y);
+ }
+
+ left->x = lx; left->y = ly;
+ right->x = rx; right->y = ry;
+}
+
+static void nsvg__bevelJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth)
+{
+ float w = lineWidth * 0.5f;
+ float dlx0 = p0->dy, dly0 = -p0->dx;
+ float dlx1 = p1->dy, dly1 = -p1->dx;
+ float lx0 = p1->x - (dlx0 * w), ly0 = p1->y - (dly0 * w);
+ float rx0 = p1->x + (dlx0 * w), ry0 = p1->y + (dly0 * w);
+ float lx1 = p1->x - (dlx1 * w), ly1 = p1->y - (dly1 * w);
+ float rx1 = p1->x + (dlx1 * w), ry1 = p1->y + (dly1 * w);
+
+ nsvg__addEdge(r, lx0, ly0, left->x, left->y);
+ nsvg__addEdge(r, lx1, ly1, lx0, ly0);
+
+ nsvg__addEdge(r, right->x, right->y, rx0, ry0);
+ nsvg__addEdge(r, rx0, ry0, rx1, ry1);
+
+ left->x = lx1; left->y = ly1;
+ right->x = rx1; right->y = ry1;
+}
+
+static void nsvg__miterJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth)
+{
+ float w = lineWidth * 0.5f;
+ float dlx0 = p0->dy, dly0 = -p0->dx;
+ float dlx1 = p1->dy, dly1 = -p1->dx;
+ float lx0, rx0, lx1, rx1;
+ float ly0, ry0, ly1, ry1;
+
+ if (p1->flags & NSVG_PT_LEFT) {
+ lx0 = lx1 = p1->x - p1->dmx * w;
+ ly0 = ly1 = p1->y - p1->dmy * w;
+ nsvg__addEdge(r, lx1, ly1, left->x, left->y);
+
+ rx0 = p1->x + (dlx0 * w);
+ ry0 = p1->y + (dly0 * w);
+ rx1 = p1->x + (dlx1 * w);
+ ry1 = p1->y + (dly1 * w);
+ nsvg__addEdge(r, right->x, right->y, rx0, ry0);
+ nsvg__addEdge(r, rx0, ry0, rx1, ry1);
+ } else {
+ lx0 = p1->x - (dlx0 * w);
+ ly0 = p1->y - (dly0 * w);
+ lx1 = p1->x - (dlx1 * w);
+ ly1 = p1->y - (dly1 * w);
+ nsvg__addEdge(r, lx0, ly0, left->x, left->y);
+ nsvg__addEdge(r, lx1, ly1, lx0, ly0);
+
+ rx0 = rx1 = p1->x + p1->dmx * w;
+ ry0 = ry1 = p1->y + p1->dmy * w;
+ nsvg__addEdge(r, right->x, right->y, rx1, ry1);
+ }
+
+ left->x = lx1; left->y = ly1;
+ right->x = rx1; right->y = ry1;
+}
+
+static void nsvg__roundJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth, int ncap)
+{
+ int i, n;
+ float w = lineWidth * 0.5f;
+ float dlx0 = p0->dy, dly0 = -p0->dx;
+ float dlx1 = p1->dy, dly1 = -p1->dx;
+ float a0 = atan2f(dly0, dlx0);
+ float a1 = atan2f(dly1, dlx1);
+ float da = a1 - a0;
+ float lx, ly, rx, ry;
+
+ if (da < NSVG_PI) da += NSVG_PI*2;
+ if (da > NSVG_PI) da -= NSVG_PI*2;
+
+ n = (int)ceilf((nsvg__absf(da) / NSVG_PI) * (float)ncap);
+ if (n < 2) n = 2;
+ if (n > ncap) n = ncap;
+
+ lx = left->x;
+ ly = left->y;
+ rx = right->x;
+ ry = right->y;
+
+ for (i = 0; i < n; i++) {
+ float u = (float)i/(float)(n-1);
+ float a = a0 + u*da;
+ float ax = cosf(a) * w, ay = sinf(a) * w;
+ float lx1 = p1->x - ax, ly1 = p1->y - ay;
+ float rx1 = p1->x + ax, ry1 = p1->y + ay;
+
+ nsvg__addEdge(r, lx1, ly1, lx, ly);
+ nsvg__addEdge(r, rx, ry, rx1, ry1);
+
+ lx = lx1; ly = ly1;
+ rx = rx1; ry = ry1;
+ }
+
+ left->x = lx; left->y = ly;
+ right->x = rx; right->y = ry;
+}
+
+static void nsvg__straightJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p1, float lineWidth)
+{
+ float w = lineWidth * 0.5f;
+ float lx = p1->x - (p1->dmx * w), ly = p1->y - (p1->dmy * w);
+ float rx = p1->x + (p1->dmx * w), ry = p1->y + (p1->dmy * w);
+
+ nsvg__addEdge(r, lx, ly, left->x, left->y);
+ nsvg__addEdge(r, right->x, right->y, rx, ry);
+
+ left->x = lx; left->y = ly;
+ right->x = rx; right->y = ry;
+}
+
+static int nsvg__curveDivs(float r, float arc, float tol)
+{
+ float da = acosf(r / (r + tol)) * 2.0f;
+ int divs = (int)ceilf(arc / da);
+ if (divs < 2) divs = 2;
+ return divs;
+}
+
+static void nsvg__expandStroke(NSVGrasterizer* r, NSVGpoint* points, int npoints, int closed, int lineJoin, int lineCap, float lineWidth)
+{
+ int ncap = nsvg__curveDivs(lineWidth*0.5f, NSVG_PI, r->tessTol); // Calculate divisions per half circle.
+ NSVGpoint left = {0,0,0,0,0,0,0,0}, right = {0,0,0,0,0,0,0,0}, firstLeft = {0,0,0,0,0,0,0,0}, firstRight = {0,0,0,0,0,0,0,0};
+ NSVGpoint* p0, *p1;
+ int j, s, e;
+
+ // Build stroke edges
+ if (closed) {
+ // Looping
+ p0 = &points[npoints-1];
+ p1 = &points[0];
+ s = 0;
+ e = npoints;
+ } else {
+ // Add cap
+ p0 = &points[0];
+ p1 = &points[1];
+ s = 1;
+ e = npoints-1;
+ }
+
+ if (closed) {
+ nsvg__initClosed(&left, &right, p0, p1, lineWidth);
+ firstLeft = left;
+ firstRight = right;
+ } else {
+ // Add cap
+ float dx = p1->x - p0->x;
+ float dy = p1->y - p0->y;
+ nsvg__normalize(&dx, &dy);
+ if (lineCap == NSVG_CAP_BUTT)
+ nsvg__buttCap(r, &left, &right, p0, dx, dy, lineWidth, 0);
+ else if (lineCap == NSVG_CAP_SQUARE)
+ nsvg__squareCap(r, &left, &right, p0, dx, dy, lineWidth, 0);
+ else if (lineCap == NSVG_CAP_ROUND)
+ nsvg__roundCap(r, &left, &right, p0, dx, dy, lineWidth, ncap, 0);
+ }
+
+ for (j = s; j < e; ++j) {
+ if (p1->flags & NSVG_PT_CORNER) {
+ if (lineJoin == NSVG_JOIN_ROUND)
+ nsvg__roundJoin(r, &left, &right, p0, p1, lineWidth, ncap);
+ else if (lineJoin == NSVG_JOIN_BEVEL || (p1->flags & NSVG_PT_BEVEL))
+ nsvg__bevelJoin(r, &left, &right, p0, p1, lineWidth);
+ else
+ nsvg__miterJoin(r, &left, &right, p0, p1, lineWidth);
+ } else {
+ nsvg__straightJoin(r, &left, &right, p1, lineWidth);
+ }
+ p0 = p1++;
+ }
+
+ if (closed) {
+ // Loop it
+ nsvg__addEdge(r, firstLeft.x, firstLeft.y, left.x, left.y);
+ nsvg__addEdge(r, right.x, right.y, firstRight.x, firstRight.y);
+ } else {
+ // Add cap
+ float dx = p1->x - p0->x;
+ float dy = p1->y - p0->y;
+ nsvg__normalize(&dx, &dy);
+ if (lineCap == NSVG_CAP_BUTT)
+ nsvg__buttCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1);
+ else if (lineCap == NSVG_CAP_SQUARE)
+ nsvg__squareCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1);
+ else if (lineCap == NSVG_CAP_ROUND)
+ nsvg__roundCap(r, &right, &left, p1, -dx, -dy, lineWidth, ncap, 1);
+ }
+}
+
+static void nsvg__prepareStroke(NSVGrasterizer* r, float miterLimit, int lineJoin)
+{
+ int i, j;
+ NSVGpoint* p0, *p1;
+
+ p0 = &r->points[r->npoints-1];
+ p1 = &r->points[0];
+ for (i = 0; i < r->npoints; i++) {
+ // Calculate segment direction and length
+ p0->dx = p1->x - p0->x;
+ p0->dy = p1->y - p0->y;
+ p0->len = nsvg__normalize(&p0->dx, &p0->dy);
+ // Advance
+ p0 = p1++;
+ }
+
+ // calculate joins
+ p0 = &r->points[r->npoints-1];
+ p1 = &r->points[0];
+ for (j = 0; j < r->npoints; j++) {
+ float dlx0, dly0, dlx1, dly1, dmr2, cross;
+ dlx0 = p0->dy;
+ dly0 = -p0->dx;
+ dlx1 = p1->dy;
+ dly1 = -p1->dx;
+ // Calculate extrusions
+ p1->dmx = (dlx0 + dlx1) * 0.5f;
+ p1->dmy = (dly0 + dly1) * 0.5f;
+ dmr2 = p1->dmx*p1->dmx + p1->dmy*p1->dmy;
+ if (dmr2 > 0.000001f) {
+ float s2 = 1.0f / dmr2;
+ if (s2 > 600.0f) {
+ s2 = 600.0f;
+ }
+ p1->dmx *= s2;
+ p1->dmy *= s2;
+ }
+
+ // Clear flags, but keep the corner.
+ p1->flags = (p1->flags & NSVG_PT_CORNER) ? NSVG_PT_CORNER : 0;
+
+ // Keep track of left turns.
+ cross = p1->dx * p0->dy - p0->dx * p1->dy;
+ if (cross > 0.0f)
+ p1->flags |= NSVG_PT_LEFT;
+
+ // Check to see if the corner needs to be beveled.
+ if (p1->flags & NSVG_PT_CORNER) {
+ if ((dmr2 * miterLimit*miterLimit) < 1.0f || lineJoin == NSVG_JOIN_BEVEL || lineJoin == NSVG_JOIN_ROUND) {
+ p1->flags |= NSVG_PT_BEVEL;
+ }
+ }
+
+ p0 = p1++;
+ }
+}
+
+static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float scale)
+{
+ int i, j, closed;
+ NSVGpath* path;
+ NSVGpoint* p0, *p1;
+ float miterLimit = shape->miterLimit;
+ int lineJoin = shape->strokeLineJoin;
+ int lineCap = shape->strokeLineCap;
+ float lineWidth = shape->strokeWidth * scale;
+
+ for (path = shape->paths; path != NULL; path = path->next) {
+ // Flatten path
+ r->npoints = 0;
+ nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, NSVG_PT_CORNER);
+ for (i = 0; i < path->npts-1; i += 3) {
+ float* p = &path->pts[i*2];
+ nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, NSVG_PT_CORNER);
+ }
+ if (r->npoints < 2)
+ continue;
+
+ closed = path->closed;
+
+ // If the first and last points are the same, remove the last, mark as closed path.
+ p0 = &r->points[r->npoints-1];
+ p1 = &r->points[0];
+ if (nsvg__ptEquals(p0->x,p0->y, p1->x,p1->y, r->distTol)) {
+ r->npoints--;
+ p0 = &r->points[r->npoints-1];
+ closed = 1;
+ }
+
+ if (shape->strokeDashCount > 0) {
+ int idash = 0, dashState = 1;
+ float totalDist = 0, dashLen, allDashLen, dashOffset;
+ NSVGpoint cur;
+
+ if (closed)
+ nsvg__appendPathPoint(r, r->points[0]);
+
+ // Duplicate points -> points2.
+ nsvg__duplicatePoints(r);
+
+ r->npoints = 0;
+ cur = r->points2[0];
+ nsvg__appendPathPoint(r, cur);
+
+ // Figure out dash offset.
+ allDashLen = 0;
+ for (j = 0; j < shape->strokeDashCount; j++)
+ allDashLen += shape->strokeDashArray[j];
+ if (shape->strokeDashCount & 1)
+ allDashLen *= 2.0f;
+ // Find location inside pattern
+ dashOffset = fmodf(shape->strokeDashOffset, allDashLen);
+ if (dashOffset < 0.0f)
+ dashOffset += allDashLen;
+
+ while (dashOffset > shape->strokeDashArray[idash]) {
+ dashOffset -= shape->strokeDashArray[idash];
+ idash = (idash + 1) % shape->strokeDashCount;
+ }
+ dashLen = (shape->strokeDashArray[idash] - dashOffset) * scale;
+
+ for (j = 1; j < r->npoints2; ) {
+ float dx = r->points2[j].x - cur.x;
+ float dy = r->points2[j].y - cur.y;
+ float dist = sqrtf(dx*dx + dy*dy);
+
+ if ((totalDist + dist) > dashLen) {
+ // Calculate intermediate point
+ float d = (dashLen - totalDist) / dist;
+ float x = cur.x + dx * d;
+ float y = cur.y + dy * d;
+ nsvg__addPathPoint(r, x, y, NSVG_PT_CORNER);
+
+ // Stroke
+ if (r->npoints > 1 && dashState) {
+ nsvg__prepareStroke(r, miterLimit, lineJoin);
+ nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth);
+ }
+ // Advance dash pattern
+ dashState = !dashState;
+ idash = (idash+1) % shape->strokeDashCount;
+ dashLen = shape->strokeDashArray[idash] * scale;
+ // Restart
+ cur.x = x;
+ cur.y = y;
+ cur.flags = NSVG_PT_CORNER;
+ totalDist = 0.0f;
+ r->npoints = 0;
+ nsvg__appendPathPoint(r, cur);
+ } else {
+ totalDist += dist;
+ cur = r->points2[j];
+ nsvg__appendPathPoint(r, cur);
+ j++;
+ }
+ }
+ // Stroke any leftover path
+ if (r->npoints > 1 && dashState)
+ nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth);
+ } else {
+ nsvg__prepareStroke(r, miterLimit, lineJoin);
+ nsvg__expandStroke(r, r->points, r->npoints, closed, lineJoin, lineCap, lineWidth);
+ }
+ }
+}
+
+static int nsvg__cmpEdge(const void *p, const void *q)
+{
+ const NSVGedge* a = (const NSVGedge*)p;
+ const NSVGedge* b = (const NSVGedge*)q;
+
+ if (a->y0 < b->y0) return -1;
+ if (a->y0 > b->y0) return 1;
+ return 0;
+}
+
+
+static NSVGactiveEdge* nsvg__addActive(NSVGrasterizer* r, NSVGedge* e, float startPoint)
+{
+ NSVGactiveEdge* z;
+
+ if (r->freelist != NULL) {
+ // Restore from freelist.
+ z = r->freelist;
+ r->freelist = z->next;
+ } else {
+ // Alloc new edge.
+ z = (NSVGactiveEdge*)nsvg__alloc(r, sizeof(NSVGactiveEdge));
+ if (z == NULL) return NULL;
+ }
+
+ float dxdy = (e->x1 - e->x0) / (e->y1 - e->y0);
+// STBTT_assert(e->y0 <= start_point);
+ // round dx down to avoid going too far
+ if (dxdy < 0)
+ z->dx = (int)(-floorf(NSVG__FIX * -dxdy));
+ else
+ z->dx = (int)floorf(NSVG__FIX * dxdy);
+ z->x = (int)floorf(NSVG__FIX * (e->x0 + dxdy * (startPoint - e->y0)));
+// z->x -= off_x * FIX;
+ z->ey = e->y1;
+ z->next = 0;
+ z->dir = e->dir;
+
+ return z;
+}
+
+static void nsvg__freeActive(NSVGrasterizer* r, NSVGactiveEdge* z)
+{
+ z->next = r->freelist;
+ r->freelist = z;
+}
+
+static void nsvg__fillScanline(unsigned char* scanline, int len, int x0, int x1, int maxWeight, int* xmin, int* xmax)
+{
+ int i = x0 >> NSVG__FIXSHIFT;
+ int j = x1 >> NSVG__FIXSHIFT;
+ if (i < *xmin) *xmin = i;
+ if (j > *xmax) *xmax = j;
+ if (i < len && j >= 0) {
+ if (i == j) {
+ // x0,x1 are the same pixel, so compute combined coverage
+ scanline[i] = (unsigned char)(scanline[i] + ((x1 - x0) * maxWeight >> NSVG__FIXSHIFT));
+ } else {
+ if (i >= 0) // add antialiasing for x0
+ scanline[i] = (unsigned char)(scanline[i] + (((NSVG__FIX - (x0 & NSVG__FIXMASK)) * maxWeight) >> NSVG__FIXSHIFT));
+ else
+ i = -1; // clip
+
+ if (j < len) // add antialiasing for x1
+ scanline[j] = (unsigned char)(scanline[j] + (((x1 & NSVG__FIXMASK) * maxWeight) >> NSVG__FIXSHIFT));
+ else
+ j = len; // clip
+
+ for (++i; i < j; ++i) // fill pixels between x0 and x1
+ scanline[i] = (unsigned char)(scanline[i] + maxWeight);
+ }
+ }
+}
+
+// note: this routine clips fills that extend off the edges... ideally this
+// wouldn't happen, but it could happen if the truetype glyph bounding boxes
+// are wrong, or if the user supplies a too-small bitmap
+static void nsvg__fillActiveEdges(unsigned char* scanline, int len, NSVGactiveEdge* e, int maxWeight, int* xmin, int* xmax, char fillRule)
+{
+ // non-zero winding fill
+ int x0 = 0, w = 0;
+
+ if (fillRule == NSVG_FILLRULE_NONZERO) {
+ // Non-zero
+ while (e != NULL) {
+ if (w == 0) {
+ // if we're currently at zero, we need to record the edge start point
+ x0 = e->x; w += e->dir;
+ } else {
+ int x1 = e->x; w += e->dir;
+ // if we went to zero, we need to draw
+ if (w == 0)
+ nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax);
+ }
+ e = e->next;
+ }
+ } else if (fillRule == NSVG_FILLRULE_EVENODD) {
+ // Even-odd
+ while (e != NULL) {
+ if (w == 0) {
+ // if we're currently at zero, we need to record the edge start point
+ x0 = e->x; w = 1;
+ } else {
+ int x1 = e->x; w = 0;
+ nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax);
+ }
+ e = e->next;
+ }
+ }
+}
+
+static float nsvg__clampf(float a, float mn, float mx) { return a < mn ? mn : (a > mx ? mx : a); }
+
+static unsigned int nsvg__RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
+{
+ return (r) | (g << 8) | (b << 16) | (a << 24);
+}
+
+static unsigned int nsvg__lerpRGBA(unsigned int c0, unsigned int c1, float u)
+{
+ int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f);
+ int r = (((c0) & 0xff)*(256-iu) + (((c1) & 0xff)*iu)) >> 8;
+ int g = (((c0>>8) & 0xff)*(256-iu) + (((c1>>8) & 0xff)*iu)) >> 8;
+ int b = (((c0>>16) & 0xff)*(256-iu) + (((c1>>16) & 0xff)*iu)) >> 8;
+ int a = (((c0>>24) & 0xff)*(256-iu) + (((c1>>24) & 0xff)*iu)) >> 8;
+ return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a);
+}
+
+static unsigned int nsvg__applyOpacity(unsigned int c, float u)
+{
+ int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f);
+ int r = (c) & 0xff;
+ int g = (c>>8) & 0xff;
+ int b = (c>>16) & 0xff;
+ int a = (((c>>24) & 0xff)*iu) >> 8;
+ return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a);
+}
+
+static inline int nsvg__div255(int x)
+{
+ return ((x+1) * 257) >> 16;
+}
+
+static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* cover, int x, int y,
+ float tx, float ty, float scale, NSVGcachedPaint* cache)
+{
+
+ if (cache->type == NSVG_PAINT_COLOR) {
+ int i, cr, cg, cb, ca;
+ cr = cache->colors[0] & 0xff;
+ cg = (cache->colors[0] >> 8) & 0xff;
+ cb = (cache->colors[0] >> 16) & 0xff;
+ ca = (cache->colors[0] >> 24) & 0xff;
+
+ for (i = 0; i < count; i++) {
+ int r,g,b;
+ int a = nsvg__div255((int)cover[0] * ca);
+ int ia = 255 - a;
+ // Premultiply
+ r = nsvg__div255(cr * a);
+ g = nsvg__div255(cg * a);
+ b = nsvg__div255(cb * a);
+
+ // Blend over
+ r += nsvg__div255(ia * (int)dst[0]);
+ g += nsvg__div255(ia * (int)dst[1]);
+ b += nsvg__div255(ia * (int)dst[2]);
+ a += nsvg__div255(ia * (int)dst[3]);
+
+ dst[0] = (unsigned char)r;
+ dst[1] = (unsigned char)g;
+ dst[2] = (unsigned char)b;
+ dst[3] = (unsigned char)a;
+
+ cover++;
+ dst += 4;
+ }
+ } else if (cache->type == NSVG_PAINT_LINEAR_GRADIENT) {
+ // TODO: spread modes.
+ // TODO: plenty of opportunities to optimize.
+ float fx, fy, dx, gy;
+ float* t = cache->xform;
+ int i, cr, cg, cb, ca;
+ unsigned int c;
+
+ fx = ((float)x - tx) / scale;
+ fy = ((float)y - ty) / scale;
+ dx = 1.0f / scale;
+
+ for (i = 0; i < count; i++) {
+ int r,g,b,a,ia;
+ gy = fx*t[1] + fy*t[3] + t[5];
+ c = cache->colors[(int)nsvg__clampf(gy*255.0f, 0, 255.0f)];
+ cr = (c) & 0xff;
+ cg = (c >> 8) & 0xff;
+ cb = (c >> 16) & 0xff;
+ ca = (c >> 24) & 0xff;
+
+ a = nsvg__div255((int)cover[0] * ca);
+ ia = 255 - a;
+
+ // Premultiply
+ r = nsvg__div255(cr * a);
+ g = nsvg__div255(cg * a);
+ b = nsvg__div255(cb * a);
+
+ // Blend over
+ r += nsvg__div255(ia * (int)dst[0]);
+ g += nsvg__div255(ia * (int)dst[1]);
+ b += nsvg__div255(ia * (int)dst[2]);
+ a += nsvg__div255(ia * (int)dst[3]);
+
+ dst[0] = (unsigned char)r;
+ dst[1] = (unsigned char)g;
+ dst[2] = (unsigned char)b;
+ dst[3] = (unsigned char)a;
+
+ cover++;
+ dst += 4;
+ fx += dx;
+ }
+ } else if (cache->type == NSVG_PAINT_RADIAL_GRADIENT) {
+ // TODO: spread modes.
+ // TODO: plenty of opportunities to optimize.
+ // TODO: focus (fx,fy)
+ float fx, fy, dx, gx, gy, gd;
+ float* t = cache->xform;
+ int i, cr, cg, cb, ca;
+ unsigned int c;
+
+ fx = ((float)x - tx) / scale;
+ fy = ((float)y - ty) / scale;
+ dx = 1.0f / scale;
+
+ for (i = 0; i < count; i++) {
+ int r,g,b,a,ia;
+ gx = fx*t[0] + fy*t[2] + t[4];
+ gy = fx*t[1] + fy*t[3] + t[5];
+ gd = sqrtf(gx*gx + gy*gy);
+ c = cache->colors[(int)nsvg__clampf(gd*255.0f, 0, 255.0f)];
+ cr = (c) & 0xff;
+ cg = (c >> 8) & 0xff;
+ cb = (c >> 16) & 0xff;
+ ca = (c >> 24) & 0xff;
+
+ a = nsvg__div255((int)cover[0] * ca);
+ ia = 255 - a;
+
+ // Premultiply
+ r = nsvg__div255(cr * a);
+ g = nsvg__div255(cg * a);
+ b = nsvg__div255(cb * a);
+
+ // Blend over
+ r += nsvg__div255(ia * (int)dst[0]);
+ g += nsvg__div255(ia * (int)dst[1]);
+ b += nsvg__div255(ia * (int)dst[2]);
+ a += nsvg__div255(ia * (int)dst[3]);
+
+ dst[0] = (unsigned char)r;
+ dst[1] = (unsigned char)g;
+ dst[2] = (unsigned char)b;
+ dst[3] = (unsigned char)a;
+
+ cover++;
+ dst += 4;
+ fx += dx;
+ }
+ }
+}
+
+static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float scale, NSVGcachedPaint* cache, char fillRule)
+{
+ NSVGactiveEdge *active = NULL;
+ int y, s;
+ int e = 0;
+ int maxWeight = (255 / NSVG__SUBSAMPLES); // weight per vertical scanline
+ int xmin, xmax;
+
+ for (y = 0; y < r->height; y++) {
+ memset(r->scanline, 0, r->width);
+ xmin = r->width;
+ xmax = 0;
+ for (s = 0; s < NSVG__SUBSAMPLES; ++s) {
+ // find center of pixel for this scanline
+ float scany = (float)(y*NSVG__SUBSAMPLES + s) + 0.5f;
+ NSVGactiveEdge **step = &active;
+
+ // update all active edges;
+ // remove all active edges that terminate before the center of this scanline
+ while (*step) {
+ NSVGactiveEdge *z = *step;
+ if (z->ey <= scany) {
+ *step = z->next; // delete from list
+// NSVG__assert(z->valid);
+ nsvg__freeActive(r, z);
+ } else {
+ z->x += z->dx; // advance to position for current scanline
+ step = &((*step)->next); // advance through list
+ }
+ }
+
+ // resort the list if needed
+ for (;;) {
+ int changed = 0;
+ step = &active;
+ while (*step && (*step)->next) {
+ if ((*step)->x > (*step)->next->x) {
+ NSVGactiveEdge* t = *step;
+ NSVGactiveEdge* q = t->next;
+ t->next = q->next;
+ q->next = t;
+ *step = q;
+ changed = 1;
+ }
+ step = &(*step)->next;
+ }
+ if (!changed) break;
+ }
+
+ // insert all edges that start before the center of this scanline -- omit ones that also end on this scanline
+ while (e < r->nedges && r->edges[e].y0 <= scany) {
+ if (r->edges[e].y1 > scany) {
+ NSVGactiveEdge* z = nsvg__addActive(r, &r->edges[e], scany);
+ if (z == NULL) break;
+ // find insertion point
+ if (active == NULL) {
+ active = z;
+ } else if (z->x < active->x) {
+ // insert at front
+ z->next = active;
+ active = z;
+ } else {
+ // find thing to insert AFTER
+ NSVGactiveEdge* p = active;
+ while (p->next && p->next->x < z->x)
+ p = p->next;
+ // at this point, p->next->x is NOT < z->x
+ z->next = p->next;
+ p->next = z;
+ }
+ }
+ e++;
+ }
+
+ // now process all active edges in non-zero fashion
+ if (active != NULL)
+ nsvg__fillActiveEdges(r->scanline, r->width, active, maxWeight, &xmin, &xmax, fillRule);
+ }
+ // Blit
+ if (xmin < 0) xmin = 0;
+ if (xmax > r->width-1) xmax = r->width-1;
+ if (xmin <= xmax) {
+ nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, scale, cache);
+ }
+ }
+
+}
+
+static void nsvg__unpremultiplyAlpha(unsigned char* image, int w, int h, int stride)
+{
+ int x,y;
+
+ // Unpremultiply
+ for (y = 0; y < h; y++) {
+ unsigned char *row = &image[y*stride];
+ for (x = 0; x < w; x++) {
+ int r = row[0], g = row[1], b = row[2], a = row[3];
+ if (a != 0) {
+ row[0] = (unsigned char)(r*255/a);
+ row[1] = (unsigned char)(g*255/a);
+ row[2] = (unsigned char)(b*255/a);
+ }
+ row += 4;
+ }
+ }
+
+ // Defringe
+ for (y = 0; y < h; y++) {
+ unsigned char *row = &image[y*stride];
+ for (x = 0; x < w; x++) {
+ int r = 0, g = 0, b = 0, a = row[3], n = 0;
+ if (a == 0) {
+ if (x-1 > 0 && row[-1] != 0) {
+ r += row[-4];
+ g += row[-3];
+ b += row[-2];
+ n++;
+ }
+ if (x+1 < w && row[7] != 0) {
+ r += row[4];
+ g += row[5];
+ b += row[6];
+ n++;
+ }
+ if (y-1 > 0 && row[-stride+3] != 0) {
+ r += row[-stride];
+ g += row[-stride+1];
+ b += row[-stride+2];
+ n++;
+ }
+ if (y+1 < h && row[stride+3] != 0) {
+ r += row[stride];
+ g += row[stride+1];
+ b += row[stride+2];
+ n++;
+ }
+ if (n > 0) {
+ row[0] = (unsigned char)(r/n);
+ row[1] = (unsigned char)(g/n);
+ row[2] = (unsigned char)(b/n);
+ }
+ }
+ row += 4;
+ }
+ }
+}
+
+
+static void nsvg__initPaint(NSVGcachedPaint* cache, NSVGpaint* paint, float opacity)
+{
+ int i, j;
+ NSVGgradient* grad;
+
+ cache->type = paint->type;
+
+ if (paint->type == NSVG_PAINT_COLOR) {
+ cache->colors[0] = nsvg__applyOpacity(paint->color, opacity);
+ return;
+ }
+
+ grad = paint->gradient;
+
+ cache->spread = grad->spread;
+ memcpy(cache->xform, grad->xform, sizeof(float)*6);
+
+ if (grad->nstops == 0) {
+ for (i = 0; i < 256; i++)
+ cache->colors[i] = 0;
+ } if (grad->nstops == 1) {
+ for (i = 0; i < 256; i++)
+ cache->colors[i] = nsvg__applyOpacity(grad->stops[i].color, opacity);
+ } else {
+ unsigned int ca, cb = 0;
+ float ua, ub, du, u;
+ int ia, ib, count;
+
+ ca = nsvg__applyOpacity(grad->stops[0].color, opacity);
+ ua = nsvg__clampf(grad->stops[0].offset, 0, 1);
+ ub = nsvg__clampf(grad->stops[grad->nstops-1].offset, ua, 1);
+ ia = (int)(ua * 255.0f);
+ ib = (int)(ub * 255.0f);
+ for (i = 0; i < ia; i++) {
+ cache->colors[i] = ca;
+ }
+
+ for (i = 0; i < grad->nstops-1; i++) {
+ ca = nsvg__applyOpacity(grad->stops[i].color, opacity);
+ cb = nsvg__applyOpacity(grad->stops[i+1].color, opacity);
+ ua = nsvg__clampf(grad->stops[i].offset, 0, 1);
+ ub = nsvg__clampf(grad->stops[i+1].offset, 0, 1);
+ ia = (int)(ua * 255.0f);
+ ib = (int)(ub * 255.0f);
+ count = ib - ia;
+ if (count <= 0) continue;
+ u = 0;
+ du = 1.0f / (float)count;
+ for (j = 0; j < count; j++) {
+ cache->colors[ia+j] = nsvg__lerpRGBA(ca,cb,u);
+ u += du;
+ }
+ }
+
+ for (i = ib; i < 256; i++)
+ cache->colors[i] = cb;
+ }
+
+}
+
+/*
+static void dumpEdges(NSVGrasterizer* r, const char* name)
+{
+ float xmin = 0, xmax = 0, ymin = 0, ymax = 0;
+ NSVGedge *e = NULL;
+ int i;
+ if (r->nedges == 0) return;
+ FILE* fp = fopen(name, "w");
+ if (fp == NULL) return;
+
+ xmin = xmax = r->edges[0].x0;
+ ymin = ymax = r->edges[0].y0;
+ for (i = 0; i < r->nedges; i++) {
+ e = &r->edges[i];
+ xmin = nsvg__minf(xmin, e->x0);
+ xmin = nsvg__minf(xmin, e->x1);
+ xmax = nsvg__maxf(xmax, e->x0);
+ xmax = nsvg__maxf(xmax, e->x1);
+ ymin = nsvg__minf(ymin, e->y0);
+ ymin = nsvg__minf(ymin, e->y1);
+ ymax = nsvg__maxf(ymax, e->y0);
+ ymax = nsvg__maxf(ymax, e->y1);
+ }
+
+ fprintf(fp, "<svg viewBox=\"%f %f %f %f\" xmlns=\"http://www.w3.org/2000/svg\">", xmin, ymin, (xmax - xmin), (ymax - ymin));
+
+ for (i = 0; i < r->nedges; i++) {
+ e = &r->edges[i];
+ fprintf(fp ,"<line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" style=\"stroke:#000;\" />", e->x0,e->y0, e->x1,e->y1);
+ }
+
+ for (i = 0; i < r->npoints; i++) {
+ if (i+1 < r->npoints)
+ fprintf(fp ,"<line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" style=\"stroke:#f00;\" />", r->points[i].x, r->points[i].y, r->points[i+1].x, r->points[i+1].y);
+ fprintf(fp ,"<circle cx=\"%f\" cy=\"%f\" r=\"1\" style=\"fill:%s;\" />", r->points[i].x, r->points[i].y, r->points[i].flags == 0 ? "#f00" : "#0f0");
+ }
+
+ fprintf(fp, "</svg>");
+ fclose(fp);
+}
+*/
+
+void nsvgRasterize(NSVGrasterizer* r,
+ NSVGimage* image, float tx, float ty, float scale,
+ unsigned char* dst, int w, int h, int stride)
+{
+ NSVGshape *shape = NULL;
+ NSVGedge *e = NULL;
+ NSVGcachedPaint cache;
+ int i;
+
+ r->bitmap = dst;
+ r->width = w;
+ r->height = h;
+ r->stride = stride;
+
+ if (w > r->cscanline) {
+ r->cscanline = w;
+ r->scanline = (unsigned char*)realloc(r->scanline, w);
+ if (r->scanline == NULL) return;
+ }
+
+ for (i = 0; i < h; i++)
+ memset(&dst[i*stride], 0, w*4);
+
+ for (shape = image->shapes; shape != NULL; shape = shape->next) {
+ if (!(shape->flags & NSVG_FLAGS_VISIBLE))
+ continue;
+
+ if (shape->fill.type != NSVG_PAINT_NONE) {
+ nsvg__resetPool(r);
+ r->freelist = NULL;
+ r->nedges = 0;
+
+ nsvg__flattenShape(r, shape, scale);
+
+ // Scale and translate edges
+ for (i = 0; i < r->nedges; i++) {
+ e = &r->edges[i];
+ e->x0 = tx + e->x0;
+ e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES;
+ e->x1 = tx + e->x1;
+ e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES;
+ }
+
+ // Rasterize edges
+ qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge);
+
+ // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule
+ nsvg__initPaint(&cache, &shape->fill, shape->opacity);
+
+ nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, shape->fillRule);
+ }
+ if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * scale) > 0.01f) {
+ nsvg__resetPool(r);
+ r->freelist = NULL;
+ r->nedges = 0;
+
+ nsvg__flattenShapeStroke(r, shape, scale);
+
+// dumpEdges(r, "edge.svg");
+
+ // Scale and translate edges
+ for (i = 0; i < r->nedges; i++) {
+ e = &r->edges[i];
+ e->x0 = tx + e->x0;
+ e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES;
+ e->x1 = tx + e->x1;
+ e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES;
+ }
+
+ // Rasterize edges
+ qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge);
+
+ // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule
+ nsvg__initPaint(&cache, &shape->stroke, shape->opacity);
+
+ nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, NSVG_FILLRULE_NONZERO);
+ }
+ }
+
+ nsvg__unpremultiplyAlpha(dst, w, h, stride);
+
+ r->bitmap = NULL;
+ r->width = 0;
+ r->height = 0;
+ r->stride = 0;
+}
+
+#endif
diff --git a/thirdparty/zstd/PATENTS b/thirdparty/zstd/PATENTS
deleted file mode 100644
index 15b4a2ea5c..0000000000
--- a/thirdparty/zstd/PATENTS
+++ /dev/null
@@ -1,33 +0,0 @@
-Additional Grant of Patent Rights Version 2
-
-"Software" means the Zstandard software distributed by Facebook, Inc.
-
-Facebook, Inc. ("Facebook") hereby grants to each recipient of the Software
-("you") a perpetual, worldwide, royalty-free, non-exclusive, irrevocable
-(subject to the termination provision below) license under any Necessary
-Claims, to make, have made, use, sell, offer to sell, import, and otherwise
-transfer the Software. For avoidance of doubt, no license is granted under
-Facebook’s rights in any patent claims that are infringed by (i) modifications
-to the Software made by you or any third party or (ii) the Software in
-combination with any software or other technology.
-
-The license granted hereunder will terminate, automatically and without notice,
-if you (or any of your subsidiaries, corporate affiliates or agents) initiate
-directly or indirectly, or take a direct financial interest in, any Patent
-Assertion: (i) against Facebook or any of its subsidiaries or corporate
-affiliates, (ii) against any party if such Patent Assertion arises in whole or
-in part from any software, technology, product or service of Facebook or any of
-its subsidiaries or corporate affiliates, or (iii) against any party relating
-to the Software. Notwithstanding the foregoing, if Facebook or any of its
-subsidiaries or corporate affiliates files a lawsuit alleging patent
-infringement against you in the first instance, and you respond by filing a
-patent infringement counterclaim in that lawsuit against that party that is
-unrelated to the Software, the license granted hereunder will not terminate
-under section (i) of this paragraph due to such counterclaim.
-
-A "Necessary Claim" is a claim of a patent owned by Facebook that is
-necessarily infringed by the Software standing alone.
-
-A "Patent Assertion" is any lawsuit or other action alleging direct, indirect,
-or contributory infringement or inducement to infringe any patent, including a
-cross-claim or counterclaim.
diff --git a/thirdparty/zstd/README.md b/thirdparty/zstd/README.md
deleted file mode 100644
index f37be4542c..0000000000
--- a/thirdparty/zstd/README.md
+++ /dev/null
@@ -1,153 +0,0 @@
- __Zstandard__, or `zstd` as short version, is a fast lossless compression algorithm,
- targeting real-time compression scenarios at zlib-level and better compression ratios.
-
-It is provided as an open-source BSD-licensed **C** library,
-and a command line utility producing and decoding `.zst` and `.gz` files.
-For other programming languages,
-you can consult a list of known ports on [Zstandard homepage](http://www.zstd.net/#other-languages).
-
-| dev branch status |
-|-------------------|
-| [![Build Status][travisDevBadge]][travisLink] [![Build status][AppveyorDevBadge]][AppveyorLink] [![Build status][CircleDevBadge]][CircleLink]
-
-[travisDevBadge]: https://travis-ci.org/facebook/zstd.svg?branch=dev "Continuous Integration test suite"
-[travisLink]: https://travis-ci.org/facebook/zstd
-[AppveyorDevBadge]: https://ci.appveyor.com/api/projects/status/xt38wbdxjk5mrbem/branch/dev?svg=true "Windows test suite"
-[AppveyorLink]: https://ci.appveyor.com/project/YannCollet/zstd-p0yf0
-[CircleDevBadge]: https://circleci.com/gh/facebook/zstd/tree/dev.svg?style=shield "Short test suite"
-[CircleLink]: https://circleci.com/gh/facebook/zstd
-
-
-As a reference, several fast compression algorithms were tested and compared
-on a server running Linux Debian (`Linux version 4.8.0-1-amd64`),
-with a Core i7-6700K CPU @ 4.0GHz,
-using [lzbench], an open-source in-memory benchmark by @inikep
-compiled with GCC 6.3.0,
-on the [Silesia compression corpus].
-
-[lzbench]: https://github.com/inikep/lzbench
-[Silesia compression corpus]: http://sun.aei.polsl.pl/~sdeor/index.php?page=silesia
-
-| Compressor name | Ratio | Compression| Decompress.|
-| --------------- | ------| -----------| ---------- |
-| **zstd 1.1.3 -1** | 2.877 | 430 MB/s | 1110 MB/s |
-| zlib 1.2.8 -1 | 2.743 | 110 MB/s | 400 MB/s |
-| brotli 0.5.2 -0 | 2.708 | 400 MB/s | 430 MB/s |
-| quicklz 1.5.0 -1 | 2.238 | 550 MB/s | 710 MB/s |
-| lzo1x 2.09 -1 | 2.108 | 650 MB/s | 830 MB/s |
-| lz4 1.7.5 | 2.101 | 720 MB/s | 3600 MB/s |
-| snappy 1.1.3 | 2.091 | 500 MB/s | 1650 MB/s |
-| lzf 3.6 -1 | 2.077 | 400 MB/s | 860 MB/s |
-
-[zlib]:http://www.zlib.net/
-[LZ4]: http://www.lz4.org/
-
-Zstd can also offer stronger compression ratios at the cost of compression speed.
-Speed vs Compression trade-off is configurable by small increments. Decompression speed is preserved and remains roughly the same at all settings, a property shared by most LZ compression algorithms, such as [zlib] or lzma.
-
-The following tests were run
-on a server running Linux Debian (`Linux version 4.8.0-1-amd64`)
-with a Core i7-6700K CPU @ 4.0GHz,
-using [lzbench], an open-source in-memory benchmark by @inikep
-compiled with GCC 6.3.0,
-on the [Silesia compression corpus].
-
-Compression Speed vs Ratio | Decompression Speed
----------------------------|--------------------
-![Compression Speed vs Ratio](doc/images/Cspeed4.png "Compression Speed vs Ratio") | ![Decompression Speed](doc/images/Dspeed4.png "Decompression Speed")
-
-Several algorithms can produce higher compression ratios, but at slower speeds, falling outside of the graph.
-For a larger picture including very slow modes, [click on this link](doc/images/DCspeed5.png) .
-
-
-### The case for Small Data compression
-
-Previous charts provide results applicable to typical file and stream scenarios (several MB). Small data comes with different perspectives.
-
-The smaller the amount of data to compress, the more difficult it is to compress. This problem is common to all compression algorithms, and reason is, compression algorithms learn from past data how to compress future data. But at the beginning of a new data set, there is no "past" to build upon.
-
-To solve this situation, Zstd offers a __training mode__, which can be used to tune the algorithm for a selected type of data.
-Training Zstandard is achieved by providing it with a few samples (one file per sample). The result of this training is stored in a file called "dictionary", which must be loaded before compression and decompression.
-Using this dictionary, the compression ratio achievable on small data improves dramatically.
-
-The following example uses the `github-users` [sample set](https://github.com/facebook/zstd/releases/tag/v1.1.3), created from [github public API](https://developer.github.com/v3/users/#get-all-users).
-It consists of roughly 10K records weighing about 1KB each.
-
-Compression Ratio | Compression Speed | Decompression Speed
-------------------|-------------------|--------------------
-![Compression Ratio](doc/images/dict-cr.png "Compression Ratio") | ![Compression Speed](doc/images/dict-cs.png "Compression Speed") | ![Decompression Speed](doc/images/dict-ds.png "Decompression Speed")
-
-
-These compression gains are achieved while simultaneously providing _faster_ compression and decompression speeds.
-
-Training works if there is some correlation in a family of small data samples. The more data-specific a dictionary is, the more efficient it is (there is no _universal dictionary_).
-Hence, deploying one dictionary per type of data will provide the greatest benefits.
-Dictionary gains are mostly effective in the first few KB. Then, the compression algorithm will gradually use previously decoded content to better compress the rest of the file.
-
-#### Dictionary compression How To :
-
-1) Create the dictionary
-
-`zstd --train FullPathToTrainingSet/* -o dictionaryName`
-
-2) Compress with dictionary
-
-`zstd -D dictionaryName FILE`
-
-3) Decompress with dictionary
-
-`zstd -D dictionaryName --decompress FILE.zst`
-
-
-### Build
-
-Once you have the repository cloned, there are multiple ways provided to build Zstandard.
-
-#### Makefile
-
-If your system is compatible with a standard `make` (or `gmake`) binary generator,
-you can simply run it at the root directory.
-It will generate `zstd` within root directory.
-
-Other available options include :
-- `make install` : create and install zstd binary, library and man page
-- `make test` : create and run `zstd` and test tools on local platform
-
-#### cmake
-
-A `cmake` project generator is provided within `build/cmake`.
-It can generate Makefiles or other build scripts
-to create `zstd` binary, and `libzstd` dynamic and static libraries.
-
-#### Meson
-
-A Meson project is provided within `contrib/meson`.
-
-#### Visual Studio (Windows)
-
-Going into `build` directory, you will find additional possibilities :
-- Projects for Visual Studio 2005, 2008 and 2010
- + VS2010 project is compatible with VS2012, VS2013 and VS2015
-- Automated build scripts for Visual compiler by @KrzysFR , in `build/VS_scripts`,
- which will build `zstd` cli and `libzstd` library without any need to open Visual Studio solution.
-
-
-### Status
-
-Zstandard is currently deployed within Facebook. It is used daily to compress and decompress very large amounts of data in multiple formats and use cases.
-Zstandard is considered safe for production environments.
-
-### License
-
-Zstandard is [BSD-licensed](LICENSE). We also provide an [additional patent grant](PATENTS).
-
-### Contributing
-
-The "dev" branch is the one where all contributions will be merged before reaching "master".
-If you plan to propose a patch, please commit into the "dev" branch or its own feature branch.
-Direct commit to "master" are not permitted.
-For more information, please read [CONTRIBUTING](CONTRIBUTING.md).
-
-### Miscellaneous
-
-Zstd entropy stage is provided by [Huff0 and FSE, from Finite State Entropy library](https://github.com/Cyan4973/FiniteStateEntropy).
diff --git a/thirdparty/zstd/common/bitstream.h b/thirdparty/zstd/common/bitstream.h
index 07b85026c9..06121f21c5 100644
--- a/thirdparty/zstd/common/bitstream.h
+++ b/thirdparty/zstd/common/bitstream.h
@@ -80,9 +80,9 @@ extern "C" {
* bitStream encoding API (write forward)
********************************************/
/* bitStream can mix input from multiple sources.
-* A critical property of these streams is that they encode and decode in **reverse** direction.
-* So the first bit sequence you add will be the last to be read, like a LIFO stack.
-*/
+ * A critical property of these streams is that they encode and decode in **reverse** direction.
+ * So the first bit sequence you add will be the last to be read, like a LIFO stack.
+ */
typedef struct
{
size_t bitContainer;
@@ -203,7 +203,7 @@ static const unsigned BIT_mask[] = { 0, 1, 3, 7, 0xF, 0x1F, 0x3F, 0x7F,
/*! BIT_initCStream() :
* `dstCapacity` must be > sizeof(size_t)
* @return : 0 if success,
- otherwise an error code (can be tested using ERR_isError() ) */
+ * otherwise an error code (can be tested using ERR_isError()) */
MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
void* startPtr, size_t dstCapacity)
{
@@ -217,8 +217,8 @@ MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
}
/*! BIT_addBits() :
- can add up to 26 bits into `bitC`.
- Does not check for register overflow ! */
+ * can add up to 26 bits into `bitC`.
+ * Note : does not check for register overflow ! */
MEM_STATIC void BIT_addBits(BIT_CStream_t* bitC,
size_t value, unsigned nbBits)
{
@@ -268,7 +268,7 @@ MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC)
/*! BIT_closeCStream() :
* @return : size of CStream, in bytes,
- or 0 if it could not fit into dstBuffer */
+ * or 0 if it could not fit into dstBuffer */
MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC)
{
BIT_addBitsFast(bitC, 1, 1); /* endMark */
@@ -279,14 +279,14 @@ MEM_STATIC size_t BIT_closeCStream(BIT_CStream_t* bitC)
/*-********************************************************
-* bitStream decoding
+* bitStream decoding
**********************************************************/
/*! BIT_initDStream() :
-* Initialize a BIT_DStream_t.
-* `bitD` : a pointer to an already allocated BIT_DStream_t structure.
-* `srcSize` must be the *exact* size of the bitStream, in bytes.
-* @return : size of stream (== srcSize) or an errorCode if a problem is detected
-*/
+ * Initialize a BIT_DStream_t.
+ * `bitD` : a pointer to an already allocated BIT_DStream_t structure.
+ * `srcSize` must be the *exact* size of the bitStream, in bytes.
+ * @return : size of stream (== srcSize), or an errorCode if a problem is detected
+ */
MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, size_t srcSize)
{
if (srcSize < 1) { memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); }
@@ -305,29 +305,30 @@ MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, si
bitD->bitContainer = *(const BYTE*)(bitD->start);
switch(srcSize)
{
- case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
- /* fall-through */
+ case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
+ /* fall-through */
- case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
- /* fall-through */
+ case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
+ /* fall-through */
- case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
- /* fall-through */
+ case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
+ /* fall-through */
- case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
- /* fall-through */
+ case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
+ /* fall-through */
- case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
- /* fall-through */
+ case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
+ /* fall-through */
- case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8;
- /* fall-through */
+ case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8;
+ /* fall-through */
- default: break;
+ default: break;
+ }
+ { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
+ bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0;
+ if (lastByte == 0) return ERROR(corruption_detected); /* endMark not present */
}
- { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
- bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0;
- if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */ }
bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8;
}
@@ -363,9 +364,8 @@ MEM_STATIC size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
* local register is not modified.
* On 32-bits, maxNbBits==24.
* On 64-bits, maxNbBits==56.
- * @return : value extracted
- */
- MEM_STATIC size_t BIT_lookBits(const BIT_DStream_t* bitD, U32 nbBits)
+ * @return : value extracted */
+MEM_STATIC size_t BIT_lookBits(const BIT_DStream_t* bitD, U32 nbBits)
{
#if defined(__BMI__) && defined(__GNUC__) /* experimental; fails if bitD->bitsConsumed + nbBits > sizeof(bitD->bitContainer)*8 */
return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits);
@@ -392,8 +392,7 @@ MEM_STATIC void BIT_skipBits(BIT_DStream_t* bitD, U32 nbBits)
/*! BIT_readBits() :
* Read (consume) next n bits from local register and update.
* Pay attention to not read more than nbBits contained into local register.
- * @return : extracted value.
- */
+ * @return : extracted value. */
MEM_STATIC size_t BIT_readBits(BIT_DStream_t* bitD, U32 nbBits)
{
size_t const value = BIT_lookBits(bitD, nbBits);
@@ -402,7 +401,7 @@ MEM_STATIC size_t BIT_readBits(BIT_DStream_t* bitD, U32 nbBits)
}
/*! BIT_readBitsFast() :
-* unsafe version; only works only if nbBits >= 1 */
+ * unsafe version; only works only if nbBits >= 1 */
MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, U32 nbBits)
{
size_t const value = BIT_lookBitsFast(bitD, nbBits);
@@ -412,10 +411,10 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, U32 nbBits)
}
/*! BIT_reloadDStream() :
-* Refill `bitD` from buffer previously set in BIT_initDStream() .
-* This function is safe, it guarantees it will not read beyond src buffer.
-* @return : status of `BIT_DStream_t` internal register.
- if status == BIT_DStream_unfinished, internal register is filled with >= (sizeof(bitD->bitContainer)*8 - 7) bits */
+ * Refill `bitD` from buffer previously set in BIT_initDStream() .
+ * This function is safe, it guarantees it will not read beyond src buffer.
+ * @return : status of `BIT_DStream_t` internal register.
+ * when status == BIT_DStream_unfinished, internal register is filled with at least 25 or 57 bits */
MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD)
{
if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */
@@ -446,8 +445,8 @@ MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD)
}
/*! BIT_endOfDStream() :
-* @return Tells if DStream has exactly reached its end (all bits consumed).
-*/
+ * @return : 1 if DStream has _exactly_ reached its end (all bits consumed).
+ */
MEM_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t* DStream)
{
return ((DStream->ptr == DStream->start) && (DStream->bitsConsumed == sizeof(DStream->bitContainer)*8));
diff --git a/thirdparty/zstd/common/compiler.h b/thirdparty/zstd/common/compiler.h
new file mode 100644
index 0000000000..d7225c443e
--- /dev/null
+++ b/thirdparty/zstd/common/compiler.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
+#ifndef ZSTD_COMPILER_H
+#define ZSTD_COMPILER_H
+
+/*-*******************************************************
+* Compiler specifics
+*********************************************************/
+/* force inlining */
+#if defined (__GNUC__) || defined(__cplusplus) || defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
+# define INLINE_KEYWORD inline
+#else
+# define INLINE_KEYWORD
+#endif
+
+#if defined(__GNUC__)
+# define FORCE_INLINE_ATTR __attribute__((always_inline))
+#elif defined(_MSC_VER)
+# define FORCE_INLINE_ATTR __forceinline
+#else
+# define FORCE_INLINE_ATTR
+#endif
+
+/**
+ * FORCE_INLINE_TEMPLATE is used to define C "templates", which take constant
+ * parameters. They must be inlined for the compiler to elimininate the constant
+ * branches.
+ */
+#define FORCE_INLINE_TEMPLATE static INLINE_KEYWORD FORCE_INLINE_ATTR
+/**
+ * HINT_INLINE is used to help the compiler generate better code. It is *not*
+ * used for "templates", so it can be tweaked based on the compilers
+ * performance.
+ *
+ * gcc-4.8 and gcc-4.9 have been shown to benefit from leaving off the
+ * always_inline attribute.
+ *
+ * clang up to 5.0.0 (trunk) benefit tremendously from the always_inline
+ * attribute.
+ */
+#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 8 && __GNUC__ < 5
+# define HINT_INLINE static INLINE_KEYWORD
+#else
+# define HINT_INLINE static INLINE_KEYWORD FORCE_INLINE_ATTR
+#endif
+
+/* force no inlining */
+#ifdef _MSC_VER
+# define FORCE_NOINLINE static __declspec(noinline)
+#else
+# ifdef __GNUC__
+# define FORCE_NOINLINE static __attribute__((__noinline__))
+# else
+# define FORCE_NOINLINE static
+# endif
+#endif
+
+/* prefetch */
+#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86)) /* _mm_prefetch() is not defined outside of x86/x64 */
+# include <mmintrin.h> /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */
+# define PREFETCH(ptr) _mm_prefetch((const char*)ptr, _MM_HINT_T0)
+#elif defined(__GNUC__)
+# define PREFETCH(ptr) __builtin_prefetch(ptr, 0, 0)
+#else
+# define PREFETCH(ptr) /* disabled */
+#endif
+
+/* disable warnings */
+#ifdef _MSC_VER /* Visual Studio */
+# include <intrin.h> /* For Visual 2005 */
+# pragma warning(disable : 4100) /* disable: C4100: unreferenced formal parameter */
+# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
+# pragma warning(disable : 4204) /* disable: C4204: non-constant aggregate initializer */
+# pragma warning(disable : 4214) /* disable: C4214: non-int bitfields */
+# pragma warning(disable : 4324) /* disable: C4324: padded structure */
+#endif
+
+#endif /* ZSTD_COMPILER_H */
diff --git a/thirdparty/zstd/common/error_private.c b/thirdparty/zstd/common/error_private.c
index 2d752cd23a..b5b14b509c 100644
--- a/thirdparty/zstd/common/error_private.c
+++ b/thirdparty/zstd/common/error_private.c
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
/* The purpose of this file is to have a single list of error strings embedded in binary */
@@ -20,19 +20,17 @@ const char* ERR_getErrorString(ERR_enum code)
case PREFIX(GENERIC): return "Error (generic)";
case PREFIX(prefix_unknown): return "Unknown frame descriptor";
case PREFIX(version_unsupported): return "Version not supported";
- case PREFIX(parameter_unknown): return "Unknown parameter type";
case PREFIX(frameParameter_unsupported): return "Unsupported frame parameter";
- case PREFIX(frameParameter_unsupportedBy32bits): return "Frame parameter unsupported in 32-bits mode";
case PREFIX(frameParameter_windowTooLarge): return "Frame requires too much memory for decoding";
- case PREFIX(compressionParameter_unsupported): return "Compression parameter is not supported";
- case PREFIX(compressionParameter_outOfBound): return "Compression parameter is out of bound";
+ case PREFIX(corruption_detected): return "Corrupted block detected";
+ case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
+ case PREFIX(parameter_unsupported): return "Unsupported parameter";
+ case PREFIX(parameter_outOfBound): return "Parameter is out of bound";
case PREFIX(init_missing): return "Context should be init first";
case PREFIX(memory_allocation): return "Allocation error : not enough memory";
case PREFIX(stage_wrong): return "Operation not authorized at current processing stage";
case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
case PREFIX(srcSize_wrong): return "Src size is incorrect";
- case PREFIX(corruption_detected): return "Corrupted block detected";
- case PREFIX(checksum_wrong): return "Restored data doesn't match checksum";
case PREFIX(tableLog_tooLarge): return "tableLog requires too much memory : unsupported";
case PREFIX(maxSymbolValue_tooLarge): return "Unsupported max Symbol Value : too large";
case PREFIX(maxSymbolValue_tooSmall): return "Specified maxSymbolValue is too small";
diff --git a/thirdparty/zstd/common/error_private.h b/thirdparty/zstd/common/error_private.h
index 1bc2e49548..9dd9a87cfa 100644
--- a/thirdparty/zstd/common/error_private.h
+++ b/thirdparty/zstd/common/error_private.h
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
/* Note : this module is expected to remain private, do not expose it */
diff --git a/thirdparty/zstd/common/fse.h b/thirdparty/zstd/common/fse.h
index 6d5d41def1..1c44f83750 100644
--- a/thirdparty/zstd/common/fse.h
+++ b/thirdparty/zstd/common/fse.h
@@ -31,13 +31,14 @@
You can contact the author at :
- Source repository : https://github.com/Cyan4973/FiniteStateEntropy
****************************************************************** */
-#ifndef FSE_H
-#define FSE_H
#if defined (__cplusplus)
extern "C" {
#endif
+#ifndef FSE_H
+#define FSE_H
+
/*-*****************************************
* Dependencies
@@ -297,8 +298,10 @@ FSE_decompress_usingDTable() result will tell how many bytes were regenerated (<
If there is an error, the function will return an error code, which can be tested using FSE_isError(). (ex: dst buffer too small)
*/
+#endif /* FSE_H */
-#ifdef FSE_STATIC_LINKING_ONLY
+#if defined(FSE_STATIC_LINKING_ONLY) && !defined(FSE_H_FSE_STATIC_LINKING_ONLY)
+#define FSE_H_FSE_STATIC_LINKING_ONLY
/* *** Dependency *** */
#include "bitstream.h"
@@ -381,6 +384,11 @@ size_t FSE_buildDTable_rle (FSE_DTable* dt, unsigned char symbolValue);
size_t FSE_decompress_wksp(void* dst, size_t dstCapacity, const void* cSrc, size_t cSrcSize, FSE_DTable* workSpace, unsigned maxLog);
/**< same as FSE_decompress(), using an externally allocated `workSpace` produced with `FSE_DTABLE_SIZE_U32(maxLog)` */
+typedef enum {
+ FSE_repeat_none, /**< Cannot use the previous table */
+ FSE_repeat_check, /**< Can use the previous table but it must be checked */
+ FSE_repeat_valid /**< Can use the previous table and it is asumed to be valid */
+ } FSE_repeat;
/* *****************************************
* FSE symbol compression API
@@ -694,5 +702,3 @@ MEM_STATIC unsigned FSE_endOfDState(const FSE_DState_t* DStatePtr)
#if defined (__cplusplus)
}
#endif
-
-#endif /* FSE_H */
diff --git a/thirdparty/zstd/common/fse_decompress.c b/thirdparty/zstd/common/fse_decompress.c
index 8474a4c079..8e3f0035f6 100644
--- a/thirdparty/zstd/common/fse_decompress.c
+++ b/thirdparty/zstd/common/fse_decompress.c
@@ -34,34 +34,15 @@
/* **************************************************************
-* Compiler specifics
-****************************************************************/
-#ifdef _MSC_VER /* Visual Studio */
-# define FORCE_INLINE static __forceinline
-# include <intrin.h> /* For Visual 2005 */
-# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
-# pragma warning(disable : 4214) /* disable: C4214: non-int bitfields */
-#else
-# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
-# ifdef __GNUC__
-# define FORCE_INLINE static inline __attribute__((always_inline))
-# else
-# define FORCE_INLINE static inline
-# endif
-# else
-# define FORCE_INLINE static
-# endif /* __STDC_VERSION__ */
-#endif
-
-
-/* **************************************************************
* Includes
****************************************************************/
#include <stdlib.h> /* malloc, free, qsort */
#include <string.h> /* memcpy, memset */
#include "bitstream.h"
+#include "compiler.h"
#define FSE_STATIC_LINKING_ONLY
#include "fse.h"
+#include "error_private.h"
/* **************************************************************
@@ -216,7 +197,7 @@ size_t FSE_buildDTable_raw (FSE_DTable* dt, unsigned nbBits)
return 0;
}
-FORCE_INLINE size_t FSE_decompress_usingDTable_generic(
+FORCE_INLINE_TEMPLATE size_t FSE_decompress_usingDTable_generic(
void* dst, size_t maxDstSize,
const void* cSrc, size_t cSrcSize,
const FSE_DTable* dt, const unsigned fast)
diff --git a/thirdparty/zstd/common/huf.h b/thirdparty/zstd/common/huf.h
index dabd359915..2b3015a84c 100644
--- a/thirdparty/zstd/common/huf.h
+++ b/thirdparty/zstd/common/huf.h
@@ -31,13 +31,13 @@
You can contact the author at :
- Source repository : https://github.com/Cyan4973/FiniteStateEntropy
****************************************************************** */
-#ifndef HUF_H_298734234
-#define HUF_H_298734234
#if defined (__cplusplus)
extern "C" {
#endif
+#ifndef HUF_H_298734234
+#define HUF_H_298734234
/* *** Dependencies *** */
#include <stddef.h> /* size_t */
@@ -124,6 +124,7 @@ HUF_PUBLIC_API size_t HUF_compress4X_wksp (void* dst, size_t dstCapacity, const
#define HUF_DECOMPRESS_WORKSPACE_SIZE (2 << 10)
#define HUF_DECOMPRESS_WORKSPACE_SIZE_U32 (HUF_DECOMPRESS_WORKSPACE_SIZE / sizeof(U32))
+#endif /* HUF_H_298734234 */
/* ******************************************************************
* WARNING !!
@@ -132,7 +133,8 @@ HUF_PUBLIC_API size_t HUF_compress4X_wksp (void* dst, size_t dstCapacity, const
* because they are not guaranteed to remain stable in the future.
* Only consider them in association with static linking.
*******************************************************************/
-#ifdef HUF_STATIC_LINKING_ONLY
+#if defined(HUF_STATIC_LINKING_ONLY) && !defined(HUF_H_HUF_STATIC_LINKING_ONLY)
+#define HUF_H_HUF_STATIC_LINKING_ONLY
/* *** Dependencies *** */
#include "mem.h" /* U32 */
@@ -295,9 +297,6 @@ size_t HUF_decompress1X4_usingDTable(void* dst, size_t maxDstSize, const void* c
#endif /* HUF_STATIC_LINKING_ONLY */
-
#if defined (__cplusplus)
}
#endif
-
-#endif /* HUF_H_298734234 */
diff --git a/thirdparty/zstd/common/mem.h b/thirdparty/zstd/common/mem.h
index b0e5bf60b4..df85404fb8 100644
--- a/thirdparty/zstd/common/mem.h
+++ b/thirdparty/zstd/common/mem.h
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
#ifndef MEM_H_MODULE
@@ -110,7 +110,7 @@ Only use if no other choice to achieve best performance on target platform */
MEM_STATIC U16 MEM_read16(const void* memPtr) { return *(const U16*) memPtr; }
MEM_STATIC U32 MEM_read32(const void* memPtr) { return *(const U32*) memPtr; }
MEM_STATIC U64 MEM_read64(const void* memPtr) { return *(const U64*) memPtr; }
-MEM_STATIC U64 MEM_readST(const void* memPtr) { return *(const size_t*) memPtr; }
+MEM_STATIC size_t MEM_readST(const void* memPtr) { return *(const size_t*) memPtr; }
MEM_STATIC void MEM_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
MEM_STATIC void MEM_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; }
@@ -131,7 +131,7 @@ MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; }
MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign*)ptr)->u16; }
MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
-MEM_STATIC U64 MEM_readST(const void* ptr) { return ((const unalign*)ptr)->st; }
+MEM_STATIC size_t MEM_readST(const void* ptr) { return ((const unalign*)ptr)->st; }
MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; }
diff --git a/thirdparty/zstd/common/pool.c b/thirdparty/zstd/common/pool.c
index 749fa4f2f7..a227044f7f 100644
--- a/thirdparty/zstd/common/pool.c
+++ b/thirdparty/zstd/common/pool.c
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
@@ -39,6 +39,12 @@ struct POOL_ctx_s {
size_t queueHead;
size_t queueTail;
size_t queueSize;
+
+ /* The number of threads working on jobs */
+ size_t numThreadsBusy;
+ /* Indicates if the queue is empty */
+ int queueEmpty;
+
/* The mutex protects the queue */
pthread_mutex_t queueMutex;
/* Condition variable for pushers to wait on when the queue is full */
@@ -60,30 +66,41 @@ static void* POOL_thread(void* opaque) {
for (;;) {
/* Lock the mutex and wait for a non-empty queue or until shutdown */
pthread_mutex_lock(&ctx->queueMutex);
- while (ctx->queueHead == ctx->queueTail && !ctx->shutdown) {
+
+ while (ctx->queueEmpty && !ctx->shutdown) {
pthread_cond_wait(&ctx->queuePopCond, &ctx->queueMutex);
}
/* empty => shutting down: so stop */
- if (ctx->queueHead == ctx->queueTail) {
+ if (ctx->queueEmpty) {
pthread_mutex_unlock(&ctx->queueMutex);
return opaque;
}
/* Pop a job off the queue */
{ POOL_job const job = ctx->queue[ctx->queueHead];
ctx->queueHead = (ctx->queueHead + 1) % ctx->queueSize;
+ ctx->numThreadsBusy++;
+ ctx->queueEmpty = ctx->queueHead == ctx->queueTail;
/* Unlock the mutex, signal a pusher, and run the job */
pthread_mutex_unlock(&ctx->queueMutex);
pthread_cond_signal(&ctx->queuePushCond);
+
job.function(job.opaque);
- }
- }
+
+ /* If the intended queue size was 0, signal after finishing job */
+ if (ctx->queueSize == 1) {
+ pthread_mutex_lock(&ctx->queueMutex);
+ ctx->numThreadsBusy--;
+ pthread_mutex_unlock(&ctx->queueMutex);
+ pthread_cond_signal(&ctx->queuePushCond);
+ } }
+ } /* for (;;) */
/* Unreachable */
}
POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
POOL_ctx *ctx;
/* Check the parameters */
- if (!numThreads || !queueSize) { return NULL; }
+ if (!numThreads) { return NULL; }
/* Allocate the context and zero initialize */
ctx = (POOL_ctx *)calloc(1, sizeof(POOL_ctx));
if (!ctx) { return NULL; }
@@ -92,15 +109,17 @@ POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
* and full queues.
*/
ctx->queueSize = queueSize + 1;
- ctx->queue = (POOL_job *)malloc(ctx->queueSize * sizeof(POOL_job));
+ ctx->queue = (POOL_job*) malloc(ctx->queueSize * sizeof(POOL_job));
ctx->queueHead = 0;
ctx->queueTail = 0;
- pthread_mutex_init(&ctx->queueMutex, NULL);
- pthread_cond_init(&ctx->queuePushCond, NULL);
- pthread_cond_init(&ctx->queuePopCond, NULL);
+ ctx->numThreadsBusy = 0;
+ ctx->queueEmpty = 1;
+ (void)pthread_mutex_init(&ctx->queueMutex, NULL);
+ (void)pthread_cond_init(&ctx->queuePushCond, NULL);
+ (void)pthread_cond_init(&ctx->queuePopCond, NULL);
ctx->shutdown = 0;
/* Allocate space for the thread handles */
- ctx->threads = (pthread_t *)malloc(numThreads * sizeof(pthread_t));
+ ctx->threads = (pthread_t*)malloc(numThreads * sizeof(pthread_t));
ctx->numThreads = 0;
/* Check for errors */
if (!ctx->threads || !ctx->queue) { POOL_free(ctx); return NULL; }
@@ -153,22 +172,37 @@ size_t POOL_sizeof(POOL_ctx *ctx) {
+ ctx->numThreads * sizeof(pthread_t);
}
-void POOL_add(void *ctxVoid, POOL_function function, void *opaque) {
- POOL_ctx *ctx = (POOL_ctx *)ctxVoid;
+/**
+ * Returns 1 if the queue is full and 0 otherwise.
+ *
+ * If the queueSize is 1 (the pool was created with an intended queueSize of 0),
+ * then a queue is empty if there is a thread free and no job is waiting.
+ */
+static int isQueueFull(POOL_ctx const* ctx) {
+ if (ctx->queueSize > 1) {
+ return ctx->queueHead == ((ctx->queueTail + 1) % ctx->queueSize);
+ } else {
+ return ctx->numThreadsBusy == ctx->numThreads ||
+ !ctx->queueEmpty;
+ }
+}
+
+void POOL_add(void* ctxVoid, POOL_function function, void *opaque) {
+ POOL_ctx* const ctx = (POOL_ctx*)ctxVoid;
if (!ctx) { return; }
pthread_mutex_lock(&ctx->queueMutex);
{ POOL_job const job = {function, opaque};
+
/* Wait until there is space in the queue for the new job */
- size_t newTail = (ctx->queueTail + 1) % ctx->queueSize;
- while (ctx->queueHead == newTail && !ctx->shutdown) {
+ while (isQueueFull(ctx) && !ctx->shutdown) {
pthread_cond_wait(&ctx->queuePushCond, &ctx->queueMutex);
- newTail = (ctx->queueTail + 1) % ctx->queueSize;
}
/* The queue is still going => there is space */
if (!ctx->shutdown) {
+ ctx->queueEmpty = 0;
ctx->queue[ctx->queueTail] = job;
- ctx->queueTail = newTail;
+ ctx->queueTail = (ctx->queueTail + 1) % ctx->queueSize;
}
}
pthread_mutex_unlock(&ctx->queueMutex);
@@ -183,22 +217,22 @@ struct POOL_ctx_s {
int data;
};
-POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
+POOL_ctx* POOL_create(size_t numThreads, size_t queueSize) {
(void)numThreads;
(void)queueSize;
- return (POOL_ctx *)malloc(sizeof(POOL_ctx));
+ return (POOL_ctx*)malloc(sizeof(POOL_ctx));
}
-void POOL_free(POOL_ctx *ctx) {
- if (ctx) free(ctx);
+void POOL_free(POOL_ctx* ctx) {
+ free(ctx);
}
-void POOL_add(void *ctx, POOL_function function, void *opaque) {
+void POOL_add(void* ctx, POOL_function function, void* opaque) {
(void)ctx;
function(opaque);
}
-size_t POOL_sizeof(POOL_ctx *ctx) {
+size_t POOL_sizeof(POOL_ctx* ctx) {
if (ctx==NULL) return 0; /* supports sizeof NULL */
return sizeof(*ctx);
}
diff --git a/thirdparty/zstd/common/pool.h b/thirdparty/zstd/common/pool.h
index 386cd674b7..264c5c9ca7 100644
--- a/thirdparty/zstd/common/pool.h
+++ b/thirdparty/zstd/common/pool.h
@@ -1,11 +1,12 @@
-/**
- * Copyright (c) 2016-present, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
+
#ifndef POOL_H
#define POOL_H
@@ -19,11 +20,10 @@ extern "C" {
typedef struct POOL_ctx_s POOL_ctx;
/*! POOL_create() :
- Create a thread pool with at most `numThreads` threads.
- `numThreads` must be at least 1.
- The maximum number of queued jobs before blocking is `queueSize`.
- `queueSize` must be at least 1.
- @return : The POOL_ctx pointer on success else NULL.
+ * Create a thread pool with at most `numThreads` threads.
+ * `numThreads` must be at least 1.
+ * The maximum number of queued jobs before blocking is `queueSize`.
+ * @return : POOL_ctx pointer on success, else NULL.
*/
POOL_ctx *POOL_create(size_t numThreads, size_t queueSize);
diff --git a/thirdparty/zstd/common/threading.h b/thirdparty/zstd/common/threading.h
index c0086139ea..ab09977a86 100644
--- a/thirdparty/zstd/common/threading.h
+++ b/thirdparty/zstd/common/threading.h
@@ -1,4 +1,3 @@
-
/**
* Copyright (c) 2016 Tino Reichardt
* All rights reserved.
@@ -42,14 +41,14 @@ extern "C" {
/* mutex */
#define pthread_mutex_t CRITICAL_SECTION
-#define pthread_mutex_init(a,b) InitializeCriticalSection((a))
+#define pthread_mutex_init(a,b) (InitializeCriticalSection((a)), 0)
#define pthread_mutex_destroy(a) DeleteCriticalSection((a))
#define pthread_mutex_lock(a) EnterCriticalSection((a))
#define pthread_mutex_unlock(a) LeaveCriticalSection((a))
/* condition variable */
#define pthread_cond_t CONDITION_VARIABLE
-#define pthread_cond_init(a, b) InitializeConditionVariable((a))
+#define pthread_cond_init(a, b) (InitializeConditionVariable((a)), 0)
#define pthread_cond_destroy(a) /* No delete */
#define pthread_cond_wait(a, b) SleepConditionVariableCS((a), (b), INFINITE)
#define pthread_cond_signal(a) WakeConditionVariable((a))
@@ -80,14 +79,14 @@ int _pthread_join(pthread_t* thread, void** value_ptr);
#else /* ZSTD_MULTITHREAD not defined */
/* No multithreading support */
-#define pthread_mutex_t int /* #define rather than typedef, as sometimes pthread support is implicit, resulting in duplicated symbols */
-#define pthread_mutex_init(a,b)
+#define pthread_mutex_t int /* #define rather than typedef, because sometimes pthread support is implicit, resulting in duplicated symbols */
+#define pthread_mutex_init(a,b) ((void)a, 0)
#define pthread_mutex_destroy(a)
#define pthread_mutex_lock(a)
#define pthread_mutex_unlock(a)
#define pthread_cond_t int
-#define pthread_cond_init(a,b)
+#define pthread_cond_init(a,b) ((void)a, 0)
#define pthread_cond_destroy(a)
#define pthread_cond_wait(a,b)
#define pthread_cond_signal(a)
diff --git a/thirdparty/zstd/common/xxhash.c b/thirdparty/zstd/common/xxhash.c
index eb44222c5f..9d9c0e963c 100644
--- a/thirdparty/zstd/common/xxhash.c
+++ b/thirdparty/zstd/common/xxhash.c
@@ -113,19 +113,25 @@ static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcp
/* *************************************
* Compiler Specific Options
***************************************/
-#ifdef _MSC_VER /* Visual Studio */
-# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
-# define FORCE_INLINE static __forceinline
+#if defined (__GNUC__) || defined(__cplusplus) || defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
+# define INLINE_KEYWORD inline
#else
-# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
-# ifdef __GNUC__
-# define FORCE_INLINE static inline __attribute__((always_inline))
-# else
-# define FORCE_INLINE static inline
-# endif
-# else
-# define FORCE_INLINE static
-# endif /* __STDC_VERSION__ */
+# define INLINE_KEYWORD
+#endif
+
+#if defined(__GNUC__)
+# define FORCE_INLINE_ATTR __attribute__((always_inline))
+#elif defined(_MSC_VER)
+# define FORCE_INLINE_ATTR __forceinline
+#else
+# define FORCE_INLINE_ATTR
+#endif
+
+#define FORCE_INLINE_TEMPLATE static INLINE_KEYWORD FORCE_INLINE_ATTR
+
+
+#ifdef _MSC_VER
+# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
#endif
@@ -248,7 +254,7 @@ typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess;
*****************************/
typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment;
-FORCE_INLINE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
{
if (align==XXH_unaligned)
return endian==XXH_littleEndian ? XXH_read32(ptr) : XXH_swap32(XXH_read32(ptr));
@@ -256,7 +262,7 @@ FORCE_INLINE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_a
return endian==XXH_littleEndian ? *(const U32*)ptr : XXH_swap32(*(const U32*)ptr);
}
-FORCE_INLINE U32 XXH_readLE32(const void* ptr, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U32 XXH_readLE32(const void* ptr, XXH_endianess endian)
{
return XXH_readLE32_align(ptr, endian, XXH_unaligned);
}
@@ -266,7 +272,7 @@ static U32 XXH_readBE32(const void* ptr)
return XXH_CPU_LITTLE_ENDIAN ? XXH_swap32(XXH_read32(ptr)) : XXH_read32(ptr);
}
-FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align)
{
if (align==XXH_unaligned)
return endian==XXH_littleEndian ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr));
@@ -274,7 +280,7 @@ FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_a
return endian==XXH_littleEndian ? *(const U64*)ptr : XXH_swap64(*(const U64*)ptr);
}
-FORCE_INLINE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U64 XXH_readLE64(const void* ptr, XXH_endianess endian)
{
return XXH_readLE64_align(ptr, endian, XXH_unaligned);
}
@@ -335,7 +341,7 @@ static U32 XXH32_round(U32 seed, U32 input)
return seed;
}
-FORCE_INLINE U32 XXH32_endian_align(const void* input, size_t len, U32 seed, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U32 XXH32_endian_align(const void* input, size_t len, U32 seed, XXH_endianess endian, XXH_alignment align)
{
const BYTE* p = (const BYTE*)input;
const BYTE* bEnd = p + len;
@@ -435,7 +441,7 @@ static U64 XXH64_mergeRound(U64 acc, U64 val)
return acc;
}
-FORCE_INLINE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
+FORCE_INLINE_TEMPLATE U64 XXH64_endian_align(const void* input, size_t len, U64 seed, XXH_endianess endian, XXH_alignment align)
{
const BYTE* p = (const BYTE*)input;
const BYTE* const bEnd = p + len;
@@ -584,7 +590,7 @@ XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, unsigned long
}
-FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state, const void* input, size_t len, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE XXH_errorcode XXH32_update_endian (XXH32_state_t* state, const void* input, size_t len, XXH_endianess endian)
{
const BYTE* p = (const BYTE*)input;
const BYTE* const bEnd = p + len;
@@ -654,7 +660,7 @@ XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* state_in, const void*
-FORCE_INLINE U32 XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U32 XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess endian)
{
const BYTE * p = (const BYTE*)state->mem32;
const BYTE* const bEnd = (const BYTE*)(state->mem32) + state->memsize;
@@ -704,7 +710,7 @@ XXH_PUBLIC_API unsigned int XXH32_digest (const XXH32_state_t* state_in)
/* **** XXH64 **** */
-FORCE_INLINE XXH_errorcode XXH64_update_endian (XXH64_state_t* state, const void* input, size_t len, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE XXH_errorcode XXH64_update_endian (XXH64_state_t* state, const void* input, size_t len, XXH_endianess endian)
{
const BYTE* p = (const BYTE*)input;
const BYTE* const bEnd = p + len;
@@ -771,7 +777,7 @@ XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* state_in, const void*
-FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess endian)
+FORCE_INLINE_TEMPLATE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess endian)
{
const BYTE * p = (const BYTE*)state->mem64;
const BYTE* const bEnd = (const BYTE*)state->mem64 + state->memsize;
diff --git a/thirdparty/zstd/common/zstd_common.c b/thirdparty/zstd/common/zstd_common.c
index f681672381..08384cabf5 100644
--- a/thirdparty/zstd/common/zstd_common.c
+++ b/thirdparty/zstd/common/zstd_common.c
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
diff --git a/thirdparty/zstd/common/zstd_errors.h b/thirdparty/zstd/common/zstd_errors.h
index 19f1597aa3..a69387b714 100644
--- a/thirdparty/zstd/common/zstd_errors.h
+++ b/thirdparty/zstd/common/zstd_errors.h
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
#ifndef ZSTD_ERRORS_H_398273423
@@ -37,43 +37,41 @@ extern "C" {
/*-****************************************
* error codes list
* note : this API is still considered unstable
- * it should not be used with a dynamic library
+ * and shall not be used with a dynamic library.
* only static linking is allowed
******************************************/
typedef enum {
- ZSTD_error_no_error,
- ZSTD_error_GENERIC,
- ZSTD_error_prefix_unknown,
- ZSTD_error_version_unsupported,
- ZSTD_error_parameter_unknown,
- ZSTD_error_frameParameter_unsupported,
- ZSTD_error_frameParameter_unsupportedBy32bits,
- ZSTD_error_frameParameter_windowTooLarge,
- ZSTD_error_compressionParameter_unsupported,
- ZSTD_error_compressionParameter_outOfBound,
- ZSTD_error_init_missing,
- ZSTD_error_memory_allocation,
- ZSTD_error_stage_wrong,
- ZSTD_error_dstSize_tooSmall,
- ZSTD_error_srcSize_wrong,
- ZSTD_error_corruption_detected,
- ZSTD_error_checksum_wrong,
- ZSTD_error_tableLog_tooLarge,
- ZSTD_error_maxSymbolValue_tooLarge,
- ZSTD_error_maxSymbolValue_tooSmall,
- ZSTD_error_dictionary_corrupted,
- ZSTD_error_dictionary_wrong,
- ZSTD_error_dictionaryCreation_failed,
- ZSTD_error_frameIndex_tooLarge,
- ZSTD_error_seekableIO,
- ZSTD_error_maxCode
+ ZSTD_error_no_error = 0,
+ ZSTD_error_GENERIC = 1,
+ ZSTD_error_prefix_unknown = 10,
+ ZSTD_error_version_unsupported = 12,
+ ZSTD_error_frameParameter_unsupported = 14,
+ ZSTD_error_frameParameter_windowTooLarge = 16,
+ ZSTD_error_corruption_detected = 20,
+ ZSTD_error_checksum_wrong = 22,
+ ZSTD_error_dictionary_corrupted = 30,
+ ZSTD_error_dictionary_wrong = 32,
+ ZSTD_error_dictionaryCreation_failed = 34,
+ ZSTD_error_parameter_unsupported = 40,
+ ZSTD_error_parameter_outOfBound = 42,
+ ZSTD_error_tableLog_tooLarge = 44,
+ ZSTD_error_maxSymbolValue_tooLarge = 46,
+ ZSTD_error_maxSymbolValue_tooSmall = 48,
+ ZSTD_error_stage_wrong = 60,
+ ZSTD_error_init_missing = 62,
+ ZSTD_error_memory_allocation = 64,
+ ZSTD_error_dstSize_tooSmall = 70,
+ ZSTD_error_srcSize_wrong = 72,
+ ZSTD_error_frameIndex_tooLarge = 100,
+ ZSTD_error_seekableIO = 102,
+ ZSTD_error_maxCode = 120 /* never EVER use this value directly, it may change in future versions! Use ZSTD_isError() instead */
} ZSTD_ErrorCode;
/*! ZSTD_getErrorCode() :
convert a `size_t` function result into a `ZSTD_ErrorCode` enum type,
which can be used to compare with enum list published above */
ZSTDERRORLIB_API ZSTD_ErrorCode ZSTD_getErrorCode(size_t functionResult);
-ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code);
+ZSTDERRORLIB_API const char* ZSTD_getErrorString(ZSTD_ErrorCode code); /**< Same as ZSTD_getErrorName, but using a `ZSTD_ErrorCode` enum argument */
#if defined (__cplusplus)
diff --git a/thirdparty/zstd/common/zstd_internal.h b/thirdparty/zstd/common/zstd_internal.h
index 49a4796476..2610528608 100644
--- a/thirdparty/zstd/common/zstd_internal.h
+++ b/thirdparty/zstd/common/zstd_internal.h
@@ -1,55 +1,28 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
#ifndef ZSTD_CCOMMON_H_MODULE
#define ZSTD_CCOMMON_H_MODULE
-/*-*******************************************************
-* Compiler specifics
-*********************************************************/
-#ifdef _MSC_VER /* Visual Studio */
-# define FORCE_INLINE static __forceinline
-# include <intrin.h> /* For Visual 2005 */
-# pragma warning(disable : 4100) /* disable: C4100: unreferenced formal parameter */
-# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
-# pragma warning(disable : 4204) /* disable: C4204: non-constant aggregate initializer */
-# pragma warning(disable : 4324) /* disable: C4324: padded structure */
-#else
-# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
-# ifdef __GNUC__
-# define FORCE_INLINE static inline __attribute__((always_inline))
-# else
-# define FORCE_INLINE static inline
-# endif
-# else
-# define FORCE_INLINE static
-# endif /* __STDC_VERSION__ */
-#endif
-
-#ifdef _MSC_VER
-# define FORCE_NOINLINE static __declspec(noinline)
-#else
-# ifdef __GNUC__
-# define FORCE_NOINLINE static __attribute__((__noinline__))
-# else
-# define FORCE_NOINLINE static
-# endif
-#endif
-
/*-*************************************
* Dependencies
***************************************/
+#include "compiler.h"
#include "mem.h"
#include "error_private.h"
#define ZSTD_STATIC_LINKING_ONLY
#include "zstd.h"
+#define FSE_STATIC_LINKING_ONLY
+#include "fse.h"
+#define HUF_STATIC_LINKING_ONLY
+#include "huf.h"
#ifndef XXH_STATIC_LINKING_ONLY
# define XXH_STATIC_LINKING_ONLY /* XXH64_state_t */
#endif
@@ -211,20 +184,6 @@ MEM_STATIC void ZSTD_wildcopy_e(void* dst, const void* src, void* dstEnd) /* s
*********************************************/
typedef struct ZSTD_stats_s ZSTD_stats_t;
-typedef struct {
- U32 off;
- U32 len;
-} ZSTD_match_t;
-
-typedef struct {
- U32 price;
- U32 off;
- U32 mlen;
- U32 litlen;
- U32 rep[ZSTD_REP_NUM];
-} ZSTD_optimal_t;
-
-
typedef struct seqDef_s {
U32 offset;
U16 litLength;
@@ -242,13 +201,31 @@ typedef struct {
BYTE* ofCode;
U32 longLengthID; /* 0 == no longLength; 1 == Lit.longLength; 2 == Match.longLength; */
U32 longLengthPos;
- /* opt */
- ZSTD_optimal_t* priceTable;
- ZSTD_match_t* matchTable;
- U32* matchLengthFreq;
- U32* litLengthFreq;
+ U32 rep[ZSTD_REP_NUM];
+ U32 repToConfirm[ZSTD_REP_NUM];
+} seqStore_t;
+
+typedef struct {
+ U32 off;
+ U32 len;
+} ZSTD_match_t;
+
+typedef struct {
+ U32 price;
+ U32 off;
+ U32 mlen;
+ U32 litlen;
+ U32 rep[ZSTD_REP_NUM];
+} ZSTD_optimal_t;
+
+typedef struct {
U32* litFreq;
+ U32* litLengthFreq;
+ U32* matchLengthFreq;
U32* offCodeFreq;
+ ZSTD_match_t* matchTable;
+ ZSTD_optimal_t* priceTable;
+
U32 matchLengthSum;
U32 matchSum;
U32 litLengthSum;
@@ -264,7 +241,19 @@ typedef struct {
U32 cachedPrice;
U32 cachedLitLength;
const BYTE* cachedLiterals;
-} seqStore_t;
+} optState_t;
+
+typedef struct {
+ U32 hufCTable[HUF_CTABLE_SIZE_U32(255)];
+ FSE_CTable offcodeCTable[FSE_CTABLE_SIZE_U32(OffFSELog, MaxOff)];
+ FSE_CTable matchlengthCTable[FSE_CTABLE_SIZE_U32(MLFSELog, MaxML)];
+ FSE_CTable litlengthCTable[FSE_CTABLE_SIZE_U32(LLFSELog, MaxLL)];
+ U32 workspace[HUF_WORKSPACE_SIZE_U32];
+ HUF_repeat hufCTable_repeatMode;
+ FSE_repeat offcode_repeatMode;
+ FSE_repeat matchlength_repeatMode;
+ FSE_repeat litlength_repeatMode;
+} ZSTD_entropyCTables_t;
const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx);
void ZSTD_seqToCodes(const seqStore_t* seqStorePtr);
@@ -338,9 +327,9 @@ typedef struct {
} blockProperties_t;
/*! ZSTD_getcBlockSize() :
- * Provides the size of compressed block from block header `src` */
- size_t ZSTD_getcBlockSize(const void* src, size_t srcSize,
- blockProperties_t* bpPtr);
+* Provides the size of compressed block from block header `src` */
+size_t ZSTD_getcBlockSize(const void* src, size_t srcSize,
+ blockProperties_t* bpPtr);
#endif /* ZSTD_CCOMMON_H_MODULE */
diff --git a/thirdparty/zstd/compress/fse_compress.c b/thirdparty/zstd/compress/fse_compress.c
index 26e8052ddc..cc9fa73514 100644
--- a/thirdparty/zstd/compress/fse_compress.c
+++ b/thirdparty/zstd/compress/fse_compress.c
@@ -33,40 +33,22 @@
****************************************************************** */
/* **************************************************************
-* Compiler specifics
-****************************************************************/
-#ifdef _MSC_VER /* Visual Studio */
-# define FORCE_INLINE static __forceinline
-# include <intrin.h> /* For Visual 2005 */
-# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
-# pragma warning(disable : 4214) /* disable: C4214: non-int bitfields */
-#else
-# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
-# ifdef __GNUC__
-# define FORCE_INLINE static inline __attribute__((always_inline))
-# else
-# define FORCE_INLINE static inline
-# endif
-# else
-# define FORCE_INLINE static
-# endif /* __STDC_VERSION__ */
-#endif
-
-
-/* **************************************************************
* Includes
****************************************************************/
#include <stdlib.h> /* malloc, free, qsort */
#include <string.h> /* memcpy, memset */
#include <stdio.h> /* printf (debug) */
#include "bitstream.h"
+#include "compiler.h"
#define FSE_STATIC_LINKING_ONLY
#include "fse.h"
+#include "error_private.h"
/* **************************************************************
* Error Management
****************************************************************/
+#define FSE_isError ERR_isError
#define FSE_STATIC_ASSERT(c) { enum { FSE_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */
@@ -781,7 +763,7 @@ size_t FSE_compress_usingCTable (void* dst, size_t dstSize,
size_t FSE_compressBound(size_t size) { return FSE_COMPRESSBOUND(size); }
-#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return f
+#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return e
#define CHECK_F(f) { CHECK_V_F(_var_err__, f); }
/* FSE_compress_wksp() :
diff --git a/thirdparty/zstd/compress/huf_compress.c b/thirdparty/zstd/compress/huf_compress.c
index 7af0789a9c..2a47c18205 100644
--- a/thirdparty/zstd/compress/huf_compress.c
+++ b/thirdparty/zstd/compress/huf_compress.c
@@ -50,13 +50,15 @@
#include "fse.h" /* header compression */
#define HUF_STATIC_LINKING_ONLY
#include "huf.h"
+#include "error_private.h"
/* **************************************************************
* Error Management
****************************************************************/
+#define HUF_isError ERR_isError
#define HUF_STATIC_ASSERT(c) { enum { HUF_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */
-#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return f
+#define CHECK_V_F(e, f) size_t const e = f; if (ERR_isError(e)) return e
#define CHECK_F(f) { CHECK_V_F(_var_err__, f); }
@@ -436,7 +438,7 @@ static void HUF_encodeSymbol(BIT_CStream_t* bitCPtr, U32 symbol, const HUF_CElt*
size_t HUF_compressBound(size_t size) { return HUF_COMPRESSBOUND(size); }
-#define HUF_FLUSHBITS(s) (fast ? BIT_flushBitsFast(s) : BIT_flushBits(s))
+#define HUF_FLUSHBITS(s) BIT_flushBits(s)
#define HUF_FLUSHBITS_1(stream) \
if (sizeof((stream)->bitContainer)*8 < HUF_TABLELOG_MAX*2+7) HUF_FLUSHBITS(stream)
@@ -451,7 +453,6 @@ size_t HUF_compress1X_usingCTable(void* dst, size_t dstSize, const void* src, si
BYTE* const oend = ostart + dstSize;
BYTE* op = ostart;
size_t n;
- const unsigned fast = (dstSize >= HUF_BLOCKBOUND(srcSize));
BIT_CStream_t bitC;
/* init */
diff --git a/thirdparty/zstd/compress/zstd_compress.c b/thirdparty/zstd/compress/zstd_compress.c
index 9300357f2d..0322c03eb3 100644
--- a/thirdparty/zstd/compress/zstd_compress.c
+++ b/thirdparty/zstd/compress/zstd_compress.c
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
@@ -36,13 +36,6 @@ static const U32 g_searchStrength = 8; /* control skip over incompressible dat
#define HASH_READ_SIZE 8
typedef enum { ZSTDcs_created=0, ZSTDcs_init, ZSTDcs_ongoing, ZSTDcs_ending } ZSTD_compressionStage_e;
-/* entropy tables always have same size */
-static size_t const hufCTable_size = HUF_CTABLE_SIZE(255);
-static size_t const litlengthCTable_size = FSE_CTABLE_SIZE(LLFSELog, MaxLL);
-static size_t const offcodeCTable_size = FSE_CTABLE_SIZE(OffFSELog, MaxOff);
-static size_t const matchlengthCTable_size = FSE_CTABLE_SIZE(MLFSELog, MaxML);
-static size_t const entropyScratchSpace_size = HUF_WORKSPACE_SIZE;
-
/*-*************************************
* Helper functions
@@ -89,8 +82,6 @@ struct ZSTD_CCtx_s {
U32 loadedDictEnd; /* index of end of dictionary */
U32 forceWindow; /* force back-references to respect limit of 1<<wLog, even for dictionary */
ZSTD_compressionStage_e stage;
- U32 rep[ZSTD_REP_NUM];
- U32 repToConfirm[ZSTD_REP_NUM];
U32 dictID;
int compressionLevel;
ZSTD_parameters requestedParams;
@@ -105,16 +96,11 @@ struct ZSTD_CCtx_s {
size_t staticSize;
seqStore_t seqStore; /* sequences storage ptrs */
+ optState_t optState;
U32* hashTable;
U32* hashTable3;
U32* chainTable;
- HUF_repeat hufCTable_repeatMode;
- HUF_CElt* hufCTable;
- U32 fseCTables_ready;
- FSE_CTable* offcodeCTable;
- FSE_CTable* matchlengthCTable;
- FSE_CTable* litlengthCTable;
- unsigned* entropyScratchSpace;
+ ZSTD_entropyCTables_t* entropy;
/* streaming */
char* inBuff;
@@ -174,19 +160,9 @@ ZSTD_CCtx* ZSTD_initStaticCCtx(void *workspace, size_t workspaceSize)
cctx->workSpaceSize = workspaceSize - sizeof(ZSTD_CCtx);
/* entropy space (never moves) */
- /* note : this code should be shared with resetCCtx, rather than copy/pasted */
- { void* ptr = cctx->workSpace;
- cctx->hufCTable = (HUF_CElt*)ptr;
- ptr = (char*)cctx->hufCTable + hufCTable_size;
- cctx->offcodeCTable = (FSE_CTable*) ptr;
- ptr = (char*)ptr + offcodeCTable_size;
- cctx->matchlengthCTable = (FSE_CTable*) ptr;
- ptr = (char*)ptr + matchlengthCTable_size;
- cctx->litlengthCTable = (FSE_CTable*) ptr;
- ptr = (char*)ptr + litlengthCTable_size;
- assert(((size_t)ptr & 3) == 0); /* ensure correct alignment */
- cctx->entropyScratchSpace = (unsigned*) ptr;
- }
+ if (cctx->workSpaceSize < sizeof(ZSTD_entropyCTables_t)) return NULL;
+ assert(((size_t)cctx->workSpace & 7) == 0); /* ensure correct alignment */
+ cctx->entropy = (ZSTD_entropyCTables_t*)cctx->workSpace;
return cctx;
}
@@ -237,7 +213,7 @@ size_t ZSTD_setCCtxParameter(ZSTD_CCtx* cctx, ZSTD_CCtxParameter param, unsigned
ZSTD_STATIC_ASSERT(ZSTD_dm_auto==0);
ZSTD_STATIC_ASSERT(ZSTD_dm_rawContent==1);
case ZSTD_p_forceRawDict : cctx->dictMode = (ZSTD_dictMode_e)(value>0); return 0;
- default: return ERROR(parameter_unknown);
+ default: return ERROR(parameter_unsupported);
}
}
@@ -251,9 +227,9 @@ static void ZSTD_cLevelToCParams(ZSTD_CCtx* cctx)
cctx->compressionLevel = ZSTD_CLEVEL_CUSTOM;
}
-#define CLAMPCHECK(val,min,max) { \
- if (((val)<(min)) | ((val)>(max))) { \
- return ERROR(compressionParameter_outOfBound); \
+#define CLAMPCHECK(val,min,max) { \
+ if (((val)<(min)) | ((val)>(max))) { \
+ return ERROR(parameter_outOfBound); \
} }
size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value)
@@ -349,7 +325,7 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
/* restrict dictionary mode, to "rawContent" or "fullDict" only */
ZSTD_STATIC_ASSERT((U32)ZSTD_dm_fullDict > (U32)ZSTD_dm_rawContent);
if (value > (unsigned)ZSTD_dm_fullDict)
- return ERROR(compressionParameter_outOfBound);
+ return ERROR(parameter_outOfBound);
cctx->dictMode = (ZSTD_dictMode_e)value;
return 0;
@@ -370,31 +346,31 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
if (value==0) return 0;
DEBUGLOG(5, " setting nbThreads : %u", value);
#ifndef ZSTD_MULTITHREAD
- if (value > 1) return ERROR(compressionParameter_unsupported);
+ if (value > 1) return ERROR(parameter_unsupported);
#endif
if ((value>1) && (cctx->nbThreads != value)) {
if (cctx->staticSize) /* MT not compatible with static alloc */
- return ERROR(compressionParameter_unsupported);
+ return ERROR(parameter_unsupported);
ZSTDMT_freeCCtx(cctx->mtctx);
cctx->nbThreads = 1;
- cctx->mtctx = ZSTDMT_createCCtx(value);
+ cctx->mtctx = ZSTDMT_createCCtx_advanced(value, cctx->customMem);
if (cctx->mtctx == NULL) return ERROR(memory_allocation);
}
cctx->nbThreads = value;
return 0;
case ZSTD_p_jobSize:
- if (cctx->nbThreads <= 1) return ERROR(compressionParameter_unsupported);
+ if (cctx->nbThreads <= 1) return ERROR(parameter_unsupported);
assert(cctx->mtctx != NULL);
return ZSTDMT_setMTCtxParameter(cctx->mtctx, ZSTDMT_p_sectionSize, value);
case ZSTD_p_overlapSizeLog:
DEBUGLOG(5, " setting overlap with nbThreads == %u", cctx->nbThreads);
- if (cctx->nbThreads <= 1) return ERROR(compressionParameter_unsupported);
+ if (cctx->nbThreads <= 1) return ERROR(parameter_unsupported);
assert(cctx->mtctx != NULL);
return ZSTDMT_setMTCtxParameter(cctx->mtctx, ZSTDMT_p_overlapSectionLog, value);
- default: return ERROR(parameter_unknown);
+ default: return ERROR(parameter_unsupported);
}
}
@@ -474,7 +450,8 @@ size_t ZSTD_checkCParams(ZSTD_compressionParameters cParams)
CLAMPCHECK(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
CLAMPCHECK(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
CLAMPCHECK(cParams.targetLength, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX);
- if ((U32)(cParams.strategy) > (U32)ZSTD_btultra) return ERROR(compressionParameter_unsupported);
+ if ((U32)(cParams.strategy) > (U32)ZSTD_btultra)
+ return ERROR(parameter_unsupported);
return 0;
}
@@ -551,9 +528,7 @@ size_t ZSTD_estimateCCtxSize_advanced(ZSTD_compressionParameters cParams)
size_t const hSize = ((size_t)1) << cParams.hashLog;
U32 const hashLog3 = (cParams.searchLength>3) ? 0 : MIN(ZSTD_HASHLOG3_MAX, cParams.windowLog);
size_t const h3Size = ((size_t)1) << hashLog3;
- size_t const entropySpace = hufCTable_size + litlengthCTable_size
- + offcodeCTable_size + matchlengthCTable_size
- + entropyScratchSpace_size;
+ size_t const entropySpace = sizeof(ZSTD_entropyCTables_t);
size_t const tableSpace = (chainSize + hSize + h3Size) * sizeof(U32);
size_t const optBudget = ((MaxML+1) + (MaxLL+1) + (MaxOff+1) + (1<<Litbits))*sizeof(U32)
@@ -620,8 +595,8 @@ static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_parameters params, U64 ple
cctx->stage = ZSTDcs_init;
cctx->dictID = 0;
cctx->loadedDictEnd = 0;
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) cctx->rep[i] = repStartValue[i]; }
- cctx->seqStore.litLengthSum = 0; /* force reset of btopt stats */
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) cctx->seqStore.rep[i] = repStartValue[i]; }
+ cctx->optState.litLengthSum = 0; /* force reset of btopt stats */
XXH64_reset(&cctx->xxhState, 0);
return 0;
}
@@ -641,8 +616,10 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
if (crp == ZSTDcrp_continue) {
if (ZSTD_equivalentParams(params.cParams, zc->appliedParams.cParams)) {
DEBUGLOG(5, "ZSTD_equivalentParams()==1");
- zc->fseCTables_ready = 0;
- zc->hufCTable_repeatMode = HUF_repeat_none;
+ zc->entropy->hufCTable_repeatMode = HUF_repeat_none;
+ zc->entropy->offcode_repeatMode = FSE_repeat_none;
+ zc->entropy->matchlength_repeatMode = FSE_repeat_none;
+ zc->entropy->litlength_repeatMode = FSE_repeat_none;
return ZSTD_continueCCtx(zc, params, pledgedSrcSize);
} }
@@ -662,9 +639,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
void* ptr;
/* Check if workSpace is large enough, alloc a new one if needed */
- { size_t const entropySpace = hufCTable_size + litlengthCTable_size
- + offcodeCTable_size + matchlengthCTable_size
- + entropyScratchSpace_size;
+ { size_t const entropySpace = sizeof(ZSTD_entropyCTables_t);
size_t const optPotentialSpace = ((MaxML+1) + (MaxLL+1) + (MaxOff+1) + (1<<Litbits)) * sizeof(U32)
+ (ZSTD_OPT_NUM+1) * (sizeof(ZSTD_match_t)+sizeof(ZSTD_optimal_t));
size_t const optSpace = ( (params.cParams.strategy == ZSTD_btopt)
@@ -689,16 +664,9 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
ptr = zc->workSpace;
/* entropy space */
- zc->hufCTable = (HUF_CElt*)ptr;
- ptr = (char*)zc->hufCTable + hufCTable_size; /* note : HUF_CElt* is incomplete type, size is estimated via macro */
- zc->offcodeCTable = (FSE_CTable*) ptr;
- ptr = (char*)ptr + offcodeCTable_size;
- zc->matchlengthCTable = (FSE_CTable*) ptr;
- ptr = (char*)ptr + matchlengthCTable_size;
- zc->litlengthCTable = (FSE_CTable*) ptr;
- ptr = (char*)ptr + litlengthCTable_size;
- assert(((size_t)ptr & 3) == 0); /* ensure correct alignment */
- zc->entropyScratchSpace = (unsigned*) ptr;
+ assert(((size_t)zc->workSpace & 3) == 0); /* ensure correct alignment */
+ assert(zc->workSpaceSize >= sizeof(ZSTD_entropyCTables_t));
+ zc->entropy = (ZSTD_entropyCTables_t*)zc->workSpace;
} }
/* init params */
@@ -715,39 +683,35 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
zc->stage = ZSTDcs_init;
zc->dictID = 0;
zc->loadedDictEnd = 0;
- zc->fseCTables_ready = 0;
- zc->hufCTable_repeatMode = HUF_repeat_none;
+ zc->entropy->hufCTable_repeatMode = HUF_repeat_none;
+ zc->entropy->offcode_repeatMode = FSE_repeat_none;
+ zc->entropy->matchlength_repeatMode = FSE_repeat_none;
+ zc->entropy->litlength_repeatMode = FSE_repeat_none;
zc->nextToUpdate = 1;
zc->nextSrc = NULL;
zc->base = NULL;
zc->dictBase = NULL;
zc->dictLimit = 0;
zc->lowLimit = 0;
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) zc->rep[i] = repStartValue[i]; }
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) zc->seqStore.rep[i] = repStartValue[i]; }
zc->hashLog3 = hashLog3;
- zc->seqStore.litLengthSum = 0;
+ zc->optState.litLengthSum = 0;
- /* ensure entropy tables are close together at the beginning */
- assert((void*)zc->hufCTable == zc->workSpace);
- assert((char*)zc->offcodeCTable == (char*)zc->hufCTable + hufCTable_size);
- assert((char*)zc->matchlengthCTable == (char*)zc->offcodeCTable + offcodeCTable_size);
- assert((char*)zc->litlengthCTable == (char*)zc->matchlengthCTable + matchlengthCTable_size);
- assert((char*)zc->entropyScratchSpace == (char*)zc->litlengthCTable + litlengthCTable_size);
- ptr = (char*)zc->entropyScratchSpace + entropyScratchSpace_size;
+ ptr = zc->entropy + 1;
/* opt parser space */
if ((params.cParams.strategy == ZSTD_btopt) || (params.cParams.strategy == ZSTD_btultra)) {
DEBUGLOG(5, "reserving optimal parser space");
assert(((size_t)ptr & 3) == 0); /* ensure ptr is properly aligned */
- zc->seqStore.litFreq = (U32*)ptr;
- zc->seqStore.litLengthFreq = zc->seqStore.litFreq + (1<<Litbits);
- zc->seqStore.matchLengthFreq = zc->seqStore.litLengthFreq + (MaxLL+1);
- zc->seqStore.offCodeFreq = zc->seqStore.matchLengthFreq + (MaxML+1);
- ptr = zc->seqStore.offCodeFreq + (MaxOff+1);
- zc->seqStore.matchTable = (ZSTD_match_t*)ptr;
- ptr = zc->seqStore.matchTable + ZSTD_OPT_NUM+1;
- zc->seqStore.priceTable = (ZSTD_optimal_t*)ptr;
- ptr = zc->seqStore.priceTable + ZSTD_OPT_NUM+1;
+ zc->optState.litFreq = (U32*)ptr;
+ zc->optState.litLengthFreq = zc->optState.litFreq + (1<<Litbits);
+ zc->optState.matchLengthFreq = zc->optState.litLengthFreq + (MaxLL+1);
+ zc->optState.offCodeFreq = zc->optState.matchLengthFreq + (MaxML+1);
+ ptr = zc->optState.offCodeFreq + (MaxOff+1);
+ zc->optState.matchTable = (ZSTD_match_t*)ptr;
+ ptr = zc->optState.matchTable + ZSTD_OPT_NUM+1;
+ zc->optState.priceTable = (ZSTD_optimal_t*)ptr;
+ ptr = zc->optState.priceTable + ZSTD_OPT_NUM+1;
}
/* table Space */
@@ -783,7 +747,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
* do not use with extDict variant ! */
void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx) {
int i;
- for (i=0; i<ZSTD_REP_NUM; i++) cctx->rep[i] = 0;
+ for (i=0; i<ZSTD_REP_NUM; i++) cctx->seqStore.rep[i] = 0;
}
@@ -830,16 +794,7 @@ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx,
dstCCtx->dictID = srcCCtx->dictID;
/* copy entropy tables */
- dstCCtx->fseCTables_ready = srcCCtx->fseCTables_ready;
- if (srcCCtx->fseCTables_ready) {
- memcpy(dstCCtx->litlengthCTable, srcCCtx->litlengthCTable, litlengthCTable_size);
- memcpy(dstCCtx->matchlengthCTable, srcCCtx->matchlengthCTable, matchlengthCTable_size);
- memcpy(dstCCtx->offcodeCTable, srcCCtx->offcodeCTable, offcodeCTable_size);
- }
- dstCCtx->hufCTable_repeatMode = srcCCtx->hufCTable_repeatMode;
- if (srcCCtx->hufCTable_repeatMode) {
- memcpy(dstCCtx->hufCTable, srcCCtx->hufCTable, hufCTable_size);
- }
+ memcpy(dstCCtx->entropy, srcCCtx->entropy, sizeof(ZSTD_entropyCTables_t));
return 0;
}
@@ -956,7 +911,8 @@ static size_t ZSTD_compressRleLiteralsBlock (void* dst, size_t dstCapacity, cons
static size_t ZSTD_minGain(size_t srcSize) { return (srcSize >> 6) + 2; }
-static size_t ZSTD_compressLiterals (ZSTD_CCtx* zc,
+static size_t ZSTD_compressLiterals (ZSTD_entropyCTables_t * entropy,
+ ZSTD_strategy strategy,
void* dst, size_t dstCapacity,
const void* src, size_t srcSize)
{
@@ -970,28 +926,28 @@ static size_t ZSTD_compressLiterals (ZSTD_CCtx* zc,
/* small ? don't even attempt compression (speed opt) */
# define LITERAL_NOENTROPY 63
- { size_t const minLitSize = zc->hufCTable_repeatMode == HUF_repeat_valid ? 6 : LITERAL_NOENTROPY;
+ { size_t const minLitSize = entropy->hufCTable_repeatMode == HUF_repeat_valid ? 6 : LITERAL_NOENTROPY;
if (srcSize <= minLitSize) return ZSTD_noCompressLiterals(dst, dstCapacity, src, srcSize);
}
if (dstCapacity < lhSize+1) return ERROR(dstSize_tooSmall); /* not enough space for compression */
- { HUF_repeat repeat = zc->hufCTable_repeatMode;
- int const preferRepeat = zc->appliedParams.cParams.strategy < ZSTD_lazy ? srcSize <= 1024 : 0;
+ { HUF_repeat repeat = entropy->hufCTable_repeatMode;
+ int const preferRepeat = strategy < ZSTD_lazy ? srcSize <= 1024 : 0;
if (repeat == HUF_repeat_valid && lhSize == 3) singleStream = 1;
cLitSize = singleStream ? HUF_compress1X_repeat(ostart+lhSize, dstCapacity-lhSize, src, srcSize, 255, 11,
- zc->entropyScratchSpace, entropyScratchSpace_size, zc->hufCTable, &repeat, preferRepeat)
+ entropy->workspace, sizeof(entropy->workspace), (HUF_CElt*)entropy->hufCTable, &repeat, preferRepeat)
: HUF_compress4X_repeat(ostart+lhSize, dstCapacity-lhSize, src, srcSize, 255, 11,
- zc->entropyScratchSpace, entropyScratchSpace_size, zc->hufCTable, &repeat, preferRepeat);
+ entropy->workspace, sizeof(entropy->workspace), (HUF_CElt*)entropy->hufCTable, &repeat, preferRepeat);
if (repeat != HUF_repeat_none) { hType = set_repeat; } /* reused the existing table */
- else { zc->hufCTable_repeatMode = HUF_repeat_check; } /* now have a table to reuse */
+ else { entropy->hufCTable_repeatMode = HUF_repeat_check; } /* now have a table to reuse */
}
- if ((cLitSize==0) | (cLitSize >= srcSize - minGain)) {
- zc->hufCTable_repeatMode = HUF_repeat_none;
+ if ((cLitSize==0) | (cLitSize >= srcSize - minGain) | ERR_isError(cLitSize)) {
+ entropy->hufCTable_repeatMode = HUF_repeat_none;
return ZSTD_noCompressLiterals(dst, dstCapacity, src, srcSize);
}
if (cLitSize==1) {
- zc->hufCTable_repeatMode = HUF_repeat_none;
+ entropy->hufCTable_repeatMode = HUF_repeat_none;
return ZSTD_compressRleLiteralsBlock(dst, dstCapacity, src, srcSize);
}
@@ -1062,17 +1018,154 @@ void ZSTD_seqToCodes(const seqStore_t* seqStorePtr)
mlCodeTable[seqStorePtr->longLengthPos] = MaxML;
}
-MEM_STATIC size_t ZSTD_compressSequences (ZSTD_CCtx* zc,
- void* dst, size_t dstCapacity,
- size_t srcSize)
+MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType(FSE_repeat* repeatMode,
+ size_t const mostFrequent, size_t nbSeq, U32 defaultNormLog)
+{
+#define MIN_SEQ_FOR_DYNAMIC_FSE 64
+#define MAX_SEQ_FOR_STATIC_FSE 1000
+
+ if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
+ *repeatMode = FSE_repeat_check;
+ return set_rle;
+ }
+ if ((*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
+ return set_repeat;
+ }
+ if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1)))) {
+ *repeatMode = FSE_repeat_valid;
+ return set_basic;
+ }
+ *repeatMode = FSE_repeat_check;
+ return set_compressed;
+}
+
+MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity,
+ FSE_CTable* CTable, U32 FSELog, symbolEncodingType_e type,
+ U32* count, U32 max,
+ BYTE const* codeTable, size_t nbSeq,
+ S16 const* defaultNorm, U32 defaultNormLog, U32 defaultMax,
+ void* workspace, size_t workspaceSize)
+{
+ BYTE* op = (BYTE*)dst;
+ BYTE const* const oend = op + dstCapacity;
+
+ switch (type) {
+ case set_rle:
+ *op = codeTable[0];
+ CHECK_F(FSE_buildCTable_rle(CTable, (BYTE)max));
+ return 1;
+ case set_repeat:
+ return 0;
+ case set_basic:
+ CHECK_F(FSE_buildCTable_wksp(CTable, defaultNorm, defaultMax, defaultNormLog, workspace, workspaceSize));
+ return 0;
+ case set_compressed: {
+ S16 norm[MaxSeq + 1];
+ size_t nbSeq_1 = nbSeq;
+ const U32 tableLog = FSE_optimalTableLog(FSELog, nbSeq, max);
+ if (count[codeTable[nbSeq-1]] > 1) {
+ count[codeTable[nbSeq-1]]--;
+ nbSeq_1--;
+ }
+ CHECK_F(FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max));
+ { size_t const NCountSize = FSE_writeNCount(op, oend - op, norm, max, tableLog); /* overflow protected */
+ if (FSE_isError(NCountSize)) return NCountSize;
+ CHECK_F(FSE_buildCTable_wksp(CTable, norm, max, tableLog, workspace, workspaceSize));
+ return NCountSize;
+ }
+ }
+ default: return assert(0), ERROR(GENERIC);
+ }
+}
+
+MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity,
+ FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable,
+ FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable,
+ FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable,
+ seqDef const* sequences, size_t nbSeq, int longOffsets)
+{
+ BIT_CStream_t blockStream;
+ FSE_CState_t stateMatchLength;
+ FSE_CState_t stateOffsetBits;
+ FSE_CState_t stateLitLength;
+
+ CHECK_E(BIT_initCStream(&blockStream, dst, dstCapacity), dstSize_tooSmall); /* not enough space remaining */
+
+ /* first symbols */
+ FSE_initCState2(&stateMatchLength, CTable_MatchLength, mlCodeTable[nbSeq-1]);
+ FSE_initCState2(&stateOffsetBits, CTable_OffsetBits, ofCodeTable[nbSeq-1]);
+ FSE_initCState2(&stateLitLength, CTable_LitLength, llCodeTable[nbSeq-1]);
+ BIT_addBits(&blockStream, sequences[nbSeq-1].litLength, LL_bits[llCodeTable[nbSeq-1]]);
+ if (MEM_32bits()) BIT_flushBits(&blockStream);
+ BIT_addBits(&blockStream, sequences[nbSeq-1].matchLength, ML_bits[mlCodeTable[nbSeq-1]]);
+ if (MEM_32bits()) BIT_flushBits(&blockStream);
+ if (longOffsets) {
+ U32 const ofBits = ofCodeTable[nbSeq-1];
+ int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
+ if (extraBits) {
+ BIT_addBits(&blockStream, sequences[nbSeq-1].offset, extraBits);
+ BIT_flushBits(&blockStream);
+ }
+ BIT_addBits(&blockStream, sequences[nbSeq-1].offset >> extraBits,
+ ofBits - extraBits);
+ } else {
+ BIT_addBits(&blockStream, sequences[nbSeq-1].offset, ofCodeTable[nbSeq-1]);
+ }
+ BIT_flushBits(&blockStream);
+
+ { size_t n;
+ for (n=nbSeq-2 ; n<nbSeq ; n--) { /* intentional underflow */
+ BYTE const llCode = llCodeTable[n];
+ BYTE const ofCode = ofCodeTable[n];
+ BYTE const mlCode = mlCodeTable[n];
+ U32 const llBits = LL_bits[llCode];
+ U32 const ofBits = ofCode; /* 32b*/ /* 64b*/
+ U32 const mlBits = ML_bits[mlCode];
+ /* (7)*/ /* (7)*/
+ FSE_encodeSymbol(&blockStream, &stateOffsetBits, ofCode); /* 15 */ /* 15 */
+ FSE_encodeSymbol(&blockStream, &stateMatchLength, mlCode); /* 24 */ /* 24 */
+ if (MEM_32bits()) BIT_flushBits(&blockStream); /* (7)*/
+ FSE_encodeSymbol(&blockStream, &stateLitLength, llCode); /* 16 */ /* 33 */
+ if (MEM_32bits() || (ofBits+mlBits+llBits >= 64-7-(LLFSELog+MLFSELog+OffFSELog)))
+ BIT_flushBits(&blockStream); /* (7)*/
+ BIT_addBits(&blockStream, sequences[n].litLength, llBits);
+ if (MEM_32bits() && ((llBits+mlBits)>24)) BIT_flushBits(&blockStream);
+ BIT_addBits(&blockStream, sequences[n].matchLength, mlBits);
+ if (MEM_32bits()) BIT_flushBits(&blockStream); /* (7)*/
+ if (longOffsets) {
+ int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
+ if (extraBits) {
+ BIT_addBits(&blockStream, sequences[n].offset, extraBits);
+ BIT_flushBits(&blockStream); /* (7)*/
+ }
+ BIT_addBits(&blockStream, sequences[n].offset >> extraBits,
+ ofBits - extraBits); /* 31 */
+ } else {
+ BIT_addBits(&blockStream, sequences[n].offset, ofBits); /* 31 */
+ }
+ BIT_flushBits(&blockStream); /* (7)*/
+ } }
+
+ FSE_flushCState(&blockStream, &stateMatchLength);
+ FSE_flushCState(&blockStream, &stateOffsetBits);
+ FSE_flushCState(&blockStream, &stateLitLength);
+
+ { size_t const streamSize = BIT_closeCStream(&blockStream);
+ if (streamSize==0) return ERROR(dstSize_tooSmall); /* not enough space */
+ return streamSize;
+ }
+}
+
+MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
+ ZSTD_entropyCTables_t* entropy,
+ ZSTD_compressionParameters const* cParams,
+ void* dst, size_t dstCapacity)
{
- const int longOffsets = zc->appliedParams.cParams.windowLog > STREAM_ACCUMULATOR_MIN;
- const seqStore_t* seqStorePtr = &(zc->seqStore);
+ const int longOffsets = cParams->windowLog > STREAM_ACCUMULATOR_MIN;
U32 count[MaxSeq+1];
- S16 norm[MaxSeq+1];
- FSE_CTable* CTable_LitLength = zc->litlengthCTable;
- FSE_CTable* CTable_OffsetBits = zc->offcodeCTable;
- FSE_CTable* CTable_MatchLength = zc->matchlengthCTable;
+ FSE_CTable* CTable_LitLength = entropy->litlengthCTable;
+ FSE_CTable* CTable_OffsetBits = entropy->offcodeCTable;
+ FSE_CTable* CTable_MatchLength = entropy->matchlengthCTable;
U32 LLtype, Offtype, MLtype; /* compressed, raw or rle */
const seqDef* const sequences = seqStorePtr->sequencesStart;
const BYTE* const ofCodeTable = seqStorePtr->ofCode;
@@ -1083,13 +1176,16 @@ MEM_STATIC size_t ZSTD_compressSequences (ZSTD_CCtx* zc,
BYTE* op = ostart;
size_t const nbSeq = seqStorePtr->sequences - seqStorePtr->sequencesStart;
BYTE* seqHead;
- BYTE scratchBuffer[1<<MAX(MLFSELog,LLFSELog)];
+
+ ZSTD_STATIC_ASSERT(sizeof(entropy->workspace) >= (1<<MAX(MLFSELog,LLFSELog)));
/* Compress literals */
{ const BYTE* const literals = seqStorePtr->litStart;
size_t const litSize = seqStorePtr->lit - literals;
- size_t const cSize = ZSTD_compressLiterals(zc, op, dstCapacity, literals, litSize);
- if (ZSTD_isError(cSize)) return cSize;
+ size_t const cSize = ZSTD_compressLiterals(
+ entropy, cParams->strategy, op, dstCapacity, literals, litSize);
+ if (ZSTD_isError(cSize))
+ return cSize;
op += cSize;
}
@@ -1098,177 +1194,89 @@ MEM_STATIC size_t ZSTD_compressSequences (ZSTD_CCtx* zc,
if (nbSeq < 0x7F) *op++ = (BYTE)nbSeq;
else if (nbSeq < LONGNBSEQ) op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2;
else op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3;
- if (nbSeq==0) goto _check_compressibility;
+ if (nbSeq==0) return op - ostart;
/* seqHead : flags for FSE encoding type */
seqHead = op++;
-#define MIN_SEQ_FOR_DYNAMIC_FSE 64
-#define MAX_SEQ_FOR_STATIC_FSE 1000
-
/* convert length/distances into codes */
ZSTD_seqToCodes(seqStorePtr);
-
/* CTable for Literal Lengths */
{ U32 max = MaxLL;
- size_t const mostFrequent = FSE_countFast_wksp(count, &max, llCodeTable, nbSeq, zc->entropyScratchSpace);
- if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
- *op++ = llCodeTable[0];
- FSE_buildCTable_rle(CTable_LitLength, (BYTE)max);
- LLtype = set_rle;
- } else if ((zc->fseCTables_ready) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
- LLtype = set_repeat;
- } else if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (LL_defaultNormLog-1)))) {
- FSE_buildCTable_wksp(CTable_LitLength, LL_defaultNorm, MaxLL, LL_defaultNormLog, scratchBuffer, sizeof(scratchBuffer));
- LLtype = set_basic;
- } else {
- size_t nbSeq_1 = nbSeq;
- const U32 tableLog = FSE_optimalTableLog(LLFSELog, nbSeq, max);
- if (count[llCodeTable[nbSeq-1]]>1) { count[llCodeTable[nbSeq-1]]--; nbSeq_1--; }
- FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max);
- { size_t const NCountSize = FSE_writeNCount(op, oend-op, norm, max, tableLog); /* overflow protected */
- if (FSE_isError(NCountSize)) return NCountSize;
- op += NCountSize; }
- FSE_buildCTable_wksp(CTable_LitLength, norm, max, tableLog, scratchBuffer, sizeof(scratchBuffer));
- LLtype = set_compressed;
+ size_t const mostFrequent = FSE_countFast_wksp(count, &max, llCodeTable, nbSeq, entropy->workspace);
+ LLtype = ZSTD_selectEncodingType(&entropy->litlength_repeatMode, mostFrequent, nbSeq, LL_defaultNormLog);
+ { size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_LitLength, LLFSELog, (symbolEncodingType_e)LLtype,
+ count, max, llCodeTable, nbSeq, LL_defaultNorm, LL_defaultNormLog, MaxLL,
+ entropy->workspace, sizeof(entropy->workspace));
+ if (ZSTD_isError(countSize)) return countSize;
+ op += countSize;
} }
-
/* CTable for Offsets */
{ U32 max = MaxOff;
- size_t const mostFrequent = FSE_countFast_wksp(count, &max, ofCodeTable, nbSeq, zc->entropyScratchSpace);
- if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
- *op++ = ofCodeTable[0];
- FSE_buildCTable_rle(CTable_OffsetBits, (BYTE)max);
- Offtype = set_rle;
- } else if ((zc->fseCTables_ready) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
- Offtype = set_repeat;
- } else if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (OF_defaultNormLog-1)))) {
- FSE_buildCTable_wksp(CTable_OffsetBits, OF_defaultNorm, MaxOff, OF_defaultNormLog, scratchBuffer, sizeof(scratchBuffer));
- Offtype = set_basic;
- } else {
- size_t nbSeq_1 = nbSeq;
- const U32 tableLog = FSE_optimalTableLog(OffFSELog, nbSeq, max);
- if (count[ofCodeTable[nbSeq-1]]>1) { count[ofCodeTable[nbSeq-1]]--; nbSeq_1--; }
- FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max);
- { size_t const NCountSize = FSE_writeNCount(op, oend-op, norm, max, tableLog); /* overflow protected */
- if (FSE_isError(NCountSize)) return NCountSize;
- op += NCountSize; }
- FSE_buildCTable_wksp(CTable_OffsetBits, norm, max, tableLog, scratchBuffer, sizeof(scratchBuffer));
- Offtype = set_compressed;
+ size_t const mostFrequent = FSE_countFast_wksp(count, &max, ofCodeTable, nbSeq, entropy->workspace);
+ Offtype = ZSTD_selectEncodingType(&entropy->offcode_repeatMode, mostFrequent, nbSeq, OF_defaultNormLog);
+ { size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_OffsetBits, OffFSELog, (symbolEncodingType_e)Offtype,
+ count, max, ofCodeTable, nbSeq, OF_defaultNorm, OF_defaultNormLog, MaxOff,
+ entropy->workspace, sizeof(entropy->workspace));
+ if (ZSTD_isError(countSize)) return countSize;
+ op += countSize;
} }
-
/* CTable for MatchLengths */
{ U32 max = MaxML;
- size_t const mostFrequent = FSE_countFast_wksp(count, &max, mlCodeTable, nbSeq, zc->entropyScratchSpace);
- if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
- *op++ = *mlCodeTable;
- FSE_buildCTable_rle(CTable_MatchLength, (BYTE)max);
- MLtype = set_rle;
- } else if ((zc->fseCTables_ready) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
- MLtype = set_repeat;
- } else if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (ML_defaultNormLog-1)))) {
- FSE_buildCTable_wksp(CTable_MatchLength, ML_defaultNorm, MaxML, ML_defaultNormLog, scratchBuffer, sizeof(scratchBuffer));
- MLtype = set_basic;
- } else {
- size_t nbSeq_1 = nbSeq;
- const U32 tableLog = FSE_optimalTableLog(MLFSELog, nbSeq, max);
- if (count[mlCodeTable[nbSeq-1]]>1) { count[mlCodeTable[nbSeq-1]]--; nbSeq_1--; }
- FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max);
- { size_t const NCountSize = FSE_writeNCount(op, oend-op, norm, max, tableLog); /* overflow protected */
- if (FSE_isError(NCountSize)) return NCountSize;
- op += NCountSize; }
- FSE_buildCTable_wksp(CTable_MatchLength, norm, max, tableLog, scratchBuffer, sizeof(scratchBuffer));
- MLtype = set_compressed;
+ size_t const mostFrequent = FSE_countFast_wksp(count, &max, mlCodeTable, nbSeq, entropy->workspace);
+ MLtype = ZSTD_selectEncodingType(&entropy->matchlength_repeatMode, mostFrequent, nbSeq, ML_defaultNormLog);
+ { size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_MatchLength, MLFSELog, (symbolEncodingType_e)MLtype,
+ count, max, mlCodeTable, nbSeq, ML_defaultNorm, ML_defaultNormLog, MaxML,
+ entropy->workspace, sizeof(entropy->workspace));
+ if (ZSTD_isError(countSize)) return countSize;
+ op += countSize;
} }
*seqHead = (BYTE)((LLtype<<6) + (Offtype<<4) + (MLtype<<2));
- zc->fseCTables_ready = 0;
-
- /* Encoding Sequences */
- { BIT_CStream_t blockStream;
- FSE_CState_t stateMatchLength;
- FSE_CState_t stateOffsetBits;
- FSE_CState_t stateLitLength;
-
- CHECK_E(BIT_initCStream(&blockStream, op, oend-op), dstSize_tooSmall); /* not enough space remaining */
-
- /* first symbols */
- FSE_initCState2(&stateMatchLength, CTable_MatchLength, mlCodeTable[nbSeq-1]);
- FSE_initCState2(&stateOffsetBits, CTable_OffsetBits, ofCodeTable[nbSeq-1]);
- FSE_initCState2(&stateLitLength, CTable_LitLength, llCodeTable[nbSeq-1]);
- BIT_addBits(&blockStream, sequences[nbSeq-1].litLength, LL_bits[llCodeTable[nbSeq-1]]);
- if (MEM_32bits()) BIT_flushBits(&blockStream);
- BIT_addBits(&blockStream, sequences[nbSeq-1].matchLength, ML_bits[mlCodeTable[nbSeq-1]]);
- if (MEM_32bits()) BIT_flushBits(&blockStream);
- if (longOffsets) {
- U32 const ofBits = ofCodeTable[nbSeq-1];
- int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
- if (extraBits) {
- BIT_addBits(&blockStream, sequences[nbSeq-1].offset, extraBits);
- BIT_flushBits(&blockStream);
- }
- BIT_addBits(&blockStream, sequences[nbSeq-1].offset >> extraBits,
- ofBits - extraBits);
- } else {
- BIT_addBits(&blockStream, sequences[nbSeq-1].offset, ofCodeTable[nbSeq-1]);
- }
- BIT_flushBits(&blockStream);
-
- { size_t n;
- for (n=nbSeq-2 ; n<nbSeq ; n--) { /* intentional underflow */
- BYTE const llCode = llCodeTable[n];
- BYTE const ofCode = ofCodeTable[n];
- BYTE const mlCode = mlCodeTable[n];
- U32 const llBits = LL_bits[llCode];
- U32 const ofBits = ofCode; /* 32b*/ /* 64b*/
- U32 const mlBits = ML_bits[mlCode];
- /* (7)*/ /* (7)*/
- FSE_encodeSymbol(&blockStream, &stateOffsetBits, ofCode); /* 15 */ /* 15 */
- FSE_encodeSymbol(&blockStream, &stateMatchLength, mlCode); /* 24 */ /* 24 */
- if (MEM_32bits()) BIT_flushBits(&blockStream); /* (7)*/
- FSE_encodeSymbol(&blockStream, &stateLitLength, llCode); /* 16 */ /* 33 */
- if (MEM_32bits() || (ofBits+mlBits+llBits >= 64-7-(LLFSELog+MLFSELog+OffFSELog)))
- BIT_flushBits(&blockStream); /* (7)*/
- BIT_addBits(&blockStream, sequences[n].litLength, llBits);
- if (MEM_32bits() && ((llBits+mlBits)>24)) BIT_flushBits(&blockStream);
- BIT_addBits(&blockStream, sequences[n].matchLength, mlBits);
- if (MEM_32bits()) BIT_flushBits(&blockStream); /* (7)*/
- if (longOffsets) {
- int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
- if (extraBits) {
- BIT_addBits(&blockStream, sequences[n].offset, extraBits);
- BIT_flushBits(&blockStream); /* (7)*/
- }
- BIT_addBits(&blockStream, sequences[n].offset >> extraBits,
- ofBits - extraBits); /* 31 */
- } else {
- BIT_addBits(&blockStream, sequences[n].offset, ofBits); /* 31 */
- }
- BIT_flushBits(&blockStream); /* (7)*/
- } }
- FSE_flushCState(&blockStream, &stateMatchLength);
- FSE_flushCState(&blockStream, &stateOffsetBits);
- FSE_flushCState(&blockStream, &stateLitLength);
+ { size_t const streamSize = ZSTD_encodeSequences(op, oend - op,
+ CTable_MatchLength, mlCodeTable,
+ CTable_OffsetBits, ofCodeTable,
+ CTable_LitLength, llCodeTable,
+ sequences, nbSeq, longOffsets);
+ if (ZSTD_isError(streamSize)) return streamSize;
+ op += streamSize;
+ }
- { size_t const streamSize = BIT_closeCStream(&blockStream);
- if (streamSize==0) return ERROR(dstSize_tooSmall); /* not enough space */
- op += streamSize;
- } }
+ return op - ostart;
+}
- /* check compressibility */
-_check_compressibility:
- { size_t const minGain = ZSTD_minGain(srcSize);
- size_t const maxCSize = srcSize - minGain;
- if ((size_t)(op-ostart) >= maxCSize) {
- zc->hufCTable_repeatMode = HUF_repeat_none;
- return 0;
- } }
+MEM_STATIC size_t ZSTD_compressSequences(seqStore_t* seqStorePtr,
+ ZSTD_entropyCTables_t* entropy,
+ ZSTD_compressionParameters const* cParams,
+ void* dst, size_t dstCapacity,
+ size_t srcSize)
+{
+ size_t const cSize = ZSTD_compressSequences_internal(seqStorePtr, entropy, cParams,
+ dst, dstCapacity);
+ size_t const minGain = ZSTD_minGain(srcSize);
+ size_t const maxCSize = srcSize - minGain;
+ /* If the srcSize <= dstCapacity, then there is enough space to write a
+ * raw uncompressed block. Since we ran out of space, the block must not
+ * be compressible, so fall back to a raw uncompressed block.
+ */
+ int const uncompressibleError = cSize == ERROR(dstSize_tooSmall) && srcSize <= dstCapacity;
+
+ if (ZSTD_isError(cSize) && !uncompressibleError)
+ return cSize;
+ /* Check compressibility */
+ if (cSize >= maxCSize || uncompressibleError) {
+ entropy->hufCTable_repeatMode = HUF_repeat_none;
+ entropy->offcode_repeatMode = FSE_repeat_none;
+ entropy->matchlength_repeatMode = FSE_repeat_none;
+ entropy->litlength_repeatMode = FSE_repeat_none;
+ return 0;
+ }
+ assert(!ZSTD_isError(cSize));
/* confirm repcodes */
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) zc->rep[i] = zc->repToConfirm[i]; }
-
- return op - ostart;
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->rep[i] = seqStorePtr->repToConfirm[i]; }
+ return cSize;
}
@@ -1475,7 +1483,7 @@ static void ZSTD_fillHashTable (ZSTD_CCtx* zc, const void* end, const U32 mls)
}
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
const void* src, size_t srcSize,
const U32 mls)
@@ -1491,7 +1499,7 @@ void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
const BYTE* const lowest = base + lowestIndex;
const BYTE* const iend = istart + srcSize;
const BYTE* const ilimit = iend - HASH_READ_SIZE;
- U32 offset_1=cctx->rep[0], offset_2=cctx->rep[1];
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
U32 offsetSaved = 0;
/* init */
@@ -1552,8 +1560,8 @@ void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
} } }
/* save reps for next block */
- cctx->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
- cctx->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
+ seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
+ seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
/* Last Literals */
{ size_t const lastLLSize = iend - anchor;
@@ -1601,7 +1609,7 @@ static void ZSTD_compressBlock_fast_extDict_generic(ZSTD_CCtx* ctx,
const BYTE* const dictEnd = dictBase + dictLimit;
const BYTE* const iend = istart + srcSize;
const BYTE* const ilimit = iend - 8;
- U32 offset_1=ctx->rep[0], offset_2=ctx->rep[1];
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
/* Search Loop */
while (ip < ilimit) { /* < instead of <=, because (ip+1) */
@@ -1667,7 +1675,7 @@ static void ZSTD_compressBlock_fast_extDict_generic(ZSTD_CCtx* ctx,
} } }
/* save reps for next block */
- ctx->repToConfirm[0] = offset_1; ctx->repToConfirm[1] = offset_2;
+ seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
/* Last Literals */
{ size_t const lastLLSize = iend - anchor;
@@ -1718,7 +1726,7 @@ static void ZSTD_fillDoubleHashTable (ZSTD_CCtx* cctx, const void* end, const U3
}
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
void ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
const void* src, size_t srcSize,
const U32 mls)
@@ -1736,7 +1744,7 @@ void ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
const BYTE* const lowest = base + lowestIndex;
const BYTE* const iend = istart + srcSize;
const BYTE* const ilimit = iend - HASH_READ_SIZE;
- U32 offset_1=cctx->rep[0], offset_2=cctx->rep[1];
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
U32 offsetSaved = 0;
/* init */
@@ -1823,8 +1831,8 @@ void ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
} } }
/* save reps for next block */
- cctx->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
- cctx->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
+ seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
+ seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
/* Last Literals */
{ size_t const lastLLSize = iend - anchor;
@@ -1873,7 +1881,7 @@ static void ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx* ctx,
const BYTE* const dictEnd = dictBase + dictLimit;
const BYTE* const iend = istart + srcSize;
const BYTE* const ilimit = iend - 8;
- U32 offset_1=ctx->rep[0], offset_2=ctx->rep[1];
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
/* Search Loop */
while (ip < ilimit) { /* < instead of <=, because (ip+1) */
@@ -1973,7 +1981,7 @@ static void ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx* ctx,
} } }
/* save reps for next block */
- ctx->repToConfirm[0] = offset_1; ctx->repToConfirm[1] = offset_2;
+ seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
/* Last Literals */
{ size_t const lastLLSize = iend - anchor;
@@ -2276,7 +2284,7 @@ static size_t ZSTD_BtFindBestMatch_selectMLS_extDict (
/* Update chains up to ip (excluded)
Assumption : always within prefix (i.e. not within extDict) */
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls)
{
U32* const hashTable = zc->hashTable;
@@ -2300,7 +2308,7 @@ U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls)
/* inlining is important to hardwire a hot branch (template emulation) */
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
size_t ZSTD_HcFindBestMatch_generic (
ZSTD_CCtx* zc, /* Index table will be updated */
const BYTE* const ip, const BYTE* const iLimit,
@@ -2352,7 +2360,7 @@ size_t ZSTD_HcFindBestMatch_generic (
}
-FORCE_INLINE size_t ZSTD_HcFindBestMatch_selectMLS (
+FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_selectMLS (
ZSTD_CCtx* zc,
const BYTE* ip, const BYTE* const iLimit,
size_t* offsetPtr,
@@ -2369,7 +2377,7 @@ FORCE_INLINE size_t ZSTD_HcFindBestMatch_selectMLS (
}
-FORCE_INLINE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
+FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
ZSTD_CCtx* zc,
const BYTE* ip, const BYTE* const iLimit,
size_t* offsetPtr,
@@ -2389,7 +2397,7 @@ FORCE_INLINE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
/* *******************************
* Common parser - lazy strategy
*********************************/
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
void ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx,
const void* src, size_t srcSize,
const U32 searchMethod, const U32 depth)
@@ -2409,7 +2417,7 @@ void ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx,
size_t* offsetPtr,
U32 maxNbAttempts, U32 matchLengthSearch);
searchMax_f const searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS : ZSTD_HcFindBestMatch_selectMLS;
- U32 offset_1 = ctx->rep[0], offset_2 = ctx->rep[1], savedOffset=0;
+ U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1], savedOffset=0;
/* init */
ip += (ip==base);
@@ -2519,8 +2527,8 @@ _storeSequence:
} }
/* Save reps for next block */
- ctx->repToConfirm[0] = offset_1 ? offset_1 : savedOffset;
- ctx->repToConfirm[1] = offset_2 ? offset_2 : savedOffset;
+ seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : savedOffset;
+ seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : savedOffset;
/* Last Literals */
{ size_t const lastLLSize = iend - anchor;
@@ -2551,7 +2559,7 @@ static void ZSTD_compressBlock_greedy(ZSTD_CCtx* ctx, const void* src, size_t sr
}
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
void ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx* ctx,
const void* src, size_t srcSize,
const U32 searchMethod, const U32 depth)
@@ -2578,7 +2586,7 @@ void ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx* ctx,
U32 maxNbAttempts, U32 matchLengthSearch);
searchMax_f searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS_extDict : ZSTD_HcFindBestMatch_extDict_selectMLS;
- U32 offset_1 = ctx->rep[0], offset_2 = ctx->rep[1];
+ U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1];
/* init */
ctx->nextToUpdate3 = ctx->nextToUpdate;
@@ -2714,7 +2722,7 @@ _storeSequence:
} }
/* Save reps for next block */
- ctx->repToConfirm[0] = offset_1; ctx->repToConfirm[1] = offset_2;
+ seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
/* Last Literals */
{ size_t const lastLLSize = iend - anchor;
@@ -2823,7 +2831,7 @@ static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, void* dst, size_t dstCa
if (current > zc->nextToUpdate + 384)
zc->nextToUpdate = current - MIN(192, (U32)(current - zc->nextToUpdate - 384)); /* limited update after finding a very long match */
blockCompressor(zc, src, srcSize);
- return ZSTD_compressSequences(zc, dst, dstCapacity, srcSize);
+ return ZSTD_compressSequences(&zc->seqStore, zc->entropy, &zc->appliedParams.cParams, dst, dstCapacity, srcSize);
}
@@ -3000,7 +3008,6 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx,
return fhSize;
}
-
size_t ZSTD_compressContinue (ZSTD_CCtx* cctx,
void* dst, size_t dstCapacity,
const void* src, size_t srcSize)
@@ -3106,13 +3113,14 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
const BYTE* const dictEnd = dictPtr + dictSize;
short offcodeNCount[MaxOff+1];
unsigned offcodeMaxValue = MaxOff;
- BYTE scratchBuffer[1<<MAX(MLFSELog,LLFSELog)];
+
+ ZSTD_STATIC_ASSERT(sizeof(cctx->entropy->workspace) >= (1<<MAX(MLFSELog,LLFSELog)));
dictPtr += 4; /* skip magic number */
cctx->dictID = cctx->appliedParams.fParams.noDictIDFlag ? 0 : MEM_readLE32(dictPtr);
dictPtr += 4;
- { size_t const hufHeaderSize = HUF_readCTable(cctx->hufCTable, 255, dictPtr, dictEnd-dictPtr);
+ { size_t const hufHeaderSize = HUF_readCTable((HUF_CElt*)cctx->entropy->hufCTable, 255, dictPtr, dictEnd-dictPtr);
if (HUF_isError(hufHeaderSize)) return ERROR(dictionary_corrupted);
dictPtr += hufHeaderSize;
}
@@ -3122,7 +3130,7 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
if (FSE_isError(offcodeHeaderSize)) return ERROR(dictionary_corrupted);
if (offcodeLog > OffFSELog) return ERROR(dictionary_corrupted);
/* Defer checking offcodeMaxValue because we need to know the size of the dictionary content */
- CHECK_E( FSE_buildCTable_wksp(cctx->offcodeCTable, offcodeNCount, offcodeMaxValue, offcodeLog, scratchBuffer, sizeof(scratchBuffer)),
+ CHECK_E( FSE_buildCTable_wksp(cctx->entropy->offcodeCTable, offcodeNCount, offcodeMaxValue, offcodeLog, cctx->entropy->workspace, sizeof(cctx->entropy->workspace)),
dictionary_corrupted);
dictPtr += offcodeHeaderSize;
}
@@ -3134,7 +3142,7 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
if (matchlengthLog > MLFSELog) return ERROR(dictionary_corrupted);
/* Every match length code must have non-zero probability */
CHECK_F( ZSTD_checkDictNCount(matchlengthNCount, matchlengthMaxValue, MaxML));
- CHECK_E( FSE_buildCTable_wksp(cctx->matchlengthCTable, matchlengthNCount, matchlengthMaxValue, matchlengthLog, scratchBuffer, sizeof(scratchBuffer)),
+ CHECK_E( FSE_buildCTable_wksp(cctx->entropy->matchlengthCTable, matchlengthNCount, matchlengthMaxValue, matchlengthLog, cctx->entropy->workspace, sizeof(cctx->entropy->workspace)),
dictionary_corrupted);
dictPtr += matchlengthHeaderSize;
}
@@ -3146,15 +3154,15 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
if (litlengthLog > LLFSELog) return ERROR(dictionary_corrupted);
/* Every literal length code must have non-zero probability */
CHECK_F( ZSTD_checkDictNCount(litlengthNCount, litlengthMaxValue, MaxLL));
- CHECK_E( FSE_buildCTable_wksp(cctx->litlengthCTable, litlengthNCount, litlengthMaxValue, litlengthLog, scratchBuffer, sizeof(scratchBuffer)),
+ CHECK_E( FSE_buildCTable_wksp(cctx->entropy->litlengthCTable, litlengthNCount, litlengthMaxValue, litlengthLog, cctx->entropy->workspace, sizeof(cctx->entropy->workspace)),
dictionary_corrupted);
dictPtr += litlengthHeaderSize;
}
if (dictPtr+12 > dictEnd) return ERROR(dictionary_corrupted);
- cctx->rep[0] = MEM_readLE32(dictPtr+0);
- cctx->rep[1] = MEM_readLE32(dictPtr+4);
- cctx->rep[2] = MEM_readLE32(dictPtr+8);
+ cctx->seqStore.rep[0] = MEM_readLE32(dictPtr+0);
+ cctx->seqStore.rep[1] = MEM_readLE32(dictPtr+4);
+ cctx->seqStore.rep[2] = MEM_readLE32(dictPtr+8);
dictPtr += 12;
{ size_t const dictContentSize = (size_t)(dictEnd - dictPtr);
@@ -3168,12 +3176,14 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
/* All repCodes must be <= dictContentSize and != 0*/
{ U32 u;
for (u=0; u<3; u++) {
- if (cctx->rep[u] == 0) return ERROR(dictionary_corrupted);
- if (cctx->rep[u] > dictContentSize) return ERROR(dictionary_corrupted);
+ if (cctx->seqStore.rep[u] == 0) return ERROR(dictionary_corrupted);
+ if (cctx->seqStore.rep[u] > dictContentSize) return ERROR(dictionary_corrupted);
} }
- cctx->fseCTables_ready = 1;
- cctx->hufCTable_repeatMode = HUF_repeat_valid;
+ cctx->entropy->hufCTable_repeatMode = HUF_repeat_valid;
+ cctx->entropy->offcode_repeatMode = FSE_repeat_valid;
+ cctx->entropy->matchlength_repeatMode = FSE_repeat_valid;
+ cctx->entropy->litlength_repeatMode = FSE_repeat_valid;
return ZSTD_loadDictionaryContent(cctx, dictPtr, dictContentSize);
}
}
diff --git a/thirdparty/zstd/compress/zstd_opt.h b/thirdparty/zstd/compress/zstd_opt.h
index e8e98915ea..ae24732c7d 100644
--- a/thirdparty/zstd/compress/zstd_opt.h
+++ b/thirdparty/zstd/compress/zstd_opt.h
@@ -1,10 +1,10 @@
-/**
- * Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc.
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
@@ -22,173 +22,173 @@
/*-*************************************
* Price functions for optimal parser
***************************************/
-FORCE_INLINE void ZSTD_setLog2Prices(seqStore_t* ssPtr)
+static void ZSTD_setLog2Prices(optState_t* optPtr)
{
- ssPtr->log2matchLengthSum = ZSTD_highbit32(ssPtr->matchLengthSum+1);
- ssPtr->log2litLengthSum = ZSTD_highbit32(ssPtr->litLengthSum+1);
- ssPtr->log2litSum = ZSTD_highbit32(ssPtr->litSum+1);
- ssPtr->log2offCodeSum = ZSTD_highbit32(ssPtr->offCodeSum+1);
- ssPtr->factor = 1 + ((ssPtr->litSum>>5) / ssPtr->litLengthSum) + ((ssPtr->litSum<<1) / (ssPtr->litSum + ssPtr->matchSum));
+ optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1);
+ optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1);
+ optPtr->log2litSum = ZSTD_highbit32(optPtr->litSum+1);
+ optPtr->log2offCodeSum = ZSTD_highbit32(optPtr->offCodeSum+1);
+ optPtr->factor = 1 + ((optPtr->litSum>>5) / optPtr->litLengthSum) + ((optPtr->litSum<<1) / (optPtr->litSum + optPtr->matchSum));
}
-MEM_STATIC void ZSTD_rescaleFreqs(seqStore_t* ssPtr, const BYTE* src, size_t srcSize)
+static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSize)
{
unsigned u;
- ssPtr->cachedLiterals = NULL;
- ssPtr->cachedPrice = ssPtr->cachedLitLength = 0;
- ssPtr->staticPrices = 0;
+ optPtr->cachedLiterals = NULL;
+ optPtr->cachedPrice = optPtr->cachedLitLength = 0;
+ optPtr->staticPrices = 0;
- if (ssPtr->litLengthSum == 0) {
- if (srcSize <= 1024) ssPtr->staticPrices = 1;
+ if (optPtr->litLengthSum == 0) {
+ if (srcSize <= 1024) optPtr->staticPrices = 1;
- assert(ssPtr->litFreq!=NULL);
+ assert(optPtr->litFreq!=NULL);
for (u=0; u<=MaxLit; u++)
- ssPtr->litFreq[u] = 0;
+ optPtr->litFreq[u] = 0;
for (u=0; u<srcSize; u++)
- ssPtr->litFreq[src[u]]++;
+ optPtr->litFreq[src[u]]++;
- ssPtr->litSum = 0;
- ssPtr->litLengthSum = MaxLL+1;
- ssPtr->matchLengthSum = MaxML+1;
- ssPtr->offCodeSum = (MaxOff+1);
- ssPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits);
+ optPtr->litSum = 0;
+ optPtr->litLengthSum = MaxLL+1;
+ optPtr->matchLengthSum = MaxML+1;
+ optPtr->offCodeSum = (MaxOff+1);
+ optPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits);
for (u=0; u<=MaxLit; u++) {
- ssPtr->litFreq[u] = 1 + (ssPtr->litFreq[u]>>ZSTD_FREQ_DIV);
- ssPtr->litSum += ssPtr->litFreq[u];
+ optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>ZSTD_FREQ_DIV);
+ optPtr->litSum += optPtr->litFreq[u];
}
for (u=0; u<=MaxLL; u++)
- ssPtr->litLengthFreq[u] = 1;
+ optPtr->litLengthFreq[u] = 1;
for (u=0; u<=MaxML; u++)
- ssPtr->matchLengthFreq[u] = 1;
+ optPtr->matchLengthFreq[u] = 1;
for (u=0; u<=MaxOff; u++)
- ssPtr->offCodeFreq[u] = 1;
+ optPtr->offCodeFreq[u] = 1;
} else {
- ssPtr->matchLengthSum = 0;
- ssPtr->litLengthSum = 0;
- ssPtr->offCodeSum = 0;
- ssPtr->matchSum = 0;
- ssPtr->litSum = 0;
+ optPtr->matchLengthSum = 0;
+ optPtr->litLengthSum = 0;
+ optPtr->offCodeSum = 0;
+ optPtr->matchSum = 0;
+ optPtr->litSum = 0;
for (u=0; u<=MaxLit; u++) {
- ssPtr->litFreq[u] = 1 + (ssPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1));
- ssPtr->litSum += ssPtr->litFreq[u];
+ optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1));
+ optPtr->litSum += optPtr->litFreq[u];
}
for (u=0; u<=MaxLL; u++) {
- ssPtr->litLengthFreq[u] = 1 + (ssPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1));
- ssPtr->litLengthSum += ssPtr->litLengthFreq[u];
+ optPtr->litLengthFreq[u] = 1 + (optPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1));
+ optPtr->litLengthSum += optPtr->litLengthFreq[u];
}
for (u=0; u<=MaxML; u++) {
- ssPtr->matchLengthFreq[u] = 1 + (ssPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV);
- ssPtr->matchLengthSum += ssPtr->matchLengthFreq[u];
- ssPtr->matchSum += ssPtr->matchLengthFreq[u] * (u + 3);
+ optPtr->matchLengthFreq[u] = 1 + (optPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV);
+ optPtr->matchLengthSum += optPtr->matchLengthFreq[u];
+ optPtr->matchSum += optPtr->matchLengthFreq[u] * (u + 3);
}
- ssPtr->matchSum *= ZSTD_LITFREQ_ADD;
+ optPtr->matchSum *= ZSTD_LITFREQ_ADD;
for (u=0; u<=MaxOff; u++) {
- ssPtr->offCodeFreq[u] = 1 + (ssPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV);
- ssPtr->offCodeSum += ssPtr->offCodeFreq[u];
+ optPtr->offCodeFreq[u] = 1 + (optPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV);
+ optPtr->offCodeSum += optPtr->offCodeFreq[u];
}
}
- ZSTD_setLog2Prices(ssPtr);
+ ZSTD_setLog2Prices(optPtr);
}
-FORCE_INLINE U32 ZSTD_getLiteralPrice(seqStore_t* ssPtr, U32 litLength, const BYTE* literals)
+static U32 ZSTD_getLiteralPrice(optState_t* optPtr, U32 litLength, const BYTE* literals)
{
U32 price, u;
- if (ssPtr->staticPrices)
+ if (optPtr->staticPrices)
return ZSTD_highbit32((U32)litLength+1) + (litLength*6);
if (litLength == 0)
- return ssPtr->log2litLengthSum - ZSTD_highbit32(ssPtr->litLengthFreq[0]+1);
+ return optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[0]+1);
/* literals */
- if (ssPtr->cachedLiterals == literals) {
- U32 const additional = litLength - ssPtr->cachedLitLength;
- const BYTE* literals2 = ssPtr->cachedLiterals + ssPtr->cachedLitLength;
- price = ssPtr->cachedPrice + additional * ssPtr->log2litSum;
+ if (optPtr->cachedLiterals == literals) {
+ U32 const additional = litLength - optPtr->cachedLitLength;
+ const BYTE* literals2 = optPtr->cachedLiterals + optPtr->cachedLitLength;
+ price = optPtr->cachedPrice + additional * optPtr->log2litSum;
for (u=0; u < additional; u++)
- price -= ZSTD_highbit32(ssPtr->litFreq[literals2[u]]+1);
- ssPtr->cachedPrice = price;
- ssPtr->cachedLitLength = litLength;
+ price -= ZSTD_highbit32(optPtr->litFreq[literals2[u]]+1);
+ optPtr->cachedPrice = price;
+ optPtr->cachedLitLength = litLength;
} else {
- price = litLength * ssPtr->log2litSum;
+ price = litLength * optPtr->log2litSum;
for (u=0; u < litLength; u++)
- price -= ZSTD_highbit32(ssPtr->litFreq[literals[u]]+1);
+ price -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1);
if (litLength >= 12) {
- ssPtr->cachedLiterals = literals;
- ssPtr->cachedPrice = price;
- ssPtr->cachedLitLength = litLength;
+ optPtr->cachedLiterals = literals;
+ optPtr->cachedPrice = price;
+ optPtr->cachedLitLength = litLength;
}
}
/* literal Length */
{ const BYTE LL_deltaCode = 19;
const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
- price += LL_bits[llCode] + ssPtr->log2litLengthSum - ZSTD_highbit32(ssPtr->litLengthFreq[llCode]+1);
+ price += LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1);
}
return price;
}
-FORCE_INLINE U32 ZSTD_getPrice(seqStore_t* seqStorePtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra)
+FORCE_INLINE_TEMPLATE U32 ZSTD_getPrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra)
{
/* offset */
U32 price;
BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
- if (seqStorePtr->staticPrices)
- return ZSTD_getLiteralPrice(seqStorePtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode;
+ if (optPtr->staticPrices)
+ return ZSTD_getLiteralPrice(optPtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode;
- price = offCode + seqStorePtr->log2offCodeSum - ZSTD_highbit32(seqStorePtr->offCodeFreq[offCode]+1);
+ price = offCode + optPtr->log2offCodeSum - ZSTD_highbit32(optPtr->offCodeFreq[offCode]+1);
if (!ultra && offCode >= 20) price += (offCode-19)*2;
/* match Length */
{ const BYTE ML_deltaCode = 36;
const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
- price += ML_bits[mlCode] + seqStorePtr->log2matchLengthSum - ZSTD_highbit32(seqStorePtr->matchLengthFreq[mlCode]+1);
+ price += ML_bits[mlCode] + optPtr->log2matchLengthSum - ZSTD_highbit32(optPtr->matchLengthFreq[mlCode]+1);
}
- return price + ZSTD_getLiteralPrice(seqStorePtr, litLength, literals) + seqStorePtr->factor;
+ return price + ZSTD_getLiteralPrice(optPtr, litLength, literals) + optPtr->factor;
}
-MEM_STATIC void ZSTD_updatePrice(seqStore_t* seqStorePtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength)
+static void ZSTD_updatePrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength)
{
U32 u;
/* literals */
- seqStorePtr->litSum += litLength*ZSTD_LITFREQ_ADD;
+ optPtr->litSum += litLength*ZSTD_LITFREQ_ADD;
for (u=0; u < litLength; u++)
- seqStorePtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
+ optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
/* literal Length */
{ const BYTE LL_deltaCode = 19;
const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
- seqStorePtr->litLengthFreq[llCode]++;
- seqStorePtr->litLengthSum++;
+ optPtr->litLengthFreq[llCode]++;
+ optPtr->litLengthSum++;
}
/* match offset */
{ BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
- seqStorePtr->offCodeSum++;
- seqStorePtr->offCodeFreq[offCode]++;
+ optPtr->offCodeSum++;
+ optPtr->offCodeFreq[offCode]++;
}
/* match Length */
{ const BYTE ML_deltaCode = 36;
const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
- seqStorePtr->matchLengthFreq[mlCode]++;
- seqStorePtr->matchLengthSum++;
+ optPtr->matchLengthFreq[mlCode]++;
+ optPtr->matchLengthSum++;
}
- ZSTD_setLog2Prices(seqStorePtr);
+ ZSTD_setLog2Prices(optPtr);
}
@@ -203,7 +203,7 @@ MEM_STATIC void ZSTD_updatePrice(seqStore_t* seqStorePtr, U32 litLength, const B
/* function safe only for comparisons */
-MEM_STATIC U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
+static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
{
switch (length)
{
@@ -219,7 +219,7 @@ MEM_STATIC U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
/* Update hashTable3 up to ip (excluded)
Assumption : always within prefix (i.e. not within extDict) */
-FORCE_INLINE
+static
U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip)
{
U32* const hashTable3 = zc->hashTable3;
@@ -412,11 +412,12 @@ static U32 ZSTD_BtGetAllMatches_selectMLS_extDict (
/*-*******************************
* Optimal parser
*********************************/
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
const void* src, size_t srcSize, const int ultra)
{
seqStore_t* seqStorePtr = &(ctx->seqStore);
+ optState_t* optStatePtr = &(ctx->optState);
const BYTE* const istart = (const BYTE*)src;
const BYTE* ip = istart;
const BYTE* anchor = istart;
@@ -430,16 +431,16 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
const U32 mls = ctx->appliedParams.cParams.searchLength;
const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
- ZSTD_optimal_t* opt = seqStorePtr->priceTable;
- ZSTD_match_t* matches = seqStorePtr->matchTable;
+ ZSTD_optimal_t* opt = optStatePtr->priceTable;
+ ZSTD_match_t* matches = optStatePtr->matchTable;
const BYTE* inr;
U32 offset, rep[ZSTD_REP_NUM];
/* init */
ctx->nextToUpdate3 = ctx->nextToUpdate;
- ZSTD_rescaleFreqs(seqStorePtr, (const BYTE*)src, srcSize);
+ ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
ip += (ip==prefixStart);
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=ctx->rep[i]; }
+ { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
/* Match Loop */
while (ip < ilimit) {
@@ -462,7 +463,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
}
best_off = i - (ip == anchor);
do {
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
if (mlen > last_pos || price < opt[mlen].price)
SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
mlen--;
@@ -487,7 +488,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
best_mlen = matches[u].len;
while (mlen <= best_mlen) {
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
if (mlen > last_pos || price < opt[mlen].price)
SET_PRICE(mlen, mlen, matches[u].off, litlen, price); /* note : macro modifies last_pos */
mlen++;
@@ -507,12 +508,12 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
if (opt[cur-1].mlen == 1) {
litlen = opt[cur-1].litlen + 1;
if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-litlen);
+ price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
} else
- price = ZSTD_getLiteralPrice(seqStorePtr, litlen, anchor);
+ price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
} else {
litlen = 1;
- price = opt[cur - 1].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-1);
+ price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
}
if (cur > last_pos || price <= opt[cur].price)
@@ -554,12 +555,12 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
if (opt[cur].mlen == 1) {
litlen = opt[cur].litlen;
if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
} else
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
} else {
litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
}
if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
@@ -586,12 +587,12 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
if (opt[cur].mlen == 1) {
litlen = opt[cur].litlen;
if (cur > litlen)
- price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
else
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
} else {
litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
}
if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
@@ -645,13 +646,13 @@ _storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
if (litLength==0) offset--;
}
- ZSTD_updatePrice(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
+ ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
anchor = ip = ip + mlen;
} } /* for (cur=0; cur < last_pos; ) */
/* Save reps for next block */
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) ctx->repToConfirm[i] = rep[i]; }
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
/* Last Literals */
{ size_t const lastLLSize = iend - anchor;
@@ -661,11 +662,12 @@ _storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
}
-FORCE_INLINE
+FORCE_INLINE_TEMPLATE
void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
const void* src, size_t srcSize, const int ultra)
{
seqStore_t* seqStorePtr = &(ctx->seqStore);
+ optState_t* optStatePtr = &(ctx->optState);
const BYTE* const istart = (const BYTE*)src;
const BYTE* ip = istart;
const BYTE* anchor = istart;
@@ -683,16 +685,16 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
const U32 mls = ctx->appliedParams.cParams.searchLength;
const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
- ZSTD_optimal_t* opt = seqStorePtr->priceTable;
- ZSTD_match_t* matches = seqStorePtr->matchTable;
+ ZSTD_optimal_t* opt = optStatePtr->priceTable;
+ ZSTD_match_t* matches = optStatePtr->matchTable;
const BYTE* inr;
/* init */
U32 offset, rep[ZSTD_REP_NUM];
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=ctx->rep[i]; }
+ { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
ctx->nextToUpdate3 = ctx->nextToUpdate;
- ZSTD_rescaleFreqs(seqStorePtr, (const BYTE*)src, srcSize);
+ ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
ip += (ip==prefixStart);
/* Match Loop */
@@ -726,7 +728,7 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
best_off = i - (ip==anchor);
litlen = opt[0].litlen;
do {
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
if (mlen > last_pos || price < opt[mlen].price)
SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
mlen--;
@@ -756,7 +758,7 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
best_mlen = matches[u].len;
litlen = opt[0].litlen;
while (mlen <= best_mlen) {
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
if (mlen > last_pos || price < opt[mlen].price)
SET_PRICE(mlen, mlen, matches[u].off, litlen, price);
mlen++;
@@ -773,12 +775,12 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
if (opt[cur-1].mlen == 1) {
litlen = opt[cur-1].litlen + 1;
if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-litlen);
+ price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
} else
- price = ZSTD_getLiteralPrice(seqStorePtr, litlen, anchor);
+ price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
} else {
litlen = 1;
- price = opt[cur - 1].price + ZSTD_getLiteralPrice(seqStorePtr, litlen, inr-1);
+ price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
}
if (cur > last_pos || price <= opt[cur].price)
@@ -826,12 +828,12 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
if (opt[cur].mlen == 1) {
litlen = opt[cur].litlen;
if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
} else
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
} else {
litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
}
if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
@@ -858,12 +860,12 @@ void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
if (opt[cur].mlen == 1) {
litlen = opt[cur].litlen;
if (cur > litlen)
- price = opt[cur - litlen].price + ZSTD_getPrice(seqStorePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
else
- price = ZSTD_getPrice(seqStorePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
} else {
litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(seqStorePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
}
if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
@@ -918,13 +920,13 @@ _storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
if (litLength==0) offset--;
}
- ZSTD_updatePrice(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
+ ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
anchor = ip = ip + mlen;
} } /* for (cur=0; cur < last_pos; ) */
/* Save reps for next block */
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) ctx->repToConfirm[i] = rep[i]; }
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
/* Last Literals */
{ size_t lastLLSize = iend - anchor;
diff --git a/thirdparty/zstd/compress/zstdmt_compress.c b/thirdparty/zstd/compress/zstdmt_compress.c
index 0cee01eacb..8564bc4392 100644
--- a/thirdparty/zstd/compress/zstdmt_compress.c
+++ b/thirdparty/zstd/compress/zstdmt_compress.c
@@ -1,15 +1,16 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
/* ====== Tuning parameters ====== */
-#define ZSTDMT_NBTHREADS_MAX 128
+#define ZSTDMT_NBTHREADS_MAX 256
+#define ZSTDMT_OVERLAPLOG_DEFAULT 6
/* ====== Compiler specifics ====== */
@@ -73,6 +74,7 @@ static unsigned long long GetCurrentClockTimeMicroseconds(void)
/* ===== Buffer Pool ===== */
+/* a single Buffer Pool can be invoked from multiple threads in parallel */
typedef struct buffer_s {
void* start;
@@ -82,6 +84,8 @@ typedef struct buffer_s {
static const buffer_t g_nullBuffer = { NULL, 0 };
typedef struct ZSTDMT_bufferPool_s {
+ pthread_mutex_t poolMutex;
+ size_t bufferSize;
unsigned totalBuffers;
unsigned nbBuffers;
ZSTD_customMem cMem;
@@ -90,10 +94,15 @@ typedef struct ZSTDMT_bufferPool_s {
static ZSTDMT_bufferPool* ZSTDMT_createBufferPool(unsigned nbThreads, ZSTD_customMem cMem)
{
- unsigned const maxNbBuffers = 2*nbThreads + 2;
+ unsigned const maxNbBuffers = 2*nbThreads + 3;
ZSTDMT_bufferPool* const bufPool = (ZSTDMT_bufferPool*)ZSTD_calloc(
sizeof(ZSTDMT_bufferPool) + (maxNbBuffers-1) * sizeof(buffer_t), cMem);
if (bufPool==NULL) return NULL;
+ if (pthread_mutex_init(&bufPool->poolMutex, NULL)) {
+ ZSTD_free(bufPool, cMem);
+ return NULL;
+ }
+ bufPool->bufferSize = 64 KB;
bufPool->totalBuffers = maxNbBuffers;
bufPool->nbBuffers = 0;
bufPool->cMem = cMem;
@@ -106,6 +115,7 @@ static void ZSTDMT_freeBufferPool(ZSTDMT_bufferPool* bufPool)
if (!bufPool) return; /* compatibility with free on NULL */
for (u=0; u<bufPool->totalBuffers; u++)
ZSTD_free(bufPool->bTable[u].start, bufPool->cMem);
+ pthread_mutex_destroy(&bufPool->poolMutex);
ZSTD_free(bufPool, bufPool->cMem);
}
@@ -116,65 +126,85 @@ static size_t ZSTDMT_sizeof_bufferPool(ZSTDMT_bufferPool* bufPool)
+ (bufPool->totalBuffers - 1) * sizeof(buffer_t);
unsigned u;
size_t totalBufferSize = 0;
+ pthread_mutex_lock(&bufPool->poolMutex);
for (u=0; u<bufPool->totalBuffers; u++)
totalBufferSize += bufPool->bTable[u].size;
+ pthread_mutex_unlock(&bufPool->poolMutex);
return poolSize + totalBufferSize;
}
-/** ZSTDMT_getBuffer() :
- * assumption : invocation from main thread only ! */
-static buffer_t ZSTDMT_getBuffer(ZSTDMT_bufferPool* pool, size_t bSize)
+static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* bufPool, size_t bSize)
{
- if (pool->nbBuffers) { /* try to use an existing buffer */
- buffer_t const buf = pool->bTable[--(pool->nbBuffers)];
+ bufPool->bufferSize = bSize;
+}
+
+/** ZSTDMT_getBuffer() :
+ * assumption : bufPool must be valid */
+static buffer_t ZSTDMT_getBuffer(ZSTDMT_bufferPool* bufPool)
+{
+ size_t const bSize = bufPool->bufferSize;
+ DEBUGLOG(5, "ZSTDMT_getBuffer");
+ pthread_mutex_lock(&bufPool->poolMutex);
+ if (bufPool->nbBuffers) { /* try to use an existing buffer */
+ buffer_t const buf = bufPool->bTable[--(bufPool->nbBuffers)];
size_t const availBufferSize = buf.size;
- if ((availBufferSize >= bSize) & (availBufferSize <= 10*bSize))
+ if ((availBufferSize >= bSize) & (availBufferSize <= 10*bSize)) {
/* large enough, but not too much */
+ pthread_mutex_unlock(&bufPool->poolMutex);
return buf;
+ }
/* size conditions not respected : scratch this buffer, create new one */
- ZSTD_free(buf.start, pool->cMem);
+ DEBUGLOG(5, "existing buffer does not meet size conditions => freeing");
+ ZSTD_free(buf.start, bufPool->cMem);
}
+ pthread_mutex_unlock(&bufPool->poolMutex);
/* create new buffer */
+ DEBUGLOG(5, "create a new buffer");
{ buffer_t buffer;
- void* const start = ZSTD_malloc(bSize, pool->cMem);
- if (start==NULL) bSize = 0;
+ void* const start = ZSTD_malloc(bSize, bufPool->cMem);
buffer.start = start; /* note : start can be NULL if malloc fails ! */
- buffer.size = bSize;
+ buffer.size = (start==NULL) ? 0 : bSize;
return buffer;
}
}
/* store buffer for later re-use, up to pool capacity */
-static void ZSTDMT_releaseBuffer(ZSTDMT_bufferPool* pool, buffer_t buf)
-{
- if (buf.start == NULL) return; /* release on NULL */
- if (pool->nbBuffers < pool->totalBuffers) {
- pool->bTable[pool->nbBuffers++] = buf; /* store for later re-use */
+static void ZSTDMT_releaseBuffer(ZSTDMT_bufferPool* bufPool, buffer_t buf)
+{
+ if (buf.start == NULL) return; /* compatible with release on NULL */
+ DEBUGLOG(5, "ZSTDMT_releaseBuffer");
+ pthread_mutex_lock(&bufPool->poolMutex);
+ if (bufPool->nbBuffers < bufPool->totalBuffers) {
+ bufPool->bTable[bufPool->nbBuffers++] = buf; /* stored for later use */
+ pthread_mutex_unlock(&bufPool->poolMutex);
return;
}
+ pthread_mutex_unlock(&bufPool->poolMutex);
/* Reached bufferPool capacity (should not happen) */
- ZSTD_free(buf.start, pool->cMem);
+ DEBUGLOG(5, "buffer pool capacity reached => freeing ");
+ ZSTD_free(buf.start, bufPool->cMem);
}
/* ===== CCtx Pool ===== */
+/* a single CCtx Pool can be invoked from multiple threads in parallel */
typedef struct {
+ pthread_mutex_t poolMutex;
unsigned totalCCtx;
unsigned availCCtx;
ZSTD_customMem cMem;
ZSTD_CCtx* cctx[1]; /* variable size */
} ZSTDMT_CCtxPool;
-/* assumption : CCtxPool invocation only from main thread */
-
/* note : all CCtx borrowed from the pool should be released back to the pool _before_ freeing the pool */
static void ZSTDMT_freeCCtxPool(ZSTDMT_CCtxPool* pool)
{
unsigned u;
for (u=0; u<pool->totalCCtx; u++)
ZSTD_freeCCtx(pool->cctx[u]); /* note : compatible with free on NULL */
+ pthread_mutex_destroy(&pool->poolMutex);
ZSTD_free(pool, pool->cMem);
}
@@ -186,6 +216,10 @@ static ZSTDMT_CCtxPool* ZSTDMT_createCCtxPool(unsigned nbThreads,
ZSTDMT_CCtxPool* const cctxPool = (ZSTDMT_CCtxPool*) ZSTD_calloc(
sizeof(ZSTDMT_CCtxPool) + (nbThreads-1)*sizeof(ZSTD_CCtx*), cMem);
if (!cctxPool) return NULL;
+ if (pthread_mutex_init(&cctxPool->poolMutex, NULL)) {
+ ZSTD_free(cctxPool, cMem);
+ return NULL;
+ }
cctxPool->cMem = cMem;
cctxPool->totalCCtx = nbThreads;
cctxPool->availCCtx = 1; /* at least one cctx for single-thread mode */
@@ -198,50 +232,57 @@ static ZSTDMT_CCtxPool* ZSTDMT_createCCtxPool(unsigned nbThreads,
/* only works during initialization phase, not during compression */
static size_t ZSTDMT_sizeof_CCtxPool(ZSTDMT_CCtxPool* cctxPool)
{
- unsigned const nbThreads = cctxPool->totalCCtx;
- size_t const poolSize = sizeof(*cctxPool)
- + (nbThreads-1)*sizeof(ZSTD_CCtx*);
- unsigned u;
- size_t totalCCtxSize = 0;
- for (u=0; u<nbThreads; u++)
- totalCCtxSize += ZSTD_sizeof_CCtx(cctxPool->cctx[u]);
-
- return poolSize + totalCCtxSize;
+ pthread_mutex_lock(&cctxPool->poolMutex);
+ { unsigned const nbThreads = cctxPool->totalCCtx;
+ size_t const poolSize = sizeof(*cctxPool)
+ + (nbThreads-1)*sizeof(ZSTD_CCtx*);
+ unsigned u;
+ size_t totalCCtxSize = 0;
+ for (u=0; u<nbThreads; u++) {
+ totalCCtxSize += ZSTD_sizeof_CCtx(cctxPool->cctx[u]);
+ }
+ pthread_mutex_unlock(&cctxPool->poolMutex);
+ return poolSize + totalCCtxSize;
+ }
}
-static ZSTD_CCtx* ZSTDMT_getCCtx(ZSTDMT_CCtxPool* pool)
+static ZSTD_CCtx* ZSTDMT_getCCtx(ZSTDMT_CCtxPool* cctxPool)
{
- if (pool->availCCtx) {
- pool->availCCtx--;
- return pool->cctx[pool->availCCtx];
- }
- return ZSTD_createCCtx(); /* note : can be NULL, when creation fails ! */
+ DEBUGLOG(5, "ZSTDMT_getCCtx");
+ pthread_mutex_lock(&cctxPool->poolMutex);
+ if (cctxPool->availCCtx) {
+ cctxPool->availCCtx--;
+ { ZSTD_CCtx* const cctx = cctxPool->cctx[cctxPool->availCCtx];
+ pthread_mutex_unlock(&cctxPool->poolMutex);
+ return cctx;
+ } }
+ pthread_mutex_unlock(&cctxPool->poolMutex);
+ DEBUGLOG(5, "create one more CCtx");
+ return ZSTD_createCCtx_advanced(cctxPool->cMem); /* note : can be NULL, when creation fails ! */
}
static void ZSTDMT_releaseCCtx(ZSTDMT_CCtxPool* pool, ZSTD_CCtx* cctx)
{
if (cctx==NULL) return; /* compatibility with release on NULL */
+ pthread_mutex_lock(&pool->poolMutex);
if (pool->availCCtx < pool->totalCCtx)
pool->cctx[pool->availCCtx++] = cctx;
- else
+ else {
/* pool overflow : should not happen, since totalCCtx==nbThreads */
+ DEBUGLOG(5, "CCtx pool overflow : free cctx");
ZSTD_freeCCtx(cctx);
+ }
+ pthread_mutex_unlock(&pool->poolMutex);
}
/* ===== Thread worker ===== */
typedef struct {
- buffer_t buffer;
- size_t filled;
-} inBuff_t;
-
-typedef struct {
- ZSTD_CCtx* cctx;
buffer_t src;
const void* srcStart;
- size_t srcSize;
size_t dictSize;
+ size_t srcSize;
buffer_t dstBuff;
size_t cSize;
size_t dstFlushed;
@@ -253,6 +294,8 @@ typedef struct {
pthread_cond_t* jobCompleted_cond;
ZSTD_parameters params;
const ZSTD_CDict* cdict;
+ ZSTDMT_CCtxPool* cctxPool;
+ ZSTDMT_bufferPool* bufPool;
unsigned long long fullFrameSize;
} ZSTDMT_jobDescription;
@@ -260,37 +303,56 @@ typedef struct {
void ZSTDMT_compressChunk(void* jobDescription)
{
ZSTDMT_jobDescription* const job = (ZSTDMT_jobDescription*)jobDescription;
+ ZSTD_CCtx* cctx = ZSTDMT_getCCtx(job->cctxPool);
const void* const src = (const char*)job->srcStart + job->dictSize;
- buffer_t const dstBuff = job->dstBuff;
+ buffer_t dstBuff = job->dstBuff;
DEBUGLOG(5, "job (first:%u) (last:%u) : dictSize %u, srcSize %u",
job->firstChunk, job->lastChunk, (U32)job->dictSize, (U32)job->srcSize);
+
+ if (cctx==NULL) {
+ job->cSize = ERROR(memory_allocation);
+ goto _endJob;
+ }
+
+ if (dstBuff.start == NULL) {
+ dstBuff = ZSTDMT_getBuffer(job->bufPool);
+ if (dstBuff.start==NULL) {
+ job->cSize = ERROR(memory_allocation);
+ goto _endJob;
+ }
+ job->dstBuff = dstBuff;
+ }
+
if (job->cdict) { /* should only happen for first segment */
- size_t const initError = ZSTD_compressBegin_usingCDict_advanced(job->cctx, job->cdict, job->params.fParams, job->fullFrameSize);
+ size_t const initError = ZSTD_compressBegin_usingCDict_advanced(cctx, job->cdict, job->params.fParams, job->fullFrameSize);
DEBUGLOG(5, "using CDict");
if (ZSTD_isError(initError)) { job->cSize = initError; goto _endJob; }
} else { /* srcStart points at reloaded section */
if (!job->firstChunk) job->params.fParams.contentSizeFlag = 0; /* ensure no srcSize control */
- { size_t const dictModeError = ZSTD_setCCtxParameter(job->cctx, ZSTD_p_forceRawDict, 1); /* Force loading dictionary in "content-only" mode (no header analysis) */
- size_t const initError = ZSTD_compressBegin_advanced(job->cctx, job->srcStart, job->dictSize, job->params, job->fullFrameSize);
+ { size_t const dictModeError = ZSTD_setCCtxParameter(cctx, ZSTD_p_forceRawDict, 1); /* Force loading dictionary in "content-only" mode (no header analysis) */
+ size_t const initError = ZSTD_compressBegin_advanced(cctx, job->srcStart, job->dictSize, job->params, job->fullFrameSize);
if (ZSTD_isError(initError) || ZSTD_isError(dictModeError)) { job->cSize = initError; goto _endJob; }
- ZSTD_setCCtxParameter(job->cctx, ZSTD_p_forceWindow, 1);
+ ZSTD_setCCtxParameter(cctx, ZSTD_p_forceWindow, 1);
} }
if (!job->firstChunk) { /* flush and overwrite frame header when it's not first segment */
- size_t const hSize = ZSTD_compressContinue(job->cctx, dstBuff.start, dstBuff.size, src, 0);
+ size_t const hSize = ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, 0);
if (ZSTD_isError(hSize)) { job->cSize = hSize; goto _endJob; }
- ZSTD_invalidateRepCodes(job->cctx);
+ ZSTD_invalidateRepCodes(cctx);
}
DEBUGLOG(5, "Compressing : ");
DEBUG_PRINTHEX(4, job->srcStart, 12);
job->cSize = (job->lastChunk) ?
- ZSTD_compressEnd (job->cctx, dstBuff.start, dstBuff.size, src, job->srcSize) :
- ZSTD_compressContinue(job->cctx, dstBuff.start, dstBuff.size, src, job->srcSize);
+ ZSTD_compressEnd (cctx, dstBuff.start, dstBuff.size, src, job->srcSize) :
+ ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, job->srcSize);
DEBUGLOG(5, "compressed %u bytes into %u bytes (first:%u) (last:%u)",
(unsigned)job->srcSize, (unsigned)job->cSize, job->firstChunk, job->lastChunk);
DEBUGLOG(5, "dstBuff.size : %u ; => %s", (U32)dstBuff.size, ZSTD_getErrorName(job->cSize));
_endJob:
+ ZSTDMT_releaseCCtx(job->cctxPool, cctx);
+ ZSTDMT_releaseBuffer(job->bufPool, job->src);
+ job->src = g_nullBuffer; job->srcStart = NULL;
PTHREAD_MUTEX_LOCK(job->jobCompleted_mutex);
job->jobCompleted = 1;
job->jobScanned = 0;
@@ -303,15 +365,19 @@ _endJob:
/* ===== Multi-threaded compression ===== */
/* ------------------------------------------ */
+typedef struct {
+ buffer_t buffer;
+ size_t filled;
+} inBuff_t;
+
struct ZSTDMT_CCtx_s {
POOL_ctx* factory;
ZSTDMT_jobDescription* jobs;
- ZSTDMT_bufferPool* buffPool;
+ ZSTDMT_bufferPool* bufPool;
ZSTDMT_CCtxPool* cctxPool;
pthread_mutex_t jobCompleted_mutex;
pthread_cond_t jobCompleted_cond;
size_t targetSectionSize;
- size_t marginSize;
size_t inBuffSize;
size_t dictSize;
size_t targetDictSize;
@@ -324,7 +390,7 @@ struct ZSTDMT_CCtx_s {
unsigned nextJobID;
unsigned frameEnded;
unsigned allJobsCompleted;
- unsigned overlapRLog;
+ unsigned overlapLog;
unsigned long long frameContentSize;
size_t sectionSize;
ZSTD_customMem cMem;
@@ -347,7 +413,8 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
U32 nbJobs = nbThreads + 2;
DEBUGLOG(3, "ZSTDMT_createCCtx_advanced");
- if ((nbThreads < 1) | (nbThreads > ZSTDMT_NBTHREADS_MAX)) return NULL;
+ if (nbThreads < 1) return NULL;
+ nbThreads = MIN(nbThreads , ZSTDMT_NBTHREADS_MAX);
if ((cMem.customAlloc!=NULL) ^ (cMem.customFree!=NULL))
/* invalid custom allocator */
return NULL;
@@ -358,18 +425,24 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
mtctx->nbThreads = nbThreads;
mtctx->allJobsCompleted = 1;
mtctx->sectionSize = 0;
- mtctx->overlapRLog = 3;
- mtctx->factory = POOL_create(nbThreads, 1);
+ mtctx->overlapLog = ZSTDMT_OVERLAPLOG_DEFAULT;
+ mtctx->factory = POOL_create(nbThreads, 0);
mtctx->jobs = ZSTDMT_allocJobsTable(&nbJobs, cMem);
mtctx->jobIDMask = nbJobs - 1;
- mtctx->buffPool = ZSTDMT_createBufferPool(nbThreads, cMem);
+ mtctx->bufPool = ZSTDMT_createBufferPool(nbThreads, cMem);
mtctx->cctxPool = ZSTDMT_createCCtxPool(nbThreads, cMem);
- if (!mtctx->factory | !mtctx->jobs | !mtctx->buffPool | !mtctx->cctxPool) {
+ if (!mtctx->factory | !mtctx->jobs | !mtctx->bufPool | !mtctx->cctxPool) {
+ ZSTDMT_freeCCtx(mtctx);
+ return NULL;
+ }
+ if (pthread_mutex_init(&mtctx->jobCompleted_mutex, NULL)) {
+ ZSTDMT_freeCCtx(mtctx);
+ return NULL;
+ }
+ if (pthread_cond_init(&mtctx->jobCompleted_cond, NULL)) {
ZSTDMT_freeCCtx(mtctx);
return NULL;
}
- pthread_mutex_init(&mtctx->jobCompleted_mutex, NULL); /* Todo : check init function return */
- pthread_cond_init(&mtctx->jobCompleted_cond, NULL);
DEBUGLOG(3, "mt_cctx created, for %u threads", nbThreads);
return mtctx;
}
@@ -386,15 +459,13 @@ static void ZSTDMT_releaseAllJobResources(ZSTDMT_CCtx* mtctx)
unsigned jobID;
DEBUGLOG(3, "ZSTDMT_releaseAllJobResources");
for (jobID=0; jobID <= mtctx->jobIDMask; jobID++) {
- ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->jobs[jobID].dstBuff);
+ ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].dstBuff);
mtctx->jobs[jobID].dstBuff = g_nullBuffer;
- ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->jobs[jobID].src);
+ ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].src);
mtctx->jobs[jobID].src = g_nullBuffer;
- ZSTDMT_releaseCCtx(mtctx->cctxPool, mtctx->jobs[jobID].cctx);
- mtctx->jobs[jobID].cctx = NULL;
}
memset(mtctx->jobs, 0, (mtctx->jobIDMask+1)*sizeof(ZSTDMT_jobDescription));
- ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->inBuff.buffer);
+ ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->inBuff.buffer);
mtctx->inBuff.buffer = g_nullBuffer;
mtctx->allJobsCompleted = 1;
}
@@ -404,7 +475,7 @@ size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx)
if (mtctx==NULL) return 0; /* compatible with free on NULL */
POOL_free(mtctx->factory);
if (!mtctx->allJobsCompleted) ZSTDMT_releaseAllJobResources(mtctx); /* stop workers first */
- ZSTDMT_freeBufferPool(mtctx->buffPool); /* release job resources into pools first */
+ ZSTDMT_freeBufferPool(mtctx->bufPool); /* release job resources into pools first */
ZSTD_free(mtctx->jobs, mtctx->cMem);
ZSTDMT_freeCCtxPool(mtctx->cctxPool);
ZSTD_freeCDict(mtctx->cdictLocal);
@@ -418,11 +489,11 @@ size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx)
{
if (mtctx == NULL) return 0; /* supports sizeof NULL */
return sizeof(*mtctx)
- + POOL_sizeof(mtctx->factory)
- + ZSTDMT_sizeof_bufferPool(mtctx->buffPool)
- + (mtctx->jobIDMask+1) * sizeof(ZSTDMT_jobDescription)
- + ZSTDMT_sizeof_CCtxPool(mtctx->cctxPool)
- + ZSTD_sizeof_CDict(mtctx->cdictLocal);
+ + POOL_sizeof(mtctx->factory)
+ + ZSTDMT_sizeof_bufferPool(mtctx->bufPool)
+ + (mtctx->jobIDMask+1) * sizeof(ZSTDMT_jobDescription)
+ + ZSTDMT_sizeof_CCtxPool(mtctx->cctxPool)
+ + ZSTD_sizeof_CDict(mtctx->cdictLocal);
}
size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSDTMT_parameter parameter, unsigned value)
@@ -434,10 +505,10 @@ size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSDTMT_parameter parameter,
return 0;
case ZSTDMT_p_overlapSectionLog :
DEBUGLOG(5, "ZSTDMT_p_overlapSectionLog : %u", value);
- mtctx->overlapRLog = (value >= 9) ? 0 : 9 - value;
+ mtctx->overlapLog = (value >= 9) ? 9 : value;
return 0;
default :
- return ERROR(compressionParameter_unsupported);
+ return ERROR(parameter_unsupported);
}
}
@@ -459,12 +530,13 @@ static unsigned computeNbChunks(size_t srcSize, unsigned windowLog, unsigned nbT
size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
- void* dst, size_t dstCapacity,
- const void* src, size_t srcSize,
- const ZSTD_CDict* cdict,
- ZSTD_parameters const params,
- unsigned overlapRLog)
+ void* dst, size_t dstCapacity,
+ const void* src, size_t srcSize,
+ const ZSTD_CDict* cdict,
+ ZSTD_parameters const params,
+ unsigned overlapLog)
{
+ unsigned const overlapRLog = (overlapLog>9) ? 0 : 9-overlapLog;
size_t const overlapSize = (overlapRLog>=9) ? 0 : (size_t)1 << (params.cParams.windowLog - overlapRLog);
unsigned nbChunks = computeNbChunks(srcSize, params.cParams.windowLog, mtctx->nbThreads);
size_t const proposedChunkSize = (srcSize + (nbChunks-1)) / nbChunks;
@@ -473,6 +545,7 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
size_t remainingSrcSize = srcSize;
unsigned const compressWithinDst = (dstCapacity >= ZSTD_compressBound(srcSize)) ? nbChunks : (unsigned)(dstCapacity / ZSTD_compressBound(avgChunkSize)); /* presumes avgChunkSize >= 256 KB, which should be the case */
size_t frameStartPos = 0, dstBufferPos = 0;
+ XXH64_state_t xxh64;
DEBUGLOG(4, "nbChunks : %2u (chunkSize : %u bytes) ", nbChunks, (U32)avgChunkSize);
if (nbChunks==1) { /* fallback to single-thread mode */
@@ -480,7 +553,9 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
if (cdict) return ZSTD_compress_usingCDict_advanced(cctx, dst, dstCapacity, src, srcSize, cdict, params.fParams);
return ZSTD_compress_advanced(cctx, dst, dstCapacity, src, srcSize, NULL, 0, params);
}
- assert(avgChunkSize >= 256 KB); /* condition for ZSTD_compressBound(A) + ZSTD_compressBound(B) <= ZSTD_compressBound(A+B), which is useful to avoid allocating extra buffers */
+ assert(avgChunkSize >= 256 KB); /* condition for ZSTD_compressBound(A) + ZSTD_compressBound(B) <= ZSTD_compressBound(A+B), which is required for compressWithinDst */
+ ZSTDMT_setBufferSize(mtctx->bufPool, ZSTD_compressBound(avgChunkSize) );
+ XXH64_reset(&xxh64, 0);
if (nbChunks > mtctx->jobIDMask+1) { /* enlarge job table */
U32 nbJobs = nbChunks;
@@ -496,17 +571,10 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
size_t const chunkSize = MIN(remainingSrcSize, avgChunkSize);
size_t const dstBufferCapacity = ZSTD_compressBound(chunkSize);
buffer_t const dstAsBuffer = { (char*)dst + dstBufferPos, dstBufferCapacity };
- buffer_t const dstBuffer = u < compressWithinDst ? dstAsBuffer : ZSTDMT_getBuffer(mtctx->buffPool, dstBufferCapacity);
- ZSTD_CCtx* const cctx = ZSTDMT_getCCtx(mtctx->cctxPool);
+ buffer_t const dstBuffer = u < compressWithinDst ? dstAsBuffer : g_nullBuffer;
size_t dictSize = u ? overlapSize : 0;
- if ((cctx==NULL) || (dstBuffer.start==NULL)) {
- mtctx->jobs[u].cSize = ERROR(memory_allocation); /* job result */
- mtctx->jobs[u].jobCompleted = 1;
- nbChunks = u+1; /* only wait and free u jobs, instead of initially expected nbChunks ones */
- break; /* let's wait for previous jobs to complete, but don't start new ones */
- }
-
+ mtctx->jobs[u].src = g_nullBuffer;
mtctx->jobs[u].srcStart = srcStart + frameStartPos - dictSize;
mtctx->jobs[u].dictSize = dictSize;
mtctx->jobs[u].srcSize = chunkSize;
@@ -516,13 +584,18 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
/* do not calculate checksum within sections, but write it in header for first section */
if (u!=0) mtctx->jobs[u].params.fParams.checksumFlag = 0;
mtctx->jobs[u].dstBuff = dstBuffer;
- mtctx->jobs[u].cctx = cctx;
+ mtctx->jobs[u].cctxPool = mtctx->cctxPool;
+ mtctx->jobs[u].bufPool = mtctx->bufPool;
mtctx->jobs[u].firstChunk = (u==0);
mtctx->jobs[u].lastChunk = (u==nbChunks-1);
mtctx->jobs[u].jobCompleted = 0;
mtctx->jobs[u].jobCompleted_mutex = &mtctx->jobCompleted_mutex;
mtctx->jobs[u].jobCompleted_cond = &mtctx->jobCompleted_cond;
+ if (params.fParams.checksumFlag) {
+ XXH64_update(&xxh64, srcStart + frameStartPos, chunkSize);
+ }
+
DEBUGLOG(5, "posting job %u (%u bytes)", u, (U32)chunkSize);
DEBUG_PRINTHEX(6, mtctx->jobs[u].srcStart, 12);
POOL_add(mtctx->factory, ZSTDMT_compressChunk, &mtctx->jobs[u]);
@@ -533,8 +606,8 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
} }
/* collect result */
- { unsigned chunkID;
- size_t error = 0, dstPos = 0;
+ { size_t error = 0, dstPos = 0;
+ unsigned chunkID;
for (chunkID=0; chunkID<nbChunks; chunkID++) {
DEBUGLOG(5, "waiting for chunk %u ", chunkID);
PTHREAD_MUTEX_LOCK(&mtctx->jobCompleted_mutex);
@@ -545,8 +618,6 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
pthread_mutex_unlock(&mtctx->jobCompleted_mutex);
DEBUGLOG(5, "ready to write chunk %u ", chunkID);
- ZSTDMT_releaseCCtx(mtctx->cctxPool, mtctx->jobs[chunkID].cctx);
- mtctx->jobs[chunkID].cctx = NULL;
mtctx->jobs[chunkID].srcStart = NULL;
{ size_t const cSize = mtctx->jobs[chunkID].cSize;
if (ZSTD_isError(cSize)) error = cSize;
@@ -556,13 +627,25 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
memmove((char*)dst + dstPos, mtctx->jobs[chunkID].dstBuff.start, cSize); /* may overlap when chunk compressed within dst */
if (chunkID >= compressWithinDst) { /* chunk compressed into its own buffer, which must be released */
DEBUGLOG(5, "releasing buffer %u>=%u", chunkID, compressWithinDst);
- ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->jobs[chunkID].dstBuff);
+ ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[chunkID].dstBuff);
}
mtctx->jobs[chunkID].dstBuff = g_nullBuffer;
}
dstPos += cSize ;
}
- }
+ } /* for (chunkID=0; chunkID<nbChunks; chunkID++) */
+
+ DEBUGLOG(4, "checksumFlag : %u ", params.fParams.checksumFlag);
+ if (params.fParams.checksumFlag) {
+ U32 const checksum = (U32)XXH64_digest(&xxh64);
+ if (dstPos + 4 > dstCapacity) {
+ error = ERROR(dstSize_tooSmall);
+ } else {
+ DEBUGLOG(4, "writing checksum : %08X \n", checksum);
+ MEM_writeLE32((char*)dst + dstPos, checksum);
+ dstPos += 4;
+ } }
+
if (!error) DEBUGLOG(4, "compressed size : %u ", (U32)dstPos);
return error ? error : dstPos;
}
@@ -574,10 +657,10 @@ size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
const void* src, size_t srcSize,
int compressionLevel)
{
- U32 const overlapRLog = (compressionLevel >= ZSTD_maxCLevel()) ? 0 : 3;
+ U32 const overlapLog = (compressionLevel >= ZSTD_maxCLevel()) ? 9 : ZSTDMT_OVERLAPLOG_DEFAULT;
ZSTD_parameters params = ZSTD_getParams(compressionLevel, srcSize, 0);
params.fParams.contentSizeFlag = 1;
- return ZSTDMT_compress_advanced(mtctx, dst, dstCapacity, src, srcSize, NULL, params, overlapRLog);
+ return ZSTDMT_compress_advanced(mtctx, dst, dstCapacity, src, srcSize, NULL, params, overlapLog);
}
@@ -615,8 +698,8 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
if (zcs->nbThreads==1) {
DEBUGLOG(4, "single thread mode");
return ZSTD_initCStream_internal(zcs->cctxPool->cctx[0],
- dict, dictSize, cdict,
- params, pledgedSrcSize);
+ dict, dictSize, cdict,
+ params, pledgedSrcSize);
}
if (zcs->allJobsCompleted == 0) { /* previous compression not correctly finished */
@@ -642,18 +725,16 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
zcs->cdict = cdict;
}
- zcs->targetDictSize = (zcs->overlapRLog>=9) ? 0 : (size_t)1 << (zcs->params.cParams.windowLog - zcs->overlapRLog);
- DEBUGLOG(4, "overlapRLog : %u ", zcs->overlapRLog);
+ zcs->targetDictSize = (zcs->overlapLog==0) ? 0 : (size_t)1 << (zcs->params.cParams.windowLog - (9 - zcs->overlapLog));
+ DEBUGLOG(4, "overlapLog : %u ", zcs->overlapLog);
DEBUGLOG(4, "overlap Size : %u KB", (U32)(zcs->targetDictSize>>10));
zcs->targetSectionSize = zcs->sectionSize ? zcs->sectionSize : (size_t)1 << (zcs->params.cParams.windowLog + 2);
zcs->targetSectionSize = MAX(ZSTDMT_SECTION_SIZE_MIN, zcs->targetSectionSize);
zcs->targetSectionSize = MAX(zcs->targetDictSize, zcs->targetSectionSize);
DEBUGLOG(4, "Section Size : %u KB", (U32)(zcs->targetSectionSize>>10));
- zcs->marginSize = zcs->targetSectionSize >> 2;
- zcs->inBuffSize = zcs->targetDictSize + zcs->targetSectionSize + zcs->marginSize;
- zcs->inBuff.buffer = ZSTDMT_getBuffer(zcs->buffPool, zcs->inBuffSize);
- if (zcs->inBuff.buffer.start == NULL) return ERROR(memory_allocation);
- zcs->inBuff.filled = 0;
+ zcs->inBuffSize = zcs->targetDictSize + zcs->targetSectionSize;
+ ZSTDMT_setBufferSize(zcs->bufPool, MAX(zcs->inBuffSize, ZSTD_compressBound(zcs->targetSectionSize)) );
+ zcs->inBuff.buffer = g_nullBuffer;
zcs->dictSize = 0;
zcs->doneJobID = 0;
zcs->nextJobID = 0;
@@ -664,8 +745,9 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
}
size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
- const void* dict, size_t dictSize,
- ZSTD_parameters params, unsigned long long pledgedSrcSize)
+ const void* dict, size_t dictSize,
+ ZSTD_parameters params,
+ unsigned long long pledgedSrcSize)
{
DEBUGLOG(5, "ZSTDMT_initCStream_advanced");
return ZSTDMT_initCStream_internal(mtctx, dict, dictSize, NULL, params, pledgedSrcSize);
@@ -701,19 +783,8 @@ size_t ZSTDMT_initCStream(ZSTDMT_CCtx* zcs, int compressionLevel) {
static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsigned endFrame)
{
- size_t const dstBufferCapacity = ZSTD_compressBound(srcSize);
- buffer_t const dstBuffer = ZSTDMT_getBuffer(zcs->buffPool, dstBufferCapacity);
- ZSTD_CCtx* const cctx = ZSTDMT_getCCtx(zcs->cctxPool);
unsigned const jobID = zcs->nextJobID & zcs->jobIDMask;
- if ((cctx==NULL) || (dstBuffer.start==NULL)) {
- zcs->jobs[jobID].jobCompleted = 1;
- zcs->nextJobID++;
- ZSTDMT_waitForAllJobsCompleted(zcs);
- ZSTDMT_releaseAllJobResources(zcs);
- return ERROR(memory_allocation);
- }
-
DEBUGLOG(4, "preparing job %u to compress %u bytes with %u preload ",
zcs->nextJobID, (U32)srcSize, (U32)zcs->dictSize);
zcs->jobs[jobID].src = zcs->inBuff.buffer;
@@ -726,8 +797,9 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
if (zcs->nextJobID) zcs->jobs[jobID].params.fParams.checksumFlag = 0;
zcs->jobs[jobID].cdict = zcs->nextJobID==0 ? zcs->cdict : NULL;
zcs->jobs[jobID].fullFrameSize = zcs->frameContentSize;
- zcs->jobs[jobID].dstBuff = dstBuffer;
- zcs->jobs[jobID].cctx = cctx;
+ zcs->jobs[jobID].dstBuff = g_nullBuffer;
+ zcs->jobs[jobID].cctxPool = zcs->cctxPool;
+ zcs->jobs[jobID].bufPool = zcs->bufPool;
zcs->jobs[jobID].firstChunk = (zcs->nextJobID==0);
zcs->jobs[jobID].lastChunk = endFrame;
zcs->jobs[jobID].jobCompleted = 0;
@@ -735,11 +807,13 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
zcs->jobs[jobID].jobCompleted_mutex = &zcs->jobCompleted_mutex;
zcs->jobs[jobID].jobCompleted_cond = &zcs->jobCompleted_cond;
+ if (zcs->params.fParams.checksumFlag)
+ XXH64_update(&zcs->xxhState, (const char*)zcs->inBuff.buffer.start + zcs->dictSize, srcSize);
+
/* get a new buffer for next input */
if (!endFrame) {
size_t const newDictSize = MIN(srcSize + zcs->dictSize, zcs->targetDictSize);
- DEBUGLOG(5, "ZSTDMT_createCompressionJob::endFrame = %u", endFrame);
- zcs->inBuff.buffer = ZSTDMT_getBuffer(zcs->buffPool, zcs->inBuffSize);
+ zcs->inBuff.buffer = ZSTDMT_getBuffer(zcs->bufPool);
if (zcs->inBuff.buffer.start == NULL) { /* not enough memory to allocate next input buffer */
zcs->jobs[jobID].jobCompleted = 1;
zcs->nextJobID++;
@@ -747,26 +821,20 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
ZSTDMT_releaseAllJobResources(zcs);
return ERROR(memory_allocation);
}
- DEBUGLOG(5, "inBuff currently filled to %u", (U32)zcs->inBuff.filled);
zcs->inBuff.filled -= srcSize + zcs->dictSize - newDictSize;
- DEBUGLOG(5, "new job : inBuff filled to %u, with %u dict and %u src",
- (U32)zcs->inBuff.filled, (U32)newDictSize,
- (U32)(zcs->inBuff.filled - newDictSize));
memmove(zcs->inBuff.buffer.start,
(const char*)zcs->jobs[jobID].srcStart + zcs->dictSize + srcSize - newDictSize,
zcs->inBuff.filled);
- DEBUGLOG(5, "new inBuff pre-filled");
zcs->dictSize = newDictSize;
} else { /* if (endFrame==1) */
- DEBUGLOG(5, "ZSTDMT_createCompressionJob::endFrame = %u", endFrame);
zcs->inBuff.buffer = g_nullBuffer;
zcs->inBuff.filled = 0;
zcs->dictSize = 0;
zcs->frameEnded = 1;
- if (zcs->nextJobID == 0)
+ if (zcs->nextJobID == 0) {
/* single chunk exception : checksum is calculated directly within worker thread */
zcs->params.fParams.checksumFlag = 0;
- }
+ } }
DEBUGLOG(4, "posting job %u : %u bytes (end:%u) (note : doneJob = %u=>%u)",
zcs->nextJobID,
@@ -804,11 +872,8 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
ZSTDMT_releaseAllJobResources(zcs);
return job.cSize;
}
- ZSTDMT_releaseCCtx(zcs->cctxPool, job.cctx);
- zcs->jobs[wJobID].cctx = NULL;
DEBUGLOG(5, "zcs->params.fParams.checksumFlag : %u ", zcs->params.fParams.checksumFlag);
if (zcs->params.fParams.checksumFlag) {
- XXH64_update(&zcs->xxhState, (const char*)job.srcStart + job.dictSize, job.srcSize);
if (zcs->frameEnded && (zcs->doneJobID+1 == zcs->nextJobID)) { /* write checksum at end of last section */
U32 const checksum = (U32)XXH64_digest(&zcs->xxhState);
DEBUGLOG(5, "writing checksum : %08X \n", checksum);
@@ -816,9 +881,6 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
job.cSize += 4;
zcs->jobs[wJobID].cSize += 4;
} }
- ZSTDMT_releaseBuffer(zcs->buffPool, job.src);
- zcs->jobs[wJobID].srcStart = NULL;
- zcs->jobs[wJobID].src = g_nullBuffer;
zcs->jobs[wJobID].jobScanned = 1;
}
{ size_t const toWrite = MIN(job.cSize - job.dstFlushed, output->size - output->pos);
@@ -828,7 +890,7 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
job.dstFlushed += toWrite;
}
if (job.dstFlushed == job.cSize) { /* output buffer fully flushed => move to next one */
- ZSTDMT_releaseBuffer(zcs->buffPool, job.dstBuff);
+ ZSTDMT_releaseBuffer(zcs->bufPool, job.dstBuff);
zcs->jobs[wJobID].dstBuff = g_nullBuffer;
zcs->jobs[wJobID].jobCompleted = 0;
zcs->doneJobID++;
@@ -852,18 +914,18 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
ZSTD_inBuffer* input,
ZSTD_EndDirective endOp)
{
- size_t const newJobThreshold = mtctx->dictSize + mtctx->targetSectionSize + mtctx->marginSize;
+ size_t const newJobThreshold = mtctx->dictSize + mtctx->targetSectionSize;
assert(output->pos <= output->size);
assert(input->pos <= input->size);
if ((mtctx->frameEnded) && (endOp==ZSTD_e_continue)) {
/* current frame being ended. Only flush/end are allowed. Or start new frame with init */
return ERROR(stage_wrong);
}
- if (mtctx->nbThreads==1) {
+ if (mtctx->nbThreads==1) { /* delegate to single-thread (synchronous) */
return ZSTD_compressStream_generic(mtctx->cctxPool->cctx[0], output, input, endOp);
}
- /* single-pass shortcut (note : this is blocking-mode) */
+ /* single-pass shortcut (note : this is synchronous-mode) */
if ( (mtctx->nextJobID==0) /* just started */
&& (mtctx->inBuff.filled==0) /* nothing buffered */
&& (endOp==ZSTD_e_end) /* end order */
@@ -871,24 +933,29 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
size_t const cSize = ZSTDMT_compress_advanced(mtctx,
(char*)output->dst + output->pos, output->size - output->pos,
(const char*)input->src + input->pos, input->size - input->pos,
- mtctx->cdict, mtctx->params, mtctx->overlapRLog);
+ mtctx->cdict, mtctx->params, mtctx->overlapLog);
if (ZSTD_isError(cSize)) return cSize;
input->pos = input->size;
output->pos += cSize;
- ZSTDMT_releaseBuffer(mtctx->buffPool, mtctx->inBuff.buffer); /* was allocated in initStream */
+ ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->inBuff.buffer); /* was allocated in initStream */
mtctx->allJobsCompleted = 1;
mtctx->frameEnded = 1;
return 0;
}
/* fill input buffer */
- if ((input->src) && (mtctx->inBuff.buffer.start)) { /* support NULL input */
- size_t const toLoad = MIN(input->size - input->pos, mtctx->inBuffSize - mtctx->inBuff.filled);
- DEBUGLOG(2, "inBuff:%08X; inBuffSize=%u; ToCopy=%u", (U32)(size_t)mtctx->inBuff.buffer.start, (U32)mtctx->inBuffSize, (U32)toLoad);
- memcpy((char*)mtctx->inBuff.buffer.start + mtctx->inBuff.filled, (const char*)input->src + input->pos, toLoad);
- input->pos += toLoad;
- mtctx->inBuff.filled += toLoad;
- }
+ if (input->size > input->pos) { /* support NULL input */
+ if (mtctx->inBuff.buffer.start == NULL) {
+ mtctx->inBuff.buffer = ZSTDMT_getBuffer(mtctx->bufPool);
+ if (mtctx->inBuff.buffer.start == NULL) return ERROR(memory_allocation);
+ mtctx->inBuff.filled = 0;
+ }
+ { size_t const toLoad = MIN(input->size - input->pos, mtctx->inBuffSize - mtctx->inBuff.filled);
+ DEBUGLOG(5, "inBuff:%08X; inBuffSize=%u; ToCopy=%u", (U32)(size_t)mtctx->inBuff.buffer.start, (U32)mtctx->inBuffSize, (U32)toLoad);
+ memcpy((char*)mtctx->inBuff.buffer.start + mtctx->inBuff.filled, (const char*)input->src + input->pos, toLoad);
+ input->pos += toLoad;
+ mtctx->inBuff.filled += toLoad;
+ } }
if ( (mtctx->inBuff.filled >= newJobThreshold) /* filled enough : let's compress */
&& (mtctx->nextJobID <= mtctx->doneJobID + mtctx->jobIDMask) ) { /* avoid overwriting job round buffer */
diff --git a/thirdparty/zstd/compress/zstdmt_compress.h b/thirdparty/zstd/compress/zstdmt_compress.h
index fad63b6d86..0f0fc2b03f 100644
--- a/thirdparty/zstd/compress/zstdmt_compress.h
+++ b/thirdparty/zstd/compress/zstdmt_compress.h
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
#ifndef ZSTDMT_COMPRESS_H
@@ -15,10 +15,11 @@
#endif
-/* Note : All prototypes defined in this file are labelled experimental.
- * No guarantee of API continuity is provided on any of them.
- * In fact, the expectation is that these prototypes will be replaced
- * by ZSTD_compress_generic() API in the near future */
+/* Note : This is an internal API.
+ * Some methods are still exposed (ZSTDLIB_API),
+ * because it used to be the only way to invoke MT compression.
+ * Now, it's recommended to use ZSTD_compress_generic() instead.
+ * These methods will stop being exposed in a future version */
/* === Dependencies === */
#include <stddef.h> /* size_t */
@@ -67,7 +68,7 @@ ZSTDLIB_API size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
const void* src, size_t srcSize,
const ZSTD_CDict* cdict,
ZSTD_parameters const params,
- unsigned overlapRLog);
+ unsigned overlapLog);
ZSTDLIB_API size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
const void* dict, size_t dictSize, /* dict can be released after init, a local copy is preserved within zcs */
diff --git a/thirdparty/zstd/decompress/huf_decompress.c b/thirdparty/zstd/decompress/huf_decompress.c
index 2a1b70ea5e..79ded96bf6 100644
--- a/thirdparty/zstd/decompress/huf_decompress.c
+++ b/thirdparty/zstd/decompress/huf_decompress.c
@@ -33,37 +33,21 @@
****************************************************************** */
/* **************************************************************
-* Compiler specifics
-****************************************************************/
-#ifdef _MSC_VER /* Visual Studio */
-# define FORCE_INLINE static __forceinline
-# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */
-#else
-# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */
-# ifdef __GNUC__
-# define FORCE_INLINE static inline __attribute__((always_inline))
-# else
-# define FORCE_INLINE static inline
-# endif
-# else
-# define FORCE_INLINE static
-# endif /* __STDC_VERSION__ */
-#endif
-
-
-/* **************************************************************
* Dependencies
****************************************************************/
#include <string.h> /* memcpy, memset */
#include "bitstream.h" /* BIT_* */
+#include "compiler.h"
#include "fse.h" /* header compression */
#define HUF_STATIC_LINKING_ONLY
#include "huf.h"
+#include "error_private.h"
/* **************************************************************
* Error Management
****************************************************************/
+#define HUF_isError ERR_isError
#define HUF_STATIC_ASSERT(c) { enum { HUF_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */
@@ -180,7 +164,7 @@ static BYTE HUF_decodeSymbolX2(BIT_DStream_t* Dstream, const HUF_DEltX2* dt, con
if (MEM_64bits()) \
HUF_DECODE_SYMBOLX2_0(ptr, DStreamPtr)
-FORCE_INLINE size_t HUF_decodeStreamX2(BYTE* p, BIT_DStream_t* const bitDPtr, BYTE* const pEnd, const HUF_DEltX2* const dt, const U32 dtLog)
+HINT_INLINE size_t HUF_decodeStreamX2(BYTE* p, BIT_DStream_t* const bitDPtr, BYTE* const pEnd, const HUF_DEltX2* const dt, const U32 dtLog)
{
BYTE* const pStart = p;
@@ -639,7 +623,7 @@ static U32 HUF_decodeLastSymbolX4(void* op, BIT_DStream_t* DStream, const HUF_DE
if (MEM_64bits()) \
ptr += HUF_decodeSymbolX4(ptr, DStreamPtr, dt, dtLog)
-FORCE_INLINE size_t HUF_decodeStreamX4(BYTE* p, BIT_DStream_t* bitDPtr, BYTE* const pEnd, const HUF_DEltX4* const dt, const U32 dtLog)
+HINT_INLINE size_t HUF_decodeStreamX4(BYTE* p, BIT_DStream_t* bitDPtr, BYTE* const pEnd, const HUF_DEltX4* const dt, const U32 dtLog)
{
BYTE* const pStart = p;
@@ -917,11 +901,11 @@ static const algo_time_t algoTime[16 /* Quantization */][3 /* single, double, qu
* Tells which decoder is likely to decode faster,
* based on a set of pre-determined metrics.
* @return : 0==HUF_decompress4X2, 1==HUF_decompress4X4 .
-* Assumption : 0 < cSrcSize < dstSize <= 128 KB */
+* Assumption : 0 < cSrcSize, dstSize <= 128 KB */
U32 HUF_selectDecoder (size_t dstSize, size_t cSrcSize)
{
/* decoder timing evaluation */
- U32 const Q = (U32)(cSrcSize * 16 / dstSize); /* Q < 16 since dstSize > cSrcSize */
+ U32 const Q = cSrcSize >= dstSize ? 15 : (U32)(cSrcSize * 16 / dstSize); /* Q < 16 */
U32 const D256 = (U32)(dstSize >> 8);
U32 const DTime0 = algoTime[Q][0].tableTime + (algoTime[Q][0].decode256Time * D256);
U32 DTime1 = algoTime[Q][1].tableTime + (algoTime[Q][1].decode256Time * D256);
@@ -977,7 +961,7 @@ size_t HUF_decompress4X_hufOnly_wksp(HUF_DTable* dctx, void* dst,
{
/* validation checks */
if (dstSize == 0) return ERROR(dstSize_tooSmall);
- if ((cSrcSize >= dstSize) || (cSrcSize <= 1)) return ERROR(corruption_detected); /* invalid */
+ if (cSrcSize == 0) return ERROR(corruption_detected);
{ U32 const algoNb = HUF_selectDecoder(dstSize, cSrcSize);
return algoNb ? HUF_decompress4X4_DCtx_wksp(dctx, dst, dstSize, cSrc, cSrcSize, workSpace, wkspSize):
diff --git a/thirdparty/zstd/decompress/zstd_decompress.c b/thirdparty/zstd/decompress/zstd_decompress.c
index 465bcc20b5..d2bc545e52 100644
--- a/thirdparty/zstd/decompress/zstd_decompress.c
+++ b/thirdparty/zstd/decompress/zstd_decompress.c
@@ -1,10 +1,10 @@
-/**
+/*
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
@@ -53,15 +53,6 @@
# include "zstd_legacy.h"
#endif
-#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_I86)) /* _mm_prefetch() is not defined outside of x86/x64 */
-# include <mmintrin.h> /* https://msdn.microsoft.com/fr-fr/library/84szxsww(v=vs.90).aspx */
-# define ZSTD_PREFETCH(ptr) _mm_prefetch((const char*)ptr, _MM_HINT_T0)
-#elif defined(__GNUC__)
-# define ZSTD_PREFETCH(ptr) __builtin_prefetch(ptr, 0, 0)
-#else
-# define ZSTD_PREFETCH(ptr) /* disabled */
-#endif
-
/*-*************************************
* Errors
@@ -95,7 +86,7 @@ typedef struct {
HUF_DTable hufTable[HUF_DTABLE_SIZE(HufLog)]; /* can accommodate HUF_decompress4X */
U32 workspace[HUF_DECOMPRESS_WORKSPACE_SIZE_U32];
U32 rep[ZSTD_REP_NUM];
-} ZSTD_entropyTables_t;
+} ZSTD_entropyDTables_t;
struct ZSTD_DCtx_s
{
@@ -103,7 +94,7 @@ struct ZSTD_DCtx_s
const FSE_DTable* MLTptr;
const FSE_DTable* OFTptr;
const HUF_DTable* HUFptr;
- ZSTD_entropyTables_t entropy;
+ ZSTD_entropyDTables_t entropy;
const void* previousDstEnd; /* detect continuity */
const void* base; /* start of current segment */
const void* vBase; /* virtual start of previous segment if it was just before current one */
@@ -304,15 +295,18 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
return ZSTD_skippableHeaderSize; /* magic number + frame length */
memset(zfhPtr, 0, sizeof(*zfhPtr));
zfhPtr->frameContentSize = MEM_readLE32((const char *)src + 4);
- zfhPtr->windowSize = 0; /* windowSize==0 means a frame is skippable */
+ zfhPtr->frameType = ZSTD_skippableFrame;
+ zfhPtr->windowSize = 0;
return 0;
}
return ERROR(prefix_unknown);
}
/* ensure there is enough `srcSize` to fully read/decode frame header */
- { size_t const fhsize = ZSTD_frameHeaderSize(src, srcSize);
- if (srcSize < fhsize) return fhsize; }
+ { size_t const fhsize = ZSTD_frameHeaderSize(src, srcSize);
+ if (srcSize < fhsize) return fhsize;
+ zfhPtr->headerSize = (U32)fhsize;
+ }
{ BYTE const fhdByte = ip[4];
size_t pos = 5;
@@ -320,24 +314,23 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
U32 const checksumFlag = (fhdByte>>2)&1;
U32 const singleSegment = (fhdByte>>5)&1;
U32 const fcsID = fhdByte>>6;
- U32 const windowSizeMax = 1U << ZSTD_WINDOWLOG_MAX;
- U32 windowSize = 0;
+ U64 windowSize = 0;
U32 dictID = 0;
- U64 frameContentSize = 0;
+ U64 frameContentSize = ZSTD_CONTENTSIZE_UNKNOWN;
if ((fhdByte & 0x08) != 0)
- return ERROR(frameParameter_unsupported); /* reserved bits, must be zero */
+ return ERROR(frameParameter_unsupported); /* reserved bits, must be zero */
+
if (!singleSegment) {
BYTE const wlByte = ip[pos++];
U32 const windowLog = (wlByte >> 3) + ZSTD_WINDOWLOG_ABSOLUTEMIN;
if (windowLog > ZSTD_WINDOWLOG_MAX)
return ERROR(frameParameter_windowTooLarge);
- windowSize = (1U << windowLog);
+ windowSize = (1ULL << windowLog);
windowSize += (windowSize >> 3) * (wlByte&7);
}
-
switch(dictIDSizeCode)
{
- default: /* impossible */
+ default: assert(0); /* impossible */
case 0 : break;
case 1 : dictID = ip[pos]; pos++; break;
case 2 : dictID = MEM_readLE16(ip+pos); pos+=2; break;
@@ -345,14 +338,15 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
}
switch(fcsID)
{
- default: /* impossible */
+ default: assert(0); /* impossible */
case 0 : if (singleSegment) frameContentSize = ip[pos]; break;
case 1 : frameContentSize = MEM_readLE16(ip+pos)+256; break;
case 2 : frameContentSize = MEM_readLE32(ip+pos); break;
case 3 : frameContentSize = MEM_readLE64(ip+pos); break;
}
- if (!windowSize) windowSize = (U32)frameContentSize;
- if (windowSize > windowSizeMax) return ERROR(frameParameter_windowTooLarge);
+ if (singleSegment) windowSize = frameContentSize;
+
+ zfhPtr->frameType = ZSTD_frame;
zfhPtr->frameContentSize = frameContentSize;
zfhPtr->windowSize = windowSize;
zfhPtr->dictID = dictID;
@@ -362,10 +356,10 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
}
/** ZSTD_getFrameContentSize() :
-* compatible with legacy mode
-* @return : decompressed size of the single frame pointed to be `src` if known, otherwise
-* - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined
-* - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small) */
+ * compatible with legacy mode
+ * @return : decompressed size of the single frame pointed to be `src` if known, otherwise
+ * - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined
+ * - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small) */
unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize)
{
#if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT >= 1)
@@ -374,17 +368,14 @@ unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize)
return ret == 0 ? ZSTD_CONTENTSIZE_UNKNOWN : ret;
}
#endif
- { ZSTD_frameHeader fParams;
- if (ZSTD_getFrameHeader(&fParams, src, srcSize) != 0) return ZSTD_CONTENTSIZE_ERROR;
- if (fParams.windowSize == 0) {
- /* Either skippable or empty frame, size == 0 either way */
+ { ZSTD_frameHeader zfh;
+ if (ZSTD_getFrameHeader(&zfh, src, srcSize) != 0)
+ return ZSTD_CONTENTSIZE_ERROR;
+ if (zfh.frameType == ZSTD_skippableFrame) {
return 0;
- } else if (fParams.frameContentSize != 0) {
- return fParams.frameContentSize;
} else {
- return ZSTD_CONTENTSIZE_UNKNOWN;
- }
- }
+ return zfh.frameContentSize;
+ } }
}
/** ZSTD_findDecompressedSize() :
@@ -442,7 +433,8 @@ unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize)
* compatible with legacy mode
* @return : decompressed size if known, 0 otherwise
note : 0 can mean any of the following :
- - decompressed size is not present within frame header
+ - frame content is empty
+ - decompressed size field is not present in frame header
- frame header unknown / not supported
- frame header not complete (`srcSize` too small) */
unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize)
@@ -460,7 +452,8 @@ static size_t ZSTD_decodeFrameHeader(ZSTD_DCtx* dctx, const void* src, size_t he
size_t const result = ZSTD_getFrameHeader(&(dctx->fParams), src, headerSize);
if (ZSTD_isError(result)) return result; /* invalid header */
if (result>0) return ERROR(srcSize_wrong); /* headerSize too small */
- if (dctx->fParams.dictID && (dctx->dictID != dctx->fParams.dictID)) return ERROR(dictionary_wrong);
+ if (dctx->fParams.dictID && (dctx->dictID != dctx->fParams.dictID))
+ return ERROR(dictionary_wrong);
if (dctx->fParams.checksumFlag) XXH64_reset(&dctx->xxhState, 0);
return 0;
}
@@ -951,7 +944,7 @@ static seq_t ZSTD_decodeSequence(seqState_t* seqState)
}
-FORCE_INLINE
+HINT_INLINE
size_t ZSTD_execSequence(BYTE* op,
BYTE* const oend, seq_t sequence,
const BYTE** litPtr, const BYTE* const litLimit,
@@ -1095,7 +1088,7 @@ static size_t ZSTD_decompressSequences(
}
-FORCE_INLINE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState, int const longOffsets)
+FORCE_INLINE_TEMPLATE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState, int const longOffsets)
{
seq_t seq;
@@ -1195,7 +1188,7 @@ static seq_t ZSTD_decodeSequenceLong(seqState_t* seqState, unsigned const window
}
}
-FORCE_INLINE
+HINT_INLINE
size_t ZSTD_execSequenceLong(BYTE* op,
BYTE* const oend, seq_t sequence,
const BYTE** litPtr, const BYTE* const litLimit,
@@ -1331,7 +1324,7 @@ static size_t ZSTD_decompressSequencesLong(
seq_t const sequence = ZSTD_decodeSequenceLong(&seqState, windowSize32);
size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STOSEQ_MASK], &litPtr, litEnd, base, vBase, dictEnd);
if (ZSTD_isError(oneSeqSize)) return oneSeqSize;
- ZSTD_PREFETCH(sequence.match);
+ PREFETCH(sequence.match);
sequences[seqNb&STOSEQ_MASK] = sequence;
op += oneSeqSize;
}
@@ -1433,28 +1426,26 @@ size_t ZSTD_generateNxBytes(void* dst, size_t dstCapacity, BYTE byte, size_t len
size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
{
#if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT >= 1)
- if (ZSTD_isLegacy(src, srcSize)) return ZSTD_findFrameCompressedSizeLegacy(src, srcSize);
+ if (ZSTD_isLegacy(src, srcSize))
+ return ZSTD_findFrameCompressedSizeLegacy(src, srcSize);
#endif
- if (srcSize >= ZSTD_skippableHeaderSize &&
- (MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) {
+ if ( (srcSize >= ZSTD_skippableHeaderSize)
+ && (MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START ) {
return ZSTD_skippableHeaderSize + MEM_readLE32((const BYTE*)src + 4);
} else {
const BYTE* ip = (const BYTE*)src;
const BYTE* const ipstart = ip;
size_t remainingSize = srcSize;
- ZSTD_frameHeader fParams;
+ ZSTD_frameHeader zfh;
- size_t const headerSize = ZSTD_frameHeaderSize(ip, remainingSize);
- if (ZSTD_isError(headerSize)) return headerSize;
-
- /* Frame Header */
- { size_t const ret = ZSTD_getFrameHeader(&fParams, ip, remainingSize);
+ /* Extract Frame Header */
+ { size_t const ret = ZSTD_getFrameHeader(&zfh, src, srcSize);
if (ZSTD_isError(ret)) return ret;
if (ret > 0) return ERROR(srcSize_wrong);
}
- ip += headerSize;
- remainingSize -= headerSize;
+ ip += zfh.headerSize;
+ remainingSize -= zfh.headerSize;
/* Loop on each block */
while (1) {
@@ -1462,7 +1453,8 @@ size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
size_t const cBlockSize = ZSTD_getcBlockSize(ip, remainingSize, &blockProperties);
if (ZSTD_isError(cBlockSize)) return cBlockSize;
- if (ZSTD_blockHeaderSize + cBlockSize > remainingSize) return ERROR(srcSize_wrong);
+ if (ZSTD_blockHeaderSize + cBlockSize > remainingSize)
+ return ERROR(srcSize_wrong);
ip += ZSTD_blockHeaderSize + cBlockSize;
remainingSize -= ZSTD_blockHeaderSize + cBlockSize;
@@ -1470,7 +1462,7 @@ size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
if (blockProperties.lastBlock) break;
}
- if (fParams.checksumFlag) { /* Frame content checksum */
+ if (zfh.checksumFlag) { /* Final frame content checksum */
if (remainingSize < 4) return ERROR(srcSize_wrong);
ip += 4;
remainingSize -= 4;
@@ -1483,8 +1475,8 @@ size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
/*! ZSTD_decompressFrame() :
* @dctx must be properly initialized */
static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
- void* dst, size_t dstCapacity,
- const void** srcPtr, size_t *srcSizePtr)
+ void* dst, size_t dstCapacity,
+ const void** srcPtr, size_t *srcSizePtr)
{
const BYTE* ip = (const BYTE*)(*srcPtr);
BYTE* const ostart = (BYTE* const)dst;
@@ -1493,13 +1485,15 @@ static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
size_t remainingSize = *srcSizePtr;
/* check */
- if (remainingSize < ZSTD_frameHeaderSize_min+ZSTD_blockHeaderSize) return ERROR(srcSize_wrong);
+ if (remainingSize < ZSTD_frameHeaderSize_min+ZSTD_blockHeaderSize)
+ return ERROR(srcSize_wrong);
/* Frame Header */
{ size_t const frameHeaderSize = ZSTD_frameHeaderSize(ip, ZSTD_frameHeaderSize_prefix);
if (ZSTD_isError(frameHeaderSize)) return frameHeaderSize;
- if (remainingSize < frameHeaderSize+ZSTD_blockHeaderSize) return ERROR(srcSize_wrong);
- CHECK_F(ZSTD_decodeFrameHeader(dctx, ip, frameHeaderSize));
+ if (remainingSize < frameHeaderSize+ZSTD_blockHeaderSize)
+ return ERROR(srcSize_wrong);
+ CHECK_F( ZSTD_decodeFrameHeader(dctx, ip, frameHeaderSize) );
ip += frameHeaderSize; remainingSize -= frameHeaderSize;
}
@@ -1531,14 +1525,15 @@ static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
}
if (ZSTD_isError(decodedSize)) return decodedSize;
- if (dctx->fParams.checksumFlag) XXH64_update(&dctx->xxhState, op, decodedSize);
+ if (dctx->fParams.checksumFlag)
+ XXH64_update(&dctx->xxhState, op, decodedSize);
op += decodedSize;
ip += cBlockSize;
remainingSize -= cBlockSize;
if (blockProperties.lastBlock) break;
}
- if (dctx->fParams.checksumFlag) { /* Frame content checksum verification */
+ if (dctx->fParams.checksumFlag) { /* Frame content checksum verification */
U32 const checkCalc = (U32)XXH64_digest(&dctx->xxhState);
U32 checkRead;
if (remainingSize<4) return ERROR(checksum_wrong);
@@ -1560,17 +1555,13 @@ static size_t ZSTD_DDictDictSize(const ZSTD_DDict* ddict);
static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
void* dst, size_t dstCapacity,
const void* src, size_t srcSize,
- const void *dict, size_t dictSize,
+ const void* dict, size_t dictSize,
const ZSTD_DDict* ddict)
{
void* const dststart = dst;
+ assert(dict==NULL || ddict==NULL); /* either dict or ddict set, not both */
if (ddict) {
- if (dict) {
- /* programmer error, these two cases should be mutually exclusive */
- return ERROR(GENERIC);
- }
-
dict = ZSTD_DDictDictContent(ddict);
dictSize = ZSTD_DDictDictSize(ddict);
}
@@ -1583,7 +1574,7 @@ static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
size_t decodedSize;
size_t const frameSize = ZSTD_findFrameCompressedSizeLegacy(src, srcSize);
if (ZSTD_isError(frameSize)) return frameSize;
- /* legacy support is incompatible with static dctx */
+ /* legacy support is not compatible with static dctx */
if (dctx->staticSize) return ERROR(memory_allocation);
decodedSize = ZSTD_decompressLegacy(dst, dstCapacity, src, frameSize, dict, dictSize);
@@ -1606,16 +1597,13 @@ static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
return ERROR(srcSize_wrong);
skippableSize = MEM_readLE32((const BYTE *)src + 4) +
ZSTD_skippableHeaderSize;
- if (srcSize < skippableSize) {
- return ERROR(srcSize_wrong);
- }
+ if (srcSize < skippableSize) return ERROR(srcSize_wrong);
src = (const BYTE *)src + skippableSize;
srcSize -= skippableSize;
continue;
- } else {
- return ERROR(prefix_unknown);
}
+ return ERROR(prefix_unknown);
}
if (ddict) {
@@ -1631,12 +1619,11 @@ static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
{ const size_t res = ZSTD_decompressFrame(dctx, dst, dstCapacity,
&src, &srcSize);
if (ZSTD_isError(res)) return res;
- /* don't need to bounds check this, ZSTD_decompressFrame will have
- * already */
+ /* no need to bound check, ZSTD_decompressFrame already has */
dst = (BYTE*)dst + res;
dstCapacity -= res;
}
- }
+ } /* while (srcSize >= ZSTD_frameHeaderSize_prefix) */
if (srcSize) return ERROR(srcSize_wrong); /* input not entirely consumed */
@@ -1735,7 +1722,7 @@ size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, c
return 0;
}
dctx->expected = 0; /* not necessary to copy more */
-
+ /* fall-through */
case ZSTDds_decodeFrameHeader:
assert(src != NULL);
memcpy(dctx->headerBuffer + ZSTD_frameHeaderSize_prefix, src, dctx->expected);
@@ -1846,7 +1833,7 @@ static size_t ZSTD_refDictContent(ZSTD_DCtx* dctx, const void* dict, size_t dict
/* ZSTD_loadEntropy() :
* dict : must point at beginning of a valid zstd dictionary
* @return : size of entropy tables read */
-static size_t ZSTD_loadEntropy(ZSTD_entropyTables_t* entropy, const void* const dict, size_t const dictSize)
+static size_t ZSTD_loadEntropy(ZSTD_entropyDTables_t* entropy, const void* const dict, size_t const dictSize)
{
const BYTE* dictPtr = (const BYTE*)dict;
const BYTE* const dictEnd = dictPtr + dictSize;
@@ -1924,8 +1911,9 @@ static size_t ZSTD_decompress_insertDictionary(ZSTD_DCtx* dctx, const void* dict
size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize)
{
- CHECK_F(ZSTD_decompressBegin(dctx));
- if (dict && dictSize) CHECK_E(ZSTD_decompress_insertDictionary(dctx, dict, dictSize), dictionary_corrupted);
+ CHECK_F( ZSTD_decompressBegin(dctx) );
+ if (dict && dictSize)
+ CHECK_E(ZSTD_decompress_insertDictionary(dctx, dict, dictSize), dictionary_corrupted);
return 0;
}
@@ -1936,7 +1924,7 @@ struct ZSTD_DDict_s {
void* dictBuffer;
const void* dictContent;
size_t dictSize;
- ZSTD_entropyTables_t entropy;
+ ZSTD_entropyDTables_t entropy;
U32 dictID;
U32 entropyPresent;
ZSTD_customMem cMem;
@@ -1954,7 +1942,7 @@ static size_t ZSTD_DDictDictSize(const ZSTD_DDict* ddict)
size_t ZSTD_decompressBegin_usingDDict(ZSTD_DCtx* dstDCtx, const ZSTD_DDict* ddict)
{
- CHECK_F(ZSTD_decompressBegin(dstDCtx));
+ CHECK_F( ZSTD_decompressBegin(dstDCtx) );
if (ddict) { /* support begin on NULL */
dstDCtx->dictID = ddict->dictID;
dstDCtx->base = ddict->dictContent;
@@ -2135,7 +2123,7 @@ unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict)
* ZSTD_getFrameHeader(), which will provide a more precise error code. */
unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize)
{
- ZSTD_frameHeader zfp = { 0 , 0 , 0 , 0 };
+ ZSTD_frameHeader zfp = { 0, 0, ZSTD_frame, 0, 0, 0 };
size_t const hError = ZSTD_getFrameHeader(&zfp, src, srcSize);
if (ZSTD_isError(hError)) return 0;
return zfp.dictID;
@@ -2230,7 +2218,7 @@ size_t ZSTD_setDStreamParameter(ZSTD_DStream* zds,
{
switch(paramType)
{
- default : return ERROR(parameter_unknown);
+ default : return ERROR(parameter_unsupported);
case DStream_p_maxWindowSize : zds->maxWindowSize = paramValue ? paramValue : (U32)(-1); break;
}
return 0;
@@ -2247,16 +2235,19 @@ size_t ZSTD_estimateDStreamSize(size_t windowSize)
size_t const blockSize = MIN(windowSize, ZSTD_BLOCKSIZE_MAX);
size_t const inBuffSize = blockSize; /* no block can be larger */
size_t const outBuffSize = windowSize + blockSize + (WILDCOPY_OVERLENGTH * 2);
- return sizeof(ZSTD_DStream) + ZSTD_estimateDCtxSize() + inBuffSize + outBuffSize;
+ return ZSTD_estimateDCtxSize() + inBuffSize + outBuffSize;
}
ZSTDLIB_API size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize)
{
- ZSTD_frameHeader fh;
- size_t const err = ZSTD_getFrameHeader(&fh, src, srcSize);
+ U32 const windowSizeMax = 1U << ZSTD_WINDOWLOG_MAX;
+ ZSTD_frameHeader zfh;
+ size_t const err = ZSTD_getFrameHeader(&zfh, src, srcSize);
if (ZSTD_isError(err)) return err;
if (err>0) return ERROR(srcSize_wrong);
- return ZSTD_estimateDStreamSize(fh.windowSize);
+ if (zfh.windowSize > windowSizeMax)
+ return ERROR(frameParameter_windowTooLarge);
+ return ZSTD_estimateDStreamSize((size_t)zfh.windowSize);
}
@@ -2307,16 +2298,14 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
size_t const dictSize = zds->ddict ? zds->ddict->dictSize : 0;
/* legacy support is incompatible with static dctx */
if (zds->staticSize) return ERROR(memory_allocation);
- CHECK_F(ZSTD_initLegacyStream(&zds->legacyContext, zds->previousLegacyVersion, legacyVersion,
- dict, dictSize));
+ CHECK_F(ZSTD_initLegacyStream(&zds->legacyContext,
+ zds->previousLegacyVersion, legacyVersion,
+ dict, dictSize));
zds->legacyVersion = zds->previousLegacyVersion = legacyVersion;
- return ZSTD_decompressLegacyStream(zds->legacyContext, zds->legacyVersion, output, input);
- } else {
- return hSize; /* error */
+ return ZSTD_decompressLegacyStream(zds->legacyContext, legacyVersion, output, input);
}
-#else
- return hSize;
#endif
+ return hSize; /* error */
}
if (hSize != 0) { /* need more input */
size_t const toLoad = hSize - zds->lhSize; /* if hSize!=0, hSize > zds->lhSize */
@@ -2367,8 +2356,8 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
if (zds->fParams.windowSize > zds->maxWindowSize) return ERROR(frameParameter_windowTooLarge);
/* Adapt buffer sizes to frame header instructions */
- { size_t const blockSize = MIN(zds->fParams.windowSize, ZSTD_BLOCKSIZE_MAX);
- size_t const neededOutSize = zds->fParams.windowSize + blockSize + WILDCOPY_OVERLENGTH * 2;
+ { size_t const blockSize = (size_t)(MIN(zds->fParams.windowSize, ZSTD_BLOCKSIZE_MAX));
+ size_t const neededOutSize = (size_t)(zds->fParams.windowSize + blockSize + WILDCOPY_OVERLENGTH * 2);
zds->blockSize = blockSize;
if ((zds->inBuffSize < blockSize) || (zds->outBuffSize < neededOutSize)) {
size_t const bufferSize = blockSize + neededOutSize;
@@ -2393,7 +2382,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
zds->outBuffSize = neededOutSize;
} }
zds->streamStage = zdss_read;
- /* pass-through */
+ /* fall-through */
case zdss_read:
DEBUGLOG(5, "stage zdss_read");
@@ -2418,8 +2407,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
} }
if (ip==iend) { someMoreWork = 0; break; } /* no more input */
zds->streamStage = zdss_load;
- /* pass-through */
-
+ /* fall-through */
case zdss_load:
{ size_t const neededInSize = ZSTD_nextSrcSizeToDecompress(zds);
size_t const toLoad = neededInSize - zds->inPos; /* should always be <= remaining space within inBuff */
@@ -2441,8 +2429,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
zds->outEnd = zds->outStart + decodedSize;
} }
zds->streamStage = zdss_flush;
- /* pass-through */
-
+ /* fall-through */
case zdss_flush:
{ size_t const toFlushSize = zds->outEnd - zds->outStart;
size_t const flushedSize = ZSTD_limitCopy(op, oend-op, zds->outBuff + zds->outStart, toFlushSize);
diff --git a/thirdparty/zstd/zstd.h b/thirdparty/zstd/zstd.h
index 58e9a5606d..13b4563fd6 100644
--- a/thirdparty/zstd/zstd.h
+++ b/thirdparty/zstd/zstd.h
@@ -2,11 +2,10 @@
* Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*/
-
#if defined (__cplusplus)
extern "C" {
#endif
@@ -59,7 +58,7 @@ extern "C" {
/*------ Version ------*/
#define ZSTD_VERSION_MAJOR 1
#define ZSTD_VERSION_MINOR 3
-#define ZSTD_VERSION_RELEASE 0
+#define ZSTD_VERSION_RELEASE 1
#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
ZSTDLIB_API unsigned ZSTD_versionNumber(void); /**< useful to check dll version */
@@ -425,13 +424,6 @@ typedef struct {
ZSTD_frameParameters fParams;
} ZSTD_parameters;
-typedef struct {
- unsigned long long frameContentSize;
- size_t windowSize;
- unsigned dictID;
- unsigned checksumFlag;
-} ZSTD_frameHeader;
-
/*= Custom memory allocation functions */
typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size);
typedef void (*ZSTD_freeFunction) (void* opaque, void* address);
@@ -809,7 +801,6 @@ ZSTDLIB_API size_t ZSTD_compressContinue(ZSTD_CCtx* cctx, void* dst, size_t dstC
ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize);
-
/*-
Buffer-less streaming decompression (synchronous mode)
@@ -874,6 +865,15 @@ ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapaci
*/
/*===== Buffer-less streaming decompression functions =====*/
+typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e;
+typedef struct {
+ unsigned long long frameContentSize; /* ZSTD_CONTENTSIZE_UNKNOWN means this field is not available. 0 means "empty" */
+ unsigned long long windowSize; /* can be very large, up to <= frameContentSize */
+ ZSTD_frameType_e frameType; /* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */
+ unsigned headerSize;
+ unsigned dictID;
+ unsigned checksumFlag;
+} ZSTD_frameHeader;
ZSTDLIB_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize); /**< doesn't consume input */
ZSTDLIB_API size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx);
ZSTDLIB_API size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);
@@ -953,7 +953,9 @@ typedef enum {
* Special: value 0 means "do not change strategy". */
/* frame parameters */
- ZSTD_p_contentSizeFlag=200, /* Content size is written into frame header _whenever known_ (default:1) */
+ ZSTD_p_contentSizeFlag=200, /* Content size is written into frame header _whenever known_ (default:1)
+ * note that content size must be known at the beginning,
+ * it is sent using ZSTD_CCtx_setPledgedSrcSize() */
ZSTD_p_checksumFlag, /* A 32-bits checksum of content is written at end of frame (default:0) */
ZSTD_p_dictIDFlag, /* When applicable, dictID of dictionary is provided in frame header (default:1) */